X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fintrusive_list.h;h=88f3c6829c2dda877bf3d19a97d346d2a0b6e11e;hb=503ba19ec18ded4d1b373c799b795e39262088e3;hp=ae323edb8e62868933f61a9710406477dbe98986;hpb=7282c2250e02c3ea2da57508d885c09c9881c4f0;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/intrusive_list.h b/include/intrusive_list.h index ae323edb8..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,6 +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