Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-15 09:53:50

0001 /////////////////////////////////////////////////////////////////////////////
0002 //
0003 // (C) Copyright Ion Gaztanaga  2006-2013
0004 //
0005 // Distributed under the Boost Software License, Version 1.0.
0006 //    (See accompanying file LICENSE_1_0.txt or copy at
0007 //          http://www.boost.org/LICENSE_1_0.txt)
0008 //
0009 // See http://www.boost.org/libs/intrusive for documentation.
0010 //
0011 /////////////////////////////////////////////////////////////////////////////
0012 
0013 #ifndef BOOST_INTRUSIVE_LINK_MODE_HPP
0014 #define BOOST_INTRUSIVE_LINK_MODE_HPP
0015 
0016 #if defined(BOOST_HAS_PRAGMA_ONCE)
0017 #  pragma once
0018 #endif
0019 
0020 namespace boost {
0021 namespace intrusive {
0022 
0023 //!This enumeration defines the type of value_traits that can be defined
0024 //!for Boost.Intrusive containers
0025 enum link_mode_type{
0026    //!If this linking policy is specified in a value_traits class
0027    //!as the link_mode, containers
0028    //!configured with such value_traits won't set the hooks
0029    //!of the erased values to a default state. Containers also won't
0030    //!check that the hooks of the new values are default initialized.
0031    normal_link,
0032 
0033    //!If this linking policy is specified in a value_traits class
0034    //!as the link_mode, containers
0035    //!configured with such value_traits will set the hooks
0036    //!of the erased values to a default state. Containers also will
0037    //!check that the hooks of the new values are default initialized.
0038    safe_link,
0039 
0040    //!Same as "safe_link" but the user type is an auto-unlink
0041    //!type, so the containers with constant-time size features won't be
0042    //!compatible with value_traits configured with this policy.
0043    //!Containers also know that the a value can be silently erased from
0044    //!the container without using any function provided by the containers.
0045    auto_unlink
0046 };
0047 
0048 #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
0049 
0050 template <link_mode_type link_mode>
0051 struct is_safe_autounlink
0052 {
0053    static const bool value =
0054       (int)link_mode == (int)auto_unlink   ||
0055       (int)link_mode == (int)safe_link;
0056 };
0057 
0058 #endif   //BOOST_INTRUSIVE_DOXYGEN_INVOKED
0059 
0060 } //namespace intrusive
0061 } //namespace boost
0062 
0063 #endif //BOOST_INTRUSIVE_LINK_MODE_HPP