You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							439 lines
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
	
	
							439 lines
						
					
					
						
							13 KiB
						
					
					
				////////////////////////////////////////////////////////////////////////////// | 
						|
// | 
						|
// (C) Copyright Ion Gaztanaga 2005-2009. 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_FWD_HPP | 
						|
#define BOOST_INTERPROCESS_FWD_HPP | 
						|
 | 
						|
#if defined (_MSC_VER) && (_MSC_VER >= 1200) | 
						|
#  pragma once | 
						|
#endif | 
						|
 | 
						|
#include <boost/interprocess/detail/config_begin.hpp> | 
						|
#include <boost/interprocess/detail/workaround.hpp> | 
						|
 | 
						|
#include <cstddef> | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                        Standard predeclarations | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
/// @cond | 
						|
 | 
						|
namespace boost{ | 
						|
namespace intrusive{ | 
						|
}} | 
						|
 | 
						|
namespace boost{ | 
						|
namespace interprocess{ | 
						|
namespace bi = boost::intrusive; | 
						|
}} | 
						|
 | 
						|
#ifndef _LIBCPP_VERSION  | 
						|
 | 
						|
namespace std { | 
						|
 | 
						|
template <class T> | 
						|
class allocator; | 
						|
 | 
						|
template <class T> | 
						|
struct less; | 
						|
 | 
						|
template <class T1, class T2> | 
						|
struct pair; | 
						|
 | 
						|
template <class CharType>  | 
						|
struct char_traits; | 
						|
 | 
						|
}  //namespace std { | 
						|
 | 
						|
#else  | 
						|
  | 
						|
#include <utility>  | 
						|
#include <memory>  | 
						|
#include <functional>  | 
						|
#include <iosfwd>  | 
						|
  | 
						|
#endif  | 
						|
 | 
						|
/// @endcond | 
						|
 | 
						|
