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_MULTISET_OF_HPP
0013 #define BOOST_BIMAP_MULTISET_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
0026 #include <boost/concept_check.hpp>
0027
0028 #include <boost/bimap/detail/concept_tags.hpp>
0029
0030 #include <boost/bimap/tags/support/value_type_of.hpp>
0031
0032 #include <boost/bimap/detail/generate_index_binder.hpp>
0033 #include <boost/bimap/detail/generate_view_binder.hpp>
0034 #include <boost/bimap/detail/generate_relation_binder.hpp>
0035
0036 #include <boost/multi_index/ordered_index.hpp>
0037
0038 #include <boost/bimap/views/multimap_view.hpp>
0039 #include <boost/bimap/views/multiset_view.hpp>
0040
0041 namespace boost {
0042 namespace bimaps {
0043
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 template
0109 <
0110 class KeyType,
0111 class KeyCompare = std::less< BOOST_DEDUCED_TYPENAME
0112 ::boost::bimaps::tags::support::value_type_of<KeyType>::type >
0113 >
0114 struct multiset_of : public ::boost::bimaps::detail::set_type_of_tag
0115 {
0116
0117 typedef KeyType user_type;
0118
0119
0120 typedef BOOST_DEDUCED_TYPENAME ::boost::bimaps::tags::support::
0121 value_type_of<user_type>::type value_type;
0122
0123
0124 typedef KeyCompare key_compare;
0125
0126 struct lazy_concept_checked
0127 {
0128 BOOST_CLASS_REQUIRE ( value_type,
0129 boost, AssignableConcept );
0130
0131 BOOST_CLASS_REQUIRE4( key_compare, bool, value_type, value_type,
0132 boost, BinaryFunctionConcept );
0133
0134 typedef multiset_of type;
0135 };
0136
0137 BOOST_BIMAP_GENERATE_INDEX_BINDER_1CP(
0138
0139
0140 multi_index::ordered_non_unique,
0141
0142
0143 key_compare
0144 )
0145
0146 BOOST_BIMAP_GENERATE_MAP_VIEW_BINDER(
0147
0148
0149 views::multimap_view
0150 )
0151
0152 BOOST_BIMAP_GENERATE_SET_VIEW_BINDER(
0153
0154
0155 views::multiset_view
0156 )
0157
0158 typedef mpl::bool_<false> mutable_key;
0159 };
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181 template< class KeyCompare = std::less< _relation > >
0182 struct multiset_of_relation : public ::boost::bimaps::detail::set_type_of_relation_tag
0183 {
0184
0185 typedef KeyCompare key_compare;
0186
0187
0188 BOOST_BIMAP_GENERATE_RELATION_BINDER_1CP(
0189
0190
0191 multiset_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