////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2005-2008. 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 { ////////////////////////////////////////////////////////////////////////////// // shared_memory ////////////////////////////////////////////////////////////////////////////// class shared_memory_object; #if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32) class windows_shared_memory; #endif //#if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32) ////////////////////////////////////////////////////////////////////////////// // 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; ////////////////////////////////////////////////////////////////////////////// // 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_WINDOWS) && !(defined BOOST_DISABLE_WIN32) 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_WINDOWS) && !(defined BOOST_DISABLE_WIN32) ////////////////////////////////////////////////////////////////////////////// // 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; ////////////////////////////////////////////////////////////////////////////// // Containers ////////////////////////////////////////////////////////////////////////////// //vector class template > class vector; //list class template > class list; //slist class template > class slist; //set class template ,class Alloc = std::allocator > class set; //multiset class template ,class Alloc = std::allocator > class multiset; //map class template ,class Alloc = std::allocator > > class map; //multimap class template ,class Alloc = std::allocator > > class multimap; //flat_set class template ,class Alloc = std::allocator > class flat_set; //flat_multiset class template ,class Alloc = std::allocator > class flat_multiset; //flat_map class template ,class Alloc = std::allocator > > class flat_map; //flat_multimap class template ,class Alloc = std::allocator > > class flat_multimap; //basic_string class template ,class Alloc = std::allocator > class basic_string; //string class typedef basic_string ,std::allocator > string; }} //namespace boost { namespace interprocess { //#include #endif //#ifndef BOOST_INTERPROCESS_FWD_HPP