1 ////////////////////////////////////////////////////////////////////////////// 2 // 3 // (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost 4 // Software License, Version 1.0. (See accompanying file 5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 // 7 // See http://www.boost.org/libs/interprocess for documentation. 8 // 9 ////////////////////////////////////////////////////////////////////////////// 10 11 #ifndef BOOST_INTERPROCESS_DETAIL_NODE_TOOLS_HPP 12 #define BOOST_INTERPROCESS_DETAIL_NODE_TOOLS_HPP 13 14 #ifndef BOOST_CONFIG_HPP 15 # include <boost/config.hpp> 16 #endif 17 # 18 #if defined(BOOST_HAS_PRAGMA_ONCE) 19 # pragma once 20 #endif 21 22 #include <boost/interprocess/detail/config_begin.hpp> 23 #include <boost/interprocess/detail/workaround.hpp> 24 25 #include <boost/intrusive/slist.hpp> 26 27 namespace boost { 28 namespace interprocess { 29 namespace ipcdetail { 30 31 32 template<class VoidPointer> 33 struct node_slist 34 { 35 //This hook will be used to chain the individual nodes 36 typedef typename bi::make_slist_base_hook 37 <bi::void_pointer<VoidPointer>, bi::link_mode<bi::normal_link> >::type slist_hook_t; 38 39 //A node object will hold node_t when it's not allocated 40 struct node_t 41 : public slist_hook_t 42 {}; 43 44 typedef typename bi::make_slist 45 <node_t, bi::linear<true>, bi::base_hook<slist_hook_t> >::type node_slist_t; 46 }; 47 48 } //namespace ipcdetail { 49 } //namespace interprocess { 50 } //namespace boost { 51 52 #include <boost/interprocess/detail/config_end.hpp> 53 54 #endif //#ifndef BOOST_INTERPROCESS_DETAIL_NODE_TOOLS_HPP 55