Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / bimap / container_adaptor / unordered_set_adaptor.hpp
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/unordered_set_adaptor.hpp
10 /// \brief Container adaptor to easily build a std::unordered_set signature compatible container.
11
12 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP
13 #define BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP
14
15 #if defined(_MSC_VER) && (_MSC_VER>=1200)
16 #pragma once
17 #endif
18
19 #include <boost/config.hpp>
20
21 #include <boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp>
22 #include <boost/mpl/aux_/na.hpp>
23 #include <boost/mpl/vector.hpp>
24
25 namespace boost {
26 namespace bimaps {
27 namespace container_adaptor {
28
29 /// \brief Container adaptor to easily build a std::unordered_set signature compatible container.
30
31 template
32 <
33     class Base,
34
35     class Iterator,
36     class ConstIterator,
37     class LocalIterator,
38     class ConstLocalIterator,
39
40     class IteratorToBaseConverter        = ::boost::mpl::na,
41     class IteratorFromBaseConverter      = ::boost::mpl::na,
42     class LocalIteratorFromBaseConverter = ::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 unordered_set_adaptor :
50
51     public ::boost::bimaps::container_adaptor::
52                 unordered_associative_container_adaptor
53     <
54         Base,
55         Iterator, ConstIterator, LocalIterator, ConstLocalIterator,
56         BOOST_DEDUCED_TYPENAME Iterator::value_type,
57         IteratorToBaseConverter, IteratorFromBaseConverter,
58         LocalIteratorFromBaseConverter,
59         ValueToBaseConverter, ValueFromBaseConverter,
60         KeyToBaseConverter,
61         FunctorsFromDerivedClasses
62     >
63 {
64     typedef ::boost::bimaps::container_adaptor::
65                 unordered_associative_container_adaptor
66     <
67         Base,
68         Iterator, ConstIterator, LocalIterator, ConstLocalIterator,
69         BOOST_DEDUCED_TYPENAME Iterator::value_type,
70         IteratorToBaseConverter, IteratorFromBaseConverter,
71         LocalIteratorFromBaseConverter,
72         ValueToBaseConverter, ValueFromBaseConverter,
73         KeyToBaseConverter,
74         FunctorsFromDerivedClasses
75
76     > base_;
77
78     // Access -----------------------------------------------------------------
79
80     public:
81
82     explicit unordered_set_adaptor(Base & c) :
83         base_(c) {}
84
85     protected:
86
87     typedef unordered_set_adaptor unordered_set_adaptor_;
88
89 };
90
91
92 } // namespace container_adaptor
93 } // namespace bimaps
94 } // namespace boost
95
96
97 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP
98