File indexing completed on 2025-01-30 09:34:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef BOOST_BIMAP_SET_OF_HPP
0013 #define BOOST_BIMAP_SET_OF_HPP
0014
0015 #if defined(_MSC_VER)
0016 #pragma once
0017 #endif
0018
0019 #include <boost/config.hpp>
0020
0021 #include <boost/bimap/detail/user_interface_config.hpp>
0022
0023 #include <functional>
0024 #include <boost/mpl/bool.hpp>
0025 #include <boost/mpl/aux_/na.hpp>
0026
0027 #include <boost/concept_check.hpp>
0028
0029 #include <boost/bimap/detail/concept_tags.hpp>
0030
0031 #include <boost/bimap/detail/generate_index_binder.hpp>
0032 #include <boost/bimap/detail/generate_view_binder.hpp>
0033 #include <boost/bimap/detail/generate_relation_binder.hpp>
0034
0035 #include <boost/bimap/tags/support/value_type_of.hpp>
0036
0037 #include <boost/multi_index/ordered_index.hpp>
0038
0039 #include <boost/bimap/views/map_view.hpp>
0040 #include <boost/bimap/views/set_view.hpp>
0041
0042 namespace boost {
0043 namespace bimaps {
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109 template
0110 <
0111 class KeyType,
0112 class KeyCompare = std::less< BOOST_DEDUCED_TYPENAME
0113 ::boost::bimaps::tags::support::value_type_of<KeyType>::type >
0114 >
0115 struct set_of : public ::boost::bimaps::detail::set_type_of_tag
0116 {
0117
0118 typedef KeyType user_type;
0119
0120
0121 typedef BOOST_DEDUCED_TYPENAME ::boost::bimaps::tags::support::
0122 value_type_of<user_type>::type value_type;
0123
0124
0125 typedef KeyCompare key_compare;
0126
0127 struct lazy_concept_checked
0128 {
0129 BOOST_CLASS_REQUIRE ( value_type,
0130 boost, AssignableConcept );
0131
0132 BOOST_CLASS_REQUIRE4( key_compare, bool, value_type, value_type,
0133 boost, BinaryFunctionConcept );
0134
0135 typedef set_of type;
0136 };
0137
0138 BOOST_BIMAP_GENERATE_INDEX_BINDER_1CP(
0139
0140
0141 multi_index::ordered_unique,
0142
0143
0144 key_compare
0145 )
0146
0147 BOOST_BIMAP_GENERATE_MAP_VIEW_BINDER(
0148
0149
0150 views::map_view
0151 )
0152
0153 BOOST_BIMAP_GENERATE_SET_VIEW_BINDER(
0154
0155
0156 views::set_view
0157 )
0158
0159 typedef mpl::bool_<false> mutable_key;
0160 };
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182 template< class KeyCompare = std::less< _relation > >
0183 struct set_of_relation : public ::boost::bimaps::detail::set_type_of_relation_tag
0184 {
0185
0186 typedef KeyCompare key_compare;
0187
0188 BOOST_BIMAP_GENERATE_RELATION_BINDER_1CP(
0189
0190
0191 set_of,
0192
0193
0194 key_compare
0195 )
0196
0197 typedef mpl::bool_<false> left_mutable_key;
0198 typedef mpl::bool_<false> right_mutable_key;
0199 };
0200
0201 }
0202 }
0203
0204
0205 #endif
0206