]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/intrusive/include/boost/intrusive/intrusive_fwd.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / intrusive / include / boost / intrusive / intrusive_fwd.hpp
1 /////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) Copyright Ion Gaztanaga 2007-2013
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //
9 // See http://www.boost.org/libs/intrusive for documentation.
10 //
11 /////////////////////////////////////////////////////////////////////////////
12
13 #ifndef BOOST_INTRUSIVE_FWD_HPP
14 #define BOOST_INTRUSIVE_FWD_HPP
15
16 #ifndef BOOST_CONFIG_HPP
17 # include <boost/config.hpp>
18 #endif
19 #
20 #ifndef BOOST_CSTDINT_HPP
21 # include <boost/cstdint.hpp>
22 #endif
23 #
24 #if defined(BOOST_HAS_PRAGMA_ONCE)
25 # pragma once
26 #endif
27
28 //! \file
29 //! This header file forward declares most Intrusive classes.
30 //!
31 //! It forward declares the following containers and hooks:
32 //! - boost::intrusive::slist / boost::intrusive::slist_base_hook / boost::intrusive::slist_member_hook
33 //! - boost::intrusive::list / boost::intrusive::list_base_hook / boost::intrusive::list_member_hook
34 //! - boost::intrusive::bstree / boost::intrusive::bs_set / boost::intrusive::bs_multiset /
35 //! boost::intrusive::bs_set_base_hook / boost::intrusive::bs_set_member_hook
36 //! - boost::intrusive::rbtree / boost::intrusive::set / boost::intrusive::multiset /
37 //! boost::intrusive::set_base_hook / boost::intrusive::set_member_hook
38 //! - boost::intrusive::avltree / boost::intrusive::avl_set / boost::intrusive::avl_multiset /
39 //! boost::intrusive::avl_set_base_hook / boost::intrusive::avl_set_member_hook
40 //! - boost::intrusive::splaytree / boost::intrusive::splay_set / boost::intrusive::splay_multiset
41 //! - boost::intrusive::sgtree / boost::intrusive::sg_set / boost::intrusive::sg_multiset
42 //! - boost::intrusive::treap / boost::intrusive::treap_set / boost::intrusive::treap_multiset
43 //! - boost::intrusive::hashtable / boost::intrusive::unordered_set / boost::intrusive::unordered_multiset /
44 //! boost::intrusive::unordered_set_base_hook / boost::intrusive::unordered_set_member_hook /
45 //! - boost::intrusive::any_base_hook / boost::intrusive::any_member_hook
46 //!
47 //! It forward declares the following container or hook options:
48 //! - boost::intrusive::constant_time_size / boost::intrusive::size_type / boost::intrusive::compare / boost::intrusive::equal
49 //! - boost::intrusive::floating_point / boost::intrusive::priority / boost::intrusive::hash
50 //! - boost::intrusive::value_traits / boost::intrusive::member_hook / boost::intrusive::function_hook / boost::intrusive::base_hook
51 //! - boost::intrusive::void_pointer / boost::intrusive::tag / boost::intrusive::link_mode
52 //! - boost::intrusive::optimize_size / boost::intrusive::linear / boost::intrusive::cache_last
53 //! - boost::intrusive::bucket_traits / boost::intrusive::store_hash / boost::intrusive::optimize_multikey
54 //! - boost::intrusive::power_2_buckets / boost::intrusive::cache_begin / boost::intrusive::compare_hash / boost::intrusive::incremental
55 //!
56 //! It forward declares the following value traits utilities:
57 //! - boost::intrusive::value_traits / boost::intrusive::derivation_value_traits /
58 //! boost::intrusive::trivial_value_traits
59 //!
60 //! Finally it forward declares the following general purpose utilities:
61 //! - boost::intrusive::pointer_plus_bits / boost::intrusive::priority_compare.
62
63 #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
64
65 #include <cstddef>
66 #include <boost/intrusive/link_mode.hpp>
67 #include <boost/intrusive/detail/workaround.hpp>
68
69 namespace boost {
70 namespace intrusive {
71
72 #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)
73 # ifdef BOOST_HAS_INTPTR_T
74 using ::boost::uintptr_t;
75 # else
76 typedef std::size_t uintptr_t;
77 # endif
78 #endif
79
80 ////////////////////////////
81 // Node algorithms
82 ////////////////////////////
83
84 //Algorithms predeclarations
85 template<class NodeTraits>
86 class circular_list_algorithms;
87
88 template<class NodeTraits>
89 class circular_slist_algorithms;
90
91 template<class NodeTraits>
92 class linear_slist_algorithms;
93
94 template<class NodeTraits>
95 class bstree_algorithms;
96
97 template<class NodeTraits>
98 class rbtree_algorithms;
99
100 template<class NodeTraits>
101 class avltree_algorithms;
102
103 template<class NodeTraits>
104 class sgtree_algorithms;
105
106 template<class NodeTraits>
107 class splaytree_algorithms;
108
109 template<class NodeTraits>
110 class treap_algorithms;
111
112 ////////////////////////////
113 // Containers
114 ////////////////////////////
115
116 //slist
117 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
118 template
119 < class T
120 , class O1 = void
121 , class O2 = void
122 , class O3 = void
123 , class O4 = void
124 , class O5 = void
125 , class O6 = void
126 >
127 #else
128 template<class T, class ...Options>
129 #endif
130 class slist;
131
132 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
133 template
134 < class O1 = void
135 , class O2 = void
136 , class O3 = void
137 >
138 #else
139 template<class ...Options>
140 #endif
141 class slist_base_hook;
142
143 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
144 template
145 < class O1 = void
146 , class O2 = void
147 , class O3 = void
148 >
149 #else
150 template<class ...Options>
151 #endif
152 class slist_member_hook;
153
154 //list
155 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
156 template
157 < class T
158 , class O1 = void
159 , class O2 = void
160 , class O3 = void
161 , class O4 = void
162 >
163 #else
164 template<class T, class ...Options>
165 #endif
166 class list;
167
168 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
169 template
170 < class O1 = void
171 , class O2 = void
172 , class O3 = void
173 >
174 #else
175 template<class ...Options>
176 #endif
177 class list_base_hook;
178
179 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
180 template
181 < class O1 = void
182 , class O2 = void
183 , class O3 = void
184 >
185 #else
186 template<class ...Options>
187 #endif
188 class list_member_hook;
189
190 //rbtree/set/multiset
191 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
192 template
193 < class T
194 , class O1 = void
195 , class O2 = void
196 , class O3 = void
197 , class O4 = void
198 , class O5 = void
199 , class O6 = void
200 >
201 #else
202 template<class T, class ...Options>
203 #endif
204 class rbtree;
205
206 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
207 template
208 < class T
209 , class O1 = void
210 , class O2 = void
211 , class O3 = void
212 , class O4 = void
213 , class O5 = void
214 , class O6 = void
215 >
216 #else
217 template<class T, class ...Options>
218 #endif
219 class set;
220
221 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
222 template
223 < class T
224 , class O1 = void
225 , class O2 = void
226 , class O3 = void
227 , class O4 = void
228 , class O5 = void
229 , class O6 = void
230 >
231 #else
232 template<class T, class ...Options>
233 #endif
234 class multiset;
235
236 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
237 template
238 < class O1 = void
239 , class O2 = void
240 , class O3 = void
241 , class O4 = void
242 >
243 #else
244 template<class ...Options>
245 #endif
246 class set_base_hook;
247
248 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
249 template
250 < class O1 = void
251 , class O2 = void
252 , class O3 = void
253 , class O4 = void
254 >
255 #else
256 template<class ...Options>
257 #endif
258 class set_member_hook;
259
260 //splaytree/splay_set/splay_multiset
261 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
262 template
263 < class T
264 , class O1 = void
265 , class O2 = void
266 , class O3 = void
267 , class O4 = void
268 , class O5 = void
269 , class O6 = void
270 >
271 #else
272 template<class T, class ...Options>
273 #endif
274 class splaytree;
275
276 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
277 template
278 < class T
279 , class O1 = void
280 , class O2 = void
281 , class O3 = void
282 , class O4 = void
283 , class O5 = void
284 , class O6 = void
285 >
286 #else
287 template<class T, class ...Options>
288 #endif
289 class splay_set;
290
291 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
292 template
293 < class T
294 , class O1 = void
295 , class O2 = void
296 , class O3 = void
297 , class O4 = void
298 , class O5 = void
299 , class O6 = void
300 >
301 #else
302 template<class T, class ...Options>
303 #endif
304 class splay_multiset;
305
306 //avltree/avl_set/avl_multiset
307 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
308 template
309 < class T
310 , class O1 = void
311 , class O2 = void
312 , class O3 = void
313 , class O4 = void
314 , class O5 = void
315 , class O6 = void
316 >
317 #else
318 template<class T, class ...Options>
319 #endif
320 class avltree;
321
322 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
323 template
324 < class T
325 , class O1 = void
326 , class O2 = void
327 , class O3 = void
328 , class O4 = void
329 , class O5 = void
330 , class O6 = void
331 >
332 #else
333 template<class T, class ...Options>
334 #endif
335 class avl_set;
336
337 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
338 template
339 < class T
340 , class O1 = void
341 , class O2 = void
342 , class O3 = void
343 , class O4 = void
344 , class O5 = void
345 , class O6 = void
346 >
347 #else
348 template<class T, class ...Options>
349 #endif
350 class avl_multiset;
351
352 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
353 template
354 < class O1 = void
355 , class O2 = void
356 , class O3 = void
357 , class O4 = void
358 >
359 #else
360 template<class ...Options>
361 #endif
362 class avl_set_base_hook;
363
364 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
365 template
366 < class O1 = void
367 , class O2 = void
368 , class O3 = void
369 , class O4 = void
370 >
371 #else
372 template<class ...Options>
373 #endif
374 class avl_set_member_hook;
375
376
377 //treap/treap_set/treap_multiset
378 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
379 template
380 < class T
381 , class O1 = void
382 , class O2 = void
383 , class O3 = void
384 , class O4 = void
385 , class O5 = void
386 , class O6 = void
387 >
388 #else
389 template<class T, class ...Options>
390 #endif
391 class treap;
392
393 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
394 template
395 < class T
396 , class O1 = void
397 , class O2 = void
398 , class O3 = void
399 , class O4 = void
400 , class O5 = void
401 , class O6 = void
402 >
403 #else
404 template<class T, class ...Options>
405 #endif
406 class treap_set;
407
408 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
409 template
410 < class T
411 , class O1 = void
412 , class O2 = void
413 , class O3 = void
414 , class O4 = void
415 , class O5 = void
416 , class O6 = void
417 >
418 #else
419 template<class T, class ...Options>
420 #endif
421 class treap_multiset;
422
423 //sgtree/sg_set/sg_multiset
424 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
425 template
426 < class T
427 , class O1 = void
428 , class O2 = void
429 , class O3 = void
430 , class O4 = void
431 , class O5 = void
432 , class O6 = void
433 >
434 #else
435 template<class T, class ...Options>
436 #endif
437 class sgtree;
438
439 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
440 template
441 < class T
442 , class O1 = void
443 , class O2 = void
444 , class O3 = void
445 , class O4 = void
446 , class O5 = void
447 , class O6 = void
448 >
449 #else
450 template<class T, class ...Options>
451 #endif
452 class sg_set;
453
454 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
455 template
456 < class T
457 , class O1 = void
458 , class O2 = void
459 , class O3 = void
460 , class O4 = void
461 , class O5 = void
462 , class O6 = void
463 >
464 #else
465 template<class T, class ...Options>
466 #endif
467 class sg_multiset;
468
469 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
470 template
471 < class T
472 , class O1 = void
473 , class O2 = void
474 , class O3 = void
475 , class O4 = void
476 , class O5 = void
477 , class O6 = void
478 >
479 #else
480 template<class T, class ...Options>
481 #endif
482 class bstree;
483
484 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
485 template
486 < class T
487 , class O1 = void
488 , class O2 = void
489 , class O3 = void
490 , class O4 = void
491 , class O5 = void
492 , class O6 = void
493 >
494 #else
495 template<class T, class ...Options>
496 #endif
497 class bs_set;
498
499 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
500 template
501 < class T
502 , class O1 = void
503 , class O2 = void
504 , class O3 = void
505 , class O4 = void
506 , class O5 = void
507 , class O6 = void
508 >
509 #else
510 template<class T, class ...Options>
511 #endif
512 class bs_multiset;
513
514 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
515 template
516 < class O1 = void
517 , class O2 = void
518 , class O3 = void
519 >
520 #else
521 template<class ...Options>
522 #endif
523 class bs_set_base_hook;
524
525 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
526 template
527 < class O1 = void
528 , class O2 = void
529 , class O3 = void
530 >
531 #else
532 template<class ...Options>
533 #endif
534 class bs_set_member_hook;
535
536 //hashtable/unordered_set/unordered_multiset
537
538 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
539 template
540 < class T
541 , class O1 = void
542 , class O2 = void
543 , class O3 = void
544 , class O4 = void
545 , class O5 = void
546 , class O6 = void
547 , class O7 = void
548 , class O8 = void
549 , class O9 = void
550 , class O10 = void
551 >
552 #else
553 template<class T, class ...Options>
554 #endif
555 class hashtable;
556
557 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
558 template
559 < class T
560 , class O1 = void
561 , class O2 = void
562 , class O3 = void
563 , class O4 = void
564 , class O5 = void
565 , class O6 = void
566 , class O7 = void
567 , class O8 = void
568 , class O9 = void
569 , class O10 = void
570 >
571 #else
572 template<class T, class ...Options>
573 #endif
574 class unordered_set;
575
576 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
577 template
578 < class T
579 , class O1 = void
580 , class O2 = void
581 , class O3 = void
582 , class O4 = void
583 , class O5 = void
584 , class O6 = void
585 , class O7 = void
586 , class O8 = void
587 , class O9 = void
588 , class O10 = void
589 >
590 #else
591 template<class T, class ...Options>
592 #endif
593 class unordered_multiset;
594
595 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
596 template
597 < class O1 = void
598 , class O2 = void
599 , class O3 = void
600 , class O4 = void
601 >
602 #else
603 template<class ...Options>
604 #endif
605 class unordered_set_base_hook;
606
607 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
608 template
609 < class O1 = void
610 , class O2 = void
611 , class O3 = void
612 , class O4 = void
613 >
614 #else
615 template<class ...Options>
616 #endif
617 class unordered_set_member_hook;
618
619 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
620 template
621 < class O1 = void
622 , class O2 = void
623 , class O3 = void
624 >
625 #else
626 template<class ...Options>
627 #endif
628 class any_base_hook;
629
630 #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
631 template
632 < class O1 = void
633 , class O2 = void
634 , class O3 = void
635 >
636 #else
637 template<class ...Options>
638 #endif
639 class any_member_hook;
640
641 //Options
642
643 template<bool Enabled>
644 struct constant_time_size;
645
646 template<typename SizeType>
647 struct size_type;
648
649 template<typename Compare>
650 struct compare;
651
652 template<bool Enabled>
653 struct floating_point;
654
655 template<typename Equal>
656 struct equal;
657
658 template<typename Priority>
659 struct priority;
660
661 template<typename Hash>
662 struct hash;
663
664 template<typename ValueTraits> struct value_traits;
665
666 template< typename Parent
667 , typename MemberHook
668 , MemberHook Parent::* PtrToMember>
669 struct member_hook;
670
671 template<typename Functor>
672 struct function_hook;
673
674 template<typename BaseHook>
675 struct base_hook;
676
677 template<typename VoidPointer>
678 struct void_pointer;
679
680 template<typename Tag>
681 struct tag;
682
683 template<link_mode_type LinkType>
684 struct link_mode;
685
686 template<bool Enabled> struct
687 optimize_size;
688
689 template<bool Enabled>
690 struct linear;
691
692 template<bool Enabled>
693 struct cache_last;
694
695 template<typename BucketTraits>
696 struct bucket_traits;
697
698 template<bool Enabled>
699 struct store_hash;
700
701 template<bool Enabled>
702 struct optimize_multikey;
703
704 template<bool Enabled>
705 struct power_2_buckets;
706
707 template<bool Enabled>
708 struct cache_begin;
709
710 template<bool Enabled>
711 struct compare_hash;
712
713 template<bool Enabled>
714 struct incremental;
715
716 //Value traits
717
718 template<typename ValueTraits>
719 struct value_traits;
720
721 template< typename Parent
722 , typename MemberHook
723 , MemberHook Parent::* PtrToMember>
724 struct member_hook;
725
726 template< typename Functor>
727 struct function_hook;
728
729 template<typename BaseHook>
730 struct base_hook;
731
732 template<class T, class NodeTraits, link_mode_type LinkMode = safe_link>
733 struct derivation_value_traits;
734
735 template<class NodeTraits, link_mode_type LinkMode = normal_link>
736 struct trivial_value_traits;
737
738 //Additional utilities
739
740 template<typename VoidPointer, std::size_t Alignment>
741 struct max_pointer_plus_bits;
742
743 template<std::size_t Alignment>
744 struct max_pointer_plus_bits<void *, Alignment>;
745
746 template<typename Pointer, std::size_t NumBits>
747 struct pointer_plus_bits;
748
749 template<typename T, std::size_t NumBits>
750 struct pointer_plus_bits<T *, NumBits>;
751
752 template<typename Ptr>
753 struct pointer_traits;
754
755 template<typename T>
756 struct pointer_traits<T *>;
757
758 } //namespace intrusive {
759 } //namespace boost {
760
761 #endif //#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
762
763 #endif //#ifndef BOOST_INTRUSIVE_FWD_HPP