annotate DEPENDENCIES/generic/include/boost/bimap/views/unordered_multimap_view.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 // Boost.Bimap
Chris@16 2 //
Chris@16 3 // Copyright (c) 2006-2007 Matias Capeletto
Chris@16 4 //
Chris@16 5 // Distributed under the Boost Software License, Version 1.0.
Chris@16 6 // (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 7 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8
Chris@16 9 /// \file views/unordered_multimap_view.hpp
Chris@16 10 /// \brief View of a side of a bimap that is signature compatible with tr1::unordered_multimap.
Chris@16 11
Chris@16 12 #ifndef BOOST_BIMAP_VIEWS_UNOREDERED_MULTIMAP_VIEW_HPP
Chris@16 13 #define BOOST_BIMAP_VIEWS_UNOREDERED_MULTIMAP_VIEW_HPP
Chris@16 14
Chris@101 15 #if defined(_MSC_VER)
Chris@16 16 #pragma once
Chris@16 17 #endif
Chris@16 18
Chris@16 19 #include <boost/config.hpp>
Chris@16 20
Chris@16 21 #include <utility>
Chris@16 22
Chris@16 23 #include <boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp>
Chris@16 24 #include <boost/bimap/detail/non_unique_views_helper.hpp>
Chris@16 25 #include <boost/bimap/support/iterator_type_by.hpp>
Chris@16 26 #include <boost/bimap/detail/map_view_base.hpp>
Chris@16 27
Chris@16 28 namespace boost {
Chris@16 29 namespace bimaps {
Chris@16 30 namespace views {
Chris@16 31
Chris@16 32 /// \brief View of a side of a bimap that is signature compatible with tr1::unordered_multimap.
Chris@16 33 /**
Chris@16 34
Chris@16 35 This class uses container_adaptor and iterator_adaptor to wrapped a index of the
Chris@16 36 multi_index bimap core so it can be used as a tr1::unordered_multimap.
Chris@16 37
Chris@16 38 See also const_unordered_multimap_view.
Chris@16 39 **/
Chris@16 40
Chris@16 41 template< class Tag, class BimapType >
Chris@16 42 class unordered_multimap_view
Chris@16 43 :
Chris@16 44 public BOOST_BIMAP_MAP_VIEW_CONTAINER_ADAPTOR(
Chris@16 45 unordered_multimap_adaptor,
Chris@16 46 Tag,BimapType,
Chris@16 47 local_map_view_iterator,const_local_map_view_iterator
Chris@16 48 ),
Chris@16 49
Chris@16 50 public ::boost::bimaps::detail::map_view_base<
Chris@16 51 unordered_multimap_view<Tag,BimapType>,Tag,BimapType >
Chris@16 52
Chris@16 53 {
Chris@16 54 typedef BOOST_BIMAP_MAP_VIEW_CONTAINER_ADAPTOR(
Chris@16 55 unordered_multimap_adaptor,
Chris@16 56 Tag,BimapType,
Chris@16 57 local_map_view_iterator,const_local_map_view_iterator
Chris@16 58
Chris@16 59 ) base_;
Chris@16 60
Chris@16 61 BOOST_BIMAP_MAP_VIEW_BASE_FRIEND(unordered_multimap_view,Tag,BimapType)
Chris@16 62
Chris@16 63 public:
Chris@16 64
Chris@16 65 typedef std::pair<
Chris@16 66 BOOST_DEDUCED_TYPENAME base_::iterator,
Chris@16 67 BOOST_DEDUCED_TYPENAME base_::iterator
Chris@16 68 > range_type;
Chris@16 69
Chris@16 70 typedef std::pair<
Chris@16 71 BOOST_DEDUCED_TYPENAME base_::const_iterator,
Chris@16 72 BOOST_DEDUCED_TYPENAME base_::const_iterator
Chris@16 73 > const_range_type;
Chris@16 74
Chris@16 75 typedef BOOST_DEDUCED_TYPENAME base_::value_type::info_type info_type;
Chris@16 76
Chris@16 77 unordered_multimap_view(BOOST_DEDUCED_TYPENAME base_::base_type & c)
Chris@16 78 : base_(c) {}
Chris@16 79
Chris@16 80 BOOST_BIMAP_NON_UNIQUE_VIEW_INSERT_FUNCTIONS
Chris@16 81
Chris@16 82 unordered_multimap_view & operator=(const unordered_multimap_view & v)
Chris@16 83 {
Chris@16 84 this->base() = v.base();
Chris@16 85 return *this;
Chris@16 86 }
Chris@16 87 };
Chris@16 88
Chris@16 89
Chris@16 90 } // namespace views
Chris@16 91
Chris@16 92 /*===========================================================================*/
Chris@16 93 #define BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,TYPENAME) \
Chris@16 94 typedef BOOST_DEDUCED_TYPENAME MAP_VIEW::TYPENAME \
Chris@16 95 BOOST_PP_CAT(SIDE,BOOST_PP_CAT(_,TYPENAME));
Chris@16 96 /*===========================================================================*/
Chris@16 97
Chris@16 98 /*===========================================================================*/
Chris@16 99 #define BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEFS_BODY(MAP_VIEW,SIDE) \
Chris@16 100 BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,local_iterator) \
Chris@16 101 BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,const_local_iterator) \
Chris@16 102 BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,range_type) \
Chris@16 103 BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,const_range_type) \
Chris@16 104 BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,hasher) \
Chris@16 105 BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF(MAP_VIEW,SIDE,key_equal)
Chris@16 106 /*===========================================================================*/
Chris@16 107
Chris@16 108 namespace detail {
Chris@16 109
Chris@16 110 template< class Tag, class BimapType >
Chris@16 111 struct left_map_view_extra_typedefs< ::boost::bimaps::views::unordered_multimap_view<Tag,BimapType> >
Chris@16 112 {
Chris@16 113 private: typedef ::boost::bimaps::views::unordered_multimap_view<Tag,BimapType> map_view_;
Chris@16 114 public : BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEFS_BODY(map_view_,left)
Chris@16 115 };
Chris@16 116
Chris@16 117 template< class Tag, class BimapType >
Chris@16 118 struct right_map_view_extra_typedefs< ::boost::bimaps::views::unordered_multimap_view<Tag,BimapType> >
Chris@16 119 {
Chris@16 120 private: typedef ::boost::bimaps::views::unordered_multimap_view<Tag,BimapType> map_view_;
Chris@16 121 public : BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEFS_BODY(map_view_,right)
Chris@16 122 };
Chris@16 123
Chris@16 124 } // namespace detail
Chris@16 125
Chris@16 126 /*===========================================================================*/
Chris@16 127 #undef BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEF
Chris@16 128 #undef BOOST_BIMAP_MAP_VIEW_EXTRA_TYPEDEFS_BODY
Chris@16 129 /*===========================================================================*/
Chris@16 130
Chris@16 131 } // namespace bimaps
Chris@16 132 } // namespace boost
Chris@16 133
Chris@16 134 #endif // BOOST_BIMAP_VIEWS_UNOREDERED_MULTIMAP_VIEW_HPP
Chris@16 135
Chris@16 136