mirror of
https://github.com/boostorg/intrusive.git
synced 2025-08-02 14:04:36 +02:00
check const containers
This commit is contained in:
@@ -58,7 +58,7 @@ struct avltree_node_checker
|
||||
typedef bstree_node_checker<ValueTraits, NodePtrCompare, ExtraChecker> base_checker_t;
|
||||
typedef ValueTraits value_traits;
|
||||
typedef typename value_traits::node_traits node_traits;
|
||||
typedef typename node_traits::node_ptr node_ptr;
|
||||
typedef typename node_traits::const_node_ptr const_node_ptr;
|
||||
|
||||
struct return_type
|
||||
: public base_checker_t::return_type
|
||||
@@ -71,7 +71,7 @@ struct avltree_node_checker
|
||||
: base_checker_t(comp, extra_checker)
|
||||
{}
|
||||
|
||||
void operator () (const node_ptr& p,
|
||||
void operator () (const const_node_ptr& p,
|
||||
const return_type& check_return_left, const return_type& check_return_right,
|
||||
return_type& check_return)
|
||||
{
|
||||
|
@@ -1854,7 +1854,7 @@ class bstree_impl
|
||||
}
|
||||
|
||||
template <class ExtraChecker>
|
||||
void check(ExtraChecker extra_checker)
|
||||
void check(ExtraChecker extra_checker) const
|
||||
{
|
||||
typedef detail::key_nodeptr_comp<value_compare, value_traits> nodeptr_comp_t;
|
||||
nodeptr_comp_t nodeptr_comp(this->comp(), &this->get_value_traits());
|
||||
@@ -1865,7 +1865,7 @@ class bstree_impl
|
||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(this->sz_traits().get_size() == checker_return.node_count);
|
||||
}
|
||||
|
||||
void check()
|
||||
void check() const
|
||||
{
|
||||
check(detail::empty_node_checker<ValueTraits>());
|
||||
}
|
||||
|
@@ -54,15 +54,15 @@ struct bstree_node_checker
|
||||
typedef ExtraChecker base_checker_t;
|
||||
typedef ValueTraits value_traits;
|
||||
typedef typename value_traits::node_traits node_traits;
|
||||
typedef typename node_traits::node_ptr node_ptr;
|
||||
typedef typename node_traits::const_node_ptr const_node_ptr;
|
||||
|
||||
struct return_type
|
||||
: public base_checker_t::return_type
|
||||
{
|
||||
return_type() : min_key_node_ptr(node_ptr()), max_key_node_ptr(node_ptr()), node_count(0) {}
|
||||
return_type() : min_key_node_ptr(const_node_ptr()), max_key_node_ptr(const_node_ptr()), node_count(0) {}
|
||||
|
||||
node_ptr min_key_node_ptr;
|
||||
node_ptr max_key_node_ptr;
|
||||
const_node_ptr min_key_node_ptr;
|
||||
const_node_ptr max_key_node_ptr;
|
||||
size_t node_count;
|
||||
};
|
||||
|
||||
@@ -70,7 +70,7 @@ struct bstree_node_checker
|
||||
: base_checker_t(extra_checker), comp_(comp)
|
||||
{}
|
||||
|
||||
void operator () (const node_ptr& p,
|
||||
void operator () (const const_node_ptr& p,
|
||||
const return_type& check_return_left, const return_type& check_return_right,
|
||||
return_type& check_return)
|
||||
{
|
||||
@@ -1487,9 +1487,9 @@ class bstree_algorithms
|
||||
}
|
||||
|
||||
template<class Checker>
|
||||
static void check(const node_ptr & header, Checker checker, typename Checker::return_type& checker_return)
|
||||
static void check(const const_node_ptr& header, Checker checker, typename Checker::return_type& checker_return)
|
||||
{
|
||||
node_ptr root_node_ptr = NodeTraits::get_parent(header);
|
||||
const_node_ptr root_node_ptr = NodeTraits::get_parent(header);
|
||||
if (!root_node_ptr)
|
||||
{
|
||||
// check left&right header pointers
|
||||
@@ -1503,7 +1503,7 @@ class bstree_algorithms
|
||||
// check subtree from root
|
||||
check_subtree(root_node_ptr, checker, checker_return);
|
||||
// check left&right header pointers
|
||||
node_ptr p = root_node_ptr;
|
||||
const_node_ptr p = root_node_ptr;
|
||||
while (NodeTraits::get_left(p)) { p = NodeTraits::get_left(p); }
|
||||
BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_left(header) == p);
|
||||
p = root_node_ptr;
|
||||
@@ -2069,10 +2069,10 @@ class bstree_algorithms
|
||||
}
|
||||
|
||||
template<class Checker>
|
||||
static void check_subtree(const node_ptr& node, Checker checker, typename Checker::return_type& check_return)
|
||||
static void check_subtree(const const_node_ptr& node, Checker checker, typename Checker::return_type& check_return)
|
||||
{
|
||||
node_ptr left = NodeTraits::get_left(node);
|
||||
node_ptr right = NodeTraits::get_right(node);
|
||||
const_node_ptr left = NodeTraits::get_left(node);
|
||||
const_node_ptr right = NodeTraits::get_right(node);
|
||||
typename Checker::return_type check_return_left;
|
||||
typename Checker::return_type check_return_right;
|
||||
if (left)
|
||||
|
@@ -311,11 +311,11 @@ struct empty_node_checker
|
||||
{
|
||||
typedef ValueTraits value_traits;
|
||||
typedef typename value_traits::node_traits node_traits;
|
||||
typedef typename node_traits::node_ptr node_ptr;
|
||||
typedef typename node_traits::const_node_ptr const_node_ptr;
|
||||
|
||||
struct return_type {};
|
||||
|
||||
void operator () (const node_ptr&, const return_type&, const return_type&, return_type&) {}
|
||||
void operator () (const const_node_ptr&, const return_type&, const return_type&, return_type&) {}
|
||||
};
|
||||
|
||||
template<class VoidPointer>
|
||||
|
@@ -2659,7 +2659,7 @@ class hashtable_impl
|
||||
return size_type(*bound);
|
||||
}
|
||||
/// @cond
|
||||
void check() {}
|
||||
void check() const {}
|
||||
private:
|
||||
size_traits &priv_size_traits()
|
||||
{ return static_cast<size_traits&>(static_cast<data_type&>(*this)); }
|
||||
|
@@ -66,7 +66,7 @@ struct rbtree_node_checker
|
||||
typedef bstree_node_checker<ValueTraits, NodePtrCompare, ExtraChecker> base_checker_t;
|
||||
typedef ValueTraits value_traits;
|
||||
typedef typename value_traits::node_traits node_traits;
|
||||
typedef typename node_traits::node_ptr node_ptr;
|
||||
typedef typename node_traits::const_node_ptr const_node_ptr;
|
||||
|
||||
typedef typename base_checker_t::return_type return_type;
|
||||
|
||||
@@ -74,7 +74,7 @@ struct rbtree_node_checker
|
||||
: base_checker_t(comp, extra_checker)
|
||||
{}
|
||||
|
||||
void operator () (const node_ptr& p,
|
||||
void operator () (const const_node_ptr& p,
|
||||
const return_type& check_return_left, const return_type& check_return_right,
|
||||
return_type& check_return)
|
||||
{
|
||||
|
@@ -905,14 +905,14 @@ class treap_impl
|
||||
}
|
||||
|
||||
template <class ExtraChecker>
|
||||
void check(ExtraChecker extra_checker)
|
||||
void check(ExtraChecker extra_checker) const
|
||||
{
|
||||
typedef detail::key_nodeptr_comp<priority_compare, value_traits> nodeptr_prio_comp_t;
|
||||
nodeptr_prio_comp_t nodeptr_prio_comp(priv_pcomp(), &this->get_value_traits());
|
||||
tree_type::check(detail::treap_node_extra_checker<ValueTraits, nodeptr_prio_comp_t, ExtraChecker>(nodeptr_prio_comp, extra_checker));
|
||||
}
|
||||
|
||||
void check()
|
||||
void check() const
|
||||
{
|
||||
check(detail::empty_node_checker<ValueTraits>());
|
||||
}
|
||||
|
@@ -40,7 +40,7 @@ struct treap_node_extra_checker
|
||||
typedef ExtraChecker base_checker_t;
|
||||
typedef ValueTraits value_traits;
|
||||
typedef typename value_traits::node_traits node_traits;
|
||||
typedef typename node_traits::node_ptr node_ptr;
|
||||
typedef typename node_traits::const_node_ptr const_node_ptr;
|
||||
|
||||
typedef typename base_checker_t::return_type return_type;
|
||||
|
||||
@@ -48,7 +48,7 @@ struct treap_node_extra_checker
|
||||
: base_checker_t(extra_checker), prio_comp_(prio_comp)
|
||||
{}
|
||||
|
||||
void operator () (const node_ptr& p,
|
||||
void operator () (const const_node_ptr& p,
|
||||
const return_type& check_return_left, const return_type& check_return_right,
|
||||
return_type& check_return)
|
||||
{
|
||||
|
@@ -73,7 +73,7 @@ void test_container( Container & c )
|
||||
BOOST_TEST( it == itend );
|
||||
BOOST_TEST( c.size() == i );
|
||||
}
|
||||
c.check();
|
||||
static_cast<const Container&>(c).check();
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user