Blame boost/container/container_fwd.hpp

Packit 58578d
//////////////////////////////////////////////////////////////////////////////
Packit 58578d
//
Packit 58578d
// (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
Packit 58578d
// Software License, Version 1.0. (See accompanying file
Packit 58578d
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Packit 58578d
//
Packit 58578d
// See http://www.boost.org/libs/container for documentation.
Packit 58578d
//
Packit 58578d
//////////////////////////////////////////////////////////////////////////////
Packit 58578d
Packit 58578d
#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
Packit 58578d
#define BOOST_CONTAINER_CONTAINER_FWD_HPP
Packit 58578d
Packit 58578d
#ifndef BOOST_CONFIG_HPP
Packit 58578d
#  include <boost/config.hpp>
Packit 58578d
#endif
Packit 58578d
Packit 58578d
#if defined(BOOST_HAS_PRAGMA_ONCE)
Packit 58578d
#  pragma once
Packit 58578d
#endif
Packit 58578d
Packit 58578d
//! \file
Packit 58578d
//! This header file forward declares the following containers:
Packit 58578d
//!   - boost::container::vector
Packit 58578d
//!   - boost::container::stable_vector
Packit 58578d
//!   - boost::container::static_vector
Packit 58578d
//!   - boost::container::small_vector
Packit 58578d
//!   - boost::container::slist
Packit 58578d
//!   - boost::container::list
Packit 58578d
//!   - boost::container::set
Packit 58578d
//!   - boost::container::multiset
Packit 58578d
//!   - boost::container::map
Packit 58578d
//!   - boost::container::multimap
Packit 58578d
//!   - boost::container::flat_set
Packit 58578d
//!   - boost::container::flat_multiset
Packit 58578d
//!   - boost::container::flat_map
Packit 58578d
//!   - boost::container::flat_multimap
Packit 58578d
//!   - boost::container::basic_string
Packit 58578d
//!   - boost::container::string
Packit 58578d
//!   - boost::container::wstring
Packit 58578d
//!
Packit 58578d
//! Forward declares the following allocators:
Packit 58578d
//!   - boost::container::allocator
Packit 58578d
//!   - boost::container::node_allocator
Packit 58578d
//!   - boost::container::adaptive_pool
Packit 58578d
//!
Packit 58578d
//! Forward declares the following polymorphic resource classes:
Packit 58578d
//!   - boost::container::pmr::memory_resource
Packit 58578d
//!   - boost::container::pmr::polymorphic_allocator
Packit 58578d
//!   - boost::container::pmr::monotonic_buffer_resource
Packit 58578d
//!   - boost::container::pmr::pool_options
Packit 58578d
//!   - boost::container::pmr::unsynchronized_pool_resource
Packit 58578d
//!   - boost::container::pmr::synchronized_pool_resource
Packit 58578d
//!
Packit 58578d
//! And finally it defines the following types
Packit 58578d
Packit 58578d
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Packit 58578d
Packit 58578d
//Std forward declarations
Packit 58578d
#ifndef BOOST_CONTAINER_DETAIL_STD_FWD_HPP
Packit 58578d
   #include <boost/container/detail/std_fwd.hpp>
