Move skip_list_base.h from cds/container to cds/container/details
authorkhizmax <libcds.dev@gmail.com>
Sat, 27 Sep 2014 19:17:37 +0000 (23:17 +0400)
committerkhizmax <libcds.dev@gmail.com>
Sat, 27 Sep 2014 19:17:37 +0000 (23:17 +0400)
14 files changed:
cds/container/details/make_skip_list_map.h
cds/container/details/make_skip_list_set.h
cds/container/details/skip_list_base.h [new file with mode: 0644]
cds/container/skip_list_base.h [deleted file]
cds/container/skip_list_map_hp.h
cds/container/skip_list_map_hrc.h
cds/container/skip_list_map_ptb.h
cds/container/skip_list_map_rcu.h
cds/container/skip_list_set_hp.h
cds/container/skip_list_set_hrc.h
cds/container/skip_list_set_nogc.h
cds/container/skip_list_set_ptb.h
projects/Win/vc12/cds.vcxproj
projects/Win/vc12/cds.vcxproj.filters

index 69c72a4761fb39ff6b4984181c0107925c94c5f3..ae87e8a36f75180f1c66fccbfad64b5b40f93069 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_DETAILS_MAKE_SKIP_LIST_MAP_H
 #define __CDS_CONTAINER_DETAILS_MAKE_SKIP_LIST_MAP_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/details/binary_functor_wrapper.h>
 
 //@cond
index 061d24b603d4e6dcb7c96ce356743109c40668df..7f7392afeea1421a317d976235961a1fdbd42947 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_DETAILS_MAKE_SKIP_LIST_SET_H
 #define __CDS_CONTAINER_DETAILS_MAKE_SKIP_LIST_SET_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/details/binary_functor_wrapper.h>
 
 //@cond
