]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/icl/include/boost/icl/detail/design_config.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / icl / include / boost / icl / detail / design_config.hpp
CommitLineData
7c673cae
FG
1/*-----------------------------------------------------------------------------+
2Author: Joachim Faulhaber
3Copyright (c) 2009-2010: Joachim Faulhaber
4+------------------------------------------------------------------------------+
5 Distributed under the Boost Software License, Version 1.0.
6 (See accompanying file LICENCE.txt or copy at
7 http://www.boost.org/LICENSE_1_0.txt)
8+-----------------------------------------------------------------------------*/
9/*-----------------------------------------------------------------------------+
10Template parameters of major itl class templates can be designed as
11template template parameters or
12template type parameter
13by setting defines in this file.
14+-----------------------------------------------------------------------------*/
15#ifndef BOOST_ICL_DESIGN_CONFIG_HPP_JOFA_090214
16#define BOOST_ICL_DESIGN_CONFIG_HPP_JOFA_090214
17
18// If this macro is defined, right_open_interval with static interval borders
19// will be used as default for all interval containers.
20// BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS should be defined in the application
21// before other includes from the ITL
22//#define BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
23// If BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS is NOT defined, ITL uses intervals
24// with dynamic borders as default.
25
26
27//------------------------------------------------------------------------------
28// Auxiliary macros for denoting template signatures.
29// Purpose:
30// (1) Shorten the lenthy and redundant template signatures.
31// (2) Name anonymous template types according to their meaning ...
32// (3) Making easier to refactor by redefinitin of the macros
33// (4) Being able to check template template parameter variants against
34// template type parameter variants.
35
36#define ICL_USE_COMPARE_TEMPLATE_TEMPLATE
37#define ICL_USE_COMBINE_TEMPLATE_TEMPLATE
38#define ICL_USE_SECTION_TEMPLATE_TEMPLATE
39// ICL_USE_INTERVAL_TEMPLATE_TYPE
40
41//------------------------------------------------------------------------------
42// template parameter Compare can not be a template type parameter as long as
43// Compare<Interval<DomainT,Compare> >() is called in std::lexicographical_compare
44// implementing operator< for interval_base_{set,map}. see NOTE DESIGN TTP
45#ifdef ICL_USE_COMPARE_TEMPLATE_TEMPLATE
46# define ICL_COMPARE template<class>class
47# define ICL_COMPARE_DOMAIN(itl_compare, domain_type) itl_compare<domain_type>
48# define ICL_COMPARE_INSTANCE(compare_instance, domain_type) compare_instance
49# define ICL_EXCLUSIVE_LESS(interval_type) exclusive_less_than
50#else//ICL_USE_COMPARE_TEMPLATE_TYPE
51# define ICL_COMPARE class
52# define ICL_COMPARE_DOMAIN(itl_compare, domain_type) itl_compare
53# define ICL_COMPARE_INSTANCE(compare_instance, domain_type) compare_instance<domain_type>
54# define ICL_EXCLUSIVE_LESS(interval_type) exclusive_less_than<interval_type>
55#endif
56
57//------------------------------------------------------------------------------
58// template parameter Combine could be a template type parameter.
59#ifdef ICL_USE_COMBINE_TEMPLATE_TEMPLATE
60# define ICL_COMBINE template<class>class
61# define ICL_COMBINE_CODOMAIN(itl_combine, codomain_type) itl_combine<codomain_type>
62# define ICL_COMBINE_INSTANCE(combine_instance,codomain_type) combine_instance
63#else//ICL_USE_COMBINE_TEMPLATE_TYPE
64# define ICL_COMBINE class
65# define ICL_COMBINE_CODOMAIN(itl_combine, codomain_type) itl_combine
66# define ICL_COMBINE_INSTANCE(combine_instance,codomain_type) combine_instance<codomain_type>
67#endif
68
69//------------------------------------------------------------------------------
70// template parameter Section could be a template type parameter.
71#ifdef ICL_USE_SECTION_TEMPLATE_TEMPLATE
72# define ICL_SECTION template<class>class
73# define ICL_SECTION_CODOMAIN(itl_intersect, codomain_type) itl_intersect<codomain_type>
74# define ICL_SECTION_INSTANCE(section_instance,codomain_type) section_instance
75#else//ICL_USE_SECTION_TEMPLATE_TYPE
76# define ICL_SECTION class
77# define ICL_SECTION_CODOMAIN(itl_intersect, codomain_type) itl_intersect
78# define ICL_SECTION_INSTANCE(section_instance,codomain_type) section_instance<codomain_type>
79#endif
80
81
82//------------------------------------------------------------------------------
83// template parameter Interval could be a template type parameter.
84#ifdef ICL_USE_INTERVAL_TEMPLATE_TEMPLATE
85# define ICL_INTERVAL(itl_compare) template<class,itl_compare>class
86# define ICL_INTERVAL2(itl_compare) template<class DomT2,itl_compare>class
87# define ICL_INTERVAL_TYPE(itl_interval, domain_type, itl_compare) itl_interval<domain_type,itl_compare>
88# define ICL_INTERVAL_INSTANCE(interval_instance,domain_type,itl_compare) interval_instance
89#else//ICL_USE_INTERVAL_TEMPLATE_TYPE
90# define ICL_INTERVAL(itl_compare) class
91# define ICL_INTERVAL2(itl_compare) class
92# define ICL_INTERVAL_TYPE(itl_interval, domain_type, itl_compare) itl_interval
93# define ICL_INTERVAL_INSTANCE(interval_instance,domain_type,itl_compare) typename interval_instance<domain_type,itl_compare>::type
94#endif
95
96
97//------------------------------------------------------------------------------
98#define ICL_ALLOC template<class>class
99
100//------------------------------------------------------------------------------
101#define ICL_INTERVAL_DEFAULT boost::icl::interval_type_default
102
103#ifndef BOOST_ICL_USE_COMPARE_STD_GREATER
104# define ICL_COMPARE_DEFAULT std::less
105#else
106# define ICL_COMPARE_DEFAULT std::greater
107#endif
108
109//------------------------------------------------------------------------------
110
111#endif // BOOST_ICL_DESIGN_CONFIG_HPP_JOFA_090214
112
113