X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fintrusive_list.h;h=88f3c6829c2dda877bf3d19a97d346d2a0b6e11e;hb=662364f8551b3db2a3cbc0000f2d3eec091d8e07;hp=7a127eb58996dca5b2a80c048b84a87fb74d4f18;hpb=c7cc5558558d95b021687525d94a07476aee9fd2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/intrusive_list.h b/include/intrusive_list.h index 7a127eb58..88f3c6829 100644 --- a/include/intrusive_list.h +++ b/include/intrusive_list.h @@ -24,6 +24,7 @@ struct intrusive_list_def_tag { }; template class intrusive_list; +template class intrusive_list_tail; template class intrusive_list_node @@ -48,8 +49,18 @@ class intrusive_list_node } friend class intrusive_list; + friend class intrusive_list_tail; }; +// 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