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

PrevUpHomeNext

unordered_set_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_set_adaptor.hpp
00010 /// \brief Container adaptor to easily build a std::unordered_set signature compatible container.
00011 
00012 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP
00013 #define BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_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/mpl/aux_/na.hpp>
00023 #include <boost/mpl/vector.hpp>
00024 
00025 namespace boost {
00026 namespace bimaps {
00027 namespace container_adaptor {
00028 
00029 /// \brief Container adaptor to easily build a std::unordered_set signature compatible container.
00030 
00031 template
00032 <
00033     class Base,
00034 
00035     class Iterator,
00036     class ConstIterator,
00037     class LocalIterator,
00038     class ConstLocalIterator,
00039 
00040     class IteratorToBaseConverter        = ::boost::mpl::na,
00041     class IteratorFromBaseConverter      = ::boost::mpl::na,
00042     class LocalIteratorFromBaseConverter = ::boost::mpl::na,
00043     class ValueToBaseConverter           = ::boost::mpl::na,
00044     class ValueFromBaseConverter         = ::boost::mpl::na,
00045     class KeyToBaseConverter             = ::boost::mpl::na,
00046 
00047     class FunctorsFromDerivedClasses = mpl::vector<>
00048 >
00049 class unordered_set_adaptor :
00050 
00051     public ::boost::bimaps::container_adaptor::
00052                 unordered_associative_container_adaptor
00053     <
00054         Base,
00055         Iterator, ConstIterator, LocalIterator, ConstLocalIterator,
00056         BOOST_DEDUCED_TYPENAME Iterator::value_type,
00057         IteratorToBaseConverter, IteratorFromBaseConverter,
00058         LocalIteratorFromBaseConverter,
00059         ValueToBaseConverter, ValueFromBaseConverter,
00060         KeyToBaseConverter,
00061         FunctorsFromDerivedClasses
00062     >
00063 {
00064     typedef ::boost::bimaps::container_adaptor::
00065                 unordered_associative_container_adaptor
00066     <
00067         Base,
00068         Iterator, ConstIterator, LocalIterator, ConstLocalIterator,
00069         BOOST_DEDUCED_TYPENAME Iterator::value_type,
00070         IteratorToBaseConverter, IteratorFromBaseConverter,
00071         LocalIteratorFromBaseConverter,
00072         ValueToBaseConverter, ValueFromBaseConverter,
00073         KeyToBaseConverter,
00074         FunctorsFromDerivedClasses
00075 
00076     > base_;
00077 
00078     // Access -----------------------------------------------------------------
00079 
00080     public:
00081 
00082     explicit unordered_set_adaptor(Base & c) :
00083         base_(c) {}
00084 
00085     protected:
00086 
00087     typedef unordered_set_adaptor unordered_set_adaptor_;
00088 
00089 };
00090 
00091 
00092 } // namespace container_adaptor
00093 } // namespace bimaps
00094 } // namespace boost
00095 
00096 
00097 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP
00098 
Copyright 2006 Matias Capeletto

PrevUpHomeNext