]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
7c673cae
FG
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 \
32template< class KeyExtractor, class Tag > \
33struct 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 \
54template< class KeyExtractor, class Tag > \
55struct 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 \
78template< class KeyExtractor, class Tag > \
79struct 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 \
104template< class KeyExtractor, class Tag > \
105struct 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 \
118template< class KeyExtractor, class Tag > \
119struct index_bind \
120{ \
121 typedef void type; \
122}; \
123/*===========================================================================*/
124
125#endif // BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP