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

PrevUpHomeNext

vector_map_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/vector_map_adaptor.hpp
00010 /// \brief Container adaptor.
00011 
00012 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_VECTOR_MAP_ADAPTOR_HPP
00013 #define BOOST_BIMAP_CONTAINER_ADAPTOR_VECTOR_MAP_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/mpl/list.hpp>
00022 #include <boost/mpl/push_front.hpp>
00023 #include <boost/mpl/aux_/na.hpp>
00024 #include <boost/bimap/container_adaptor/vector_adaptor.hpp>
00025 #include <boost/bimap/container_adaptor/detail/identity_converters.hpp>
00026 #include <boost/mpl/vector.hpp>
00027 
00028 namespace boost {
00029 namespace bimaps {
00030 namespace container_adaptor {
00031 
00032 /// \brief Container adaptor.
00033 
00034 template
00035 <
00036     class Base,
00037 
00038     class Iterator,
00039     class ConstIterator,
00040     class ReverseIterator,
00041     class ConstReverseIterator,
00042 
00043     class IteratorToBaseConverter          = ::boost::mpl::na,
00044     class IteratorFromBaseConverter        = ::boost::mpl::na,
00045     class ReverseIteratorFromBaseConverter = ::boost::mpl::na,
00046     class ValueToBaseConverter             = ::boost::mpl::na,
00047     class ValueFromBaseConverter           = ::boost::mpl::na,
00048 
00049     class FunctorsFromDerivedClasses = mpl::vector<>
00050 >
00051 class vector_map_adaptor :
00052 
00053     public vector_adaptor
00054     <
00055         Base,
00056         Iterator, ConstIterator, ReverseIterator, ConstReverseIterator,
00057         IteratorToBaseConverter, IteratorFromBaseConverter,
00058         ReverseIteratorFromBaseConverter,
00059         ValueToBaseConverter, ValueFromBaseConverter,
00060         FunctorsFromDerivedClasses
00061     >
00062 {
00063     typedef vector_adaptor
00064     <
00065         Base,
00066         Iterator, ConstIterator, ReverseIterator, ConstReverseIterator,
00067         IteratorToBaseConverter, IteratorFromBaseConverter,
00068         ReverseIteratorFromBaseConverter,
00069         ValueToBaseConverter, ValueFromBaseConverter,
00070         FunctorsFromDerivedClasses
00071 
00072     > base_;
00073 
00074     // MetaData -------------------------------------------------------------
00075 
00076     public:
00077 
00078     typedef BOOST_DEDUCED_TYPENAME Iterator::value_type::first_type  key_type;
00079     typedef BOOST_DEDUCED_TYPENAME Iterator::value_type::second_type data_type;
00080 
00081     // Access -----------------------------------------------------------------
00082 
00083     public:
00084 
00085     vector_map_adaptor() {}
00086 
00087     explicit vector_map_adaptor(Base & c) :
00088         base_(c) {}
00089 
00090     protected:
00091 
00092     typedef vector_map_adaptor vector_map_adaptor_;
00093 
00094 };
00095 
00096 
00097 } // namespace container_adaptor
00098 } // namespace bimaps
00099 } // namespace boost
00100 
00101 
00102 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_VECTOR_MAP_ADAPTOR_HPP
00103 
Copyright 2006 Matias Capeletto

PrevUpHomeNext