MultiLevelHashSet/Map<HP> - fixed GCC incompatibility
authorkhizmax <libcds.dev@gmail.com>
Sun, 23 Aug 2015 15:03:53 +0000 (18:03 +0300)
committerkhizmax <libcds.dev@gmail.com>
Sun, 23 Aug 2015 15:03:53 +0000 (18:03 +0300)
Added doc images

cds/container/impl/multilevel_hashmap.h
cds/intrusive/impl/multilevel_hashset.h
doxygen/cds.doxy
doxygen/image/multilevel_hashset.png [new file with mode: 0644]
doxygen/images.odp [new file with mode: 0644]
tests/test-hdr/map/hdr_multilevel_hashmap.h
tests/test-hdr/set/hdr_multilevel_hashset.h

index 4704240f8880c36ce638c62d214caf43cdd01025..a9e29f50488f180c06b7b197fcd4424d476526f2 100644 (file)
@@ -136,7 +136,6 @@ namespace cds { namespace container {
         class bidirectional_iterator: public base_class::iterator_base
         {
             friend class MultiLevelHashMap;
-            friend typename base_class;
             typedef typename base_class::iterator_base iterator_base;
 
         protected:
@@ -202,7 +201,7 @@ namespace cds { namespace container {
                 return !( *this == rhs );
             }
 
-        protected:
+        public: // for internal use only!
             bidirectional_iterator( base_class const& set, typename base_class::array_node * pNode, size_t idx, bool )
                 : iterator_base( set, pNode, idx, false )
             {}
@@ -217,7 +216,6 @@ namespace cds { namespace container {
         class reverse_bidirectional_iterator : public base_class::iterator_base
         {
             friend class MultiLevelHashMap;
-            friend typename base_class;
             typedef typename base_class::iterator_base iterator_base;
 
         public:
@@ -281,7 +279,7 @@ namespace cds { namespace container {
                 return !( *this == rhs );
             }
 
-        protected:
+        public: // for internal use only!
             reverse_bidirectional_iterator( base_class const& set, typename base_class::array_node * pNode, size_t idx, bool )
                 : iterator_base( set, pNode, idx, false )
             {}
index 4b22a47b2268027b79ad4ff93856c1d77e3d0ec7..c86c2f42541048fae564edf88aff02e12585ad26 100644 (file)
@@ -1360,7 +1360,7 @@ namespace cds { namespace intrusive {
             hash_type const& hash = hash_accessor()( val );
             hash_splitter splitter( hash );
             hash_comparator cmp;
-            typename gc::GuardArray<2> guards;
+            typename gc::template GuardArray<2> guards;
             back_off bkoff;
 
             array_node * pArr = m_Head;
index bebbae6e628ec765007cdfff49e656bee07b4412..e0e50cac442e399bf086f79ca70ed87e1164d7c1 100644 (file)
@@ -701,7 +701,7 @@ EXAMPLE_RECURSIVE      = NO
 # directories that contain image that are included in the documentation (see 
 # the \image command).
 
-IMAGE_PATH             = 
+IMAGE_PATH             = doxygen/image
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should 
 # invoke to filter for each input file. Doxygen will invoke the filter program 
diff --git a/doxygen/image/multilevel_hashset.png b/doxygen/image/multilevel_hashset.png
new file mode 100644 (file)
index 0000000..2df82c0
Binary files /dev/null and b/doxygen/image/multilevel_hashset.png differ
diff --git a/doxygen/images.odp b/doxygen/images.odp
new file mode 100644 (file)
index 0000000..db7fd56
Binary files /dev/null and b/doxygen/images.odp differ
index e5a7b71eb5a71370b85ddcb45747227d6ee0b963..1940486ede6b8f91fd862b855085ce809ac94137 100644 (file)
@@ -98,7 +98,7 @@ namespace map {
 
             size_t const capacity = 1000;
 
-            Map m;
+            Map m( nHeadBits, nArrayBits );
             CPPUNIT_MSG("Array size: head=" << m.head_size() << ", array_node=" << m.array_node_size());
             //CPPUNIT_ASSERT(m.head_size() >= (size_t(1) << nHeadBits));
             //CPPUNIT_ASSERT(m.array_node_size() == (size_t(1) << nArrayBits));
index b34a45048ebd9f82fb7aaefcce813fb2d15c3e3c..649a18a47c880f54b6216409b1496ee945bc0511 100644 (file)
@@ -129,7 +129,7 @@ namespace set {
         {
             typedef typename Set::hash_type hash_type;
             typedef typename Set::value_type value_type;
-            typedef typename Arg<hash_type> arg_type;
+            typedef Arg<hash_type> arg_type;
             typedef typename Set::guarded_ptr guarded_ptr;
 
             Hasher hasher;