64 lines
2.1 KiB
C++
64 lines
2.1 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// (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_LINK_MODE_HPP
|
||
|
#define BOOST_INTRUSIVE_LINK_MODE_HPP
|
||
|
|
||
|
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
||
|
# pragma once
|
||
|
#endif
|
||
|
|
||
|
namespace boost {
|
||
|
namespace intrusive {
|
||
|
|
||
|
//!This enumeration defines the type of value_traits that can be defined
|
||
|
//!for Boost.Intrusive containers
|
||
|
enum link_mode_type{
|
||
|
//!If this linking policy is specified in a value_traits class
|
||
|
//!as the link_mode, containers
|
||
|
//!configured with such value_traits won't set the hooks
|
||
|
//!of the erased values to a default state. Containers also won't
|
||
|
//!check that the hooks of the new values are default initialized.
|
||
|
normal_link,
|
||
|
|
||
|
//!If this linking policy is specified in a value_traits class
|
||
|
//!as the link_mode, containers
|
||
|
//!configured with such value_traits will set the hooks
|
||
|
//!of the erased values to a default state. Containers also will
|
||
|
//!check that the hooks of the new values are default initialized.
|
||
|
safe_link,
|
||
|
|
||
|
//!Same as "safe_link" but the user type is an auto-unlink
|
||
|
//!type, so the containers with constant-time size features won't be
|
||
|
//!compatible with value_traits configured with this policy.
|
||
|
//!Containers also know that the a value can be silently erased from
|
||
|
//!the container without using any function provided by the containers.
|
||
|
auto_unlink
|
||
|
};
|
||
|
|
||
|
#ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||
|
|
||
|
template <link_mode_type link_mode>
|
||
|
struct is_safe_autounlink
|
||
|
{
|
||
|
static const bool value =
|
||
|
(int)link_mode == (int)auto_unlink ||
|
||
|
(int)link_mode == (int)safe_link;
|
||
|
};
|
||
|
|
||
|
#endif //BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||
|
|
||
|
} //namespace intrusive
|
||
|
} //namespace boost
|
||
|
|
||
|
#endif //BOOST_INTRUSIVE_LINK_MODE_HPP
|