Chris@101
|
1 /* Copyright 2003-2013 Joaquin M Lopez Munoz.
|
Chris@16
|
2 * Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
3 * (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
4 * http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
5 *
|
Chris@16
|
6 * See http://www.boost.org/libs/multi_index for library home page.
|
Chris@16
|
7 */
|
Chris@16
|
8
|
Chris@16
|
9 #ifndef BOOST_MULTI_INDEX_FWD_HPP
|
Chris@16
|
10 #define BOOST_MULTI_INDEX_FWD_HPP
|
Chris@16
|
11
|
Chris@101
|
12 #if defined(_MSC_VER)
|
Chris@16
|
13 #pragma once
|
Chris@16
|
14 #endif
|
Chris@16
|
15
|
Chris@16
|
16 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
|
Chris@16
|
17 #include <boost/multi_index/identity.hpp>
|
Chris@16
|
18 #include <boost/multi_index/indexed_by.hpp>
|
Chris@16
|
19 #include <boost/multi_index/ordered_index_fwd.hpp>
|
Chris@16
|
20 #include <memory>
|
Chris@16
|
21
|
Chris@16
|
22 namespace boost{
|
Chris@16
|
23
|
Chris@16
|
24 namespace multi_index{
|
Chris@16
|
25
|
Chris@16
|
26 /* Default value for IndexSpecifierList specifies a container
|
Chris@16
|
27 * equivalent to std::set<Value>.
|
Chris@16
|
28 */
|
Chris@16
|
29
|
Chris@16
|
30 template<
|
Chris@16
|
31 typename Value,
|
Chris@16
|
32 typename IndexSpecifierList=indexed_by<ordered_unique<identity<Value> > >,
|
Chris@16
|
33 typename Allocator=std::allocator<Value> >
|
Chris@16
|
34 class multi_index_container;
|
Chris@16
|
35
|
Chris@16
|
36 template<typename MultiIndexContainer,int N>
|
Chris@16
|
37 struct nth_index;
|
Chris@16
|
38
|
Chris@16
|
39 template<typename MultiIndexContainer,typename Tag>
|
Chris@16
|
40 struct index;
|
Chris@16
|
41
|
Chris@16
|
42 template<typename MultiIndexContainer,int N>
|
Chris@16
|
43 struct nth_index_iterator;
|
Chris@16
|
44
|
Chris@16
|
45 template<typename MultiIndexContainer,int N>
|
Chris@16
|
46 struct nth_index_const_iterator;
|
Chris@16
|
47
|
Chris@16
|
48 template<typename MultiIndexContainer,typename Tag>
|
Chris@16
|
49 struct index_iterator;
|
Chris@16
|
50
|
Chris@16
|
51 template<typename MultiIndexContainer,typename Tag>
|
Chris@16
|
52 struct index_const_iterator;
|
Chris@16
|
53
|
Chris@16
|
54 /* get and project functions not fwd declared due to problems
|
Chris@16
|
55 * with dependent typenames
|
Chris@16
|
56 */
|
Chris@16
|
57
|
Chris@16
|
58 template<
|
Chris@16
|
59 typename Value1,typename IndexSpecifierList1,typename Allocator1,
|
Chris@16
|
60 typename Value2,typename IndexSpecifierList2,typename Allocator2
|
Chris@16
|
61 >
|
Chris@16
|
62 bool operator==(
|
Chris@16
|
63 const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
|
Chris@16
|
64 const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
|
Chris@16
|
65
|
Chris@16
|
66 template<
|
Chris@16
|
67 typename Value1,typename IndexSpecifierList1,typename Allocator1,
|
Chris@16
|
68 typename Value2,typename IndexSpecifierList2,typename Allocator2
|
Chris@16
|
69 >
|
Chris@16
|
70 bool operator<(
|
Chris@16
|
71 const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
|
Chris@16
|
72 const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
|
Chris@16
|
73
|
Chris@16
|
74 template<
|
Chris@16
|
75 typename Value1,typename IndexSpecifierList1,typename Allocator1,
|
Chris@16
|
76 typename Value2,typename IndexSpecifierList2,typename Allocator2
|
Chris@16
|
77 >
|
Chris@16
|
78 bool operator!=(
|
Chris@16
|
79 const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
|
Chris@16
|
80 const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
|
Chris@16
|
81
|
Chris@16
|
82 template<
|
Chris@16
|
83 typename Value1,typename IndexSpecifierList1,typename Allocator1,
|
Chris@16
|
84 typename Value2,typename IndexSpecifierList2,typename Allocator2
|
Chris@16
|
85 >
|
Chris@16
|
86 bool operator>(
|
Chris@16
|
87 const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
|
Chris@16
|
88 const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
|
Chris@16
|
89
|
Chris@16
|
90 template<
|
Chris@16
|
91 typename Value1,typename IndexSpecifierList1,typename Allocator1,
|
Chris@16
|
92 typename Value2,typename IndexSpecifierList2,typename Allocator2
|
Chris@16
|
93 >
|
Chris@16
|
94 bool operator>=(
|
Chris@16
|
95 const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
|
Chris@16
|
96 const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
|
Chris@16
|
97
|
Chris@16
|
98 template<
|
Chris@16
|
99 typename Value1,typename IndexSpecifierList1,typename Allocator1,
|
Chris@16
|
100 typename Value2,typename IndexSpecifierList2,typename Allocator2
|
Chris@16
|
101 >
|
Chris@16
|
102 bool operator<=(
|
Chris@16
|
103 const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
|
Chris@16
|
104 const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
|
Chris@16
|
105
|
Chris@16
|
106 template<typename Value,typename IndexSpecifierList,typename Allocator>
|
Chris@16
|
107 void swap(
|
Chris@16
|
108 multi_index_container<Value,IndexSpecifierList,Allocator>& x,
|
Chris@16
|
109 multi_index_container<Value,IndexSpecifierList,Allocator>& y);
|
Chris@16
|
110
|
Chris@16
|
111 } /* namespace multi_index */
|
Chris@16
|
112
|
Chris@16
|
113 /* multi_index_container, being the main type of this library, is promoted to
|
Chris@16
|
114 * namespace boost.
|
Chris@16
|
115 */
|
Chris@16
|
116
|
Chris@16
|
117 using multi_index::multi_index_container;
|
Chris@16
|
118
|
Chris@16
|
119 } /* namespace boost */
|
Chris@16
|
120
|
Chris@16
|
121 #endif
|