From 3d35ba894c37e78fcbd0a7fcf8dee290e7d8353c Mon Sep 17 00:00:00 2001
From: Thomas Goyne <plorkyeran@aegisub.org>
Date: Fri, 7 Mar 2014 16:59:52 -0800
Subject: [PATCH] Move the intrusive list hooks to the concrete entry types

---
 aegisub/src/ass_attachment.h | 2 +-
 aegisub/src/ass_dialogue.h   | 2 +-
 aegisub/src/ass_entry.h      | 4 +++-
 aegisub/src/ass_file.h       | 2 +-
 aegisub/src/ass_style.h      | 2 +-
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/aegisub/src/ass_attachment.h b/aegisub/src/ass_attachment.h
index 2f428b4b1..093af65bd 100644
--- a/aegisub/src/ass_attachment.h
+++ b/aegisub/src/ass_attachment.h
@@ -22,7 +22,7 @@
 #include <vector>
 
 /// @class AssAttachment
-class AssAttachment : public AssEntry {
+class AssAttachment : public AssEntry, public AssEntryListHook {
 	/// ASS uuencoded entry data, including header.
 	boost::flyweight<std::string> entry_data;
 
diff --git a/aegisub/src/ass_dialogue.h b/aegisub/src/ass_dialogue.h
index 9d661ba84..2c590c71a 100644
--- a/aegisub/src/ass_dialogue.h
+++ b/aegisub/src/ass_dialogue.h
@@ -150,7 +150,7 @@ struct AssDialogueBase {
 	boost::flyweight<std::string> Text;
 };
 
-class AssDialogue : public AssEntry, public AssDialogueBase {
+class AssDialogue : public AssEntry, public AssDialogueBase, public AssEntryListHook {
 	std::string GetData(bool ssa) const;
 
 	/// @brief Parse raw ASS data into everything else
diff --git a/aegisub/src/ass_entry.h b/aegisub/src/ass_entry.h
index cfeb2dafb..5ab2df012 100644
--- a/aegisub/src/ass_entry.h
+++ b/aegisub/src/ass_entry.h
@@ -46,7 +46,9 @@ enum class AssEntryGroup {
 	GROUP_MAX
 };
 
-class AssEntry : public boost::intrusive::make_list_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>::type {
+using AssEntryListHook = boost::intrusive::make_list_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>::type;
+
+class AssEntry {
 public:
 	virtual ~AssEntry() { }
 
diff --git a/aegisub/src/ass_file.h b/aegisub/src/ass_file.h
index b040fcbc4..d7a748e25 100644
--- a/aegisub/src/ass_file.h
+++ b/aegisub/src/ass_file.h
@@ -48,7 +48,7 @@ class AssStyle;
 class wxString;
 
 template<typename T>
-using EntryList = typename boost::intrusive::make_list<T, boost::intrusive::constant_time_size<false>, boost::intrusive::base_hook<AssEntry>>::type;
+using EntryList = typename boost::intrusive::make_list<T, boost::intrusive::constant_time_size<false>, boost::intrusive::base_hook<AssEntryListHook>>::type;
 
 struct AssFileCommit {
 	wxString const& message;
diff --git a/aegisub/src/ass_style.h b/aegisub/src/ass_style.h
index 935329ebe..14dac5d00 100644
--- a/aegisub/src/ass_style.h
+++ b/aegisub/src/ass_style.h
@@ -39,7 +39,7 @@
 #include <array>
 #include <wx/arrstr.h>
 
-class AssStyle : public AssEntry {
+class AssStyle : public AssEntry, public AssEntryListHook {
 	std::string data;
 
 public:
-- 
GitLab