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