diff options
Diffstat (limited to 'src/third_party/boost-1.56.0/boost/interprocess/smart_ptr/deleter.hpp')
-rw-r--r-- | src/third_party/boost-1.56.0/boost/interprocess/smart_ptr/deleter.hpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/third_party/boost-1.56.0/boost/interprocess/smart_ptr/deleter.hpp b/src/third_party/boost-1.56.0/boost/interprocess/smart_ptr/deleter.hpp new file mode 100644 index 00000000000..1a9e390018f --- /dev/null +++ b/src/third_party/boost-1.56.0/boost/interprocess/smart_ptr/deleter.hpp @@ -0,0 +1,64 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2007-2012. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/interprocess for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_INTERPROCESS_DELETER_HPP +#define BOOST_INTERPROCESS_DELETER_HPP + +#if defined(_MSC_VER) +# pragma once +#endif + +#include <boost/interprocess/detail/config_begin.hpp> +#include <boost/interprocess/interprocess_fwd.hpp> +#include <boost/interprocess/detail/utilities.hpp> +#include <boost/intrusive/pointer_traits.hpp> + +//!\file +//!Describes the functor to delete objects from the segment. + +namespace boost { +namespace interprocess { + +//!A deleter that uses the segment manager's destroy_ptr +//!function to destroy the passed pointer resource. +//! +//!This deleter is used +template<class T, class SegmentManager> +class deleter +{ + public: + typedef typename boost::intrusive:: + pointer_traits<typename SegmentManager::void_pointer>::template + rebind_pointer<T>::type pointer; + + private: + typedef typename boost::intrusive:: + pointer_traits<pointer>::template + rebind_pointer<SegmentManager>::type segment_manager_pointer; + + segment_manager_pointer mp_mngr; + + public: + deleter(segment_manager_pointer pmngr) + : mp_mngr(pmngr) + {} + + void operator()(const pointer &p) + { mp_mngr->destroy_ptr(ipcdetail::to_raw_pointer(p)); } +}; + +} //namespace interprocess { +} //namespace boost { + +#include <boost/interprocess/detail/config_end.hpp> + +#endif //#ifndef BOOST_INTERPROCESS_DELETER_HPP |