FIxed aux node operations in SplitListSet
[libcds.git] / cds / intrusive / split_list_nogc.h
index f4f146f915e0b6b08af91428d6c697d00906b7b9..ef8acbe097077d2cec93acd87f6e24e2d4fbcbfb 100644 (file)
@@ -96,9 +96,9 @@ namespace cds { namespace intrusive {
             "cds::atomicity::empty_item_counter is not allowed as a item counter");
 
     protected:
+        //@cond
         typedef typename ordered_list::node_type  list_node_type;  ///< Node type as declared in ordered list
         typedef split_list::node<list_node_type>  node_type;       ///< split-list node type
-        typedef node_type                         aux_node_type; ///< dummy node type
 
         /// Split-list node traits
         /**
@@ -107,16 +107,17 @@ namespace cds { namespace intrusive {
         */
         typedef split_list::node_traits<typename ordered_list::node_traits>  node_traits;
 
-        //@cond
         /// Bucket table implementation
         typedef typename split_list::details::bucket_table_selector<
             traits::dynamic_bucket_table
             , gc
-            , aux_node_type
+            , node_type
             , opt::allocator< typename traits::allocator >
             , opt::memory_model< memory_model >
         >::type bucket_table;
 
+        typedef typename bucket_table::aux_node_type aux_node_type; ///< dummy node type
+
         typedef typename ordered_list::iterator list_iterator;
         typedef typename ordered_list::const_iterator list_const_iterator;
         //@endcond
@@ -704,10 +705,12 @@ namespace cds { namespace intrusive {
 
     protected:
         //@cond
-        typedef typename cds::details::type_padding< bucket_table, traits::padding >::type padded_bucket_table;
+        static unsigned const c_padding = cds::opt::actual_padding< traits::padding >::value;
+
+        typedef typename cds::details::type_padding< bucket_table, c_padding >::type padded_bucket_table;
         padded_bucket_table     m_Buckets;          ///< bucket table
 
-        typedef typename cds::details::type_padding< ordered_list_wrapper, traits::padding>::type padded_ordered_list;
+        typedef typename cds::details::type_padding< ordered_list_wrapper, c_padding >::type padded_ordered_list;
         padded_ordered_list     m_List;             ///< Ordered list containing split-list items
 
         atomics::atomic<size_t> m_nBucketCountLog2; ///< log2( current bucket count )