43 typename PB_DS_CLASS_C_DEC::node_allocator
 
   44 PB_DS_CLASS_C_DEC::s_node_allocator;
 
   47 typename PB_DS_CLASS_C_DEC::no_throw_copies_t
 
   48 PB_DS_CLASS_C_DEC::s_no_throw_copies_ind;
 
   52 left_child_next_sibling_heap() :
 
   56   PB_DS_ASSERT_VALID((*
this))
 
   61 left_child_next_sibling_heap(
const Cmp_Fn& r_cmp_fn) :
 
   66   PB_DS_ASSERT_VALID((*
this))
 
   71 left_child_next_sibling_heap(
const PB_DS_CLASS_C_DEC& other) 
 
   72 : Cmp_Fn(other), m_p_root(0), m_size(0)
 
   74   m_size = other.m_size;
 
   75   PB_DS_ASSERT_VALID(other)
 
   76   m_p_root = recursive_copy_node(other.m_p_root);
 
   77   m_size = other.m_size;
 
   78   PB_DS_ASSERT_VALID((*this))
 
   84 swap(PB_DS_CLASS_C_DEC& other)
 
   86   PB_DS_ASSERT_VALID((*
this))
 
   87   PB_DS_ASSERT_VALID(other)
 
   89   std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
 
   90   PB_DS_ASSERT_VALID((*this))
 
   91   PB_DS_ASSERT_VALID(other)
 
   97 value_swap(PB_DS_CLASS_C_DEC& other)
 
   99   std::swap(m_p_root, other.m_p_root);
 
  100   std::swap(m_size, other.m_size);
 
  105 ~left_child_next_sibling_heap()
 
  111 typename PB_DS_CLASS_C_DEC::node_pointer
 
  113 recursive_copy_node(node_const_pointer p_nd)
 
  118   node_pointer p_ret = s_node_allocator.allocate(1);
 
  122       new (p_ret) node(*p_nd);
 
  126       s_node_allocator.deallocate(p_ret, 1);
 
  127       __throw_exception_again;
 
  130   p_ret->m_p_l_child = p_ret->m_p_next_sibling =
 
  131     p_ret->m_p_prev_or_parent = 0;
 
  135       p_ret->m_p_l_child = recursive_copy_node(p_nd->m_p_l_child);
 
  136       p_ret->m_p_next_sibling = recursive_copy_node(p_nd->m_p_next_sibling);
 
  141       __throw_exception_again;
 
  144   if (p_ret->m_p_l_child != 0)
 
  145     p_ret->m_p_l_child->m_p_prev_or_parent = p_ret;
 
  147   if (p_ret->m_p_next_sibling != 0)
 
  148     p_ret->m_p_next_sibling->m_p_prev_or_parent =
 
  149       p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd ? p_ret : 0;