X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fintrusive_list.h;h=de013ae386f357c9afdc67a947f00647e8bb9596;hb=bd6e75ffa1a9827aa135e313eca4e5b396ebda2f;hp=ae323edb8e62868933f61a9710406477dbe98986;hpb=7282c2250e02c3ea2da57508d885c09c9881c4f0;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/intrusive_list.h b/include/intrusive_list.h index ae323edb8..de013ae38 100644 --- a/include/intrusive_list.h +++ b/include/intrusive_list.h @@ -21,9 +21,13 @@ #include +namespace insp +{ + struct intrusive_list_def_tag { }; template class intrusive_list; +template class intrusive_list_tail; template class intrusive_list_node @@ -48,6 +52,20 @@ class intrusive_list_node } friend class intrusive_list; + friend class intrusive_list_tail; }; +} // 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