]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/intrusive/include/boost/intrusive/link_mode.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / intrusive / include / boost / intrusive / link_mode.hpp
1 /////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) Copyright Ion Gaztanaga 2006-2013
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //
9 // See http://www.boost.org/libs/intrusive for documentation.
10 //
11 /////////////////////////////////////////////////////////////////////////////
12
13 #ifndef BOOST_INTRUSIVE_LINK_MODE_HPP
14 #define BOOST_INTRUSIVE_LINK_MODE_HPP
15
16 #if defined(BOOST_HAS_PRAGMA_ONCE)
17 # pragma once
18 #endif
19
20 namespace boost {
21 namespace intrusive {
22
23 //!This enumeration defines the type of value_traits that can be defined
24 //!for Boost.Intrusive containers
25 enum link_mode_type{
26 //!If this linking policy is specified in a value_traits class
27 //!as the link_mode, containers
28 //!configured with such value_traits won't set the hooks
29 //!of the erased values to a default state. Containers also won't
30 //!check that the hooks of the new values are default initialized.
31 normal_link,
32
33 //!If this linking policy is specified in a value_traits class
34 //!as the link_mode, containers
35 //!configured with such value_traits will set the hooks
36 //!of the erased values to a default state. Containers also will
37 //!check that the hooks of the new values are default initialized.
38 safe_link,
39
40 //!Same as "safe_link" but the user type is an auto-unlink
41 //!type, so the containers with constant-time size features won't be
42 //!compatible with value_traits configured with this policy.
43 //!Containers also know that the a value can be silently erased from
44 //!the container without using any function provided by the containers.
45 auto_unlink
46 };
47
48 #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
49
50 template <link_mode_type link_mode>
51 struct is_safe_autounlink
52 {
53 static const bool value =
54 (int)link_mode == (int)auto_unlink ||
55 (int)link_mode == (int)safe_link;
56 };
57
58 #endif //BOOST_INTRUSIVE_DOXYGEN_INVOKED
59
60 } //namespace intrusive
61 } //namespace boost
62
63 #endif //BOOST_INTRUSIVE_LINK_MODE_HPP