46 assert_valid(
const char* __file,
int __line)
const
48 base_type::assert_valid(__file, __line);
49 assert_node_consistent(base_type::m_p_root,
true, __file, __line);
50 assert_max(__file, __line);
51 assert_aux_null(__file, __line);
57 assert_aux_null(
const char* __file,
int __line)
const
59 for (size_type i = 0; i < max_rank; ++i)
60 PB_DS_DEBUG_VERIFY(m_a_aux[i] == 0);
66 assert_max(
const char* __file,
int __line)
const
70 PB_DS_DEBUG_VERIFY(base_type::empty());
74 PB_DS_DEBUG_VERIFY(!base_type::empty());
75 PB_DS_DEBUG_VERIFY(base_type::parent(m_p_max) == 0);
76 PB_DS_DEBUG_VERIFY(m_p_max->m_p_prev_or_parent == 0);
78 PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value));
84 assert_node_consistent(node_const_pointer p_nd,
bool root,
85 const char* __file,
int __line)
const
87 base_type::assert_node_consistent(p_nd, root, __file, __line);
91 assert_node_consistent(p_nd->m_p_next_sibling, root, __file, __line);
92 assert_node_consistent(p_nd->m_p_l_child,
false, __file, __line);
95 if (p_nd->m_metadata == 0)
96 PB_DS_DEBUG_VERIFY(p_nd->m_p_next_sibling == 0);
98 PB_DS_DEBUG_VERIFY(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata + 1);
101 if (p_nd->m_p_l_child != 0)
102 PB_DS_DEBUG_VERIFY(p_nd->m_p_l_child->m_metadata + 1 == base_type::degree(p_nd));
104 const bool unmarked_valid =
105 (p_nd->m_p_l_child == 0 && p_nd->m_metadata == 0)
106 || (p_nd->m_p_l_child != 0
107 && p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 1);
109 const bool marked_valid =
110 (p_nd->m_p_l_child == 0 && p_nd->m_metadata == 1)
111 || (p_nd->m_p_l_child != 0
112 && p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 2);
114 PB_DS_DEBUG_VERIFY(unmarked_valid || marked_valid);
116 PB_DS_DEBUG_VERIFY(unmarked_valid);
auto end(_Container &__cont) -> decltype(__cont.end())
Return an iterator pointing to one past the last element of the container.
auto begin(_Container &__cont) -> decltype(__cont.begin())
Return an iterator pointing to the first element of the container.