/*
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_intrusive_treiber_stack.h"\r
-\r
-#include <cds/gc/dhp.h>\r
-#include <cds/intrusive/treiber_stack.h>\r
-\r
-namespace {\r
-\r
- namespace ci = cds::intrusive;\r
-\r
- class IntrusiveTreiberStack_DHP : public cds_gtest::IntrusiveTreiberStack\r
- {\r
- typedef cds_gtest::IntrusiveTreiberStack base_class;\r
- protected:\r
- typedef cds::gc::DHP gc_type;\r
-\r
- void SetUp()\r
- {\r
+
+#include "test_intrusive_treiber_stack.h"
+
+#include <cds/gc/dhp.h>
+#include <cds/intrusive/treiber_stack.h>
+
+namespace {
+
+ namespace ci = cds::intrusive;
+
+ class IntrusiveTreiberStack_DHP : public cds_test::IntrusiveTreiberStack
+ {
+ typedef cds_test::IntrusiveTreiberStack base_class;
+ protected:
+ typedef cds::gc::DHP gc_type;
+
+ void SetUp()
+ {
typedef cds::intrusive::TreiberStack< gc_type,
base_hook_item<gc_type>
, typename ci::treiber_stack::make_traits<
>
>::type
> stack_type;
-\r
- cds::gc::dhp::GarbageCollector::Construct( 16, stack_type::c_nHazardPtrCount );\r
- cds::threading::Manager::attachThread();\r
- }\r
-\r
- void TearDown()\r
- {\r
- cds::threading::Manager::detachThread();\r
- cds::gc::dhp::GarbageCollector::Destruct();\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
+
+ cds::gc::dhp::smr::construct( stack_type::c_nHazardPtrCount );
+ cds::threading::Manager::attachThread();
+ }
+
+ void TearDown()
+ {
+ cds::threading::Manager::detachThread();
+ cds::gc::dhp::smr::destruct();
+ }
+
+ 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( IntrusiveTreiberStack_DHP, base )
{
typedef cds::intrusive::TreiberStack< gc_type,
test<stack_type>();
}
-\r
+
TEST_F( IntrusiveTreiberStack_DHP, elimination_base )
{
typedef cds::intrusive::TreiberStack< gc_type,
test<stack_type>();
}
-\r
+
TEST_F( IntrusiveTreiberStack_DHP, elimination_base_dynamic )
{
typedef cds::intrusive::TreiberStack< gc_type,
ci::opt::gc<gc_type>
>
>
- ,ci::opt::buffer< ci::opt::v::dynamic_buffer<void *> >
+ ,ci::opt::buffer< ci::opt::v::initialized_dynamic_buffer<void *> >
>::type
> stack_type;
test_dyn<stack_type>( 2 );
}
-\r
+
TEST_F( IntrusiveTreiberStack_DHP, elimination_base_disposer )
{
typedef cds::intrusive::TreiberStack< gc_type,
test<stack_type>();
}
-\r
+
TEST_F( IntrusiveTreiberStack_DHP, elimination_member )
{
typedef cds::intrusive::TreiberStack< gc_type,
test<stack_type>();
}
-\r
+
TEST_F( IntrusiveTreiberStack_DHP, elimination_member_dynamic )
{
typedef cds::intrusive::TreiberStack< gc_type,
ci::opt::gc<gc_type>
>
>
- ,ci::opt::buffer< ci::opt::v::dynamic_buffer<void *> >
+ ,ci::opt::buffer< ci::opt::v::initialized_dynamic_buffer<void *> >
>::type
> stack_type;
test_dyn<stack_type>( 2 );
}
-\r
+
TEST_F( IntrusiveTreiberStack_DHP, elimination_member_disposer )
{
typedef cds::intrusive::TreiberStack< gc_type,
ci::opt::gc<gc_type>
>
>
- ,ci::opt::buffer< ci::opt::v::dynamic_buffer<void *> >
+ ,ci::opt::buffer< ci::opt::v::initialized_dynamic_buffer<void *> >
, ci::opt::disposer< mock_disposer >
>::type
> stack_type;
test_dyn<stack_type>( 2 );
}
-\r
-} // namespace\r
-\r
+
+} // namespace
+