fix docs
authorkhizmax <libcds.dev@gmail.com>
Fri, 3 Oct 2014 20:42:00 +0000 (00:42 +0400)
committerkhizmax <libcds.dev@gmail.com>
Fri, 3 Oct 2014 20:42:00 +0000 (00:42 +0400)
cds/container/treiber_stack.h
cds/cxx11_atomic.h
cds/intrusive/treiber_stack.h
cds/os/posix/thread.h
cds/os/win/thread.h

index 32954b7e11c32ce53a846fe79087c0e8f91bef06..5176e8ce8579f4aa51936511ed88ff93fa912a3f 100644 (file)
@@ -9,10 +9,13 @@
 
 namespace cds { namespace container {
 
+    /// TreiberStack related definitions
+    /** @ingroup cds_nonintrusive_helper
+    */
     namespace treiber_stack {
         /// Internal statistics
         template <typename Counter = cds::atomicity::event_counter>
-        using stat = cds::intrusive::treiber_stack::stat < Counter >;
+        using stat = cds::intrusive::treiber_stack::stat< Counter >;
 
         /// Dummy internal statistics
         typedef cds::intrusive::treiber_stack::empty_stat empty_stat;
@@ -33,15 +36,15 @@ namespace cds { namespace container {
             */
             typedef opt::v::relaxed_ordering    memory_model;
 
-            /// Item counting feature; by default, disabled
+            /// Item counting feature; by default, disabled. Use \p cds::atomicity::item_counter to enable item counting
             typedef cds::atomicity::empty_item_counter  item_counter;
 
             /// Internal statistics (by default, no internal statistics)
             /**
-                Possible option value are: \ref treiber_stack::stat, \ref treiber_stack::empty_stat (the default),
+                Possible types are: \ref treiber_stack::stat, \ref treiber_stack::empty_stat (the default),
                 user-provided class that supports treiber_stack::stat interface.
             */
-            typedef empty_stat                          stat;
+            typedef empty_stat stat;
 
             /** @name Elimination back-off traits
                 The following traits is used only if elimination enabled
@@ -80,10 +83,11 @@ namespace cds { namespace container {
             - opt::back_off - back-off strategy used. If the option is not specified, the \p cds::backoff::Default is used.
             - opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
-            - opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter
+            - opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter, i.e.
+                no item counting. Use \p cds::atomicity::item_counter to enable item counting.
             - opt::stat - the type to gather internal statistics.
                 Possible option value are: \p treiber_stack::stat, \p treiber_stack::empty_stat (the default),
-                user-provided class that supports \p treiber_stack::stat interface.
+                user-provided class that supports \p %treiber_stack::stat interface.
             - opt::enable_elimination - enable elimination back-off for the stack. Default value is \p false.
 
             If elimination back-off is enabled, additional options can be specified:
@@ -154,7 +158,7 @@ namespace cds { namespace container {
             typedef intrusive::TreiberStack< gc, node_type, intrusive_traits > type;
         };
     } // namespace details
-    //@endecond
+    //@endcond
 
     /// Treiber's stack algorithm
     /** @ingroup cds_nonintrusive_stack
@@ -162,15 +166,24 @@ namespace cds { namespace container {
         intrusive::TreiberStack.
 
         Template arguments:
-        - \p GC - garbage collector type: gc::HP, gc::PTB
-        - \p T - type stored in the stack. It should be default-constructible, copy-constructible, assignable type.
+        - \p GC - garbage collector type: \p gc::HP, gc::DHP
+        - \p T - type stored in the stack.
         - \p Traits - stack traits, default is \p treiber_stack::traits. You can use \p treiber_stack::make_traits
             metafunction to make your traits or just derive your traits from \p %treiber_stack::traits:
             \code
             struct myTraits: public cds::container::treiber_stack::traits {
-                typedef cds::container::treiber_stack::stat<> stat;
+                typedef cds::intrusive::treiber_stack::stat<> stat;
+                typedef cds::atomicity::item_counter  item_counter;
             };
             typedef cds::container::TreiberStack< cds::gc::HP, Foo, myTraits > myStack;
+
+            // Equivalent make_traits example:
+            typedef cds::intrusive::TreiberStack< cds::gc::HP, Foo, 
+                typename cds::intrusive::treiber_stack::make_traits<
+                    cds::opt::item_counter< cds::atomicity::item_counter >,
+                    cds::opt::stat< cds::intrusive::treiber_stack::stat<> >
+                >::type
+            > myStack;
             \endcode
     */
     template < 
@@ -364,5 +377,4 @@ namespace cds { namespace container {
 
 }}  // namespace cds::container
 
-
 #endif // #ifndef __CDS_CONTAINER_TREIBER_STACK_H
index 53f497dbbb30c5d2023a1e9eecdca64ef04989c3..bc33866ed66ec09ceee3fba965d5466b077d7d72 100644 (file)
@@ -10,7 +10,7 @@ namespace cds {
 /// C++11 Atomic library support
 /**
     \p libcds can use the following implementations of the atomics:
-    - STL <tt><atomic></tt>. This is used by default
+    - STL \p &lt;atomic&gt;. This is used by default
     - \p boost.atomic for boost 1.54 and above. To use it you should define \p CDS_USE_BOOST_ATOMIC for
       your compiler invocation, for example, for gcc specify \p -DCDS_USE_BOOST_ATOMIC
       in command line
@@ -22,13 +22,13 @@ namespace cds {
       ia64 (Itanium) 64bit, 64bit Sparc. To use \p libcds atomic you should define \p CDS_USE_LIBCDS_ATOMIC
       in the compiler command line (\p -DCDS_USE_LIBCDS_ATOMIC for gcc/clang).
 
-      @note For Clang compiler \p libcds do not use compiler-provided <tt><atomic></tt> due some problems.
+      @note For Clang compiler \p libcds do not use compiler-provided \p &lt;atomic&gt; due some problems.
       Instead, \p libcds atomic is used by default, or you can try to use \p boost.atomic.
 
       The library defines \p atomics alias for atomic namespace:
       - <tt>namespace atomics = std</tt> for STL
       - <tt>namespace atomics = boost</tt> for \p boost.atomic
-      - <tt>namespace atomics = cds::cxx11_atomic for library-provided atomic implementation
+      - <tt>namespace atomics = cds::cxx11_atomic</tt> for library-provided atomic implementation
 */
 namespace cxx11_atomic {
 }} // namespace cds::cxx11_atomic
index 25787ac485792f90bd585e6cdb1db66c971c2640..3b0175127c6b45936dcc6d87bbf85b344330ea2d 100644 (file)
@@ -154,8 +154,8 @@ namespace cds { namespace intrusive {
             /// The functor used for dispose removed items. Default is opt::v::empty_disposer. This option is used only in \ref TreiberStack::clear function
             typedef opt::v::empty_disposer          disposer;
 
-            /// Item counting feature; by default, disabled
-            typedef cds::atomicity::empty_item_counter   item_counter;   
+            /// Item counting feature; by default, disabled. Use \p cds::atomicity::item_counter to enable item counting
+            typedef cds::atomicity::empty_item_counter   item_counter;
 
             /// C++ memory ordering model
             /** 
@@ -208,7 +208,7 @@ namespace cds { namespace intrusive {
             This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
             Supported \p Options are:
 
-            - opt::hook - hook used. Possible values are: treiber_stack::base_hook, treiber_stack::member_hook, treiber_stack::traits_hook.
+            - opt::hook - hook used. Possible values are: \p treiber_stack::base_hook, \p treiber_stack::member_hook, \p treiber_stack::traits_hook.
                 If the option is not specified, \p %treiber_stack::base_hook<> is used.
             - opt::back_off - back-off strategy used. If the option is not specified, the \p cds::backoff::Default is used.
             - opt::disposer - the functor used for dispose removed items. Default is \p opt::v::empty_disposer. This option is used only
@@ -216,7 +216,8 @@ namespace cds { namespace intrusive {
             - opt::link_checker - the type of node's link fields checking. Default is \ref opt::debug_check_link.
             - opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consisnent memory model).
-            - opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter
+            - opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter, i.e.
+                no item counting. Use \p cds::atomicity::item_counter to enable item counting.
             - opt::stat - the type to gather internal statistics.
                 Possible option value are: \p treiber_stack::stat, \p treiber_stack::empty_stat (the default),
                 user-provided class that supports \p treiber_stack::stat interface.
@@ -423,9 +424,9 @@ namespace cds { namespace intrusive {
         This approach demonstrates sufficient performance under high load.
 
         Template arguments:
-        - \p GC - garbage collector type: gc::HP, gc::PTB. 
-            Garbage collecting schema must be consistent with the \p treiber_stack::node GC.
-        - \p T - type to be inserted into the stack
+        - \p GC - garbage collector type: \p gc::HP, gc::DHP.
+            Garbage collecting schema must be the same as \p treiber_stack::node GC.
+        - \p T - a type the stack contains
         - \p Traits - stack traits, default is \p treiber_stack::traits. You can use \p treiber_stack::make_traits
             metafunction to make your traits or just derive your traits from \p %treiber_stack::traits:
             \code
@@ -533,7 +534,7 @@ namespace cds { namespace intrusive {
         \endcode
 
         Example of how to use \p treiber_stack::member_hook.
-        Your class that will be pushed on \p %TreiberStack should have a member of type \p treiber_stack::node
+        Your class should have a member of type \p treiber_stack::node
         \code
         #include <stddef.h>     // offsetof macro
         #include <cds/intrusive/treiber_stack.h>
index d8220dcfcfa6dd0beda534c2c4d8780f27766058..5b8ddf925e6ed1a04ef4ca75869160d09cc0155d 100644 (file)
@@ -29,11 +29,13 @@ namespace cds { namespace OS {
         }
     }    // namespace posix
 
+    //@cond
     using posix::ThreadId;
     constexpr const ThreadId c_NullThreadId = 0;
 
     using posix::getCurrentThreadId;
     using posix::isThreadAlive;
+    //@endcond
 
 }} // namespace cds::OS
 
index 0098bd8af122afe3c071224a20ac64ad685cef5b..2185d7aaa2036230409c7e77e3445e78f760f0f7 100644 (file)
@@ -29,11 +29,13 @@ namespace cds { namespace OS {
         }
     }    // namespace Win32
 
+    //@cond
     using Win32::ThreadId;
     CDS_CONSTEXPR const ThreadId c_NullThreadId = 0;
 
     using Win32::getCurrentThreadId;
     using Win32::isThreadAlive;
+    //@endcond
 
 }} // namespace cds::OS