annotate DEPENDENCIES/generic/include/boost/container/container_fwd.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 //////////////////////////////////////////////////////////////////////////////
Chris@16 2 //
Chris@101 3 // (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
Chris@16 4 // Software License, Version 1.0. (See accompanying file
Chris@16 5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 6 //
Chris@16 7 // See http://www.boost.org/libs/container for documentation.
Chris@16 8 //
Chris@16 9 //////////////////////////////////////////////////////////////////////////////
Chris@16 10
Chris@16 11 #ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
Chris@16 12 #define BOOST_CONTAINER_CONTAINER_FWD_HPP
Chris@16 13
Chris@101 14 #ifndef BOOST_CONFIG_HPP
Chris@101 15 # include <boost/config.hpp>
Chris@101 16 #endif
Chris@101 17
Chris@101 18 #if defined(BOOST_HAS_PRAGMA_ONCE)
Chris@16 19 # pragma once
Chris@16 20 #endif
Chris@16 21
Chris@101 22 //! \file
Chris@101 23 //! This header file forward declares the following containers:
Chris@101 24 //! - boost::container::vector
Chris@101 25 //! - boost::container::stable_vector
Chris@101 26 //! - boost::container::static_vector
Chris@101 27 //! - boost::container::slist
Chris@101 28 //! - boost::container::list
Chris@101 29 //! - boost::container::set
Chris@101 30 //! - boost::container::multiset
Chris@101 31 //! - boost::container::map
Chris@101 32 //! - boost::container::multimap
Chris@101 33 //! - boost::container::flat_set
Chris@101 34 //! - boost::container::flat_multiset
Chris@101 35 //! - boost::container::flat_map
Chris@101 36 //! - boost::container::flat_multimap
Chris@101 37 //! - boost::container::basic_string
Chris@101 38 //! - boost::container::string
Chris@101 39 //! - boost::container::wstring
Chris@101 40 //!
Chris@101 41 //! It forward declares the following allocators:
Chris@101 42 //! - boost::container::allocator
Chris@101 43 //! - boost::container::node_allocator
Chris@101 44 //! - boost::container::adaptive_pool
Chris@101 45 //!
Chris@101 46 //! And finally it defines the following types
Chris@16 47
Chris@101 48 #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Chris@101 49
Chris@101 50 //Std forward declarations
Chris@101 51 #ifndef BOOST_CONTAINER_DETAIL_STD_FWD_HPP
Chris@101 52 #include <boost/container/detail/std_fwd.hpp>
Chris@101 53 #endif
Chris@16 54
Chris@16 55 namespace boost{
Chris@16 56 namespace intrusive{
Chris@16 57 //Create namespace to avoid compilation errors
Chris@16 58 }}
Chris@16 59
Chris@16 60 namespace boost{ namespace container{ namespace container_detail{
Chris@101 61 namespace bi = boost::intrusive;
Chris@16 62 }}}
Chris@16 63
Chris@101 64 #include <cstddef>
Chris@16 65
Chris@101 66 #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Chris@16 67
Chris@16 68 //////////////////////////////////////////////////////////////////////////////
Chris@16 69 // Containers
Chris@16 70 //////////////////////////////////////////////////////////////////////////////
Chris@16 71
Chris@16 72 namespace boost {
Chris@16 73 namespace container {
Chris@16 74
Chris@101 75 //! Enumeration used to configure ordered associative containers
Chris@101 76 //! with a concrete tree implementation.
Chris@101 77 enum tree_type_enum
Chris@101 78 {
Chris@101 79 red_black_tree,
Chris@101 80 avl_tree,
Chris@101 81 scapegoat_tree,
Chris@101 82 splay_tree
Chris@101 83 };
Chris@101 84
Chris@101 85 #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Chris@101 86
Chris@101 87 template<class T>
Chris@101 88 class new_allocator;
Chris@101 89
Chris@16 90 template <class T
Chris@101 91 ,class Allocator = new_allocator<T> >
Chris@16 92 class vector;
Chris@16 93
Chris@16 94 template <class T
Chris@101 95 ,class Allocator = new_allocator<T> >
Chris@16 96 class stable_vector;
Chris@16 97
Chris@101 98 template <class T, std::size_t Capacity>
Chris@101 99 class static_vector;
Chris@101 100
Chris@101 101 template < class T, std::size_t N
Chris@101 102 , class Allocator= new_allocator<T> >
Chris@101 103 class small_vector;
Chris@101 104
Chris@16 105 template <class T
Chris@101 106 ,class Allocator = new_allocator<T> >
Chris@16 107 class deque;
Chris@16 108
Chris@16 109 template <class T
Chris@101 110 ,class Allocator = new_allocator<T> >
Chris@16 111 class list;
Chris@16 112
Chris@16 113 template <class T
Chris@101 114 ,class Allocator = new_allocator<T> >
Chris@16 115 class slist;
Chris@16 116
Chris@101 117 template<tree_type_enum TreeType, bool OptimizeSize>
Chris@101 118 struct tree_opt;
Chris@101 119
Chris@101 120 typedef tree_opt<red_black_tree, true> tree_assoc_defaults;
Chris@101 121
Chris@16 122 template <class Key
Chris@16 123 ,class Compare = std::less<Key>
Chris@101 124 ,class Allocator = new_allocator<Key>
Chris@101 125 ,class Options = tree_assoc_defaults >
Chris@16 126 class set;
Chris@16 127
Chris@16 128 template <class Key
Chris@16 129 ,class Compare = std::less<Key>
Chris@101 130 ,class Allocator = new_allocator<Key>
Chris@101 131 ,class Options = tree_assoc_defaults >
Chris@16 132 class multiset;
Chris@16 133
Chris@16 134 template <class Key
Chris@16 135 ,class T
Chris@16 136 ,class Compare = std::less<Key>
Chris@101 137 ,class Allocator = new_allocator<std::pair<const Key, T> >
Chris@101 138 ,class Options = tree_assoc_defaults >
Chris@16 139 class map;
Chris@16 140
Chris@16 141 template <class Key
Chris@16 142 ,class T
Chris@16 143 ,class Compare = std::less<Key>
Chris@101 144 ,class Allocator = new_allocator<std::pair<const Key, T> >
Chris@101 145 ,class Options = tree_assoc_defaults >
Chris@16 146 class multimap;
Chris@16 147
Chris@16 148 template <class Key
Chris@16 149 ,class Compare = std::less<Key>
Chris@101 150 ,class Allocator = new_allocator<Key> >
Chris@16 151 class flat_set;
Chris@16 152
Chris@16 153 template <class Key
Chris@16 154 ,class Compare = std::less<Key>
Chris@101 155 ,class Allocator = new_allocator<Key> >
Chris@16 156 class flat_multiset;
Chris@16 157
Chris@16 158 template <class Key
Chris@16 159 ,class T
Chris@16 160 ,class Compare = std::less<Key>
Chris@101 161 ,class Allocator = new_allocator<std::pair<Key, T> > >
Chris@16 162 class flat_map;
Chris@16 163
Chris@16 164 template <class Key
Chris@16 165 ,class T
Chris@16 166 ,class Compare = std::less<Key>
Chris@101 167 ,class Allocator = new_allocator<std::pair<Key, T> > >
Chris@16 168 class flat_multimap;
Chris@16 169
Chris@16 170 template <class CharT
Chris@16 171 ,class Traits = std::char_traits<CharT>
Chris@101 172 ,class Allocator = new_allocator<CharT> >
Chris@16 173 class basic_string;
Chris@16 174
Chris@101 175 typedef basic_string
Chris@101 176 <char
Chris@101 177 ,std::char_traits<char>
Chris@101 178 ,new_allocator<char> >
Chris@101 179 string;
Chris@101 180
Chris@101 181 typedef basic_string
Chris@101 182 <wchar_t
Chris@101 183 ,std::char_traits<wchar_t>
Chris@101 184 ,new_allocator<wchar_t> >
Chris@101 185 wstring;
Chris@101 186
Chris@101 187 static const std::size_t ADP_nodes_per_block = 256u;
Chris@101 188 static const std::size_t ADP_max_free_blocks = 2u;
Chris@101 189 static const std::size_t ADP_overhead_percent = 1u;
Chris@101 190 static const std::size_t ADP_only_alignment = 0u;
Chris@101 191
Chris@101 192 template < class T
Chris@101 193 , std::size_t NodesPerBlock = ADP_nodes_per_block
Chris@101 194 , std::size_t MaxFreeBlocks = ADP_max_free_blocks
Chris@101 195 , std::size_t OverheadPercent = ADP_overhead_percent
Chris@101 196 , unsigned Version = 2
Chris@101 197 >
Chris@101 198 class adaptive_pool;
Chris@101 199
Chris@101 200 template < class T
Chris@101 201 , unsigned Version = 2
Chris@101 202 , unsigned int AllocationDisableMask = 0>
Chris@101 203 class allocator;
Chris@101 204
Chris@101 205 static const std::size_t NodeAlloc_nodes_per_block = 256u;
Chris@101 206
Chris@101 207 template
Chris@101 208 < class T
Chris@101 209 , std::size_t NodesPerBlock = NodeAlloc_nodes_per_block
Chris@101 210 , std::size_t Version = 2>
Chris@101 211 class node_allocator;
Chris@101 212
Chris@101 213 #else
Chris@101 214
Chris@101 215 //! Default options for tree-based associative containers
Chris@101 216 //! - tree_type<red_black_tree>
Chris@101 217 //! - optimize_size<true>
Chris@101 218 typedef implementation_defined tree_assoc_defaults;
Chris@101 219
Chris@101 220 #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Chris@101 221
Chris@16 222 //! Type used to tag that the input range is
Chris@16 223 //! guaranteed to be ordered
Chris@16 224 struct ordered_range_t
Chris@16 225 {};
Chris@16 226
Chris@16 227 //! Value used to tag that the input range is
Chris@16 228 //! guaranteed to be ordered
Chris@16 229 static const ordered_range_t ordered_range = ordered_range_t();
Chris@16 230
Chris@16 231 //! Type used to tag that the input range is
Chris@16 232 //! guaranteed to be ordered and unique
Chris@16 233 struct ordered_unique_range_t
Chris@16 234 : public ordered_range_t
Chris@16 235 {};
Chris@16 236
Chris@16 237 //! Value used to tag that the input range is
Chris@16 238 //! guaranteed to be ordered and unique
Chris@16 239 static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t();
Chris@16 240
Chris@101 241 //! Type used to tag that the inserted values
Chris@101 242 //! should be default initialized
Chris@16 243 struct default_init_t
Chris@16 244 {};
Chris@16 245
Chris@101 246 //! Value used to tag that the inserted values
Chris@101 247 //! should be default initialized
Chris@16 248 static const default_init_t default_init = default_init_t();
Chris@101 249 #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Chris@16 250
Chris@101 251 //! Type used to tag that the inserted values
Chris@101 252 //! should be value initialized
Chris@101 253 struct value_init_t
Chris@101 254 {};
Chris@101 255
Chris@101 256 //! Value used to tag that the inserted values
Chris@101 257 //! should be value initialized
Chris@101 258 static const value_init_t value_init = value_init_t();
Chris@101 259
Chris@101 260 namespace container_detail_really_deep_namespace {
Chris@16 261
Chris@16 262 //Otherwise, gcc issues a warning of previously defined
Chris@16 263 //anonymous_instance and unique_instance
Chris@16 264 struct dummy
Chris@16 265 {
Chris@16 266 dummy()
Chris@16 267 {
Chris@16 268 (void)ordered_range;
Chris@16 269 (void)ordered_unique_range;
Chris@16 270 (void)default_init;
Chris@16 271 }
Chris@16 272 };
Chris@16 273
Chris@16 274 } //detail_really_deep_namespace {
Chris@16 275
Chris@101 276
Chris@101 277 #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Chris@16 278
Chris@16 279 }} //namespace boost { namespace container {
Chris@16 280
Chris@16 281 #endif //#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP