diff options
Diffstat (limited to 'src/third_party/boost-1.60.0/boost/intrusive/detail/list_node.hpp')
-rw-r--r-- | src/third_party/boost-1.60.0/boost/intrusive/detail/list_node.hpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/third_party/boost-1.60.0/boost/intrusive/detail/list_node.hpp b/src/third_party/boost-1.60.0/boost/intrusive/detail/list_node.hpp new file mode 100644 index 00000000000..f740e545e8c --- /dev/null +++ b/src/third_party/boost-1.60.0/boost/intrusive/detail/list_node.hpp @@ -0,0 +1,71 @@ +///////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Olaf Krzikalla 2004-2006. +// (C) Copyright Ion Gaztanaga 2006-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_LIST_NODE_HPP +#define BOOST_INTRUSIVE_LIST_NODE_HPP + +#ifndef BOOST_CONFIG_HPP +# include <boost/config.hpp> +#endif + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#include <boost/intrusive/pointer_rebind.hpp> + +namespace boost { +namespace intrusive { + +// list_node_traits can be used with circular_list_algorithms and supplies +// a list_node holding the pointers needed for a double-linked list +// it is used by list_derived_node and list_member_node + +template<class VoidPointer> +struct list_node +{ + typedef typename pointer_rebind<VoidPointer, list_node>::type node_ptr; + node_ptr next_; + node_ptr prev_; +}; + +template<class VoidPointer> +struct list_node_traits +{ + typedef list_node<VoidPointer> node; + typedef typename node::node_ptr node_ptr; + typedef typename pointer_rebind<VoidPointer, const node>::type const_node_ptr; + + static node_ptr get_previous(const const_node_ptr & n) + { return n->prev_; } + + static node_ptr get_previous(const node_ptr & n) + { return n->prev_; } + + static void set_previous(const node_ptr & n, const node_ptr & prev) + { n->prev_ = prev; } + + static node_ptr get_next(const const_node_ptr & n) + { return n->next_; } + + static node_ptr get_next(const node_ptr & n) + { return n->next_; } + + static void set_next(const node_ptr & n, const node_ptr & next) + { n->next_ = next; } +}; + +} //namespace intrusive +} //namespace boost + +#endif //BOOST_INTRUSIVE_LIST_NODE_HPP |