///////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2007-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/intrusive for documentation. // ///////////////////////////////////////////////////////////////////////////// #ifndef BOOST_INTRUSIVE_FWD_HPP #define BOOST_INTRUSIVE_FWD_HPP #ifndef BOOST_CONFIG_HPP # include #endif # #ifndef BOOST_CSTDINT_HPP # include #endif # #if defined(BOOST_HAS_PRAGMA_ONCE) # pragma once #endif //! \file //! This header file forward declares most Intrusive classes. //! //! It forward declares the following containers and hooks: //! - boost::intrusive::slist / boost::intrusive::slist_base_hook / boost::intrusive::slist_member_hook //! - boost::intrusive::list / boost::intrusive::list_base_hook / boost::intrusive::list_member_hook //! - boost::intrusive::bstree / boost::intrusive::bs_set / boost::intrusive::bs_multiset / //! boost::intrusive::bs_set_base_hook / boost::intrusive::bs_set_member_hook //! - boost::intrusive::rbtree / boost::intrusive::set / boost::intrusive::multiset / //! boost::intrusive::set_base_hook / boost::intrusive::set_member_hook //! - boost::intrusive::avltree / boost::intrusive::avl_set / boost::intrusive::avl_multiset / //! boost::intrusive::avl_set_base_hook / boost::intrusive::avl_set_member_hook //! - boost::intrusive::splaytree / boost::intrusive::splay_set / boost::intrusive::splay_multiset //! - boost::intrusive::sgtree / boost::intrusive::sg_set / boost::intrusive::sg_multiset //! - boost::intrusive::treap / boost::intrusive::treap_set / boost::intrusive::treap_multiset //! - boost::intrusive::hashtable / boost::intrusive::unordered_set / boost::intrusive::unordered_multiset / //! boost::intrusive::unordered_set_base_hook / boost::intrusive::unordered_set_member_hook / //! - boost::intrusive::any_base_hook / boost::intrusive::any_member_hook //! //! It forward declares the following container or hook options: //! - boost::intrusive::constant_time_size / boost::intrusive::size_type / boost::intrusive::compare / boost::intrusive::equal //! - boost::intrusive::floating_point / boost::intrusive::priority / boost::intrusive::hash //! - boost::intrusive::value_traits / boost::intrusive::member_hook / boost::intrusive::function_hook / boost::intrusive::base_hook //! - boost::intrusive::void_pointer / boost::intrusive::tag / boost::intrusive::link_mode //! - boost::intrusive::optimize_size / boost::intrusive::linear / boost::intrusive::cache_last //! - boost::intrusive::bucket_traits / boost::intrusive::store_hash / boost::intrusive::optimize_multikey //! - boost::intrusive::power_2_buckets / boost::intrusive::cache_begin / boost::intrusive::compare_hash / boost::intrusive::incremental //! //! It forward declares the following value traits utilities: //! - boost::intrusive::value_traits / boost::intrusive::derivation_value_traits / //! boost::intrusive::trivial_value_traits //! //! Finally it forward declares the following general purpose utilities: //! - boost::intrusive::pointer_plus_bits / boost::intrusive::priority_compare. #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) #include #include #include namespace boost { namespace intrusive { #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) # ifdef BOOST_HAS_INTPTR_T using ::boost::uintptr_t; # else typedef std::size_t uintptr_t; # endif #endif //////////////////////////// // Node algorithms //////////////////////////// //Algorithms predeclarations template class circular_list_algorithms; template class circular_slist_algorithms; template class linear_slist_algorithms; template class bstree_algorithms; template class rbtree_algorithms; template class avltree_algorithms; template class sgtree_algorithms; template class splaytree_algorithms; template class treap_algorithms; //////////////////////////// // Containers //////////////////////////// //slist #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class slist; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class slist_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class slist_member_hook; //list #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class list; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class list_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class list_member_hook; //rbtree/set/multiset #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class rbtree; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class multiset; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class set_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class set_member_hook; //splaytree/splay_set/splay_multiset #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class splaytree; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class splay_set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class splay_multiset; //avltree/avl_set/avl_multiset #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class avltree; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class avl_set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class avl_multiset; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class avl_set_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class avl_set_member_hook; //treap/treap_set/treap_multiset #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void , class O7 = void > #else template #endif class treap; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void , class O7 = void > #else template #endif class treap_set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void , class O7 = void > #else template #endif class treap_multiset; //sgtree/sg_set/sg_multiset #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class sgtree; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class sg_set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class sg_multiset; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class bstree; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class bs_set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void > #else template #endif class bs_multiset; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class bs_set_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class bs_set_member_hook; //hashtable/unordered_set/unordered_multiset #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void , class O7 = void , class O8 = void , class O9 = void , class O10 = void > #else template #endif class hashtable; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void , class O7 = void , class O8 = void , class O9 = void , class O10 = void , class O11 = void > #else template #endif class unordered_set; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T , class O1 = void , class O2 = void , class O3 = void , class O4 = void , class O5 = void , class O6 = void , class O7 = void , class O8 = void , class O9 = void , class O10 = void , class O11 = void > #else template #endif class unordered_multiset; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class unordered_set_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void , class O4 = void > #else template #endif class unordered_set_member_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class any_base_hook; #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class O1 = void , class O2 = void , class O3 = void > #else template #endif class any_member_hook; //Options template struct constant_time_size; template struct size_type; template struct compare; template struct floating_point; template struct equal; template struct priority; template struct hash; template struct value_traits; template< typename Parent , typename MemberHook , MemberHook Parent::* PtrToMember> struct member_hook; template struct function_hook; template struct base_hook; template struct void_pointer; template struct tag; template struct link_mode; template struct optimize_size; template struct linear; template struct cache_last; template struct bucket_traits; template struct store_hash; template struct optimize_multikey; template struct power_2_buckets; template struct cache_begin; template struct compare_hash; template struct incremental; //Value traits template struct value_traits; template< typename Parent , typename MemberHook , MemberHook Parent::* PtrToMember> struct member_hook; template< typename Functor> struct function_hook; template struct base_hook; template struct derivation_value_traits; template struct trivial_value_traits; //Additional utilities template struct max_pointer_plus_bits; template struct max_pointer_plus_bits; template struct pointer_plus_bits; template struct pointer_plus_bits; template struct pointer_traits; template struct pointer_traits; } //namespace intrusive { } //namespace boost { #endif //#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) #endif //#ifndef BOOST_INTRUSIVE_FWD_HPP