List of all available memory ordering see opt::memory_model.
Default if cds::opt::v:relaxed_ordering
*/
- template <CDS_DECL_OPTIONS6>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS6 >::type
- ,CDS_OPTIONS6
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
//@cond
namespace details {
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
struct make_basket_queue
{
typedef GC gc;
};
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
struct node_type: public intrusive::basket_queue::node< gc >
- opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default)
or opt::v::sequential_consistent (sequentially consisnent memory model).
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
class BasketQueue:
#ifdef CDS_DOXYGEN_INVOKED
intrusive::BasketQueue< GC, intrusive::basket_queue::node< T >, Options... >
#else
- details::make_basket_queue< GC, T, CDS_OPTIONS7 >::type
+ details::make_basket_queue< GC, T, Options... >::type
#endif
{
//@cond
- typedef details::make_basket_queue< GC, T, CDS_OPTIONS7 > options;
+ typedef details::make_basket_queue< GC, T, Options... > options;
typedef typename options::type base_class;
//@endcond
public:
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef BasketQueue< GC2, T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef BasketQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
public:
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see CuckooSet and CuckooMap
*/
- template <CDS_DECL_OPTIONS12>
+ template <typename... Options>
struct make_traits {
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< cuckoo::type_traits, CDS_OPTIONS12 >::type
- ,CDS_OPTIONS12
+ typename cds::opt::find_type_traits< cuckoo::type_traits, Options... >::type
+ ,Options...
>::type type ; ///< Result of metafunction
};
} // namespace cuckoo
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref cds_container_EllenBinTreeSet "EllenBinTreeSet".
*/
- template <CDS_DECL_OPTIONS11>
+ template <typename... Options>
struct make_set_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS11 >::type
- ,CDS_OPTIONS11
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref cds_container_EllenBinTreeMap "EllenBinTreeMap".
*/
- template <CDS_DECL_OPTIONS11>
+ template <typename... Options>
struct make_map_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS11 >::type
- ,CDS_OPTIONS11
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
By default, the elimination is disabled. For queue, the elimination is possible if the queue
is empty.
*/
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
- ,CDS_OPTIONS8
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
List of all available memory ordering see opt::memory_model.
Default is cds::opt::v:relaxed_ordering
*/
- template <CDS_DECL_OPTIONS7>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
By default, the elimination is disabled. For queue, the elimination is possible if the queue
is empty.
*/
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
- ,CDS_OPTIONS8
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
- \p opt::enable_elimination - enable/disable operation \ref cds_elimination_description "elimination"
By default, the elimination is disabled.
*/
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
- ,CDS_OPTIONS8
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
See \ref LazyList, \ref type_traits, \ref cds::opt::make_options.
*/
- template <CDS_DECL_OPTIONS12>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS12 >::type
- ,CDS_OPTIONS12
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
#endif
};
See \ref MichaelList, \ref type_traits, \ref cds::opt::make_options.
*/
- template <CDS_DECL_OPTIONS9>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
#endif
};
/**
This is a synonym for intrusive::michael_set::make_traits
*/
- template <CDS_DECL_OPTIONS3>
+ template <typename... Options>
struct make_traits {
- typedef typename intrusive::michael_set::make_traits<CDS_OPTIONS3>::type type ; ///< Result of metafunction
+ typedef typename intrusive::michael_set::make_traits<Options...>::type type ; ///< Result of metafunction
};
//@cond
//@cond
namespace details {
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
struct make_moir_queue
{
typedef GC gc;
};
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
struct node_type: public intrusive::single_link::node< gc >
\p Options description see MSQueue
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
class MoirQueue:
#ifdef CDS_DOXYGEN_INVOKED
intrusive::MoirQueue< GC, intrusive::single_link::node< T >, Options... >
#else
- details::make_moir_queue< GC, T, CDS_OPTIONS7 >::type
+ details::make_moir_queue< GC, T, Options... >::type
#endif
{
//@cond
- typedef details::make_moir_queue< GC, T, CDS_OPTIONS7 > options;
+ typedef details::make_moir_queue< GC, T, Options... > options;
typedef typename options::type base_class;
//@endcond
public:
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef MoirQueue< GC2, T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef MoirQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
public:
See \ref MSPriorityQueue, \ref type_traits, \ref cds::opt::make_options.
*/
- template <CDS_DECL_OPTIONS9>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
//@cond
namespace details {
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
struct make_msqueue
{
typedef GC gc;
};
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
struct node_type: public intrusive::single_link::node< gc >
- opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default)
or opt::v::sequential_consistent (sequentially consisnent memory model).
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
class MSQueue:
#ifdef CDS_DOXYGEN_INVOKED
intrusive::MSQueue< GC, intrusive::single_link::node< T >, Options... >
#else
- details::make_msqueue< GC, T, CDS_OPTIONS7 >::type
+ details::make_msqueue< GC, T, Options... >::type
#endif
{
//@cond
- typedef details::make_msqueue< GC, T, CDS_OPTIONS7 > options;
+ typedef details::make_msqueue< GC, T, Options... > options;
typedef typename options::type base_class;
//@endcond
public:
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef MSQueue< GC2, T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef MSQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
public:
//@cond
namespace details {
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
struct make_optimistic_queue
{
typedef GC gc;
};
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
struct node_type: public intrusive::optimistic_queue::node< gc >
<b>Warning</b> gc::HRC is not supported for this implementation.
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS7>
+ template <typename GC, typename T, typename... Options>
class OptimisticQueue:
#ifdef CDS_DOXYGEN_INVOKED
intrusive::OptimisticQueue< GC, intrusive::optimistic_queue::node< T >, Options... >
#else
- details::make_optimistic_queue< GC, T, CDS_OPTIONS7 >::type
+ details::make_optimistic_queue< GC, T, Options... >::type
#endif
{
//@cond
- typedef details::make_optimistic_queue< GC, T, CDS_OPTIONS7 > options;
+ typedef details::make_optimistic_queue< GC, T, Options... > options;
typedef typename options::type base_class;
//@endcond
public:
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef OptimisticQueue< GC2, T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef OptimisticQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
public:
This queue has no intrusive counterpart.
*/
- template <typename T, CDS_DECL_OPTIONS6>
+ template <typename T, typename... Options>
class RWQueue
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS6 >::type
- ,CDS_OPTIONS6
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
//@endcond
public:
/// Rebind template arguments
- template <typename T2, CDS_DECL_OTHER_OPTIONS6>
+ template <typename T2, typename... Options2>
struct rebind {
- typedef RWQueue< T2, CDS_OTHER_OPTIONS6> other ; ///< Rebinding result
+ typedef RWQueue< T2, Options2...> other ; ///< Rebinding result
};
public:
- \p opt::permutation_generator - a random permutation generator for sequence [0, quasi_factor),
default is cds::opt::v::random2_permutation<int>
*/
- template <CDS_DECL_OPTIONS9>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref SkipListSet.
*/
- template <CDS_DECL_OPTIONS10>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS10 >::type
- ,CDS_OPTIONS10
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
for LazyList use container::lazy_list::type_traits.
- plus any option from intrusive::split_list::make_traits
*/
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct make_traits {
- typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS8>::type type ; ///< Result of metafunction
+ typedef typename cds::opt::make_options< type_traits, Options...>::type type ; ///< Result of metafunction
};
} // namespace split_list
//@cond
namespace details {
- template <class Container, CDS_DECL_OPTIONS9>
+ template <class Container, typename... Options>
class make_striped_map
{
- typedef StripedSet< Container, CDS_OPTIONS9> billet;
+ typedef StripedSet< Container, Options...> billet;
typedef typename billet::options billet_options;
typedef typename billet_options::hash billet_hash;
</table>
**/
- template <class Container, CDS_DECL_OPTIONS9>
+template <class Container, typename... Options>
class StripedMap
#ifdef CDS_DOXYGEN_INVOKED
- : protected StripedSet<Container, CDS_OPTIONS9>
+ : protected StripedSet<Container, Options...>
#else
- : protected details::make_striped_map< Container, CDS_OPTIONS9>::type
+ : protected details::make_striped_map< Container, Options...>::type
#endif
{
//@cond
- typedef typename details::make_striped_map< Container, CDS_OPTIONS9>::type base_class;
+ typedef typename details::make_striped_map< Container, Options...>::type base_class;
//@endcond
public:
namespace cds { namespace intrusive { namespace striped_set {
- template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::flat_map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+ class adapt< boost::container::flat_map< Key, T, Traits, Alloc>, Options... >
{
public:
typedef boost::container::flat_map< Key, T, Traits, Alloc> container_type ; ///< underlying container type
- typedef cds::container::striped_set::details::boost_map_adapter< container_type, CDS_OPTIONS > type;
+ typedef cds::container::striped_set::details::boost_map_adapter< container_type, Options... > type;
};
}}} // namespace cds::intrusive::striped_set
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::list adapter for hash map bucket
- template <typename Key, typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::list< std::pair<Key const, T>, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Alloc, typename... Options>
+ class adapt< boost::container::list< std::pair<Key const, T>, Alloc>, Options... >
{
public:
typedef boost::container::list< std::pair<Key const, T>, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::set adapter for hash set bucket
- template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+ class adapt< boost::container::map< Key, T, Traits, Alloc>, Options... >
{
public:
typedef boost::container::map< Key, T, Traits, Alloc> container_type ; ///< underlying container type
- typedef cds::container::striped_set::details::boost_map_adapter< container_type, CDS_OPTIONS > type;
+ typedef cds::container::striped_set::details::boost_map_adapter< container_type, Options... > type;
};
}}} // namespace cds::intrusive::striped_set
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::slist adapter for hash map bucket
- template <typename Key, typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::slist< std::pair<Key const, T>, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Alloc, typename... Options>
+ class adapt< boost::container::slist< std::pair<Key const, T>, Alloc>, Options... >
{
public:
typedef boost::container::slist< std::pair<Key const, T>, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// boost::unordered_map adapter for hash map bucket
- template <typename Key, typename T, class Hash, class Pred, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::unordered_map< Key, T, Hash, Pred, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Hash, class Pred, class Alloc, typename... Options>
+ class adapt< boost::unordered_map< Key, T, Hash, Pred, Alloc>, Options... >
{
public:
typedef boost::unordered_map< Key, T, Hash, Pred, Alloc> container_type ; ///< underlying container type
- typedef cds::container::striped_set::details::boost_map_adapter< container_type, CDS_OPTIONS > type;
+ typedef cds::container::striped_set::details::boost_map_adapter< container_type, Options... > type;
};
}}} // namespace cds::intrusive::striped_set
namespace cds { namespace intrusive { namespace striped_set {
/// std::unordered_map adapter for hash map bucket
- template <typename Key, typename T, class Hash, class Pred, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::unordered_map< Key, T, Hash, Pred, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Hash, class Pred, class Alloc, typename... Options>
+ class adapt< std::unordered_map< Key, T, Hash, Pred, Alloc>, Options... >
{
public:
typedef std::unordered_map< Key, T, Hash, Pred, Alloc> container_type ; ///< underlying container type
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// stdext::hash_map adapter for hash map bucket
- template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< stdext::hash_map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+ class adapt< stdext::hash_map< Key, T, Traits, Alloc>, Options... >
{
public:
typedef stdext::hash_map< Key, T, Traits, Alloc> container_type ; ///< underlying container type
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::list adapter for hash map bucket
- template <typename Key, typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::list< std::pair<Key const, T>, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Alloc, typename... Options>
+ class adapt< std::list< std::pair<Key const, T>, Alloc>, Options... >
{
public:
typedef std::list< std::pair<Key const, T>, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::set adapter for hash set bucket
- template <typename Key, typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::map< Key, T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename Key, typename T, class Traits, class Alloc, typename... Options>
+ class adapt< std::map< Key, T, Traits, Alloc>, Options... >
{
public:
typedef std::map< Key, T, Traits, Alloc> container_type ; ///< underlying container type
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
</tr>
</table>
*/
- template <class Container, CDS_DECL_OPTIONS9>
- class StripedSet: protected intrusive::StripedSet<Container, CDS_OPTIONS9>
+ template <class Container, typename... Options>
+ class StripedSet: protected intrusive::StripedSet<Container, Options...>
{
//@cond
- typedef intrusive::StripedSet<Container, CDS_OPTIONS9> base_class;
+ typedef intrusive::StripedSet<Container, Options...> base_class;
//@endcond
public:
//@cond
<hr>
*/
- template < typename Container, CDS_DECL_OPTIONS >
+ template < typename Container, typename... Options>
class adapt
{
public:
};
};
- template <class Set, CDS_SPEC_OPTIONS>
+ template <class Set, typename... Options>
class boost_set_adapter: public striped_set::adapted_container
{
public:
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, copy_item_policy<container_type>
};
};
- template <class Map, CDS_SPEC_OPTIONS>
+ template <class Map, typename... Options>
class boost_map_adapter: public striped_set::adapted_container
{
public:
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, copy_item_policy<container_type>
}} // namespace cds::container
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::flat_set<T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename T, class Traits, class Alloc, typename... Options>
+ class adapt< boost::container::flat_set<T, Traits, Alloc>, Options... >
{
public:
typedef boost::container::flat_set<T, Traits, Alloc> container_type ; ///< underlying container type
- typedef cds::container::striped_set::details::boost_set_adapter< container_type, CDS_OPTIONS > type;
+ typedef cds::container::striped_set::details::boost_set_adapter< container_type, Options... > type;
};
}}}
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::list adapter for hash set bucket
- template <typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::list<T, Alloc>, CDS_OPTIONS >
+ template <typename T, class Alloc, typename... Options>
+ class adapt< boost::container::list<T, Alloc>, Options... >
{
public:
typedef boost::container::list<T, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::flat_set adapter for hash set bucket
- template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::set<T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename T, class Traits, class Alloc, typename... Options>
+ class adapt< boost::container::set<T, Traits, Alloc>, Options... >
{
public:
typedef boost::container::set<T, Traits, Alloc> container_type ; ///< underlying container type
- typedef cds::container::striped_set::details::boost_set_adapter< container_type, CDS_OPTIONS > type;
+ typedef cds::container::striped_set::details::boost_set_adapter< container_type, Options... > type;
};
}}} // namespace cds::intrusive::striped_set
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::slist adapter for hash set bucket
- template <typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::slist<T, Alloc>, CDS_OPTIONS >
+ template <typename T, class Alloc, typename... Options>
+ class adapt< boost::container::slist<T, Alloc>, Options... >
{
public:
typedef boost::container::slist<T, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::stable_vector adapter for hash set bucket
- template <typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::stable_vector<T, Alloc>, CDS_OPTIONS >
+ template <typename T, class Alloc, typename... Options>
+ class adapt< boost::container::stable_vector<T, Alloc>, Options... >
{
public:
typedef boost::container::stable_vector<T, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// boost::unordered_set adapter for hash set bucket
- template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::unordered_set<T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename T, class Traits, class Alloc, typename... Options>
+ class adapt< boost::unordered_set<T, Traits, Alloc>, Options... >
{
public:
typedef boost::unordered_set<T, Traits, Alloc> container_type ; ///< underlying container type
- typedef cds::container::striped_set::details::boost_set_adapter< container_type, CDS_OPTIONS > type;
+ typedef cds::container::striped_set::details::boost_set_adapter< container_type, Options... > type;
};
}}} // namespace cds::intrusive::striped_set
namespace cds { namespace intrusive { namespace striped_set {
/// boost::container::vector adapter for hash set bucket
- template <typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< boost::container::vector<T, Alloc>, CDS_OPTIONS >
+ template <typename T, class Alloc, typename... Options>
+ class adapt< boost::container::vector<T, Alloc>, Options... >
{
public:
typedef boost::container::vector<T, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::unordered_set adapter for hash set bucket
- template <typename T, class Hash, class Pred, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::unordered_set<T, Hash, Pred, Alloc>, CDS_OPTIONS >
+ template <typename T, class Hash, class Pred, class Alloc, typename... Options>
+ class adapt< std::unordered_set<T, Hash, Pred, Alloc>, Options... >
{
public:
typedef std::unordered_set<T, Hash, Pred, Alloc> container_type ; ///< underlying container type
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::unordered_set adapter for hash set bucket
- template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< stdext::hash_set<T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename T, class Traits, class Alloc, typename... Options>
+ class adapt< stdext::hash_set<T, Traits, Alloc>, Options... >
{
public:
typedef stdext::hash_set<T, Traits, Alloc> container_type ; ///< underlying container type
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::list adapter for hash set bucket
- template <typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::list<T, Alloc>, CDS_OPTIONS >
+ template <typename T, class Alloc, typename... Options>
+ class adapt< std::list<T, Alloc>, Options... >
{
public:
typedef std::list<T, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::set adapter for hash set bucket
- template <typename T, class Traits, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::set<T, Traits, Alloc>, CDS_OPTIONS >
+ template <typename T, class Traits, class Alloc, typename... Options>
+ class adapt< std::set<T, Traits, Alloc>, Options... >
{
public:
typedef std::set<T, Traits, Alloc> container_type ; ///< underlying container type
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
namespace cds { namespace intrusive { namespace striped_set {
/// std::vector adapter for hash set bucket
- template <typename T, class Alloc, CDS_SPEC_OPTIONS>
- class adapt< std::vector<T, Alloc>, CDS_OPTIONS >
+ template <typename T, class Alloc, typename... Options>
+ class adapt< std::vector<T, Alloc>, Options... >
{
public:
typedef std::vector<T, Alloc> container_type ; ///< underlying container type
private:
//@cond
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
typedef typename cds::opt::select<
typename cds::opt::value<
typename cds::opt::find_option<
cds::opt::copy_policy< cds::container::striped_set::move_item >
- , CDS_OPTIONS
+ , Options...
>::type
>::copy_policy
, cds::container::striped_set::copy_item, cds::container::striped_set::copy_item_policy<container_type>
using cds::intrusive::treiber_stack::stat;
using cds::intrusive::treiber_stack::empty_stat;
- template <typename GC, typename T, CDS_DECL_OPTIONS11>
+ template <typename GC, typename T, typename... Options>
struct make_treiber_stack
{
typedef T value_type;
};
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS11 >::type
- ,CDS_OPTIONS11
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
typedef GC gc;
- opt::elimination_backoff - back-off strategy to wait for elimination, default is cds::backoff::delay<>
- opt::lock_type - a lock type used in elimination back-off, default is cds::lock::Spin.
*/
- template < typename GC, typename T, CDS_DECL_OPTIONS11 >
+ template < typename GC, typename T, typename... Options >
class TreiberStack
: public
#ifdef CDS_DOXYGEN_INVOKED
intrusive::TreiberStack< GC, cds::intrusive::single_link::node< T >, Options... >
#else
- treiber_stack::make_treiber_stack< GC, T, CDS_OPTIONS11 >::type
+ treiber_stack::make_treiber_stack< GC, T, Options... >::type
#endif
{
//@cond
- typedef treiber_stack::make_treiber_stack< GC, T, CDS_OPTIONS11 > options;
+ typedef treiber_stack::make_treiber_stack< GC, T, Options... > options;
typedef typename options::type base_class;
//@endcond
public:
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS11>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef TreiberStack< GC2, T2, CDS_OTHER_OPTIONS11> other ; ///< Rebinding result
+ typedef TreiberStack< GC2, T2, Options2...> other ; ///< Rebinding result
};
public:
//@cond
namespace details {
- template <typename T, CDS_DECL_OPTIONS7>
+ template <typename T, typename... Options>
struct make_tsigas_cycle_queue
{
typedef T value_type;
};
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
typedef typename options::allocator::template rebind<value_type>::other allocator_type;
dynamic_queue dynQueue( 1024 );
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS7>
+ template <typename T, typename... Options>
class TsigasCycleQueue:
#ifdef CDS_DOXYGEN_INVOKED
intrusive::TsigasCycleQueue< T, Options... >
#else
- details::make_tsigas_cycle_queue< T, CDS_OPTIONS7 >::type
+ details::make_tsigas_cycle_queue< T, Options... >::type
#endif
{
//@cond
- typedef details::make_tsigas_cycle_queue< T, CDS_OPTIONS7 > options;
+ typedef details::make_tsigas_cycle_queue< T, Options... > options;
typedef typename options::type base_class;
//@endcond
public:
typedef typename base_class::memory_model memory_model ; ///< Memory ordering. See cds::opt::memory_model option
/// Rebind template arguments
- template <typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename T2, typename... Options2>
struct rebind {
- typedef TsigasCycleQueue< T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef TsigasCycleQueue< T2, Options2...> other ; ///< Rebinding result
};
protected:
> myQueue;
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS6>
+ template <typename T, typename... Options>
class VyukovMPMCCycleQueue
: public cds::bounded_container
{
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS6 >::type
- ,CDS_OPTIONS6
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
//@endcond
typedef typename options::memory_model memory_model ; ///< Memory ordering. See cds::opt::memory_model option
/// Rebind template arguments
- template <typename T2, CDS_DECL_OTHER_OPTIONS6>
+ template <typename T2, typename... Options2>
struct rebind {
- typedef VyukovMPMCCycleQueue< T2, CDS_OTHER_OPTIONS6> other ; ///< Rebinding result
+ typedef VyukovMPMCCycleQueue< T2, Options2...> other ; ///< Rebinding result
};
protected:
using single_link::default_hook;
//@cond
- template < typename HookType, CDS_DECL_OPTIONS2>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef node<gc, tag> node_type;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < CDS_DECL_OPTIONS2 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS2 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
> barQueue;
\endcode
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS9>
+ template <typename GC, typename T, typename... Options>
class BasketQueue
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
typedef typename std::conditional<
typedef typename options::memory_model memory_model ; ///< Memory ordering. See cds::opt::memory_model option
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef BasketQueue< GC2, T2, CDS_OTHER_OPTIONS9> other ; ///< Rebinding result
+ typedef BasketQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
static const size_t m_nHazardPtrCount = 6 ; ///< Count of hazard pointer required for the algorithm
typedef opt::none tag;
};
- template < typename HookType, CDS_DECL_OPTIONS3>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS3>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::probeset_type probeset_type;
typedef typename options::tag tag;
- cuckoo::store_hash - store hash values in the node or not. Default is 0 (no storing)
- opt::tag - tag to distinguish different nodes in one struct. Default is opt::none
*/
- template < CDS_DECL_OPTIONS3 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS3 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- cuckoo::store_hash - store hash values in the node or not. Default is 0 (no storing)
- opt::tag - tag to distinguish different nodes in one struct. Default is opt::none
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS3 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS3 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- cuckoo::store_hash - store hash values in the node or not. Default is 0 (no storing)
- opt::tag - tag to distinguish different nodes in one struct. Default is opt::none
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS3 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS3 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref CuckooSet.
*/
- template <CDS_DECL_OPTIONS11>
+ template <typename... Options>
struct make_traits {
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< cuckoo::type_traits, CDS_OPTIONS10 >::type
- ,CDS_OPTIONS11
+ typename cds::opt::find_type_traits< cuckoo::type_traits, Options... >::type
+ ,Options...
>::type type ; ///< Result of metafunction
};
//@endcond
//@cond
- template < typename HookType, CDS_DECL_OPTIONS2>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef node<gc, tag> node_type;
- opt::gc - garbage collector used.
- opt::tag - a tag
*/
- template < CDS_DECL_OPTIONS2 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::gc - garbage collector used.
- opt::tag - a tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::gc - garbage collector used.
- opt::tag - a tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS2 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref EllenBinTree.
*/
- template <CDS_DECL_OPTIONS12>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS12 >::type
- ,CDS_OPTIONS12
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
- \p opt::enable_elimination - enable/disable operation \ref cds_elimination_description "elimination"
By default, the elimination is disabled.
*/
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
- ,CDS_OPTIONS8
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
- \p opt::enable_elimination - enable/disable operation \ref cds_elimination_description "elimination"
By default, the elimination is disabled.
*/
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS8 >::type
- ,CDS_OPTIONS8
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
//@endcond
//@cond
- template < typename HookType, CDS_DECL_OPTIONS3>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS3>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef typename options::lock_type lock_type;
- opt::lock_type - lock type used for node locking. Default is lock::Spin
- opt::tag - tag
*/
- template < CDS_DECL_OPTIONS3 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS3 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::lock_type - lock type used for node locking. Default is lock::Spin
- opt::tag - tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS3 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS3 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::lock_type - lock type used for node locking. Default is lock::Spin
- opt::tag - tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS3 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS3 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
See \ref LazyList, \ref type_traits, \ref cds::opt::make_options.
*/
- template <CDS_DECL_OPTIONS11>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS11 >::type
- ,CDS_OPTIONS11
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
//@cond
// Rebind options (split-list support)
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct rebind_options {
typedef LazyList<
gc
, value_type
- , typename cds::opt::make_options< options, CDS_OPTIONS8>::type
+ , typename cds::opt::make_options< options, Options...>::type
> type;
};
//@endcond
//@cond
// Rebind options (split-list support)
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct rebind_options {
typedef LazyList<
gc
, value_type
- , typename cds::opt::make_options< options, CDS_OPTIONS8>::type
+ , typename cds::opt::make_options< options, Options...>::type
> type;
};
//@endcond
//@cond
// Rebind options (split-list support)
- template <CDS_DECL_OPTIONS8>
+ template <typename... Options>
struct rebind_options {
typedef LazyList<
gc
, value_type
- , typename cds::opt::make_options< options, CDS_OPTIONS8>::type
+ , typename cds::opt::make_options< options, Options...>::type
> type;
};
//@endcond
//@endcond
//@cond
- template < typename HookType, CDS_DECL_OPTIONS2>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef node<gc, tag> node_type;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < CDS_DECL_OPTIONS2 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS2 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref MichaelList.
*/
- template <CDS_DECL_OPTIONS9>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
- //typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS9>::type type ; ///< Result of metafunction
+ //typedef typename cds::opt::make_options< type_traits, Options...>::type type ; ///< Result of metafunction
# endif
};
//@cond
// Rebind options (split-list support)
- template <CDS_DECL_OPTIONS7>
+ template <typename... Options>
struct rebind_options {
typedef MichaelList<
gc
, value_type
- , typename cds::opt::make_options< options, CDS_OPTIONS7>::type
+ , typename cds::opt::make_options< options, Options...>::type
> type;
};
//@endcond
//@cond
// Rebind options (split-list support)
- template <CDS_DECL_OPTIONS7>
+ template <typename... Options>
struct rebind_options {
typedef MichaelList<
gc
, value_type
- , typename cds::opt::make_options< options, CDS_OPTIONS7>::type
+ , typename cds::opt::make_options< options, Options...>::type
> type;
};
//@endcond
//@cond
// Rebind options (split-list support)
- template <CDS_DECL_OPTIONS7>
+ template <typename... Options>
struct rebind_options {
typedef MichaelList<
gc
, value_type
- , typename cds::opt::make_options< options, CDS_OPTIONS7>::type
+ , typename cds::opt::make_options< options, Options...>::type
> type;
};
//@endcond
See \ref MichaelHashSet, \ref type_traits.
*/
- template <CDS_DECL_OPTIONS3>
+ template <typename... Options>
struct make_traits {
- typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS3>::type type ; ///< Result of metafunction
+ typedef typename cds::opt::make_options< type_traits, Options...>::type type ; ///< Result of metafunction
};
//@cond
\endcode
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS9>
- class MoirQueue: public MSQueue< GC, T, CDS_OPTIONS9 >
+ template <typename GC, typename T, typename... Options>
+ class MoirQueue: public MSQueue< GC, T, Options... >
{
//@cond
- typedef MSQueue< GC, T, CDS_OPTIONS9 > base_class;
+ typedef MSQueue< GC, T, Options... > base_class;
typedef typename base_class::node_type node_type;
//@endcond
//@endcond
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef MoirQueue< GC2, T2, CDS_OTHER_OPTIONS9> other ; ///< Rebinding result
+ typedef MoirQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
protected:
See \ref MSPriorityQueue, \ref type_traits, \ref cds::opt::make_options.
*/
- template <CDS_DECL_OPTIONS7>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS7 >::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
> barQueue;
\endcode
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS9>
+ template <typename GC, typename T, typename... Options>
class MSQueue
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
//@endcond
typedef typename options::memory_model memory_model ; ///< Memory ordering. See cds::opt::memory_model option
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef MSQueue< GC2, T2, CDS_OTHER_OPTIONS9> other ; ///< Rebinding result
+ typedef MSQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
protected:
//@endcond
//@cond
- template < typename HookType, CDS_DECL_OPTIONS2>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef node<gc, tag> node_type;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < CDS_DECL_OPTIONS2 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS2 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
\endcode
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS9>
+ template <typename GC, typename T, typename... Options>
class OptimisticQueue
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
typedef typename std::conditional<
#endif
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS9>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef OptimisticQueue< GC2, T2, CDS_OTHER_OPTIONS9> other ; ///< Rebinding result
+ typedef OptimisticQueue< GC2, T2, Options2...> other ; ///< Rebinding result
};
protected:
- \p opt::permutation_generator - a random permutation generator for sequence [0, quasi_factor),
default is cds::opt::v::random2_permutation<int>
*/
- template <CDS_DECL_OPTIONS9>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
//@endcond
//@cond
- template < typename HookType, CDS_DECL_OPTIONS2>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef node<gc, tag> node_type;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < CDS_DECL_OPTIONS2 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::gc - garbage collector used.
- opt::tag - tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS2 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
//@endcond
//@cond
- template < typename HookType, CDS_DECL_OPTIONS2>
+ template < typename HookType, typename... Options>
struct hook
{
- typedef typename opt::make_options< default_hook, CDS_OPTIONS2>::type options;
+ typedef typename opt::make_options< default_hook, Options...>::type options;
typedef typename options::gc gc;
typedef typename options::tag tag;
typedef node<gc, tag> node_type;
- opt::gc - garbage collector used.
- opt::tag - a tag
*/
- template < CDS_DECL_OPTIONS2 >
- struct base_hook: public hook< opt::base_hook_tag, CDS_OPTIONS2 >
+ template < typename... Options >
+ struct base_hook: public hook< opt::base_hook_tag, Options... >
{};
/// Member hook
- opt::gc - garbage collector used.
- opt::tag - a tag
*/
- template < size_t MemberOffset, CDS_DECL_OPTIONS2 >
- struct member_hook: public hook< opt::member_hook_tag, CDS_OPTIONS2 >
+ template < size_t MemberOffset, typename... Options >
+ struct member_hook: public hook< opt::member_hook_tag, Options... >
{
//@cond
static const size_t c_nMemberOffset = MemberOffset;
- opt::gc - garbage collector used.
- opt::tag - a tag
*/
- template <typename NodeTraits, CDS_DECL_OPTIONS2 >
- struct traits_hook: public hook< opt::traits_hook_tag, CDS_OPTIONS2 >
+ template <typename NodeTraits, typename... Options >
+ struct traits_hook: public hook< opt::traits_hook_tag, Options... >
{
//@cond
typedef NodeTraits node_traits;
This is a wrapper for <tt> cds::opt::make_options< type_traits, Options...> </tt>
\p Options list see \ref SkipListSet.
*/
- template <CDS_DECL_OPTIONS13>
+ template <typename... Options>
struct make_traits {
# ifdef CDS_DOXYGEN_INVOKED
typedef implementation_defined type ; ///< Metafunction result
# else
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< type_traits, CDS_OPTIONS13 >::type
- ,CDS_OPTIONS13
+ typename cds::opt::find_type_traits< type_traits, Options... >::type
+ ,Options...
>::type type;
# endif
};
See \ref MichaelHashSet, \ref type_traits.
*/
- template <CDS_DECL_OPTIONS6>
+ template <typename... Options>
struct make_traits {
- typedef typename cds::opt::make_options< type_traits, CDS_OPTIONS6>::type type ; ///< Result of metafunction
+ typedef typename cds::opt::make_options< type_traits, Options...>::type type ; ///< Result of metafunction
};
- \p opt::allocator - allocator used to allocate bucket table. Default is \ref CDS_DEFAULT_ALLOCATOR
- \p opt::memory_model - memory model used. Possible types are opt::v::sequential_consistent, opt::v::relaxed_ordering
*/
- template <typename GC, typename Node, CDS_DECL_OPTIONS2>
+ template <typename GC, typename Node, typename... Options>
class static_bucket_table
{
//@cond
typedef CDS_DEFAULT_ALLOCATOR allocator;
typedef opt::v::relaxed_ordering memory_model;
};
- typedef typename opt::make_options< default_options, CDS_OPTIONS2 >::type options;
+ typedef typename opt::make_options< default_options, Options... >::type options;
//@endcond
public:
- \p opt::allocator - allocator used to allocate bucket table. Default is \ref CDS_DEFAULT_ALLOCATOR
- \p opt::memory_model - memory model used. Possible types are opt::v::sequential_consistent, opt::v::relaxed_ordering
*/
- template <typename GC, typename Node, CDS_DECL_OPTIONS2>
+ template <typename GC, typename Node, typename... Options>
class expandable_bucket_table
{
//@cond
typedef CDS_DEFAULT_ALLOCATOR allocator;
typedef opt::v::relaxed_ordering memory_model;
};
- typedef typename opt::make_options< default_options, CDS_OPTIONS2 >::type options;
+ typedef typename opt::make_options< default_options, Options... >::type options;
//@endcond
public:
typedef GC gc ; ///< Garbage collector
//@cond
namespace details {
- template <bool Value, typename GC, typename Node, CDS_DECL_OPTIONS2>
+ template <bool Value, typename GC, typename Node, typename... Options>
struct bucket_table_selector;
- template <typename GC, typename Node, CDS_SPEC_OPTIONS2>
- struct bucket_table_selector< true, GC, Node, CDS_OPTIONS2>
+ template <typename GC, typename Node, typename... Options>
+ struct bucket_table_selector< true, GC, Node, Options...>
{
- typedef expandable_bucket_table<GC, Node, CDS_OPTIONS2> type;
+ typedef expandable_bucket_table<GC, Node, Options...> type;
};
- template <typename GC, typename Node, CDS_SPEC_OPTIONS2>
- struct bucket_table_selector< false, GC, Node, CDS_OPTIONS2>
+ template <typename GC, typename Node, typename... Options>
+ struct bucket_table_selector< false, GC, Node, Options...>
{
- typedef static_bucket_table<GC, Node, CDS_OPTIONS2> type;
+ typedef static_bucket_table<GC, Node, Options...> type;
};
template <typename GC, class Alloc >
See intrusive::striped_set::adapt metafunction for the description of interface that the bucket container must provide
to be \p %StripedSet compatible.
*/
- template <class Container, CDS_DECL_OPTIONS9>
+ template <class Container, typename... Options>
class StripedSet
{
public:
};
typedef typename cds::opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS9 >::type
- ,CDS_OPTIONS9
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
//@endcond
typedef Container underlying_container_type ; ///< original intrusive container type for the bucket
- typedef typename cds::intrusive::striped_set::adapt< underlying_container_type, CDS_OPTIONS9 >::type bucket_type ; ///< container type adapted for hash set
+ typedef typename cds::intrusive::striped_set::adapt< underlying_container_type, Options... >::type bucket_type ; ///< container type adapted for hash set
typedef typename bucket_type::value_type value_type ; ///< value type stored in the set
typedef typename options::hash hash ; ///< Hash functor
<hr>
*/
- template < typename Container, CDS_DECL_OPTIONS >
+ template < typename Container, typename... Options >
class adapt
{
public:
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::avl_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+ class adapt< boost::intrusive::avl_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
{
public:
typedef boost::intrusive::avl_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 > container_type ; ///< underlying intrusive container type
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS3, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::list< T, CDS_BOOST_INTRUSIVE_OPTIONS3 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS3, typename... Options>
+ class adapt< boost::intrusive::list< T, CDS_BOOST_INTRUSIVE_OPTIONS3 >, Options... >
{
public:
typedef boost::intrusive::list< T, CDS_BOOST_INTRUSIVE_OPTIONS3 > container_type ; ///< underlying intrusive container type
typedef typename container_type::value_type value_type ; ///< value type stored in the container
typedef typename container_type::iterator iterator ; ///< container iterator
typedef typename container_type::const_iterator const_iterator ; ///< container const iterator
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
private:
struct find_predicate
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+ class adapt< boost::intrusive::set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
{
public:
typedef boost::intrusive::set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 > container_type ; ///< underlying intrusive container type
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::sg_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+ class adapt< boost::intrusive::sg_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
{
public:
typedef boost::intrusive::sg_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 > container_type ; ///< underlying intrusive container type
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS5, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::slist< T, CDS_BOOST_INTRUSIVE_OPTIONS5 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS5, typename... Options>
+ class adapt< boost::intrusive::slist< T, CDS_BOOST_INTRUSIVE_OPTIONS5 >, Options... >
{
public:
typedef boost::intrusive::slist< T, CDS_BOOST_INTRUSIVE_OPTIONS5 > container_type ; ///< underlying intrusive container type
typedef typename container_type::iterator iterator ; ///< container iterator
typedef typename container_type::const_iterator const_iterator ; ///< container const iterator
- typedef typename cds::opt::details::make_comparator_from_option_list< value_type, CDS_OPTIONS >::type key_comparator;
+ typedef typename cds::opt::details::make_comparator_from_option_list< value_type, Options... >::type key_comparator;
private:
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::splay_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+ class adapt< boost::intrusive::splay_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
{
public:
typedef boost::intrusive::splay_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 > container_type ; ///< underlying intrusive container type
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::treap_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS4, typename... Options>
+ class adapt< boost::intrusive::treap_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 >, Options... >
{
public:
typedef boost::intrusive::treap_set< T, CDS_BOOST_INTRUSIVE_OPTIONS4 > container_type ; ///< underlying intrusive container type
//@cond
namespace cds { namespace intrusive { namespace striped_set {
- template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS10, CDS_SPEC_OPTIONS>
- class adapt< boost::intrusive::unordered_set< T, CDS_BOOST_INTRUSIVE_OPTIONS10 >, CDS_OPTIONS >
+ template <typename T, CDS_BOOST_INTRUSIVE_DECL_OPTIONS10, typename... Options>
+ class adapt< boost::intrusive::unordered_set< T, CDS_BOOST_INTRUSIVE_OPTIONS10 >, Options... >
{
public:
typedef boost::intrusive::unordered_set< T, CDS_BOOST_INTRUSIVE_OPTIONS10 > container_type ; ///< underlying intrusive container type
typedef typename opt::value<
typename opt::find_option<
opt::buffer< opt::v::static_buffer< cds::any_type, 256 > >,
- CDS_OPTIONS
+ Options...
>::type
>::buffer initial_buffer_type;
typedef typename initial_buffer_type::template rebind< typename container_type::bucket_type >::other buffer_type;
> stack_t;
\endcode
*/
- template <typename GC, typename T, CDS_DECL_OPTIONS13>
+ template <typename GC, typename T, typename... Options>
class TreiberStack
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS13 >::type
- ,CDS_OPTIONS13
+ typename cds::opt::find_type_traits< default_options, Options... >::type
+ ,Options...
>::type options;
//@endcond
public:
/// Rebind template arguments
- template <typename GC2, typename T2, CDS_DECL_OTHER_OPTIONS13>
+ template <typename GC2, typename T2, typename... Options2>
struct rebind {
- typedef TreiberStack< GC2, T2, CDS_OTHER_OPTIONS13> other ; ///< Rebinding result
+ typedef TreiberStack< GC2, T2, Options2...> other ; ///< Rebinding result
};
public:
dynamic_queue dynQueue( 1024 );
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS7>
+ template <typename T, typename... Options>
class TsigasCycleQueue: public cds::bounded_container
{
//@cond
public:
//@cond
typedef typename opt::make_options<
- typename cds::opt::find_type_traits< default_options, CDS_OPTIONS7>::type
- ,CDS_OPTIONS7
+ typename cds::opt::find_type_traits< default_options, Options...>::type
+ ,Options...
>::type options;
//@endcond
public:
/// Rebind template arguments
- template <typename T2, CDS_DECL_OTHER_OPTIONS7>
+ template <typename T2, typename... Options2>
struct rebind {
- typedef TsigasCycleQueue< T2, CDS_OTHER_OPTIONS7> other ; ///< Rebinding result
+ typedef TsigasCycleQueue< T2, Options2...> other ; ///< Rebinding result
};
public:
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS6>
+ template <typename T, typename... Options>
class VyukovMPMCCycleQueue
- : private container::VyukovMPMCCycleQueue< T *, CDS_OPTIONS6 >
+ : private container::VyukovMPMCCycleQueue< T *, Options... >
{
//@cond
- typedef container::VyukovMPMCCycleQueue< T *, CDS_OPTIONS6 > base_class;
+ typedef container::VyukovMPMCCycleQueue< T *, Options... > base_class;
//@endcond
public:
typedef T value_type ; ///< type of data stored in the queue
public:
/// Rebind template arguments
- template <typename T2, CDS_DECL_OTHER_OPTIONS6>
+ template <typename T2, typename... Options2>
struct rebind {
- typedef VyukovMPMCCycleQueue< T2, CDS_OTHER_OPTIONS6> other ; ///< Rebinding result
+ typedef VyukovMPMCCycleQueue< T2, Options2...> other ; ///< Rebinding result
};
public:
pool_allocator().deallocate( p , 1 );
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS6>
+ template <typename T, typename... Options>
class vyukov_queue_pool
{
public:
- typedef cds::intrusive::VyukovMPMCCycleQueue< T, CDS_OPTIONS6 > queue_type ; ///< Queue type
+ typedef cds::intrusive::VyukovMPMCCycleQueue< T, Options... > queue_type ; ///< Queue type
protected:
//@cond
{
typedef CDS_DEFAULT_ALLOCATOR allocator;
};
- typedef typename opt::make_options< default_options, CDS_OPTIONS6 >::type options;
+ typedef typename opt::make_options< default_options, Options... >::type options;
//@endcond
public:
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS6>
+ template <typename T, typename... Options>
class lazy_vyukov_queue_pool
{
public:
- typedef cds::intrusive::VyukovMPMCCycleQueue< T, CDS_OPTIONS6 > queue_type ; ///< Queue type
+ typedef cds::intrusive::VyukovMPMCCycleQueue< T, Options... > queue_type ; ///< Queue type
protected:
//@cond
{
typedef CDS_DEFAULT_ALLOCATOR allocator;
};
- typedef typename opt::make_options< default_options, CDS_OPTIONS6 >::type options;
+ typedef typename opt::make_options< default_options, Options... >::type options;
//@endcond
public:
pool_allocator().deallocate( p , 1 );
\endcode
*/
- template <typename T, CDS_DECL_OPTIONS6>
+ template <typename T, typename... Options>
class bounded_vyukov_queue_pool
{
public:
- typedef cds::intrusive::VyukovMPMCCycleQueue< T, CDS_OPTIONS6 > queue_type ; ///< Queue type
+ typedef cds::intrusive::VyukovMPMCCycleQueue< T, Options... > queue_type ; ///< Queue type
protected:
//@cond
{
typedef CDS_DEFAULT_ALLOCATOR allocator;
};
- typedef typename opt::make_options< default_options, CDS_OPTIONS6 >::type options;
+ typedef typename opt::make_options< default_options, Options... >::type options;
//@endcond
public:
typedef typename make_comparator< T,
typename opt::make_options<
- typename opt::find_type_traits< default_traits, CDS_OPTIONS >::type
- ,CDS_OPTIONS
+ typename opt::find_type_traits< default_traits, Options... >::type
+ ,Options...
>::type
>::type type;
};
# error <cds/opt/options.h> must be included instead of <cds/opt/make_options_var.h>
#endif
-#define CDS_DECL_OPTIONS1 typename... Options
-#define CDS_DECL_OPTIONS2 typename... Options
-#define CDS_DECL_OPTIONS3 typename... Options
-#define CDS_DECL_OPTIONS4 typename... Options
-#define CDS_DECL_OPTIONS5 typename... Options
-#define CDS_DECL_OPTIONS6 typename... Options
-#define CDS_DECL_OPTIONS7 typename... Options
-#define CDS_DECL_OPTIONS8 typename... Options
-#define CDS_DECL_OPTIONS9 typename... Options
-#define CDS_DECL_OPTIONS10 typename... Options
-#define CDS_DECL_OPTIONS11 typename... Options
-#define CDS_DECL_OPTIONS12 typename... Options
-#define CDS_DECL_OPTIONS13 typename... Options
-#define CDS_DECL_OPTIONS14 typename... Options
-#define CDS_DECL_OPTIONS15 typename... Options
-#define CDS_DECL_OPTIONS16 typename... Options
-
-#define CDS_DECL_OPTIONS typename... Options
-
-
-#define CDS_DECL_OTHER_OPTIONS1 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS2 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS3 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS4 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS5 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS6 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS7 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS8 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS9 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS10 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS11 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS12 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS13 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS14 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS15 typename... Options2
-#define CDS_DECL_OTHER_OPTIONS16 typename... Options2
-
-// for template specializations
-#define CDS_SPEC_OPTIONS1 typename... Options
-#define CDS_SPEC_OPTIONS2 typename... Options
-#define CDS_SPEC_OPTIONS3 typename... Options
-#define CDS_SPEC_OPTIONS4 typename... Options
-#define CDS_SPEC_OPTIONS5 typename... Options
-#define CDS_SPEC_OPTIONS6 typename... Options
-#define CDS_SPEC_OPTIONS7 typename... Options
-#define CDS_SPEC_OPTIONS8 typename... Options
-#define CDS_SPEC_OPTIONS9 typename... Options
-#define CDS_SPEC_OPTIONS10 typename... Options
-#define CDS_SPEC_OPTIONS11 typename... Options
-#define CDS_SPEC_OPTIONS12 typename... Options
-#define CDS_SPEC_OPTIONS13 typename... Options
-#define CDS_SPEC_OPTIONS14 typename... Options
-#define CDS_SPEC_OPTIONS15 typename... Options
-#define CDS_SPEC_OPTIONS16 typename... Options
-
-#define CDS_SPEC_OPTIONS typename... Options
-
-#define CDS_OPTIONS1 Options...
-#define CDS_OPTIONS2 Options...
-#define CDS_OPTIONS3 Options...
-#define CDS_OPTIONS4 Options...
-#define CDS_OPTIONS5 Options...
-#define CDS_OPTIONS6 Options...
-#define CDS_OPTIONS7 Options...
-#define CDS_OPTIONS8 Options...
-#define CDS_OPTIONS9 Options...
-#define CDS_OPTIONS10 Options...
-#define CDS_OPTIONS11 Options...
-#define CDS_OPTIONS12 Options...
-#define CDS_OPTIONS13 Options...
-#define CDS_OPTIONS14 Options...
-#define CDS_OPTIONS15 Options...
-#define CDS_OPTIONS16 Options...
-//#define CDS_OPTIONS17 Options...
-//#define CDS_OPTIONS18 Options...
-//#define CDS_OPTIONS19 Options...
-//#define CDS_OPTIONS20 Options...
-
-#define CDS_OPTIONS Options...
-
-#define CDS_OTHER_OPTIONS1 Options2...
-#define CDS_OTHER_OPTIONS2 Options2...
-#define CDS_OTHER_OPTIONS3 Options2...
-#define CDS_OTHER_OPTIONS4 Options2...
-#define CDS_OTHER_OPTIONS5 Options2...
-#define CDS_OTHER_OPTIONS6 Options2...
-#define CDS_OTHER_OPTIONS7 Options2...
-#define CDS_OTHER_OPTIONS8 Options2...
-#define CDS_OTHER_OPTIONS9 Options2...
-#define CDS_OTHER_OPTIONS10 Options2...
-#define CDS_OTHER_OPTIONS11 Options2...
-#define CDS_OTHER_OPTIONS12 Options2...
-#define CDS_OTHER_OPTIONS13 Options2...
-#define CDS_OTHER_OPTIONS14 Options2...
-#define CDS_OTHER_OPTIONS15 Options2...
-#define CDS_OTHER_OPTIONS16 Options2...
-
namespace cds { namespace opt {
//@cond
CDS_CONSTEXPR=constexpr \
CDS_ATOMIC=std \
CDS_DELETE_SPECIFIER="=delete"\
- CDS_DEFAULT_SPECIFIER="=default" \
- CDS_DECL_OPTIONS="typename... Options" \
- CDS_DECL_OPTIONS1="typename... Options" \
- CDS_DECL_OPTIONS2="typename... Options" \
- CDS_DECL_OPTIONS3="typename... Options" \
- CDS_DECL_OPTIONS4="typename... Options" \
- CDS_DECL_OPTIONS5="typename... Options" \
- CDS_DECL_OPTIONS6="typename... Options" \
- CDS_DECL_OPTIONS7="typename... Options" \
- CDS_DECL_OPTIONS8="typename... Options" \
- CDS_DECL_OPTIONS9="typename... Options" \
- CDS_DECL_OPTIONS10="typename... Options" \
- CDS_DECL_OPTIONS11="typename... Options" \
- CDS_DECL_OPTIONS12="typename... Options" \
- CDS_DECL_OPTIONS13="typename... Options" \
- CDS_DECL_OPTIONS14="typename... Options" \
- CDS_DECL_OPTIONS15="typename... Options" \
- CDS_DECL_OPTIONS16="typename... Options" \
- CDS_SPEC_OPTIONS="typename... Options" \
- CDS_SPEC_OPTIONS1="typename... Options" \
- CDS_SPEC_OPTIONS2="typename... Options" \
- CDS_SPEC_OPTIONS3="typename... Options" \
- CDS_SPEC_OPTIONS4="typename... Options" \
- CDS_SPEC_OPTIONS5="typename... Options" \
- CDS_SPEC_OPTIONS6="typename... Options" \
- CDS_SPEC_OPTIONS7="typename... Options" \
- CDS_SPEC_OPTIONS8="typename... Options" \
- CDS_SPEC_OPTIONS9="typename... Options" \
- CDS_SPEC_OPTIONS10="typename... Options" \
- CDS_SPEC_OPTIONS11="typename... Options" \
- CDS_SPEC_OPTIONS12="typename... Options" \
- CDS_SPEC_OPTIONS13="typename... Options" \
- CDS_SPEC_OPTIONS14="typename... Options" \
- CDS_SPEC_OPTIONS15="typename... Options" \
- CDS_SPEC_OPTIONS16="typename... Options" \
- CDS_OPTIONS="Options..." \
- CDS_OPTIONS1="Options..." \
- CDS_OPTIONS2="Options..." \
- CDS_OPTIONS3="Options..." \
- CDS_OPTIONS4="Options..." \
- CDS_OPTIONS5="Options..." \
- CDS_OPTIONS6="Options..." \
- CDS_OPTIONS7="Options..." \
- CDS_OPTIONS8="Options..." \
- CDS_OPTIONS9="Options..." \
- CDS_OPTIONS10="Options..." \
- CDS_OPTIONS11="Options..." \
- CDS_OPTIONS12="Options..." \
- CDS_OPTIONS13="Options..." \
- CDS_OPTIONS14="Options..." \
- CDS_OPTIONS15="Options..." \
- CDS_OPTIONS16="Options..." \
- CDS_DECL_OTHER_OPTIONS1="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS2="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS3="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS4="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS5="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS6="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS7="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS8="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS9="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS10="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS11="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS12="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS13="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS14="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS15="typename... Options2" \
- CDS_DECL_OTHER_OPTIONS16="typename... Options2" \
- CDS_OTHER_OPTIONS1="Options2..." \
- CDS_OTHER_OPTIONS2="Options2..." \
- CDS_OTHER_OPTIONS3="Options2..." \
- CDS_OTHER_OPTIONS4="Options2..." \
- CDS_OTHER_OPTIONS5="Options2..." \
- CDS_OTHER_OPTIONS6="Options2..." \
- CDS_OTHER_OPTIONS7="Options2..." \
- CDS_OTHER_OPTIONS8="Options2..." \
- CDS_OTHER_OPTIONS9="Options2..." \
- CDS_OTHER_OPTIONS10="Options2..." \
- CDS_OTHER_OPTIONS11="Options2..." \
- CDS_OTHER_OPTIONS12="Options2..." \
- CDS_OTHER_OPTIONS13="Options2..." \
- CDS_OTHER_OPTIONS14="Options2..." \
- CDS_OTHER_OPTIONS15="Options2..." \
- CDS_OTHER_OPTIONS16="Options2..."
+ CDS_DEFAULT_SPECIFIER="=default"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
}
};
- template <typename K, typename V, CDS_DECL_OPTIONS10>
+ template <typename K, typename V, typename... Options>
class CuckooStripedMap:
public cc::CuckooMap< K, V,
typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::striping<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type
>
{
public:
typedef typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::striping<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type cuckoo_traits;
typedef cc::CuckooMap< K, V, cuckoo_traits > cuckoo_base_class;
}
};
- template <typename K, typename V, CDS_DECL_OPTIONS10>
+ template <typename K, typename V, typename... Options>
class CuckooRefinableMap:
public cc::CuckooMap< K, V,
typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::refinable<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type
>
{
public:
typedef typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::refinable<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type cuckoo_traits;
typedef cc::CuckooMap< K, V, cuckoo_traits > cuckoo_base_class;
// StripedHashMap
// for sequential containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class StripedHashMap_seq:
public cc::StripedMap< BucketEntry,
co::mutex_policy< cc::striped_set::striping<> >
,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedMap< BucketEntry,
co::mutex_policy< cc::striped_set::striping<> >
,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
};
// for non-sequential ordered containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class StripedHashMap_ord:
public cc::StripedMap< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::striping<> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedMap< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::striping<> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
// RefinableHashMap
// for sequential containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class RefinableHashMap_seq:
public cc::StripedMap< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::refinable<> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedMap< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::refinable<> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
};
// for non-sequential ordered containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class RefinableHashMap_ord:
public cc::StripedMap< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::refinable<> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedMap< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::refinable<> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
}
- template <typename K, typename V, CDS_SPEC_OPTIONS10>
- static inline void print_stat( CuckooStripedMap< K, V, CDS_OPTIONS10 > const& m )
+ template <typename K, typename V, typename... Options>
+ static inline void print_stat( CuckooStripedMap< K, V, Options... > const& m )
{
- typedef CuckooStripedMap< K, V, CDS_OPTIONS10 > map_type;
+ typedef CuckooStripedMap< K, V, Options... > map_type;
print_stat( static_cast<typename map_type::cuckoo_base_class const&>(m) );
}
- template <typename K, typename V, CDS_SPEC_OPTIONS10>
- static inline void print_stat( CuckooRefinableMap< K, V, CDS_OPTIONS10 > const& m )
+ template <typename K, typename V, typename... Options>
+ static inline void print_stat( CuckooRefinableMap< K, V, Options... > const& m )
{
- typedef CuckooRefinableMap< K, V, CDS_OPTIONS10 > map_type;
+ typedef CuckooRefinableMap< K, V, Options... > map_type;
print_stat( static_cast<typename map_type::cuckoo_base_class const&>(m) );
}
typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_sht;
#endif
- template <typename V, CDS_DECL_OPTIONS10>
+ template <typename V, typename... Options>
class CuckooStripedSet:
public cc::CuckooSet< V,
typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::striping<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type
>
{
public:
typedef typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::striping<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type cuckoo_traits;
typedef cc::CuckooSet< V, cuckoo_traits > cuckoo_base_class;
}
};
- template <typename V, CDS_DECL_OPTIONS10>
+ template <typename V, typename... Options>
class CuckooRefinableSet:
public cc::CuckooSet< V,
typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::refinable<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type
>
{
public:
typedef typename cc::cuckoo::make_traits<
co::mutex_policy< cc::cuckoo::refinable<> >
- ,CDS_OPTIONS10
+ ,Options...
>::type cuckoo_traits;
typedef cc::CuckooSet< V, cuckoo_traits > cuckoo_base_class;
// StripedSet
// for sequential containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class StripedHashSet_seq:
public cc::StripedSet< BucketEntry,
co::mutex_policy< cc::striped_set::striping<> >
,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedSet< BucketEntry,
co::mutex_policy< cc::striped_set::striping<> >
,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
};
// for non-sequential ordered containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class StripedHashSet_ord:
public cc::StripedSet< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::striping<> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedSet< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::striping<> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
// RefinableSet
// for sequential containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class RefinableHashSet_seq:
public cc::StripedSet< BucketEntry,
co::mutex_policy< cc::striped_set::refinable<> >
,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedSet< BucketEntry,
co::mutex_policy< cc::striped_set::refinable<> >
,co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
};
// for non-sequential ordered containers
- template <class BucketEntry, CDS_DECL_OPTIONS7>
+ template <class BucketEntry, typename... Options>
class RefinableHashSet_ord:
public cc::StripedSet< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::refinable<> >
- , CDS_OPTIONS7
+ , Options...
>
{
typedef cc::StripedSet< BucketEntry,
co::resizing_policy<cc::striped_set::load_factor_resizing<0> >
,co::mutex_policy< cc::striped_set::refinable<> >
- , CDS_OPTIONS7
+ , Options...
> base_class;
typedef typename base_class::resizing_policy resizing_policy_t;
CPPUNIT_MSG( s.statistics() << s.mutex_policy_statistics() );
}
- template <typename V, CDS_SPEC_OPTIONS10>
- static inline void print_stat( CuckooStripedSet< V, CDS_OPTIONS10 > const& s )
+ template <typename V, typename... Options>
+ static inline void print_stat( CuckooStripedSet< V, Options... > const& s )
{
- typedef CuckooStripedSet< V, CDS_OPTIONS10 > set_type;
+ typedef CuckooStripedSet< V, Options... > set_type;
print_stat( static_cast<typename set_type::cuckoo_base_class const&>(s) );
}
- template <typename V, CDS_SPEC_OPTIONS10>
- static inline void print_stat( CuckooRefinableSet< V, CDS_OPTIONS10 > const& s )
+ template <typename V, typename... Options>
+ static inline void print_stat( CuckooRefinableSet< V, Options... > const& s )
{
- typedef CuckooRefinableSet< V, CDS_OPTIONS10 > set_type;
+ typedef CuckooRefinableSet< V, Options... > set_type;
print_stat( static_cast<typename set_type::cuckoo_base_class const&>(s) );
}