diff --git a/cds/container/details/skip_list_base.h b/cds/container/details/skip_list_base.h
new file mode 100644 (file)
index 0000000..85499c0
--- /dev/null
@@ -0,0 +1,297 @@
+//$$CDS-header$$
+
+#ifndef __CDS_CONTAINER_DETAILS_SKIP_LIST_BASE_H
+#define __CDS_CONTAINER_DETAILS_SKIP_LIST_BASE_H
+
+#include <cds/intrusive/details/skip_list_base.h>
+#include <cds/container/details/base.h>
+
+namespace cds { namespace container {
+
+    /// SkipListSet related definitions
+    /** @ingroup cds_nonintrusive_helper
+    */
+    namespace skip_list {
+
+#ifdef CDS_DOXYGEN_INVOKED
+        /// Typedef for intrusive::skip_list::random_level_generator template
+        struct random_level_generator {};
+#else
+        using cds::intrusive::skip_list::random_level_generator;
+#endif
+
+#ifdef CDS_DOXYGEN_INVOKED
+        /// Typedef for intrusive::skip_list::xorshift class
+        class xorshift {};
+#else
+        using cds::intrusive::skip_list::xorshift;
+#endif
+
+#ifdef CDS_DOXYGEN_INVOKED
+        /// Typedef for intrusive::skip_list::turbo_pascal class
+        class turbo_pascal {};
+#else
+        using cds::intrusive::skip_list::turbo_pascal;
+#endif
+
+#ifdef CDS_DOXYGEN_INVOKED
+        /// Typedef for intrusive::skip_list::stat class
+        class stat {};
+#else
+        using cds::intrusive::skip_list::stat;
+#endif
+
+#ifdef CDS_DOXYGEN_INVOKED
+        /// Typedef for intrusive::skip_list::empty_stat class
+        class empty_stat {};
+#else
+        using cds::intrusive::skip_list::empty_stat;
+#endif
+
+        /// Type traits for SkipListSet class
+        struct type_traits
+        {
+            /// Key comparison functor
+            /**
+                No default functor is provided. If the option is not specified, the \p less is used.
+            */
+            typedef opt::none                       compare;
+
+            /// specifies binary predicate used for key compare.
+            /**
+                Default is \p std::less<T>.
+            */
+            typedef opt::none                       less;
+
+            /// Item counter
+            /**
+                The type for item counting feature.
+                Default is no item counter (\ref atomicity::empty_item_counter)
+            */
+            typedef atomicity::empty_item_counter     item_counter;
+
+            /// C++ memory ordering model
+            /**
+                List of available memory ordering see opt::memory_model
+            */
+            typedef opt::v::relaxed_ordering        memory_model;
+
+            /// Random level generator
+            /**
+                The random level generator is an important part of skip-list algorithm.
+                The node height in the skip-list have a probabilistic distribution
+                where half of the nodes that have level \p i also have level <tt>i+1</tt>
+                (i = 0..30). The height of a node is in range [0..31].
+
+                See skip_list::random_level_generator option setter.
+            */
+            typedef turbo_pascal                    random_level_generator;
+
+            /// Allocator for skip-list nodes, \p std::allocator interface
+            typedef CDS_DEFAULT_ALLOCATOR           allocator;
+
+            /// back-off strategy used
+            /**
+                If the option is not specified, the cds::backoff::Default is used.
+            */
+            typedef cds::backoff::Default           back_off;
+
+            /// Internal statistics
+            typedef empty_stat                      stat;
+
+            /// RCU deadlock checking policy (for \ref cds_nonintrusive_SkipListSet_rcu "RCU-based SkipListSet")
+            /**
+                List of available options see opt::rcu_check_deadlock
+            */
+            typedef opt::v::rcu_throw_deadlock      rcu_check_deadlock;
+
+            //@cond
+            // For internal use only
+            typedef opt::none                       key_accessor;
+            //@endcond
+        };
+
+        /// Metafunction converting option list to SkipListSet traits
+        /**
+            This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
+            \p Options list see \ref SkipListSet.
+        */
+        template <typename... Options>
+        struct make_traits {
+#   ifdef CDS_DOXYGEN_INVOKED
+            typedef implementation_defined type ;   ///< Metafunction result
+#   else
+            typedef typename cds::opt::make_options<
+                typename cds::opt::find_type_traits< type_traits, Options... >::type
+                ,Options...
+            >::type   type;
+#   endif
+        };
+
+        //@cond
+        namespace details {
+
+            template <typename Node, typename Traits>
+            class node_allocator
+            {
+            protected:
+                typedef Node node_type;
+                typedef Traits type_traits;
+
+                typedef typename node_type::tower_item_type node_tower_item;
+                typedef typename type_traits::allocator::template rebind<unsigned char>::other  tower_allocator_type;
+                typedef typename type_traits::allocator::template rebind<node_type>::other      node_allocator_type;
+
+                static size_t const c_nTowerItemSize = sizeof(node_tower_item);
+                static size_t const c_nNodePadding = sizeof(node_type) % c_nTowerItemSize;
+                static size_t const c_nNodeSize = sizeof(node_type) + (c_nNodePadding ? (c_nTowerItemSize - c_nNodePadding) : 0);
+
+                static CDS_CONSTEXPR size_t node_size( unsigned int nHeight ) CDS_NOEXCEPT
+                {
+                    return c_nNodeSize + (nHeight - 1) * c_nTowerItemSize;
+                }
+                static unsigned char * alloc_space( unsigned int nHeight )
+                {
+                    if ( nHeight > 1 ) {
+                        unsigned char * pMem = tower_allocator_type().allocate( node_size(nHeight) );
+
+                        // check proper alignments
+                        assert( (((uintptr_t) pMem) & (alignof(node_type) - 1)) == 0 );
+                        assert( (((uintptr_t) (pMem + c_nNodeSize)) & (alignof(node_tower_item) - 1)) == 0 );
+                        return pMem;
+                    }
+
+                    return reinterpret_cast<unsigned char *>( node_allocator_type().allocate(1));
+                }
+
+                static void free_space( unsigned char * p, unsigned int nHeight )
+                {
+                    assert( p != nullptr );
+                    if ( nHeight == 1 )
+                        node_allocator_type().deallocate( reinterpret_cast<node_type *>(p), 1 );
+                    else
+                        tower_allocator_type().deallocate( p, node_size(nHeight));
+                }
+
+            public:
+                template <typename Q>
+                node_type * New( unsigned int nHeight, Q const& v )
+                {
+                    unsigned char * pMem = alloc_space( nHeight );
+                    return new( pMem )
+                        node_type( nHeight, nHeight > 1 ? reinterpret_cast<node_tower_item *>(pMem + c_nNodeSize) : nullptr, v );
+                }
+
+                template <typename... Args>
+                node_type * New( unsigned int nHeight, Args&&... args )
+                {
+                    unsigned char * pMem = alloc_space( nHeight );
+                    return new( pMem )
+                        node_type( nHeight, nHeight > 1 ? reinterpret_cast<node_tower_item *>(pMem + c_nNodeSize) : nullptr,
+                        std::forward<Args>(args)... );
+                }
+
+                void Delete( node_type * p )
+                {
+                    assert( p != nullptr );
+
+                    unsigned int nHeight = p->height();
+                    node_allocator_type().destroy( p );
+                    free_space( reinterpret_cast<unsigned char *>(p), nHeight );
+                }
+            };
+
+            template <typename IntrusiveNode>
+            struct dummy_node_builder {
+                typedef IntrusiveNode intrusive_node_type;
+
+                template <typename RandomGen>
+                static intrusive_node_type * make_tower( intrusive_node_type * pNode, RandomGen& /*gen*/ ) { return pNode ; }
+                static intrusive_node_type * make_tower( intrusive_node_type * pNode, unsigned int /*nHeight*/ ) { return pNode ; }
+                static void dispose_tower( intrusive_node_type * pNode )
+                {
+                    pNode->release_tower();
+                }
+
+                struct node_disposer {
+                    void operator()( intrusive_node_type * pNode ) const {}
+                };
+            };
+
+            template <typename ForwardIterator>
+            class iterator
+            {
+                typedef ForwardIterator intrusive_iterator;
+                typedef typename intrusive_iterator::value_type node_type;
+                typedef typename node_type::stored_value_type   value_type;
+                static bool const c_isConst = intrusive_iterator::c_isConst;
+
+                typedef typename std::conditional< c_isConst, value_type const &, value_type &>::type   value_ref;
+
+                intrusive_iterator      m_It;
+
+            public: // for internal use only!!!
+                iterator( intrusive_iterator const& it )
+                    : m_It( it )
+                {}
+
+            public:
+                iterator()
+                    : m_It()
+                {}
+
+                iterator( iterator const& s)
+                    : m_It( s.m_It )
+                {}
+
+                value_type * operator ->() const
+                {
+                    return &( m_It.operator->()->m_Value );
+                }
+
+                value_ref operator *() const
+                {
+                    return m_It.operator*().m_Value;
+                }
+
+                /// Pre-increment
+                iterator& operator ++()
+                {
+                    ++m_It;
+                    return *this;
+                }
+
+                iterator& operator = (iterator const& src)
+                {
+                    m_It = src.m_It;
+                    return *this;
+                }
+
+                template <typename FwIt>
+                bool operator ==(iterator<FwIt> const& i ) const
+                {
+                    return m_It == i.m_It;
+                }
+                template <typename FwIt>
+                bool operator !=(iterator<FwIt> const& i ) const
+                {
+                    return !( *this == i );
+                }
+            };
+
+        } // namespace details
+        //@endcond
+
+    } // namespace skip_list
+
+    // Forward declaration
+    template <class GC, typename T, typename Traits = skip_list::type_traits >
+    class SkipListSet;
+
+    // Forward declaration
+    template <class GC, typename K, typename T, typename Traits = skip_list::type_traits >
+    class SkipListMap;
+
+}} // namespace cds::container
+
+#endif // #ifndef __CDS_CONTAINER_DETAILS_SKIP_LIST_BASE_H
diff --git a/cds/container/skip_list_base.h b/cds/container/skip_list_base.h
deleted file mode 100644 (file)
index eabe751..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-//$$CDS-header$$
-
-#ifndef __CDS_CONTAINER_SKIP_LIST_BASE_H
-#define __CDS_CONTAINER_SKIP_LIST_BASE_H
-
-#include <cds/intrusive/details/skip_list_base.h>
-#include <cds/container/details/base.h>
-
-namespace cds { namespace container {
-
-    /// SkipListSet related definitions
-    /** @ingroup cds_nonintrusive_helper
-    */
-    namespace skip_list {
-
-#ifdef CDS_DOXYGEN_INVOKED
-        /// Typedef for intrusive::skip_list::random_level_generator template
-        struct random_level_generator {};
-#else
-        using cds::intrusive::skip_list::random_level_generator;
-#endif
-
-#ifdef CDS_DOXYGEN_INVOKED
-        /// Typedef for intrusive::skip_list::xorshift class
-        class xorshift {};
-#else
-        using cds::intrusive::skip_list::xorshift;
-#endif
-
-#ifdef CDS_DOXYGEN_INVOKED
-        /// Typedef for intrusive::skip_list::turbo_pascal class
-        class turbo_pascal {};
-#else
-        using cds::intrusive::skip_list::turbo_pascal;
-#endif
-
-#ifdef CDS_DOXYGEN_INVOKED
-        /// Typedef for intrusive::skip_list::stat class
-        class stat {};
-#else
-        using cds::intrusive::skip_list::stat;
-#endif
-
-#ifdef CDS_DOXYGEN_INVOKED
-        /// Typedef for intrusive::skip_list::empty_stat class
-        class empty_stat {};
-#else
-        using cds::intrusive::skip_list::empty_stat;
-#endif
-
-        /// Type traits for SkipListSet class
-        struct type_traits
-        {
-            /// Key comparison functor
-            /**
-                No default functor is provided. If the option is not specified, the \p less is used.
-            */
-            typedef opt::none                       compare;
-
-            /// specifies binary predicate used for key compare.
-            /**
-                Default is \p std::less<T>.
-            */
-            typedef opt::none                       less;
-
-            /// Item counter
-            /**
-                The type for item counting feature.
-                Default is no item counter (\ref atomicity::empty_item_counter)
-            */
-            typedef atomicity::empty_item_counter     item_counter;
-
-            /// C++ memory ordering model
-            /**
-                List of available memory ordering see opt::memory_model
-            */
-            typedef opt::v::relaxed_ordering        memory_model;
-
-            /// Random level generator
-            /**
-                The random level generator is an important part of skip-list algorithm.
-                The node height in the skip-list have a probabilistic distribution
-                where half of the nodes that have level \p i also have level <tt>i+1</tt>
-                (i = 0..30). The height of a node is in range [0..31].
-
-                See skip_list::random_level_generator option setter.
-            */
-            typedef turbo_pascal                    random_level_generator;
-
-            /// Allocator for skip-list nodes, \p std::allocator interface
-            typedef CDS_DEFAULT_ALLOCATOR           allocator;
-
-            /// back-off strategy used
-            /**
-                If the option is not specified, the cds::backoff::Default is used.
-            */
-            typedef cds::backoff::Default           back_off;
-
-            /// Internal statistics
-            typedef empty_stat                      stat;
-
-            /// RCU deadlock checking policy (for \ref cds_nonintrusive_SkipListSet_rcu "RCU-based SkipListSet")
-            /**
-                List of available options see opt::rcu_check_deadlock
-            */
-            typedef opt::v::rcu_throw_deadlock      rcu_check_deadlock;
-
-            //@cond
-            // For internal use only
-            typedef opt::none                       key_accessor;
-            //@endcond
-        };
-
-        /// Metafunction converting option list to SkipListSet traits
-        /**
-            This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
-            \p Options list see \ref SkipListSet.
-        */
-        template <typename... Options>
-        struct make_traits {
-#   ifdef CDS_DOXYGEN_INVOKED
-            typedef implementation_defined type ;   ///< Metafunction result
-#   else
-            typedef typename cds::opt::make_options<
-                typename cds::opt::find_type_traits< type_traits, Options... >::type
-                ,Options...
-            >::type   type;
-#   endif
-        };
-
-        //@cond
-        namespace details {
-
-            template <typename Node, typename Traits>
-            class node_allocator
-            {
-            protected:
-                typedef Node node_type;
-                typedef Traits type_traits;
-
-                typedef typename node_type::tower_item_type node_tower_item;
-                typedef typename type_traits::allocator::template rebind<unsigned char>::other  tower_allocator_type;
-                typedef typename type_traits::allocator::template rebind<node_type>::other      node_allocator_type;
-
-                static size_t const c_nTowerItemSize = sizeof(node_tower_item);
-                static size_t const c_nNodePadding = sizeof(node_type) % c_nTowerItemSize;
-                static size_t const c_nNodeSize = sizeof(node_type) + (c_nNodePadding ? (c_nTowerItemSize - c_nNodePadding) : 0);
-
-                static CDS_CONSTEXPR size_t node_size( unsigned int nHeight ) CDS_NOEXCEPT
-                {
-                    return c_nNodeSize + (nHeight - 1) * c_nTowerItemSize;
-                }
-                static unsigned char * alloc_space( unsigned int nHeight )
-                {
-                    if ( nHeight > 1 ) {
-                        unsigned char * pMem = tower_allocator_type().allocate( node_size(nHeight) );
-
-                        // check proper alignments
-                        assert( (((uintptr_t) pMem) & (alignof(node_type) - 1)) == 0 );
-                        assert( (((uintptr_t) (pMem + c_nNodeSize)) & (alignof(node_tower_item) - 1)) == 0 );
-                        return pMem;
-                    }
-
-                    return reinterpret_cast<unsigned char *>( node_allocator_type().allocate(1));
-                }
-
-                static void free_space( unsigned char * p, unsigned int nHeight )
-                {
-                    assert( p != nullptr );
-                    if ( nHeight == 1 )
-                        node_allocator_type().deallocate( reinterpret_cast<node_type *>(p), 1 );
-                    else
-                        tower_allocator_type().deallocate( p, node_size(nHeight));
-                }
-
-            public:
-                template <typename Q>
-                node_type * New( unsigned int nHeight, Q const& v )
-                {
-                    unsigned char * pMem = alloc_space( nHeight );
-                    return new( pMem )
-                        node_type( nHeight, nHeight > 1 ? reinterpret_cast<node_tower_item *>(pMem + c_nNodeSize) : nullptr, v );
-                }
-
-                template <typename... Args>
-                node_type * New( unsigned int nHeight, Args&&... args )
-                {
-                    unsigned char * pMem = alloc_space( nHeight );
-                    return new( pMem )
-                        node_type( nHeight, nHeight > 1 ? reinterpret_cast<node_tower_item *>(pMem + c_nNodeSize) : nullptr,
-                        std::forward<Args>(args)... );
-                }
-
-                void Delete( node_type * p )
-                {
-                    assert( p != nullptr );
-
-                    unsigned int nHeight = p->height();
-                    node_allocator_type().destroy( p );
-                    free_space( reinterpret_cast<unsigned char *>(p), nHeight );
-                }
-            };
-
-            template <typename IntrusiveNode>
-            struct dummy_node_builder {
-                typedef IntrusiveNode intrusive_node_type;
-
-                template <typename RandomGen>
-                static intrusive_node_type * make_tower( intrusive_node_type * pNode, RandomGen& /*gen*/ ) { return pNode ; }
-                static intrusive_node_type * make_tower( intrusive_node_type * pNode, unsigned int /*nHeight*/ ) { return pNode ; }
-                static void dispose_tower( intrusive_node_type * pNode )
-                {
-                    pNode->release_tower();
-                }
-
-                struct node_disposer {
-                    void operator()( intrusive_node_type * pNode ) const {}
-                };
-            };
-
-            template <typename ForwardIterator>
-            class iterator
-            {
-                typedef ForwardIterator intrusive_iterator;
-                typedef typename intrusive_iterator::value_type node_type;
-                typedef typename node_type::stored_value_type   value_type;
-                static bool const c_isConst = intrusive_iterator::c_isConst;
-
-                typedef typename std::conditional< c_isConst, value_type const &, value_type &>::type   value_ref;
-
-                intrusive_iterator      m_It;
-
-            public: // for internal use only!!!
-                iterator( intrusive_iterator const& it )
-                    : m_It( it )
-                {}
-
-            public:
-                iterator()
-                    : m_It()
-                {}
-
-                iterator( iterator const& s)
-                    : m_It( s.m_It )
-                {}
-
-                value_type * operator ->() const
-                {
-                    return &( m_It.operator->()->m_Value );
-                }
-
-                value_ref operator *() const
-                {
-                    return m_It.operator*().m_Value;
-                }
-
-                /// Pre-increment
-                iterator& operator ++()
-                {
-                    ++m_It;
-                    return *this;
-                }
-
-                iterator& operator = (iterator const& src)
-                {
-                    m_It = src.m_It;
-                    return *this;
-                }
-
-                template <typename FwIt>
-                bool operator ==(iterator<FwIt> const& i ) const
-                {
-                    return m_It == i.m_It;
-                }
-                template <typename FwIt>
-                bool operator !=(iterator<FwIt> const& i ) const
-                {
-                    return !( *this == i );
-                }
-            };
-
-        } // namespace details
-        //@endcond
-
-    } // namespace skip_list
-
-    // Forward declaration
-    template <class GC, typename T, typename Traits = skip_list::type_traits >
-    class SkipListSet;
-
-    // Forward declaration
-    template <class GC, typename K, typename T, typename Traits = skip_list::type_traits >
-    class SkipListMap;
-
-}} // namespace cds::container
-
-#endif // #ifndef __CDS_CONTAINER_SKIP_LIST_BASE_H
index 7665aa537f95e3bef13c8ba4d1077659c2aa74e5..2db501575466ad80b568030b99463755d4e401e8 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_MAP_HP_H
 #define __CDS_CONTAINER_SKIP_LIST_MAP_HP_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_hp.h>
 #include <cds/container/details/make_skip_list_map.h>
 #include <cds/container/skip_list_map_impl.h>
