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 container_adaptor/multiset_adaptor.hpp 10 /// \brief Container adaptor to easily build a std::multiset signature compatible container. 11 12 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_MULTISET_ADAPTOR_HPP 13 #define BOOST_BIMAP_CONTAINER_ADAPTOR_MULTISET_ADAPTOR_HPP 14 15 #if defined(_MSC_VER) 16 #pragma once 17 #endif 18 19 #include <boost/config.hpp> 20 21 #include <boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp> 22 #include <boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp> 23 #include <boost/mpl/aux_/na.hpp> 24 #include <boost/mpl/vector.hpp> 25 26 namespace boost { 27 namespace bimaps { 28 namespace container_adaptor { 29 30 /// \brief Container adaptor to easily build a std::multiset signature compatible container. 31 32 template 33 < 34 class Base, 35 36 class Iterator, 37 class ConstIterator, 38 class ReverseIterator, 39 class ConstReverseIterator, 40 41 class IteratorToBaseConverter = ::boost::mpl::na, 42 class IteratorFromBaseConverter = ::boost::mpl::na, 43 class ReverseIteratorFromBaseConverter = ::boost::mpl::na, 44 class ValueToBaseConverter = ::boost::mpl::na, 45 class ValueFromBaseConverter = ::boost::mpl::na, 46 class KeyToBaseConverter = ::boost::mpl::na, 47 48 class FunctorsFromDerivedClasses = mpl::vector<> 49 > 50 class multiset_adaptor : 51 52 public ::boost::bimaps::container_adaptor:: 53 ordered_associative_container_adaptor 54 < 55 Base, 56 Iterator, ConstIterator, ReverseIterator, ConstReverseIterator, 57 BOOST_DEDUCED_TYPENAME Iterator::value_type, 58 IteratorToBaseConverter, IteratorFromBaseConverter, 59 ReverseIteratorFromBaseConverter, 60 ValueToBaseConverter, ValueFromBaseConverter, 61 KeyToBaseConverter, 62 FunctorsFromDerivedClasses 63 > 64 { 65 66 typedef ::boost::bimaps::container_adaptor:: 67 ordered_associative_container_adaptor 68 < 69 Base, 70 Iterator, ConstIterator, ReverseIterator, ConstReverseIterator, 71 BOOST_DEDUCED_TYPENAME Iterator::value_type, 72 IteratorToBaseConverter, IteratorFromBaseConverter, 73 ReverseIteratorFromBaseConverter, 74 ValueToBaseConverter, ValueFromBaseConverter, 75 KeyToBaseConverter, 76 FunctorsFromDerivedClasses 77 78 > base_; 79 80 // Access ----------------------------------------------------------------- 81 82 public: 83 multiset_adaptor(Base & c)84 explicit multiset_adaptor(Base & c) : 85 base_(c) {} 86 87 protected: 88 89 typedef multiset_adaptor multiset_adaptor_; 90 91 public: 92 93 BOOST_BIMAP_NON_UNIQUE_CONTAINER_ADAPTOR_INSERT_FUNCTIONS 94 }; 95 96 97 } // namespace container_adaptor 98 } // namespace bimaps 99 } // namespace boost 100 101 102 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_MULTISET_ADAPTOR_HPP 103 104