Chris@16
|
1 /*==============================================================================
|
Chris@16
|
2 Copyright (c) 2005-2010 Joel de Guzman
|
Chris@16
|
3 Copyright (c) 2010 Thomas Heller
|
Chris@16
|
4
|
Chris@16
|
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
7 ==============================================================================*/
|
Chris@16
|
8
|
Chris@16
|
9
|
Chris@16
|
10
|
Chris@16
|
11
|
Chris@16
|
12
|
Chris@16
|
13
|
Chris@16
|
14
|
Chris@16
|
15 template <typename A0>
|
Chris@16
|
16 struct dynamic<A0> : noncopyable
|
Chris@16
|
17 {
|
Chris@16
|
18 typedef
|
Chris@16
|
19 vector1<A0>
|
Chris@16
|
20 tuple_type;
|
Chris@16
|
21 typedef
|
Chris@16
|
22 dynamic<A0>
|
Chris@16
|
23 self_type;
|
Chris@16
|
24 typedef
|
Chris@16
|
25 dynamic_frame<self_type>
|
Chris@16
|
26 dynamic_frame_type;
|
Chris@16
|
27 dynamic()
|
Chris@16
|
28 : frame(0) {}
|
Chris@16
|
29 template <int N>
|
Chris@16
|
30 static
|
Chris@16
|
31 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
32 init(self_type * scope)
|
Chris@16
|
33 {
|
Chris@16
|
34 return
|
Chris@16
|
35 expression::
|
Chris@16
|
36 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
37 make(mpl::int_<N>(), scope);
|
Chris@16
|
38 }
|
Chris@16
|
39 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1;
|
Chris@16
|
40 mutable dynamic_frame_type* frame;
|
Chris@16
|
41 };
|
Chris@16
|
42
|
Chris@16
|
43
|
Chris@16
|
44
|
Chris@16
|
45
|
Chris@16
|
46
|
Chris@16
|
47
|
Chris@16
|
48
|
Chris@16
|
49 template <typename A0 , typename A1>
|
Chris@16
|
50 struct dynamic<A0 , A1> : noncopyable
|
Chris@16
|
51 {
|
Chris@16
|
52 typedef
|
Chris@16
|
53 vector2<A0 , A1>
|
Chris@16
|
54 tuple_type;
|
Chris@16
|
55 typedef
|
Chris@16
|
56 dynamic<A0 , A1>
|
Chris@16
|
57 self_type;
|
Chris@16
|
58 typedef
|
Chris@16
|
59 dynamic_frame<self_type>
|
Chris@16
|
60 dynamic_frame_type;
|
Chris@16
|
61 dynamic()
|
Chris@16
|
62 : frame(0) {}
|
Chris@16
|
63 template <int N>
|
Chris@16
|
64 static
|
Chris@16
|
65 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
66 init(self_type * scope)
|
Chris@16
|
67 {
|
Chris@16
|
68 return
|
Chris@16
|
69 expression::
|
Chris@16
|
70 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
71 make(mpl::int_<N>(), scope);
|
Chris@16
|
72 }
|
Chris@16
|
73 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2;
|
Chris@16
|
74 mutable dynamic_frame_type* frame;
|
Chris@16
|
75 };
|
Chris@16
|
76
|
Chris@16
|
77
|
Chris@16
|
78
|
Chris@16
|
79
|
Chris@16
|
80
|
Chris@16
|
81
|
Chris@16
|
82
|
Chris@16
|
83 template <typename A0 , typename A1 , typename A2>
|
Chris@16
|
84 struct dynamic<A0 , A1 , A2> : noncopyable
|
Chris@16
|
85 {
|
Chris@16
|
86 typedef
|
Chris@16
|
87 vector3<A0 , A1 , A2>
|
Chris@16
|
88 tuple_type;
|
Chris@16
|
89 typedef
|
Chris@16
|
90 dynamic<A0 , A1 , A2>
|
Chris@16
|
91 self_type;
|
Chris@16
|
92 typedef
|
Chris@16
|
93 dynamic_frame<self_type>
|
Chris@16
|
94 dynamic_frame_type;
|
Chris@16
|
95 dynamic()
|
Chris@16
|
96 : frame(0) {}
|
Chris@16
|
97 template <int N>
|
Chris@16
|
98 static
|
Chris@16
|
99 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
100 init(self_type * scope)
|
Chris@16
|
101 {
|
Chris@16
|
102 return
|
Chris@16
|
103 expression::
|
Chris@16
|
104 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
105 make(mpl::int_<N>(), scope);
|
Chris@16
|
106 }
|
Chris@16
|
107 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3;
|
Chris@16
|
108 mutable dynamic_frame_type* frame;
|
Chris@16
|
109 };
|
Chris@16
|
110
|
Chris@16
|
111
|
Chris@16
|
112
|
Chris@16
|
113
|
Chris@16
|
114
|
Chris@16
|
115
|
Chris@16
|
116
|
Chris@16
|
117 template <typename A0 , typename A1 , typename A2 , typename A3>
|
Chris@16
|
118 struct dynamic<A0 , A1 , A2 , A3> : noncopyable
|
Chris@16
|
119 {
|
Chris@16
|
120 typedef
|
Chris@16
|
121 vector4<A0 , A1 , A2 , A3>
|
Chris@16
|
122 tuple_type;
|
Chris@16
|
123 typedef
|
Chris@16
|
124 dynamic<A0 , A1 , A2 , A3>
|
Chris@16
|
125 self_type;
|
Chris@16
|
126 typedef
|
Chris@16
|
127 dynamic_frame<self_type>
|
Chris@16
|
128 dynamic_frame_type;
|
Chris@16
|
129 dynamic()
|
Chris@16
|
130 : frame(0) {}
|
Chris@16
|
131 template <int N>
|
Chris@16
|
132 static
|
Chris@16
|
133 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
134 init(self_type * scope)
|
Chris@16
|
135 {
|
Chris@16
|
136 return
|
Chris@16
|
137 expression::
|
Chris@16
|
138 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
139 make(mpl::int_<N>(), scope);
|
Chris@16
|
140 }
|
Chris@16
|
141 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4;
|
Chris@16
|
142 mutable dynamic_frame_type* frame;
|
Chris@16
|
143 };
|
Chris@16
|
144
|
Chris@16
|
145
|
Chris@16
|
146
|
Chris@16
|
147
|
Chris@16
|
148
|
Chris@16
|
149
|
Chris@16
|
150
|
Chris@16
|
151 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
|
Chris@16
|
152 struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
|
Chris@16
|
153 {
|
Chris@16
|
154 typedef
|
Chris@16
|
155 vector5<A0 , A1 , A2 , A3 , A4>
|
Chris@16
|
156 tuple_type;
|
Chris@16
|
157 typedef
|
Chris@16
|
158 dynamic<A0 , A1 , A2 , A3 , A4>
|
Chris@16
|
159 self_type;
|
Chris@16
|
160 typedef
|
Chris@16
|
161 dynamic_frame<self_type>
|
Chris@16
|
162 dynamic_frame_type;
|
Chris@16
|
163 dynamic()
|
Chris@16
|
164 : frame(0) {}
|
Chris@16
|
165 template <int N>
|
Chris@16
|
166 static
|
Chris@16
|
167 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
168 init(self_type * scope)
|
Chris@16
|
169 {
|
Chris@16
|
170 return
|
Chris@16
|
171 expression::
|
Chris@16
|
172 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
173 make(mpl::int_<N>(), scope);
|
Chris@16
|
174 }
|
Chris@16
|
175 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5;
|
Chris@16
|
176 mutable dynamic_frame_type* frame;
|
Chris@16
|
177 };
|
Chris@16
|
178
|
Chris@16
|
179
|
Chris@16
|
180
|
Chris@16
|
181
|
Chris@16
|
182
|
Chris@16
|
183
|
Chris@16
|
184
|
Chris@16
|
185 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
|
Chris@16
|
186 struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
|
Chris@16
|
187 {
|
Chris@16
|
188 typedef
|
Chris@16
|
189 vector6<A0 , A1 , A2 , A3 , A4 , A5>
|
Chris@16
|
190 tuple_type;
|
Chris@16
|
191 typedef
|
Chris@16
|
192 dynamic<A0 , A1 , A2 , A3 , A4 , A5>
|
Chris@16
|
193 self_type;
|
Chris@16
|
194 typedef
|
Chris@16
|
195 dynamic_frame<self_type>
|
Chris@16
|
196 dynamic_frame_type;
|
Chris@16
|
197 dynamic()
|
Chris@16
|
198 : frame(0) {}
|
Chris@16
|
199 template <int N>
|
Chris@16
|
200 static
|
Chris@16
|
201 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
202 init(self_type * scope)
|
Chris@16
|
203 {
|
Chris@16
|
204 return
|
Chris@16
|
205 expression::
|
Chris@16
|
206 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
207 make(mpl::int_<N>(), scope);
|
Chris@16
|
208 }
|
Chris@16
|
209 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6;
|
Chris@16
|
210 mutable dynamic_frame_type* frame;
|
Chris@16
|
211 };
|
Chris@16
|
212
|
Chris@16
|
213
|
Chris@16
|
214
|
Chris@16
|
215
|
Chris@16
|
216
|
Chris@16
|
217
|
Chris@16
|
218
|
Chris@16
|
219 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
|
Chris@16
|
220 struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
|
Chris@16
|
221 {
|
Chris@16
|
222 typedef
|
Chris@16
|
223 vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
|
Chris@16
|
224 tuple_type;
|
Chris@16
|
225 typedef
|
Chris@16
|
226 dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
|
Chris@16
|
227 self_type;
|
Chris@16
|
228 typedef
|
Chris@16
|
229 dynamic_frame<self_type>
|
Chris@16
|
230 dynamic_frame_type;
|
Chris@16
|
231 dynamic()
|
Chris@16
|
232 : frame(0) {}
|
Chris@16
|
233 template <int N>
|
Chris@16
|
234 static
|
Chris@16
|
235 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
236 init(self_type * scope)
|
Chris@16
|
237 {
|
Chris@16
|
238 return
|
Chris@16
|
239 expression::
|
Chris@16
|
240 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
241 make(mpl::int_<N>(), scope);
|
Chris@16
|
242 }
|
Chris@16
|
243 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7;
|
Chris@16
|
244 mutable dynamic_frame_type* frame;
|
Chris@16
|
245 };
|
Chris@16
|
246
|
Chris@16
|
247
|
Chris@16
|
248
|
Chris@16
|
249
|
Chris@16
|
250
|
Chris@16
|
251
|
Chris@16
|
252
|
Chris@16
|
253 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
|
Chris@16
|
254 struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
|
Chris@16
|
255 {
|
Chris@16
|
256 typedef
|
Chris@16
|
257 vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
|
Chris@16
|
258 tuple_type;
|
Chris@16
|
259 typedef
|
Chris@16
|
260 dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
|
Chris@16
|
261 self_type;
|
Chris@16
|
262 typedef
|
Chris@16
|
263 dynamic_frame<self_type>
|
Chris@16
|
264 dynamic_frame_type;
|
Chris@16
|
265 dynamic()
|
Chris@16
|
266 : frame(0) {}
|
Chris@16
|
267 template <int N>
|
Chris@16
|
268 static
|
Chris@16
|
269 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
270 init(self_type * scope)
|
Chris@16
|
271 {
|
Chris@16
|
272 return
|
Chris@16
|
273 expression::
|
Chris@16
|
274 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
275 make(mpl::int_<N>(), scope);
|
Chris@16
|
276 }
|
Chris@16
|
277 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7; typedef typename expression::dynamic_member< mpl::int_< 7> , self_type * >::type const member8;
|
Chris@16
|
278 mutable dynamic_frame_type* frame;
|
Chris@16
|
279 };
|
Chris@16
|
280
|
Chris@16
|
281
|
Chris@16
|
282
|
Chris@16
|
283
|
Chris@16
|
284
|
Chris@16
|
285
|
Chris@16
|
286
|
Chris@16
|
287 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
|
Chris@16
|
288 struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
|
Chris@16
|
289 {
|
Chris@16
|
290 typedef
|
Chris@16
|
291 vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
|
Chris@16
|
292 tuple_type;
|
Chris@16
|
293 typedef
|
Chris@16
|
294 dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
|
Chris@16
|
295 self_type;
|
Chris@16
|
296 typedef
|
Chris@16
|
297 dynamic_frame<self_type>
|
Chris@16
|
298 dynamic_frame_type;
|
Chris@16
|
299 dynamic()
|
Chris@16
|
300 : frame(0) {}
|
Chris@16
|
301 template <int N>
|
Chris@16
|
302 static
|
Chris@16
|
303 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
304 init(self_type * scope)
|
Chris@16
|
305 {
|
Chris@16
|
306 return
|
Chris@16
|
307 expression::
|
Chris@16
|
308 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
309 make(mpl::int_<N>(), scope);
|
Chris@16
|
310 }
|
Chris@16
|
311 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7; typedef typename expression::dynamic_member< mpl::int_< 7> , self_type * >::type const member8; typedef typename expression::dynamic_member< mpl::int_< 8> , self_type * >::type const member9;
|
Chris@16
|
312 mutable dynamic_frame_type* frame;
|
Chris@16
|
313 };
|
Chris@16
|
314
|
Chris@16
|
315
|
Chris@16
|
316
|
Chris@16
|
317
|
Chris@16
|
318
|
Chris@16
|
319
|
Chris@16
|
320
|
Chris@16
|
321 template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
|
Chris@16
|
322 struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
|
Chris@16
|
323 {
|
Chris@16
|
324 typedef
|
Chris@16
|
325 vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
|
Chris@16
|
326 tuple_type;
|
Chris@16
|
327 typedef
|
Chris@16
|
328 dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
|
Chris@16
|
329 self_type;
|
Chris@16
|
330 typedef
|
Chris@16
|
331 dynamic_frame<self_type>
|
Chris@16
|
332 dynamic_frame_type;
|
Chris@16
|
333 dynamic()
|
Chris@16
|
334 : frame(0) {}
|
Chris@16
|
335 template <int N>
|
Chris@16
|
336 static
|
Chris@16
|
337 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
|
Chris@16
|
338 init(self_type * scope)
|
Chris@16
|
339 {
|
Chris@16
|
340 return
|
Chris@16
|
341 expression::
|
Chris@16
|
342 dynamic_member<mpl::int_<N>, self_type *>::
|
Chris@16
|
343 make(mpl::int_<N>(), scope);
|
Chris@16
|
344 }
|
Chris@16
|
345 typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7; typedef typename expression::dynamic_member< mpl::int_< 7> , self_type * >::type const member8; typedef typename expression::dynamic_member< mpl::int_< 8> , self_type * >::type const member9; typedef typename expression::dynamic_member< mpl::int_< 9> , self_type * >::type const member10;
|
Chris@16
|
346 mutable dynamic_frame_type* frame;
|
Chris@16
|
347 };
|