index 53d230e97905e268ae0ce94ca23e3d1e1da6c61a..c573d096e7a16c84ded59e52fc97b9b8e09d37e5 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_MAP_HRC_H
 #define __CDS_CONTAINER_SKIP_LIST_MAP_HRC_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_hrc.h>
 #include <cds/container/details/make_skip_list_map.h>
 #include <cds/container/skip_list_map_impl.h>
index 60cda768df84fc4fd6f57d9c642607b5e554023e..64536b4939b680094c0f800bbea24cb70ac33fad 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_SET_PTB_H
 #define __CDS_CONTAINER_SKIP_LIST_SET_PTB_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_ptb.h>
 #include <cds/container/details/make_skip_list_map.h>
 #include <cds/container/skip_list_map_impl.h>
index b8e96ec14e3f95e1cceedec34a6d99f33064ace2..cc8b9919526a7d761e850996326b9ea8be3b1a5c 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_MAP_RCU_H
 #define __CDS_CONTAINER_SKIP_LIST_MAP_RCU_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_rcu.h>
 #include <cds/container/details/make_skip_list_map.h>
 #include <cds/details/functor_wrapper.h>
index 4cd3cd0c7680e657cff95a08a311cb29fe424328..07b27084f89790d46e20d56e1fcc173aefca71de 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_SET_HP_H
 #define __CDS_CONTAINER_SKIP_LIST_SET_HP_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_hp.h>
 #include <cds/container/details/make_skip_list_set.h>
 #include <cds/container/skip_list_set_impl.h>
