81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| //
 | |
| // (C) Copyright Ion Gaztanaga  2013-2013
 | |
| //
 | |
| // Distributed under the Boost Software License, Version 1.0.
 | |
| //    (See accompanying file LICENSE_1_0.txt or copy at
 | |
| //          http://www.boost.org/LICENSE_1_0.txt)
 | |
| //
 | |
| // See http://www.boost.org/libs/container for documentation.
 | |
| //
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef BOOST_CONTAINER_OPTIONS_HPP
 | |
| #define BOOST_CONTAINER_OPTIONS_HPP
 | |
| 
 | |
| #ifndef BOOST_CONFIG_HPP
 | |
| #  include <boost/config.hpp>
 | |
| #endif
 | |
| 
 | |
| #if defined(BOOST_HAS_PRAGMA_ONCE)
 | |
| #  pragma once
 | |
| #endif
 | |
| 
 | |
| #include <boost/container/detail/config_begin.hpp>
 | |
| #include <boost/container/container_fwd.hpp>
 | |
| #include <boost/intrusive/pack_options.hpp>
 | |
| 
 | |
| namespace boost {
 | |
| namespace container {
 | |
| 
 | |
| #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
 | |
| 
 | |
| template<tree_type_enum TreeType, bool OptimizeSize>
 | |
| struct tree_opt
 | |
| {
 | |
|    static const boost::container::tree_type_enum tree_type = TreeType;
 | |
|    static const bool optimize_size = OptimizeSize;
 | |
| };
 | |
| 
 | |
| #endif   //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
 | |
| 
 | |
| //!This option setter specifies the underlying tree type
 | |
| //!(red-black, AVL, Scapegoat or Splay) for ordered associative containers
 | |
| BOOST_INTRUSIVE_OPTION_CONSTANT(tree_type, tree_type_enum, TreeType, tree_type)
 | |
| 
 | |
| //!This option setter specifies if node size is optimized
 | |
| //!storing rebalancing data masked into pointers for ordered associative containers
 | |
| BOOST_INTRUSIVE_OPTION_CONSTANT(optimize_size, bool, Enabled, optimize_size)
 | |
| 
 | |
| //! Helper metafunction to combine options into a single type to be used
 | |
| //! by \c boost::container::set, \c boost::container::multiset
 | |
| //! \c boost::container::map and \c boost::container::multimap.
 | |
| //! Supported options are: \c boost::container::optimize_size and \c boost::container::tree_type
 | |
| #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || defined(BOOST_CONTAINER_VARIADIC_TEMPLATES)
 | |
| template<class ...Options>
 | |
| #else
 | |
| template<class O1 = void, class O2 = void, class O3 = void, class O4 = void>
 | |
| #endif
 | |
| struct tree_assoc_options
 | |
| {
 | |
|    /// @cond
 | |
|    typedef typename ::boost::intrusive::pack_options
 | |
|       < tree_assoc_defaults,
 | |
|       #if !defined(BOOST_CONTAINER_VARIADIC_TEMPLATES)
 | |
|       O1, O2, O3, O4
 | |
|       #else
 | |
|       Options...
 | |
|       #endif
 | |
|       >::type packed_options;
 | |
|    typedef tree_opt<packed_options::tree_type, packed_options::optimize_size> implementation_defined;
 | |
|    /// @endcond
 | |
|    typedef implementation_defined type;
 | |
| };
 | |
| 
 | |
| }  //namespace container {
 | |
| }  //namespace boost {
 | |
| 
 | |
| #include <boost/container/detail/config_end.hpp>
 | |
| 
 | |
| #endif   //#ifndef BOOST_CONTAINER_OPTIONS_HPP
 | 
