////////////////////////////////////////////////////////////////////////////// // // (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 #include #include ////////////////////////////////////////////////////////////////////////////// // Standard predeclarations ////////////////////////////////////////////////////////////////////////////// /// @cond namespace boost{ namespace intrusive{ }} namespace boost{ namespace interprocess{ namespace bi = boost::intrusive; }} namespace std { template class allocator; template struct less; template struct pair; template struct char_traits; } //namespace std { /// @endcond 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) ////////////////////////////////////////////////////////////////////////////// // 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 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 adaptive_pool; template class private_adaptive_pool; template class cached_adaptive_pool; ////////////////////////////////////////////////////////////////////////////// // offset_ptr ////////////////////////////////////////////////////////////////////////////// template 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; #else #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) #endif //#if defined (BOOST_INTERPROCESS_WINDOWS) ////////////////////////////////////////////////////////////////////////////// // 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 ////////////////////////////////////////////////////////////////////////////// class message_queue; }} //namespace boost { namespace interprocess { ////////////////////////////////////////////////////////////////////////////// // CONTAINERS ////////////////////////////////////////////////////////////////////////////// #include #endif //#ifndef BOOST_INTERPROCESS_FWD_HPP