41 #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP 
   42 #define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP 
   54 #ifdef PB_DS_LC_NS_HEAP_TRACE_ 
   64 #define PB_DS_CLASS_T_DEC \ 
   65     template<typename Value_Type, typename Cmp_Fn, typename Node_Metadata, \ 
   66          typename _Alloc, bool Single_Link_Roots> 
   68 #define PB_DS_CLASS_C_DEC \ 
   69     left_child_next_sibling_heap<Value_Type, Cmp_Fn, Node_Metadata, \ 
   70                   _Alloc, Single_Link_Roots> 
   72 #define PB_DS_CLASS_T_DEC \ 
   73     template<typename Value_Type, typename Cmp_Fn, typename Node_Metadata, \ 
   76 #define PB_DS_CLASS_C_DEC \ 
   77     left_child_next_sibling_heap<Value_Type, Cmp_Fn, Node_Metadata, _Alloc> 
   81     template<
typename Value_Type,
 
   83          typename Node_Metadata,
 
   86          ,
bool Single_Link_Roots>
 
   94       typename _Alloc::template rebind<
 
   99       typedef typename node_allocator::value_type       node;
 
  100       typedef typename node_allocator::pointer      node_pointer;
 
  101       typedef typename node_allocator::const_pointer    node_const_pointer;
 
  102       typedef Node_Metadata node_metadata;
 
  110       simple_value = is_simple<Value_Type>::value
 
  113       typedef integral_constant<int, simple_value>  no_throw_copies_t;
 
  114       typedef typename _Alloc::template rebind<Value_Type>  __rebind_v;
 
  117       typedef typename _Alloc::size_type        size_type;
 
  118       typedef typename _Alloc::difference_type  difference_type;
 
  119       typedef Value_Type                value_type;
 
  121       typedef typename __rebind_v::other::pointer   pointer;
 
  122       typedef typename __rebind_v::other::const_pointer const_pointer;
 
  123       typedef typename __rebind_v::other::reference reference;
 
  124       typedef typename __rebind_v::other::const_reference const_reference;
 
  135       typedef Cmp_Fn                    cmp_fn;
 
  136       typedef _Alloc                    allocator_type;
 
  143       swap(PB_DS_CLASS_C_DEC&);
 
  165       inline const_iterator
 
  171       inline const_iterator
 
  177 #ifdef PB_DS_LC_NS_HEAP_TRACE_ 
  184       get_new_node_for_insert(const_reference);
 
  187       make_child_of(node_pointer, node_pointer);
 
  192       inline static node_pointer
 
  193       parent(node_pointer);
 
  196       swap_with_parent(node_pointer, node_pointer);
 
  199       bubble_to_top(node_pointer);
 
  202       actual_erase_node(node_pointer);
 
  205       clear_imp(node_pointer);
 
  210       template<
typename Pred>
 
  214 #ifdef _GLIBCXX_DEBUG 
  216       assert_valid(
const char*, 
int) 
const;
 
  219       assert_node_consistent(node_const_pointer, 
bool, 
const char*, 
int) 
const;
 
  222       size_under_node(node_const_pointer);
 
  225       degree(node_const_pointer);
 
  228 #ifdef PB_DS_LC_NS_HEAP_TRACE_ 
  230       trace_node(node_const_pointer, size_type);
 
  234 #ifdef _GLIBCXX_DEBUG 
  236       assert_iterators(
const char*, 
int) 
const;
 
  239       assert_size(
const char*, 
int) 
const;
 
  242       size_from_node(node_const_pointer);
 
  246       recursive_copy_node(node_const_pointer);
 
  249       get_new_node_for_insert(const_reference, false_type);
 
  252       get_new_node_for_insert(const_reference, true_type);
 
  254 #ifdef PB_DS_LC_NS_HEAP_TRACE_ 
  255       template<
typename Metadata_>
 
  257       trace_node_metadata(node_const_pointer, type_to_type<Metadata_>);
 
  260       trace_node_metadata(node_const_pointer, type_to_type<null_type>);
 
  263       static node_allocator     s_node_allocator;
 
  264       static no_throw_copies_t  s_no_throw_copies_ind;
 
  267       node_pointer      m_p_root;
 
  280 #undef PB_DS_CLASS_C_DEC 
  281 #undef PB_DS_CLASS_T_DEC 
GNU extensions for policy-based data structures for public use. 
Const point-type iterator. 
Const point-type iterator. 
Struct holding two objects of arbitrary type. 
Base class for a basic heap. 
Conditional deallocate constructor argument.