namespace boost { namespace interprocess { | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                            permissions | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
class permissions; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                            shared_memory | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
class shared_memory_object; | 
						|
 | 
						|
#if defined (BOOST_INTERPROCESS_WINDOWS) || defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) | 
						|
class windows_shared_memory; | 
						|
#endif   //#if defined (BOOST_INTERPROCESS_WINDOWS) | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//              mapped file/mapped region/mapped_file | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
class file_mapping; | 
						|
class mapped_region; | 
						|
class mapped_file; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                               Mutexes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
class null_mutex; | 
						|
 | 
						|
class interprocess_mutex; | 
						|
class interprocess_recursive_mutex; | 
						|
 | 
						|
class named_mutex; | 
						|
class named_recursive_mutex; | 
						|
 | 
						|
class interprocess_semaphore; | 
						|
class named_semaphore; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                         Mutex families | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
struct mutex_family; | 
						|
struct null_mutex_family; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                   Other synchronization classes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
class barrier; | 
						|
class interprocess_sharable_mutex; | 
						|
class interprocess_condition; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                              Locks | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template <class Mutex> | 
						|
class scoped_lock; | 
						|
 | 
						|
template <class SharableMutex> | 
						|
class sharable_lock; | 
						|
 | 
						|
template <class UpgradableMutex> | 
						|
class upgradable_lock; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                      STL compatible allocators | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template<class T, class SegmentManager> | 
						|
class allocator; | 
						|
 | 
						|
template<class T, class SegmentManager, std::size_t NodesPerBlock = 64> | 
						|
class node_allocator; | 
						|
 | 
						|
template<class T, class SegmentManager, std::size_t NodesPerBlock = 64> | 
						|
class private_node_allocator; | 
						|
 | 
						|
template<class T, class SegmentManager, std::size_t NodesPerBlock = 64> | 
						|
class cached_node_allocator; | 
						|
 | 
						|
template<class T, class SegmentManager, std::size_t NodesPerBlock = 64, std::size_t MaxFreeBlocks = 2 | 
						|
         , unsigned char OverheadPercent = 5 | 
						|
> | 
						|
class adaptive_pool; | 
						|
 | 
						|
template<class T, class SegmentManager, std::size_t NodesPerBlock = 64, std::size_t MaxFreeBlocks = 2 | 
						|
         , unsigned char OverheadPercent = 5 | 
						|
> | 
						|
class private_adaptive_pool; | 
						|
 | 
						|
template<class T, class SegmentManager, std::size_t NodesPerBlock = 64, std::size_t MaxFreeBlocks = 2 | 
						|
         , unsigned char OverheadPercent = 5 | 
						|
> | 
						|
class cached_adaptive_pool; | 
						|
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                            offset_ptr | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
static const std::size_t offset_type_alignment = 0; | 
						|
 | 
						|
template <class T, class DifferenceType = std::ptrdiff_t, class OffsetType = std::size_t, std::size_t Alignment = offset_type_alignment> | 
						|
class offset_ptr; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                    Memory allocation algorithms | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
//Single segment memory allocation algorithms | 
						|
template<class MutexFamily, class VoidMutex = offset_ptr<void> > | 
						|
class simple_seq_fit; | 
						|
 | 
						|
template<class MutexFamily, class VoidMutex = offset_ptr<void>, std::size_t MemAlignment = 0> | 
						|
class rbtree_best_fit; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                         Index Types | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template<class IndexConfig> class flat_map_index; | 
						|
template<class IndexConfig> class iset_index; | 
						|
template<class IndexConfig> class iunordered_set_index; | 
						|
template<class IndexConfig> class map_index; | 
						|
template<class IndexConfig> class null_index; | 
						|
template<class IndexConfig> class unordered_map_index; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                         Segment manager | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template <class CharType | 
						|
         ,class MemoryAlgorithm | 
						|
         ,template<class IndexConfig> class IndexType> | 
						|
class segment_manager; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                  External buffer managed memory classes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template <class CharType | 
						|
         ,class MemoryAlgorithm | 
						|
         ,template<class IndexConfig> class IndexType> | 
						|
class basic_managed_external_buffer; | 
						|
 | 
						|
typedef basic_managed_external_buffer | 
						|
   <char | 
						|
   ,rbtree_best_fit<null_mutex_family> | 
						|
   ,iset_index> | 
						|
managed_external_buffer; | 
						|
 | 
						|
typedef basic_managed_external_buffer | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<null_mutex_family> | 
						|
   ,iset_index> | 
						|
wmanaged_external_buffer; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                      managed memory classes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template <class CharType | 
						|
         ,class MemoryAlgorithm | 
						|
         ,template<class IndexConfig> class IndexType> | 
						|
class basic_managed_shared_memory; | 
						|
 | 
						|
typedef basic_managed_shared_memory  | 
						|
   <char | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
managed_shared_memory; | 
						|
 | 
						|
typedef basic_managed_shared_memory | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
wmanaged_shared_memory; | 
						|
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                      Windows shared memory managed memory classes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
#if defined (BOOST_INTERPROCESS_WINDOWS) || defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) | 
						|
 | 
						|
template <class CharType | 
						|
         ,class MemoryAlgorithm | 
						|
         ,template<class IndexConfig> class IndexType> | 
						|
class basic_managed_windows_shared_memory; | 
						|
 | 
						|
typedef basic_managed_windows_shared_memory  | 
						|
   <char | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
managed_windows_shared_memory; | 
						|
 | 
						|
typedef basic_managed_windows_shared_memory | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
wmanaged_windows_shared_memory; | 
						|
 | 
						|
#endif   //#if defined (BOOST_INTERPROCESS_WINDOWS) | 
						|
 | 
						|
#if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS) || defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) | 
						|
 | 
						|
template <class CharType | 
						|
         ,class MemoryAlgorithm | 
						|
         ,template<class IndexConfig> class IndexType> | 
						|
class basic_managed_xsi_shared_memory; | 
						|
 | 
						|
typedef basic_managed_xsi_shared_memory  | 
						|
   <char | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
managed_xsi_shared_memory; | 
						|
 | 
						|
typedef basic_managed_xsi_shared_memory | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
wmanaged_xsi_shared_memory; | 
						|
 | 
						|
#endif //#if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS) | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                      Fixed address shared memory | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
typedef basic_managed_shared_memory | 
						|
   <char | 
						|
   ,rbtree_best_fit<mutex_family, void*> | 
						|
   ,iset_index> | 
						|
fixed_managed_shared_memory; | 
						|
 | 
						|
typedef basic_managed_shared_memory | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<mutex_family, void*> | 
						|
   ,iset_index> | 
						|
wfixed_managed_shared_memory; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                      Heap memory managed memory classes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template | 
						|
   <class CharType | 
						|
   ,class MemoryAlgorithm | 
						|
   ,template<class IndexConfig> class IndexType> | 
						|
class basic_managed_heap_memory; | 
						|
 | 
						|
typedef basic_managed_heap_memory | 
						|
   <char | 
						|
   ,rbtree_best_fit<null_mutex_family> | 
						|
   ,iset_index> | 
						|
managed_heap_memory; | 
						|
 | 
						|
typedef basic_managed_heap_memory | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<null_mutex_family> | 
						|
   ,iset_index> | 
						|
wmanaged_heap_memory; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                         Mapped file managed memory classes | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template | 
						|
   <class CharType | 
						|
   ,class MemoryAlgorithm | 
						|
   ,template<class IndexConfig> class IndexType> | 
						|
class basic_managed_mapped_file; | 
						|
 | 
						|
typedef basic_managed_mapped_file | 
						|
   <char | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
managed_mapped_file; | 
						|
 | 
						|
typedef basic_managed_mapped_file | 
						|
   <wchar_t | 
						|
   ,rbtree_best_fit<mutex_family> | 
						|
   ,iset_index> | 
						|
wmanaged_mapped_file; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                            Exceptions | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
class interprocess_exception; | 
						|
class lock_exception; | 
						|
class bad_alloc; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                            Bufferstream | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
//bufferstream | 
						|
template <class CharT | 
						|
         ,class CharTraits = std::char_traits<CharT> > | 
						|
class basic_bufferbuf; | 
						|
 | 
						|
template <class CharT | 
						|
         ,class CharTraits = std::char_traits<CharT> > | 
						|
class basic_ibufferstream; | 
						|
 | 
						|
template <class CharT | 
						|
         ,class CharTraits = std::char_traits<CharT> > | 
						|
class basic_obufferstream; | 
						|
 | 
						|
template <class CharT | 
						|
         ,class CharTraits = std::char_traits<CharT> > | 
						|
class basic_bufferstream; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                            Vectorstream | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template <class CharVector | 
						|
         ,class CharTraits = std::char_traits<typename CharVector::value_type> > | 
						|
class basic_vectorbuf; | 
						|
 | 
						|
template <class CharVector | 
						|
         ,class CharTraits = std::char_traits<typename CharVector::value_type> > | 
						|
class basic_ivectorstream; | 
						|
 | 
						|
template <class CharVector | 
						|
         ,class CharTraits = std::char_traits<typename CharVector::value_type> > | 
						|
class basic_ovectorstream; | 
						|
 | 
						|
template <class CharVector | 
						|
         ,class CharTraits = std::char_traits<typename CharVector::value_type> > | 
						|
class basic_vectorstream; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                             Smart pointers | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template<class T, class Deleter> | 
						|
class scoped_ptr; | 
						|
 | 
						|
template<class T, class VoidPointer> | 
						|
class intrusive_ptr; | 
						|
 | 
						|
template<class T, class VoidAllocator, class Deleter> | 
						|
class shared_ptr; | 
						|
 | 
						|
template<class T, class VoidAllocator, class Deleter> | 
						|
class weak_ptr; | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                                  IPC | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
template<class VoidPointer> | 
						|
class message_queue_t; | 
						|
 | 
						|
typedef message_queue_t<offset_ptr<void> > message_queue; | 
						|
 | 
						|
}}  //namespace boost { namespace interprocess { | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
//                                  CONTAINERS | 
						|
////////////////////////////////////////////////////////////////////////////// | 
						|
 | 
						|
#include <boost/interprocess/detail/config_end.hpp> | 
						|
 | 
						|
#endif //#ifndef BOOST_INTERPROCESS_FWD_HPP
 | 
						|
 |