diff --git a/test/avl_multiset_test.cpp b/test/avl_multiset_test.cpp index 5346dec..4a40391 100644 --- a/test/avl_multiset_test.cpp +++ b/test/avl_multiset_test.cpp @@ -42,8 +42,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -59,6 +69,16 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< avl_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -69,6 +89,16 @@ class test_main_template < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< avl_hooks > testval_traits_t; //nonmember test::test_generic_multiset < typename testval_traits_t::nonhook_value_traits @@ -100,30 +130,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - //test_main_template, false, false, true>::execute(); - test_main_template, false, true, false>::execute(); - //test_main_template, false, true, true>::execute(); - test_main_template, true, false, false>::execute(); - //test_main_template, true, false, true>::execute(); - test_main_template, true, true, false>::execute(); + //test_main_template, false, false, false>::execute(); + test_main_template, false, false, true, Base>::execute(); + //test_main_template, false, true, false>::execute(); + test_main_template, false, true, true, Member>::execute(); + //test_main_template, true, false, false>::execute(); + test_main_template, true, false, true, NonMember>::execute(); + //test_main_template, true, true, false>::execute(); //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); - //test_main_template_bptr< true, true >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/avl_set_test.cpp b/test/avl_set_test.cpp index 81ad10a..99ed28f 100644 --- a/test/avl_set_test.cpp +++ b/test/avl_set_test.cpp @@ -42,8 +42,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -59,6 +69,16 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< avl_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -69,6 +89,16 @@ class test_main_template < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< avl_hooks > testval_traits_t; //nonmember test::test_generic_set < typename testval_traits_t::nonhook_value_traits @@ -100,24 +130,24 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr //test_main_template, false, false, false>::execute(); - test_main_template, false, false, true>::execute(); + test_main_template, false, false, true, Base>::execute(); //test_main_template, false, true, false>::execute(); - test_main_template, false, true, true>::execute(); + test_main_template, false, true, true, Member>::execute(); //test_main_template, true, false, false>::execute(); - test_main_template, true, false, true>::execute(); + test_main_template, true, false, true, NonMember>::execute(); //test_main_template, true, true, false>::execute(); - test_main_template, true, true, true>::execute(); + //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) test_main_template_bptr< false, false >::execute(); diff --git a/test/bptr_value.hpp b/test/bptr_value.hpp index 7ec18fd..56c0c60 100644 --- a/test/bptr_value.hpp +++ b/test/bptr_value.hpp @@ -15,6 +15,7 @@ #define BOOST_INTRUSIVE_BPTR_VALUE_HPP #include +#include #include "bounded_pointer.hpp" #include "common_functors.hpp" @@ -104,6 +105,9 @@ struct BPtr_Value }; // class BPtr_Value +std::ostream& operator<<(std::ostream& s, const BPtr_Value& t) +{ return s << t.value_.int_value(); } + template < typename Node_Algorithms > void swap_nodes(bounded_reference< BPtr_Value > lhs, bounded_reference< BPtr_Value > rhs) { diff --git a/test/bs_multiset_test.cpp b/test/bs_multiset_test.cpp index 8133be1..1786c0d 100644 --- a/test/bs_multiset_test.cpp +++ b/test/bs_multiset_test.cpp @@ -41,8 +41,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -58,6 +68,16 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -68,6 +88,17 @@ class test_main_template < member_hook_t , rebinder >::test_all(); + } +}; + + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_multiset < typename testval_traits_t::nonhook_value_traits @@ -99,29 +130,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - //test_main_template, false, false, true>::execute(); - test_main_template, false, true, false>::execute(); - //test_main_template, false, true, true>::execute(); - test_main_template, true, false, false>::execute(); - //test_main_template, true, false, true>::execute(); - test_main_template, true, true, false>::execute(); + //test_main_template, false, false, false>::execute(); + test_main_template, false, false, true, Base>::execute(); + //test_main_template, false, true, false>::execute(); + test_main_template, false, true, true, Member>::execute(); + //test_main_template, true, false, false>::execute(); + test_main_template, true, false, true, NonMember>::execute(); + //test_main_template, true, true, false>::execute(); //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); //test_main_template_bptr< true, true >::execute(); return boost::report_errors(); diff --git a/test/bs_set_test.cpp b/test/bs_set_test.cpp index 2574312..879b25f 100644 --- a/test/bs_set_test.cpp +++ b/test/bs_set_test.cpp @@ -41,8 +41,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -58,6 +68,16 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -68,6 +88,16 @@ class test_main_template < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_set < typename testval_traits_t::nonhook_value_traits @@ -99,30 +129,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr //test_main_template, false, false, false>::execute(); - test_main_template, false, false, true>::execute(); + test_main_template, false, false, true, Base>::execute(); //test_main_template, false, true, false>::execute(); - test_main_template, false, true, true>::execute(); + test_main_template, false, true, true, Member>::execute(); //test_main_template, true, false, false>::execute(); - test_main_template, true, false, true>::execute(); + test_main_template, true, false, true, NonMember>::execute(); //test_main_template, true, true, false>::execute(); - test_main_template, true, true, true>::execute(); + //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); - //test_main_template_bptr< true, true >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/iterator_test.hpp b/test/iterator_test.hpp index 9401f6c..02f1ddc 100644 --- a/test/iterator_test.hpp +++ b/test/iterator_test.hpp @@ -127,6 +127,7 @@ void test_iterator_compatible(C &c) const_iterator ci; iterator i(c.begin()); ci = i; + (void)ci; BOOST_ASSERT(ci == i); BOOST_ASSERT(*ci == *i); const_iterator ci2(i); @@ -204,11 +205,9 @@ void test_iterator_forward_functions(C const &c, I const b, I const e) for(I it2 = b; i != c.size(); ++it, ++i){ BOOST_TEST(it == it2++); I ittmp(it); - BOOST_TEST(&++ittmp == &ittmp); + I *iaddr = &ittmp; + BOOST_TEST(&(++ittmp) == iaddr); BOOST_TEST(ittmp == it2); - if(it2 != e){ - BOOST_TEST(*ittmp == *it2); - } } BOOST_TEST(i == c.size()); BOOST_TEST(it == e); @@ -235,12 +234,10 @@ void test_iterator_bidirectional_functions(C const &c, I const b, I const e) for(I it2 = e; i != c.size(); --it, ++i){ BOOST_TEST(it == it2--); I ittmp(it); - BOOST_TEST(&--ittmp == &ittmp); + I*iaddr = &ittmp; + BOOST_TEST(&(--ittmp) == iaddr); BOOST_TEST(ittmp == it2); - BOOST_TEST(++ittmp == it); - if(it != e){ - BOOST_TEST(*ittmp == *it); - } + BOOST_TEST((++ittmp) == it); } BOOST_TEST(i == c.size()); BOOST_TEST(it == b); diff --git a/test/itestvalue.hpp b/test/itestvalue.hpp index 9fca058..2f76c4e 100644 --- a/test/itestvalue.hpp +++ b/test/itestvalue.hpp @@ -156,7 +156,7 @@ void swap_nodes(testvalue& lhs, testvalue& rhs) template std::ostream& operator<< (std::ostream& s, const testvalue& t) -{ return s << t.value_; } +{ return s << t.value_.int_value(); } struct even_odd { diff --git a/test/multiset_test.cpp b/test/multiset_test.cpp index cb7ae52..fcd6a74 100644 --- a/test/multiset_test.cpp +++ b/test/multiset_test.cpp @@ -41,9 +41,18 @@ struct rebinder BOOST_STATIC_ASSERT((key_type_tester::value)); }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; template -class test_main_template +class test_main_template { public: static void execute() @@ -59,6 +68,16 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< rb_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -69,6 +88,16 @@ class test_main_template < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< rb_hooks > testval_traits_t; //nonmember test::test_generic_multiset < typename testval_traits_t::nonhook_value_traits @@ -100,30 +129,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - //test_main_template, false, false, true>::execute(); - test_main_template, false, true, false>::execute(); - //test_main_template, false, true, true>::execute(); - test_main_template, true, false, false>::execute(); - //test_main_template, true, false, true>::execute(); - test_main_template, true, true, false>::execute(); + //test_main_template, false, false, false>::execute(); + test_main_template, false, false, true, Base>::execute(); + //test_main_template, false, true, false>::execute(); + test_main_template, false, true, true, Member>::execute(); + //test_main_template, true, false, false>::execute(); + test_main_template, true, false, true, NonMember>::execute(); + //test_main_template, true, true, false>::execute(); //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); - //test_main_template_bptr< true, true >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/set_test.cpp b/test/set_test.cpp index 1b090c5..651df47 100644 --- a/test/set_test.cpp +++ b/test/set_test.cpp @@ -42,8 +42,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -59,6 +69,16 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< rb_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -69,6 +89,16 @@ class test_main_template < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< rb_hooks > testval_traits_t; //nonmember test::test_generic_set < typename testval_traits_t::nonhook_value_traits @@ -100,24 +130,24 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr //test_main_template, false, false, false>::execute(); - test_main_template, false, false, true>::execute(); + test_main_template, false, false, true, Base>::execute(); //test_main_template, false, true, false>::execute(); - test_main_template, false, true, true>::execute(); + test_main_template, false, true, true, Member>::execute(); //test_main_template, true, false, false>::execute(); - test_main_template, true, false, true>::execute(); + test_main_template, true, false, true, NonMember>::execute(); //test_main_template, true, true, false>::execute(); - test_main_template, true, true, true>::execute(); + //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) test_main_template_bptr< false, false >::execute(); diff --git a/test/sg_multiset_test.cpp b/test/sg_multiset_test.cpp index 55ebe87..5b8dd48 100644 --- a/test/sg_multiset_test.cpp +++ b/test/sg_multiset_test.cpp @@ -41,8 +41,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -54,12 +64,32 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member typedef typename testval_traits_t::member_value_traits member_hook_t; test::test_generic_multiset < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_multiset < typename testval_traits_t::nonhook_value_traits @@ -68,6 +98,7 @@ class test_main_template } }; + template < bool FloatingPoint, bool Map > struct test_main_template_bptr { @@ -91,30 +122,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - //test_main_template, false, false, true>::execute(); - test_main_template, false, true, false>::execute(); - //test_main_template, false, true, true>::execute(); - test_main_template, true, false, false>::execute(); - //test_main_template, true, false, true>::execute(); - test_main_template, true, true, false>::execute(); + //test_main_template, false, false, false>::execute(); + test_main_template, false, false, true, Base>::execute(); + //test_main_template, false, true, false>::execute(); + test_main_template, false, true, true, Member>::execute(); + //test_main_template, true, false, false>::execute(); + test_main_template, true, false, true, NonMember>::execute(); + //test_main_template, true, true, false>::execute(); //test_main_template, true, true, true>::execute(); //bounded_ptr (bool FloatingPoint, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); - //test_main_template_bptr< true, true >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/sg_set_test.cpp b/test/sg_set_test.cpp index bc7ce2d..bd2a2db 100644 --- a/test/sg_set_test.cpp +++ b/test/sg_set_test.cpp @@ -41,8 +41,18 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() @@ -54,12 +64,32 @@ class test_main_template < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member typedef typename testval_traits_t::member_value_traits member_hook_t; test::test_generic_set < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_set < typename testval_traits_t::nonhook_value_traits @@ -91,24 +121,24 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr //test_main_template, false, false, false>::execute(); - test_main_template, false, false, true>::execute(); + test_main_template, false, false, true, Base>::execute(); //test_main_template, false, true, false>::execute(); - test_main_template, false, true, true>::execute(); + test_main_template, false, true, true, Member>::execute(); //test_main_template, true, false, false>::execute(); - test_main_template, true, false, true>::execute(); + test_main_template, true, false, true, NonMember>::execute(); //test_main_template, true, true, false>::execute(); - test_main_template, true, true, true>::execute(); + //test_main_template, true, true, true>::execute(); //bounded_ptr (bool FloatingPoint, bool Map) test_main_template_bptr< false, false >::execute(); diff --git a/test/smart_ptr.hpp b/test/smart_ptr.hpp index 724e9da..10e5485 100644 --- a/test/smart_ptr.hpp +++ b/test/smart_ptr.hpp @@ -127,6 +127,12 @@ class smart_ptr : m_ptr(ptr.m_ptr) {} + pointer get() const + { return m_ptr; } + + void set(pointer p) + { m_ptr = p; } + //!Pointer-like -> operator. It can return 0 pointer. Never throws. pointer operator->() const { return m_ptr; } @@ -276,25 +282,26 @@ struct pointer_plus_bits, NumBits> static pointer get_pointer(const pointer &n) { - return pointer_traits::pointer_to - (*pointer_plus_bits::get_pointer(n.operator->())); + pointer p; + p.set(pointer_plus_bits::get_pointer(n.get())); + return p; } static void set_pointer(pointer &n, pointer p) { - T *raw_n = n.operator->(); + T *raw_n = n.get(); pointer_plus_bits::set_pointer(raw_n, p.operator->()); - n = pointer_traits::pointer_to(*raw_n); + n.set(raw_n); } static std::size_t get_bits(const pointer &n) - { return pointer_plus_bits::get_bits(n.operator->()); } + { return pointer_plus_bits::get_bits(n.get()); } static void set_bits(pointer &n, std::size_t c) { T *raw_n = n.operator->(); pointer_plus_bits::set_bits(raw_n, c); - n = pointer_traits::pointer_to(*raw_n); + n.set(raw_n); } }; diff --git a/test/splay_multiset_test.cpp b/test/splay_multiset_test.cpp index 0d8aa16..ed6bf8c 100644 --- a/test/splay_multiset_test.cpp +++ b/test/splay_multiset_test.cpp @@ -41,25 +41,63 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() { typedef testvalue_traits< bs_hooks > testval_traits_t; //base - typedef typename testval_traits_t::base_value_traits base_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::base_value_traits + , typename testval_traits_t::auto_base_value_traits + >::type base_hook_t; test::test_generic_multiset < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member - typedef typename testval_traits_t::member_value_traits member_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::member_value_traits + , typename testval_traits_t::auto_member_value_traits + >::type member_hook_t; test::test_generic_multiset < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_multiset < typename testval_traits_t::nonhook_value_traits @@ -91,30 +129,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - //test_main_template, false, false, true>::execute(); - test_main_template, false, true, false>::execute(); - //test_main_template, false, true, true>::execute(); - test_main_template, true, false, false>::execute(); - //test_main_template, true, false, true>::execute(); - test_main_template, true, true, false>::execute(); + //test_main_template, false, false, false>::execute(); + test_main_template, false, false, true, Base>::execute(); + //test_main_template, false, true, false>::execute(); + test_main_template, false, true, true, Member>::execute(); + //test_main_template, true, false, false>::execute(); + test_main_template, true, false, true, NonMember>::execute(); + //test_main_template, true, true, false>::execute(); //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); - //test_main_template_bptr< true, true >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/splay_set_test.cpp b/test/splay_set_test.cpp index 75b25a4..eea704f 100644 --- a/test/splay_set_test.cpp +++ b/test/splay_set_test.cpp @@ -41,25 +41,63 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() { typedef testvalue_traits< bs_hooks > testval_traits_t; //base - typedef typename testval_traits_t::base_value_traits base_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::base_value_traits + , typename testval_traits_t::auto_base_value_traits + >::type base_hook_t; test::test_generic_set < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member - typedef typename testval_traits_t::member_value_traits member_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::member_value_traits + , typename testval_traits_t::auto_member_value_traits + >::type member_hook_t; test::test_generic_set < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_set < typename testval_traits_t::nonhook_value_traits @@ -91,24 +129,24 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr //test_main_template, false, false, false>::execute(); - test_main_template, false, false, true>::execute(); + test_main_template, false, false, true, Base>::execute(); //test_main_template, false, true, false>::execute(); - test_main_template, false, true, true>::execute(); + test_main_template, false, true, true, Member>::execute(); //test_main_template, true, false, false>::execute(); - test_main_template, true, false, true>::execute(); + test_main_template, true, false, true, NonMember>::execute(); //test_main_template, true, true, false>::execute(); - test_main_template, true, true, true>::execute(); + //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) test_main_template_bptr< false, false >::execute(); diff --git a/test/treap_multiset_test.cpp b/test/treap_multiset_test.cpp index b6365ea..c0320f6 100644 --- a/test/treap_multiset_test.cpp +++ b/test/treap_multiset_test.cpp @@ -9,7 +9,7 @@ // See http://www.boost.org/libs/intrusive for documentation. // ///////////////////////////////////////////////////////////////////////////// -#include +#include #include "itestvalue.hpp" #include "bptr_value.hpp" #include "smart_ptr.hpp" @@ -28,7 +28,7 @@ struct rebinder > struct container { - typedef sg_multiset + typedef treap_multiset < typename common_t::value_type , value_traits , constant_time_size @@ -41,25 +41,63 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() { typedef testvalue_traits< bs_hooks > testval_traits_t; //base - typedef typename testval_traits_t::base_value_traits base_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::base_value_traits + , typename testval_traits_t::auto_base_value_traits + >::type base_hook_t; test::test_generic_multiset < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member - typedef typename testval_traits_t::member_value_traits member_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::member_value_traits + , typename testval_traits_t::auto_member_value_traits + >::type member_hook_t; test::test_generic_multiset < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_multiset < typename testval_traits_t::nonhook_value_traits @@ -91,30 +129,30 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - //test_main_template, false, false, true>::execute(); - test_main_template, false, true, false>::execute(); - //test_main_template, false, true, true>::execute(); - test_main_template, true, false, false>::execute(); - //test_main_template, true, false, true>::execute(); - test_main_template, true, true, false>::execute(); + //test_main_template, false, false, false>::execute(); + test_main_template, false, false, true, Base>::execute(); + //test_main_template, false, true, false>::execute(); + test_main_template, false, true, true, Member>::execute(); + //test_main_template, true, false, false>::execute(); + test_main_template, true, false, true, NonMember>::execute(); + //test_main_template, true, true, false>::execute(); //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) - //test_main_template_bptr< false, false >::execute(); - test_main_template_bptr< false, true >::execute(); - test_main_template_bptr< true, false >::execute(); - //test_main_template_bptr< true, true >::execute(); + test_main_template_bptr< false, false >::execute(); + //test_main_template_bptr< false, true >::execute(); + //test_main_template_bptr< true, false >::execute(); + test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/treap_set_test.cpp b/test/treap_set_test.cpp index 42f7216..e54e640 100644 --- a/test/treap_set_test.cpp +++ b/test/treap_set_test.cpp @@ -41,25 +41,63 @@ struct rebinder }; }; +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + template -class test_main_template +class test_main_template { public: static void execute() { typedef testvalue_traits< bs_hooks > testval_traits_t; //base - typedef typename testval_traits_t::base_value_traits base_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::base_value_traits + , typename testval_traits_t::auto_base_value_traits + >::type base_hook_t; test::test_generic_set < base_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //member - typedef typename testval_traits_t::member_value_traits member_hook_t; + typedef typename detail::if_c + < ConstantTimeSize + , typename testval_traits_t::member_value_traits + , typename testval_traits_t::auto_member_value_traits + >::type member_hook_t; test::test_generic_set < member_hook_t , rebinder >::test_all(); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue_traits< bs_hooks > testval_traits_t; //nonmember test::test_generic_set < typename testval_traits_t::nonhook_value_traits @@ -91,24 +129,24 @@ int main() //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets //void pointer - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); //test_main_template::execute(); - test_main_template::execute(); - //test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr //test_main_template, false, false, false>::execute(); - test_main_template, false, false, true>::execute(); + test_main_template, false, false, true, Base>::execute(); //test_main_template, false, true, false>::execute(); - test_main_template, false, true, true>::execute(); + test_main_template, false, true, true, Member>::execute(); //test_main_template, true, false, false>::execute(); - test_main_template, true, false, true>::execute(); + test_main_template, true, false, true, NonMember>::execute(); //test_main_template, true, true, false>::execute(); - test_main_template, true, true, true>::execute(); + //test_main_template, true, true, true>::execute(); //bounded_ptr (bool ConstantTimeSize, bool Map) test_main_template_bptr< false, false >::execute(); diff --git a/test/unordered_multiset_test.cpp b/test/unordered_multiset_test.cpp index 595ab43..8c0f250 100644 --- a/test/unordered_multiset_test.cpp +++ b/test/unordered_multiset_test.cpp @@ -54,8 +54,18 @@ struct rebinder }; }; -template -class test_main_template +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + +template +class test_main_template { public: static void execute() @@ -78,6 +88,23 @@ class test_main_template < base_hook_t //cache_begin, compare_hash, incremental , rebinder >::test_all(data); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue > value_type; + static const int random_init[6] = { 3, 2, 4, 1, 5, 2 }; + typedef typename ValueContainer< value_type >::type value_cont_type; + value_cont_type data (6); + for (int i = 0; i < 6; ++i) + data[i].value_ = random_init[i]; + + typedef testvalue_traits< unordered_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -88,6 +115,24 @@ class test_main_template < member_hook_t //cache_begin, compare_hash, incremental , rebinder >::test_all(data); + } +}; + +template +class test_main_template + +{ + public: + static void execute() + { + typedef testvalue > value_type; + static const int random_init[6] = { 3, 2, 4, 1, 5, 2 }; + typedef typename ValueContainer< value_type >::type value_cont_type; + value_cont_type data (6); + for (int i = 0; i < 6; ++i) + data[i].value_ = random_init[i]; + + typedef testvalue_traits< unordered_hooks > testval_traits_t; //nonmember test::test_unordered < typename testval_traits_t::nonhook_value_traits //cache_begin, compare_hash, incremental @@ -101,22 +146,21 @@ int main() //VoidPointer x ConstantTimeSize x Map x DefaultHolder //void pointer - test_main_template::execute(); - test_main_template::execute(); - test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - test_main_template, false, true, false>::execute(); - test_main_template, true, false, false>::execute(); - test_main_template, true, true, false>::execute(); -/* - //bounded_ptr (bool ConstantTimeSize, bool Map) - test_main_template_bptr< false, false >::execute(); + test_main_template, false, false, false, Member>::execute(); + test_main_template, false, true, false, NonMember>::execute(); + test_main_template, true, false, false, Base>::execute(); + test_main_template, true, true, false, Member>::execute(); + + ////bounded_ptr (bool ConstantTimeSize, bool Map) + //test_main_template_bptr< false, false >::execute(); //test_main_template_bptr< false, true >::execute(); //test_main_template_bptr< true, false >::execute(); - test_main_template_bptr< true, true >::execute(); -*/ + //test_main_template_bptr< true, true >::execute(); return boost::report_errors(); } diff --git a/test/unordered_set_test.cpp b/test/unordered_set_test.cpp index 426c200..6bcfc1d 100644 --- a/test/unordered_set_test.cpp +++ b/test/unordered_set_test.cpp @@ -52,8 +52,18 @@ struct rebinder }; }; -template -class test_main_template +enum HookType +{ + Base, + Member, + NonMember +}; + +template +class test_main_template; + +template +class test_main_template { public: static void execute() @@ -76,6 +86,23 @@ class test_main_template < base_hook_t //cache_begin, compare_hash, incremental , rebinder >::test_all(data); + } +}; + +template +class test_main_template +{ + public: + static void execute() + { + typedef testvalue > value_type; + static const int random_init[6] = { 3, 2, 4, 1, 5, 2 }; + typedef typename ValueContainer< value_type >::type value_cont_type; + value_cont_type data (6); + for (int i = 0; i < 6; ++i) + data[i].value_ = random_init[i]; + + typedef testvalue_traits< unordered_hooks > testval_traits_t; //member typedef typename detail::if_c < ConstantTimeSize @@ -86,6 +113,24 @@ class test_main_template < member_hook_t //cache_begin, compare_hash, incremental , rebinder >::test_all(data); + } +}; + +template +class test_main_template + +{ + public: + static void execute() + { + typedef testvalue > value_type; + static const int random_init[6] = { 3, 2, 4, 1, 5, 2 }; + typedef typename ValueContainer< value_type >::type value_cont_type; + value_cont_type data (6); + for (int i = 0; i < 6; ++i) + data[i].value_ = random_init[i]; + + typedef testvalue_traits< unordered_hooks > testval_traits_t; //nonmember test::test_unordered < typename testval_traits_t::nonhook_value_traits //cache_begin, compare_hash, incremental @@ -99,16 +144,16 @@ int main() //VoidPointer x ConstantTimeSize x Map x DefaultHolder //void pointer - test_main_template::execute(); - test_main_template::execute(); - test_main_template::execute(); - test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); + test_main_template::execute(); //smart_ptr - test_main_template, false, false, false>::execute(); - test_main_template, false, true, false>::execute(); - test_main_template, true, false, false>::execute(); - test_main_template, true, true, false>::execute(); + test_main_template, false, false, false, Member>::execute(); + test_main_template, false, true, false, NonMember>::execute(); + test_main_template, true, false, false, Base>::execute(); + test_main_template, true, true, false, Member>::execute(); ////bounded_ptr (bool ConstantTimeSize, bool Map) //test_main_template_bptr< false, false >::execute();