...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::intrusive::group_functions
// In header: <boost/intrusive/hashtable.hpp> template<typename NodeTraits> struct group_functions { // types typedef NodeTraits node_traits; typedef unordered_group_adapter< node_traits > group_traits; typedef node_traits::node_ptr node_ptr; typedef node_traits::node node; typedef reduced_slist_node_traits< node_traits >::type reduced_node_traits; typedef reduced_node_traits::node_ptr slist_node_ptr; typedef reduced_node_traits::node slist_node; typedef circular_slist_algorithms< group_traits > group_algorithms; typedef circular_slist_algorithms< node_traits > node_algorithms; // public static functions static slist_node_ptr get_bucket_before_begin(slist_node_ptr, slist_node_ptr, slist_node_ptr, unspecified); static slist_node_ptr get_bucket_before_begin(slist_node_ptr, slist_node_ptr, slist_node_ptr, unspecified); static node_ptr get_prev_to_first_in_group(slist_node_ptr, node_ptr); static void erase_from_group(slist_node_ptr, node_ptr, unspecified); static void erase_from_group(slist_node_ptr, node_ptr, unspecified); static node_ptr get_last_in_group(node_ptr, unspecified); static node_ptr get_last_in_group(node_ptr, unspecified); static node_ptr get_first_in_group(node_ptr, unspecified); static node_ptr get_first_in_group(node_ptr, unspecified); static bool is_first_in_group(node_ptr); static void insert_in_group(node_ptr, node_ptr, unspecified); static void insert_in_group(node_ptr, node_ptr, unspecified); static node_ptr split_group(node_ptr const); };
group_functions
public static functionsstatic slist_node_ptr get_bucket_before_begin(slist_node_ptr bucket_beg, slist_node_ptr bucket_last, slist_node_ptr sp, unspecified);
static slist_node_ptr get_bucket_before_begin(slist_node_ptr bucket_beg, slist_node_ptr bucket_last, slist_node_ptr sp, unspecified);
static node_ptr get_prev_to_first_in_group(slist_node_ptr bucket_node, node_ptr first_in_group);
static void erase_from_group(slist_node_ptr end_ptr, node_ptr to_erase_ptr, unspecified);
static void erase_from_group(slist_node_ptr, node_ptr, unspecified);
static node_ptr get_last_in_group(node_ptr first_in_group, unspecified);
static node_ptr get_last_in_group(node_ptr n, unspecified);
static node_ptr get_first_in_group(node_ptr n, unspecified);
static node_ptr get_first_in_group(node_ptr n, unspecified);
static bool is_first_in_group(node_ptr ptr);
static void insert_in_group(node_ptr first_in_group, node_ptr n, unspecified);
static void insert_in_group(node_ptr, node_ptr, unspecified);
static node_ptr split_group(node_ptr const new_first);