| // Boost.Bimap |
| // |
| // Copyright (c) 2006-2007 Matias Capeletto |
| // |
| // Distributed under the Boost Software License, Version 1.0. |
| // (See accompanying file LICENSE_1_0.txt or copy at |
| // http://www.boost.org/LICENSE_1_0.txt) |
| |
| /// \file container_adaptor/unordered_multimap_adaptor.hpp |
| /// \brief Container adaptor to easily build a std::unordered_multimap signature compatible container. |
| |
| #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_MULTIMAP_ADAPTOR_HPP |
| #define BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_MULTIMAP_ADAPTOR_HPP |
| |
| #if defined(_MSC_VER) && (_MSC_VER>=1200) |
| #pragma once |
| #endif |
| |
| #include <boost/config.hpp> |
| |
| #include <boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp> |
| #include <boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp> |
| #include <boost/mpl/aux_/na.hpp> |
| #include <boost/mpl/vector.hpp> |
| |
| namespace boost { |
| namespace bimaps { |
| namespace container_adaptor { |
| |
| /// \brief Container adaptor to easily build a std::unordered_multimap signature compatible container. |
| |
| template |
| < |
| class Base, |
| |
| class Iterator, |
| class ConstIterator, |
| class LocalIterator, |
| class ConstLocalIterator, |
| |
| class IteratorToBaseConverter = ::boost::mpl::na, |
| class IteratorFromBaseConverter = ::boost::mpl::na, |
| class LocalIteratorFromBaseConverter = ::boost::mpl::na, |
| class ValueToBaseConverter = ::boost::mpl::na, |
| class ValueFromBaseConverter = ::boost::mpl::na, |
| class KeyToBaseConverter = ::boost::mpl::na, |
| |
| class FunctorsFromDerivedClasses = mpl::vector<> |
| > |
| class unordered_multimap_adaptor : |
| |
| public ::boost::bimaps::container_adaptor:: |
| unordered_associative_container_adaptor |
| < |
| Base, |
| Iterator, ConstIterator, LocalIterator, ConstLocalIterator, |
| BOOST_DEDUCED_TYPENAME Iterator::value_type::first_type, |
| IteratorToBaseConverter, IteratorFromBaseConverter, |
| LocalIteratorFromBaseConverter, |
| ValueToBaseConverter, ValueFromBaseConverter, |
| KeyToBaseConverter, |
| FunctorsFromDerivedClasses |
| > |
| { |
| typedef ::boost::bimaps::container_adaptor:: |
| unordered_associative_container_adaptor |
| < |
| Base, |
| Iterator, ConstIterator, LocalIterator, ConstLocalIterator, |
| BOOST_DEDUCED_TYPENAME Iterator::value_type::first_type, |
| IteratorToBaseConverter, IteratorFromBaseConverter, |
| LocalIteratorFromBaseConverter, |
| ValueToBaseConverter, ValueFromBaseConverter, |
| KeyToBaseConverter, |
| FunctorsFromDerivedClasses |
| |
| > base_; |
| |
| // MetaData ------------------------------------------------------------- |
| |
| public: |
| |
| typedef BOOST_DEDUCED_TYPENAME Iterator::value_type::second_type data_type; |
| |
| // Access ----------------------------------------------------------------- |
| |
| public: |
| |
| explicit unordered_multimap_adaptor(Base & c) : |
| base_(c) {} |
| |
| protected: |
| |
| typedef unordered_multimap_adaptor unordered_multimap_adaptor_; |
| |
| public: |
| |
| BOOST_BIMAP_NON_UNIQUE_CONTAINER_ADAPTOR_INSERT_FUNCTIONS |
| }; |
| |
| |
| |
| } // namespace container_adaptor |
| } // namespace bimaps |
| } // namespace boost |
| |
| |
| #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_MULTIMAP_ADAPTOR_HPP |
| |
| |