/*
This file is a part of libcds - Concurrent Data Structures library
- (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
Source code repo: http://github.com/khizmax/libcds/
Download: http://sourceforge.net/projects/libcds/files/
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.
*/
-\r
-#include "test_treiber_stack.h"\r
-\r
-#include <cds/gc/hp.h>\r
-#include <cds/container/treiber_stack.h>\r
-\r
-namespace {\r
-\r
- namespace cc = cds::container;\r
- typedef cds::gc::HP gc_type;\r
-\r
- class TreiberStack_HP : public cds_gtest::TreiberStack\r
- {\r
- typedef cds_gtest::TreiberStack base_class;\r
-\r
- protected:\r
- void SetUp()\r
- {\r
- typedef cc::TreiberStack< gc_type, int > stack_type;\r
-\r
- cds::gc::hp::GarbageCollector::Construct( stack_type::c_nHazardPtrCount, 1, 16 );\r
- cds::threading::Manager::attachThread();\r
- }\r
-\r
- void TearDown() \r
- {\r
- cds::threading::Manager::detachThread();\r
- cds::gc::hp::GarbageCollector::Destruct( true );\r
- }\r
-\r
- template <typename Stack>\r
- void test()\r
- {\r
- Stack stack;\r
- base_class::test( stack );\r
- }\r
-\r
- template <typename Stack>\r
- void test_dyn( size_t elimination_size )\r
- {\r
- Stack stack( elimination_size );\r
- base_class::test( stack );\r
- }\r
- };\r
-\r
+
+#include "test_treiber_stack.h"
+
+#include <cds/gc/hp.h>
+#include <cds/container/treiber_stack.h>
+
+namespace {
+
+ namespace cc = cds::container;
+ typedef cds::gc::HP gc_type;
+
+ class TreiberStack_HP : public cds_test::TreiberStack
+ {
+ typedef cds_test::TreiberStack base_class;
+
+ protected:
+ void SetUp()
+ {
+ typedef cc::TreiberStack< gc_type, int > stack_type;
+
+ cds::gc::hp::GarbageCollector::Construct( stack_type::c_nHazardPtrCount, 1, 16 );
+ cds::threading::Manager::attachThread();
+ }
+
+ void TearDown()
+ {
+ cds::threading::Manager::detachThread();
+ cds::gc::hp::GarbageCollector::Destruct( true );
+ }
+
+ template <typename Stack>
+ void test()
+ {
+ Stack stack;
+ base_class::test( stack );
+ }
+
+ template <typename Stack>
+ void test_dyn( size_t elimination_size )
+ {
+ Stack stack( elimination_size );
+ base_class::test( stack );
+ }
+ };
+
TEST_F( TreiberStack_HP, defaulted )
{
typedef cc::TreiberStack< gc_type, int > stack_type;
test<stack_type>();
}
-\r
+
TEST_F( TreiberStack_HP, backoff )
{
typedef cc::TreiberStack< gc_type, int
test<stack_type>();
}
-\r
+
TEST_F( TreiberStack_HP, alloc )
{
// allocator must be rebinded for real value type
test<stack_type>();
}
-\r
+
TEST_F( TreiberStack_HP, elimination )
{
typedef cc::TreiberStack< gc_type, int
test<stack_type>();
}
-\r
+
TEST_F( TreiberStack_HP, elimination_backoff )
{
struct traits : public cc::treiber_stack::traits
test<stack_type>();
}
-\r
+
TEST_F( TreiberStack_HP, elimination_dynamic )
{
typedef cc::TreiberStack< gc_type, int
, typename cc::treiber_stack::make_traits<
cds::opt::enable_elimination<true>
- , cds::opt::buffer< cds::opt::v::dynamic_buffer<void *> >
+ , cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer<void *> >
>::type
> stack_type;
test_dyn<stack_type>( 4 );
}
-\r
+
TEST_F( TreiberStack_HP, elimination_stat )
{
typedef cc::TreiberStack< gc_type, int
test<stack_type>();
}
-\r
+
TEST_F( TreiberStack_HP, elimination_dynamic_backoff )
{
struct traits : public cc::treiber_stack::traits
enum {
enable_elimination = true
};
- typedef cds::opt::v::dynamic_buffer<void *> buffer;
+ typedef cds::opt::v::initialized_dynamic_buffer<void *> buffer;
typedef cds::backoff::yield back_off;
};
typedef cc::TreiberStack< gc_type, int, traits > stack_type;
test_dyn<stack_type>( 2 );
}
-\r
-} // namespace\r
+
+} // namespace