]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/intrusive_list.h
Make BindPorts return size_t instead of int.
[user/henk/code/inspircd.git] / include / intrusive_list.h
index ae323edb8e62868933f61a9710406477dbe98986..de013ae386f357c9afdc67a947f00647e8bb9596 100644 (file)
 
 #include <iterator>
 
+namespace insp
+{
+
 struct intrusive_list_def_tag { };
 
 template <typename T, typename Tag = intrusive_list_def_tag> class intrusive_list;
+template <typename T, typename Tag = intrusive_list_def_tag> class intrusive_list_tail;
 
 template <typename T, typename Tag = intrusive_list_def_tag>
 class intrusive_list_node
@@ -48,6 +52,20 @@ class intrusive_list_node
        }
 
        friend class intrusive_list<T, Tag>;
+       friend class intrusive_list_tail<T, Tag>;
 };
 
+} // namespace insp
+
+// Intrusive list where the list only has a pointer to the head element
+#define INSPIRCD_INTRUSIVE_LIST_NAME intrusive_list
+#include "intrusive_list_impl.h"
+#undef INSPIRCD_INTRUSIVE_LIST_NAME
+
+// Intrusive list where the list maintains a pointer to both the head and the tail elements.
+// Additional methods: back(), push_back(), pop_back()
+#define INSPIRCD_INTRUSIVE_LIST_NAME intrusive_list_tail
+#define INSPIRCD_INTRUSIVE_LIST_HAS_TAIL
 #include "intrusive_list_impl.h"
+#undef INSPIRCD_INTRUSIVE_LIST_NAME
+#undef INSPIRCD_INTRUSIVE_LIST_HAS_TAIL