diff options
Diffstat (limited to 'boost/interprocess/managed_windows_shared_memory.hpp')
-rw-r--r-- | boost/interprocess/managed_windows_shared_memory.hpp | 66 |
1 files changed, 46 insertions, 20 deletions
diff --git a/boost/interprocess/managed_windows_shared_memory.hpp b/boost/interprocess/managed_windows_shared_memory.hpp index 414007a614..2298c799ba 100644 --- a/boost/interprocess/managed_windows_shared_memory.hpp +++ b/boost/interprocess/managed_windows_shared_memory.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-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) // @@ -11,7 +11,7 @@ #ifndef BOOST_INTERPROCESS_MANAGED_WINDOWS_SHARED_MEMORY_HPP #define BOOST_INTERPROCESS_MANAGED_WINDOWS_SHARED_MEMORY_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -22,16 +22,27 @@ #include <boost/interprocess/creation_tags.hpp> #include <boost/interprocess/windows_shared_memory.hpp> #include <boost/interprocess/permissions.hpp> -#include <boost/move/move.hpp> +#include <boost/move/utility_core.hpp> //These includes needed to fulfill default template parameters of //predeclarations in interprocess_fwd.hpp -#include <boost/interprocess/mem_algo/rbtree_best_fit.hpp> +#include <boost/interprocess/mem_algo/rbtree_best_fit.hpp> #include <boost/interprocess/sync/mutex_family.hpp> #include <boost/interprocess/indexes/iset_index.hpp> namespace boost { namespace interprocess { +namespace ipcdetail { + +template<class AllocationAlgorithm> +struct wshmem_open_or_create +{ + typedef ipcdetail::managed_open_or_create_impl + < windows_shared_memory, AllocationAlgorithm::Alignment, false, false> type; +}; + +} //namespace ipcdetail { + //!A basic managed windows shared memory creation class. Initializes the //!shared memory segment. Inherits all basic functionality from //!basic_managed_memory_impl<CharType, AllocationAlgorithm, IndexType> @@ -52,18 +63,13 @@ template class basic_managed_windows_shared_memory : public ipcdetail::basic_managed_memory_impl < CharType, AllocationAlgorithm, IndexType - , ipcdetail::managed_open_or_create_impl - < windows_shared_memory - , AllocationAlgorithm::Alignment - , false>::ManagedOpenOrCreateUserOffset - > + , ipcdetail::wshmem_open_or_create<AllocationAlgorithm>::type::ManagedOpenOrCreateUserOffset> { - /// @cond + #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) private: typedef ipcdetail::basic_managed_memory_impl <CharType, AllocationAlgorithm, IndexType, - ipcdetail::managed_open_or_create_impl - <windows_shared_memory, AllocationAlgorithm::Alignment, false>::ManagedOpenOrCreateUserOffset> base_t; + ipcdetail::wshmem_open_or_create<AllocationAlgorithm>::type::ManagedOpenOrCreateUserOffset> base_t; typedef ipcdetail::create_open_func<base_t> create_open_func_t; basic_managed_windows_shared_memory *get_this_pointer() @@ -72,7 +78,7 @@ class basic_managed_windows_shared_memory private: typedef typename base_t::char_ptr_holder_t char_ptr_holder_t; BOOST_MOVABLE_BUT_NOT_COPYABLE(basic_managed_windows_shared_memory) - /// @endcond + #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED public: //functions typedef typename base_t::size_type size_type; @@ -85,7 +91,7 @@ class basic_managed_windows_shared_memory //!Creates shared memory and creates and places the segment manager. //!This can throw. basic_managed_windows_shared_memory - (create_only_t create_only, const char *name, + (create_only_t, const char *name, size_type size, const void *addr = 0, const permissions &perm = permissions()) : m_wshm(create_only, name, size, read_write, addr, create_open_func_t(get_this_pointer(), ipcdetail::DoCreate), perm) @@ -96,7 +102,7 @@ class basic_managed_windows_shared_memory //!segment. //!This can throw. basic_managed_windows_shared_memory - (open_or_create_t open_or_create, + (open_or_create_t, const char *name, size_type size, const void *addr = 0, const permissions &perm = permissions()) @@ -108,7 +114,7 @@ class basic_managed_windows_shared_memory //!Connects to a created shared memory and its segment manager. //!This can throw. basic_managed_windows_shared_memory - (open_only_t open_only, const char* name, const void *addr = 0) + (open_only_t, const char* name, const void *addr = 0) : m_wshm(open_only, name, read_write, addr, create_open_func_t(get_this_pointer(), ipcdetail::DoOpen)) @@ -164,7 +170,7 @@ class basic_managed_windows_shared_memory m_wshm.swap(other.m_wshm); } - /// @cond + #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) //!Tries to find a previous named allocation address. Returns a memory //!buffer and the object count. If not found returned pointer is 0. @@ -181,11 +187,31 @@ class basic_managed_windows_shared_memory } private: - ipcdetail::managed_open_or_create_impl< windows_shared_memory - , AllocationAlgorithm::Alignment, false> m_wshm; - /// @endcond + typename ipcdetail::wshmem_open_or_create<AllocationAlgorithm>::type m_wshm; + #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED }; +#ifdef BOOST_INTERPROCESS_DOXYGEN_INVOKED + +//!Typedef for a default basic_managed_windows_shared_memory +//!of narrow characters +typedef basic_managed_windows_shared_memory + <char + ,rbtree_best_fit<mutex_family> + ,iset_index> +managed_windows_shared_memory; + +//!Typedef for a default basic_managed_windows_shared_memory +//!of wide characters +typedef basic_managed_windows_shared_memory + <wchar_t + ,rbtree_best_fit<mutex_family> + ,iset_index> +wmanaged_windows_shared_memory; + +#endif //#ifdef BOOST_INTERPROCESS_DOXYGEN_INVOKED + + } //namespace interprocess { } //namespace boost { |