check const containers

This commit is contained in:
Matei David
2014-08-14 16:27:21 -04:00
parent 11633b7d24
commit a684df24bd
9 changed files with 25 additions and 25 deletions

View File

@@ -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)
{

View File

@@ -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>());
}

View File

@@ -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)

View File

@@ -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>

View File

@@ -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)); }

View File

@@ -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)
{

View File

@@ -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>());
}

View File

@@ -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)
{

View File

@@ -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();
}