index 4b40362dcb340a7a4693278fe80cd30d4ca91bda..8ef44a91383694326a7e8c4b764693c977a8a267 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_SET_HRC_H
 #define __CDS_CONTAINER_SKIP_LIST_SET_HRC_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_hrc.h>
 #include <cds/container/details/make_skip_list_set.h>
 #include <cds/container/skip_list_set_impl.h>
index 1aaf6b9867b3e9405322072e891c8bb0e9b6a9e0..ae83672bab812138fccdd1cc1ab404855576d5e1 100644 (file)
@@ -4,7 +4,7 @@
 #define __CDS_CONTAINER_SKIP_LIST_SET_NOGC_H
 
 #include <cds/intrusive/skip_list_nogc.h>
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/details/binary_functor_wrapper.h>
 #include <cds/gc/nogc.h>
 #include <cds/details/allocator.h>
index 502bbcc8940d6c5117a12ae682ea764bc0e8dfc7..f539e41ce33e1175fa5a1c1bcc1341965fe895f3 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef __CDS_CONTAINER_SKIP_LIST_MAP_PTB_H
 #define __CDS_CONTAINER_SKIP_LIST_MAP_PTB_H
 
-#include <cds/container/skip_list_base.h>
+#include <cds/container/details/skip_list_base.h>
 #include <cds/intrusive/skip_list_ptb.h>
 #include <cds/container/details/make_skip_list_set.h>
 #include <cds/container/skip_list_set_impl.h>
