| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 | ////////////////////////////////////////////////////////////////////////////////// (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#ifndef BOOST_CONFIG_HPP#  include <boost/config.hpp>#endif#ifndef BOOST_CSTDINT_HPP#  include <boost/cstdint.hpp>#endif##if defined(BOOST_HAS_PRAGMA_ONCE)#  pragma once#endif#include <boost/interprocess/detail/std_fwd.hpp>//! \file//! This header file forward declares the basic interprocess types://!   - boost::interprocess::offset_ptr;//!   - boost::interprocess::permissions;//!   - boost::interprocess::mapped_region;//!   - boost::interprocess::file_mapping;//!   - boost::interprocess::shared_memory_object;//!   - boost::interprocess::windows_shared_memory;//!   - boost::interprocess::xsi_shared_memory;//!//! The following synchronization mechanisms and locks://!   - boost::interprocess::null_mutex;//!   - boost::interprocess::interprocess_mutex;//!   - boost::interprocess::interprocess_recursive_mutex;//!   - boost::interprocess::interprocess_semaphore;//!   - boost::interprocess::named_mutex;//!   - boost::interprocess::named_recursive_mutex;//!   - boost::interprocess::named_semaphore;//!   - boost::interprocess::interprocess_sharable_mutex;//!   - boost::interprocess::interprocess_condition;//!   - boost::interprocess::scoped_lock;//!   - boost::interprocess::sharable_lock;//!   - boost::interprocess::upgradable_lock;//!//! The following mutex families://!   - boost::interprocess::mutex_family;//!   - boost::interprocess::null_mutex_family;//!//! The following allocators://!   - boost::interprocess::allocator;//!   - boost::interprocess::node_allocator;//!   - boost::interprocess::private_node_allocator;//!   - boost::interprocess::cached_node_allocator;//!   - boost::interprocess::adaptive_pool;//!   - boost::interprocess::private_adaptive_pool;//!   - boost::interprocess::cached_adaptive_pool;//!//! The following allocation algorithms://!   - boost::interprocess::simple_seq_fit;//!   - boost::interprocess::rbtree_best_fit;//!//! The following index types://!   - boost::interprocess::flat_map_index;//!   - boost::interprocess::iset_index;//!   - boost::interprocess::iunordered_set_index;//!   - boost::interprocess::map_index;//!   - boost::interprocess::null_index;//!   - boost::interprocess::unordered_map_index;//!//! The following managed memory types://!   - boost::interprocess::segment_manager;//!   - boost::interprocess::basic_managed_external_buffer//!   - boost::interprocess::managed_external_buffer//!   - boost::interprocess::wmanaged_external_buffer//!   - boost::interprocess::basic_managed_shared_memory//!   - boost::interprocess::managed_shared_memory//!   - boost::interprocess::wmanaged_shared_memory//!   - boost::interprocess::basic_managed_windows_shared_memory//!   - boost::interprocess::managed_windows_shared_memory//!   - boost::interprocess::wmanaged_windows_shared_memory//!   - boost::interprocess::basic_managed_xsi_shared_memory//!   - boost::interprocess::managed_xsi_shared_memory//!   - boost::interprocess::wmanaged_xsi_shared_memory//!   - boost::interprocess::fixed_managed_shared_memory//!   - boost::interprocess::wfixed_managed_shared_memory//!   - boost::interprocess::basic_managed_heap_memory//!   - boost::interprocess::managed_heap_memory//!   - boost::interprocess::wmanaged_heap_memory//!   - boost::interprocess::basic_managed_mapped_file//!   - boost::interprocess::managed_mapped_file//!   - boost::interprocess::wmanaged_mapped_file//!//! The following exception types://!   - boost::interprocess::interprocess_exception//!   - boost::interprocess::lock_exception//!   - boost::interprocess::bad_alloc//!//! The following stream types://!   - boost::interprocess::basic_bufferbuf//!   - boost::interprocess::basic_ibufferstream//!   - boost::interprocess::basic_obufferstream//!   - boost::interprocess::basic_bufferstream//!   - boost::interprocess::basic_vectorbuf//!   - boost::interprocess::basic_ivectorstream//!   - boost::interprocess::basic_ovectorstream//!   - boost::interprocess::basic_vectorstream//!//! The following smart pointer types://!   - boost::interprocess::scoped_ptr//!   - boost::interprocess::intrusive_ptr//!   - boost::interprocess::shared_ptr//!   - boost::interprocess::weak_ptr//!//! The following interprocess communication types://!   - boost::interprocess::message_queue_t;//!   - boost::interprocess::message_queue;#include <boost/interprocess/detail/config_begin.hpp>#include <boost/interprocess/detail/workaround.hpp>#if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)#include <cstddef>////////////////////////////////////////////////////////////////////////////////                        Standard predeclarations//////////////////////////////////////////////////////////////////////////////namespace boost{  namespace intrusive{ }  }namespace boost{  namespace interprocess{ namespace bi = boost::intrusive; }  }namespace boost { namespace interprocess {////////////////////////////////////////////////////////////////////////////////                            permissions//////////////////////////////////////////////////////////////////////////////class permissions;////////////////////////////////////////////////////////////////////////////////                            shared_memory//////////////////////////////////////////////////////////////////////////////class shared_memory_object;#if defined (BOOST_INTERPROCESS_WINDOWS)class windows_shared_memory;#endif   //#if defined (BOOST_INTERPROCESS_WINDOWS)#if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS)class xsi_shared_memory;#endif   //#if defined (BOOST_INTERPROCESS_WINDOWS)////////////////////////////////////////////////////////////////////////////////              file mapping / mapped region//////////////////////////////////////////////////////////////////////////////class file_mapping;class mapped_region;////////////////////////////////////////////////////////////////////////////////                               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 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;#if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)#  ifdef BOOST_HAS_INTPTR_T      using ::boost::uintptr_t;#  else      typedef std::size_t uintptr_t;#  endif#endiftemplate < class T, class DifferenceType = std::ptrdiff_t         , class OffsetType = uintptr_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)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)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 {#endif   //#if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)#include <boost/interprocess/detail/config_end.hpp>#endif //#ifndef BOOST_INTERPROCESS_FWD_HPP
 |