123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766 |
- /////////////////////////////////////////////////////////////////////////////
- //
- // (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 <boost/config.hpp>
- #endif
- #
- #ifndef BOOST_CSTDINT_HPP
- # include <boost/cstdint.hpp>
- #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 <cstddef>
- #include <boost/intrusive/link_mode.hpp>
- #include <boost/intrusive/detail/workaround.hpp>
- 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 NodeTraits>
- class circular_list_algorithms;
- template<class NodeTraits>
- class circular_slist_algorithms;
- template<class NodeTraits>
- class linear_slist_algorithms;
- template<class NodeTraits>
- class bstree_algorithms;
- template<class NodeTraits>
- class rbtree_algorithms;
- template<class NodeTraits>
- class avltree_algorithms;
- template<class NodeTraits>
- class sgtree_algorithms;
- template<class NodeTraits>
- class splaytree_algorithms;
- template<class NodeTraits>
- 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<class T, class ...Options>
- #endif
- class slist;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #endif
- class slist_base_hook;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #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<class T, class ...Options>
- #endif
- class list;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #endif
- class list_base_hook;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #endif
- class multiset;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- , class O4 = void
- >
- #else
- template<class ...Options>
- #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<class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class ...Options>
- #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<class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #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<class T, class ...Options>
- #endif
- class bs_multiset;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #endif
- class bs_set_base_hook;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #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<class T, class ...Options>
- #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
- >
- #else
- template<class T, class ...Options>
- #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
- >
- #else
- template<class T, class ...Options>
- #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<class ...Options>
- #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<class ...Options>
- #endif
- class unordered_set_member_hook;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #endif
- class any_base_hook;
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
- template
- < class O1 = void
- , class O2 = void
- , class O3 = void
- >
- #else
- template<class ...Options>
- #endif
- class any_member_hook;
- //Options
- template<bool Enabled>
- struct constant_time_size;
- template<typename SizeType>
- struct size_type;
- template<typename Compare>
- struct compare;
- template<bool Enabled>
- struct floating_point;
- template<typename Equal>
- struct equal;
- template<typename Priority>
- struct priority;
- template<typename Hash>
- struct hash;
- template<typename ValueTraits> struct value_traits;
- template< typename Parent
- , typename MemberHook
- , MemberHook Parent::* PtrToMember>
- struct member_hook;
- template<typename Functor>
- struct function_hook;
- template<typename BaseHook>
- struct base_hook;
- template<typename VoidPointer>
- struct void_pointer;
- template<typename Tag>
- struct tag;
- template<link_mode_type LinkType>
- struct link_mode;
- template<bool Enabled> struct
- optimize_size;
- template<bool Enabled>
- struct linear;
- template<bool Enabled>
- struct cache_last;
- template<typename BucketTraits>
- struct bucket_traits;
- template<bool Enabled>
- struct store_hash;
- template<bool Enabled>
- struct optimize_multikey;
- template<bool Enabled>
- struct power_2_buckets;
- template<bool Enabled>
- struct cache_begin;
- template<bool Enabled>
- struct compare_hash;
- template<bool Enabled>
- struct incremental;
- //Value traits
- template<typename ValueTraits>
- struct value_traits;
- template< typename Parent
- , typename MemberHook
- , MemberHook Parent::* PtrToMember>
- struct member_hook;
- template< typename Functor>
- struct function_hook;
- template<typename BaseHook>
- struct base_hook;
- template<class T, class NodeTraits, link_mode_type LinkMode = safe_link>
- struct derivation_value_traits;
- template<class NodeTraits, link_mode_type LinkMode = normal_link>
- struct trivial_value_traits;
- //Additional utilities
- template<typename VoidPointer, std::size_t Alignment>
- struct max_pointer_plus_bits;
- template<std::size_t Alignment>
- struct max_pointer_plus_bits<void *, Alignment>;
- template<typename Pointer, std::size_t NumBits>
- struct pointer_plus_bits;
- template<typename T, std::size_t NumBits>
- struct pointer_plus_bits<T *, NumBits>;
- template<typename Ptr>
- struct pointer_traits;
- template<typename T>
- struct pointer_traits<T *>;
- } //namespace intrusive {
- } //namespace boost {
- #endif //#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
- #endif //#ifndef BOOST_INTRUSIVE_FWD_HPP
|