]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/bimap/include/boost/bimap/detail/generate_index_binder.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / bimap / include / boost / bimap / detail / generate_index_binder.hpp
1 // Boost.Bimap
2 //
3 // Copyright (c) 2006-2007 Matias Capeletto
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8
9 /// \file detail/generate_index_binder.hpp
10 /// \brief Define macros to help building the set type of definitions
11
12
13 #ifndef BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP
14 #define BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP
15
16 #if defined(_MSC_VER)
17 #pragma once
18 #endif
19
20 #include <boost/config.hpp>
21
22 #include <boost/multi_index/tag.hpp>
23
24
25 /*===========================================================================*/
26 #define BOOST_BIMAP_GENERATE_INDEX_BINDER_0CP( \
27 \
28 MULTI_INDEX_TYPE \
29 \
30 ) \
31 \
32 template< class KeyExtractor, class Tag > \
33 struct index_bind \
34 { \
35 typedef MULTI_INDEX_TYPE \
36 < \
37 multi_index::tag< Tag >, \
38 KeyExtractor \
39 \
40 > type; \
41 };
42 /*===========================================================================*/
43
44
45
46 /*===========================================================================*/
47 #define BOOST_BIMAP_GENERATE_INDEX_BINDER_1CP( \
48 \
49 MULTI_INDEX_TYPE, \
50 CONFIG_PARAMETER \
51 \
52 ) \
53 \
54 template< class KeyExtractor, class Tag > \
55 struct index_bind \
56 { \
57 typedef MULTI_INDEX_TYPE \
58 < \
59 multi_index::tag< Tag >, \
60 KeyExtractor, \
61 CONFIG_PARAMETER \
62 \
63 > type; \
64 };
65 /*===========================================================================*/
66
67
68
69
70 /*===========================================================================*/
71 #define BOOST_BIMAP_GENERATE_INDEX_BINDER_2CP( \
72 \
73 MULTI_INDEX_TYPE, \
74 CONFIG_PARAMETER_1, \
75 CONFIG_PARAMETER_2 \
76 ) \
77 \
78 template< class KeyExtractor, class Tag > \
79 struct index_bind \
80 { \
81 typedef MULTI_INDEX_TYPE \
82 < \
83 multi_index::tag< Tag >, \
84 KeyExtractor, \
85 CONFIG_PARAMETER_1, \
86 CONFIG_PARAMETER_2 \
87 \
88 > type; \
89 \
90 };
91 /*===========================================================================*/
92
93
94 // This is a special registration to allow sequenced and random access indices
95 // to play along smoothly with the other index types.
96
97 /*===========================================================================*/
98 #define BOOST_BIMAP_GENERATE_INDEX_BINDER_0CP_NO_EXTRACTOR( \
99 \
100 MULTI_INDEX_TYPE \
101 \
102 ) \
103 \
104 template< class KeyExtractor, class Tag > \
105 struct index_bind \
106 { \
107 typedef MULTI_INDEX_TYPE< multi_index::tag< Tag > > type; \
108 };
109 /*===========================================================================*/
110
111
112 // This is yet another special registration to allow unconstrained sets
113 // to play along smoothly with the other index types.
114
115 /*===========================================================================*/
116 #define BOOST_BIMAP_GENERATE_INDEX_BINDER_FAKE \
117 \
118 template< class KeyExtractor, class Tag > \
119 struct index_bind \
120 { \
121 typedef void type; \
122 }; \
123 /*===========================================================================*/
124
125 #endif // BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP