From 864f00b1c79d4223d14e162606265de72a5fa05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Sat, 24 Nov 2012 21:06:48 +0000 Subject: [PATCH] * Fixed GCC -Wshadow warnings. * Added missing `explicit` keyword in several intrusive container constructors. * Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros. [SVN r81517] --- doc/intrusive.qbk | 10 +- test/generic_assoc_test.hpp | 10 +- test/generic_multiset_test.hpp | 2 +- test/generic_set_test.hpp | 2 +- test/pointer_traits_test.cpp | 2 +- test/stateful_value_traits_test.cpp | 4 +- test/test_container.hpp | 18 ++- test/unordered_multiset_test.cpp | 224 ++++++++++++++-------------- 8 files changed, 144 insertions(+), 128 deletions(-) diff --git a/doc/intrusive.qbk b/doc/intrusive.qbk index 7dd3d18..deba9a0 100644 --- a/doc/intrusive.qbk +++ b/doc/intrusive.qbk @@ -6,7 +6,7 @@ /] [library Boost.Intrusive - [quickbook 1.4] + [quickbook 1.5] [authors [Krzikalla, Olaf], [Gaztanaga, Ion]] [copyright 2005 Olaf Krzikalla, 2006-2012 Ion Gaztanaga] [id intrusive] @@ -3829,6 +3829,14 @@ all the objects to be inserted in intrusive containers in containers like `std:: [section:release_notes Release Notes] +[section:release_notes_boost_1_53_00 Boost 1.53 Release] + +* Fixed GCC -Wshadow warnings. +* Added missing `explicit` keyword in several intrusive container constructors. +* Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros. + +[endsect] + [section:release_notes_boost_1_51_00 Boost 1.51 Release] * Fixed bugs diff --git a/test/generic_assoc_test.hpp b/test/generic_assoc_test.hpp index a578b46..a1422c4 100644 --- a/test/generic_assoc_test.hpp +++ b/test/generic_assoc_test.hpp @@ -145,10 +145,12 @@ void test_generic_assoc::test_insert_erase_burst( TEST_INTRUSIVE_SEQUENCE_EXPECTED(testset, testset.begin()); //Ordered erasure - iterator it(testset.begin()), itend(testset.end()); - for(int i = 0; it != itend; ++i){ - BOOST_TEST(&*it == &values[i]); - it = testset.erase(it); + { + iterator it(testset.begin()), itend(testset.end()); + for(int i = 0; it != itend; ++i){ + BOOST_TEST(&*it == &values[i]); + it = testset.erase(it); + } } BOOST_TEST(testset.empty()); diff --git a/test/generic_multiset_test.hpp b/test/generic_multiset_test.hpp index f2110b2..5d7774a 100644 --- a/test/generic_multiset_test.hpp +++ b/test/generic_multiset_test.hpp @@ -233,7 +233,7 @@ void test_generic_multiset::test_find(std::vector cmp_val_lower.value_ = 1; cmp_val_upper.value_ = 2; //left-closed, right-closed - std::pair range = testset.bounded_range (cmp_val_lower, cmp_val_upper, true, true); + range = testset.bounded_range (cmp_val_lower, cmp_val_upper, true, true); BOOST_TEST (range.first->value_ == 1); BOOST_TEST (range.second->value_ == 3); BOOST_TEST (std::distance (range.first, range.second) == 3); diff --git a/test/generic_set_test.hpp b/test/generic_set_test.hpp index 43d5336..e57fbb7 100644 --- a/test/generic_set_test.hpp +++ b/test/generic_set_test.hpp @@ -305,7 +305,7 @@ void test_generic_set::test_find(std::vector range = testset.bounded_range (cmp_val_lower, cmp_val_upper, true, true); + range = testset.bounded_range (cmp_val_lower, cmp_val_upper, true, true); BOOST_TEST (range.first->value_ == 1); BOOST_TEST (range.second->value_ == 3); BOOST_TEST (std::distance (range.first, range.second) == 2); diff --git a/test/pointer_traits_test.cpp b/test/pointer_traits_test.cpp index fef7aa1..93a2421 100644 --- a/test/pointer_traits_test.cpp +++ b/test/pointer_traits_test.cpp @@ -20,7 +20,7 @@ class CompleteSmartPtr public: - #if !defined(BOOST_NO_TEMPLATE_ALIASES) + #if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) template using rebind = CompleteSmartPtr; #else template struct rebind diff --git a/test/stateful_value_traits_test.cpp b/test/stateful_value_traits_test.cpp index 3e76eca..d721bb7 100644 --- a/test/stateful_value_traits_test.cpp +++ b/test/stateful_value_traits_test.cpp @@ -53,8 +53,8 @@ struct stateful_value_traits static const link_mode_type link_mode = normal_link; - stateful_value_traits(pointer values, node_ptr node_array) - : values_(values), node_array_(node_array) + stateful_value_traits(pointer vals, node_ptr node_array) + : values_(vals), node_array_(node_array) {} node_ptr to_node_ptr (value_type &value) diff --git a/test/test_container.hpp b/test/test_container.hpp index 7737fa7..3743fef 100644 --- a/test/test_container.hpp +++ b/test/test_container.hpp @@ -111,9 +111,9 @@ void test_sequence_container(Container & c, Data & d) BOOST_TEST( !c.empty() ); { - typename Data::iterator i = d.begin(); - ++++i; - c.insert( c.begin(), *(i) ); + typename Data::iterator di = d.begin(); + ++++di; + c.insert( c.begin(), *(di) ); } i = c.erase( c.begin(), c.end() ); @@ -361,10 +361,14 @@ void test_unordered_associative_container_invariants(Container & c, Data & d, bo std::pair er = c.equal_range(*di); size_type cnt = std::distance(er.first, er.second); BOOST_TEST( cnt == c.count(*di)); - if(cnt > 1) - for(const_iterator n = er.first, i = n++, e = er.second; n != e; ++i, ++n){ - BOOST_TEST( c.key_eq()(*i, *n) ); - BOOST_TEST( c.hash_function()(*i) == c.hash_function()(*n) ); + if(cnt > 1){ + const_iterator n = er.first; + i = n++; + const_iterator e = er.second; + for(; n != e; ++i, ++n){ + BOOST_TEST( c.key_eq()(*i, *n) ); + BOOST_TEST( c.hash_function()(*i) == c.hash_function()(*n) ); + } } } diff --git a/test/unordered_multiset_test.cpp b/test/unordered_multiset_test.cpp index ae52969..0ca6e78 100644 --- a/test/unordered_multiset_test.cpp +++ b/test/unordered_multiset_test.cpp @@ -212,118 +212,120 @@ void test_unordered_multiset > unordered_multiset_type; typedef typename unordered_multiset_type::bucket_traits bucket_traits; typedef typename unordered_multiset_type::iterator iterator; - typename unordered_multiset_type::bucket_type buckets [BucketSize]; - unordered_multiset_type testset(bucket_traits( - pointer_traits:: - pointer_to(buckets[0]), BucketSize)); - - testset.insert(&values[0] + 2, &values[0] + 5); - - const unordered_multiset_type& const_testset = testset; - - if(Incremental){ - { - { int init_values [] = { 4, 5, 1 }; - TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } - - typename unordered_multiset_type::iterator i = testset.begin(); - BOOST_TEST (i->value_ == 4); - - i = testset.insert (values[0]); - BOOST_TEST (&*i == &values[0]); - - i = testset.iterator_to (values[2]); - BOOST_TEST (&*i == &values[2]); - testset.erase(i); - - { int init_values [] = { 5, 1, 3 }; - TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } - testset.clear(); - testset.insert(&values[0], &values[0] + values.size()); - - { int init_values [] = { 4, 5, 1, 2, 2, 3 }; - TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } - - BOOST_TEST (testset.erase(1) == 1); - BOOST_TEST (testset.erase(2) == 2); - BOOST_TEST (testset.erase(3) == 1); - BOOST_TEST (testset.erase(4) == 1); - BOOST_TEST (testset.erase(5) == 1); - BOOST_TEST (testset.empty() == true); - - //Now with a single bucket - typename unordered_multiset_type::bucket_type single_bucket[1]; - unordered_multiset_type testset2(bucket_traits( - pointer_traits:: - pointer_to(single_bucket[0]), 1)); - testset2.insert(&values[0], &values[0] + values.size()); - BOOST_TEST (testset2.erase(5) == 1); - BOOST_TEST (testset2.erase(2) == 2); - BOOST_TEST (testset2.erase(1) == 1); - BOOST_TEST (testset2.erase(4) == 1); - BOOST_TEST (testset2.erase(3) == 1); - BOOST_TEST (testset2.empty() == true); - } - } - else{ - { - { int init_values [] = { 1, 4, 5 }; - TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } - - typename unordered_multiset_type::iterator i = testset.begin(); - BOOST_TEST (i->value_ == 1); - - i = testset.insert (values[0]); - BOOST_TEST (&*i == &values[0]); - - i = testset.iterator_to (values[2]); - BOOST_TEST (&*i == &values[2]); - testset.erase(i); - - { int init_values [] = { 1, 3, 5 }; - TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } - testset.clear(); - testset.insert(&values[0], &values[0] + values.size()); - - { int init_values [] = { 1, 2, 2, 3, 4, 5 }; - TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } - - BOOST_TEST (testset.erase(1) == 1); - BOOST_TEST (testset.erase(2) == 2); - BOOST_TEST (testset.erase(3) == 1); - BOOST_TEST (testset.erase(4) == 1); - BOOST_TEST (testset.erase(5) == 1); - BOOST_TEST (testset.empty() == true); - - //Now with a single bucket - typename unordered_multiset_type::bucket_type single_bucket[1]; - unordered_multiset_type testset2(bucket_traits( - pointer_traits:: - pointer_to(single_bucket[0]), 1)); - testset2.insert(&values[0], &values[0] + values.size()); - BOOST_TEST (testset2.erase(5) == 1); - BOOST_TEST (testset2.erase(2) == 2); - BOOST_TEST (testset2.erase(1) == 1); - BOOST_TEST (testset2.erase(4) == 1); - BOOST_TEST (testset2.erase(3) == 1); - BOOST_TEST (testset2.empty() == true); - } - } { - //Now erase just one per loop - const int random_init[] = { 3, 2, 4, 1, 5, 2, 2 }; - const unsigned int random_size = sizeof(random_init)/sizeof(random_init[0]); - typename unordered_multiset_type::bucket_type single_bucket[1]; - for(unsigned int i = 0, max = random_size; i != max; ++i){ - std::vector data (random_size); - for (unsigned int j = 0; j < random_size; ++j) - data[j].value_ = random_init[j]; - unordered_multiset_type testset_new(bucket_traits( - pointer_traits:: - pointer_to(single_bucket[0]), 1)); - testset_new.insert(&data[0], &data[0]+max); - testset_new.erase(testset_new.iterator_to(data[i])); - BOOST_TEST (testset_new.size() == (max -1)); + typename unordered_multiset_type::bucket_type buckets [BucketSize]; + unordered_multiset_type testset(bucket_traits( + pointer_traits:: + pointer_to(buckets[0]), BucketSize)); + + testset.insert(&values[0] + 2, &values[0] + 5); + + const unordered_multiset_type& const_testset = testset; + + if(Incremental){ + { + { int init_values [] = { 4, 5, 1 }; + TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } + + typename unordered_multiset_type::iterator i = testset.begin(); + BOOST_TEST (i->value_ == 4); + + i = testset.insert (values[0]); + BOOST_TEST (&*i == &values[0]); + + i = testset.iterator_to (values[2]); + BOOST_TEST (&*i == &values[2]); + testset.erase(i); + + { int init_values [] = { 5, 1, 3 }; + TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } + testset.clear(); + testset.insert(&values[0], &values[0] + values.size()); + + { int init_values [] = { 4, 5, 1, 2, 2, 3 }; + TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } + + BOOST_TEST (testset.erase(1) == 1); + BOOST_TEST (testset.erase(2) == 2); + BOOST_TEST (testset.erase(3) == 1); + BOOST_TEST (testset.erase(4) == 1); + BOOST_TEST (testset.erase(5) == 1); + BOOST_TEST (testset.empty() == true); + + //Now with a single bucket + typename unordered_multiset_type::bucket_type single_bucket[1]; + unordered_multiset_type testset2(bucket_traits( + pointer_traits:: + pointer_to(single_bucket[0]), 1)); + testset2.insert(&values[0], &values[0] + values.size()); + BOOST_TEST (testset2.erase(5) == 1); + BOOST_TEST (testset2.erase(2) == 2); + BOOST_TEST (testset2.erase(1) == 1); + BOOST_TEST (testset2.erase(4) == 1); + BOOST_TEST (testset2.erase(3) == 1); + BOOST_TEST (testset2.empty() == true); + } + } + else{ + { + { int init_values [] = { 1, 4, 5 }; + TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } + + typename unordered_multiset_type::iterator i = testset.begin(); + BOOST_TEST (i->value_ == 1); + + i = testset.insert (values[0]); + BOOST_TEST (&*i == &values[0]); + + i = testset.iterator_to (values[2]); + BOOST_TEST (&*i == &values[2]); + testset.erase(i); + + { int init_values [] = { 1, 3, 5 }; + TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } + testset.clear(); + testset.insert(&values[0], &values[0] + values.size()); + + { int init_values [] = { 1, 2, 2, 3, 4, 5 }; + TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } + + BOOST_TEST (testset.erase(1) == 1); + BOOST_TEST (testset.erase(2) == 2); + BOOST_TEST (testset.erase(3) == 1); + BOOST_TEST (testset.erase(4) == 1); + BOOST_TEST (testset.erase(5) == 1); + BOOST_TEST (testset.empty() == true); + + //Now with a single bucket + typename unordered_multiset_type::bucket_type single_bucket[1]; + unordered_multiset_type testset2(bucket_traits( + pointer_traits:: + pointer_to(single_bucket[0]), 1)); + testset2.insert(&values[0], &values[0] + values.size()); + BOOST_TEST (testset2.erase(5) == 1); + BOOST_TEST (testset2.erase(2) == 2); + BOOST_TEST (testset2.erase(1) == 1); + BOOST_TEST (testset2.erase(4) == 1); + BOOST_TEST (testset2.erase(3) == 1); + BOOST_TEST (testset2.empty() == true); + } + } + { + //Now erase just one per loop + const int random_init[] = { 3, 2, 4, 1, 5, 2, 2 }; + const unsigned int random_size = sizeof(random_init)/sizeof(random_init[0]); + typename unordered_multiset_type::bucket_type single_bucket[1]; + for(unsigned int i = 0, max = random_size; i != max; ++i){ + std::vector data (random_size); + for (unsigned int j = 0; j < random_size; ++j) + data[j].value_ = random_init[j]; + unordered_multiset_type testset_new(bucket_traits( + pointer_traits:: + pointer_to(single_bucket[0]), 1)); + testset_new.insert(&data[0], &data[0]+max); + testset_new.erase(testset_new.iterator_to(data[i])); + BOOST_TEST (testset_new.size() == (max -1)); + } } } {