Added support for MS VC++ 2015
authorkhizmax <libcds.dev@gmail.com>
Mon, 14 Sep 2015 20:17:50 +0000 (23:17 +0300)
committerkhizmax <libcds.dev@gmail.com>
Mon, 14 Sep 2015 20:17:50 +0000 (23:17 +0300)
Removed deprecated functions ensure() and find(key) from tree unit tests

cds/compiler/vc/defs.h
cds/details/lib.h
projects/Win/vc14/hdr-test-striped-set.vcxproj
tests/test-hdr/set/hdr_cuckoo_set.cpp
tests/test-hdr/set/hdr_cuckoo_set.h
tests/test-hdr/set/hdr_intrusive_cuckoo_set.h
tests/test-hdr/set/hdr_intrusive_striped_set.h
tests/test-hdr/set/hdr_striped_set.h

index 9fe924f0c20e3da479ce844d915716765965cfc8..596a7a3d7a6bf068049872c5de833e8922591603 100644 (file)
 #if _MSC_VER == 1800
 #   define  CDS_COMPILER__NAME  "MS Visual C++ 2013"
 #   define  CDS_COMPILER__NICK  "vc12"
+#   define  CDS_COMPILER_LIBCDS_SUFFIX "vc12"
 #elif _MSC_VER == 1900
 #   define  CDS_COMPILER__NAME  "MS Visual C++ 2015"
 #   define  CDS_COMPILER__NICK  "vc14"
+#   define  CDS_COMPILER_LIBCDS_SUFFIX "vcv140"
 #else
 #   define  CDS_COMPILER__NAME  "MS Visual C++"
 #   define  CDS_COMPILER__NICK  "msvc"
+#   define  CDS_COMPILER_LIBCDS_SUFFIX "vc"
 #endif
 
 // OS interface
index e129e6c93dfe9f9c1ef2c35b57a5bd8165f1c18a..73b4f43bfee93abd37af1a3e70bc48f1c3215798 100644 (file)
@@ -15,9 +15,9 @@
 #endif
 
 #if CDS_COMPILER == CDS_COMPILER_MSVC
-#   pragma comment( lib, "libcds-" CDS_PROCESSOR__NICK "-" CDS_COMPILER__NICK CDS_LIB_DEBUG_SUFFIX )
+#   pragma comment( lib, "libcds-" CDS_PROCESSOR__NICK "-" CDS_COMPILER_LIBCDS_SUFFIX CDS_LIB_DEBUG_SUFFIX )
 #elif CDS_COMPILER == CDS_COMPILER_INTEL
-#   pragma comment( lib, "libcds-" CDS_PROCESSOR__NICK "-" CDS_COMPILER__NICK CDS_LIB_DEBUG_SUFFIX )
+#   pragma comment( lib, "libcds-" CDS_PROCESSOR__NICK "-" CDS_COMPILER_LIBCDS_SUFFIX CDS_LIB_DEBUG_SUFFIX )
 #endif
 
 #undef CDS_LIB_DEBUG_SUFFIX
index 22dfacebe3653d7881d3ce69aa31d2bae4ab8763..d7e2bde1cbeebc6bdae2fd5e125ff5e549a8fc13 100644 (file)
       <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\test-hdr;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\test-hdr;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\test-hdr;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>CDS_USE_VLD;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>CDS_USE_VLD;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <AdditionalOptions>/bigobj /Zc:inline %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\tests\test-hdr;$(SolutionDir)..\..\..\tests;$(BOOST_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>CDS_USE_VLD;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>CDS_USE_VLD;WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;_SCL_SECURE=0;%(PreprocessorDefinitions);_SCL_SECURE_NO_WARNINGS</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
index b88f6449dd7c81a957e930d88deda256e0341108..546d13934c93798e7c1b5f371815c14416cfa8d3 100644 (file)
@@ -13,11 +13,6 @@ namespace set {
         };
 
         typedef cc::CuckooSet< item, set_traits > set_t;
-        //     cc::cuckoo::make_traits<
-        //        co::equal_to< equal< item > >
-        //        ,co::hash< std::tuple< hash1, hash2 > >
-        //    >::type
-        //> set_t;
 
         test_int<set_t, equal< item > >();
     }
