Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / intrusive / slist_hook.hpp
index cd94a7e..18b59ed 100644 (file)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2012
+// (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
 #ifndef BOOST_INTRUSIVE_SLIST_HOOK_HPP
 #define BOOST_INTRUSIVE_SLIST_HOOK_HPP
 
+#if defined(_MSC_VER)
+#  pragma once
+#endif
+
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/intrusive_fwd.hpp>
-#include <boost/intrusive/detail/utilities.hpp>
+
 #include <boost/intrusive/detail/slist_node.hpp>
 #include <boost/intrusive/circular_slist_algorithms.hpp>
 #include <boost/intrusive/link_mode.hpp>
 namespace boost {
 namespace intrusive {
 
-/// @cond
-template<class VoidPointer>
-struct get_slist_node_algo
-{
-   typedef circular_slist_algorithms<slist_node_traits<VoidPointer> > type;
-};
-
-/// @endcond
-
 //! Helper metafunction to define a \c slist_base_hook that yields to the same
 //! type when the same options (either explicitly or implicitly) are used.
 #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
 template<class ...Options>
 #else
-template<class O1 = none, class O2 = none, class O3 = none>
+template<class O1 = void, class O2 = void, class O3 = void>
 #endif
 struct make_slist_base_hook
 {
@@ -54,11 +49,11 @@ struct make_slist_base_hook
          #endif
       >::type packed_options;
 
-   typedef detail::generic_hook
-   < get_slist_node_algo<typename packed_options::void_pointer>
+   typedef generic_hook
+   < circular_slist_algorithms<slist_node_traits<typename packed_options::void_pointer> >
    , typename packed_options::tag
    , packed_options::link_mode
-   , detail::SlistBaseHook
+   , SlistBaseHookId
    > implementation_defined;
    /// @endcond
    typedef implementation_defined type;
@@ -80,7 +75,7 @@ struct make_slist_base_hook
 //! \c auto_unlink or \c safe_link).
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
-//! and the the container configured to use this hook.
+//! and the container configured to use this hook.
 #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
 template<class ...Options>
 #else
@@ -168,7 +163,7 @@ class slist_base_hook
 #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
 template<class ...Options>
 #else
-template<class O1 = none, class O2 = none, class O3 = none>
+template<class O1 = void, class O2 = void, class O3 = void>
 #endif
 struct make_slist_member_hook
 {
@@ -182,11 +177,11 @@ struct make_slist_member_hook
          #endif
       >::type packed_options;
 
-   typedef detail::generic_hook
-   < get_slist_node_algo<typename packed_options::void_pointer>
+   typedef generic_hook
+   < circular_slist_algorithms<slist_node_traits<typename packed_options::void_pointer> >
    , member_tag
    , packed_options::link_mode
-   , detail::NoBaseHook
+   , NoBaseHookId
    > implementation_defined;
    /// @endcond
    typedef implementation_defined type;
@@ -203,7 +198,7 @@ struct make_slist_member_hook
 //! \c auto_unlink or \c safe_link).
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
-//! and the the container configured to use this hook.
+//! and the container configured to use this hook.
 #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
 template<class ...Options>
 #else