Migrated queue stress test to gtest framework
[libcds.git] / tests / unit / queue / intrusive_queue_type.h
diff --git a/tests/unit/queue/intrusive_queue_type.h b/tests/unit/queue/intrusive_queue_type.h
deleted file mode 100644 (file)
index 4bf1a92..0000000
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
-    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 CDSUNIT_INTRUSIVE_QUEUE_TYPES_H
-#define CDSUNIT_INTRUSIVE_QUEUE_TYPES_H
-
-#include <cds/intrusive/msqueue.h>
-#include <cds/intrusive/moir_queue.h>
-#include <cds/intrusive/optimistic_queue.h>
-#include <cds/intrusive/tsigas_cycle_queue.h>
-#include <cds/intrusive/vyukov_mpmc_cycle_queue.h>
-#include <cds/intrusive/basket_queue.h>
-#include <cds/intrusive/fcqueue.h>
-#include <cds/intrusive/segmented_queue.h>
-
-#include <cds/gc/hp.h>
-#include <cds/gc/dhp.h>
-
-#include <boost/intrusive/slist.hpp>
-
-#include "print_segmentedqueue_stat.h"
-
-namespace queue {
-
-    namespace details {
-        struct empty_stat {};
-
-        template <typename T, typename Lock=std::mutex>
-        class BoostSList
-        {
-            typedef boost::intrusive::slist< T, boost::intrusive::cache_last<true> >    slist_type;
-            typedef Lock lock_type;
-            typedef std::lock_guard<lock_type> lock_guard;
-
-            slist_type  m_List;
-            mutable lock_type m_Lock;
-        public:
-            typedef T value_type;
-
-        public:
-            bool push( value_type& v )
-            {
-                lock_guard l( m_Lock );
-                m_List.push_back( v );
-                return true;
-            }
-
-            bool enqueue( value_type& v )
-            {
-                return push( v );
-            }
-
-            value_type * pop()
-            {
-                lock_guard l( m_Lock );
-                if ( m_List.empty() )
-                    return nullptr;
-                value_type& v = m_List.front();
-                m_List.pop_front();
-                return &v;
-            }
-            value_type * deque()
-            {
-                return pop();
-            }
-
-            bool empty() const
-            {
-                lock_guard l( m_Lock );
-                return m_List.empty();
-            }
-
-            size_t size() const
-            {
-                lock_guard l( m_Lock );
-                return m_List.size();
-            }
-
-            empty_stat statistics() const
-            {
-                return empty_stat();
-            }
-        };
-    }
-
-    template <typename T>
-    struct Types {
-
-        // MSQueue, MoirQueue
-        struct traits_MSQueue_HP : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::HP > > hook;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::HP, T, traits_MSQueue_HP > MSQueue_HP;
-        typedef cds::intrusive::MoirQueue< cds::gc::HP, T, traits_MSQueue_HP > MoirQueue_HP;
-
-        struct traits_MSQueue_HP_seqcst : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::HP > > hook;
-            typedef cds::opt::v::sequential_consistent memory_model;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::HP, T, traits_MSQueue_HP_seqcst > MSQueue_HP_seqcst;
-        typedef cds::intrusive::MoirQueue< cds::gc::HP, T, traits_MSQueue_HP_seqcst > MoirQueue_HP_seqcst;
-
-        struct traits_MSQueue_DHP : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::DHP > > hook;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::DHP, T, traits_MSQueue_DHP > MSQueue_DHP;
-        typedef cds::intrusive::MoirQueue< cds::gc::DHP, T, traits_MSQueue_DHP > MoirQueue_DHP;
-
-        struct traits_MSQueue_DHP_seqcst : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::DHP > > hook;
-            typedef cds::opt::v::sequential_consistent memory_model;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::DHP, T, traits_MSQueue_DHP_seqcst > MSQueue_DHP_seqcst;
-        typedef cds::intrusive::MoirQueue< cds::gc::DHP, T, traits_MSQueue_DHP_seqcst > MoirQueue_DHP_seqcst;
-
-        // MSQueue + item counter
-        struct traits_MSQueue_HP_ic : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::HP > > hook;
-            typedef cds::atomicity::item_counter item_counter;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::HP, T, traits_MSQueue_HP_ic > MSQueue_HP_ic;
-        typedef cds::intrusive::MoirQueue< cds::gc::HP, T, traits_MSQueue_HP_ic > MoirQueue_HP_ic;
-
-        struct traits_MSQueue_DHP_ic : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::DHP > > hook;
-            typedef cds::atomicity::item_counter item_counter;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::DHP, T, traits_MSQueue_DHP_ic > MSQueue_DHP_ic;
-        typedef cds::intrusive::MoirQueue< cds::gc::DHP, T, traits_MSQueue_DHP_ic > MoirQueue_DHP_ic;
-
-        // MSQueue + stat
-        struct traits_MSQueue_HP_stat : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::HP > > hook;
-            typedef cds::intrusive::msqueue::stat<> stat;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::HP, T, traits_MSQueue_HP_stat > MSQueue_HP_stat;
-        typedef cds::intrusive::MoirQueue< cds::gc::HP, T, traits_MSQueue_HP_stat > MoirQueue_HP_stat;
-
-        struct traits_MSQueue_DHP_stat : public cds::intrusive::msqueue::traits
-        {
-            typedef cds::intrusive::msqueue::base_hook< cds::opt::gc< cds::gc::DHP > > hook;
-            typedef cds::intrusive::msqueue::stat<> stat;
-        };
-        typedef cds::intrusive::MSQueue< cds::gc::DHP, T, traits_MSQueue_DHP_stat > MSQueue_DHP_stat;
-        typedef cds::intrusive::MoirQueue< cds::gc::DHP, T, traits_MSQueue_DHP_stat > MoirQueue_DHP_stat;
-
-
-        // OptimisticQueue
-        struct traits_OptimisticQueue_HP : public cds::intrusive::optimistic_queue::traits
-        {
-            typedef cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::HP > > hook;
-        };
-        typedef cds::intrusive::OptimisticQueue< cds::gc::HP, T, traits_OptimisticQueue_HP > OptimisticQueue_HP;
-
-        struct traits_OptimisticQueue_HP_seqcst : public
-            cds::intrusive::optimistic_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-                , cds::opt::memory_model< cds::opt::v::sequential_consistent >
-            >::type
-        {};
-        typedef cds::intrusive::OptimisticQueue< cds::gc::HP, T, traits_OptimisticQueue_HP_seqcst > OptimisticQueue_HP_seqcst;
-
-        struct traits_OptimisticQueue_DHP : public cds::intrusive::optimistic_queue::traits
-        {
-            typedef cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::DHP > > hook;
-        };
-        typedef cds::intrusive::OptimisticQueue< cds::gc::DHP, T, traits_OptimisticQueue_DHP > OptimisticQueue_DHP;
-
-        struct traits_OptimisticQueue_DHP_seqcst: public
-            cds::intrusive::optimistic_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-                , cds::opt::memory_model< cds::opt::v::sequential_consistent >
-            >::type
-        {};
-        typedef cds::intrusive::OptimisticQueue< cds::gc::DHP, T, traits_OptimisticQueue_DHP_seqcst > OptimisticQueue_DHP_seqcst;
-
-        // OptimisticQueue + item counter
-        struct traits_OptimisticQueue_HP_ic: public
-            cds::intrusive::optimistic_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-                , cds::opt::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cds::intrusive::OptimisticQueue< cds::gc::HP, T, traits_OptimisticQueue_HP_ic > OptimisticQueue_HP_ic;
-
-        struct traits_OptimisticQueue_DHP_ic: public
-            cds::intrusive::optimistic_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-                , cds::opt::item_counter< cds::atomicity::item_counter >
-            >::type
-        {};
-        typedef cds::intrusive::OptimisticQueue< cds::gc::DHP, T, traits_OptimisticQueue_DHP_ic > OptimisticQueue_DHP_ic;
-
-        // OptimisticQueue + stat
-        struct traits_OptimisticQueue_HP_stat: public
-            cds::intrusive::optimistic_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-                , cds::opt::stat< cds::intrusive::optimistic_queue::stat<> >
-            >::type
-        {};
-        typedef cds::intrusive::OptimisticQueue< cds::gc::HP, T, traits_OptimisticQueue_HP_stat > OptimisticQueue_HP_stat;
-
-        struct traits_OptimisticQueue_DHP_stat: public
-            cds::intrusive::optimistic_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::optimistic_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-                , cds::opt::stat< cds::intrusive::optimistic_queue::stat<> >
-            >::type
-        {};
-        typedef cds::intrusive::OptimisticQueue< cds::gc::DHP, T, traits_OptimisticQueue_DHP_stat > OptimisticQueue_DHP_stat;
-
-        // TsigasCycleQueue
-        class TsigasCycleQueue_dyn
-            : public cds::intrusive::TsigasCycleQueue< T,
-                typename cds::intrusive::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::dynamic_buffer< int > >
-                >::type
-            >
-        {
-            typedef cds::intrusive::TsigasCycleQueue< T,
-                typename cds::intrusive::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::dynamic_buffer< int > >
-                >::type
-            > base_class;
-        public:
-            TsigasCycleQueue_dyn()
-                : base_class( 1024 * 64 )
-            {}
-
-            TsigasCycleQueue_dyn( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
-        class TsigasCycleQueue_dyn_ic
-            : public cds::intrusive::TsigasCycleQueue< T,
-                typename cds::intrusive::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::dynamic_buffer< int > >
-                    ,cds::opt::item_counter< cds::atomicity::item_counter >
-                >::type
-            >
-        {
-            typedef cds::intrusive::TsigasCycleQueue< T,
-                typename cds::intrusive::tsigas_queue::make_traits<
-                    cds::opt::buffer< cds::opt::v::dynamic_buffer< int > >
-                    ,cds::opt::item_counter< cds::atomicity::item_counter >
-                >::type
-            > base_class;
-        public:
-            TsigasCycleQueue_dyn_ic()
-                : base_class( 1024 * 64 )
-            {}
-            TsigasCycleQueue_dyn_ic( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
-        // VyukovMPMCCycleQueue
-        struct traits_VyukovMPMCCycleQueue_dyn : public cds::intrusive::vyukov_queue::traits
-        {
-            typedef cds::opt::v::dynamic_buffer< int > buffer;
-        };
-        class VyukovMPMCCycleQueue_dyn
-            : public cds::intrusive::VyukovMPMCCycleQueue< T, traits_VyukovMPMCCycleQueue_dyn >
-        {
-            typedef cds::intrusive::VyukovMPMCCycleQueue< T, traits_VyukovMPMCCycleQueue_dyn > base_class;
-        public:
-            VyukovMPMCCycleQueue_dyn()
-                : base_class( 1024 * 64 )
-            {}
-            VyukovMPMCCycleQueue_dyn( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
-        struct traits_VyukovMPMCCycleQueue_dyn_ic : public traits_VyukovMPMCCycleQueue_dyn
-        {
-            typedef cds::atomicity::item_counter item_counter;
-        };
-        class VyukovMPMCCycleQueue_dyn_ic
-            : public cds::intrusive::VyukovMPMCCycleQueue< T, traits_VyukovMPMCCycleQueue_dyn_ic >
-        {
-            typedef cds::intrusive::VyukovMPMCCycleQueue< T, traits_VyukovMPMCCycleQueue_dyn_ic > base_class;
-        public:
-            VyukovMPMCCycleQueue_dyn_ic()
-                : base_class( 1024 * 64 )
-            {}
-            VyukovMPMCCycleQueue_dyn_ic( size_t nCapacity )
-                : base_class( nCapacity )
-            {}
-
-            cds::opt::none statistics() const
-            {
-                return cds::opt::none();
-            }
-        };
-
-        // BasketQueue
-        struct traits_BasketQueue_HP : public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::HP, T, traits_BasketQueue_HP > BasketQueue_HP;
-
-        struct traits_BasketQueue_HP_seqcst: public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-                , cds::opt::memory_model< cds::opt::v::sequential_consistent >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue<cds::gc::HP, T, traits_BasketQueue_HP_seqcst > BasketQueue_HP_seqcst;
-
-        struct traits_BasketQueue_DHP : public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::DHP, T, traits_BasketQueue_DHP > BasketQueue_DHP;
-
-        struct traits_BasketQueue_DHP_seqcst: public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-                , cds::opt::memory_model< cds::opt::v::sequential_consistent >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::DHP, T, traits_BasketQueue_DHP_seqcst > BasketQueue_DHP_seqcst;
-
-        // BasketQueue + item counter
-        struct traits_BasketQueue_HP_ic : public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-                ,cds::opt::item_counter< cds::atomicity::item_counter >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::HP, T, traits_BasketQueue_HP_ic > BasketQueue_HP_ic;
-
-        struct traits_BasketQueue_DHP_ic : public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-                ,cds::opt::item_counter< cds::atomicity::item_counter >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::DHP, T, traits_BasketQueue_DHP_ic > BasketQueue_DHP_ic;
-
-        // BasketQueue + stat
-        struct traits_BasketQueue_HP_stat : public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::HP > > >
-                , cds::opt::stat< cds::intrusive::basket_queue::stat<> >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::HP, T, traits_BasketQueue_HP_stat > BasketQueue_HP_stat;
-
-        struct traits_BasketQueue_DHP_stat : public
-            cds::intrusive::basket_queue::make_traits <
-                cds::intrusive::opt::hook< cds::intrusive::basket_queue::base_hook< cds::opt::gc< cds::gc::DHP > > >
-                , cds::opt::stat< cds::intrusive::basket_queue::stat<> >
-            > ::type
-        {};
-        typedef cds::intrusive::BasketQueue< cds::gc::DHP, T, traits_BasketQueue_DHP_stat > BasketQueue_DHP_stat;
-
-        // FCQueue
-        class traits_FCQueue_delay2:
-            public cds::intrusive::fcqueue::make_traits<
-                cds::opt::back_off< cds::backoff::delay_of<2> >
-            >::type
-        {};
-        class traits_FCQueue_delay2_elimination:
-            public cds::intrusive::fcqueue::make_traits<
-                cds::opt::back_off< cds::backoff::delay_of<2> >
-                ,cds::opt::enable_elimination< true >
-            >::type
-        {};
-        class traits_FCQueue_delay2_elimination_stat:
-            public cds::intrusive::fcqueue::make_traits<
-                cds::opt::back_off< cds::backoff::delay_of<2> >
-                ,cds::opt::stat< cds::intrusive::fcqueue::stat<> >
-                ,cds::opt::enable_elimination< true >
-            >::type
-        {};
-        class traits_FCQueue_expbackoff_elimination:
-            public cds::intrusive::fcqueue::make_traits<
-                cds::opt::enable_elimination< true >
-                ,cds::opt::elimination_backoff< cds::backoff::Default >
-            >::type
-        {};
-        class traits_FCQueue_expbackoff_elimination_stat:
-            public cds::intrusive::fcqueue::make_traits<
-                cds::opt::enable_elimination< true >
-                ,cds::opt::stat< cds::intrusive::fcqueue::stat<> >
-                ,cds::opt::elimination_backoff< cds::backoff::Default >
-            >::type
-        {};
-
-        typedef cds::intrusive::FCQueue< T, boost::intrusive::list<T>, traits_FCQueue_delay2 > FCQueue_list_delay2;
-        typedef cds::intrusive::FCQueue< T, boost::intrusive::list<T>, traits_FCQueue_delay2_elimination > FCQueue_list_delay2_elimination;
-        typedef cds::intrusive::FCQueue< T, boost::intrusive::list<T>, traits_FCQueue_delay2_elimination_stat > FCQueue_list_delay2_elimination_stat;
-        typedef cds::intrusive::FCQueue< T, boost::intrusive::list<T>, traits_FCQueue_expbackoff_elimination > FCQueue_list_expbackoff_elimination;
-        typedef cds::intrusive::FCQueue< T, boost::intrusive::list<T>, traits_FCQueue_expbackoff_elimination_stat > FCQueue_list_expbackoff_elimination_stat;
-
-        // SegmentedQueue
-        class traits_SegmentedQueue_spin_stat:
-            public cds::intrusive::segmented_queue::make_traits<
-                cds::opt::stat< cds::intrusive::segmented_queue::stat<> >
-            >::type
-        {};
-        class traits_SegmentedQueue_spin_padding :
-            public cds::intrusive::segmented_queue::make_traits<
-            cds::opt::padding< cds::opt::cache_line_padding >
-            >::type
-        {};
-        class traits_SegmentedQueue_mutex_stat :
-            public cds::intrusive::segmented_queue::make_traits<
-                cds::opt::stat< cds::intrusive::segmented_queue::stat<> >
-                ,cds::opt::lock_type< std::mutex >
-            >::type
-        {};
-        class traits_SegmentedQueue_mutex:
-            public cds::intrusive::segmented_queue::make_traits<
-                cds::opt::lock_type< std::mutex >
-            >::type
-        {};
-        class traits_SegmentedQueue_mutex_padding:
-            public cds::intrusive::segmented_queue::make_traits<
-                cds::opt::lock_type< std::mutex >
-                ,cds::opt::padding< cds::opt::cache_line_padding >
-            >::type
-        {};
-
-        typedef cds::intrusive::SegmentedQueue< cds::gc::HP, T >  SegmentedQueue_HP_spin;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::HP, T, traits_SegmentedQueue_spin_padding >  SegmentedQueue_HP_spin_padding;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::HP, T, traits_SegmentedQueue_spin_stat >  SegmentedQueue_HP_spin_stat;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::HP, T, traits_SegmentedQueue_mutex >  SegmentedQueue_HP_mutex;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::HP, T, traits_SegmentedQueue_mutex_padding >  SegmentedQueue_HP_mutex_padding;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::HP, T, traits_SegmentedQueue_mutex_stat >  SegmentedQueue_HP_mutex_stat;
-
-        typedef cds::intrusive::SegmentedQueue< cds::gc::DHP, T >  SegmentedQueue_DHP_spin;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::DHP, T, traits_SegmentedQueue_spin_padding >  SegmentedQueue_DHP_spin_padding;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::DHP, T, traits_SegmentedQueue_spin_stat >  SegmentedQueue_DHP_spin_stat;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::DHP, T, traits_SegmentedQueue_mutex >  SegmentedQueue_DHP_mutex;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::DHP, T, traits_SegmentedQueue_mutex_padding >  SegmentedQueue_DHP_mutex_padding;
-        typedef cds::intrusive::SegmentedQueue< cds::gc::DHP, T, traits_SegmentedQueue_mutex_stat >  SegmentedQueue_DHP_mutex_stat;
-
-        // Boost SList
-        typedef details::BoostSList< T, std::mutex >      BoostSList_mutex;
-        typedef details::BoostSList< T, cds::sync::spin > BoostSList_spin;
-    };
-}
-
-
-// *********************************************
-// Queue statistics
-namespace std {
-    /*
-    // cds::intrusive::queue_stat
-    template <typename Counter>
-    static inline std::ostream& operator <<(std::ostream& o, cds::intrusive::queue_stat<Counter> const& s)
-    {
-        return o
-            << "\tStatistics:\n"
-            << "\t\t     Enqueue count: " << s.m_EnqueueCount.get() << "\n"
-            << "\t\t      Enqueue race: " << s.m_EnqueueRace.get() << "\n"
-            << "\t\t     Dequeue count: " << s.m_DequeueCount.get() << "\n"
-            << "\t\t      Dequeue race: " << s.m_DequeueRace.get() << "\n"
-            << "\t\tAdvance tail error: " << s.m_AdvanceTailError.get() << "\n"
-            << "\t\t          Bad tail: " << s.m_BadTail.get() << "\n";
-    }
-    static inline std::ostream& operator <<(std::ostream& o, cds::intrusive::queue_dummy_stat const& s)
-    {
-        return o;
-    }
-    */
-
-
-    template <typename Counter>
-    static inline std::ostream& operator <<(std::ostream& o, cds::intrusive::basket_queue::stat<Counter> const& s)
-    {
-        return o
-            << "\tStatistics:\n"
-            << "\t\t      Enqueue count: " << s.m_EnqueueCount.get() << "\n"
-            << "\t\t       Enqueue race: " << s.m_EnqueueRace.get() << "\n"
-            << "\t\t      Dequeue count: " << s.m_DequeueCount.get() << "\n"
-            << "\t\t       Dequeue race: " << s.m_DequeueRace.get() << "\n"
-            << "\t\t Advance tail error: " << s.m_AdvanceTailError.get() << "\n"
-            << "\t\t           Bad tail: " << s.m_BadTail.get() << "\n"
-            << "\t\tAdd basket attempts: " << s.m_TryAddBasket.get() << "\n"
-            << "\t\t Add basket success: " << s.m_AddBasketCount.get() << "\n";
-    }
-    static inline std::ostream& operator <<(std::ostream& o, cds::intrusive::basket_queue::empty_stat const& /*s*/)
-    {
-        return o;
-    }
-
-    template <typename Counter>
-    static inline std::ostream& operator <<( std::ostream& o, cds::intrusive::msqueue::stat<Counter> const& s )
-    {
-        return o
-            << "\tStatistics:\n"
-            << "\t\t     Enqueue count: " << s.m_EnqueueCount.get() << "\n"
-            << "\t\t      Enqueue race: " << s.m_EnqueueRace.get()  << "\n"
-            << "\t\t     Dequeue count: " << s.m_DequeueCount.get() << "\n"
-            << "\t\t      Dequeue race: " << s.m_DequeueRace.get()  << "\n"
-            << "\t\tAdvance tail error: " << s.m_AdvanceTailError.get() << "\n"
-            << "\t\t          Bad tail: " << s.m_BadTail.get() << "\n";
-    }
-
-    static inline std::ostream& operator <<( std::ostream& o, cds::intrusive::msqueue::empty_stat const& /*s*/ )
-    {
-        return o;
-    }
-
-    static inline std::ostream& operator <<( std::ostream& o, cds::opt::none )
-    {
-        return o;
-    }
-
-    // cds::intrusive::optimistic_queue::stat
-    template <typename Counter>
-    static inline std::ostream& operator <<( std::ostream& o, cds::intrusive::optimistic_queue::stat<Counter> const& s )
-    {
-        return o
-            << "\tStatistics:\n"
-            << "\t\t     Enqueue count: " << s.m_EnqueueCount.get() << "\n"
-            << "\t\t      Enqueue race: " << s.m_EnqueueRace.get() << "\n"
-            << "\t\t     Dequeue count: " << s.m_DequeueCount.get() << "\n"
-            << "\t\t      Dequeue race: " << s.m_DequeueRace.get() << "\n"
-            << "\t\tAdvance tail error: " << s.m_AdvanceTailError.get() << "\n"
-            << "\t\t          Bad tail: " << s.m_BadTail.get() << "\n"
-            << "\t\t     fix list call: " << s.m_FixListCount.get() << "\n";
-    }
-
-    static inline std::ostream& operator <<( std::ostream& o, cds::intrusive::optimistic_queue::empty_stat const& /*s*/ )
-    {
-        return o;
-    }
-
-    // cds::intrusive::fcqueue::stat
-    template <typename Counter>
-    static inline std::ostream& operator <<( std::ostream& o, cds::intrusive::fcqueue::stat<Counter> const& s )
-    {
-            return o << "\tStatistics:\n"
-                << "\t                    Push: " << s.m_nEnqueue.get()           << "\n"
-                << "\t                     Pop: " << s.m_nDequeue.get()           << "\n"
-                << "\t               FailedPop: " << s.m_nFailedDeq.get()         << "\n"
-                << "\t  Collided push/pop pair: " << s.m_nCollided.get()          << "\n"
-                << "\tFlat combining statistics:\n"
-                << "\t        Combining factor: " << s.combining_factor()         << "\n"
-                << "\t         Operation count: " << s.m_nOperationCount.get()    << "\n"
-                << "\t      Combine call count: " << s.m_nCombiningCount.get()    << "\n"
-                << "\t        Compact pub-list: " << s.m_nCompactPublicationList.get() << "\n"
-                << "\t   Deactivate pub-record: " << s.m_nDeactivatePubRecord.get()    << "\n"
-                << "\t     Activate pub-record: " << s.m_nActivatePubRecord.get() << "\n"
-                << "\t       Create pub-record: " << s.m_nPubRecordCreated.get()  << "\n"
-                << "\t       Delete pub-record: " << s.m_nPubRecordDeteted.get()  << "\n"
-                << "\t      Acquire pub-record: " << s.m_nAcquirePubRecCount.get()<< "\n"
-                << "\t      Release pub-record: " << s.m_nReleasePubRecCount.get()<< "\n";
-    }
-
-    static inline std::ostream& operator <<( std::ostream& o, cds::intrusive::fcqueue::empty_stat const& /*s*/ )
-    {
-        return o;
-    }
-
-    static inline std::ostream& operator <<( std::ostream& o, queue::details::empty_stat const& /*s*/ )
-    {
-        return o;
-    }
-
-} // namespace std
-
-#endif // #ifndef CDSUNIT_INTRUSIVE_QUEUE_TYPES_H