| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 | ////////////////////////////////////////////////////////////////////////////////// (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)//// 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///////////////////////////////////////////////////////////////////////////////// @condnamespace boost{namespace intrusive{}}namespace boost{namespace interprocess{namespace bi = boost::intrusive;}}#include <utility>#include <memory>#include <functional>#include <iosfwd>#include <string>/// @endcondnamespace 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 algorithmstemplate<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////////////////////////////////////////////////////////////////////////////////bufferstreamtemplate <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
 |