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>
 
  101      typedef typename alloc_traits::allocator_type node_allocator;
 
  103      typedef typename alloc_traits::pointer            node_pointer;
 
  104      typedef typename alloc_traits::const_pointer      node_const_pointer;
 
  105      typedef Node_Metadata node_metadata;
 
  113          simple_value = is_simple<Value_Type>::value
 
  116      typedef integral_constant<int, simple_value>      no_throw_copies_t;
 
  120      typedef typename _Alloc::size_type                size_type;
 
  121      typedef typename _Alloc::difference_type  difference_type;
 
  122      typedef Value_Type                                value_type;
 
  124      typedef typename __rebind_v::pointer      pointer;
 
  125      typedef typename __rebind_v::const_pointer const_pointer;
 
  126      typedef typename __rebind_v::reference    reference;
 
  127      typedef typename __rebind_v::const_reference const_reference;
 
  138      typedef Cmp_Fn                                    cmp_fn;
 
  139      typedef _Alloc                                    allocator_type;
 
  146      swap(PB_DS_CLASS_C_DEC&);
 
  150      _GLIBCXX_NODISCARD 
inline bool 
  180#ifdef PB_DS_LC_NS_HEAP_TRACE_ 
  187      get_new_node_for_insert(const_reference);
 
  190      make_child_of(node_pointer, node_pointer);
 
  195      inline static node_pointer
 
  196      parent(node_pointer);
 
  199      swap_with_parent(node_pointer, node_pointer);
 
  202      bubble_to_top(node_pointer);
 
  205      actual_erase_node(node_pointer);
 
  208      clear_imp(node_pointer);
 
  213      template<
typename Pred>
 
  219      assert_valid(
const char*, 
int) 
const;
 
  222      assert_node_consistent(node_const_pointer, 
bool, 
const char*, 
int) 
const;
 
  225      size_under_node(node_const_pointer);
 
  228      degree(node_const_pointer);
 
  231#ifdef PB_DS_LC_NS_HEAP_TRACE_ 
  233      trace_node(node_const_pointer, size_type);
 
  239      assert_iterators(
const char*, 
int) 
const;
 
  242      assert_size(
const char*, 
int) 
const;
 
  245      size_from_node(node_const_pointer);
 
  249      recursive_copy_node(node_const_pointer);
 
  252      get_new_node_for_insert(const_reference, false_type);
 
  255      get_new_node_for_insert(const_reference, true_type);
 
  257#ifdef PB_DS_LC_NS_HEAP_TRACE_ 
  258      template<
typename Metadata_>
 
  260      trace_node_metadata(node_const_pointer, type_to_type<Metadata_>);
 
  263      trace_node_metadata(node_const_pointer, type_to_type<null_type>);
 
  266      static node_allocator     s_node_allocator;
 
  267      static no_throw_copies_t  s_no_throw_copies_ind;
 
  270      node_pointer              m_p_root;
 
  283#undef PB_DS_CLASS_C_DEC 
  284#undef PB_DS_CLASS_T_DEC 
GNU extensions for policy-based data structures for public use.
Struct holding two objects of arbitrary type.
Conditional deallocate constructor argument.
Consistent API for accessing allocator-related types.
Const point-type iterator.
Base class for a basic heap.
Const point-type iterator.