Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/interprocess/interprocess_fwd.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/interprocess/interprocess_fwd.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,418 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (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 +////////////////////////////////////////////////////////////////////////////// + +/// @cond + +namespace boost{ +namespace intrusive{ +}} + +namespace boost{ +namespace interprocess{ +namespace bi = boost::intrusive; +}} + +#include <utility> +#include <memory> +#include <functional> +#include <iosfwd> +#include <string> + +/// @endcond + +namespace 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 algorithms +template<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 +////////////////////////////////////////////////////////////////////////////// + +//bufferstream +template <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