Packit 58578d
#endif
Packit 58578d
Packit 58578d
namespace boost{
Packit 58578d
namespace intrusive{
Packit 58578d
namespace detail{
Packit 58578d
   //Create namespace to avoid compilation errors
Packit 58578d
}}}
Packit 58578d
Packit 58578d
namespace boost{ namespace container{ namespace container_detail{
Packit 58578d
   namespace bi = boost::intrusive;
Packit 58578d
   namespace bid = boost::intrusive::detail;
Packit 58578d
}}}
Packit 58578d
Packit 58578d
namespace boost{ namespace container{ namespace pmr{
Packit 58578d
   namespace bi = boost::intrusive;
Packit 58578d
   namespace bid = boost::intrusive::detail;
Packit 58578d
}}}
Packit 58578d
Packit 58578d
#include <cstddef>
Packit 58578d
Packit 58578d
#endif   //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Packit 58578d
Packit 58578d
//////////////////////////////////////////////////////////////////////////////
Packit 58578d
//                             Containers
Packit 58578d
//////////////////////////////////////////////////////////////////////////////
Packit 58578d
Packit 58578d
namespace boost {
Packit 58578d
namespace container {
Packit 58578d
Packit 58578d
//! Enumeration used to configure ordered associative containers
Packit 58578d
//! with a concrete tree implementation.
Packit 58578d
enum tree_type_enum
Packit 58578d
{
Packit 58578d
   red_black_tree,
Packit 58578d
   avl_tree,
Packit 58578d
   scapegoat_tree,
Packit 58578d
   splay_tree
Packit 58578d
};
Packit 58578d
Packit 58578d
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Packit 58578d
Packit 58578d
template<class T>
Packit 58578d
class new_allocator;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Allocator = new_allocator<T> >
Packit 58578d
class vector;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Allocator = new_allocator<T> >
Packit 58578d
class stable_vector;
Packit 58578d
Packit 58578d
template <class T, std::size_t Capacity>
Packit 58578d
class static_vector;
Packit 58578d
Packit 58578d
template < class T, std::size_t N
Packit 58578d
         , class Allocator= new_allocator<T> >
Packit 58578d
class small_vector;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Allocator = new_allocator<T> >
Packit 58578d
class deque;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Allocator = new_allocator<T> >
Packit 58578d
class list;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Allocator = new_allocator<T> >
Packit 58578d
class slist;
Packit 58578d
Packit 58578d
template<tree_type_enum TreeType, bool OptimizeSize>
Packit 58578d
struct tree_opt;
Packit 58578d
Packit 58578d
typedef tree_opt<red_black_tree, true> tree_assoc_defaults;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<Key>
Packit 58578d
         ,class Options = tree_assoc_defaults >
Packit 58578d
class set;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<Key>
Packit 58578d
         ,class Options = tree_assoc_defaults >
Packit 58578d
class multiset;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class T
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<std::pair<const Key, T> >
Packit 58578d
         ,class Options = tree_assoc_defaults >
Packit 58578d
class map;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class T
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<std::pair<const Key, T> >
Packit 58578d
         ,class Options = tree_assoc_defaults >
Packit 58578d
class multimap;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<Key> >
Packit 58578d
class flat_set;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<Key> >
Packit 58578d
class flat_multiset;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class T
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<std::pair<Key, T> > >
Packit 58578d
class flat_map;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class T
Packit 58578d
         ,class Compare  = std::less<Key>
Packit 58578d
         ,class Allocator = new_allocator<std::pair<Key, T> > >
Packit 58578d
class flat_multimap;
Packit 58578d
Packit 58578d
template 
Packit 58578d
         ,class Traits = std::char_traits<CharT>
Packit 58578d
         ,class Allocator  = new_allocator<CharT> >
Packit 58578d
class basic_string;
Packit 58578d
Packit 58578d
typedef basic_string
Packit 58578d
   
Packit 58578d
   ,std::char_traits<char>
Packit 58578d
   ,new_allocator<char> >
Packit 58578d
string;
Packit 58578d
Packit 58578d
typedef basic_string
Packit 58578d
   
Packit 58578d
   ,std::char_traits<wchar_t>
Packit 58578d
   ,new_allocator<wchar_t> >
Packit 58578d
wstring;
Packit 58578d
Packit 58578d
static const std::size_t ADP_nodes_per_block    = 256u;
Packit 58578d
static const std::size_t ADP_max_free_blocks    = 2u;
Packit 58578d
static const std::size_t ADP_overhead_percent   = 1u;
Packit 58578d
static const std::size_t ADP_only_alignment     = 0u;
Packit 58578d
Packit 58578d
template < class T
Packit 58578d
         , std::size_t NodesPerBlock   = ADP_nodes_per_block
Packit 58578d
         , std::size_t MaxFreeBlocks   = ADP_max_free_blocks
Packit 58578d
         , std::size_t OverheadPercent = ADP_overhead_percent
Packit 58578d
         , unsigned Version = 2
Packit 58578d
         >
Packit 58578d
class adaptive_pool;
Packit 58578d
Packit 58578d
template < class T
Packit 58578d
         , unsigned Version = 2
Packit 58578d
         , unsigned int AllocationDisableMask = 0>
Packit 58578d
class allocator;
Packit 58578d
Packit 58578d
static const std::size_t NodeAlloc_nodes_per_block = 256u;
Packit 58578d
Packit 58578d
template
Packit 58578d
   < class T
Packit 58578d
   , std::size_t NodesPerBlock = NodeAlloc_nodes_per_block
Packit 58578d
   , std::size_t Version = 2>
Packit 58578d
class node_allocator;
Packit 58578d
Packit 58578d
namespace pmr {
Packit 58578d
Packit 58578d
class memory_resource;
Packit 58578d
Packit 58578d
template<class T>
Packit 58578d
class polymorphic_allocator;
Packit 58578d
Packit 58578d
class monotonic_buffer_resource;
Packit 58578d
Packit 58578d
struct pool_options;
Packit 58578d
Packit 58578d
template <class Allocator>
Packit 58578d
class resource_adaptor_imp;
Packit 58578d
Packit 58578d
class unsynchronized_pool_resource;
Packit 58578d
Packit 58578d
class synchronized_pool_resource;
Packit 58578d
Packit 58578d
}  //namespace pmr {
Packit 58578d
Packit 58578d
#else
Packit 58578d
Packit 58578d
//! Default options for tree-based associative containers
Packit 58578d
//!   - tree_type<red_black_tree>
Packit 58578d
//!   - optimize_size<true>
Packit 58578d
typedef implementation_defined tree_assoc_defaults;
Packit 58578d
Packit 58578d
#endif   //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Packit 58578d
Packit 58578d
//! Type used to tag that the input range is
Packit 58578d
//! guaranteed to be ordered
Packit 58578d
struct ordered_range_t
Packit 58578d
{};
Packit 58578d
Packit 58578d
//! Value used to tag that the input range is
Packit 58578d
//! guaranteed to be ordered
Packit 58578d
static const ordered_range_t ordered_range = ordered_range_t();
Packit 58578d
Packit 58578d
//! Type used to tag that the input range is
Packit 58578d
//! guaranteed to be ordered and unique
Packit 58578d
struct ordered_unique_range_t
Packit 58578d
   : public ordered_range_t
Packit 58578d
{};
Packit 58578d
Packit 58578d
//! Value used to tag that the input range is
Packit 58578d
//! guaranteed to be ordered and unique
Packit 58578d
static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t();
Packit 58578d
Packit 58578d
//! Type used to tag that the inserted values
Packit 58578d
//! should be default initialized
Packit 58578d
struct default_init_t
Packit 58578d
{};
Packit 58578d
Packit 58578d
//! Value used to tag that the inserted values
Packit 58578d
//! should be default initialized
Packit 58578d
static const default_init_t default_init = default_init_t();
Packit 58578d
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Packit 58578d
Packit 58578d
//! Type used to tag that the inserted values
Packit 58578d
//! should be value initialized
Packit 58578d
struct value_init_t
Packit 58578d
{};
Packit 58578d
Packit 58578d
//! Value used to tag that the inserted values
Packit 58578d
//! should be value initialized
Packit 58578d
static const value_init_t value_init = value_init_t();
Packit 58578d
Packit 58578d
namespace container_detail_really_deep_namespace {
Packit 58578d
Packit 58578d
//Otherwise, gcc issues a warning of previously defined
Packit 58578d
//anonymous_instance and unique_instance
Packit 58578d
struct dummy
Packit 58578d
{
Packit 58578d
   dummy()
Packit 58578d
   {
Packit 58578d
      (void)ordered_range;
Packit 58578d
      (void)ordered_unique_range;
Packit 58578d
      (void)default_init;
Packit 58578d
   }
Packit 58578d
};
Packit 58578d
Packit 58578d
}  //detail_really_deep_namespace {
Packit 58578d
Packit 58578d
Packit 58578d
#endif   //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
Packit 58578d
Packit 58578d
}}  //namespace boost { namespace container {
Packit 58578d
Packit 58578d
#endif //#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP