diff --git a/include/boost/intrusive/avltree_algorithms.hpp b/include/boost/intrusive/avltree_algorithms.hpp index 75e256d..3c98499 100644 --- a/include/boost/intrusive/avltree_algorithms.hpp +++ b/include/boost/intrusive/avltree_algorithms.hpp @@ -58,7 +58,7 @@ struct avltree_node_checker typedef bstree_node_checker 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) { diff --git a/include/boost/intrusive/bstree.hpp b/include/boost/intrusive/bstree.hpp index 9ae3cab..1b6ee5d 100644 --- a/include/boost/intrusive/bstree.hpp +++ b/include/boost/intrusive/bstree.hpp @@ -1854,7 +1854,7 @@ class bstree_impl } template - void check(ExtraChecker extra_checker) + void check(ExtraChecker extra_checker) const { typedef detail::key_nodeptr_comp 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()); } diff --git a/include/boost/intrusive/bstree_algorithms.hpp b/include/boost/intrusive/bstree_algorithms.hpp index 236ab8f..cf7a0a0 100644 --- a/include/boost/intrusive/bstree_algorithms.hpp +++ b/include/boost/intrusive/bstree_algorithms.hpp @@ -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 - 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 - 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) diff --git a/include/boost/intrusive/detail/utilities.hpp b/include/boost/intrusive/detail/utilities.hpp index cc7ed94..60fbbb7 100644 --- a/include/boost/intrusive/detail/utilities.hpp +++ b/include/boost/intrusive/detail/utilities.hpp @@ -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 diff --git a/include/boost/intrusive/hashtable.hpp b/include/boost/intrusive/hashtable.hpp index 65a6bf0..eb46167 100644 --- a/include/boost/intrusive/hashtable.hpp +++ b/include/boost/intrusive/hashtable.hpp @@ -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(static_cast(*this)); } diff --git a/include/boost/intrusive/rbtree_algorithms.hpp b/include/boost/intrusive/rbtree_algorithms.hpp index 5ebbd52..2c7529e 100644 --- a/include/boost/intrusive/rbtree_algorithms.hpp +++ b/include/boost/intrusive/rbtree_algorithms.hpp @@ -66,7 +66,7 @@ struct rbtree_node_checker typedef bstree_node_checker 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) { diff --git a/include/boost/intrusive/treap.hpp b/include/boost/intrusive/treap.hpp index 22ed24f..7170e45 100644 --- a/include/boost/intrusive/treap.hpp +++ b/include/boost/intrusive/treap.hpp @@ -905,14 +905,14 @@ class treap_impl } template - void check(ExtraChecker extra_checker) + void check(ExtraChecker extra_checker) const { typedef detail::key_nodeptr_comp 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(nodeptr_prio_comp, extra_checker)); } - void check() + void check() const { check(detail::empty_node_checker()); } diff --git a/include/boost/intrusive/treap_algorithms.hpp b/include/boost/intrusive/treap_algorithms.hpp index 73d1385..2c8f8e4 100644 --- a/include/boost/intrusive/treap_algorithms.hpp +++ b/include/boost/intrusive/treap_algorithms.hpp @@ -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) { diff --git a/test/test_container.hpp b/test/test_container.hpp index eb0b32e..850ab5d 100644 --- a/test/test_container.hpp +++ b/test/test_container.hpp @@ -73,7 +73,7 @@ void test_container( Container & c ) BOOST_TEST( it == itend ); BOOST_TEST( c.size() == i ); } - c.check(); + static_cast(c).check(); }