/usr/include/boost/intrusive/detail
NameSizeModeActions
algorithm.hpp28800644editdlrm
algo_type.hpp13030644editdlrm
any_node_and_algorithms.hpp94670644editdlrm
array_initializer.hpp22350644editdlrm
assert.hpp15200644editdlrm
avltree_node.hpp67140644editdlrm
bstree_algorithms_base.hpp55230644editdlrm
common_slist_algorithms.hpp59740644editdlrm
config_begin.hpp24560644editdlrm
config_end.hpp4960644editdlrm
default_header_holder.hpp22430644editdlrm
ebo_functor_holder.hpp80050644editdlrm
empty_node_checker.hpp12430644editdlrm
equal_to_value.hpp12170644editdlrm
exception_disposer.hpp21320644editdlrm
function_detector.hpp34560644editdlrm
generic_hook.hpp65880644editdlrm
get_value_traits.hpp70980644editdlrm
hashtable_node.hpp102340644editdlrm
has_member_function_callable_with.hpp184380644editdlrm
hook_traits.hpp84380644editdlrm
iiterator.hpp44460644editdlrm
is_stateful_value_traits.hpp25240644editdlrm
iterator.hpp76120644editdlrm
key_nodeptr_comp.hpp48820644editdlrm
list_iterator.hpp52300644editdlrm
list_node.hpp21520644editdlrm
math.hpp80590644editdlrm
minimal_less_equal_header.hpp9320644editdlrm
minimal_pair_header.hpp9040644editdlrm
mpl.hpp85920644editdlrm
node_cloner_disposer.hpp39730644editdlrm
node_holder.hpp8830644editdlrm
node_to_value.hpp39940644editdlrm
parent_from_member.hpp41910644editdlrm
rbtree_node.hpp69520644editdlrm
reverse_iterator.hpp46440644editdlrm
simple_disposers.hpp11770644editdlrm
size_holder.hpp22610644editdlrm
slist_iterator.hpp49680644editdlrm
slist_node.hpp19070644editdlrm
std_fwd.hpp12260644editdlrm
transform_iterator.hpp57890644editdlrm
tree_iterator.hpp66050644editdlrm
tree_node.hpp23070644editdlrm
tree_value_compare.hpp77110644editdlrm
uncast.hpp16460644editdlrm
workaround.hpp20610644editdlrm
Edit: /usr/include/boost/intrusive/detail/rbtree_node.hpp (6952B)
///////////////////////////////////////////////////////////////////////////// // // (C) Copyright Olaf Krzikalla 2004-2006. // (C) Copyright Ion Gaztanaga 2006-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/intrusive for documentation. // ///////////////////////////////////////////////////////////////////////////// #ifndef BOOST_INTRUSIVE_RBTREE_NODE_HPP #define BOOST_INTRUSIVE_RBTREE_NODE_HPP #ifndef BOOST_CONFIG_HPP # include #endif #if defined(BOOST_HAS_PRAGMA_ONCE) # pragma once #endif #include #include #include #include #include #include #include namespace boost { namespace intrusive { ///////////////////////////////////////////////////////////////////////////// // // // Generic node_traits for any pointer type // // // ///////////////////////////////////////////////////////////////////////////// //This is the compact representation: 3 pointers template struct compact_rbtree_node { typedef compact_rbtree_node node; typedef typename pointer_rebind::type node_ptr; typedef typename pointer_rebind::type const_node_ptr; enum color { red_t, black_t }; node_ptr parent_, left_, right_; }; //This is the normal representation: 3 pointers + enum template struct rbtree_node { typedef rbtree_node node; typedef typename pointer_rebind::type node_ptr; typedef typename pointer_rebind::type const_node_ptr; enum color { red_t, black_t }; node_ptr parent_, left_, right_; color color_; }; //This is the default node traits implementation //using a node with 3 generic pointers plus an enum template struct default_rbtree_node_traits_impl { typedef rbtree_node node; typedef typename node::node_ptr node_ptr; typedef typename node::const_node_ptr const_node_ptr; typedef typename node::color color; BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const const_node_ptr & n) { return n->parent_; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const node_ptr & n) { return n->parent_; } BOOST_INTRUSIVE_FORCEINLINE static void set_parent(node_ptr n, node_ptr p) { n->parent_ = p; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const const_node_ptr & n) { return n->left_; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const node_ptr & n) { return n->left_; } BOOST_INTRUSIVE_FORCEINLINE static void set_left(node_ptr n, node_ptr l) { n->left_ = l; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const const_node_ptr & n) { return n->right_; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const node_ptr & n) { return n->right_; } BOOST_INTRUSIVE_FORCEINLINE static void set_right(node_ptr n, node_ptr r) { n->right_ = r; } BOOST_INTRUSIVE_FORCEINLINE static color get_color(const const_node_ptr & n) { return n->color_; } BOOST_INTRUSIVE_FORCEINLINE static color get_color(const node_ptr & n) { return n->color_; } BOOST_INTRUSIVE_FORCEINLINE static void set_color(const node_ptr & n, color c) { n->color_ = c; } BOOST_INTRUSIVE_FORCEINLINE static color black() { return node::black_t; } BOOST_INTRUSIVE_FORCEINLINE static color red() { return node::red_t; } }; //This is the compact node traits implementation //using a node with 3 generic pointers template struct compact_rbtree_node_traits_impl { typedef compact_rbtree_node node; typedef typename node::node_ptr node_ptr; typedef typename node::const_node_ptr const_node_ptr; typedef pointer_plus_bits ptr_bit; typedef typename node::color color; BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const const_node_ptr & n) { return ptr_bit::get_pointer(n->parent_); } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const node_ptr & n) { return ptr_bit::get_pointer(n->parent_); } BOOST_INTRUSIVE_FORCEINLINE static void set_parent(node_ptr n, node_ptr p) { ptr_bit::set_pointer(n->parent_, p); } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const const_node_ptr & n) { return n->left_; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const node_ptr & n) { return n->left_; } BOOST_INTRUSIVE_FORCEINLINE static void set_left(node_ptr n, node_ptr l) { n->left_ = l; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const const_node_ptr & n) { return n->right_; } BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const node_ptr & n) { return n->right_; } BOOST_INTRUSIVE_FORCEINLINE static void set_right(node_ptr n, node_ptr r) { n->right_ = r; } BOOST_INTRUSIVE_FORCEINLINE static color get_color(const const_node_ptr & n) { return (color)ptr_bit::get_bits(n->parent_); } BOOST_INTRUSIVE_FORCEINLINE static color get_color(const node_ptr & n) { return (color)ptr_bit::get_bits(n->parent_); } BOOST_INTRUSIVE_FORCEINLINE static void set_color(const node_ptr & n, color c) { ptr_bit::set_bits(n->parent_, c != 0); } BOOST_INTRUSIVE_FORCEINLINE static color black() { return node::black_t; } BOOST_INTRUSIVE_FORCEINLINE static color red() { return node::red_t; } }; //Dispatches the implementation based on the boolean template struct rbtree_node_traits_dispatch : public default_rbtree_node_traits_impl {}; template struct rbtree_node_traits_dispatch : public compact_rbtree_node_traits_impl {}; //Inherit from rbtree_node_traits_dispatch depending on the embedding capabilities template struct rbtree_node_traits : public rbtree_node_traits_dispatch < VoidPointer , OptimizeSize && (max_pointer_plus_bits < VoidPointer , detail::alignment_of >::value >::value >= 1) > {}; } //namespace intrusive } //namespace boost #include #endif //BOOST_INTRUSIVE_RBTREE_NODE_HPP