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