index 3acd3fe59ad33fd1e4cf023f04c00d448846e262..48fcf3d4a86f271aabe9da1f79074fe82cc235bc 100644 (file)
     <ClInclude Include="..\..\..\cds\container\details\michael_list_base.h" />\r
     <ClInclude Include="..\..\..\cds\container\details\michael_map_base.h" />\r
     <ClInclude Include="..\..\..\cds\container\details\michael_set_base.h" />\r
+    <ClInclude Include="..\..\..\cds\container\details\skip_list_base.h" />\r
     <ClInclude Include="..\..\..\cds\container\ellen_bintree_map_hp.h" />\r
     <ClInclude Include="..\..\..\cds\container\ellen_bintree_map_ptb.h" />\r
     <ClInclude Include="..\..\..\cds\container\ellen_bintree_map_rcu.h" />\r
     <ClInclude Include="..\..\..\cds\container\michael_map_rcu.h" />\r
     <ClInclude Include="..\..\..\cds\container\michael_set_rcu.h" />\r
     <ClInclude Include="..\..\..\cds\container\mspriority_queue.h" />\r
-    <ClInclude Include="..\..\..\cds\container\skip_list_base.h" />\r
     <ClInclude Include="..\..\..\cds\container\skip_list_map_hp.h" />\r
     <ClInclude Include="..\..\..\cds\container\skip_list_map_hrc.h" />\r
     <ClInclude Include="..\..\..\cds\container\skip_list_map_impl.h" />\r
index 821a2153f76524887558d7cd1f7f11bc25caa0f0..209f65a7a18472cb219888292208293661077462 100644 (file)
     <ClInclude Include="..\..\..\cds\intrusive\skip_list_ptb.h">\r
       <Filter>Header Files\cds\intrusive</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="..\..\..\cds\container\skip_list_base.h">\r
-      <Filter>Header Files\cds\container</Filter>\r
-    </ClInclude>\r
     <ClInclude Include="..\..\..\cds\container\skip_list_set_hp.h">\r
       <Filter>Header Files\cds\container</Filter>\r
     </ClInclude>\r
     <ClInclude Include="..\..\..\cds\container\details\michael_set_base.h">\r
       <Filter>Header Files\cds\container\details</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\..\..\cds\container\details\skip_list_base.h">\r
+      <Filter>Header Files\cds\container\details</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file