index 367429360a118b14a48ed27d36690b48ea07649d..58ea036ef9938c561893248d3e91193a0f7b4351 100644 (file)
@@ -29,8 +29,8 @@ namespace set {
         struct stat
         {
             unsigned int nFindCount     ;   // count of find-functor calling
-            unsigned int nEnsureNewCount;
-            unsigned int nEnsureCount;
+            unsigned int nUpdateNewCount;
+            unsigned int nUpdateCount;
 
             stat()
             {
@@ -40,8 +40,8 @@ namespace set {
             void copy( stat const& s )
             {
                 nFindCount = s.nFindCount;
-                nEnsureCount = s.nEnsureCount;
-                nEnsureNewCount = s.nEnsureNewCount;
+                nUpdateCount = s.nUpdateCount;
+                nUpdateNewCount = s.nUpdateNewCount;
             }
         };
 
@@ -306,20 +306,20 @@ namespace set {
         };
 
         template <typename Item, typename Q>
-        static void ensure_func( bool bNew, Item& i, Q& /*val*/ )
+        static void update_func( bool bNew, Item& i, Q& /*val*/ )
         {
             if ( bNew )
-                ++i.nEnsureNewCount;
+                ++i.nUpdateNewCount;
             else
-                ++i.nEnsureCount;
+                ++i.nUpdateCount;
         }
 
-        struct ensure_functor
+        struct update_functor
         {
             template <typename Item, typename Q>
             void operator()( bool bNew, Item& i, Q& val )
             {
-                ensure_func( bNew, i, val );
+                update_func( bNew, i, val );
             }
         };
 
@@ -332,22 +332,22 @@ namespace set {
             int key;
 
             // insert/find test
-            CPPUNIT_ASSERT( !s.find( 10 ) );
+            CPPUNIT_ASSERT( !s.contains( 10 ) );
             CPPUNIT_ASSERT( s.insert( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
-            CPPUNIT_ASSERT( s.find( 10 ) );
+            CPPUNIT_ASSERT( s.contains( 10 ) );
 
             CPPUNIT_ASSERT( !s.insert( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
 
-            CPPUNIT_ASSERT( !s.find_with( 20, pred ) );
+            CPPUNIT_ASSERT( !s.contains( 20, pred ) );
             CPPUNIT_ASSERT( s.insert( std::make_pair(20, 25) ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
-            CPPUNIT_ASSERT( s.find_with( 10, pred ) );
-            CPPUNIT_ASSERT( s.find( key = 20 ) );
+            CPPUNIT_ASSERT( s.contains( 10, pred ) );
+            CPPUNIT_ASSERT( s.contains( key = 20 ) );
             CPPUNIT_ASSERT( s.find_with( key, pred, find_functor() ) );
             {
                 copy_found<item> f;
@@ -368,7 +368,7 @@ namespace set {
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
 
-            CPPUNIT_ASSERT( !s.find( 25 ) );
+            CPPUNIT_ASSERT( !s.contains( 25 ) );
             CPPUNIT_ASSERT( s.insert( std::make_pair(25, -1), insert_functor() ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
@@ -380,18 +380,18 @@ namespace set {
                 CPPUNIT_ASSERT( f.m_found.nVal == 2500 );
             }
 
-            // ensure test
+            // update() test
             key = 10;
             {
                 copy_found<item> f;
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 10 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 0 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 0 );
             }
-            std::pair<bool, bool> ensureResult = s.ensure( key, ensure_functor() );
-            CPPUNIT_ASSERT( ensureResult.first && !ensureResult.second );
+            std::pair<bool, bool> updateResult = s.update( key, update_functor() );
+            CPPUNIT_ASSERT( updateResult.first && !updateResult.second );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
             {
@@ -399,12 +399,15 @@ namespace set {
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 10 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 1 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 1 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 0 );
             }
 
-            ensureResult = s.ensure( std::make_pair(13, 1300), ensure_functor() );
-            CPPUNIT_ASSERT( ensureResult.first && ensureResult.second );
+            updateResult = s.update(std::make_pair(13, 1300), update_functor(), false);
+            CPPUNIT_ASSERT(!updateResult.first && !updateResult.second);
+
+            updateResult = s.update( std::make_pair(13, 1300), update_functor() );
+            CPPUNIT_ASSERT( updateResult.first && updateResult.second );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 4 ));
             {
@@ -413,29 +416,29 @@ namespace set {
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 13 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 1300 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 0 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 1 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 1 );
             }
 
             // erase test
             CPPUNIT_ASSERT( s.erase(13) );
-            CPPUNIT_ASSERT( !s.find( 13 ));
+            CPPUNIT_ASSERT( !s.contains( 13 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
             CPPUNIT_ASSERT( !s.erase(13) );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
 
-            CPPUNIT_ASSERT( s.find( 10 ));
+            CPPUNIT_ASSERT( s.contains( 10 ));
             CPPUNIT_ASSERT( s.erase_with( 10, pred ));
-            CPPUNIT_ASSERT( !s.find( 10 ));
+            CPPUNIT_ASSERT( !s.contains( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
             CPPUNIT_ASSERT( !s.erase_with(10, pred) );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
 
-            CPPUNIT_ASSERT( s.find(20) );
+            CPPUNIT_ASSERT( s.contains(20) );
             {
                 copy_found<item> f;
                 CPPUNIT_ASSERT( s.erase( 20, std::ref( f ) ) );
@@ -447,7 +450,7 @@ namespace set {
                 CPPUNIT_ASSERT( f.m_found.nKey == 235 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 235 );
             }
-            CPPUNIT_ASSERT( !s.find( 20 ));
+            CPPUNIT_ASSERT( !s.contains( 20 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
 
@@ -462,9 +465,9 @@ namespace set {
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
 
-            CPPUNIT_ASSERT( s.find(151));
-            CPPUNIT_ASSERT( s.find_with(174, pred ));
-            CPPUNIT_ASSERT( s.find(190));
+            CPPUNIT_ASSERT( s.contains(151));
+            CPPUNIT_ASSERT( s.contains(174, pred ));
+            CPPUNIT_ASSERT( s.contains(190));
 
             {
                 copy_found<item> f;
index db09fd5eed0f87f777ef18177563083376d7339a..7965126e26f18bcef972c5ef61ada1cfa39a043b 100644 (file)
@@ -196,7 +196,7 @@ namespace set {
             }
         };
 
-        struct ensure_functor {
+        struct update_functor {
             template <typename Item>
             void operator()( bool bNew, Item& e, Item& arg )
             {
@@ -309,16 +309,16 @@ namespace set {
             CPPUNIT_ASSERT( s.empty() );
             CPPUNIT_ASSERT( s.size() == 0 );
 
-            CPPUNIT_ASSERT( !s.find(k1));
-            CPPUNIT_ASSERT( !s.find_with(k2, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type() ));
-            CPPUNIT_ASSERT( !s.find(k3));
+            CPPUNIT_ASSERT( !s.contains(k1));
+            CPPUNIT_ASSERT( !s.contains(k2, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type() ));
+            CPPUNIT_ASSERT( !s.contains(k3));
 
             CPPUNIT_ASSERT( s.insert(e1));
-            CPPUNIT_ASSERT( s.find(e1));
-            CPPUNIT_ASSERT( s.find(k1));
-            CPPUNIT_ASSERT( s.find_with(k1, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type()));
-            CPPUNIT_ASSERT( !s.find(e2));
-            CPPUNIT_ASSERT( !s.find(e3));
+            CPPUNIT_ASSERT( s.contains(e1));
+            CPPUNIT_ASSERT( s.contains(k1));
+            CPPUNIT_ASSERT( s.contains(k1, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type()));
+            CPPUNIT_ASSERT( !s.contains(e2));
+            CPPUNIT_ASSERT( !s.contains(e3));
 
             CPPUNIT_ASSERT( e2.nInsertCount == 0 );
             CPPUNIT_ASSERT( s.insert(e2, insert_functor() ));
@@ -346,7 +346,10 @@ namespace set {
 
             CPPUNIT_ASSERT( e3.nEnsureNewCount == 0 );
             CPPUNIT_ASSERT( e3.nEnsureCount == 0 );
-            CPPUNIT_ASSERT( s.ensure( e3, ensure_functor() ) == std::make_pair(true, true));
+            CPPUNIT_ASSERT(s.update(e3, update_functor(), false) == std::make_pair(false, false));
+            CPPUNIT_ASSERT(e3.nEnsureNewCount == 0);
+            CPPUNIT_ASSERT(e3.nEnsureCount == 0);
+            CPPUNIT_ASSERT( s.update( e3, update_functor() ) == std::make_pair(true, true));
             CPPUNIT_ASSERT( e3.nEnsureNewCount == 1 );
             CPPUNIT_ASSERT( e3.nEnsureCount == 0 );
             CPPUNIT_ASSERT( s.find_with(find_key(k1), typename std::conditional<Set::c_isSorted, less2, equal_to2>::type(), find_functor() ));
@@ -358,10 +361,10 @@ namespace set {
             CPPUNIT_ASSERT( s.find_with(k2, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type(), find_functor() ));
             CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 );
             CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
-            CPPUNIT_ASSERT( s.find_with(find_key(k2), typename std::conditional<Set::c_isSorted, less2, equal_to2>::type() ));
+            CPPUNIT_ASSERT( s.contains(find_key(k2), typename std::conditional<Set::c_isSorted, less2, equal_to2>::type() ));
             CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 )        ;   // unchanged, no find_functor
             CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
-            CPPUNIT_ASSERT( s.find_with(k3, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type() ));
+            CPPUNIT_ASSERT( s.contains(k3, typename std::conditional<Set::c_isSorted, less2, equal_to2>::type() ));
             CPPUNIT_ASSERT( e3.nFindCount == s3.nFindCount )            ;   // unchanged, no find_functor
             CPPUNIT_ASSERT( e3.nFindArgCount == s3.nFindArgCount );
             CPPUNIT_ASSERT( s.find_with(find_key(k3), typename std::conditional<Set::c_isSorted, less2, equal_to2>::type(), find_functor() ));
@@ -377,7 +380,7 @@ namespace set {
                 CPPUNIT_ASSERT( !s.insert( eu, insert_functor() ));
                 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
 
-                CPPUNIT_ASSERT( s.ensure( eu, ensure_functor()) == std::make_pair(true, false));
+                CPPUNIT_ASSERT( s.update( eu, update_functor()) == std::make_pair(true, false));
                 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
                 CPPUNIT_ASSERT( e2.nEnsureCount == s2.nEnsureCount + 1 );
                 CPPUNIT_ASSERT( e2.nEnsureNewCount == s2.nEnsureNewCount  );
@@ -447,14 +450,14 @@ namespace set {
                 CPPUNIT_ASSERT_EX( s.insert( *p, insert_functor() ), "i=" << i );
                 CPPUNIT_ASSERT_EX( p->nInsertCount == 1, "i=" << i );
                 //for ( size_t j = 0; j <= i; ++j ) {
-                //    if ( !s.find((int) j) ) {
+                //    if ( !s.contains((int) j) ) {
                 //        CPPUNIT_MSG( "Key " << j << " is not found after inserting key " << i );
                 //    }
                 //}
             }
 
             for ( size_t i = 0; i < nSize; ++i )
-                CPPUNIT_ASSERT_EX( s.find((int) i), "Key " << i << " is not found" );
+                CPPUNIT_ASSERT_EX( s.contains((int) i), "Key " << i << " is not found" );
 
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( s.size() == nSize );
index 36243a6580fe2a947331e3c2644e85bddb7775f0..a67f99cdc3a743e25e8bb5e4ca4534791a52f15c 100644 (file)
@@ -23,8 +23,8 @@ namespace set {
             unsigned int nFindCount     ;   // count of find-functor calling
             unsigned int nFindArgCount;
             unsigned int nInsertCount;
-            unsigned int nEnsureNewCount;
-            unsigned int nEnsureCount;
+            unsigned int nUpdateNewCount;
+            unsigned int nUpdateCount;
             unsigned int nEraseCount;
 
             stat()
@@ -196,16 +196,16 @@ namespace set {
             }
         };
 
-        struct ensure_functor {
+        struct update_functor {
             template <typename Item>
             void operator()( bool bNew, Item& e, Item& arg )
             {
                 if ( bNew ) {
-                    ++e.nEnsureNewCount;
+                    ++e.nUpdateNewCount;
                     CPPUNIT_ASSERT_CURRENT( &e == &arg );
                 }
                 else
-                    ++e.nEnsureCount;
+                    ++e.nUpdateCount;
             }
         };
 
@@ -286,15 +286,15 @@ namespace set {
             CPPUNIT_ASSERT( s.empty() );
             CPPUNIT_ASSERT( s.size() == 0 );
 
-            CPPUNIT_ASSERT( !s.find(k1));
-            CPPUNIT_ASSERT( !s.find(k2));
-            CPPUNIT_ASSERT( !s.find(k3));
+            CPPUNIT_ASSERT( !s.contains(k1));
+            CPPUNIT_ASSERT( !s.contains(k2));
+            CPPUNIT_ASSERT( !s.contains(k3));
 
             CPPUNIT_ASSERT( s.insert(e1));
-            CPPUNIT_ASSERT( s.find(e1));
-            CPPUNIT_ASSERT( s.find(k1));
-            CPPUNIT_ASSERT( !s.find(e2));
-            CPPUNIT_ASSERT( !s.find(e3));
+            CPPUNIT_ASSERT( s.contains(e1));
+            CPPUNIT_ASSERT( s.contains(k1));
+            CPPUNIT_ASSERT( !s.contains(e2));
+            CPPUNIT_ASSERT( !s.contains(e3));
 
             CPPUNIT_ASSERT( e2.nInsertCount == 0 );
             CPPUNIT_ASSERT( s.insert(e2, insert_functor() ));
@@ -320,11 +320,14 @@ namespace set {
 
             s1 = e1 ; s2 = e2 ; s3 = e3;
 
-            CPPUNIT_ASSERT( e3.nEnsureNewCount == 0 );
-            CPPUNIT_ASSERT( e3.nEnsureCount == 0 );
-            CPPUNIT_ASSERT( s.ensure( e3, ensure_functor() ) == std::make_pair(true, true));
-            CPPUNIT_ASSERT( e3.nEnsureNewCount == 1 );
-            CPPUNIT_ASSERT( e3.nEnsureCount == 0 );
+            CPPUNIT_ASSERT( e3.nUpdateNewCount == 0 );
+            CPPUNIT_ASSERT( e3.nUpdateCount == 0 );
+            CPPUNIT_ASSERT(s.update(e3, update_functor(), false) == std::make_pair(false, false));
+            CPPUNIT_ASSERT(e3.nUpdateNewCount == 0);
+            CPPUNIT_ASSERT(e3.nUpdateCount == 0);
+            CPPUNIT_ASSERT( s.update( e3, update_functor() ) == std::make_pair(true, true));
+            CPPUNIT_ASSERT( e3.nUpdateNewCount == 1 );
+            CPPUNIT_ASSERT( e3.nUpdateCount == 0 );
             CPPUNIT_ASSERT( s.find_with(find_key(k1), less2(), find_functor() ));
             CPPUNIT_ASSERT( e1.nFindCount == s1.nFindCount + 1 );
             CPPUNIT_ASSERT( e1.nFindArgCount == s1.nFindArgCount );
@@ -334,10 +337,10 @@ namespace set {
             CPPUNIT_ASSERT( s.find_with(k2, less2(), find_functor() ));
             CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 );
             CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
-            CPPUNIT_ASSERT( s.find_with(find_key(k2), less2() ));
+            CPPUNIT_ASSERT( s.contains(find_key(k2), less2() ));
             CPPUNIT_ASSERT( e2.nFindCount == s2.nFindCount + 1 )        ;   // unchanged, no find_functor
             CPPUNIT_ASSERT( e2.nFindArgCount == s2.nFindArgCount );
-            CPPUNIT_ASSERT( s.find_with(k3, less2() ));
+            CPPUNIT_ASSERT( s.contains(k3, less2() ));
             CPPUNIT_ASSERT( e3.nFindCount == s3.nFindCount )            ;   // unchanged, no find_functor
             CPPUNIT_ASSERT( e3.nFindArgCount == s3.nFindArgCount );
             CPPUNIT_ASSERT( s.find_with(find_key(k3), less2(), find_functor() ));
@@ -353,10 +356,10 @@ namespace set {
                 CPPUNIT_ASSERT( !s.insert( eu, insert_functor() ));
                 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
 
-                CPPUNIT_ASSERT( s.ensure( eu, ensure_functor()) == std::make_pair(true, false));
+                CPPUNIT_ASSERT( s.update( eu, update_functor()) == std::make_pair(true, false));
                 CPPUNIT_ASSERT( e2.nInsertCount == s2.nInsertCount );
-                CPPUNIT_ASSERT( e2.nEnsureCount == s2.nEnsureCount + 1 );
-                CPPUNIT_ASSERT( e2.nEnsureNewCount == s2.nEnsureNewCount  );
+                CPPUNIT_ASSERT( e2.nUpdateCount == s2.nUpdateCount + 1 );
+                CPPUNIT_ASSERT( e2.nUpdateNewCount == s2.nUpdateNewCount  );
             }
 
             s1 = e1 ; s2 = e2 ; s3 = e3;
@@ -423,14 +426,14 @@ namespace set {
                 CPPUNIT_ASSERT_EX( s.insert( *p, insert_functor() ), "i=" << i );
                 CPPUNIT_ASSERT_EX( p->nInsertCount == 1, "i=" << i );
                 //for ( size_t j = 0; j <= i; ++j ) {
-                //    if ( !s.find((int) j) ) {
+                //    if ( !s.contains((int) j) ) {
                 //        CPPUNIT_MSG( "Key " << j << " is not found after inserting key " << i );
                 //    }
                 //}
             }
 
             for ( size_t i = 0; i < nSize; ++i )
-                CPPUNIT_ASSERT_EX( s.find((int) i), "Key " << i << " is not found" );
+                CPPUNIT_ASSERT_EX( s.contains((int) i), "Key " << i << " is not found" );
 
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( s.size() == nSize );
index 3ff6a3c3cff96988aa120c21b3c9daeecb9dfa44..8964c5dcefdb6a1d94bb84cebd3c7c537497b67b 100644 (file)
@@ -29,8 +29,8 @@ namespace set {
         struct stat
         {
             unsigned int nFindCount     ;   // count of find-functor calling
-            unsigned int nEnsureNewCount;
-            unsigned int nEnsureCount;
+            unsigned int nUpdateNewCount;
+            unsigned int nUpdateCount;
 
             stat()
             {
@@ -40,8 +40,8 @@ namespace set {
             void copy( stat const& s )
             {
                 nFindCount = s.nFindCount;
-                nEnsureCount = s.nEnsureCount;
-                nEnsureNewCount = s.nEnsureNewCount;
+                nUpdateCount = s.nUpdateCount;
+                nUpdateNewCount = s.nUpdateNewCount;
             }
         };
 
@@ -294,20 +294,20 @@ namespace set {
         };
 
         template <typename Item, typename Q>
-        static void ensure_func( bool bNew, Item& i, Q& /*val*/ )
+        static void update_func( bool bNew, Item& i, Q& /*val*/ )
         {
             if ( bNew )
-                ++i.nEnsureNewCount;
+                ++i.nUpdateNewCount;
             else
-                ++i.nEnsureCount;
+                ++i.nUpdateCount;
         }
 
-        struct ensure_functor
+        struct update_functor
         {
             template <typename Item, typename Q>
             void operator()( bool bNew, Item& i, Q& val )
             {
-                ensure_func( bNew, i, val );
+                update_func( bNew, i, val );
             }
         };
 
@@ -346,22 +346,22 @@ namespace set {
             int key;
 
             // insert/find test
-            CPPUNIT_ASSERT( !s.find( 10 ) );
+            CPPUNIT_ASSERT( !s.contains( 10 ) );
             CPPUNIT_ASSERT( s.insert( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
-            CPPUNIT_ASSERT( s.find( 10 ) );
+            CPPUNIT_ASSERT( s.contains( 10 ) );
 
             CPPUNIT_ASSERT( !s.insert( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
 
-            CPPUNIT_ASSERT( !s.find( 20 ) );
+            CPPUNIT_ASSERT( !s.contains( 20 ) );
             CPPUNIT_ASSERT( s.insert( std::make_pair(20, 25) ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
-            CPPUNIT_ASSERT( s.find( 10 ) );
-            CPPUNIT_ASSERT( s.find( key = 20 ) );
+            CPPUNIT_ASSERT( s.contains( 10 ) );
+            CPPUNIT_ASSERT( s.contains( key = 20 ) );
             CPPUNIT_ASSERT( s.find( key, find_functor() ) );
             {
                 copy_found<item> f;
@@ -383,7 +383,7 @@ namespace set {
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
 
-            CPPUNIT_ASSERT( !s.find( 25 ) );
+            CPPUNIT_ASSERT( !s.contains( 25 ) );
             CPPUNIT_ASSERT( s.insert( std::make_pair(25, -1), insert_functor() ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
@@ -395,18 +395,18 @@ namespace set {
                 CPPUNIT_ASSERT( f.m_found.nVal == 2500 );
             }
 
-            // ensure test
+            // update() test
             key = 10;
             {
                 copy_found<item> f;
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 10 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 0 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 0 );
             }
-            std::pair<bool, bool> ensureResult = s.ensure( key, ensure_functor() );
-            CPPUNIT_ASSERT( ensureResult.first && !ensureResult.second );
+            std::pair<bool, bool> updateResult = s.update( key, update_functor() );
+            CPPUNIT_ASSERT( updateResult.first && !updateResult.second );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
             {
@@ -414,12 +414,14 @@ namespace set {
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 10 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 1 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 1 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 0 );
             }
 
-            ensureResult = s.ensure( std::make_pair(13, 1300), ensure_functor() );
-            CPPUNIT_ASSERT( ensureResult.first && ensureResult.second );
+            updateResult = s.update(std::make_pair(13, 1300), update_functor(), false);
+            CPPUNIT_ASSERT(!updateResult.first && !updateResult.second);
+            updateResult = s.update( std::make_pair(13, 1300), update_functor() );
+            CPPUNIT_ASSERT( updateResult.first && updateResult.second );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 4 ));
             {
@@ -428,29 +430,29 @@ namespace set {
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 13 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 1300 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 0 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 1 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 1 );
             }
 
             // erase test
             CPPUNIT_ASSERT( s.erase(13) );
-            CPPUNIT_ASSERT( !s.find( 13 ));
+            CPPUNIT_ASSERT( !s.contains( 13 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
             CPPUNIT_ASSERT( !s.erase(13) );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
 
-            CPPUNIT_ASSERT( s.find( 10 ));
+            CPPUNIT_ASSERT( s.contains( 10 ));
             CPPUNIT_ASSERT( s.erase( 10 ));
-            CPPUNIT_ASSERT( !s.find( 10 ));
+            CPPUNIT_ASSERT( !s.contains( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
             CPPUNIT_ASSERT( !s.erase(10) );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
 
-            CPPUNIT_ASSERT( s.find(20) );
+            CPPUNIT_ASSERT( s.contains(20) );
             {
                 copy_found<item> f;
                 CPPUNIT_ASSERT( s.erase( 20, std::ref( f ) ) );
@@ -462,7 +464,7 @@ namespace set {
                 CPPUNIT_ASSERT( f.m_found.nKey == 235 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 235 );
             }
-            CPPUNIT_ASSERT( !s.find( 20 ));
+            CPPUNIT_ASSERT( !s.contains( 20 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
 
@@ -477,9 +479,9 @@ namespace set {
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
 
-            CPPUNIT_ASSERT( s.find(151));
-            CPPUNIT_ASSERT( s.find(174));
-            CPPUNIT_ASSERT( s.find(190));
+            CPPUNIT_ASSERT( s.contains(151));
+            CPPUNIT_ASSERT( s.contains(174));
+            CPPUNIT_ASSERT( s.contains(190));
 
             {
                 copy_found<item> f;
@@ -538,22 +540,22 @@ namespace set {
             int key;
 
             // insert/find test
-            CPPUNIT_ASSERT( !s.find( 10 ) );
+            CPPUNIT_ASSERT( !s.contains( 10 ) );
             CPPUNIT_ASSERT( s.insert( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
-            CPPUNIT_ASSERT( s.find( 10 ) );
+            CPPUNIT_ASSERT( s.contains( 10 ) );
 
             CPPUNIT_ASSERT( !s.insert( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
 
-            CPPUNIT_ASSERT( !s.find_with( 20, less<value_type>() ) );
+            CPPUNIT_ASSERT( !s.contains( 20, less<value_type>() ) );
             CPPUNIT_ASSERT( s.insert( std::make_pair(20, 25) ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
-            CPPUNIT_ASSERT( s.find( 10 ) );
-            CPPUNIT_ASSERT( s.find_with( key = 20, less<value_type>() ) );
+            CPPUNIT_ASSERT( s.contains( 10 ) );
+            CPPUNIT_ASSERT( s.contains( key = 20, less<value_type>() ) );
             CPPUNIT_ASSERT( s.find_with( key, less<value_type>(), find_functor() ) );
             {
                 copy_found<item> f;
@@ -575,7 +577,7 @@ namespace set {
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
 
-            CPPUNIT_ASSERT( !s.find( 25 ) );
+            CPPUNIT_ASSERT( !s.contains( 25 ) );
             CPPUNIT_ASSERT( s.insert( std::make_pair(25, -1), insert_functor() ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
@@ -587,18 +589,18 @@ namespace set {
                 CPPUNIT_ASSERT( f.m_found.nVal == 2500 );
             }
 
-            // ensure test
+            // update() test
             key = 10;
             {
                 copy_found<item> f;
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 10 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 0 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 0 );
             }
-            std::pair<bool, bool> ensureResult = s.ensure( key, ensure_functor() );
-            CPPUNIT_ASSERT( ensureResult.first && !ensureResult.second );
+            std::pair<bool, bool> updateResult = s.update( key, update_functor() );
+            CPPUNIT_ASSERT( updateResult.first && !updateResult.second );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
             {
@@ -606,12 +608,14 @@ namespace set {
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 10 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 10 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 1 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 1 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 0 );
             }
 
-            ensureResult = s.ensure( std::make_pair(13, 1300), ensure_functor() );
-            CPPUNIT_ASSERT( ensureResult.first && ensureResult.second );
+            updateResult = s.update(std::make_pair(13, 1300), update_functor(), false);
+            CPPUNIT_ASSERT(!updateResult.first && !updateResult.second);
+            updateResult = s.update( std::make_pair(13, 1300), update_functor() );
+            CPPUNIT_ASSERT( updateResult.first && updateResult.second );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 4 ));
             {
@@ -620,29 +624,29 @@ namespace set {
                 CPPUNIT_ASSERT( s.find( key, std::ref( f ) ) );
                 CPPUNIT_ASSERT( f.m_found.nKey == 13 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 1300 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureCount == 0 );
-                CPPUNIT_ASSERT( f.m_found.nEnsureNewCount == 1 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateCount == 0 );
+                CPPUNIT_ASSERT( f.m_found.nUpdateNewCount == 1 );
             }
 
             // erase test
             CPPUNIT_ASSERT( s.erase(13) );
-            CPPUNIT_ASSERT( !s.find( 13 ));
+            CPPUNIT_ASSERT( !s.contains( 13 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
             CPPUNIT_ASSERT( !s.erase(13) );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
 
-            CPPUNIT_ASSERT( s.find( 10 ));
+            CPPUNIT_ASSERT( s.contains( 10 ));
             CPPUNIT_ASSERT( s.erase_with( 10, less<value_type>() ));
-            CPPUNIT_ASSERT( !s.find( 10 ));
+            CPPUNIT_ASSERT( !s.contains( 10 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
             CPPUNIT_ASSERT( !s.erase_with( 10, less<value_type>() ) );
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 2 ));
 
-            CPPUNIT_ASSERT( s.find(20) );
+            CPPUNIT_ASSERT( s.contains(20) );
             {
                 copy_found<item> f;
                 CPPUNIT_ASSERT( s.erase( 20, std::ref( f ) ) );
@@ -654,7 +658,7 @@ namespace set {
                 CPPUNIT_ASSERT( f.m_found.nKey == 235 );
                 CPPUNIT_ASSERT( f.m_found.nVal == 235 );
             }
-            CPPUNIT_ASSERT( !s.find( 20 ));
+            CPPUNIT_ASSERT( !s.contains( 20 ));
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 1 ));
 
@@ -669,9 +673,9 @@ namespace set {
             CPPUNIT_ASSERT( !s.empty() );
             CPPUNIT_ASSERT( check_size( s, 3 ));
 
-            CPPUNIT_ASSERT( s.find(151));
-            CPPUNIT_ASSERT( s.find(174));
-            CPPUNIT_ASSERT( s.find(190));
+            CPPUNIT_ASSERT( s.contains(151));
+            CPPUNIT_ASSERT( s.contains(174));
+            CPPUNIT_ASSERT( s.contains(190));
 
             {
                 copy_found<item> f;