1 | |
2 | // ---------------------------------------------------------------------------- |
3 | // group.hpp : encapsulates a group of manipulators along with an argument |
4 | // ---------------------------------------------------------------------------- |
5 | |
6 | // Copyright Samuel Krempp 2003. Use, modification, and distribution are |
7 | // subject to the Boost Software License, Version 1.0. (See accompanying |
8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
9 | |
10 | // See http://www.boost.org/libs/format for library home page |
11 | |
12 | // ---------------------------------------------------------------------------- |
13 | |
14 | |
15 | // group_head : cut the last element of a group out. |
16 | // (is overloaded below on each type of group) |
17 | |
18 | // group_last : returns the last element of a group |
19 | // (is overloaded below on each type of group) |
20 | // ---------------------------------------------------------------------------- |
21 | |
22 | |
23 | #ifndef BOOST_FORMAT_GROUP_HPP |
24 | #define BOOST_FORMAT_GROUP_HPP |
25 | |
26 | #include <boost/config.hpp> |
27 | |
28 | |
29 | namespace boost { |
30 | namespace io { |
31 | |
32 | |
33 | namespace detail { |
34 | |
35 | |
36 | // empty group, but useful even though. |
37 | struct group0 |
38 | { |
39 | group0() {} |
40 | }; |
41 | |
42 | template <class Ch, class Tr> |
43 | inline |
44 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
45 | operator << ( BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
46 | const group0& ) |
47 | { |
48 | return os; |
49 | } |
50 | |
51 | template <class T1> |
52 | struct group1 |
53 | { |
54 | T1 a1_; |
55 | group1(T1 a1) |
56 | : a1_(a1) |
57 | {} |
58 | private: |
59 | group1& operator=(const group1&); |
60 | }; |
61 | |
62 | template <class Ch, class Tr, class T1> |
63 | inline |
64 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
65 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
66 | const group1<T1>& x) |
67 | { |
68 | os << x.a1_; |
69 | return os; |
70 | } |
71 | |
72 | |
73 | |
74 | |
75 | template <class T1,class T2> |
76 | struct group2 |
77 | { |
78 | T1 a1_; |
79 | T2 a2_; |
80 | group2(T1 a1,T2 a2) |
81 | : a1_(a1),a2_(a2) |
82 | {} |
83 | private: |
84 | group2& operator=(const group2&); |
85 | }; |
86 | |
87 | template <class Ch, class Tr, class T1,class T2> |
88 | inline |
89 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
90 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
91 | const group2<T1,T2>& x) |
92 | { |
93 | os << x.a1_<< x.a2_; |
94 | return os; |
95 | } |
96 | |
97 | template <class T1,class T2,class T3> |
98 | struct group3 |
99 | { |
100 | T1 a1_; |
101 | T2 a2_; |
102 | T3 a3_; |
103 | group3(T1 a1,T2 a2,T3 a3) |
104 | : a1_(a1),a2_(a2),a3_(a3) |
105 | {} |
106 | private: |
107 | group3& operator=(const group3&); |
108 | }; |
109 | |
110 | template <class Ch, class Tr, class T1,class T2,class T3> |
111 | inline |
112 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
113 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
114 | const group3<T1,T2,T3>& x) |
115 | { |
116 | os << x.a1_<< x.a2_<< x.a3_; |
117 | return os; |
118 | } |
119 | |
120 | template <class T1,class T2,class T3,class T4> |
121 | struct group4 |
122 | { |
123 | T1 a1_; |
124 | T2 a2_; |
125 | T3 a3_; |
126 | T4 a4_; |
127 | group4(T1 a1,T2 a2,T3 a3,T4 a4) |
128 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4) |
129 | {} |
130 | private: |
131 | group4& operator=(const group4&); |
132 | }; |
133 | |
134 | template <class Ch, class Tr, class T1,class T2,class T3,class T4> |
135 | inline |
136 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
137 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
138 | const group4<T1,T2,T3,T4>& x) |
139 | { |
140 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_; |
141 | return os; |
142 | } |
143 | |
144 | template <class T1,class T2,class T3,class T4,class T5> |
145 | struct group5 |
146 | { |
147 | T1 a1_; |
148 | T2 a2_; |
149 | T3 a3_; |
150 | T4 a4_; |
151 | T5 a5_; |
152 | group5(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) |
153 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5) |
154 | {} |
155 | }; |
156 | |
157 | template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5> |
158 | inline |
159 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
160 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
161 | const group5<T1,T2,T3,T4,T5>& x) |
162 | { |
163 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_; |
164 | return os; |
165 | } |
166 | |
167 | template <class T1,class T2,class T3,class T4,class T5,class T6> |
168 | struct group6 |
169 | { |
170 | T1 a1_; |
171 | T2 a2_; |
172 | T3 a3_; |
173 | T4 a4_; |
174 | T5 a5_; |
175 | T6 a6_; |
176 | group6(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6) |
177 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6) |
178 | {} |
179 | }; |
180 | |
181 | template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6> |
182 | inline |
183 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
184 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
185 | const group6<T1,T2,T3,T4,T5,T6>& x) |
186 | { |
187 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_; |
188 | return os; |
189 | } |
190 | |
191 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7> |
192 | struct group7 |
193 | { |
194 | T1 a1_; |
195 | T2 a2_; |
196 | T3 a3_; |
197 | T4 a4_; |
198 | T5 a5_; |
199 | T6 a6_; |
200 | T7 a7_; |
201 | group7(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7) |
202 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7) |
203 | {} |
204 | }; |
205 | |
206 | template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7> |
207 | inline |
208 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
209 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
210 | const group7<T1,T2,T3,T4,T5,T6,T7>& x) |
211 | { |
212 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_; |
213 | return os; |
214 | } |
215 | |
216 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8> |
217 | struct group8 |
218 | { |
219 | T1 a1_; |
220 | T2 a2_; |
221 | T3 a3_; |
222 | T4 a4_; |
223 | T5 a5_; |
224 | T6 a6_; |
225 | T7 a7_; |
226 | T8 a8_; |
227 | group8(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) |
228 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8) |
229 | {} |
230 | }; |
231 | |
232 | template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8> |
233 | inline |
234 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
235 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
236 | const group8<T1,T2,T3,T4,T5,T6,T7,T8>& x) |
237 | { |
238 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_; |
239 | return os; |
240 | } |
241 | |
242 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9> |
243 | struct group9 |
244 | { |
245 | T1 a1_; |
246 | T2 a2_; |
247 | T3 a3_; |
248 | T4 a4_; |
249 | T5 a5_; |
250 | T6 a6_; |
251 | T7 a7_; |
252 | T8 a8_; |
253 | T9 a9_; |
254 | group9(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9) |
255 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9) |
256 | {} |
257 | }; |
258 | |
259 | template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9> |
260 | inline |
261 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
262 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
263 | const group9<T1,T2,T3,T4,T5,T6,T7,T8,T9>& x) |
264 | { |
265 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_; |
266 | return os; |
267 | } |
268 | |
269 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10> |
270 | struct group10 |
271 | { |
272 | T1 a1_; |
273 | T2 a2_; |
274 | T3 a3_; |
275 | T4 a4_; |
276 | T5 a5_; |
277 | T6 a6_; |
278 | T7 a7_; |
279 | T8 a8_; |
280 | T9 a9_; |
281 | T10 a10_; |
282 | group10(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9,T10 a10) |
283 | : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9),a10_(a10) |
284 | {} |
285 | }; |
286 | |
287 | template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10> |
288 | inline |
289 | BOOST_IO_STD basic_ostream<Ch, Tr>& |
290 | operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os, |
291 | const group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>& x) |
292 | { |
293 | os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_<< x.a10_; |
294 | return os; |
295 | } |
296 | |
297 | |
298 | |
299 | |
300 | template <class T1,class T2> |
301 | inline |
302 | group1<T1> |
303 | ( group2<T1,T2> const& x) |
304 | { |
305 | return group1<T1> (x.a1_); |
306 | } |
307 | |
308 | template <class T1,class T2> |
309 | inline |
310 | group1<T2> |
311 | group_last( group2<T1,T2> const& x) |
312 | { |
313 | return group1<T2> (x.a2_); |
314 | } |
315 | |
316 | |
317 | |
318 | template <class T1,class T2,class T3> |
319 | inline |
320 | group2<T1,T2> |
321 | ( group3<T1,T2,T3> const& x) |
322 | { |
323 | return group2<T1,T2> (x.a1_,x.a2_); |
324 | } |
325 | |
326 | template <class T1,class T2,class T3> |
327 | inline |
328 | group1<T3> |
329 | group_last( group3<T1,T2,T3> const& x) |
330 | { |
331 | return group1<T3> (x.a3_); |
332 | } |
333 | |
334 | |
335 | |
336 | template <class T1,class T2,class T3,class T4> |
337 | inline |
338 | group3<T1,T2,T3> |
339 | ( group4<T1,T2,T3,T4> const& x) |
340 | { |
341 | return group3<T1,T2,T3> (x.a1_,x.a2_,x.a3_); |
342 | } |
343 | |
344 | template <class T1,class T2,class T3,class T4> |
345 | inline |
346 | group1<T4> |
347 | group_last( group4<T1,T2,T3,T4> const& x) |
348 | { |
349 | return group1<T4> (x.a4_); |
350 | } |
351 | |
352 | |
353 | |
354 | template <class T1,class T2,class T3,class T4,class T5> |
355 | inline |
356 | group4<T1,T2,T3,T4> |
357 | ( group5<T1,T2,T3,T4,T5> const& x) |
358 | { |
359 | return group4<T1,T2,T3,T4> (x.a1_,x.a2_,x.a3_,x.a4_); |
360 | } |
361 | |
362 | template <class T1,class T2,class T3,class T4,class T5> |
363 | inline |
364 | group1<T5> |
365 | group_last( group5<T1,T2,T3,T4,T5> const& x) |
366 | { |
367 | return group1<T5> (x.a5_); |
368 | } |
369 | |
370 | |
371 | |
372 | template <class T1,class T2,class T3,class T4,class T5,class T6> |
373 | inline |
374 | group5<T1,T2,T3,T4,T5> |
375 | ( group6<T1,T2,T3,T4,T5,T6> const& x) |
376 | { |
377 | return group5<T1,T2,T3,T4,T5> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_); |
378 | } |
379 | |
380 | template <class T1,class T2,class T3,class T4,class T5,class T6> |
381 | inline |
382 | group1<T6> |
383 | group_last( group6<T1,T2,T3,T4,T5,T6> const& x) |
384 | { |
385 | return group1<T6> (x.a6_); |
386 | } |
387 | |
388 | |
389 | |
390 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7> |
391 | inline |
392 | group6<T1,T2,T3,T4,T5,T6> |
393 | ( group7<T1,T2,T3,T4,T5,T6,T7> const& x) |
394 | { |
395 | return group6<T1,T2,T3,T4,T5,T6> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_); |
396 | } |
397 | |
398 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7> |
399 | inline |
400 | group1<T7> |
401 | group_last( group7<T1,T2,T3,T4,T5,T6,T7> const& x) |
402 | { |
403 | return group1<T7> (x.a7_); |
404 | } |
405 | |
406 | |
407 | |
408 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8> |
409 | inline |
410 | group7<T1,T2,T3,T4,T5,T6,T7> |
411 | ( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x) |
412 | { |
413 | return group7<T1,T2,T3,T4,T5,T6,T7> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_); |
414 | } |
415 | |
416 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8> |
417 | inline |
418 | group1<T8> |
419 | group_last( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x) |
420 | { |
421 | return group1<T8> (x.a8_); |
422 | } |
423 | |
424 | |
425 | |
426 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9> |
427 | inline |
428 | group8<T1,T2,T3,T4,T5,T6,T7,T8> |
429 | ( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x) |
430 | { |
431 | return group8<T1,T2,T3,T4,T5,T6,T7,T8> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_,x.a8_); |
432 | } |
433 | |
434 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9> |
435 | inline |
436 | group1<T9> |
437 | group_last( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x) |
438 | { |
439 | return group1<T9> (x.a9_); |
440 | } |
441 | |
442 | |
443 | |
444 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10> |
445 | inline |
446 | group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> |
447 | ( group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> const& x) |
448 | { |
449 | return group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_,x.a8_,x.a9_); |
450 | } |
451 | |
452 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10> |
453 | inline |
454 | group1<T10> |
455 | group_last( group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> const& x) |
456 | { |
457 | return group1<T10> (x.a10_); |
458 | } |
459 | |
460 | |
461 | |
462 | |
463 | |
464 | } // namespace detail |
465 | |
466 | |
467 | |
468 | // helper functions |
469 | |
470 | |
471 | inline detail::group1< detail::group0 > |
472 | group() { return detail::group1< detail::group0 > ( detail::group0() ); } |
473 | |
474 | template <class T1, class Var> |
475 | inline |
476 | detail::group1< detail::group2<T1, Var const&> > |
477 | group(T1 a1, Var const& var) |
478 | { |
479 | return detail::group1< detail::group2<T1, Var const&> > |
480 | ( detail::group2<T1, Var const&> |
481 | (a1, var) |
482 | ); |
483 | } |
484 | |
485 | template <class T1,class T2, class Var> |
486 | inline |
487 | detail::group1< detail::group3<T1,T2, Var const&> > |
488 | group(T1 a1,T2 a2, Var const& var) |
489 | { |
490 | return detail::group1< detail::group3<T1,T2, Var const&> > |
491 | ( detail::group3<T1,T2, Var const&> |
492 | (a1,a2, var) |
493 | ); |
494 | } |
495 | |
496 | template <class T1,class T2,class T3, class Var> |
497 | inline |
498 | detail::group1< detail::group4<T1,T2,T3, Var const&> > |
499 | group(T1 a1,T2 a2,T3 a3, Var const& var) |
500 | { |
501 | return detail::group1< detail::group4<T1,T2,T3, Var const&> > |
502 | ( detail::group4<T1,T2,T3, Var const&> |
503 | (a1,a2,a3, var) |
504 | ); |
505 | } |
506 | |
507 | template <class T1,class T2,class T3,class T4, class Var> |
508 | inline |
509 | detail::group1< detail::group5<T1,T2,T3,T4, Var const&> > |
510 | group(T1 a1,T2 a2,T3 a3,T4 a4, Var const& var) |
511 | { |
512 | return detail::group1< detail::group5<T1,T2,T3,T4, Var const&> > |
513 | ( detail::group5<T1,T2,T3,T4, Var const&> |
514 | (a1,a2,a3,a4, var) |
515 | ); |
516 | } |
517 | |
518 | template <class T1,class T2,class T3,class T4,class T5, class Var> |
519 | inline |
520 | detail::group1< detail::group6<T1,T2,T3,T4,T5, Var const&> > |
521 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var const& var) |
522 | { |
523 | return detail::group1< detail::group6<T1,T2,T3,T4,T5, Var const&> > |
524 | ( detail::group6<T1,T2,T3,T4,T5, Var const&> |
525 | (a1,a2,a3,a4,a5, var) |
526 | ); |
527 | } |
528 | |
529 | template <class T1,class T2,class T3,class T4,class T5,class T6, class Var> |
530 | inline |
531 | detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var const&> > |
532 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var const& var) |
533 | { |
534 | return detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var const&> > |
535 | ( detail::group7<T1,T2,T3,T4,T5,T6, Var const&> |
536 | (a1,a2,a3,a4,a5,a6, var) |
537 | ); |
538 | } |
539 | |
540 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> |
541 | inline |
542 | detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> > |
543 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var const& var) |
544 | { |
545 | return detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> > |
546 | ( detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> |
547 | (a1,a2,a3,a4,a5,a6,a7, var) |
548 | ); |
549 | } |
550 | |
551 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> |
552 | inline |
553 | detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> > |
554 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var const& var) |
555 | { |
556 | return detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> > |
557 | ( detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> |
558 | (a1,a2,a3,a4,a5,a6,a7,a8, var) |
559 | ); |
560 | } |
561 | |
562 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> |
563 | inline |
564 | detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> > |
565 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var const& var) |
566 | { |
567 | return detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> > |
568 | ( detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> |
569 | (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) |
570 | ); |
571 | } |
572 | |
573 | |
574 | #ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST |
575 | |
576 | template <class T1, class Var> |
577 | inline |
578 | detail::group1< detail::group2<T1, Var&> > |
579 | group(T1 a1, Var& var) |
580 | { |
581 | return detail::group1< detail::group2<T1, Var&> > |
582 | ( detail::group2<T1, Var&> |
583 | (a1, var) |
584 | ); |
585 | } |
586 | |
587 | template <class T1,class T2, class Var> |
588 | inline |
589 | detail::group1< detail::group3<T1,T2, Var&> > |
590 | group(T1 a1,T2 a2, Var& var) |
591 | { |
592 | return detail::group1< detail::group3<T1,T2, Var&> > |
593 | ( detail::group3<T1,T2, Var&> |
594 | (a1,a2, var) |
595 | ); |
596 | } |
597 | |
598 | template <class T1,class T2,class T3, class Var> |
599 | inline |
600 | detail::group1< detail::group4<T1,T2,T3, Var&> > |
601 | group(T1 a1,T2 a2,T3 a3, Var& var) |
602 | { |
603 | return detail::group1< detail::group4<T1,T2,T3, Var&> > |
604 | ( detail::group4<T1,T2,T3, Var&> |
605 | (a1,a2,a3, var) |
606 | ); |
607 | } |
608 | |
609 | template <class T1,class T2,class T3,class T4, class Var> |
610 | inline |
611 | detail::group1< detail::group5<T1,T2,T3,T4, Var&> > |
612 | group(T1 a1,T2 a2,T3 a3,T4 a4, Var& var) |
613 | { |
614 | return detail::group1< detail::group5<T1,T2,T3,T4, Var&> > |
615 | ( detail::group5<T1,T2,T3,T4, Var&> |
616 | (a1,a2,a3,a4, var) |
617 | ); |
618 | } |
619 | |
620 | template <class T1,class T2,class T3,class T4,class T5, class Var> |
621 | inline |
622 | detail::group1< detail::group6<T1,T2,T3,T4,T5, Var&> > |
623 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var& var) |
624 | { |
625 | return detail::group1< detail::group6<T1,T2,T3,T4,T5, Var&> > |
626 | ( detail::group6<T1,T2,T3,T4,T5, Var&> |
627 | (a1,a2,a3,a4,a5, var) |
628 | ); |
629 | } |
630 | |
631 | template <class T1,class T2,class T3,class T4,class T5,class T6, class Var> |
632 | inline |
633 | detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var&> > |
634 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var& var) |
635 | { |
636 | return detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var&> > |
637 | ( detail::group7<T1,T2,T3,T4,T5,T6, Var&> |
638 | (a1,a2,a3,a4,a5,a6, var) |
639 | ); |
640 | } |
641 | |
642 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> |
643 | inline |
644 | detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> > |
645 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var& var) |
646 | { |
647 | return detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> > |
648 | ( detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> |
649 | (a1,a2,a3,a4,a5,a6,a7, var) |
650 | ); |
651 | } |
652 | |
653 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> |
654 | inline |
655 | detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> > |
656 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var& var) |
657 | { |
658 | return detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> > |
659 | ( detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> |
660 | (a1,a2,a3,a4,a5,a6,a7,a8, var) |
661 | ); |
662 | } |
663 | |
664 | template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> |
665 | inline |
666 | detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> > |
667 | group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var& var) |
668 | { |
669 | return detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> > |
670 | ( detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> |
671 | (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) |
672 | ); |
673 | } |
674 | |
675 | |
676 | #endif // - BOOST_NO_OVERLOAD_FOR_NON_CONST |
677 | |
678 | |
679 | } // namespace io |
680 | |
681 | } // namespace boost |
682 | |
683 | |
684 | #endif // BOOST_FORMAT_GROUP_HPP |
685 | |