///////////////////////////////////////////////////////////////////////////// | |
// | |
// (C) Copyright Ion Gaztanaga 2007-2009 | |
// | |
// 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 | |
#include <cstddef> | |
#include <boost/intrusive/link_mode.hpp> | |
#include <boost/intrusive/detail/workaround.hpp> | |
/// @cond | |
namespace boost { | |
namespace intrusive { | |
struct none; | |
} //namespace intrusive{ | |
} //namespace boost{ | |
namespace boost { | |
namespace intrusive { | |
//////////////////////////// | |
// Node algorithms | |
//////////////////////////// | |
//Algorithms predeclarations | |
template<class NodeTraits> | |
class circular_list_algorithms; | |
template<class NodeTraits> | |
class circular_slist_algorithms; | |
template<class NodeTraits> | |
class rbtree_algorithms; | |
//////////////////////////// | |
// Containers | |
//////////////////////////// | |
//slist | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
, class O5 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class slist; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class slist_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class slist_member_hook; | |
//list | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class list; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class list_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class list_member_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class list_hook; | |
//rbtree/set/multiset | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class rbtree; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class set; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class multiset; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class set_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class set_member_hook; | |
//splaytree/splay_set/splay_multiset | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class splaytree; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class splay_set; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class splay_multiset; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class splay_set_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class splay_set_member_hook; | |
//avltree/avl_set/avl_multiset | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class avltree; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class avl_set; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class avl_multiset; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class avl_set_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class avl_set_member_hook; | |
//treap/treap_set/treap_multiset | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class treap; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class treap_set; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class treap_multiset; | |
//Default priority comparison functor | |
template <class T> | |
struct priority_compare; | |
//sgtree/sg_set/sg_multiset | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class sgtree; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class sg_set; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class sg_multiset; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class bs_set_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class bs_set_member_hook; | |
//hashtable/unordered_set/unordered_multiset | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
, class O5 = none | |
, class O6 = none | |
, class O7 = none | |
, class O8 = none | |
, class O9 = none | |
, class O10 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class hashtable; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
, class O5 = none | |
, class O6 = none | |
, class O7 = none | |
, class O8 = none | |
, class O9 = none | |
, class O10 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class unordered_set; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class T | |
, class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
, class O5 = none | |
, class O6 = none | |
, class O7 = none | |
, class O8 = none | |
, class O9 = none | |
, class O10 = none | |
> | |
#else | |
template<class T, class ...Options> | |
#endif | |
class unordered_multiset; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class unordered_set_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
, class O4 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class unordered_set_member_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class any_base_hook; | |
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | |
template | |
< class O1 = none | |
, class O2 = none | |
, class O3 = none | |
> | |
#else | |
template<class ...Options> | |
#endif | |
class any_member_hook; | |
} //namespace intrusive { | |
} //namespace boost { | |
/// @endcond | |
#endif //#ifndef BOOST_INTRUSIVE_FWD_HPP |