Added copyright and license
[libcds.git] / cds / container / tsigas_cycle_queue.h
index fd6b41f51561bd3d45eaa2bce30f55262f22e3a6..c4661898a6e8a55bad57e25a0f1ba6ee5373848e 100644 (file)
@@ -1,7 +1,35 @@
-//$$CDS-header$$
-
-#ifndef __CDS_CONTAINER_TSIGAS_CYCLE_QUEUE_H
-#define __CDS_CONTAINER_TSIGAS_CYCLE_QUEUE_H
+/*
+    This file is a part of libcds - Concurrent Data Structures library
+
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+    Source code repo: http://github.com/khizmax/libcds/
+    Download: http://sourceforge.net/projects/libcds/files/
+    
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, this
+      list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.     
+*/
+
+#ifndef CDSLIB_CONTAINER_TSIGAS_CYCLE_QUEUE_H
+#define CDSLIB_CONTAINER_TSIGAS_CYCLE_QUEUE_H
 
 #include <memory>
 #include <cds/intrusive/tsigas_cycle_queue.h>
@@ -19,10 +47,10 @@ namespace cds { namespace container {
         {
             /// Buffer type for cyclic array
             /*
-            The type of element for the buffer is not important: the queue rebinds
-            buffer for required type via \p rebind metafunction.
+                The type of element for the buffer is not important: the queue rebinds
+                buffer for required type via \p rebind metafunction.
 
-            For \p TsigasCycleQueue queue the buffer size should have power-of-2 size.
+                For \p TsigasCycleQueue queue the buffer size should have power-of-2 size.
             */
             typedef cds::opt::v::dynamic_buffer< void * > buffer;
 
@@ -37,8 +65,8 @@ namespace cds { namespace container {
 
             /// 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).
+                Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
+                or \p opt::v::sequential_consistent (sequentially consisnent memory model).
             */
             typedef opt::v::relaxed_ordering    memory_model;
 
@@ -54,8 +82,6 @@ namespace cds { namespace container {
                 element in the buffer is not important: it will be changed via \p rebind metafunction.
             - \p opt::allocator - allocator (like \p std::allocator) used for allocating queue items. Default is \ref CDS_DEFAULT_ALLOCATOR
             - \p opt::back_off - back-off strategy used, default is \p cds::backoff::empty.
-            - \p opt::disposer - the functor used for dispose removed items. Default is \p opt::v::empty_disposer. This option is used
-                when dequeuing.
             - \p opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter (item counting disabled)
                 To enable item counting use \p cds::atomicity::item_counter
             - \p opt::alignment - the alignment for internal queue data. Default is \p opt::cache_line_alignment
@@ -64,7 +90,7 @@ namespace cds { namespace container {
 
             Example: declare \p %TsigasCycleQueue with item counting and static iternal buffer of size 1024:
             \code
-            typedef cds::container::TsigasCycleQueue< Foo, 
+            typedef cds::container::TsigasCycleQueue< Foo,
                 typename cds::container::tsigas_queue::make_traits<
                     cds::opt::buffer< cds::opt::v::static_buffer< void *, 1024 >,
                     cds::opt::item_counte< cds::atomicity::item_counter >
@@ -135,8 +161,8 @@ namespace cds { namespace container {
             typedef cds::container::TsigasCycleQueue< Foo, myTraits > myQueue;
 
             // Equivalent make_traits example:
-            typedef cds::container::TsigasCycleQueue< cds::gc::HP, Foo, 
-                typename cds::container::tsigas_queue::make_traits< 
+            typedef cds::container::TsigasCycleQueue< cds::gc::HP, Foo,
+                typename cds::container::tsigas_queue::make_traits<
                     cds::opt::item_counter< cds::atomicity::item_counter >
                 >::type
             > myQueue;
@@ -151,7 +177,7 @@ namespace cds { namespace container {
         };
 
         // Queue of Foo, capacity is 1024, statically allocated buffer:
-        typedef cds::container::TsigasCycleQueue< Foo, 
+        typedef cds::container::TsigasCycleQueue< Foo,
             typename cds::container::tsigas_queue::make_traits<
                 cds::opt::buffer< cds::opt::v::static_buffer< Foo, 1024 > >
             >::type
@@ -305,7 +331,6 @@ namespace cds { namespace container {
             return enqueue_with( f );
         }
 
-
         /// Dequeues a value using a functor
         /**
             \p Func is a functor called to copy dequeued value.
@@ -385,4 +410,4 @@ namespace cds { namespace container {
 
 }} // namespace cds::intrusive
 
-#endif // #ifndef __CDS_CONTAINER_TSIGAS_CYCLE_QUEUE_H
+#endif // #ifndef CDSLIB_CONTAINER_TSIGAS_CYCLE_QUEUE_H