Chris@16
|
1 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
2 //
|
Chris@16
|
3 // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
|
Chris@16
|
4 // Software License, Version 1.0. (See accompanying file
|
Chris@16
|
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
6 //
|
Chris@16
|
7 // See http://www.boost.org/libs/interprocess for documentation.
|
Chris@16
|
8 //
|
Chris@16
|
9 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
10
|
Chris@16
|
11 #ifndef BOOST_INTERPROCESS_FWD_HPP
|
Chris@16
|
12 #define BOOST_INTERPROCESS_FWD_HPP
|
Chris@16
|
13
|
Chris@101
|
14 #ifndef BOOST_CONFIG_HPP
|
Chris@101
|
15 # include <boost/config.hpp>
|
Chris@101
|
16 #endif
|
Chris@101
|
17 #
|
Chris@101
|
18 #if defined(BOOST_HAS_PRAGMA_ONCE)
|
Chris@16
|
19 # pragma once
|
Chris@16
|
20 #endif
|
Chris@16
|
21
|
Chris@101
|
22 #include <boost/interprocess/detail/std_fwd.hpp>
|
Chris@101
|
23
|
Chris@101
|
24 //! \file
|
Chris@101
|
25 //! This header file forward declares the basic interprocess types:
|
Chris@101
|
26 //! - boost::interprocess::offset_ptr;
|
Chris@101
|
27 //! - boost::interprocess::permissions;
|
Chris@101
|
28 //! - boost::interprocess::mapped_region;
|
Chris@101
|
29 //! - boost::interprocess::file_mapping;
|
Chris@101
|
30 //! - boost::interprocess::shared_memory_object;
|
Chris@101
|
31 //! - boost::interprocess::windows_shared_memory;
|
Chris@101
|
32 //! - boost::interprocess::xsi_shared_memory;
|
Chris@101
|
33 //!
|
Chris@101
|
34 //! The following synchronization mechanisms and locks:
|
Chris@101
|
35 //! - boost::interprocess::null_mutex;
|
Chris@101
|
36 //! - boost::interprocess::interprocess_mutex;
|
Chris@101
|
37 //! - boost::interprocess::interprocess_recursive_mutex;
|
Chris@101
|
38 //! - boost::interprocess::interprocess_semaphore;
|
Chris@101
|
39 //! - boost::interprocess::named_mutex;
|
Chris@101
|
40 //! - boost::interprocess::named_recursive_mutex;
|
Chris@101
|
41 //! - boost::interprocess::named_semaphore;
|
Chris@101
|
42 //! - boost::interprocess::interprocess_sharable_mutex;
|
Chris@101
|
43 //! - boost::interprocess::interprocess_condition;
|
Chris@101
|
44 //! - boost::interprocess::scoped_lock;
|
Chris@101
|
45 //! - boost::interprocess::sharable_lock;
|
Chris@101
|
46 //! - boost::interprocess::upgradable_lock;
|
Chris@101
|
47 //!
|
Chris@101
|
48 //! The following mutex families:
|
Chris@101
|
49 //! - boost::interprocess::mutex_family;
|
Chris@101
|
50 //! - boost::interprocess::null_mutex_family;
|
Chris@101
|
51 //!
|
Chris@101
|
52 //! The following allocators:
|
Chris@101
|
53 //! - boost::interprocess::allocator;
|
Chris@101
|
54 //! - boost::interprocess::node_allocator;
|
Chris@101
|
55 //! - boost::interprocess::private_node_allocator;
|
Chris@101
|
56 //! - boost::interprocess::cached_node_allocator;
|
Chris@101
|
57 //! - boost::interprocess::adaptive_pool;
|
Chris@101
|
58 //! - boost::interprocess::private_adaptive_pool;
|
Chris@101
|
59 //! - boost::interprocess::cached_adaptive_pool;
|
Chris@101
|
60 //!
|
Chris@101
|
61 //! The following allocation algorithms:
|
Chris@101
|
62 //! - boost::interprocess::simple_seq_fit;
|
Chris@101
|
63 //! - boost::interprocess::rbtree_best_fit;
|
Chris@101
|
64 //!
|
Chris@101
|
65 //! The following index types:
|
Chris@101
|
66 //! - boost::interprocess::flat_map_index;
|
Chris@101
|
67 //! - boost::interprocess::iset_index;
|
Chris@101
|
68 //! - boost::interprocess::iunordered_set_index;
|
Chris@101
|
69 //! - boost::interprocess::map_index;
|
Chris@101
|
70 //! - boost::interprocess::null_index;
|
Chris@101
|
71 //! - boost::interprocess::unordered_map_index;
|
Chris@101
|
72 //!
|
Chris@101
|
73 //! The following managed memory types:
|
Chris@101
|
74 //! - boost::interprocess::segment_manager;
|
Chris@101
|
75 //! - boost::interprocess::basic_managed_external_buffer
|
Chris@101
|
76 //! - boost::interprocess::managed_external_buffer
|
Chris@101
|
77 //! - boost::interprocess::wmanaged_external_buffer
|
Chris@101
|
78 //! - boost::interprocess::basic_managed_shared_memory
|
Chris@101
|
79 //! - boost::interprocess::managed_shared_memory
|
Chris@101
|
80 //! - boost::interprocess::wmanaged_shared_memory
|
Chris@101
|
81 //! - boost::interprocess::basic_managed_windows_shared_memory
|
Chris@101
|
82 //! - boost::interprocess::managed_windows_shared_memory
|
Chris@101
|
83 //! - boost::interprocess::wmanaged_windows_shared_memory
|
Chris@101
|
84 //! - boost::interprocess::basic_managed_xsi_shared_memory
|
Chris@101
|
85 //! - boost::interprocess::managed_xsi_shared_memory
|
Chris@101
|
86 //! - boost::interprocess::wmanaged_xsi_shared_memory
|
Chris@101
|
87 //! - boost::interprocess::fixed_managed_shared_memory
|
Chris@101
|
88 //! - boost::interprocess::wfixed_managed_shared_memory
|
Chris@101
|
89 //! - boost::interprocess::basic_managed_heap_memory
|
Chris@101
|
90 //! - boost::interprocess::managed_heap_memory
|
Chris@101
|
91 //! - boost::interprocess::wmanaged_heap_memory
|
Chris@101
|
92 //! - boost::interprocess::basic_managed_mapped_file
|
Chris@101
|
93 //! - boost::interprocess::managed_mapped_file
|
Chris@101
|
94 //! - boost::interprocess::wmanaged_mapped_file
|
Chris@101
|
95 //!
|
Chris@101
|
96 //! The following exception types:
|
Chris@101
|
97 //! - boost::interprocess::interprocess_exception
|
Chris@101
|
98 //! - boost::interprocess::lock_exception
|
Chris@101
|
99 //! - boost::interprocess::bad_alloc
|
Chris@101
|
100 //!
|
Chris@101
|
101 //! The following stream types:
|
Chris@101
|
102 //! - boost::interprocess::basic_bufferbuf
|
Chris@101
|
103 //! - boost::interprocess::basic_ibufferstream
|
Chris@101
|
104 //! - boost::interprocess::basic_obufferstream
|
Chris@101
|
105 //! - boost::interprocess::basic_bufferstream
|
Chris@101
|
106 //! - boost::interprocess::basic_vectorbuf
|
Chris@101
|
107 //! - boost::interprocess::basic_ivectorstream
|
Chris@101
|
108 //! - boost::interprocess::basic_ovectorstream
|
Chris@101
|
109 //! - boost::interprocess::basic_vectorstream
|
Chris@101
|
110 //!
|
Chris@101
|
111 //! The following smart pointer types:
|
Chris@101
|
112 //! - boost::interprocess::scoped_ptr
|
Chris@101
|
113 //! - boost::interprocess::intrusive_ptr
|
Chris@101
|
114 //! - boost::interprocess::shared_ptr
|
Chris@101
|
115 //! - boost::interprocess::weak_ptr
|
Chris@101
|
116 //!
|
Chris@101
|
117 //! The following interprocess communication types:
|
Chris@101
|
118 //! - boost::interprocess::message_queue_t;
|
Chris@101
|
119 //! - boost::interprocess::message_queue;
|
Chris@101
|
120
|
Chris@16
|
121 #include <boost/interprocess/detail/config_begin.hpp>
|
Chris@16
|
122 #include <boost/interprocess/detail/workaround.hpp>
|
Chris@16
|
123
|
Chris@101
|
124 #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)
|
Chris@101
|
125
|
Chris@16
|
126 #include <cstddef>
|
Chris@16
|
127
|
Chris@16
|
128 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
129 // Standard predeclarations
|
Chris@16
|
130 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
131
|
Chris@101
|
132 namespace boost{ namespace intrusive{ } }
|
Chris@101
|
133 namespace boost{ namespace interprocess{ namespace bi = boost::intrusive; } }
|
Chris@16
|
134
|
Chris@16
|
135 namespace boost { namespace interprocess {
|
Chris@16
|
136
|
Chris@16
|
137 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
138 // permissions
|
Chris@16
|
139 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
140
|
Chris@16
|
141 class permissions;
|
Chris@16
|
142
|
Chris@16
|
143 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
144 // shared_memory
|
Chris@16
|
145 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
146
|
Chris@16
|
147 class shared_memory_object;
|
Chris@16
|
148
|
Chris@101
|
149 #if defined (BOOST_INTERPROCESS_WINDOWS)
|
Chris@16
|
150 class windows_shared_memory;
|
Chris@16
|
151 #endif //#if defined (BOOST_INTERPROCESS_WINDOWS)
|
Chris@16
|
152
|
Chris@101
|
153 #if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS)
|
Chris@101
|
154 class xsi_shared_memory;
|
Chris@101
|
155 #endif //#if defined (BOOST_INTERPROCESS_WINDOWS)
|
Chris@101
|
156
|
Chris@16
|
157 //////////////////////////////////////////////////////////////////////////////
|
Chris@101
|
158 // file mapping / mapped region
|
Chris@16
|
159 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
160
|
Chris@16
|
161 class file_mapping;
|
Chris@16
|
162 class mapped_region;
|
Chris@16
|
163
|
Chris@16
|
164 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
165 // Mutexes
|
Chris@16
|
166 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
167
|
Chris@16
|
168 class null_mutex;
|
Chris@16
|
169
|
Chris@16
|
170 class interprocess_mutex;
|
Chris@16
|
171 class interprocess_recursive_mutex;
|
Chris@16
|
172
|
Chris@16
|
173 class named_mutex;
|
Chris@16
|
174 class named_recursive_mutex;
|
Chris@16
|
175
|
Chris@16
|
176 class interprocess_semaphore;
|
Chris@16
|
177 class named_semaphore;
|
Chris@16
|
178
|
Chris@16
|
179 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
180 // Mutex families
|
Chris@16
|
181 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
182
|
Chris@16
|
183 struct mutex_family;
|
Chris@16
|
184 struct null_mutex_family;
|
Chris@16
|
185
|
Chris@16
|
186 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
187 // Other synchronization classes
|
Chris@16
|
188 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
189
|
Chris@16
|
190 class interprocess_sharable_mutex;
|
Chris@16
|
191 class interprocess_condition;
|
Chris@16
|
192
|
Chris@16
|
193 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
194 // Locks
|
Chris@16
|
195 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
196
|
Chris@16
|
197 template <class Mutex>
|
Chris@16
|
198 class scoped_lock;
|
Chris@16
|
199
|
Chris@16
|
200 template <class SharableMutex>
|
Chris@16
|
201 class sharable_lock;
|
Chris@16
|
202
|
Chris@16
|
203 template <class UpgradableMutex>
|
Chris@16
|
204 class upgradable_lock;
|
Chris@16
|
205
|
Chris@16
|
206 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
207 // STL compatible allocators
|
Chris@16
|
208 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
209
|
Chris@16
|
210 template<class T, class SegmentManager>
|
Chris@16
|
211 class allocator;
|
Chris@16
|
212
|
Chris@16
|
213 template<class T, class SegmentManager, std::size_t NodesPerBlock = 64>
|
Chris@16
|
214 class node_allocator;
|
Chris@16
|
215
|
Chris@16
|
216 template<class T, class SegmentManager, std::size_t NodesPerBlock = 64>
|
Chris@16
|
217 class private_node_allocator;
|
Chris@16
|
218
|
Chris@16
|
219 template<class T, class SegmentManager, std::size_t NodesPerBlock = 64>
|
Chris@16
|
220 class cached_node_allocator;
|
Chris@16
|
221
|
Chris@101
|
222 template< class T, class SegmentManager, std::size_t NodesPerBlock = 64
|
Chris@101
|
223 , std::size_t MaxFreeBlocks = 2, unsigned char OverheadPercent = 5 >
|
Chris@16
|
224 class adaptive_pool;
|
Chris@16
|
225
|
Chris@101
|
226 template< class T, class SegmentManager, std::size_t NodesPerBlock = 64
|
Chris@101
|
227 , std::size_t MaxFreeBlocks = 2, unsigned char OverheadPercent = 5 >
|
Chris@16
|
228 class private_adaptive_pool;
|
Chris@16
|
229
|
Chris@101
|
230 template< class T, class SegmentManager, std::size_t NodesPerBlock = 64
|
Chris@101
|
231 , std::size_t MaxFreeBlocks = 2, unsigned char OverheadPercent = 5 >
|
Chris@16
|
232 class cached_adaptive_pool;
|
Chris@16
|
233
|
Chris@16
|
234
|
Chris@16
|
235 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
236 // offset_ptr
|
Chris@16
|
237 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
238
|
Chris@16
|
239 static const std::size_t offset_type_alignment = 0;
|
Chris@16
|
240
|
Chris@101
|
241 template < class T, class DifferenceType = std::ptrdiff_t
|
Chris@101
|
242 , class OffsetType = std::size_t, std::size_t Alignment = offset_type_alignment>
|
Chris@16
|
243 class offset_ptr;
|
Chris@16
|
244
|
Chris@16
|
245 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
246 // Memory allocation algorithms
|
Chris@16
|
247 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
248
|
Chris@16
|
249 //Single segment memory allocation algorithms
|
Chris@16
|
250 template<class MutexFamily, class VoidMutex = offset_ptr<void> >
|
Chris@16
|
251 class simple_seq_fit;
|
Chris@16
|
252
|
Chris@16
|
253 template<class MutexFamily, class VoidMutex = offset_ptr<void>, std::size_t MemAlignment = 0>
|
Chris@16
|
254 class rbtree_best_fit;
|
Chris@16
|
255
|
Chris@16
|
256 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
257 // Index Types
|
Chris@16
|
258 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
259
|
Chris@16
|
260 template<class IndexConfig> class flat_map_index;
|
Chris@16
|
261 template<class IndexConfig> class iset_index;
|
Chris@16
|
262 template<class IndexConfig> class iunordered_set_index;
|
Chris@16
|
263 template<class IndexConfig> class map_index;
|
Chris@16
|
264 template<class IndexConfig> class null_index;
|
Chris@16
|
265 template<class IndexConfig> class unordered_map_index;
|
Chris@16
|
266
|
Chris@16
|
267 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
268 // Segment manager
|
Chris@16
|
269 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
270
|
Chris@16
|
271 template <class CharType
|
Chris@16
|
272 ,class MemoryAlgorithm
|
Chris@16
|
273 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
274 class segment_manager;
|
Chris@16
|
275
|
Chris@16
|
276 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
277 // External buffer managed memory classes
|
Chris@16
|
278 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
279
|
Chris@16
|
280 template <class CharType
|
Chris@16
|
281 ,class MemoryAlgorithm
|
Chris@16
|
282 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
283 class basic_managed_external_buffer;
|
Chris@16
|
284
|
Chris@16
|
285 typedef basic_managed_external_buffer
|
Chris@16
|
286 <char
|
Chris@16
|
287 ,rbtree_best_fit<null_mutex_family>
|
Chris@16
|
288 ,iset_index>
|
Chris@16
|
289 managed_external_buffer;
|
Chris@16
|
290
|
Chris@16
|
291 typedef basic_managed_external_buffer
|
Chris@16
|
292 <wchar_t
|
Chris@16
|
293 ,rbtree_best_fit<null_mutex_family>
|
Chris@16
|
294 ,iset_index>
|
Chris@16
|
295 wmanaged_external_buffer;
|
Chris@16
|
296
|
Chris@16
|
297 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
298 // managed memory classes
|
Chris@16
|
299 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
300
|
Chris@16
|
301 template <class CharType
|
Chris@16
|
302 ,class MemoryAlgorithm
|
Chris@16
|
303 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
304 class basic_managed_shared_memory;
|
Chris@16
|
305
|
Chris@16
|
306 typedef basic_managed_shared_memory
|
Chris@16
|
307 <char
|
Chris@16
|
308 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
309 ,iset_index>
|
Chris@16
|
310 managed_shared_memory;
|
Chris@16
|
311
|
Chris@16
|
312 typedef basic_managed_shared_memory
|
Chris@16
|
313 <wchar_t
|
Chris@16
|
314 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
315 ,iset_index>
|
Chris@16
|
316 wmanaged_shared_memory;
|
Chris@16
|
317
|
Chris@16
|
318
|
Chris@16
|
319 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
320 // Windows shared memory managed memory classes
|
Chris@16
|
321 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
322
|
Chris@101
|
323 #if defined (BOOST_INTERPROCESS_WINDOWS)
|
Chris@16
|
324
|
Chris@16
|
325 template <class CharType
|
Chris@16
|
326 ,class MemoryAlgorithm
|
Chris@16
|
327 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
328 class basic_managed_windows_shared_memory;
|
Chris@16
|
329
|
Chris@16
|
330 typedef basic_managed_windows_shared_memory
|
Chris@16
|
331 <char
|
Chris@16
|
332 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
333 ,iset_index>
|
Chris@16
|
334 managed_windows_shared_memory;
|
Chris@16
|
335
|
Chris@16
|
336 typedef basic_managed_windows_shared_memory
|
Chris@16
|
337 <wchar_t
|
Chris@16
|
338 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
339 ,iset_index>
|
Chris@16
|
340 wmanaged_windows_shared_memory;
|
Chris@16
|
341
|
Chris@16
|
342 #endif //#if defined (BOOST_INTERPROCESS_WINDOWS)
|
Chris@16
|
343
|
Chris@101
|
344 #if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS)
|
Chris@16
|
345
|
Chris@16
|
346 template <class CharType
|
Chris@16
|
347 ,class MemoryAlgorithm
|
Chris@16
|
348 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
349 class basic_managed_xsi_shared_memory;
|
Chris@16
|
350
|
Chris@16
|
351 typedef basic_managed_xsi_shared_memory
|
Chris@16
|
352 <char
|
Chris@16
|
353 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
354 ,iset_index>
|
Chris@16
|
355 managed_xsi_shared_memory;
|
Chris@16
|
356
|
Chris@16
|
357 typedef basic_managed_xsi_shared_memory
|
Chris@16
|
358 <wchar_t
|
Chris@16
|
359 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
360 ,iset_index>
|
Chris@16
|
361 wmanaged_xsi_shared_memory;
|
Chris@16
|
362
|
Chris@16
|
363 #endif //#if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS)
|
Chris@16
|
364
|
Chris@16
|
365 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
366 // Fixed address shared memory
|
Chris@16
|
367 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
368
|
Chris@16
|
369 typedef basic_managed_shared_memory
|
Chris@16
|
370 <char
|
Chris@16
|
371 ,rbtree_best_fit<mutex_family, void*>
|
Chris@16
|
372 ,iset_index>
|
Chris@16
|
373 fixed_managed_shared_memory;
|
Chris@16
|
374
|
Chris@16
|
375 typedef basic_managed_shared_memory
|
Chris@16
|
376 <wchar_t
|
Chris@16
|
377 ,rbtree_best_fit<mutex_family, void*>
|
Chris@16
|
378 ,iset_index>
|
Chris@16
|
379 wfixed_managed_shared_memory;
|
Chris@16
|
380
|
Chris@16
|
381 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
382 // Heap memory managed memory classes
|
Chris@16
|
383 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
384
|
Chris@16
|
385 template
|
Chris@16
|
386 <class CharType
|
Chris@16
|
387 ,class MemoryAlgorithm
|
Chris@16
|
388 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
389 class basic_managed_heap_memory;
|
Chris@16
|
390
|
Chris@16
|
391 typedef basic_managed_heap_memory
|
Chris@16
|
392 <char
|
Chris@16
|
393 ,rbtree_best_fit<null_mutex_family>
|
Chris@16
|
394 ,iset_index>
|
Chris@16
|
395 managed_heap_memory;
|
Chris@16
|
396
|
Chris@16
|
397 typedef basic_managed_heap_memory
|
Chris@16
|
398 <wchar_t
|
Chris@16
|
399 ,rbtree_best_fit<null_mutex_family>
|
Chris@16
|
400 ,iset_index>
|
Chris@16
|
401 wmanaged_heap_memory;
|
Chris@16
|
402
|
Chris@16
|
403 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
404 // Mapped file managed memory classes
|
Chris@16
|
405 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
406
|
Chris@16
|
407 template
|
Chris@16
|
408 <class CharType
|
Chris@16
|
409 ,class MemoryAlgorithm
|
Chris@16
|
410 ,template<class IndexConfig> class IndexType>
|
Chris@16
|
411 class basic_managed_mapped_file;
|
Chris@16
|
412
|
Chris@16
|
413 typedef basic_managed_mapped_file
|
Chris@16
|
414 <char
|
Chris@16
|
415 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
416 ,iset_index>
|
Chris@16
|
417 managed_mapped_file;
|
Chris@16
|
418
|
Chris@16
|
419 typedef basic_managed_mapped_file
|
Chris@16
|
420 <wchar_t
|
Chris@16
|
421 ,rbtree_best_fit<mutex_family>
|
Chris@16
|
422 ,iset_index>
|
Chris@16
|
423 wmanaged_mapped_file;
|
Chris@16
|
424
|
Chris@16
|
425 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
426 // Exceptions
|
Chris@16
|
427 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
428
|
Chris@16
|
429 class interprocess_exception;
|
Chris@16
|
430 class lock_exception;
|
Chris@16
|
431 class bad_alloc;
|
Chris@16
|
432
|
Chris@16
|
433 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
434 // Bufferstream
|
Chris@16
|
435 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
436
|
Chris@16
|
437 //bufferstream
|
Chris@16
|
438 template <class CharT
|
Chris@16
|
439 ,class CharTraits = std::char_traits<CharT> >
|
Chris@16
|
440 class basic_bufferbuf;
|
Chris@16
|
441
|
Chris@16
|
442 template <class CharT
|
Chris@16
|
443 ,class CharTraits = std::char_traits<CharT> >
|
Chris@16
|
444 class basic_ibufferstream;
|
Chris@16
|
445
|
Chris@16
|
446 template <class CharT
|
Chris@16
|
447 ,class CharTraits = std::char_traits<CharT> >
|
Chris@16
|
448 class basic_obufferstream;
|
Chris@16
|
449
|
Chris@16
|
450 template <class CharT
|
Chris@16
|
451 ,class CharTraits = std::char_traits<CharT> >
|
Chris@16
|
452 class basic_bufferstream;
|
Chris@16
|
453
|
Chris@16
|
454 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
455 // Vectorstream
|
Chris@16
|
456 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
457
|
Chris@16
|
458 template <class CharVector
|
Chris@16
|
459 ,class CharTraits = std::char_traits<typename CharVector::value_type> >
|
Chris@16
|
460 class basic_vectorbuf;
|
Chris@16
|
461
|
Chris@16
|
462 template <class CharVector
|
Chris@16
|
463 ,class CharTraits = std::char_traits<typename CharVector::value_type> >
|
Chris@16
|
464 class basic_ivectorstream;
|
Chris@16
|
465
|
Chris@16
|
466 template <class CharVector
|
Chris@16
|
467 ,class CharTraits = std::char_traits<typename CharVector::value_type> >
|
Chris@16
|
468 class basic_ovectorstream;
|
Chris@16
|
469
|
Chris@16
|
470 template <class CharVector
|
Chris@16
|
471 ,class CharTraits = std::char_traits<typename CharVector::value_type> >
|
Chris@16
|
472 class basic_vectorstream;
|
Chris@16
|
473
|
Chris@16
|
474 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
475 // Smart pointers
|
Chris@16
|
476 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
477
|
Chris@16
|
478 template<class T, class Deleter>
|
Chris@16
|
479 class scoped_ptr;
|
Chris@16
|
480
|
Chris@16
|
481 template<class T, class VoidPointer>
|
Chris@16
|
482 class intrusive_ptr;
|
Chris@16
|
483
|
Chris@16
|
484 template<class T, class VoidAllocator, class Deleter>
|
Chris@16
|
485 class shared_ptr;
|
Chris@16
|
486
|
Chris@16
|
487 template<class T, class VoidAllocator, class Deleter>
|
Chris@16
|
488 class weak_ptr;
|
Chris@16
|
489
|
Chris@16
|
490 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
491 // IPC
|
Chris@16
|
492 //////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
493
|
Chris@16
|
494 template<class VoidPointer>
|
Chris@16
|
495 class message_queue_t;
|
Chris@16
|
496
|
Chris@16
|
497 typedef message_queue_t<offset_ptr<void> > message_queue;
|
Chris@16
|
498
|
Chris@16
|
499 }} //namespace boost { namespace interprocess {
|
Chris@16
|
500
|
Chris@101
|
501 #endif //#if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)
|
Chris@16
|
502
|
Chris@16
|
503 #include <boost/interprocess/detail/config_end.hpp>
|
Chris@16
|
504
|
Chris@16
|
505 #endif //#ifndef BOOST_INTERPROCESS_FWD_HPP
|