Boost C++ Libraries Boost.Bimap Home Libraries People FAQ More

PrevUpHomeNext

unordered_multimap_adaptor.hpp

Go to the documentation of this file.
00001 // Boost.Bimap
00002 //
00003 // Copyright (c) 2006-2007 Matias Capeletto
00004 //
00005 // Distributed under the Boost Software License, Version 1.0.
00006 // (See accompanying file LICENSE_1_0.txt or copy at
00007 // http://www.boost.org/LICENSE_1_0.txt)
00008 
00009 /// \file container_adaptor/unordered_multimap_adaptor.hpp
00010 /// \brief Container adaptor to easily build a std::unordered_multimap signature compatible container.
00011 
00012 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_MULTIMAP_ADAPTOR_HPP
00013 #define BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_MULTIMAP_ADAPTOR_HPP
00014 
00015 #if defined(_MSC_VER) && (_MSC_VER>=1200)
00016 #pragma once
00017 #endif
00018 
00019 #include <boost/config.hpp>
00020 
00021 #include <boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp>
00022 #include <boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp>
00023 #include <boost/mpl/aux_/na.hpp>
00024 #include <boost/mpl/vector.hpp>
00025 
00026 namespace boost {
00027 namespace bimaps {
00028 namespace container_adaptor {
00029 
00030 /// \brief Container adaptor to easily build a std::unordered_multimap signature compatible container.
00031 
00032 template
00033 <
00034     class Base,
00035 
00036     class Iterator,
00037     class ConstIterator,
00038     class LocalIterator,
00039     class ConstLocalIterator,
00040 
00041     class IteratorToBaseConverter        = ::boost::mpl::na,
00042     class IteratorFromBaseConverter      = ::boost::mpl::na,
00043     class LocalIteratorFromBaseConverter = ::boost::mpl::na,
00044     class ValueToBaseConverter           = ::boost::mpl::na,
00045     class ValueFromBaseConverter         = ::boost::mpl::na,
00046     class KeyToBaseConverter             = ::boost::mpl::na,
00047 
00048     class FunctorsFromDerivedClasses = mpl::vector<>
00049 >
00050 class unordered_multimap_adaptor :
00051 
00052     public ::boost::bimaps::container_adaptor::
00053                 unordered_associative_container_adaptor
00054     <
00055         Base,
00056         Iterator, ConstIterator, LocalIterator, ConstLocalIterator,
00057         BOOST_DEDUCED_TYPENAME Iterator::value_type::first_type,
00058         IteratorToBaseConverter, IteratorFromBaseConverter,
00059         LocalIteratorFromBaseConverter,
00060         ValueToBaseConverter, ValueFromBaseConverter,
00061         KeyToBaseConverter,
00062         FunctorsFromDerivedClasses
00063     >
00064 {
00065     typedef ::boost::bimaps::container_adaptor::
00066                 unordered_associative_container_adaptor
00067     <
00068         Base,
00069         Iterator, ConstIterator, LocalIterator, ConstLocalIterator,
00070         BOOST_DEDUCED_TYPENAME Iterator::value_type::first_type,
00071         IteratorToBaseConverter, IteratorFromBaseConverter,
00072         LocalIteratorFromBaseConverter,
00073         ValueToBaseConverter, ValueFromBaseConverter,
00074         KeyToBaseConverter,
00075         FunctorsFromDerivedClasses
00076 
00077     > base_;
00078 
00079     // MetaData -------------------------------------------------------------
00080 
00081     public:
00082 
00083     typedef BOOST_DEDUCED_TYPENAME Iterator::value_type::second_type data_type;
00084 
00085     // Access -----------------------------------------------------------------
00086 
00087     public:
00088 
00089     explicit unordered_multimap_adaptor(Base & c) :
00090         base_(c) {}
00091 
00092     protected:
00093 
00094     typedef unordered_multimap_adaptor unordered_multimap_adaptor_;
00095 
00096     public:
00097 
00098     BOOST_BIMAP_NON_UNIQUE_CONTAINER_ADAPTOR_INSERT_FUNCTIONS
00099 };
00100 
00101 
00102 
00103 } // namespace container_adaptor
00104 } // namespace bimaps
00105 } // namespace boost
00106 
00107 
00108 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_MULTIMAP_ADAPTOR_HPP
00109 
00110 
Copyright 2006 Matias Capeletto

PrevUpHomeNext