////////////////////////////////////////////////////////////////////////////// // // (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 #endif # #if defined(BOOST_HAS_PRAGMA_ONCE) # pragma once #endif #include //! \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 #include #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) #include ////////////////////////////////////////////////////////////////////////////// // 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 scoped_lock; template class sharable_lock; template class upgradable_lock; ////////////////////////////////////////////////////////////////////////////// // STL compatible allocators ////////////////////////////////////////////////////////////////////////////// template class allocator; template class node_allocator; template class private_node_allocator; template 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 simple_seq_fit; template, std::size_t MemAlignment = 0> class rbtree_best_fit; ////////////////////////////////////////////////////////////////////////////// // Index Types ////////////////////////////////////////////////////////////////////////////// template class flat_map_index; template class iset_index; template class iunordered_set_index; template class map_index; template class null_index; template class unordered_map_index; ////////////////////////////////////////////////////////////////////////////// // Segment manager ////////////////////////////////////////////////////////////////////////////// template class IndexType> class segment_manager; ////////////////////////////////////////////////////////////////////////////// // External buffer managed memory classes ////////////////////////////////////////////////////////////////////////////// template class IndexType> class basic_managed_external_buffer; typedef basic_managed_external_buffer ,iset_index> managed_external_buffer; typedef basic_managed_external_buffer ,iset_index> wmanaged_external_buffer; ////////////////////////////////////////////////////////////////////////////// // managed memory classes ////////////////////////////////////////////////////////////////////////////// template class IndexType> class basic_managed_shared_memory; typedef basic_managed_shared_memory ,iset_index> managed_shared_memory; typedef basic_managed_shared_memory ,iset_index> wmanaged_shared_memory; ////////////////////////////////////////////////////////////////////////////// // Windows shared memory managed memory classes ////////////////////////////////////////////////////////////////////////////// #if defined (BOOST_INTERPROCESS_WINDOWS) template class IndexType> class basic_managed_windows_shared_memory; typedef basic_managed_windows_shared_memory ,iset_index> managed_windows_shared_memory; typedef basic_managed_windows_shared_memory ,iset_index> wmanaged_windows_shared_memory; #endif //#if defined (BOOST_INTERPROCESS_WINDOWS) #if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS) template class IndexType> class basic_managed_xsi_shared_memory; typedef basic_managed_xsi_shared_memory ,iset_index> managed_xsi_shared_memory; typedef basic_managed_xsi_shared_memory ,iset_index> wmanaged_xsi_shared_memory; #endif //#if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS) ////////////////////////////////////////////////////////////////////////////// // Fixed address shared memory ////////////////////////////////////////////////////////////////////////////// typedef basic_managed_shared_memory ,iset_index> fixed_managed_shared_memory; typedef basic_managed_shared_memory ,iset_index> wfixed_managed_shared_memory; ////////////////////////////////////////////////////////////////////////////// // Heap memory managed memory classes ////////////////////////////////////////////////////////////////////////////// template class IndexType> class basic_managed_heap_memory; typedef basic_managed_heap_memory ,iset_index> managed_heap_memory; typedef basic_managed_heap_memory ,iset_index> wmanaged_heap_memory; ////////////////////////////////////////////////////////////////////////////// // Mapped file managed memory classes ////////////////////////////////////////////////////////////////////////////// template class IndexType> class basic_managed_mapped_file; typedef basic_managed_mapped_file ,iset_index> managed_mapped_file; typedef basic_managed_mapped_file ,iset_index> wmanaged_mapped_file; ////////////////////////////////////////////////////////////////////////////// // Exceptions ////////////////////////////////////////////////////////////////////////////// class interprocess_exception; class lock_exception; class bad_alloc; ////////////////////////////////////////////////////////////////////////////// // Bufferstream ////////////////////////////////////////////////////////////////////////////// //bufferstream template > class basic_bufferbuf; template > class basic_ibufferstream; template > class basic_obufferstream; template > class basic_bufferstream; ////////////////////////////////////////////////////////////////////////////// // Vectorstream ////////////////////////////////////////////////////////////////////////////// template > class basic_vectorbuf; template > class basic_ivectorstream; template > class basic_ovectorstream; template > class basic_vectorstream; ////////////////////////////////////////////////////////////////////////////// // Smart pointers ////////////////////////////////////////////////////////////////////////////// template class scoped_ptr; template class intrusive_ptr; template class shared_ptr; template class weak_ptr; ////////////////////////////////////////////////////////////////////////////// // IPC ////////////////////////////////////////////////////////////////////////////// template class message_queue_t; typedef message_queue_t > message_queue; }} //namespace boost { namespace interprocess { #endif //#if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) #include #endif //#ifndef BOOST_INTERPROCESS_FWD_HPP