]> git.wh0rd.org - ICEs.git/blob - 411691/id_manager.i.0
more
[ICEs.git] / 411691 / id_manager.i.0
1 # 1 "quickbook/src/id_manager.cpp"
2 # 1 "<built-in>"
3 # 1 "<command-line>"
4 # 1 "quickbook/src/id_manager.cpp"
5 # 9 "quickbook/src/id_manager.cpp"
6 # 1 "quickbook/src/id_manager.hpp" 1
7 # 12 "quickbook/src/id_manager.hpp"
8 # 1 "../boost/scoped_ptr.hpp" 1
9 # 14 "../boost/scoped_ptr.hpp"
10 # 1 "../boost/smart_ptr/scoped_ptr.hpp" 1
11 # 14 "../boost/smart_ptr/scoped_ptr.hpp"
12 # 1 "../boost/assert.hpp" 1
13 # 50 "../boost/assert.hpp"
14 # 1 "/usr/include/assert.h" 1 3 4
15 # 37 "/usr/include/assert.h" 3 4
16 # 1 "/usr/include/features.h" 1 3 4
17 # 357 "/usr/include/features.h" 3 4
18 # 1 "/usr/include/sys/cdefs.h" 1 3 4
19 # 353 "/usr/include/sys/cdefs.h" 3 4
20 # 1 "/usr/include/bits/wordsize.h" 1 3 4
21 # 354 "/usr/include/sys/cdefs.h" 2 3 4
22 # 358 "/usr/include/features.h" 2 3 4
23 # 381 "/usr/include/features.h" 3 4
24 # 1 "/usr/include/gnu/stubs.h" 1 3 4
25
26
27
28 # 1 "/usr/include/bits/wordsize.h" 1 3 4
29 # 5 "/usr/include/gnu/stubs.h" 2 3 4
30
31
32
33
34 # 1 "/usr/include/gnu/stubs-64.h" 1 3 4
35 # 10 "/usr/include/gnu/stubs.h" 2 3 4
36 # 382 "/usr/include/features.h" 2 3 4
37 # 38 "/usr/include/assert.h" 2 3 4
38 # 51 "../boost/assert.hpp" 2
39 # 15 "../boost/smart_ptr/scoped_ptr.hpp" 2
40 # 1 "../boost/checked_delete.hpp" 1
41 # 24 "../boost/checked_delete.hpp"
42 namespace boost
43 {
44
45
46
47 template<class T> inline void checked_delete(T * x)
48 {
49
50 typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
51 (void) sizeof(type_must_be_complete);
52 delete x;
53 }
54
55 template<class T> inline void checked_array_delete(T * x)
56 {
57 typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
58 (void) sizeof(type_must_be_complete);
59 delete [] x;
60 }
61
62 template<class T> struct checked_deleter
63 {
64 typedef void result_type;
65 typedef T * argument_type;
66
67 void operator()(T * x) const
68 {
69
70 boost::checked_delete(x);
71 }
72 };
73
74 template<class T> struct checked_array_deleter
75 {
76 typedef void result_type;
77 typedef T * argument_type;
78
79 void operator()(T * x) const
80 {
81 boost::checked_array_delete(x);
82 }
83 };
84
85 }
86 # 16 "../boost/smart_ptr/scoped_ptr.hpp" 2
87 # 1 "../boost/detail/workaround.hpp" 1
88 # 41 "../boost/detail/workaround.hpp"
89 # 1 "../boost/config.hpp" 1
90 # 26 "../boost/config.hpp"
91 # 1 "../boost/config/user.hpp" 1
92 # 27 "../boost/config.hpp" 2
93
94
95
96
97 # 1 "../boost/config/select_compiler_config.hpp" 1
98 # 32 "../boost/config.hpp" 2
99
100
101
102 # 1 "../boost/config/compiler/gcc.hpp" 1
103 # 36 "../boost/config.hpp" 2
104
105
106
107
108 # 1 "../boost/config/select_stdlib_config.hpp" 1
109 # 18 "../boost/config/select_stdlib_config.hpp"
110 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
111 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
112
113 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
114
115 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 1 3
116 # 153 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3
117 namespace std
118 {
119 typedef long unsigned int size_t;
120 typedef long int ptrdiff_t;
121
122
123
124
125 }
126 # 393 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3
127 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3
128 # 394 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 2 3
129
130
131 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3
132 # 397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 2 3
133 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
134 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
135 # 150 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 3 4
136 typedef long int ptrdiff_t;
137 # 212 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 3 4
138 typedef long unsigned int size_t;
139 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
140 # 19 "../boost/config/select_stdlib_config.hpp" 2
141 # 37 "../boost/config/select_stdlib_config.hpp"
142 # 1 "../boost/config/no_tr1/utility.hpp" 1
143 # 21 "../boost/config/no_tr1/utility.hpp"
144 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/utility" 1 3
145 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/utility" 3
146
147 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/utility" 3
148 # 70 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/utility" 3
149 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_relops.h" 1 3
150 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_relops.h" 3
151 namespace std __attribute__ ((__visibility__ ("default")))
152 {
153 namespace rel_ops
154 {
155
156 # 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_relops.h" 3
157 template <class _Tp>
158 inline bool
159 operator!=(const _Tp& __x, const _Tp& __y)
160 { return !(__x == __y); }
161 # 99 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_relops.h" 3
162 template <class _Tp>
163 inline bool
164 operator>(const _Tp& __x, const _Tp& __y)
165 { return __y < __x; }
166 # 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_relops.h" 3
167 template <class _Tp>
168 inline bool
169 operator<=(const _Tp& __x, const _Tp& __y)
170 { return !(__y < __x); }
171 # 125 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_relops.h" 3
172 template <class _Tp>
173 inline bool
174 operator>=(const _Tp& __x, const _Tp& __y)
175 { return !(__x < __y); }
176
177
178 }
179
180 }
181 # 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/utility" 2 3
182 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_pair.h" 1 3
183 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_pair.h" 3
184 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/move.h" 1 3
185 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/move.h" 3
186 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/concept_check.h" 1 3
187 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/concept_check.h" 3
188
189 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/concept_check.h" 3
190 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/move.h" 2 3
191
192 namespace std __attribute__ ((__visibility__ ("default")))
193 {
194
195
196
197 template<typename _Tp>
198 inline _Tp*
199 __addressof(_Tp& __r)
200 {
201 return reinterpret_cast<_Tp*>
202 (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
203 }
204
205
206 }
207 # 109 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/move.h" 3
208 namespace std __attribute__ ((__visibility__ ("default")))
209 {
210
211 # 120 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/move.h" 3
212 template<typename _Tp>
213 inline void
214 swap(_Tp& __a, _Tp& __b)
215 {
216
217
218
219 _Tp __tmp = (__a);
220 __a = (__b);
221 __b = (__tmp);
222 }
223
224
225
226 template<typename _Tp, size_t _Nm>
227 inline void
228 swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
229 {
230 for (size_t __n = 0; __n < _Nm; ++__n)
231 swap(__a[__n], __b[__n]);
232 }
233
234
235 }
236 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_pair.h" 2 3
237
238
239
240
241
242 namespace std __attribute__ ((__visibility__ ("default")))
243 {
244
245 # 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_pair.h" 3
246 template<class _T1, class _T2>
247 struct pair
248 {
249 typedef _T1 first_type;
250 typedef _T2 second_type;
251
252 _T1 first;
253 _T2 second;
254
255
256
257
258
259 pair()
260 : first(), second() { }
261
262
263 pair(const _T1& __a, const _T2& __b)
264 : first(__a), second(__b) { }
265
266
267 template<class _U1, class _U2>
268 pair(const pair<_U1, _U2>& __p)
269 : first(__p.first), second(__p.second) { }
270 # 196 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_pair.h" 3
271 };
272
273
274 template<class _T1, class _T2>
275 inline bool
276 operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
277 { return __x.first == __y.first && __x.second == __y.second; }
278
279
280 template<class _T1, class _T2>
281 inline bool
282 operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
283 { return __x.first < __y.first
284 || (!(__y.first < __x.first) && __x.second < __y.second); }
285
286
287 template<class _T1, class _T2>
288 inline bool
289 operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
290 { return !(__x == __y); }
291
292
293 template<class _T1, class _T2>
294 inline bool
295 operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
296 { return __y < __x; }
297
298
299 template<class _T1, class _T2>
300 inline bool
301 operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
302 { return !(__y < __x); }
303
304
305 template<class _T1, class _T2>
306 inline bool
307 operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
308 { return !(__x < __y); }
309 # 270 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_pair.h" 3
310 template<class _T1, class _T2>
311 inline pair<_T1, _T2>
312 make_pair(_T1 __x, _T2 __y)
313 { return pair<_T1, _T2>(__x, __y); }
314
315
316
317 }
318 # 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/utility" 2 3
319 # 22 "../boost/config/no_tr1/utility.hpp" 2
320 # 38 "../boost/config/select_stdlib_config.hpp" 2
321 # 41 "../boost/config.hpp" 2
322
323
324
325 # 1 "../boost/config/stdlib/libstdcpp3.hpp" 1
326 # 76 "../boost/config/stdlib/libstdcpp3.hpp"
327 # 1 "/usr/include/unistd.h" 1 3 4
328 # 28 "/usr/include/unistd.h" 3 4
329 extern "C" {
330 # 203 "/usr/include/unistd.h" 3 4
331 # 1 "/usr/include/bits/posix_opt.h" 1 3 4
332 # 204 "/usr/include/unistd.h" 2 3 4
333
334
335
336 # 1 "/usr/include/bits/environments.h" 1 3 4
337 # 23 "/usr/include/bits/environments.h" 3 4
338 # 1 "/usr/include/bits/wordsize.h" 1 3 4
339 # 24 "/usr/include/bits/environments.h" 2 3 4
340 # 208 "/usr/include/unistd.h" 2 3 4
341 # 218 "/usr/include/unistd.h" 3 4
342 # 1 "/usr/include/bits/types.h" 1 3 4
343 # 28 "/usr/include/bits/types.h" 3 4
344 # 1 "/usr/include/bits/wordsize.h" 1 3 4
345 # 29 "/usr/include/bits/types.h" 2 3 4
346
347
348 typedef unsigned char __u_char;
349 typedef unsigned short int __u_short;
350 typedef unsigned int __u_int;
351 typedef unsigned long int __u_long;
352
353
354 typedef signed char __int8_t;
355 typedef unsigned char __uint8_t;
356 typedef signed short int __int16_t;
357 typedef unsigned short int __uint16_t;
358 typedef signed int __int32_t;
359 typedef unsigned int __uint32_t;
360
361 typedef signed long int __int64_t;
362 typedef unsigned long int __uint64_t;
363
364
365
366
367
368
369
370 typedef long int __quad_t;
371 typedef unsigned long int __u_quad_t;
372 # 131 "/usr/include/bits/types.h" 3 4
373 # 1 "/usr/include/bits/typesizes.h" 1 3 4
374 # 132 "/usr/include/bits/types.h" 2 3 4
375
376
377 typedef unsigned long int __dev_t;
378 typedef unsigned int __uid_t;
379 typedef unsigned int __gid_t;
380 typedef unsigned long int __ino_t;
381 typedef unsigned long int __ino64_t;
382 typedef unsigned int __mode_t;
383 typedef unsigned long int __nlink_t;
384 typedef long int __off_t;
385 typedef long int __off64_t;
386 typedef int __pid_t;
387 typedef struct { int __val[2]; } __fsid_t;
388 typedef long int __clock_t;
389 typedef unsigned long int __rlim_t;
390 typedef unsigned long int __rlim64_t;
391 typedef unsigned int __id_t;
392 typedef long int __time_t;
393 typedef unsigned int __useconds_t;
394 typedef long int __suseconds_t;
395
396 typedef int __daddr_t;
397 typedef long int __swblk_t;
398 typedef int __key_t;
399
400
401 typedef int __clockid_t;
402
403
404 typedef void * __timer_t;
405
406
407 typedef long int __blksize_t;
408
409
410
411
412 typedef long int __blkcnt_t;
413 typedef long int __blkcnt64_t;
414
415
416 typedef unsigned long int __fsblkcnt_t;
417 typedef unsigned long int __fsblkcnt64_t;
418
419
420 typedef unsigned long int __fsfilcnt_t;
421 typedef unsigned long int __fsfilcnt64_t;
422
423 typedef long int __ssize_t;
424
425
426
427 typedef __off64_t __loff_t;
428 typedef __quad_t *__qaddr_t;
429 typedef char *__caddr_t;
430
431
432 typedef long int __intptr_t;
433
434
435 typedef unsigned int __socklen_t;
436 # 219 "/usr/include/unistd.h" 2 3 4
437
438
439 typedef __ssize_t ssize_t;
440
441
442
443
444
445 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
446 # 228 "/usr/include/unistd.h" 2 3 4
447
448
449
450
451
452 typedef __gid_t gid_t;
453
454
455
456
457 typedef __uid_t uid_t;
458
459
460
461
462
463 typedef __off_t off_t;
464
465
466
467
468
469
470 typedef __off64_t off64_t;
471
472
473
474
475 typedef __useconds_t useconds_t;
476
477
478
479
480 typedef __pid_t pid_t;
481
482
483
484
485
486
487 typedef __intptr_t intptr_t;
488
489
490
491
492
493
494 typedef __socklen_t socklen_t;
495 # 288 "/usr/include/unistd.h" 3 4
496 extern int access (__const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1)));
497
498
499
500
501 extern int euidaccess (__const char *__name, int __type)
502 throw () __attribute__ ((__nonnull__ (1)));
503
504
505 extern int eaccess (__const char *__name, int __type)
506 throw () __attribute__ ((__nonnull__ (1)));
507
508
509
510
511
512
513 extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
514 throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
515 # 331 "/usr/include/unistd.h" 3 4
516 extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw ();
517 # 342 "/usr/include/unistd.h" 3 4
518 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
519 throw ();
520
521
522
523
524
525
526 extern int close (int __fd);
527
528
529
530
531
532
533 extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__));
534
535
536
537
538
539 extern ssize_t write (int __fd, __const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__));
540 # 373 "/usr/include/unistd.h" 3 4
541 extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
542 __off_t __offset) __attribute__ ((__warn_unused_result__));
543
544
545
546
547
548
549 extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
550 __off_t __offset) __attribute__ ((__warn_unused_result__));
551 # 401 "/usr/include/unistd.h" 3 4
552 extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
553 __off64_t __offset) __attribute__ ((__warn_unused_result__));
554
555
556 extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
557 __off64_t __offset) __attribute__ ((__warn_unused_result__));
558
559
560
561
562
563
564
565 extern int pipe (int __pipedes[2]) throw () __attribute__ ((__warn_unused_result__));
566
567
568
569
570 extern int pipe2 (int __pipedes[2], int __flags) throw () __attribute__ ((__warn_unused_result__));
571 # 429 "/usr/include/unistd.h" 3 4
572 extern unsigned int alarm (unsigned int __seconds) throw ();
573 # 441 "/usr/include/unistd.h" 3 4
574 extern unsigned int sleep (unsigned int __seconds);
575
576
577
578
579
580
581
582 extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
583 throw ();
584
585
586
587
588
589
590 extern int usleep (__useconds_t __useconds);
591 # 466 "/usr/include/unistd.h" 3 4
592 extern int pause (void);
593
594
595
596 extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
597 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
598
599
600
601 extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () __attribute__ ((__warn_unused_result__));
602
603
604
605
606 extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
607 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
608
609
610
611
612
613
614 extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
615 __gid_t __group, int __flag)
616 throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
617
618
619
620 extern int chdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
621
622
623
624 extern int fchdir (int __fd) throw () __attribute__ ((__warn_unused_result__));
625 # 508 "/usr/include/unistd.h" 3 4
626 extern char *getcwd (char *__buf, size_t __size) throw () __attribute__ ((__warn_unused_result__));
627
628
629
630
631
632 extern char *get_current_dir_name (void) throw ();
633
634
635
636
637
638
639
640 extern char *getwd (char *__buf)
641 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__));
642
643
644
645
646 extern int dup (int __fd) throw () __attribute__ ((__warn_unused_result__));
647
648
649 extern int dup2 (int __fd, int __fd2) throw ();
650
651
652
653
654 extern int dup3 (int __fd, int __fd2, int __flags) throw ();
655
656
657
658 extern char **__environ;
659
660 extern char **environ;
661
662
663
664
665
666 extern int execve (__const char *__path, char *__const __argv[],
667 char *__const __envp[]) throw () __attribute__ ((__nonnull__ (1, 2)));
668
669
670
671
672 extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
673 throw () __attribute__ ((__nonnull__ (2)));
674
675
676
677
678 extern int execv (__const char *__path, char *__const __argv[])
679 throw () __attribute__ ((__nonnull__ (1, 2)));
680
681
682
683 extern int execle (__const char *__path, __const char *__arg, ...)
684 throw () __attribute__ ((__nonnull__ (1, 2)));
685
686
687
688 extern int execl (__const char *__path, __const char *__arg, ...)
689 throw () __attribute__ ((__nonnull__ (1, 2)));
690
691
692
693 extern int execvp (__const char *__file, char *__const __argv[])
694 throw () __attribute__ ((__nonnull__ (1, 2)));
695
696
697
698
699 extern int execlp (__const char *__file, __const char *__arg, ...)
700 throw () __attribute__ ((__nonnull__ (1, 2)));
701
702
703
704
705 extern int execvpe (__const char *__file, char *__const __argv[],
706 char *__const __envp[])
707 throw () __attribute__ ((__nonnull__ (1, 2)));
708
709
710
711
712
713 extern int nice (int __inc) throw () __attribute__ ((__warn_unused_result__));
714
715
716
717
718 extern void _exit (int __status) __attribute__ ((__noreturn__));
719
720
721
722
723
724 # 1 "/usr/include/bits/confname.h" 1 3 4
725 # 26 "/usr/include/bits/confname.h" 3 4
726 enum
727 {
728 _PC_LINK_MAX,
729
730 _PC_MAX_CANON,
731
732 _PC_MAX_INPUT,
733
734 _PC_NAME_MAX,
735
736 _PC_PATH_MAX,
737
738 _PC_PIPE_BUF,
739
740 _PC_CHOWN_RESTRICTED,
741
742 _PC_NO_TRUNC,
743
744 _PC_VDISABLE,
745
746 _PC_SYNC_IO,
747
748 _PC_ASYNC_IO,
749
750 _PC_PRIO_IO,
751
752 _PC_SOCK_MAXBUF,
753
754 _PC_FILESIZEBITS,
755
756 _PC_REC_INCR_XFER_SIZE,
757
758 _PC_REC_MAX_XFER_SIZE,
759
760 _PC_REC_MIN_XFER_SIZE,
761
762 _PC_REC_XFER_ALIGN,
763
764 _PC_ALLOC_SIZE_MIN,
765
766 _PC_SYMLINK_MAX,
767
768 _PC_2_SYMLINKS
769
770 };
771
772
773 enum
774 {
775 _SC_ARG_MAX,
776
777 _SC_CHILD_MAX,
778
779 _SC_CLK_TCK,
780
781 _SC_NGROUPS_MAX,
782
783 _SC_OPEN_MAX,
784
785 _SC_STREAM_MAX,
786
787 _SC_TZNAME_MAX,
788
789 _SC_JOB_CONTROL,
790
791 _SC_SAVED_IDS,
792
793 _SC_REALTIME_SIGNALS,
794
795 _SC_PRIORITY_SCHEDULING,
796
797 _SC_TIMERS,
798
799 _SC_ASYNCHRONOUS_IO,
800
801 _SC_PRIORITIZED_IO,
802
803 _SC_SYNCHRONIZED_IO,
804
805 _SC_FSYNC,
806
807 _SC_MAPPED_FILES,
808
809 _SC_MEMLOCK,
810
811 _SC_MEMLOCK_RANGE,
812
813 _SC_MEMORY_PROTECTION,
814
815 _SC_MESSAGE_PASSING,
816
817 _SC_SEMAPHORES,
818
819 _SC_SHARED_MEMORY_OBJECTS,
820
821 _SC_AIO_LISTIO_MAX,
822
823 _SC_AIO_MAX,
824
825 _SC_AIO_PRIO_DELTA_MAX,
826
827 _SC_DELAYTIMER_MAX,
828
829 _SC_MQ_OPEN_MAX,
830
831 _SC_MQ_PRIO_MAX,
832
833 _SC_VERSION,
834
835 _SC_PAGESIZE,
836
837
838 _SC_RTSIG_MAX,
839
840 _SC_SEM_NSEMS_MAX,
841
842 _SC_SEM_VALUE_MAX,
843
844 _SC_SIGQUEUE_MAX,
845
846 _SC_TIMER_MAX,
847
848
849
850
851 _SC_BC_BASE_MAX,
852
853 _SC_BC_DIM_MAX,
854
855 _SC_BC_SCALE_MAX,
856
857 _SC_BC_STRING_MAX,
858
859 _SC_COLL_WEIGHTS_MAX,
860
861 _SC_EQUIV_CLASS_MAX,
862
863 _SC_EXPR_NEST_MAX,
864
865 _SC_LINE_MAX,
866
867 _SC_RE_DUP_MAX,
868
869 _SC_CHARCLASS_NAME_MAX,
870
871
872 _SC_2_VERSION,
873
874 _SC_2_C_BIND,
875
876 _SC_2_C_DEV,
877
878 _SC_2_FORT_DEV,
879
880 _SC_2_FORT_RUN,
881
882 _SC_2_SW_DEV,
883
884 _SC_2_LOCALEDEF,
885
886
887 _SC_PII,
888
889 _SC_PII_XTI,
890
891 _SC_PII_SOCKET,
892
893 _SC_PII_INTERNET,
894
895 _SC_PII_OSI,
896
897 _SC_POLL,
898
899 _SC_SELECT,
900
901 _SC_UIO_MAXIOV,
902
903 _SC_IOV_MAX = _SC_UIO_MAXIOV,
904
905 _SC_PII_INTERNET_STREAM,
906
907 _SC_PII_INTERNET_DGRAM,
908
909 _SC_PII_OSI_COTS,
910
911 _SC_PII_OSI_CLTS,
912
913 _SC_PII_OSI_M,
914
915 _SC_T_IOV_MAX,
916
917
918
919 _SC_THREADS,
920
921 _SC_THREAD_SAFE_FUNCTIONS,
922
923 _SC_GETGR_R_SIZE_MAX,
924
925 _SC_GETPW_R_SIZE_MAX,
926
927 _SC_LOGIN_NAME_MAX,
928
929 _SC_TTY_NAME_MAX,
930
931 _SC_THREAD_DESTRUCTOR_ITERATIONS,
932
933 _SC_THREAD_KEYS_MAX,
934
935 _SC_THREAD_STACK_MIN,
936
937 _SC_THREAD_THREADS_MAX,
938
939 _SC_THREAD_ATTR_STACKADDR,
940
941 _SC_THREAD_ATTR_STACKSIZE,
942
943 _SC_THREAD_PRIORITY_SCHEDULING,
944
945 _SC_THREAD_PRIO_INHERIT,
946
947 _SC_THREAD_PRIO_PROTECT,
948
949 _SC_THREAD_PROCESS_SHARED,
950
951
952 _SC_NPROCESSORS_CONF,
953
954 _SC_NPROCESSORS_ONLN,
955
956 _SC_PHYS_PAGES,
957
958 _SC_AVPHYS_PAGES,
959
960 _SC_ATEXIT_MAX,
961
962 _SC_PASS_MAX,
963
964
965 _SC_XOPEN_VERSION,
966
967 _SC_XOPEN_XCU_VERSION,
968
969 _SC_XOPEN_UNIX,
970
971 _SC_XOPEN_CRYPT,
972
973 _SC_XOPEN_ENH_I18N,
974
975 _SC_XOPEN_SHM,
976
977
978 _SC_2_CHAR_TERM,
979
980 _SC_2_C_VERSION,
981
982 _SC_2_UPE,
983
984
985 _SC_XOPEN_XPG2,
986
987 _SC_XOPEN_XPG3,
988
989 _SC_XOPEN_XPG4,
990
991
992 _SC_CHAR_BIT,
993
994 _SC_CHAR_MAX,
995
996 _SC_CHAR_MIN,
997
998 _SC_INT_MAX,
999
1000 _SC_INT_MIN,
1001
1002 _SC_LONG_BIT,
1003
1004 _SC_WORD_BIT,
1005
1006 _SC_MB_LEN_MAX,
1007
1008 _SC_NZERO,
1009
1010 _SC_SSIZE_MAX,
1011
1012 _SC_SCHAR_MAX,
1013
1014 _SC_SCHAR_MIN,
1015
1016 _SC_SHRT_MAX,
1017
1018 _SC_SHRT_MIN,
1019
1020 _SC_UCHAR_MAX,
1021
1022 _SC_UINT_MAX,
1023
1024 _SC_ULONG_MAX,
1025
1026 _SC_USHRT_MAX,
1027
1028
1029 _SC_NL_ARGMAX,
1030
1031 _SC_NL_LANGMAX,
1032
1033 _SC_NL_MSGMAX,
1034
1035 _SC_NL_NMAX,
1036
1037 _SC_NL_SETMAX,
1038
1039 _SC_NL_TEXTMAX,
1040
1041
1042 _SC_XBS5_ILP32_OFF32,
1043
1044 _SC_XBS5_ILP32_OFFBIG,
1045
1046 _SC_XBS5_LP64_OFF64,
1047
1048 _SC_XBS5_LPBIG_OFFBIG,
1049
1050
1051 _SC_XOPEN_LEGACY,
1052
1053 _SC_XOPEN_REALTIME,
1054
1055 _SC_XOPEN_REALTIME_THREADS,
1056
1057
1058 _SC_ADVISORY_INFO,
1059
1060 _SC_BARRIERS,
1061
1062 _SC_BASE,
1063
1064 _SC_C_LANG_SUPPORT,
1065
1066 _SC_C_LANG_SUPPORT_R,
1067
1068 _SC_CLOCK_SELECTION,
1069
1070 _SC_CPUTIME,
1071
1072 _SC_THREAD_CPUTIME,
1073
1074 _SC_DEVICE_IO,
1075
1076 _SC_DEVICE_SPECIFIC,
1077
1078 _SC_DEVICE_SPECIFIC_R,
1079
1080 _SC_FD_MGMT,
1081
1082 _SC_FIFO,
1083
1084 _SC_PIPE,
1085
1086 _SC_FILE_ATTRIBUTES,
1087
1088 _SC_FILE_LOCKING,
1089
1090 _SC_FILE_SYSTEM,
1091
1092 _SC_MONOTONIC_CLOCK,
1093
1094 _SC_MULTI_PROCESS,
1095
1096 _SC_SINGLE_PROCESS,
1097
1098 _SC_NETWORKING,
1099
1100 _SC_READER_WRITER_LOCKS,
1101
1102 _SC_SPIN_LOCKS,
1103
1104 _SC_REGEXP,
1105
1106 _SC_REGEX_VERSION,
1107
1108 _SC_SHELL,
1109
1110 _SC_SIGNALS,
1111
1112 _SC_SPAWN,
1113
1114 _SC_SPORADIC_SERVER,
1115
1116 _SC_THREAD_SPORADIC_SERVER,
1117
1118 _SC_SYSTEM_DATABASE,
1119
1120 _SC_SYSTEM_DATABASE_R,
1121
1122 _SC_TIMEOUTS,
1123
1124 _SC_TYPED_MEMORY_OBJECTS,
1125
1126 _SC_USER_GROUPS,
1127
1128 _SC_USER_GROUPS_R,
1129
1130 _SC_2_PBS,
1131
1132 _SC_2_PBS_ACCOUNTING,
1133
1134 _SC_2_PBS_LOCATE,
1135
1136 _SC_2_PBS_MESSAGE,
1137
1138 _SC_2_PBS_TRACK,
1139
1140 _SC_SYMLOOP_MAX,
1141
1142 _SC_STREAMS,
1143
1144 _SC_2_PBS_CHECKPOINT,
1145
1146
1147 _SC_V6_ILP32_OFF32,
1148
1149 _SC_V6_ILP32_OFFBIG,
1150
1151 _SC_V6_LP64_OFF64,
1152
1153 _SC_V6_LPBIG_OFFBIG,
1154
1155
1156 _SC_HOST_NAME_MAX,
1157
1158 _SC_TRACE,
1159
1160 _SC_TRACE_EVENT_FILTER,
1161
1162 _SC_TRACE_INHERIT,
1163
1164 _SC_TRACE_LOG,
1165
1166
1167 _SC_LEVEL1_ICACHE_SIZE,
1168
1169 _SC_LEVEL1_ICACHE_ASSOC,
1170
1171 _SC_LEVEL1_ICACHE_LINESIZE,
1172
1173 _SC_LEVEL1_DCACHE_SIZE,
1174
1175 _SC_LEVEL1_DCACHE_ASSOC,
1176
1177 _SC_LEVEL1_DCACHE_LINESIZE,
1178
1179 _SC_LEVEL2_CACHE_SIZE,
1180
1181 _SC_LEVEL2_CACHE_ASSOC,
1182
1183 _SC_LEVEL2_CACHE_LINESIZE,
1184
1185 _SC_LEVEL3_CACHE_SIZE,
1186
1187 _SC_LEVEL3_CACHE_ASSOC,
1188
1189 _SC_LEVEL3_CACHE_LINESIZE,
1190
1191 _SC_LEVEL4_CACHE_SIZE,
1192
1193 _SC_LEVEL4_CACHE_ASSOC,
1194
1195 _SC_LEVEL4_CACHE_LINESIZE,
1196
1197
1198
1199 _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
1200
1201 _SC_RAW_SOCKETS,
1202
1203
1204 _SC_V7_ILP32_OFF32,
1205
1206 _SC_V7_ILP32_OFFBIG,
1207
1208 _SC_V7_LP64_OFF64,
1209
1210 _SC_V7_LPBIG_OFFBIG,
1211
1212
1213 _SC_SS_REPL_MAX,
1214
1215
1216 _SC_TRACE_EVENT_NAME_MAX,
1217
1218 _SC_TRACE_NAME_MAX,
1219
1220 _SC_TRACE_SYS_MAX,
1221
1222 _SC_TRACE_USER_EVENT_MAX,
1223
1224
1225 _SC_XOPEN_STREAMS,
1226
1227
1228 _SC_THREAD_ROBUST_PRIO_INHERIT,
1229
1230 _SC_THREAD_ROBUST_PRIO_PROTECT
1231
1232 };
1233
1234
1235 enum
1236 {
1237 _CS_PATH,
1238
1239
1240 _CS_V6_WIDTH_RESTRICTED_ENVS,
1241
1242
1243
1244 _CS_GNU_LIBC_VERSION,
1245
1246 _CS_GNU_LIBPTHREAD_VERSION,
1247
1248
1249 _CS_V5_WIDTH_RESTRICTED_ENVS,
1250
1251
1252
1253 _CS_V7_WIDTH_RESTRICTED_ENVS,
1254
1255
1256
1257 _CS_LFS_CFLAGS = 1000,
1258
1259 _CS_LFS_LDFLAGS,
1260
1261 _CS_LFS_LIBS,
1262
1263 _CS_LFS_LINTFLAGS,
1264
1265 _CS_LFS64_CFLAGS,
1266
1267 _CS_LFS64_LDFLAGS,
1268
1269 _CS_LFS64_LIBS,
1270
1271 _CS_LFS64_LINTFLAGS,
1272
1273
1274 _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
1275
1276 _CS_XBS5_ILP32_OFF32_LDFLAGS,
1277
1278 _CS_XBS5_ILP32_OFF32_LIBS,
1279
1280 _CS_XBS5_ILP32_OFF32_LINTFLAGS,
1281
1282 _CS_XBS5_ILP32_OFFBIG_CFLAGS,
1283
1284 _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
1285
1286 _CS_XBS5_ILP32_OFFBIG_LIBS,
1287
1288 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
1289
1290 _CS_XBS5_LP64_OFF64_CFLAGS,
1291
1292 _CS_XBS5_LP64_OFF64_LDFLAGS,
1293
1294 _CS_XBS5_LP64_OFF64_LIBS,
1295
1296 _CS_XBS5_LP64_OFF64_LINTFLAGS,
1297
1298 _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
1299
1300 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
1301
1302 _CS_XBS5_LPBIG_OFFBIG_LIBS,
1303
1304 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
1305
1306
1307 _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
1308
1309 _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
1310
1311 _CS_POSIX_V6_ILP32_OFF32_LIBS,
1312
1313 _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
1314
1315 _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
1316
1317 _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
1318
1319 _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
1320
1321 _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
1322
1323 _CS_POSIX_V6_LP64_OFF64_CFLAGS,
1324
1325 _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
1326
1327 _CS_POSIX_V6_LP64_OFF64_LIBS,
1328
1329 _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
1330
1331 _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
1332
1333 _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
1334
1335 _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
1336
1337 _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
1338
1339
1340 _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
1341
1342 _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
1343
1344 _CS_POSIX_V7_ILP32_OFF32_LIBS,
1345
1346 _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
1347
1348 _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
1349
1350 _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
1351
1352 _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
1353
1354 _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
1355
1356 _CS_POSIX_V7_LP64_OFF64_CFLAGS,
1357
1358 _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
1359
1360 _CS_POSIX_V7_LP64_OFF64_LIBS,
1361
1362 _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
1363
1364 _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
1365
1366 _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
1367
1368 _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
1369
1370 _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
1371
1372
1373 _CS_V6_ENV,
1374
1375 _CS_V7_ENV
1376
1377 };
1378 # 607 "/usr/include/unistd.h" 2 3 4
1379
1380
1381 extern long int pathconf (__const char *__path, int __name)
1382 throw () __attribute__ ((__nonnull__ (1)));
1383
1384
1385 extern long int fpathconf (int __fd, int __name) throw ();
1386
1387
1388 extern long int sysconf (int __name) throw ();
1389
1390
1391
1392 extern size_t confstr (int __name, char *__buf, size_t __len) throw ();
1393
1394
1395
1396
1397 extern __pid_t getpid (void) throw ();
1398
1399
1400 extern __pid_t getppid (void) throw ();
1401
1402
1403
1404
1405 extern __pid_t getpgrp (void) throw ();
1406 # 643 "/usr/include/unistd.h" 3 4
1407 extern __pid_t __getpgid (__pid_t __pid) throw ();
1408
1409 extern __pid_t getpgid (__pid_t __pid) throw ();
1410
1411
1412
1413
1414
1415
1416 extern int setpgid (__pid_t __pid, __pid_t __pgid) throw ();
1417 # 669 "/usr/include/unistd.h" 3 4
1418 extern int setpgrp (void) throw ();
1419 # 686 "/usr/include/unistd.h" 3 4
1420 extern __pid_t setsid (void) throw ();
1421
1422
1423
1424 extern __pid_t getsid (__pid_t __pid) throw ();
1425
1426
1427
1428 extern __uid_t getuid (void) throw ();
1429
1430
1431 extern __uid_t geteuid (void) throw ();
1432
1433
1434 extern __gid_t getgid (void) throw ();
1435
1436
1437 extern __gid_t getegid (void) throw ();
1438
1439
1440
1441
1442 extern int getgroups (int __size, __gid_t __list[]) throw () __attribute__ ((__warn_unused_result__));
1443
1444
1445
1446 extern int group_member (__gid_t __gid) throw ();
1447
1448
1449
1450
1451
1452
1453 extern int setuid (__uid_t __uid) throw ();
1454
1455
1456
1457
1458 extern int setreuid (__uid_t __ruid, __uid_t __euid) throw ();
1459
1460
1461
1462
1463 extern int seteuid (__uid_t __uid) throw ();
1464
1465
1466
1467
1468
1469
1470 extern int setgid (__gid_t __gid) throw ();
1471
1472
1473
1474
1475 extern int setregid (__gid_t __rgid, __gid_t __egid) throw ();
1476
1477
1478
1479
1480 extern int setegid (__gid_t __gid) throw ();
1481
1482
1483
1484
1485
1486 extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
1487 throw ();
1488
1489
1490
1491 extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
1492 throw ();
1493
1494
1495
1496 extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
1497 throw ();
1498
1499
1500
1501 extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
1502 throw ();
1503
1504
1505
1506
1507
1508
1509 extern __pid_t fork (void) throw ();
1510
1511
1512
1513
1514
1515
1516
1517 extern __pid_t vfork (void) throw ();
1518
1519
1520
1521
1522
1523 extern char *ttyname (int __fd) throw ();
1524
1525
1526
1527 extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
1528 throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
1529
1530
1531
1532 extern int isatty (int __fd) throw ();
1533
1534
1535
1536
1537
1538 extern int ttyslot (void) throw ();
1539
1540
1541
1542
1543 extern int link (__const char *__from, __const char *__to)
1544 throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
1545
1546
1547
1548
1549 extern int linkat (int __fromfd, __const char *__from, int __tofd,
1550 __const char *__to, int __flags)
1551 throw () __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__));
1552
1553
1554
1555
1556 extern int symlink (__const char *__from, __const char *__to)
1557 throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
1558
1559
1560
1561
1562 extern ssize_t readlink (__const char *__restrict __path,
1563 char *__restrict __buf, size_t __len)
1564 throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
1565
1566
1567
1568
1569 extern int symlinkat (__const char *__from, int __tofd,
1570 __const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
1571
1572
1573 extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
1574 char *__restrict __buf, size_t __len)
1575 throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
1576
1577
1578
1579 extern int unlink (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
1580
1581
1582
1583 extern int unlinkat (int __fd, __const char *__name, int __flag)
1584 throw () __attribute__ ((__nonnull__ (2)));
1585
1586
1587
1588 extern int rmdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1)));
1589
1590
1591
1592 extern __pid_t tcgetpgrp (int __fd) throw ();
1593
1594
1595 extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw ();
1596
1597
1598
1599
1600
1601
1602 extern char *getlogin (void);
1603
1604
1605
1606
1607
1608
1609
1610 extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
1611
1612
1613
1614
1615 extern int setlogin (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
1616 # 890 "/usr/include/unistd.h" 3 4
1617 # 1 "/usr/include/getopt.h" 1 3 4
1618 # 50 "/usr/include/getopt.h" 3 4
1619 extern "C" {
1620 # 59 "/usr/include/getopt.h" 3 4
1621 extern char *optarg;
1622 # 73 "/usr/include/getopt.h" 3 4
1623 extern int optind;
1624
1625
1626
1627
1628 extern int opterr;
1629
1630
1631
1632 extern int optopt;
1633 # 152 "/usr/include/getopt.h" 3 4
1634 extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
1635 throw ();
1636 # 187 "/usr/include/getopt.h" 3 4
1637 }
1638 # 891 "/usr/include/unistd.h" 2 3 4
1639
1640
1641
1642
1643
1644
1645
1646 extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
1647
1648
1649
1650
1651
1652
1653 extern int sethostname (__const char *__name, size_t __len)
1654 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1655
1656
1657
1658 extern int sethostid (long int __id) throw () __attribute__ ((__warn_unused_result__));
1659
1660
1661
1662
1663
1664 extern int getdomainname (char *__name, size_t __len)
1665 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1666 extern int setdomainname (__const char *__name, size_t __len)
1667 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1668
1669
1670
1671
1672
1673 extern int vhangup (void) throw ();
1674
1675
1676 extern int revoke (__const char *__file) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1677
1678
1679
1680
1681
1682
1683
1684 extern int profil (unsigned short int *__sample_buffer, size_t __size,
1685 size_t __offset, unsigned int __scale)
1686 throw () __attribute__ ((__nonnull__ (1)));
1687
1688
1689
1690
1691
1692 extern int acct (__const char *__name) throw ();
1693
1694
1695
1696 extern char *getusershell (void) throw ();
1697 extern void endusershell (void) throw ();
1698 extern void setusershell (void) throw ();
1699
1700
1701
1702
1703
1704 extern int daemon (int __nochdir, int __noclose) throw () __attribute__ ((__warn_unused_result__));
1705
1706
1707
1708
1709
1710
1711 extern int chroot (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1712
1713
1714
1715 extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
1716 # 976 "/usr/include/unistd.h" 3 4
1717 extern int fsync (int __fd);
1718
1719
1720
1721
1722
1723
1724 extern long int gethostid (void);
1725
1726
1727 extern void sync (void) throw ();
1728
1729
1730
1731
1732
1733 extern int getpagesize (void) throw () __attribute__ ((__const__));
1734
1735
1736
1737
1738 extern int getdtablesize (void) throw ();
1739 # 1007 "/usr/include/unistd.h" 3 4
1740 extern int truncate (__const char *__file, __off_t __length)
1741 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1742 # 1019 "/usr/include/unistd.h" 3 4
1743 extern int truncate64 (__const char *__file, __off64_t __length)
1744 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1745 # 1029 "/usr/include/unistd.h" 3 4
1746 extern int ftruncate (int __fd, __off_t __length) throw () __attribute__ ((__warn_unused_result__));
1747 # 1039 "/usr/include/unistd.h" 3 4
1748 extern int ftruncate64 (int __fd, __off64_t __length) throw () __attribute__ ((__warn_unused_result__));
1749 # 1050 "/usr/include/unistd.h" 3 4
1750 extern int brk (void *__addr) throw () __attribute__ ((__warn_unused_result__));
1751
1752
1753
1754
1755
1756 extern void *sbrk (intptr_t __delta) throw ();
1757 # 1071 "/usr/include/unistd.h" 3 4
1758 extern long int syscall (long int __sysno, ...) throw ();
1759 # 1094 "/usr/include/unistd.h" 3 4
1760 extern int lockf (int __fd, int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__));
1761 # 1104 "/usr/include/unistd.h" 3 4
1762 extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__));
1763 # 1125 "/usr/include/unistd.h" 3 4
1764 extern int fdatasync (int __fildes);
1765
1766
1767
1768
1769
1770
1771
1772 extern char *crypt (__const char *__key, __const char *__salt)
1773 throw () __attribute__ ((__nonnull__ (1, 2)));
1774
1775
1776
1777 extern void encrypt (char *__block, int __edflag) throw () __attribute__ ((__nonnull__ (1)));
1778
1779
1780
1781
1782
1783
1784 extern void swab (__const void *__restrict __from, void *__restrict __to,
1785 ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
1786
1787
1788
1789
1790
1791
1792
1793 extern char *ctermid (char *__s) throw ();
1794
1795
1796
1797
1798
1799 # 1 "/usr/include/bits/unistd.h" 1 3 4
1800 # 24 "/usr/include/bits/unistd.h" 3 4
1801 extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
1802 size_t __buflen) __attribute__ ((__warn_unused_result__));
1803 extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read")
1804 __attribute__ ((__warn_unused_result__));
1805 extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk")
1806
1807
1808 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer")))
1809 ;
1810
1811 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
1812 read (int __fd, void *__buf, size_t __nbytes)
1813 {
1814 if (__builtin_object_size (__buf, 0) != (size_t) -1)
1815 {
1816 if (!__builtin_constant_p (__nbytes))
1817 return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
1818
1819 if (__nbytes > __builtin_object_size (__buf, 0))
1820 return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
1821 }
1822 return __read_alias (__fd, __buf, __nbytes);
1823 }
1824
1825
1826 extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
1827 __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
1828 extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
1829 __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
1830 extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread")
1831
1832 __attribute__ ((__warn_unused_result__));
1833 extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64")
1834
1835 __attribute__ ((__warn_unused_result__));
1836 extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk")
1837
1838
1839 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer")))
1840 ;
1841 extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk")
1842
1843
1844
1845 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer")))
1846 ;
1847
1848
1849 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
1850 pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
1851 {
1852 if (__builtin_object_size (__buf, 0) != (size_t) -1)
1853 {
1854 if (!__builtin_constant_p (__nbytes))
1855 return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
1856
1857 if ( __nbytes > __builtin_object_size (__buf, 0))
1858 return __pread_chk_warn (__fd, __buf, __nbytes, __offset,
1859 __builtin_object_size (__buf, 0));
1860 }
1861 return __pread_alias (__fd, __buf, __nbytes, __offset);
1862 }
1863 # 105 "/usr/include/bits/unistd.h" 3 4
1864 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
1865 pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
1866 {
1867 if (__builtin_object_size (__buf, 0) != (size_t) -1)
1868 {
1869 if (!__builtin_constant_p (__nbytes))
1870 return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
1871
1872 if ( __nbytes > __builtin_object_size (__buf, 0))
1873 return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
1874 __builtin_object_size (__buf, 0));
1875 }
1876
1877 return __pread64_alias (__fd, __buf, __nbytes, __offset);
1878 }
1879
1880
1881
1882
1883 extern ssize_t __readlink_chk (__const char *__restrict __path,
1884 char *__restrict __buf, size_t __len,
1885 size_t __buflen)
1886 throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
1887 extern ssize_t __readlink_alias (__const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlink")
1888
1889
1890 __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
1891 extern ssize_t __readlink_chk_warn (__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlink_chk")
1892
1893
1894
1895 __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer")))
1896 ;
1897
1898 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t
1899 readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) throw ()
1900
1901 {
1902 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
1903 {
1904 if (!__builtin_constant_p (__len))
1905 return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
1906
1907 if ( __len > __builtin_object_size (__buf, 2 > 1))
1908 return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
1909 }
1910 return __readlink_alias (__path, __buf, __len);
1911 }
1912
1913
1914
1915 extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path,
1916 char *__restrict __buf, size_t __len,
1917 size_t __buflen)
1918 throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
1919 extern ssize_t __readlinkat_alias (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlinkat")
1920
1921
1922
1923 __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
1924 extern ssize_t __readlinkat_chk_warn (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlinkat_chk")
1925
1926
1927
1928 __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer")))
1929
1930 ;
1931
1932 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t
1933 readlinkat (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) throw ()
1934
1935 {
1936 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
1937 {
1938 if (!__builtin_constant_p (__len))
1939 return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
1940
1941 if (__len > __builtin_object_size (__buf, 2 > 1))
1942 return __readlinkat_chk_warn (__fd, __path, __buf, __len,
1943 __builtin_object_size (__buf, 2 > 1));
1944 }
1945 return __readlinkat_alias (__fd, __path, __buf, __len);
1946 }
1947
1948
1949 extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
1950 throw () __attribute__ ((__warn_unused_result__));
1951 extern char *__getcwd_alias (char *__buf, size_t __size) throw () __asm__ ("" "getcwd")
1952 __attribute__ ((__warn_unused_result__));
1953 extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) throw () __asm__ ("" "__getcwd_chk")
1954
1955
1956 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer")))
1957 ;
1958
1959 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
1960 getcwd (char *__buf, size_t __size) throw ()
1961 {
1962 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
1963 {
1964 if (!__builtin_constant_p (__size))
1965 return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1));
1966
1967 if (__size > __builtin_object_size (__buf, 2 > 1))
1968 return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1));
1969 }
1970 return __getcwd_alias (__buf, __size);
1971 }
1972
1973
1974 extern char *__getwd_chk (char *__buf, size_t buflen)
1975 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1976 extern char *__getwd_warn (char *__buf) throw () __asm__ ("" "getwd")
1977 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size")))
1978 ;
1979
1980 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char *
1981 getwd (char *__buf) throw ()
1982 {
1983 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
1984 return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1));
1985 return __getwd_warn (__buf);
1986 }
1987
1988
1989 extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
1990 size_t __buflen) throw ();
1991 extern size_t __confstr_alias (int __name, char *__buf, size_t __len) throw () __asm__ ("" "confstr")
1992 ;
1993 extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__confstr_chk")
1994
1995
1996 __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer")))
1997 ;
1998
1999 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
2000 confstr (int __name, char *__buf, size_t __len) throw ()
2001 {
2002 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
2003 {
2004 if (!__builtin_constant_p (__len))
2005 return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
2006
2007 if (__builtin_object_size (__buf, 2 > 1) < __len)
2008 return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
2009 }
2010 return __confstr_alias (__name, __buf, __len);
2011 }
2012
2013
2014 extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
2015 throw () __attribute__ ((__warn_unused_result__));
2016 extern int __getgroups_alias (int __size, __gid_t __list[]) throw () __asm__ ("" "getgroups")
2017 __attribute__ ((__warn_unused_result__));
2018 extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) throw () __asm__ ("" "__getgroups_chk")
2019
2020
2021 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer")))
2022 ;
2023
2024 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
2025 getgroups (int __size, __gid_t __list[]) throw ()
2026 {
2027 if (__builtin_object_size (__list, 2 > 1) != (size_t) -1)
2028 {
2029 if (!__builtin_constant_p (__size) || __size < 0)
2030 return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1));
2031
2032 if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1))
2033 return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1));
2034 }
2035 return __getgroups_alias (__size, __list);
2036 }
2037
2038
2039 extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
2040 size_t __nreal) throw () __attribute__ ((__nonnull__ (2)));
2041 extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ttyname_r")
2042
2043 __attribute__ ((__nonnull__ (2)));
2044 extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ttyname_r_chk")
2045
2046
2047 __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer")))
2048 ;
2049
2050 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
2051 ttyname_r (int __fd, char *__buf, size_t __buflen) throw ()
2052 {
2053 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
2054 {
2055 if (!__builtin_constant_p (__buflen))
2056 return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2057
2058 if (__buflen > __builtin_object_size (__buf, 2 > 1))
2059 return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2060 }
2061 return __ttyname_r_alias (__fd, __buf, __buflen);
2062 }
2063
2064
2065
2066 extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
2067 __attribute__ ((__nonnull__ (1)));
2068 extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r")
2069 __attribute__ ((__nonnull__ (1)));
2070 extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk")
2071
2072
2073 __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer")))
2074 ;
2075
2076 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
2077 getlogin_r (char *__buf, size_t __buflen)
2078 {
2079 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
2080 {
2081 if (!__builtin_constant_p (__buflen))
2082 return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2083
2084 if (__buflen > __builtin_object_size (__buf, 2 > 1))
2085 return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2086 }
2087 return __getlogin_r_alias (__buf, __buflen);
2088 }
2089
2090
2091
2092
2093 extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
2094 throw () __attribute__ ((__nonnull__ (1)));
2095 extern int __gethostname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "gethostname")
2096 __attribute__ ((__nonnull__ (1)));
2097 extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__gethostname_chk")
2098
2099
2100 __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer")))
2101 ;
2102
2103 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
2104 gethostname (char *__buf, size_t __buflen) throw ()
2105 {
2106 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
2107 {
2108 if (!__builtin_constant_p (__buflen))
2109 return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2110
2111 if (__buflen > __builtin_object_size (__buf, 2 > 1))
2112 return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2113 }
2114 return __gethostname_alias (__buf, __buflen);
2115 }
2116
2117
2118
2119
2120 extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
2121 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2122 extern int __getdomainname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "getdomainname")
2123
2124 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2125 extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__getdomainname_chk")
2126
2127
2128 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer")))
2129
2130 ;
2131
2132 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
2133 getdomainname (char *__buf, size_t __buflen) throw ()
2134 {
2135 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
2136 {
2137 if (!__builtin_constant_p (__buflen))
2138 return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2139
2140 if (__buflen > __builtin_object_size (__buf, 2 > 1))
2141 return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
2142 }
2143 return __getdomainname_alias (__buf, __buflen);
2144 }
2145 # 1161 "/usr/include/unistd.h" 2 3 4
2146
2147
2148 }
2149 # 77 "../boost/config/stdlib/libstdcpp3.hpp" 2
2150 # 45 "../boost/config.hpp" 2
2151
2152
2153
2154
2155 # 1 "../boost/config/select_platform_config.hpp" 1
2156 # 50 "../boost/config.hpp" 2
2157
2158
2159
2160 # 1 "../boost/config/platform/linux.hpp" 1
2161 # 15 "../boost/config/platform/linux.hpp"
2162 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 1 3
2163 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
2164
2165 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
2166 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
2167 # 1 "/usr/include/stdlib.h" 1 3 4
2168 # 33 "/usr/include/stdlib.h" 3 4
2169 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
2170 # 34 "/usr/include/stdlib.h" 2 3 4
2171
2172 extern "C" {
2173
2174
2175
2176
2177
2178
2179 # 1 "/usr/include/bits/waitflags.h" 1 3 4
2180 # 43 "/usr/include/stdlib.h" 2 3 4
2181 # 1 "/usr/include/bits/waitstatus.h" 1 3 4
2182 # 65 "/usr/include/bits/waitstatus.h" 3 4
2183 # 1 "/usr/include/endian.h" 1 3 4
2184 # 37 "/usr/include/endian.h" 3 4
2185 # 1 "/usr/include/bits/endian.h" 1 3 4
2186 # 38 "/usr/include/endian.h" 2 3 4
2187 # 61 "/usr/include/endian.h" 3 4
2188 # 1 "/usr/include/bits/byteswap.h" 1 3 4
2189 # 28 "/usr/include/bits/byteswap.h" 3 4
2190 # 1 "/usr/include/bits/wordsize.h" 1 3 4
2191 # 29 "/usr/include/bits/byteswap.h" 2 3 4
2192 # 62 "/usr/include/endian.h" 2 3 4
2193 # 66 "/usr/include/bits/waitstatus.h" 2 3 4
2194
2195 union wait
2196 {
2197 int w_status;
2198 struct
2199 {
2200
2201 unsigned int __w_termsig:7;
2202 unsigned int __w_coredump:1;
2203 unsigned int __w_retcode:8;
2204 unsigned int:16;
2205
2206
2207
2208
2209
2210
2211
2212 } __wait_terminated;
2213 struct
2214 {
2215
2216 unsigned int __w_stopval:8;
2217 unsigned int __w_stopsig:8;
2218 unsigned int:16;
2219
2220
2221
2222
2223
2224
2225 } __wait_stopped;
2226 };
2227 # 44 "/usr/include/stdlib.h" 2 3 4
2228 # 96 "/usr/include/stdlib.h" 3 4
2229
2230
2231 typedef struct
2232 {
2233 int quot;
2234 int rem;
2235 } div_t;
2236
2237
2238
2239 typedef struct
2240 {
2241 long int quot;
2242 long int rem;
2243 } ldiv_t;
2244
2245
2246
2247
2248
2249
2250
2251 __extension__ typedef struct
2252 {
2253 long long int quot;
2254 long long int rem;
2255 } lldiv_t;
2256
2257
2258 # 140 "/usr/include/stdlib.h" 3 4
2259 extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__));
2260
2261
2262
2263
2264 extern double atof (__const char *__nptr)
2265 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2266
2267 extern int atoi (__const char *__nptr)
2268 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2269
2270 extern long int atol (__const char *__nptr)
2271 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2272
2273
2274
2275
2276
2277 __extension__ extern long long int atoll (__const char *__nptr)
2278 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2279
2280
2281
2282
2283
2284 extern double strtod (__const char *__restrict __nptr,
2285 char **__restrict __endptr)
2286 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2287
2288
2289
2290
2291
2292 extern float strtof (__const char *__restrict __nptr,
2293 char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2294
2295 extern long double strtold (__const char *__restrict __nptr,
2296 char **__restrict __endptr)
2297 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2298
2299
2300
2301
2302
2303 extern long int strtol (__const char *__restrict __nptr,
2304 char **__restrict __endptr, int __base)
2305 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2306
2307 extern unsigned long int strtoul (__const char *__restrict __nptr,
2308 char **__restrict __endptr, int __base)
2309 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2310
2311
2312
2313
2314 __extension__
2315 extern long long int strtoq (__const char *__restrict __nptr,
2316 char **__restrict __endptr, int __base)
2317 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2318
2319 __extension__
2320 extern unsigned long long int strtouq (__const char *__restrict __nptr,
2321 char **__restrict __endptr, int __base)
2322 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2323
2324
2325
2326
2327
2328 __extension__
2329 extern long long int strtoll (__const char *__restrict __nptr,
2330 char **__restrict __endptr, int __base)
2331 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2332
2333 __extension__
2334 extern unsigned long long int strtoull (__const char *__restrict __nptr,
2335 char **__restrict __endptr, int __base)
2336 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2337
2338 # 236 "/usr/include/stdlib.h" 3 4
2339 # 1 "/usr/include/xlocale.h" 1 3 4
2340 # 28 "/usr/include/xlocale.h" 3 4
2341 typedef struct __locale_struct
2342 {
2343
2344 struct __locale_data *__locales[13];
2345
2346
2347 const unsigned short int *__ctype_b;
2348 const int *__ctype_tolower;
2349 const int *__ctype_toupper;
2350
2351
2352 const char *__names[13];
2353 } *__locale_t;
2354
2355
2356 typedef __locale_t locale_t;
2357 # 237 "/usr/include/stdlib.h" 2 3 4
2358
2359
2360
2361 extern long int strtol_l (__const char *__restrict __nptr,
2362 char **__restrict __endptr, int __base,
2363 __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
2364
2365 extern unsigned long int strtoul_l (__const char *__restrict __nptr,
2366 char **__restrict __endptr,
2367 int __base, __locale_t __loc)
2368 throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
2369
2370 __extension__
2371 extern long long int strtoll_l (__const char *__restrict __nptr,
2372 char **__restrict __endptr, int __base,
2373 __locale_t __loc)
2374 throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
2375
2376 __extension__
2377 extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
2378 char **__restrict __endptr,
2379 int __base, __locale_t __loc)
2380 throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
2381
2382 extern double strtod_l (__const char *__restrict __nptr,
2383 char **__restrict __endptr, __locale_t __loc)
2384 throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
2385
2386 extern float strtof_l (__const char *__restrict __nptr,
2387 char **__restrict __endptr, __locale_t __loc)
2388 throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
2389
2390 extern long double strtold_l (__const char *__restrict __nptr,
2391 char **__restrict __endptr,
2392 __locale_t __loc)
2393 throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
2394
2395
2396
2397
2398
2399 extern __inline __attribute__ ((__gnu_inline__)) double
2400 atof (__const char *__nptr) throw ()
2401 {
2402 return strtod (__nptr, (char **) __null);
2403 }
2404 extern __inline __attribute__ ((__gnu_inline__)) int
2405 atoi (__const char *__nptr) throw ()
2406 {
2407 return (int) strtol (__nptr, (char **) __null, 10);
2408 }
2409 extern __inline __attribute__ ((__gnu_inline__)) long int
2410 atol (__const char *__nptr) throw ()
2411 {
2412 return strtol (__nptr, (char **) __null, 10);
2413 }
2414
2415
2416
2417
2418 __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
2419 atoll (__const char *__nptr) throw ()
2420 {
2421 return strtoll (__nptr, (char **) __null, 10);
2422 }
2423
2424 # 311 "/usr/include/stdlib.h" 3 4
2425 extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__));
2426
2427
2428 extern long int a64l (__const char *__s)
2429 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2430
2431
2432
2433
2434 # 1 "/usr/include/sys/types.h" 1 3 4
2435 # 28 "/usr/include/sys/types.h" 3 4
2436 extern "C" {
2437
2438
2439
2440
2441
2442 typedef __u_char u_char;
2443 typedef __u_short u_short;
2444 typedef __u_int u_int;
2445 typedef __u_long u_long;
2446 typedef __quad_t quad_t;
2447 typedef __u_quad_t u_quad_t;
2448 typedef __fsid_t fsid_t;
2449
2450
2451
2452
2453 typedef __loff_t loff_t;
2454
2455
2456
2457 typedef __ino_t ino_t;
2458
2459
2460
2461
2462
2463
2464 typedef __ino64_t ino64_t;
2465
2466
2467
2468
2469 typedef __dev_t dev_t;
2470 # 71 "/usr/include/sys/types.h" 3 4
2471 typedef __mode_t mode_t;
2472
2473
2474
2475
2476 typedef __nlink_t nlink_t;
2477 # 105 "/usr/include/sys/types.h" 3 4
2478 typedef __id_t id_t;
2479 # 116 "/usr/include/sys/types.h" 3 4
2480 typedef __daddr_t daddr_t;
2481 typedef __caddr_t caddr_t;
2482
2483
2484
2485
2486
2487 typedef __key_t key_t;
2488 # 133 "/usr/include/sys/types.h" 3 4
2489 # 1 "/usr/include/time.h" 1 3 4
2490 # 58 "/usr/include/time.h" 3 4
2491
2492
2493 typedef __clock_t clock_t;
2494
2495
2496
2497 # 74 "/usr/include/time.h" 3 4
2498
2499
2500 typedef __time_t time_t;
2501
2502
2503
2504 # 92 "/usr/include/time.h" 3 4
2505 typedef __clockid_t clockid_t;
2506 # 104 "/usr/include/time.h" 3 4
2507 typedef __timer_t timer_t;
2508 # 134 "/usr/include/sys/types.h" 2 3 4
2509
2510
2511
2512
2513
2514
2515
2516 typedef __suseconds_t suseconds_t;
2517
2518
2519
2520
2521
2522 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
2523 # 148 "/usr/include/sys/types.h" 2 3 4
2524
2525
2526
2527 typedef unsigned long int ulong;
2528 typedef unsigned short int ushort;
2529 typedef unsigned int uint;
2530 # 195 "/usr/include/sys/types.h" 3 4
2531 typedef int int8_t __attribute__ ((__mode__ (__QI__)));
2532 typedef int int16_t __attribute__ ((__mode__ (__HI__)));
2533 typedef int int32_t __attribute__ ((__mode__ (__SI__)));
2534 typedef int int64_t __attribute__ ((__mode__ (__DI__)));
2535
2536
2537 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
2538 typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
2539 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
2540 typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
2541
2542 typedef int register_t __attribute__ ((__mode__ (__word__)));
2543 # 220 "/usr/include/sys/types.h" 3 4
2544 # 1 "/usr/include/sys/select.h" 1 3 4
2545 # 31 "/usr/include/sys/select.h" 3 4
2546 # 1 "/usr/include/bits/select.h" 1 3 4
2547 # 23 "/usr/include/bits/select.h" 3 4
2548 # 1 "/usr/include/bits/wordsize.h" 1 3 4
2549 # 24 "/usr/include/bits/select.h" 2 3 4
2550 # 32 "/usr/include/sys/select.h" 2 3 4
2551
2552
2553 # 1 "/usr/include/bits/sigset.h" 1 3 4
2554 # 24 "/usr/include/bits/sigset.h" 3 4
2555 typedef int __sig_atomic_t;
2556
2557
2558
2559
2560 typedef struct
2561 {
2562 unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
2563 } __sigset_t;
2564 # 35 "/usr/include/sys/select.h" 2 3 4
2565
2566
2567
2568 typedef __sigset_t sigset_t;
2569
2570
2571
2572
2573
2574 # 1 "/usr/include/time.h" 1 3 4
2575 # 120 "/usr/include/time.h" 3 4
2576 struct timespec
2577 {
2578 __time_t tv_sec;
2579 long int tv_nsec;
2580 };
2581 # 45 "/usr/include/sys/select.h" 2 3 4
2582
2583 # 1 "/usr/include/bits/time.h" 1 3 4
2584 # 75 "/usr/include/bits/time.h" 3 4
2585 struct timeval
2586 {
2587 __time_t tv_sec;
2588 __suseconds_t tv_usec;
2589 };
2590 # 47 "/usr/include/sys/select.h" 2 3 4
2591 # 55 "/usr/include/sys/select.h" 3 4
2592 typedef long int __fd_mask;
2593 # 67 "/usr/include/sys/select.h" 3 4
2594 typedef struct
2595 {
2596
2597
2598
2599 __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
2600
2601
2602
2603
2604
2605 } fd_set;
2606
2607
2608
2609
2610
2611
2612 typedef __fd_mask fd_mask;
2613 # 99 "/usr/include/sys/select.h" 3 4
2614 extern "C" {
2615 # 109 "/usr/include/sys/select.h" 3 4
2616 extern int select (int __nfds, fd_set *__restrict __readfds,
2617 fd_set *__restrict __writefds,
2618 fd_set *__restrict __exceptfds,
2619 struct timeval *__restrict __timeout);
2620 # 121 "/usr/include/sys/select.h" 3 4
2621 extern int pselect (int __nfds, fd_set *__restrict __readfds,
2622 fd_set *__restrict __writefds,
2623 fd_set *__restrict __exceptfds,
2624 const struct timespec *__restrict __timeout,
2625 const __sigset_t *__restrict __sigmask);
2626
2627
2628 }
2629 # 221 "/usr/include/sys/types.h" 2 3 4
2630
2631
2632 # 1 "/usr/include/sys/sysmacros.h" 1 3 4
2633 # 30 "/usr/include/sys/sysmacros.h" 3 4
2634 __extension__
2635 extern unsigned int gnu_dev_major (unsigned long long int __dev)
2636 throw ();
2637 __extension__
2638 extern unsigned int gnu_dev_minor (unsigned long long int __dev)
2639 throw ();
2640 __extension__
2641 extern unsigned long long int gnu_dev_makedev (unsigned int __major,
2642 unsigned int __minor)
2643 throw ();
2644
2645
2646 __extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
2647 gnu_dev_major (unsigned long long int __dev) throw ()
2648 {
2649 return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
2650 }
2651
2652 __extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
2653 gnu_dev_minor (unsigned long long int __dev) throw ()
2654 {
2655 return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
2656 }
2657
2658 __extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned long long int
2659 gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw ()
2660 {
2661 return ((__minor & 0xff) | ((__major & 0xfff) << 8)
2662 | (((unsigned long long int) (__minor & ~0xff)) << 12)
2663 | (((unsigned long long int) (__major & ~0xfff)) << 32));
2664 }
2665 # 224 "/usr/include/sys/types.h" 2 3 4
2666
2667
2668
2669
2670
2671 typedef __blksize_t blksize_t;
2672
2673
2674
2675
2676
2677
2678 typedef __blkcnt_t blkcnt_t;
2679
2680
2681
2682 typedef __fsblkcnt_t fsblkcnt_t;
2683
2684
2685
2686 typedef __fsfilcnt_t fsfilcnt_t;
2687 # 263 "/usr/include/sys/types.h" 3 4
2688 typedef __blkcnt64_t blkcnt64_t;
2689 typedef __fsblkcnt64_t fsblkcnt64_t;
2690 typedef __fsfilcnt64_t fsfilcnt64_t;
2691
2692
2693
2694
2695
2696 # 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
2697 # 23 "/usr/include/bits/pthreadtypes.h" 3 4
2698 # 1 "/usr/include/bits/wordsize.h" 1 3 4
2699 # 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
2700 # 50 "/usr/include/bits/pthreadtypes.h" 3 4
2701 typedef unsigned long int pthread_t;
2702
2703
2704 typedef union
2705 {
2706 char __size[56];
2707 long int __align;
2708 } pthread_attr_t;
2709
2710
2711
2712 typedef struct __pthread_internal_list
2713 {
2714 struct __pthread_internal_list *__prev;
2715 struct __pthread_internal_list *__next;
2716 } __pthread_list_t;
2717 # 76 "/usr/include/bits/pthreadtypes.h" 3 4
2718 typedef union
2719 {
2720 struct __pthread_mutex_s
2721 {
2722 int __lock;
2723 unsigned int __count;
2724 int __owner;
2725
2726 unsigned int __nusers;
2727
2728
2729
2730 int __kind;
2731
2732 int __spins;
2733 __pthread_list_t __list;
2734 # 101 "/usr/include/bits/pthreadtypes.h" 3 4
2735 } __data;
2736 char __size[40];
2737 long int __align;
2738 } pthread_mutex_t;
2739
2740 typedef union
2741 {
2742 char __size[4];
2743 int __align;
2744 } pthread_mutexattr_t;
2745
2746
2747
2748
2749 typedef union
2750 {
2751 struct
2752 {
2753 int __lock;
2754 unsigned int __futex;
2755 __extension__ unsigned long long int __total_seq;
2756 __extension__ unsigned long long int __wakeup_seq;
2757 __extension__ unsigned long long int __woken_seq;
2758 void *__mutex;
2759 unsigned int __nwaiters;
2760 unsigned int __broadcast_seq;
2761 } __data;
2762 char __size[48];
2763 __extension__ long long int __align;
2764 } pthread_cond_t;
2765
2766 typedef union
2767 {
2768 char __size[4];
2769 int __align;
2770 } pthread_condattr_t;
2771
2772
2773
2774 typedef unsigned int pthread_key_t;
2775
2776
2777
2778 typedef int pthread_once_t;
2779
2780
2781
2782
2783
2784 typedef union
2785 {
2786
2787 struct
2788 {
2789 int __lock;
2790 unsigned int __nr_readers;
2791 unsigned int __readers_wakeup;
2792 unsigned int __writer_wakeup;
2793 unsigned int __nr_readers_queued;
2794 unsigned int __nr_writers_queued;
2795 int __writer;
2796 int __shared;
2797 unsigned long int __pad1;
2798 unsigned long int __pad2;
2799
2800
2801 unsigned int __flags;
2802 } __data;
2803 # 187 "/usr/include/bits/pthreadtypes.h" 3 4
2804 char __size[56];
2805 long int __align;
2806 } pthread_rwlock_t;
2807
2808 typedef union
2809 {
2810 char __size[8];
2811 long int __align;
2812 } pthread_rwlockattr_t;
2813
2814
2815
2816
2817
2818 typedef volatile int pthread_spinlock_t;
2819
2820
2821
2822
2823 typedef union
2824 {
2825 char __size[32];
2826 long int __align;
2827 } pthread_barrier_t;
2828
2829 typedef union
2830 {
2831 char __size[4];
2832 int __align;
2833 } pthread_barrierattr_t;
2834 # 272 "/usr/include/sys/types.h" 2 3 4
2835
2836
2837 }
2838 # 321 "/usr/include/stdlib.h" 2 3 4
2839
2840
2841
2842
2843
2844
2845 extern long int random (void) throw ();
2846
2847
2848 extern void srandom (unsigned int __seed) throw ();
2849
2850
2851
2852
2853
2854 extern char *initstate (unsigned int __seed, char *__statebuf,
2855 size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
2856
2857
2858
2859 extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
2860
2861
2862
2863
2864
2865
2866
2867 struct random_data
2868 {
2869 int32_t *fptr;
2870 int32_t *rptr;
2871 int32_t *state;
2872 int rand_type;
2873 int rand_deg;
2874 int rand_sep;
2875 int32_t *end_ptr;
2876 };
2877
2878 extern int random_r (struct random_data *__restrict __buf,
2879 int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
2880
2881 extern int srandom_r (unsigned int __seed, struct random_data *__buf)
2882 throw () __attribute__ ((__nonnull__ (2)));
2883
2884 extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
2885 size_t __statelen,
2886 struct random_data *__restrict __buf)
2887 throw () __attribute__ ((__nonnull__ (2, 4)));
2888
2889 extern int setstate_r (char *__restrict __statebuf,
2890 struct random_data *__restrict __buf)
2891 throw () __attribute__ ((__nonnull__ (1, 2)));
2892
2893
2894
2895
2896
2897
2898 extern int rand (void) throw ();
2899
2900 extern void srand (unsigned int __seed) throw ();
2901
2902
2903
2904
2905 extern int rand_r (unsigned int *__seed) throw ();
2906
2907
2908
2909
2910
2911
2912
2913 extern double drand48 (void) throw ();
2914 extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
2915
2916
2917 extern long int lrand48 (void) throw ();
2918 extern long int nrand48 (unsigned short int __xsubi[3])
2919 throw () __attribute__ ((__nonnull__ (1)));
2920
2921
2922 extern long int mrand48 (void) throw ();
2923 extern long int jrand48 (unsigned short int __xsubi[3])
2924 throw () __attribute__ ((__nonnull__ (1)));
2925
2926
2927 extern void srand48 (long int __seedval) throw ();
2928 extern unsigned short int *seed48 (unsigned short int __seed16v[3])
2929 throw () __attribute__ ((__nonnull__ (1)));
2930 extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
2931
2932
2933
2934
2935
2936 struct drand48_data
2937 {
2938 unsigned short int __x[3];
2939 unsigned short int __old_x[3];
2940 unsigned short int __c;
2941 unsigned short int __init;
2942 unsigned long long int __a;
2943 };
2944
2945
2946 extern int drand48_r (struct drand48_data *__restrict __buffer,
2947 double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
2948 extern int erand48_r (unsigned short int __xsubi[3],
2949 struct drand48_data *__restrict __buffer,
2950 double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
2951
2952
2953 extern int lrand48_r (struct drand48_data *__restrict __buffer,
2954 long int *__restrict __result)
2955 throw () __attribute__ ((__nonnull__ (1, 2)));
2956 extern int nrand48_r (unsigned short int __xsubi[3],
2957 struct drand48_data *__restrict __buffer,
2958 long int *__restrict __result)
2959 throw () __attribute__ ((__nonnull__ (1, 2)));
2960
2961
2962 extern int mrand48_r (struct drand48_data *__restrict __buffer,
2963 long int *__restrict __result)
2964 throw () __attribute__ ((__nonnull__ (1, 2)));
2965 extern int jrand48_r (unsigned short int __xsubi[3],
2966 struct drand48_data *__restrict __buffer,
2967 long int *__restrict __result)
2968 throw () __attribute__ ((__nonnull__ (1, 2)));
2969
2970
2971 extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
2972 throw () __attribute__ ((__nonnull__ (2)));
2973
2974 extern int seed48_r (unsigned short int __seed16v[3],
2975 struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
2976
2977 extern int lcong48_r (unsigned short int __param[7],
2978 struct drand48_data *__buffer)
2979 throw () __attribute__ ((__nonnull__ (1, 2)));
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989 extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
2990
2991 extern void *calloc (size_t __nmemb, size_t __size)
2992 throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003 extern void *realloc (void *__ptr, size_t __size)
3004 throw () __attribute__ ((__warn_unused_result__));
3005
3006 extern void free (void *__ptr) throw ();
3007
3008
3009
3010
3011 extern void cfree (void *__ptr) throw ();
3012
3013
3014
3015 # 1 "/usr/include/alloca.h" 1 3 4
3016 # 25 "/usr/include/alloca.h" 3 4
3017 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
3018 # 26 "/usr/include/alloca.h" 2 3 4
3019
3020 extern "C" {
3021
3022
3023
3024
3025
3026 extern void *alloca (size_t __size) throw ();
3027
3028
3029
3030
3031
3032 }
3033 # 498 "/usr/include/stdlib.h" 2 3 4
3034
3035
3036
3037
3038
3039 extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
3040
3041
3042
3043
3044 extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
3045 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3046
3047
3048
3049
3050 extern void abort (void) throw () __attribute__ ((__noreturn__));
3051
3052
3053
3054 extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
3055
3056
3057
3058
3059
3060
3061 extern "C++" int at_quick_exit (void (*__func) (void))
3062 throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1)));
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072 extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
3073 throw () __attribute__ ((__nonnull__ (1)));
3074
3075
3076
3077
3078
3079
3080 extern void exit (int __status) throw () __attribute__ ((__noreturn__));
3081
3082
3083
3084
3085
3086
3087
3088 extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__));
3089
3090
3091
3092
3093
3094
3095
3096 extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
3097
3098
3099
3100
3101
3102
3103 extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3104
3105
3106
3107
3108 extern char *__secure_getenv (__const char *__name)
3109 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3110
3111
3112
3113
3114
3115 extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
3116
3117
3118
3119
3120
3121 extern int setenv (__const char *__name, __const char *__value, int __replace)
3122 throw () __attribute__ ((__nonnull__ (2)));
3123
3124
3125 extern int unsetenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
3126
3127
3128
3129
3130
3131
3132 extern int clearenv (void) throw ();
3133 # 606 "/usr/include/stdlib.h" 3 4
3134 extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3135 # 620 "/usr/include/stdlib.h" 3 4
3136 extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3137 # 630 "/usr/include/stdlib.h" 3 4
3138 extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3139 # 642 "/usr/include/stdlib.h" 3 4
3140 extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3141 # 652 "/usr/include/stdlib.h" 3 4
3142 extern int mkstemps64 (char *__template, int __suffixlen)
3143 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3144 # 663 "/usr/include/stdlib.h" 3 4
3145 extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3146 # 674 "/usr/include/stdlib.h" 3 4
3147 extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3148 # 684 "/usr/include/stdlib.h" 3 4
3149 extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3150 # 694 "/usr/include/stdlib.h" 3 4
3151 extern int mkostemps (char *__template, int __suffixlen, int __flags)
3152 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3153 # 706 "/usr/include/stdlib.h" 3 4
3154 extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
3155 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165 extern int system (__const char *__command) __attribute__ ((__warn_unused_result__));
3166
3167
3168
3169
3170
3171
3172 extern char *canonicalize_file_name (__const char *__name)
3173 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3174 # 734 "/usr/include/stdlib.h" 3 4
3175 extern char *realpath (__const char *__restrict __name,
3176 char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__));
3177
3178
3179
3180
3181
3182
3183 typedef int (*__compar_fn_t) (__const void *, __const void *);
3184
3185
3186 typedef __compar_fn_t comparison_fn_t;
3187
3188
3189
3190 typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
3191
3192
3193
3194
3195
3196 extern void *bsearch (__const void *__key, __const void *__base,
3197 size_t __nmemb, size_t __size, __compar_fn_t __compar)
3198 __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
3199
3200
3201
3202 extern void qsort (void *__base, size_t __nmemb, size_t __size,
3203 __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
3204
3205 extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
3206 __compar_d_fn_t __compar, void *__arg)
3207 __attribute__ ((__nonnull__ (1, 4)));
3208
3209
3210
3211
3212 extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
3213 extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
3214
3215
3216
3217 __extension__ extern long long int llabs (long long int __x)
3218 throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
3219
3220
3221
3222
3223
3224
3225
3226 extern div_t div (int __numer, int __denom)
3227 throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
3228 extern ldiv_t ldiv (long int __numer, long int __denom)
3229 throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
3230
3231
3232
3233
3234 __extension__ extern lldiv_t lldiv (long long int __numer,
3235 long long int __denom)
3236 throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
3237
3238 # 808 "/usr/include/stdlib.h" 3 4
3239 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
3240 int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
3241
3242
3243
3244
3245 extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
3246 int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
3247
3248
3249
3250
3251 extern char *gcvt (double __value, int __ndigit, char *__buf)
3252 throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
3253
3254
3255
3256
3257 extern char *qecvt (long double __value, int __ndigit,
3258 int *__restrict __decpt, int *__restrict __sign)
3259 throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
3260 extern char *qfcvt (long double __value, int __ndigit,
3261 int *__restrict __decpt, int *__restrict __sign)
3262 throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
3263 extern char *qgcvt (long double __value, int __ndigit, char *__buf)
3264 throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
3265
3266
3267
3268
3269 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
3270 int *__restrict __sign, char *__restrict __buf,
3271 size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
3272 extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
3273 int *__restrict __sign, char *__restrict __buf,
3274 size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
3275
3276 extern int qecvt_r (long double __value, int __ndigit,
3277 int *__restrict __decpt, int *__restrict __sign,
3278 char *__restrict __buf, size_t __len)
3279 throw () __attribute__ ((__nonnull__ (3, 4, 5)));
3280 extern int qfcvt_r (long double __value, int __ndigit,
3281 int *__restrict __decpt, int *__restrict __sign,
3282 char *__restrict __buf, size_t __len)
3283 throw () __attribute__ ((__nonnull__ (3, 4, 5)));
3284
3285
3286
3287
3288
3289
3290
3291 extern int mblen (__const char *__s, size_t __n) throw () __attribute__ ((__warn_unused_result__));
3292
3293
3294 extern int mbtowc (wchar_t *__restrict __pwc,
3295 __const char *__restrict __s, size_t __n) throw () __attribute__ ((__warn_unused_result__));
3296
3297
3298 extern int wctomb (char *__s, wchar_t __wchar) throw () __attribute__ ((__warn_unused_result__));
3299
3300
3301
3302 extern size_t mbstowcs (wchar_t *__restrict __pwcs,
3303 __const char *__restrict __s, size_t __n) throw ();
3304
3305 extern size_t wcstombs (char *__restrict __s,
3306 __const wchar_t *__restrict __pwcs, size_t __n)
3307 throw ();
3308
3309
3310
3311
3312
3313
3314
3315
3316 extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
3317 # 896 "/usr/include/stdlib.h" 3 4
3318 extern int getsubopt (char **__restrict __optionp,
3319 char *__const *__restrict __tokens,
3320 char **__restrict __valuep)
3321 throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
3322
3323
3324
3325
3326
3327 extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1)));
3328
3329
3330
3331
3332
3333
3334
3335 extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__));
3336
3337
3338
3339
3340
3341
3342
3343 extern int grantpt (int __fd) throw ();
3344
3345
3346
3347 extern int unlockpt (int __fd) throw ();
3348
3349
3350
3351
3352 extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__));
3353
3354
3355
3356
3357
3358
3359 extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
3360 throw () __attribute__ ((__nonnull__ (2)));
3361
3362
3363 extern int getpt (void);
3364
3365
3366
3367
3368
3369
3370 extern int getloadavg (double __loadavg[], int __nelem)
3371 throw () __attribute__ ((__nonnull__ (1)));
3372
3373
3374
3375
3376
3377 # 1 "/usr/include/bits/stdlib.h" 1 3 4
3378 # 24 "/usr/include/bits/stdlib.h" 3 4
3379 extern char *__realpath_chk (__const char *__restrict __name,
3380 char *__restrict __resolved,
3381 size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__));
3382 extern char *__realpath_alias (__const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath")
3383
3384 __attribute__ ((__warn_unused_result__));
3385 extern char *__realpath_chk_warn (__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk")
3386
3387
3388 __attribute__ ((__warn_unused_result__))
3389 __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer")))
3390 ;
3391
3392 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
3393 realpath (__const char *__restrict __name, char *__restrict __resolved) throw ()
3394 {
3395 if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
3396 {
3397
3398
3399
3400
3401 return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
3402 }
3403
3404 return __realpath_alias (__name, __resolved);
3405 }
3406
3407
3408 extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
3409 size_t __nreal) throw () __attribute__ ((__nonnull__ (2)));
3410 extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r")
3411
3412 __attribute__ ((__nonnull__ (2)));
3413 extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk")
3414
3415
3416 __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")))
3417 ;
3418
3419 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
3420 ptsname_r (int __fd, char *__buf, size_t __buflen) throw ()
3421 {
3422 if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
3423 {
3424 if (!__builtin_constant_p (__buflen))
3425 return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
3426 if (__buflen > __builtin_object_size (__buf, 2 > 1))
3427 return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
3428 }
3429 return __ptsname_r_alias (__fd, __buf, __buflen);
3430 }
3431
3432
3433 extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
3434 throw () __attribute__ ((__warn_unused_result__));
3435 extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb")
3436 __attribute__ ((__warn_unused_result__));
3437
3438 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) int
3439 wctomb (char *__s, wchar_t __wchar) throw ()
3440 {
3441
3442
3443
3444
3445
3446
3447
3448 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
3449 return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
3450 return __wctomb_alias (__s, __wchar);
3451 }
3452
3453
3454 extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
3455 __const char *__restrict __src,
3456 size_t __len, size_t __dstlen) throw ();
3457 extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs")
3458
3459
3460 ;
3461 extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk")
3462
3463
3464
3465 __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
3466 ;
3467
3468 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
3469 mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) throw ()
3470
3471 {
3472 if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
3473 {
3474 if (!__builtin_constant_p (__len))
3475 return __mbstowcs_chk (__dst, __src, __len,
3476 __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
3477
3478 if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
3479 return __mbstowcs_chk_warn (__dst, __src, __len,
3480 __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
3481 }
3482 return __mbstowcs_alias (__dst, __src, __len);
3483 }
3484
3485
3486 extern size_t __wcstombs_chk (char *__restrict __dst,
3487 __const wchar_t *__restrict __src,
3488 size_t __len, size_t __dstlen) throw ();
3489 extern size_t __wcstombs_alias (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs")
3490
3491
3492 ;
3493 extern size_t __wcstombs_chk_warn (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk")
3494
3495
3496
3497 __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
3498
3499 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
3500 wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) throw ()
3501
3502 {
3503 if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
3504 {
3505 if (!__builtin_constant_p (__len))
3506 return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
3507 if (__len > __builtin_object_size (__dst, 2 > 1))
3508 return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
3509 }
3510 return __wcstombs_alias (__dst, __src, __len);
3511 }
3512 # 956 "/usr/include/stdlib.h" 2 3 4
3513 # 964 "/usr/include/stdlib.h" 3 4
3514 }
3515 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 2 3
3516 # 98 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
3517 namespace std __attribute__ ((__visibility__ ("default")))
3518 {
3519
3520
3521 using ::div_t;
3522 using ::ldiv_t;
3523
3524 using ::abort;
3525 using ::abs;
3526 using ::atexit;
3527 using ::atof;
3528 using ::atoi;
3529 using ::atol;
3530 using ::bsearch;
3531 using ::calloc;
3532 using ::div;
3533 using ::exit;
3534 using ::free;
3535 using ::getenv;
3536 using ::labs;
3537 using ::ldiv;
3538 using ::malloc;
3539
3540 using ::mblen;
3541 using ::mbstowcs;
3542 using ::mbtowc;
3543
3544 using ::qsort;
3545 using ::rand;
3546 using ::realloc;
3547 using ::srand;
3548 using ::strtod;
3549 using ::strtol;
3550 using ::strtoul;
3551 using ::system;
3552
3553 using ::wcstombs;
3554 using ::wctomb;
3555
3556
3557 inline long
3558 abs(long __i) { return labs(__i); }
3559
3560 inline ldiv_t
3561 div(long __i, long __j) { return ldiv(__i, __j); }
3562
3563
3564 }
3565 # 158 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
3566 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
3567 {
3568
3569
3570
3571 using ::lldiv_t;
3572
3573
3574
3575
3576
3577 using ::_Exit;
3578
3579
3580 inline long long
3581 abs(long long __x) { return __x >= 0 ? __x : -__x; }
3582
3583
3584 using ::llabs;
3585
3586 inline lldiv_t
3587 div(long long __n, long long __d)
3588 { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
3589
3590 using ::lldiv;
3591 # 193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
3592 using ::atoll;
3593 using ::strtoll;
3594 using ::strtoull;
3595
3596 using ::strtof;
3597 using ::strtold;
3598
3599
3600 }
3601
3602 namespace std
3603 {
3604
3605 using ::__gnu_cxx::lldiv_t;
3606
3607 using ::__gnu_cxx::_Exit;
3608 using ::__gnu_cxx::abs;
3609
3610 using ::__gnu_cxx::llabs;
3611 using ::__gnu_cxx::div;
3612 using ::__gnu_cxx::lldiv;
3613
3614 using ::__gnu_cxx::atoll;
3615 using ::__gnu_cxx::strtof;
3616 using ::__gnu_cxx::strtoll;
3617 using ::__gnu_cxx::strtoull;
3618 using ::__gnu_cxx::strtold;
3619 }
3620 # 16 "../boost/config/platform/linux.hpp" 2
3621 # 74 "../boost/config/platform/linux.hpp"
3622 # 1 "../boost/config/posix_features.hpp" 1
3623 # 75 "../boost/config/platform/linux.hpp" 2
3624 # 54 "../boost/config.hpp" 2
3625
3626
3627
3628 # 1 "../boost/config/suffix.hpp" 1
3629 # 33 "../boost/config/suffix.hpp"
3630
3631 # 34 "../boost/config/suffix.hpp" 3
3632 # 520 "../boost/config/suffix.hpp" 3
3633 namespace boost{
3634
3635 __extension__ typedef long long long_long_type;
3636 __extension__ typedef unsigned long long ulong_long_type;
3637
3638
3639
3640
3641 }
3642 # 58 "../boost/config.hpp" 2
3643 # 42 "../boost/detail/workaround.hpp" 2
3644 # 17 "../boost/smart_ptr/scoped_ptr.hpp" 2
3645
3646
3647 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 1 3
3648 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 3
3649
3650 # 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 3
3651 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 3
3652 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 1 3
3653 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
3654 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/functexcept.h" 1 3
3655 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/functexcept.h" 3
3656 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/exception_defines.h" 1 3
3657 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/functexcept.h" 2 3
3658
3659 namespace std __attribute__ ((__visibility__ ("default")))
3660 {
3661
3662
3663
3664 void
3665 __throw_bad_exception(void) __attribute__((__noreturn__));
3666
3667
3668 void
3669 __throw_bad_alloc(void) __attribute__((__noreturn__));
3670
3671
3672 void
3673 __throw_bad_cast(void) __attribute__((__noreturn__));
3674
3675 void
3676 __throw_bad_typeid(void) __attribute__((__noreturn__));
3677
3678
3679 void
3680 __throw_logic_error(const char*) __attribute__((__noreturn__));
3681
3682 void
3683 __throw_domain_error(const char*) __attribute__((__noreturn__));
3684
3685 void
3686 __throw_invalid_argument(const char*) __attribute__((__noreturn__));
3687
3688 void
3689 __throw_length_error(const char*) __attribute__((__noreturn__));
3690
3691 void
3692 __throw_out_of_range(const char*) __attribute__((__noreturn__));
3693
3694 void
3695 __throw_runtime_error(const char*) __attribute__((__noreturn__));
3696
3697 void
3698 __throw_range_error(const char*) __attribute__((__noreturn__));
3699
3700 void
3701 __throw_overflow_error(const char*) __attribute__((__noreturn__));
3702
3703 void
3704 __throw_underflow_error(const char*) __attribute__((__noreturn__));
3705
3706
3707 void
3708 __throw_ios_failure(const char*) __attribute__((__noreturn__));
3709
3710 void
3711 __throw_system_error(int) __attribute__((__noreturn__));
3712
3713 void
3714 __throw_future_error(int) __attribute__((__noreturn__));
3715
3716
3717 void
3718 __throw_bad_function_call() __attribute__((__noreturn__));
3719
3720
3721 }
3722 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
3723 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cpp_type_traits.h" 1 3
3724 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cpp_type_traits.h" 3
3725
3726 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cpp_type_traits.h" 3
3727 # 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cpp_type_traits.h" 3
3728 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
3729 {
3730
3731
3732 template<typename _Iterator, typename _Container>
3733 class __normal_iterator;
3734
3735
3736 }
3737
3738 namespace std __attribute__ ((__visibility__ ("default")))
3739 {
3740
3741
3742 struct __true_type { };
3743 struct __false_type { };
3744
3745 template<bool>
3746 struct __truth_type
3747 { typedef __false_type __type; };
3748
3749 template<>
3750 struct __truth_type<true>
3751 { typedef __true_type __type; };
3752
3753
3754
3755 template<class _Sp, class _Tp>
3756 struct __traitor
3757 {
3758 enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
3759 typedef typename __truth_type<__value>::__type __type;
3760 };
3761
3762
3763 template<typename, typename>
3764 struct __are_same
3765 {
3766 enum { __value = 0 };
3767 typedef __false_type __type;
3768 };
3769
3770 template<typename _Tp>
3771 struct __are_same<_Tp, _Tp>
3772 {
3773 enum { __value = 1 };
3774 typedef __true_type __type;
3775 };
3776
3777
3778 template<typename _Tp>
3779 struct __is_void
3780 {
3781 enum { __value = 0 };
3782 typedef __false_type __type;
3783 };
3784
3785 template<>
3786 struct __is_void<void>
3787 {
3788 enum { __value = 1 };
3789 typedef __true_type __type;
3790 };
3791
3792
3793
3794
3795 template<typename _Tp>
3796 struct __is_integer
3797 {
3798 enum { __value = 0 };
3799 typedef __false_type __type;
3800 };
3801
3802
3803
3804
3805 template<>
3806 struct __is_integer<bool>
3807 {
3808 enum { __value = 1 };
3809 typedef __true_type __type;
3810 };
3811
3812 template<>
3813 struct __is_integer<char>
3814 {
3815 enum { __value = 1 };
3816 typedef __true_type __type;
3817 };
3818
3819 template<>
3820 struct __is_integer<signed char>
3821 {
3822 enum { __value = 1 };
3823 typedef __true_type __type;
3824 };
3825
3826 template<>
3827 struct __is_integer<unsigned char>
3828 {
3829 enum { __value = 1 };
3830 typedef __true_type __type;
3831 };
3832
3833
3834 template<>
3835 struct __is_integer<wchar_t>
3836 {
3837 enum { __value = 1 };
3838 typedef __true_type __type;
3839 };
3840 # 199 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cpp_type_traits.h" 3
3841 template<>
3842 struct __is_integer<short>
3843 {
3844 enum { __value = 1 };
3845 typedef __true_type __type;
3846 };
3847
3848 template<>
3849 struct __is_integer<unsigned short>
3850 {
3851 enum { __value = 1 };
3852 typedef __true_type __type;
3853 };
3854
3855 template<>
3856 struct __is_integer<int>
3857 {
3858 enum { __value = 1 };
3859 typedef __true_type __type;
3860 };
3861
3862 template<>
3863 struct __is_integer<unsigned int>
3864 {
3865 enum { __value = 1 };
3866 typedef __true_type __type;
3867 };
3868
3869 template<>
3870 struct __is_integer<long>
3871 {
3872 enum { __value = 1 };
3873 typedef __true_type __type;
3874 };
3875
3876 template<>
3877 struct __is_integer<unsigned long>
3878 {
3879 enum { __value = 1 };
3880 typedef __true_type __type;
3881 };
3882
3883 template<>
3884 struct __is_integer<long long>
3885 {
3886 enum { __value = 1 };
3887 typedef __true_type __type;
3888 };
3889
3890 template<>
3891 struct __is_integer<unsigned long long>
3892 {
3893 enum { __value = 1 };
3894 typedef __true_type __type;
3895 };
3896
3897
3898
3899
3900 template<typename _Tp>
3901 struct __is_floating
3902 {
3903 enum { __value = 0 };
3904 typedef __false_type __type;
3905 };
3906
3907
3908 template<>
3909 struct __is_floating<float>
3910 {
3911 enum { __value = 1 };
3912 typedef __true_type __type;
3913 };
3914
3915 template<>
3916 struct __is_floating<double>
3917 {
3918 enum { __value = 1 };
3919 typedef __true_type __type;
3920 };
3921
3922 template<>
3923 struct __is_floating<long double>
3924 {
3925 enum { __value = 1 };
3926 typedef __true_type __type;
3927 };
3928
3929
3930
3931
3932 template<typename _Tp>
3933 struct __is_pointer
3934 {
3935 enum { __value = 0 };
3936 typedef __false_type __type;
3937 };
3938
3939 template<typename _Tp>
3940 struct __is_pointer<_Tp*>
3941 {
3942 enum { __value = 1 };
3943 typedef __true_type __type;
3944 };
3945
3946
3947
3948
3949 template<typename _Tp>
3950 struct __is_normal_iterator
3951 {
3952 enum { __value = 0 };
3953 typedef __false_type __type;
3954 };
3955
3956 template<typename _Iterator, typename _Container>
3957 struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
3958 _Container> >
3959 {
3960 enum { __value = 1 };
3961 typedef __true_type __type;
3962 };
3963
3964
3965
3966
3967 template<typename _Tp>
3968 struct __is_arithmetic
3969 : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
3970 { };
3971
3972
3973
3974
3975 template<typename _Tp>
3976 struct __is_fundamental
3977 : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
3978 { };
3979
3980
3981
3982
3983 template<typename _Tp>
3984 struct __is_scalar
3985 : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
3986 { };
3987
3988
3989
3990
3991 template<typename _Tp>
3992 struct __is_char
3993 {
3994 enum { __value = 0 };
3995 typedef __false_type __type;
3996 };
3997
3998 template<>
3999 struct __is_char<char>
4000 {
4001 enum { __value = 1 };
4002 typedef __true_type __type;
4003 };
4004
4005
4006 template<>
4007 struct __is_char<wchar_t>
4008 {
4009 enum { __value = 1 };
4010 typedef __true_type __type;
4011 };
4012
4013
4014 template<typename _Tp>
4015 struct __is_byte
4016 {
4017 enum { __value = 0 };
4018 typedef __false_type __type;
4019 };
4020
4021 template<>
4022 struct __is_byte<char>
4023 {
4024 enum { __value = 1 };
4025 typedef __true_type __type;
4026 };
4027
4028 template<>
4029 struct __is_byte<signed char>
4030 {
4031 enum { __value = 1 };
4032 typedef __true_type __type;
4033 };
4034
4035 template<>
4036 struct __is_byte<unsigned char>
4037 {
4038 enum { __value = 1 };
4039 typedef __true_type __type;
4040 };
4041
4042
4043
4044
4045 template<typename _Tp>
4046 struct __is_move_iterator
4047 {
4048 enum { __value = 0 };
4049 typedef __false_type __type;
4050 };
4051 # 422 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cpp_type_traits.h" 3
4052
4053 }
4054 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
4055 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/type_traits.h" 1 3
4056 # 32 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/type_traits.h" 3
4057
4058 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/type_traits.h" 3
4059
4060
4061
4062
4063 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
4064 {
4065
4066
4067
4068 template<bool, typename>
4069 struct __enable_if
4070 { };
4071
4072 template<typename _Tp>
4073 struct __enable_if<true, _Tp>
4074 { typedef _Tp __type; };
4075
4076
4077
4078 template<bool _Cond, typename _Iftrue, typename _Iffalse>
4079 struct __conditional_type
4080 { typedef _Iftrue __type; };
4081
4082 template<typename _Iftrue, typename _Iffalse>
4083 struct __conditional_type<false, _Iftrue, _Iffalse>
4084 { typedef _Iffalse __type; };
4085
4086
4087
4088 template<typename _Tp>
4089 struct __add_unsigned
4090 {
4091 private:
4092 typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
4093
4094 public:
4095 typedef typename __if_type::__type __type;
4096 };
4097
4098 template<>
4099 struct __add_unsigned<char>
4100 { typedef unsigned char __type; };
4101
4102 template<>
4103 struct __add_unsigned<signed char>
4104 { typedef unsigned char __type; };
4105
4106 template<>
4107 struct __add_unsigned<short>
4108 { typedef unsigned short __type; };
4109
4110 template<>
4111 struct __add_unsigned<int>
4112 { typedef unsigned int __type; };
4113
4114 template<>
4115 struct __add_unsigned<long>
4116 { typedef unsigned long __type; };
4117
4118 template<>
4119 struct __add_unsigned<long long>
4120 { typedef unsigned long long __type; };
4121
4122
4123 template<>
4124 struct __add_unsigned<bool>;
4125
4126 template<>
4127 struct __add_unsigned<wchar_t>;
4128
4129
4130
4131 template<typename _Tp>
4132 struct __remove_unsigned
4133 {
4134 private:
4135 typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
4136
4137 public:
4138 typedef typename __if_type::__type __type;
4139 };
4140
4141 template<>
4142 struct __remove_unsigned<char>
4143 { typedef signed char __type; };
4144
4145 template<>
4146 struct __remove_unsigned<unsigned char>
4147 { typedef signed char __type; };
4148
4149 template<>
4150 struct __remove_unsigned<unsigned short>
4151 { typedef short __type; };
4152
4153 template<>
4154 struct __remove_unsigned<unsigned int>
4155 { typedef int __type; };
4156
4157 template<>
4158 struct __remove_unsigned<unsigned long>
4159 { typedef long __type; };
4160
4161 template<>
4162 struct __remove_unsigned<unsigned long long>
4163 { typedef long long __type; };
4164
4165
4166 template<>
4167 struct __remove_unsigned<bool>;
4168
4169 template<>
4170 struct __remove_unsigned<wchar_t>;
4171
4172
4173
4174 template<typename _Type>
4175 inline bool
4176 __is_null_pointer(_Type* __ptr)
4177 { return __ptr == 0; }
4178
4179 template<typename _Type>
4180 inline bool
4181 __is_null_pointer(_Type)
4182 { return false; }
4183
4184
4185
4186 template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
4187 struct __promote
4188 { typedef double __type; };
4189
4190 template<typename _Tp>
4191 struct __promote<_Tp, false>
4192 { typedef _Tp __type; };
4193
4194 template<typename _Tp, typename _Up>
4195 struct __promote_2
4196 {
4197 private:
4198 typedef typename __promote<_Tp>::__type __type1;
4199 typedef typename __promote<_Up>::__type __type2;
4200
4201 public:
4202 typedef __typeof__(__type1() + __type2()) __type;
4203 };
4204
4205 template<typename _Tp, typename _Up, typename _Vp>
4206 struct __promote_3
4207 {
4208 private:
4209 typedef typename __promote<_Tp>::__type __type1;
4210 typedef typename __promote<_Up>::__type __type2;
4211 typedef typename __promote<_Vp>::__type __type3;
4212
4213 public:
4214 typedef __typeof__(__type1() + __type2() + __type3()) __type;
4215 };
4216
4217 template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
4218 struct __promote_4
4219 {
4220 private:
4221 typedef typename __promote<_Tp>::__type __type1;
4222 typedef typename __promote<_Up>::__type __type2;
4223 typedef typename __promote<_Vp>::__type __type3;
4224 typedef typename __promote<_Wp>::__type __type4;
4225
4226 public:
4227 typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
4228 };
4229
4230
4231 }
4232 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
4233 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/numeric_traits.h" 1 3
4234 # 32 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/numeric_traits.h" 3
4235
4236 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/numeric_traits.h" 3
4237
4238
4239
4240
4241 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
4242 {
4243
4244 # 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/numeric_traits.h" 3
4245 template<typename _Value>
4246 struct __numeric_traits_integer
4247 {
4248
4249 static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0);
4250 static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0);
4251
4252
4253
4254 static const bool __is_signed = ((_Value)(-1) < 0);
4255 static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0));
4256 };
4257
4258 template<typename _Value>
4259 const _Value __numeric_traits_integer<_Value>::__min;
4260
4261 template<typename _Value>
4262 const _Value __numeric_traits_integer<_Value>::__max;
4263
4264 template<typename _Value>
4265 const bool __numeric_traits_integer<_Value>::__is_signed;
4266
4267 template<typename _Value>
4268 const int __numeric_traits_integer<_Value>::__digits;
4269 # 99 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/numeric_traits.h" 3
4270 template<typename _Value>
4271 struct __numeric_traits_floating
4272 {
4273
4274 static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 64) * 643L / 2136);
4275
4276
4277 static const bool __is_signed = true;
4278 static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 18);
4279 static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932);
4280 };
4281
4282 template<typename _Value>
4283 const int __numeric_traits_floating<_Value>::__max_digits10;
4284
4285 template<typename _Value>
4286 const bool __numeric_traits_floating<_Value>::__is_signed;
4287
4288 template<typename _Value>
4289 const int __numeric_traits_floating<_Value>::__digits10;
4290
4291 template<typename _Value>
4292 const int __numeric_traits_floating<_Value>::__max_exponent10;
4293
4294 template<typename _Value>
4295 struct __numeric_traits
4296 : public __conditional_type<std::__is_integer<_Value>::__value,
4297 __numeric_traits_integer<_Value>,
4298 __numeric_traits_floating<_Value> >::__type
4299 { };
4300
4301
4302 }
4303 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
4304
4305 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_types.h" 1 3
4306 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
4307
4308 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
4309
4310
4311
4312
4313
4314
4315
4316 namespace std __attribute__ ((__visibility__ ("default")))
4317 {
4318
4319 # 90 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
4320 struct input_iterator_tag { };
4321
4322
4323 struct output_iterator_tag { };
4324
4325
4326 struct forward_iterator_tag : public input_iterator_tag { };
4327
4328
4329
4330 struct bidirectional_iterator_tag : public forward_iterator_tag { };
4331
4332
4333
4334 struct random_access_iterator_tag : public bidirectional_iterator_tag { };
4335 # 117 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
4336 template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
4337 typename _Pointer = _Tp*, typename _Reference = _Tp&>
4338 struct iterator
4339 {
4340
4341 typedef _Category iterator_category;
4342
4343 typedef _Tp value_type;
4344
4345 typedef _Distance difference_type;
4346
4347 typedef _Pointer pointer;
4348
4349 typedef _Reference reference;
4350 };
4351 # 163 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
4352 template<typename _Iterator>
4353 struct iterator_traits
4354 {
4355 typedef typename _Iterator::iterator_category iterator_category;
4356 typedef typename _Iterator::value_type value_type;
4357 typedef typename _Iterator::difference_type difference_type;
4358 typedef typename _Iterator::pointer pointer;
4359 typedef typename _Iterator::reference reference;
4360 };
4361
4362
4363
4364 template<typename _Tp>
4365 struct iterator_traits<_Tp*>
4366 {
4367 typedef random_access_iterator_tag iterator_category;
4368 typedef _Tp value_type;
4369 typedef ptrdiff_t difference_type;
4370 typedef _Tp* pointer;
4371 typedef _Tp& reference;
4372 };
4373
4374
4375 template<typename _Tp>
4376 struct iterator_traits<const _Tp*>
4377 {
4378 typedef random_access_iterator_tag iterator_category;
4379 typedef _Tp value_type;
4380 typedef ptrdiff_t difference_type;
4381 typedef const _Tp* pointer;
4382 typedef const _Tp& reference;
4383 };
4384
4385
4386
4387
4388
4389 template<typename _Iter>
4390 inline typename iterator_traits<_Iter>::iterator_category
4391 __iterator_category(const _Iter&)
4392 { return typename iterator_traits<_Iter>::iterator_category(); }
4393
4394
4395
4396
4397
4398 template<typename _Iterator, bool _HasBase>
4399 struct _Iter_base
4400 {
4401 typedef _Iterator iterator_type;
4402 static iterator_type _S_base(_Iterator __it)
4403 { return __it; }
4404 };
4405
4406 template<typename _Iterator>
4407 struct _Iter_base<_Iterator, true>
4408 {
4409 typedef typename _Iterator::iterator_type iterator_type;
4410 static iterator_type _S_base(_Iterator __it)
4411 { return __it.base(); }
4412 };
4413
4414
4415 }
4416 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
4417 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 1 3
4418 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
4419
4420 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
4421
4422
4423
4424 namespace std __attribute__ ((__visibility__ ("default")))
4425 {
4426
4427
4428 template<typename _InputIterator>
4429 inline typename iterator_traits<_InputIterator>::difference_type
4430 __distance(_InputIterator __first, _InputIterator __last,
4431 input_iterator_tag)
4432 {
4433
4434
4435
4436 typename iterator_traits<_InputIterator>::difference_type __n = 0;
4437 while (__first != __last)
4438 {
4439 ++__first;
4440 ++__n;
4441 }
4442 return __n;
4443 }
4444
4445 template<typename _RandomAccessIterator>
4446 inline typename iterator_traits<_RandomAccessIterator>::difference_type
4447 __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
4448 random_access_iterator_tag)
4449 {
4450
4451
4452
4453 return __last - __first;
4454 }
4455 # 111 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
4456 template<typename _InputIterator>
4457 inline typename iterator_traits<_InputIterator>::difference_type
4458 distance(_InputIterator __first, _InputIterator __last)
4459 {
4460
4461 return std::__distance(__first, __last,
4462 std::__iterator_category(__first));
4463 }
4464
4465 template<typename _InputIterator, typename _Distance>
4466 inline void
4467 __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
4468 {
4469
4470
4471 while (__n--)
4472 ++__i;
4473 }
4474
4475 template<typename _BidirectionalIterator, typename _Distance>
4476 inline void
4477 __advance(_BidirectionalIterator& __i, _Distance __n,
4478 bidirectional_iterator_tag)
4479 {
4480
4481
4482
4483 if (__n > 0)
4484 while (__n--)
4485 ++__i;
4486 else
4487 while (__n++)
4488 --__i;
4489 }
4490
4491 template<typename _RandomAccessIterator, typename _Distance>
4492 inline void
4493 __advance(_RandomAccessIterator& __i, _Distance __n,
4494 random_access_iterator_tag)
4495 {
4496
4497
4498
4499 __i += __n;
4500 }
4501 # 169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
4502 template<typename _InputIterator, typename _Distance>
4503 inline void
4504 advance(_InputIterator& __i, _Distance __n)
4505 {
4506
4507 typename iterator_traits<_InputIterator>::difference_type __d = __n;
4508 std::__advance(__i, __d, std::__iterator_category(__i));
4509 }
4510 # 200 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
4511
4512 }
4513 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
4514 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 1 3
4515 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4516 namespace std __attribute__ ((__visibility__ ("default")))
4517 {
4518
4519 # 96 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4520 template<typename _Iterator>
4521 class reverse_iterator
4522 : public iterator<typename iterator_traits<_Iterator>::iterator_category,
4523 typename iterator_traits<_Iterator>::value_type,
4524 typename iterator_traits<_Iterator>::difference_type,
4525 typename iterator_traits<_Iterator>::pointer,
4526 typename iterator_traits<_Iterator>::reference>
4527 {
4528 protected:
4529 _Iterator current;
4530
4531 typedef iterator_traits<_Iterator> __traits_type;
4532
4533 public:
4534 typedef _Iterator iterator_type;
4535 typedef typename __traits_type::difference_type difference_type;
4536 typedef typename __traits_type::pointer pointer;
4537 typedef typename __traits_type::reference reference;
4538
4539
4540
4541
4542
4543
4544
4545 reverse_iterator() : current() { }
4546
4547
4548
4549
4550 explicit
4551 reverse_iterator(iterator_type __x) : current(__x) { }
4552
4553
4554
4555
4556 reverse_iterator(const reverse_iterator& __x)
4557 : current(__x.current) { }
4558
4559
4560
4561
4562
4563 template<typename _Iter>
4564 reverse_iterator(const reverse_iterator<_Iter>& __x)
4565 : current(__x.base()) { }
4566
4567
4568
4569
4570 iterator_type
4571 base() const
4572 { return current; }
4573
4574
4575
4576
4577
4578
4579 reference
4580 operator*() const
4581 {
4582 _Iterator __tmp = current;
4583 return *--__tmp;
4584 }
4585
4586
4587
4588
4589
4590
4591 pointer
4592 operator->() const
4593 { return &(operator*()); }
4594
4595
4596
4597
4598
4599
4600 reverse_iterator&
4601 operator++()
4602 {
4603 --current;
4604 return *this;
4605 }
4606
4607
4608
4609
4610
4611
4612 reverse_iterator
4613 operator++(int)
4614 {
4615 reverse_iterator __tmp = *this;
4616 --current;
4617 return __tmp;
4618 }
4619
4620
4621
4622
4623
4624
4625 reverse_iterator&
4626 operator--()
4627 {
4628 ++current;
4629 return *this;
4630 }
4631
4632
4633
4634
4635
4636
4637 reverse_iterator
4638 operator--(int)
4639 {
4640 reverse_iterator __tmp = *this;
4641 ++current;
4642 return __tmp;
4643 }
4644
4645
4646
4647
4648
4649
4650 reverse_iterator
4651 operator+(difference_type __n) const
4652 { return reverse_iterator(current - __n); }
4653
4654
4655
4656
4657
4658
4659 reverse_iterator&
4660 operator+=(difference_type __n)
4661 {
4662 current -= __n;
4663 return *this;
4664 }
4665
4666
4667
4668
4669
4670
4671 reverse_iterator
4672 operator-(difference_type __n) const
4673 { return reverse_iterator(current + __n); }
4674
4675
4676
4677
4678
4679
4680 reverse_iterator&
4681 operator-=(difference_type __n)
4682 {
4683 current += __n;
4684 return *this;
4685 }
4686
4687
4688
4689
4690
4691
4692 reference
4693 operator[](difference_type __n) const
4694 { return *(*this + __n); }
4695 };
4696 # 283 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4697 template<typename _Iterator>
4698 inline bool
4699 operator==(const reverse_iterator<_Iterator>& __x,
4700 const reverse_iterator<_Iterator>& __y)
4701 { return __x.base() == __y.base(); }
4702
4703 template<typename _Iterator>
4704 inline bool
4705 operator<(const reverse_iterator<_Iterator>& __x,
4706 const reverse_iterator<_Iterator>& __y)
4707 { return __y.base() < __x.base(); }
4708
4709 template<typename _Iterator>
4710 inline bool
4711 operator!=(const reverse_iterator<_Iterator>& __x,
4712 const reverse_iterator<_Iterator>& __y)
4713 { return !(__x == __y); }
4714
4715 template<typename _Iterator>
4716 inline bool
4717 operator>(const reverse_iterator<_Iterator>& __x,
4718 const reverse_iterator<_Iterator>& __y)
4719 { return __y < __x; }
4720
4721 template<typename _Iterator>
4722 inline bool
4723 operator<=(const reverse_iterator<_Iterator>& __x,
4724 const reverse_iterator<_Iterator>& __y)
4725 { return !(__y < __x); }
4726
4727 template<typename _Iterator>
4728 inline bool
4729 operator>=(const reverse_iterator<_Iterator>& __x,
4730 const reverse_iterator<_Iterator>& __y)
4731 { return !(__x < __y); }
4732
4733 template<typename _Iterator>
4734 inline typename reverse_iterator<_Iterator>::difference_type
4735 operator-(const reverse_iterator<_Iterator>& __x,
4736 const reverse_iterator<_Iterator>& __y)
4737 { return __y.base() - __x.base(); }
4738
4739 template<typename _Iterator>
4740 inline reverse_iterator<_Iterator>
4741 operator+(typename reverse_iterator<_Iterator>::difference_type __n,
4742 const reverse_iterator<_Iterator>& __x)
4743 { return reverse_iterator<_Iterator>(__x.base() - __n); }
4744
4745
4746
4747 template<typename _IteratorL, typename _IteratorR>
4748 inline bool
4749 operator==(const reverse_iterator<_IteratorL>& __x,
4750 const reverse_iterator<_IteratorR>& __y)
4751 { return __x.base() == __y.base(); }
4752
4753 template<typename _IteratorL, typename _IteratorR>
4754 inline bool
4755 operator<(const reverse_iterator<_IteratorL>& __x,
4756 const reverse_iterator<_IteratorR>& __y)
4757 { return __y.base() < __x.base(); }
4758
4759 template<typename _IteratorL, typename _IteratorR>
4760 inline bool
4761 operator!=(const reverse_iterator<_IteratorL>& __x,
4762 const reverse_iterator<_IteratorR>& __y)
4763 { return !(__x == __y); }
4764
4765 template<typename _IteratorL, typename _IteratorR>
4766 inline bool
4767 operator>(const reverse_iterator<_IteratorL>& __x,
4768 const reverse_iterator<_IteratorR>& __y)
4769 { return __y < __x; }
4770
4771 template<typename _IteratorL, typename _IteratorR>
4772 inline bool
4773 operator<=(const reverse_iterator<_IteratorL>& __x,
4774 const reverse_iterator<_IteratorR>& __y)
4775 { return !(__y < __x); }
4776
4777 template<typename _IteratorL, typename _IteratorR>
4778 inline bool
4779 operator>=(const reverse_iterator<_IteratorL>& __x,
4780 const reverse_iterator<_IteratorR>& __y)
4781 { return !(__x < __y); }
4782
4783 template<typename _IteratorL, typename _IteratorR>
4784
4785
4786
4787
4788
4789
4790
4791 inline typename reverse_iterator<_IteratorL>::difference_type
4792 operator-(const reverse_iterator<_IteratorL>& __x,
4793 const reverse_iterator<_IteratorR>& __y)
4794
4795 { return __y.base() - __x.base(); }
4796 # 395 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4797 template<typename _Container>
4798 class back_insert_iterator
4799 : public iterator<output_iterator_tag, void, void, void, void>
4800 {
4801 protected:
4802 _Container* container;
4803
4804 public:
4805
4806 typedef _Container container_type;
4807
4808
4809 explicit
4810 back_insert_iterator(_Container& __x) : container(&__x) { }
4811 # 422 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4812 back_insert_iterator&
4813 operator=(typename _Container::const_reference __value)
4814 {
4815 container->push_back(__value);
4816 return *this;
4817 }
4818 # 445 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4819 back_insert_iterator&
4820 operator*()
4821 { return *this; }
4822
4823
4824 back_insert_iterator&
4825 operator++()
4826 { return *this; }
4827
4828
4829 back_insert_iterator
4830 operator++(int)
4831 { return *this; }
4832 };
4833 # 471 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4834 template<typename _Container>
4835 inline back_insert_iterator<_Container>
4836 back_inserter(_Container& __x)
4837 { return back_insert_iterator<_Container>(__x); }
4838 # 486 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4839 template<typename _Container>
4840 class front_insert_iterator
4841 : public iterator<output_iterator_tag, void, void, void, void>
4842 {
4843 protected:
4844 _Container* container;
4845
4846 public:
4847
4848 typedef _Container container_type;
4849
4850
4851 explicit front_insert_iterator(_Container& __x) : container(&__x) { }
4852 # 512 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4853 front_insert_iterator&
4854 operator=(typename _Container::const_reference __value)
4855 {
4856 container->push_front(__value);
4857 return *this;
4858 }
4859 # 535 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4860 front_insert_iterator&
4861 operator*()
4862 { return *this; }
4863
4864
4865 front_insert_iterator&
4866 operator++()
4867 { return *this; }
4868
4869
4870 front_insert_iterator
4871 operator++(int)
4872 { return *this; }
4873 };
4874 # 561 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4875 template<typename _Container>
4876 inline front_insert_iterator<_Container>
4877 front_inserter(_Container& __x)
4878 { return front_insert_iterator<_Container>(__x); }
4879 # 580 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4880 template<typename _Container>
4881 class insert_iterator
4882 : public iterator<output_iterator_tag, void, void, void, void>
4883 {
4884 protected:
4885 _Container* container;
4886 typename _Container::iterator iter;
4887
4888 public:
4889
4890 typedef _Container container_type;
4891
4892
4893
4894
4895
4896 insert_iterator(_Container& __x, typename _Container::iterator __i)
4897 : container(&__x), iter(__i) {}
4898 # 623 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4899 insert_iterator&
4900 operator=(typename _Container::const_reference __value)
4901 {
4902 iter = container->insert(iter, __value);
4903 ++iter;
4904 return *this;
4905 }
4906 # 649 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4907 insert_iterator&
4908 operator*()
4909 { return *this; }
4910
4911
4912 insert_iterator&
4913 operator++()
4914 { return *this; }
4915
4916
4917 insert_iterator&
4918 operator++(int)
4919 { return *this; }
4920 };
4921 # 675 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4922 template<typename _Container, typename _Iterator>
4923 inline insert_iterator<_Container>
4924 inserter(_Container& __x, _Iterator __i)
4925 {
4926 return insert_iterator<_Container>(__x,
4927 typename _Container::iterator(__i));
4928 }
4929
4930
4931
4932
4933 }
4934
4935 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
4936 {
4937
4938 # 699 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
4939 using std::iterator_traits;
4940 using std::iterator;
4941 template<typename _Iterator, typename _Container>
4942 class __normal_iterator
4943 {
4944 protected:
4945 _Iterator _M_current;
4946
4947 typedef iterator_traits<_Iterator> __traits_type;
4948
4949 public:
4950 typedef _Iterator iterator_type;
4951 typedef typename __traits_type::iterator_category iterator_category;
4952 typedef typename __traits_type::value_type value_type;
4953 typedef typename __traits_type::difference_type difference_type;
4954 typedef typename __traits_type::reference reference;
4955 typedef typename __traits_type::pointer pointer;
4956
4957 __normal_iterator() : _M_current(_Iterator()) { }
4958
4959 explicit
4960 __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
4961
4962
4963 template<typename _Iter>
4964 __normal_iterator(const __normal_iterator<_Iter,
4965 typename __enable_if<
4966 (std::__are_same<_Iter, typename _Container::pointer>::__value),
4967 _Container>::__type>& __i)
4968 : _M_current(__i.base()) { }
4969
4970
4971 reference
4972 operator*() const
4973 { return *_M_current; }
4974
4975 pointer
4976 operator->() const
4977 { return _M_current; }
4978
4979 __normal_iterator&
4980 operator++()
4981 {
4982 ++_M_current;
4983 return *this;
4984 }
4985
4986 __normal_iterator
4987 operator++(int)
4988 { return __normal_iterator(_M_current++); }
4989
4990
4991 __normal_iterator&
4992 operator--()
4993 {
4994 --_M_current;
4995 return *this;
4996 }
4997
4998 __normal_iterator
4999 operator--(int)
5000 { return __normal_iterator(_M_current--); }
5001
5002
5003 reference
5004 operator[](const difference_type& __n) const
5005 { return _M_current[__n]; }
5006
5007 __normal_iterator&
5008 operator+=(const difference_type& __n)
5009 { _M_current += __n; return *this; }
5010
5011 __normal_iterator
5012 operator+(const difference_type& __n) const
5013 { return __normal_iterator(_M_current + __n); }
5014
5015 __normal_iterator&
5016 operator-=(const difference_type& __n)
5017 { _M_current -= __n; return *this; }
5018
5019 __normal_iterator
5020 operator-(const difference_type& __n) const
5021 { return __normal_iterator(_M_current - __n); }
5022
5023 const _Iterator&
5024 base() const
5025 { return _M_current; }
5026 };
5027 # 797 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_iterator.h" 3
5028 template<typename _IteratorL, typename _IteratorR, typename _Container>
5029 inline bool
5030 operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
5031 const __normal_iterator<_IteratorR, _Container>& __rhs)
5032 { return __lhs.base() == __rhs.base(); }
5033
5034 template<typename _Iterator, typename _Container>
5035 inline bool
5036 operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
5037 const __normal_iterator<_Iterator, _Container>& __rhs)
5038 { return __lhs.base() == __rhs.base(); }
5039
5040 template<typename _IteratorL, typename _IteratorR, typename _Container>
5041 inline bool
5042 operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
5043 const __normal_iterator<_IteratorR, _Container>& __rhs)
5044 { return __lhs.base() != __rhs.base(); }
5045
5046 template<typename _Iterator, typename _Container>
5047 inline bool
5048 operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
5049 const __normal_iterator<_Iterator, _Container>& __rhs)
5050 { return __lhs.base() != __rhs.base(); }
5051
5052
5053 template<typename _IteratorL, typename _IteratorR, typename _Container>
5054 inline bool
5055 operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
5056 const __normal_iterator<_IteratorR, _Container>& __rhs)
5057 { return __lhs.base() < __rhs.base(); }
5058
5059 template<typename _Iterator, typename _Container>
5060 inline bool
5061 operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
5062 const __normal_iterator<_Iterator, _Container>& __rhs)
5063 { return __lhs.base() < __rhs.base(); }
5064
5065 template<typename _IteratorL, typename _IteratorR, typename _Container>
5066 inline bool
5067 operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
5068 const __normal_iterator<_IteratorR, _Container>& __rhs)
5069 { return __lhs.base() > __rhs.base(); }
5070
5071 template<typename _Iterator, typename _Container>
5072 inline bool
5073 operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
5074 const __normal_iterator<_Iterator, _Container>& __rhs)
5075 { return __lhs.base() > __rhs.base(); }
5076
5077 template<typename _IteratorL, typename _IteratorR, typename _Container>
5078 inline bool
5079 operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
5080 const __normal_iterator<_IteratorR, _Container>& __rhs)
5081 { return __lhs.base() <= __rhs.base(); }
5082
5083 template<typename _Iterator, typename _Container>
5084 inline bool
5085 operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
5086 const __normal_iterator<_Iterator, _Container>& __rhs)
5087 { return __lhs.base() <= __rhs.base(); }
5088
5089 template<typename _IteratorL, typename _IteratorR, typename _Container>
5090 inline bool
5091 operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
5092 const __normal_iterator<_IteratorR, _Container>& __rhs)
5093 { return __lhs.base() >= __rhs.base(); }
5094
5095 template<typename _Iterator, typename _Container>
5096 inline bool
5097 operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
5098 const __normal_iterator<_Iterator, _Container>& __rhs)
5099 { return __lhs.base() >= __rhs.base(); }
5100
5101
5102
5103
5104
5105 template<typename _IteratorL, typename _IteratorR, typename _Container>
5106
5107
5108
5109
5110
5111
5112
5113 inline typename __normal_iterator<_IteratorL, _Container>::difference_type
5114 operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
5115 const __normal_iterator<_IteratorR, _Container>& __rhs)
5116
5117 { return __lhs.base() - __rhs.base(); }
5118
5119 template<typename _Iterator, typename _Container>
5120 inline typename __normal_iterator<_Iterator, _Container>::difference_type
5121 operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
5122 const __normal_iterator<_Iterator, _Container>& __rhs)
5123 { return __lhs.base() - __rhs.base(); }
5124
5125 template<typename _Iterator, typename _Container>
5126 inline __normal_iterator<_Iterator, _Container>
5127 operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
5128 __n, const __normal_iterator<_Iterator, _Container>& __i)
5129 { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
5130
5131
5132 }
5133 # 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
5134
5135 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/debug/debug.h" 1 3
5136 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/debug/debug.h" 3
5137 namespace std
5138 {
5139 namespace __debug { }
5140 }
5141
5142
5143
5144
5145 namespace __gnu_debug
5146 {
5147 using namespace std::__debug;
5148 }
5149 # 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 2 3
5150
5151
5152 namespace std __attribute__ ((__visibility__ ("default")))
5153 {
5154
5155
5156
5157
5158
5159 template<bool _BoolType>
5160 struct __iter_swap
5161 {
5162 template<typename _ForwardIterator1, typename _ForwardIterator2>
5163 static void
5164 iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
5165 {
5166 typedef typename iterator_traits<_ForwardIterator1>::value_type
5167 _ValueType1;
5168 _ValueType1 __tmp = (*__a);
5169 *__a = (*__b);
5170 *__b = (__tmp);
5171 }
5172 };
5173
5174 template<>
5175 struct __iter_swap<true>
5176 {
5177 template<typename _ForwardIterator1, typename _ForwardIterator2>
5178 static void
5179 iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
5180 {
5181 swap(*__a, *__b);
5182 }
5183 };
5184 # 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5185 template<typename _ForwardIterator1, typename _ForwardIterator2>
5186 inline void
5187 iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
5188 {
5189 typedef typename iterator_traits<_ForwardIterator1>::value_type
5190 _ValueType1;
5191 typedef typename iterator_traits<_ForwardIterator2>::value_type
5192 _ValueType2;
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204 typedef typename iterator_traits<_ForwardIterator1>::reference
5205 _ReferenceType1;
5206 typedef typename iterator_traits<_ForwardIterator2>::reference
5207 _ReferenceType2;
5208 std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
5209 && __are_same<_ValueType1&, _ReferenceType1>::__value
5210 && __are_same<_ValueType2&, _ReferenceType2>::__value>::
5211 iter_swap(__a, __b);
5212 }
5213 # 157 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5214 template<typename _ForwardIterator1, typename _ForwardIterator2>
5215 _ForwardIterator2
5216 swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
5217 _ForwardIterator2 __first2)
5218 {
5219
5220
5221
5222
5223
5224 ;
5225
5226 for (; __first1 != __last1; ++__first1, ++__first2)
5227 std::iter_swap(__first1, __first2);
5228 return __first2;
5229 }
5230 # 185 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5231 template<typename _Tp>
5232 inline const _Tp&
5233 min(const _Tp& __a, const _Tp& __b)
5234 {
5235
5236
5237
5238 if (__b < __a)
5239 return __b;
5240 return __a;
5241 }
5242 # 208 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5243 template<typename _Tp>
5244 inline const _Tp&
5245 max(const _Tp& __a, const _Tp& __b)
5246 {
5247
5248
5249
5250 if (__a < __b)
5251 return __b;
5252 return __a;
5253 }
5254 # 231 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5255 template<typename _Tp, typename _Compare>
5256 inline const _Tp&
5257 min(const _Tp& __a, const _Tp& __b, _Compare __comp)
5258 {
5259
5260 if (__comp(__b, __a))
5261 return __b;
5262 return __a;
5263 }
5264 # 252 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5265 template<typename _Tp, typename _Compare>
5266 inline const _Tp&
5267 max(const _Tp& __a, const _Tp& __b, _Compare __comp)
5268 {
5269
5270 if (__comp(__a, __b))
5271 return __b;
5272 return __a;
5273 }
5274
5275
5276
5277 template<typename _Iterator>
5278 struct _Niter_base
5279 : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value>
5280 { };
5281
5282 template<typename _Iterator>
5283 inline typename _Niter_base<_Iterator>::iterator_type
5284 __niter_base(_Iterator __it)
5285 { return std::_Niter_base<_Iterator>::_S_base(__it); }
5286
5287
5288 template<typename _Iterator>
5289 struct _Miter_base
5290 : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value>
5291 { };
5292
5293 template<typename _Iterator>
5294 inline typename _Miter_base<_Iterator>::iterator_type
5295 __miter_base(_Iterator __it)
5296 { return std::_Miter_base<_Iterator>::_S_base(__it); }
5297
5298
5299
5300
5301
5302
5303
5304 template<bool, bool, typename>
5305 struct __copy_move
5306 {
5307 template<typename _II, typename _OI>
5308 static _OI
5309 __copy_m(_II __first, _II __last, _OI __result)
5310 {
5311 for (; __first != __last; ++__result, ++__first)
5312 *__result = *__first;
5313 return __result;
5314 }
5315 };
5316 # 319 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5317 template<>
5318 struct __copy_move<false, false, random_access_iterator_tag>
5319 {
5320 template<typename _II, typename _OI>
5321 static _OI
5322 __copy_m(_II __first, _II __last, _OI __result)
5323 {
5324 typedef typename iterator_traits<_II>::difference_type _Distance;
5325 for(_Distance __n = __last - __first; __n > 0; --__n)
5326 {
5327 *__result = *__first;
5328 ++__first;
5329 ++__result;
5330 }
5331 return __result;
5332 }
5333 };
5334 # 357 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5335 template<bool _IsMove>
5336 struct __copy_move<_IsMove, true, random_access_iterator_tag>
5337 {
5338 template<typename _Tp>
5339 static _Tp*
5340 __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
5341 {
5342 const ptrdiff_t _Num = __last - __first;
5343 if (_Num)
5344 __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
5345 return __result + _Num;
5346 }
5347 };
5348
5349 template<bool _IsMove, typename _II, typename _OI>
5350 inline _OI
5351 __copy_move_a(_II __first, _II __last, _OI __result)
5352 {
5353 typedef typename iterator_traits<_II>::value_type _ValueTypeI;
5354 typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
5355 typedef typename iterator_traits<_II>::iterator_category _Category;
5356 const bool __simple = (__is_trivial(_ValueTypeI)
5357 && __is_pointer<_II>::__value
5358 && __is_pointer<_OI>::__value
5359 && __are_same<_ValueTypeI, _ValueTypeO>::__value);
5360
5361 return std::__copy_move<_IsMove, __simple,
5362 _Category>::__copy_m(__first, __last, __result);
5363 }
5364
5365
5366
5367 template<typename _CharT>
5368 struct char_traits;
5369
5370 template<typename _CharT, typename _Traits>
5371 class istreambuf_iterator;
5372
5373 template<typename _CharT, typename _Traits>
5374 class ostreambuf_iterator;
5375
5376 template<bool _IsMove, typename _CharT>
5377 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
5378 ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
5379 __copy_move_a2(_CharT*, _CharT*,
5380 ostreambuf_iterator<_CharT, char_traits<_CharT> >);
5381
5382 template<bool _IsMove, typename _CharT>
5383 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
5384 ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
5385 __copy_move_a2(const _CharT*, const _CharT*,
5386 ostreambuf_iterator<_CharT, char_traits<_CharT> >);
5387
5388 template<bool _IsMove, typename _CharT>
5389 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
5390 _CharT*>::__type
5391 __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
5392 istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
5393
5394 template<bool _IsMove, typename _II, typename _OI>
5395 inline _OI
5396 __copy_move_a2(_II __first, _II __last, _OI __result)
5397 {
5398 return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first),
5399 std::__niter_base(__last),
5400 std::__niter_base(__result)));
5401 }
5402 # 442 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5403 template<typename _II, typename _OI>
5404 inline _OI
5405 copy(_II __first, _II __last, _OI __result)
5406 {
5407
5408
5409
5410
5411 ;
5412
5413 return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
5414 (std::__miter_base(__first), std::__miter_base(__last),
5415 __result));
5416 }
5417 # 494 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5418 template<bool, bool, typename>
5419 struct __copy_move_backward
5420 {
5421 template<typename _BI1, typename _BI2>
5422 static _BI2
5423 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
5424 {
5425 while (__first != __last)
5426 *--__result = *--__last;
5427 return __result;
5428 }
5429 };
5430 # 522 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5431 template<>
5432 struct __copy_move_backward<false, false, random_access_iterator_tag>
5433 {
5434 template<typename _BI1, typename _BI2>
5435 static _BI2
5436 __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
5437 {
5438 typename iterator_traits<_BI1>::difference_type __n;
5439 for (__n = __last - __first; __n > 0; --__n)
5440 *--__result = *--__last;
5441 return __result;
5442 }
5443 };
5444 # 552 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5445 template<bool _IsMove>
5446 struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
5447 {
5448 template<typename _Tp>
5449 static _Tp*
5450 __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
5451 {
5452 const ptrdiff_t _Num = __last - __first;
5453 if (_Num)
5454 __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
5455 return __result - _Num;
5456 }
5457 };
5458
5459 template<bool _IsMove, typename _BI1, typename _BI2>
5460 inline _BI2
5461 __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
5462 {
5463 typedef typename iterator_traits<_BI1>::value_type _ValueType1;
5464 typedef typename iterator_traits<_BI2>::value_type _ValueType2;
5465 typedef typename iterator_traits<_BI1>::iterator_category _Category;
5466 const bool __simple = (__is_trivial(_ValueType1)
5467 && __is_pointer<_BI1>::__value
5468 && __is_pointer<_BI2>::__value
5469 && __are_same<_ValueType1, _ValueType2>::__value);
5470
5471 return std::__copy_move_backward<_IsMove, __simple,
5472 _Category>::__copy_move_b(__first,
5473 __last,
5474 __result);
5475 }
5476
5477 template<bool _IsMove, typename _BI1, typename _BI2>
5478 inline _BI2
5479 __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
5480 {
5481 return _BI2(std::__copy_move_backward_a<_IsMove>
5482 (std::__niter_base(__first), std::__niter_base(__last),
5483 std::__niter_base(__result)));
5484 }
5485 # 611 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5486 template<typename _BI1, typename _BI2>
5487 inline _BI2
5488 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
5489 {
5490
5491
5492
5493
5494
5495
5496 ;
5497
5498 return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
5499 (std::__miter_base(__first), std::__miter_base(__last),
5500 __result));
5501 }
5502 # 669 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5503 template<typename _ForwardIterator, typename _Tp>
5504 inline typename
5505 __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
5506 __fill_a(_ForwardIterator __first, _ForwardIterator __last,
5507 const _Tp& __value)
5508 {
5509 for (; __first != __last; ++__first)
5510 *__first = __value;
5511 }
5512
5513 template<typename _ForwardIterator, typename _Tp>
5514 inline typename
5515 __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
5516 __fill_a(_ForwardIterator __first, _ForwardIterator __last,
5517 const _Tp& __value)
5518 {
5519 const _Tp __tmp = __value;
5520 for (; __first != __last; ++__first)
5521 *__first = __tmp;
5522 }
5523
5524
5525 template<typename _Tp>
5526 inline typename
5527 __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
5528 __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
5529 {
5530 const _Tp __tmp = __c;
5531 __builtin_memset(__first, static_cast<unsigned char>(__tmp),
5532 __last - __first);
5533 }
5534 # 713 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5535 template<typename _ForwardIterator, typename _Tp>
5536 inline void
5537 fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
5538 {
5539
5540
5541
5542 ;
5543
5544 std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),
5545 __value);
5546 }
5547
5548 template<typename _OutputIterator, typename _Size, typename _Tp>
5549 inline typename
5550 __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
5551 __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
5552 {
5553 for (__decltype(__n + 0) __niter = __n;
5554 __niter > 0; --__niter, ++__first)
5555 *__first = __value;
5556 return __first;
5557 }
5558
5559 template<typename _OutputIterator, typename _Size, typename _Tp>
5560 inline typename
5561 __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
5562 __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
5563 {
5564 const _Tp __tmp = __value;
5565 for (__decltype(__n + 0) __niter = __n;
5566 __niter > 0; --__niter, ++__first)
5567 *__first = __tmp;
5568 return __first;
5569 }
5570
5571 template<typename _Size, typename _Tp>
5572 inline typename
5573 __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
5574 __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
5575 {
5576 std::__fill_a(__first, __first + __n, __c);
5577 return __first + __n;
5578 }
5579 # 773 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5580 template<typename _OI, typename _Size, typename _Tp>
5581 inline _OI
5582 fill_n(_OI __first, _Size __n, const _Tp& __value)
5583 {
5584
5585
5586
5587 return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value));
5588 }
5589
5590 template<bool _BoolType>
5591 struct __equal
5592 {
5593 template<typename _II1, typename _II2>
5594 static bool
5595 equal(_II1 __first1, _II1 __last1, _II2 __first2)
5596 {
5597 for (; __first1 != __last1; ++__first1, ++__first2)
5598 if (!(*__first1 == *__first2))
5599 return false;
5600 return true;
5601 }
5602 };
5603
5604 template<>
5605 struct __equal<true>
5606 {
5607 template<typename _Tp>
5608 static bool
5609 equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
5610 {
5611 return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
5612 * (__last1 - __first1));
5613 }
5614 };
5615
5616 template<typename _II1, typename _II2>
5617 inline bool
5618 __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
5619 {
5620 typedef typename iterator_traits<_II1>::value_type _ValueType1;
5621 typedef typename iterator_traits<_II2>::value_type _ValueType2;
5622 const bool __simple = (__is_integer<_ValueType1>::__value
5623 && __is_pointer<_II1>::__value
5624 && __is_pointer<_II2>::__value
5625 && __are_same<_ValueType1, _ValueType2>::__value);
5626
5627 return std::__equal<__simple>::equal(__first1, __last1, __first2);
5628 }
5629
5630
5631 template<typename, typename>
5632 struct __lc_rai
5633 {
5634 template<typename _II1, typename _II2>
5635 static _II1
5636 __newlast1(_II1, _II1 __last1, _II2, _II2)
5637 { return __last1; }
5638
5639 template<typename _II>
5640 static bool
5641 __cnd2(_II __first, _II __last)
5642 { return __first != __last; }
5643 };
5644
5645 template<>
5646 struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
5647 {
5648 template<typename _RAI1, typename _RAI2>
5649 static _RAI1
5650 __newlast1(_RAI1 __first1, _RAI1 __last1,
5651 _RAI2 __first2, _RAI2 __last2)
5652 {
5653 const typename iterator_traits<_RAI1>::difference_type
5654 __diff1 = __last1 - __first1;
5655 const typename iterator_traits<_RAI2>::difference_type
5656 __diff2 = __last2 - __first2;
5657 return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
5658 }
5659
5660 template<typename _RAI>
5661 static bool
5662 __cnd2(_RAI, _RAI)
5663 { return true; }
5664 };
5665
5666 template<bool _BoolType>
5667 struct __lexicographical_compare
5668 {
5669 template<typename _II1, typename _II2>
5670 static bool __lc(_II1, _II1, _II2, _II2);
5671 };
5672
5673 template<bool _BoolType>
5674 template<typename _II1, typename _II2>
5675 bool
5676 __lexicographical_compare<_BoolType>::
5677 __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
5678 {
5679 typedef typename iterator_traits<_II1>::iterator_category _Category1;
5680 typedef typename iterator_traits<_II2>::iterator_category _Category2;
5681 typedef std::__lc_rai<_Category1, _Category2> __rai_type;
5682
5683 __last1 = __rai_type::__newlast1(__first1, __last1,
5684 __first2, __last2);
5685 for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
5686 ++__first1, ++__first2)
5687 {
5688 if (*__first1 < *__first2)
5689 return true;
5690 if (*__first2 < *__first1)
5691 return false;
5692 }
5693 return __first1 == __last1 && __first2 != __last2;
5694 }
5695
5696 template<>
5697 struct __lexicographical_compare<true>
5698 {
5699 template<typename _Tp, typename _Up>
5700 static bool
5701 __lc(const _Tp* __first1, const _Tp* __last1,
5702 const _Up* __first2, const _Up* __last2)
5703 {
5704 const size_t __len1 = __last1 - __first1;
5705 const size_t __len2 = __last2 - __first2;
5706 const int __result = __builtin_memcmp(__first1, __first2,
5707 std::min(__len1, __len2));
5708 return __result != 0 ? __result < 0 : __len1 < __len2;
5709 }
5710 };
5711
5712 template<typename _II1, typename _II2>
5713 inline bool
5714 __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
5715 _II2 __first2, _II2 __last2)
5716 {
5717 typedef typename iterator_traits<_II1>::value_type _ValueType1;
5718 typedef typename iterator_traits<_II2>::value_type _ValueType2;
5719 const bool __simple =
5720 (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
5721 && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
5722 && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
5723 && __is_pointer<_II1>::__value
5724 && __is_pointer<_II2>::__value);
5725
5726 return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
5727 __first2, __last2);
5728 }
5729 # 934 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5730 template<typename _ForwardIterator, typename _Tp>
5731 _ForwardIterator
5732 lower_bound(_ForwardIterator __first, _ForwardIterator __last,
5733 const _Tp& __val)
5734 {
5735 typedef typename iterator_traits<_ForwardIterator>::value_type
5736 _ValueType;
5737 typedef typename iterator_traits<_ForwardIterator>::difference_type
5738 _DistanceType;
5739
5740
5741
5742
5743 ;
5744
5745 _DistanceType __len = std::distance(__first, __last);
5746
5747 while (__len > 0)
5748 {
5749 _DistanceType __half = __len >> 1;
5750 _ForwardIterator __middle = __first;
5751 std::advance(__middle, __half);
5752 if (*__middle < __val)
5753 {
5754 __first = __middle;
5755 ++__first;
5756 __len = __len - __half - 1;
5757 }
5758 else
5759 __len = __half;
5760 }
5761 return __first;
5762 }
5763
5764
5765
5766 template<typename _Size>
5767 inline _Size
5768 __lg(_Size __n)
5769 {
5770 _Size __k;
5771 for (__k = 0; __n != 0; __n >>= 1)
5772 ++__k;
5773 return __k - 1;
5774 }
5775
5776 inline int
5777 __lg(int __n)
5778 { return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
5779
5780 inline long
5781 __lg(long __n)
5782 { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
5783
5784 inline long long
5785 __lg(long long __n)
5786 { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
5787
5788
5789
5790
5791 # 1008 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5792 template<typename _II1, typename _II2>
5793 inline bool
5794 equal(_II1 __first1, _II1 __last1, _II2 __first2)
5795 {
5796
5797
5798
5799
5800
5801
5802 ;
5803
5804 return std::__equal_aux(std::__niter_base(__first1),
5805 std::__niter_base(__last1),
5806 std::__niter_base(__first2));
5807 }
5808 # 1040 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5809 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
5810 inline bool
5811 equal(_IIter1 __first1, _IIter1 __last1,
5812 _IIter2 __first2, _BinaryPredicate __binary_pred)
5813 {
5814
5815
5816
5817 ;
5818
5819 for (; __first1 != __last1; ++__first1, ++__first2)
5820 if (!bool(__binary_pred(*__first1, *__first2)))
5821 return false;
5822 return true;
5823 }
5824 # 1071 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5825 template<typename _II1, typename _II2>
5826 inline bool
5827 lexicographical_compare(_II1 __first1, _II1 __last1,
5828 _II2 __first2, _II2 __last2)
5829 {
5830
5831 typedef typename iterator_traits<_II1>::value_type _ValueType1;
5832 typedef typename iterator_traits<_II2>::value_type _ValueType2;
5833
5834
5835
5836
5837 ;
5838 ;
5839
5840 return std::__lexicographical_compare_aux(std::__niter_base(__first1),
5841 std::__niter_base(__last1),
5842 std::__niter_base(__first2),
5843 std::__niter_base(__last2));
5844 }
5845 # 1105 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5846 template<typename _II1, typename _II2, typename _Compare>
5847 bool
5848 lexicographical_compare(_II1 __first1, _II1 __last1,
5849 _II2 __first2, _II2 __last2, _Compare __comp)
5850 {
5851 typedef typename iterator_traits<_II1>::iterator_category _Category1;
5852 typedef typename iterator_traits<_II2>::iterator_category _Category2;
5853 typedef std::__lc_rai<_Category1, _Category2> __rai_type;
5854
5855
5856
5857
5858 ;
5859 ;
5860
5861 __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
5862 for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
5863 ++__first1, ++__first2)
5864 {
5865 if (__comp(*__first1, *__first2))
5866 return true;
5867 if (__comp(*__first2, *__first1))
5868 return false;
5869 }
5870 return __first1 == __last1 && __first2 != __last2;
5871 }
5872 # 1145 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5873 template<typename _InputIterator1, typename _InputIterator2>
5874 pair<_InputIterator1, _InputIterator2>
5875 mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
5876 _InputIterator2 __first2)
5877 {
5878
5879
5880
5881
5882
5883
5884 ;
5885
5886 while (__first1 != __last1 && *__first1 == *__first2)
5887 {
5888 ++__first1;
5889 ++__first2;
5890 }
5891 return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
5892 }
5893 # 1182 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algobase.h" 3
5894 template<typename _InputIterator1, typename _InputIterator2,
5895 typename _BinaryPredicate>
5896 pair<_InputIterator1, _InputIterator2>
5897 mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
5898 _InputIterator2 __first2, _BinaryPredicate __binary_pred)
5899 {
5900
5901
5902
5903 ;
5904
5905 while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2)))
5906 {
5907 ++__first1;
5908 ++__first2;
5909 }
5910 return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
5911 }
5912
5913
5914 }
5915 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
5916 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/allocator.h" 1 3
5917 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/allocator.h" 3
5918 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++allocator.h" 1 3
5919 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++allocator.h" 3
5920 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/new_allocator.h" 1 3
5921 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/new_allocator.h" 3
5922 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/new" 1 3
5923 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/new" 3
5924
5925 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/new" 3
5926
5927
5928 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/exception" 1 3
5929 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/exception" 3
5930
5931 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/exception" 3
5932
5933 #pragma GCC visibility push(default)
5934
5935
5936
5937 extern "C++" {
5938
5939 namespace std
5940 {
5941 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/exception" 3
5942 class exception
5943 {
5944 public:
5945 exception() throw() { }
5946 virtual ~exception() throw();
5947
5948
5949
5950 virtual const char* what() const throw();
5951 };
5952
5953
5954
5955 class bad_exception : public exception
5956 {
5957 public:
5958 bad_exception() throw() { }
5959
5960
5961
5962 virtual ~bad_exception() throw();
5963
5964
5965 virtual const char* what() const throw();
5966 };
5967
5968
5969 typedef void (*terminate_handler) ();
5970
5971
5972 typedef void (*unexpected_handler) ();
5973
5974
5975 terminate_handler set_terminate(terminate_handler) throw();
5976
5977
5978
5979 void terminate() throw() __attribute__ ((__noreturn__));
5980
5981
5982 unexpected_handler set_unexpected(unexpected_handler) throw();
5983
5984
5985
5986 void unexpected() __attribute__ ((__noreturn__));
5987 # 118 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/exception" 3
5988 bool uncaught_exception() throw() __attribute__ ((__pure__));
5989
5990
5991 }
5992
5993 namespace __gnu_cxx
5994 {
5995
5996 # 143 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/exception" 3
5997 void __verbose_terminate_handler();
5998
5999
6000 }
6001
6002 }
6003
6004 #pragma GCC visibility pop
6005 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/new" 2 3
6006
6007 #pragma GCC visibility push(default)
6008
6009 extern "C++" {
6010
6011 namespace std
6012 {
6013
6014
6015
6016
6017
6018
6019 class bad_alloc : public exception
6020 {
6021 public:
6022 bad_alloc() throw() { }
6023
6024
6025
6026 virtual ~bad_alloc() throw();
6027
6028
6029 virtual const char* what() const throw();
6030 };
6031
6032 struct nothrow_t { };
6033
6034 extern const nothrow_t nothrow;
6035
6036
6037
6038 typedef void (*new_handler)();
6039
6040
6041
6042 new_handler set_new_handler(new_handler) throw();
6043 }
6044 # 93 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/new" 3
6045 void* operator new(std::size_t) throw (std::bad_alloc);
6046 void* operator new[](std::size_t) throw (std::bad_alloc);
6047 void operator delete(void*) throw();
6048 void operator delete[](void*) throw();
6049 void* operator new(std::size_t, const std::nothrow_t&) throw();
6050 void* operator new[](std::size_t, const std::nothrow_t&) throw();
6051 void operator delete(void*, const std::nothrow_t&) throw();
6052 void operator delete[](void*, const std::nothrow_t&) throw();
6053
6054
6055 inline void* operator new(std::size_t, void* __p) throw() { return __p; }
6056 inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
6057
6058
6059 inline void operator delete (void*, void*) throw() { }
6060 inline void operator delete[](void*, void*) throw() { }
6061
6062 }
6063
6064 #pragma GCC visibility pop
6065 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/new_allocator.h" 2 3
6066
6067
6068
6069 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
6070 {
6071
6072
6073 using std::size_t;
6074 using std::ptrdiff_t;
6075 # 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/new_allocator.h" 3
6076 template<typename _Tp>
6077 class new_allocator
6078 {
6079 public:
6080 typedef size_t size_type;
6081 typedef ptrdiff_t difference_type;
6082 typedef _Tp* pointer;
6083 typedef const _Tp* const_pointer;
6084 typedef _Tp& reference;
6085 typedef const _Tp& const_reference;
6086 typedef _Tp value_type;
6087
6088 template<typename _Tp1>
6089 struct rebind
6090 { typedef new_allocator<_Tp1> other; };
6091
6092 new_allocator() throw() { }
6093
6094 new_allocator(const new_allocator&) throw() { }
6095
6096 template<typename _Tp1>
6097 new_allocator(const new_allocator<_Tp1>&) throw() { }
6098
6099 ~new_allocator() throw() { }
6100
6101 pointer
6102 address(reference __x) const { return std::__addressof(__x); }
6103
6104 const_pointer
6105 address(const_reference __x) const { return std::__addressof(__x); }
6106
6107
6108
6109 pointer
6110 allocate(size_type __n, const void* = 0)
6111 {
6112 if (__n > this->max_size())
6113 std::__throw_bad_alloc();
6114
6115 return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
6116 }
6117
6118
6119 void
6120 deallocate(pointer __p, size_type)
6121 { ::operator delete(__p); }
6122
6123 size_type
6124 max_size() const throw()
6125 { return size_t(-1) / sizeof(_Tp); }
6126
6127
6128
6129 void
6130 construct(pointer __p, const _Tp& __val)
6131 { ::new((void *)__p) _Tp(__val); }
6132 # 117 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/new_allocator.h" 3
6133 void
6134 destroy(pointer __p) { __p->~_Tp(); }
6135 };
6136
6137 template<typename _Tp>
6138 inline bool
6139 operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
6140 { return true; }
6141
6142 template<typename _Tp>
6143 inline bool
6144 operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
6145 { return false; }
6146
6147
6148 }
6149 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++allocator.h" 2 3
6150 # 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/allocator.h" 2 3
6151
6152
6153
6154
6155
6156 namespace std __attribute__ ((__visibility__ ("default")))
6157 {
6158
6159 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/allocator.h" 3
6160 template<typename _Tp>
6161 class allocator;
6162
6163
6164 template<>
6165 class allocator<void>
6166 {
6167 public:
6168 typedef size_t size_type;
6169 typedef ptrdiff_t difference_type;
6170 typedef void* pointer;
6171 typedef const void* const_pointer;
6172 typedef void value_type;
6173
6174 template<typename _Tp1>
6175 struct rebind
6176 { typedef allocator<_Tp1> other; };
6177 };
6178 # 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/allocator.h" 3
6179 template<typename _Tp>
6180 class allocator: public __gnu_cxx::new_allocator<_Tp>
6181 {
6182 public:
6183 typedef size_t size_type;
6184 typedef ptrdiff_t difference_type;
6185 typedef _Tp* pointer;
6186 typedef const _Tp* const_pointer;
6187 typedef _Tp& reference;
6188 typedef const _Tp& const_reference;
6189 typedef _Tp value_type;
6190
6191 template<typename _Tp1>
6192 struct rebind
6193 { typedef allocator<_Tp1> other; };
6194
6195 allocator() throw() { }
6196
6197 allocator(const allocator& __a) throw()
6198 : __gnu_cxx::new_allocator<_Tp>(__a) { }
6199
6200 template<typename _Tp1>
6201 allocator(const allocator<_Tp1>&) throw() { }
6202
6203 ~allocator() throw() { }
6204
6205
6206 };
6207
6208 template<typename _T1, typename _T2>
6209 inline bool
6210 operator==(const allocator<_T1>&, const allocator<_T2>&)
6211 { return true; }
6212
6213 template<typename _Tp>
6214 inline bool
6215 operator==(const allocator<_Tp>&, const allocator<_Tp>&)
6216 { return true; }
6217
6218 template<typename _T1, typename _T2>
6219 inline bool
6220 operator!=(const allocator<_T1>&, const allocator<_T2>&)
6221 { return false; }
6222
6223 template<typename _Tp>
6224 inline bool
6225 operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
6226 { return false; }
6227
6228
6229
6230
6231 extern template class allocator<char>;
6232 extern template class allocator<wchar_t>;
6233
6234
6235
6236
6237
6238
6239 template<typename _Alloc, bool = __is_empty(_Alloc)>
6240 struct __alloc_swap
6241 { static void _S_do_it(_Alloc&, _Alloc&) { } };
6242
6243 template<typename _Alloc>
6244 struct __alloc_swap<_Alloc, false>
6245 {
6246 static void
6247 _S_do_it(_Alloc& __one, _Alloc& __two)
6248 {
6249
6250 if (__one != __two)
6251 swap(__one, __two);
6252 }
6253 };
6254
6255
6256 template<typename _Alloc, bool = __is_empty(_Alloc)>
6257 struct __alloc_neq
6258 {
6259 static bool
6260 _S_do_it(const _Alloc&, const _Alloc&)
6261 { return false; }
6262 };
6263
6264 template<typename _Alloc>
6265 struct __alloc_neq<_Alloc, false>
6266 {
6267 static bool
6268 _S_do_it(const _Alloc& __one, const _Alloc& __two)
6269 { return __one != __two; }
6270 };
6271 # 236 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/allocator.h" 3
6272
6273 }
6274 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
6275 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_construct.h" 1 3
6276 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_construct.h" 3
6277 namespace std __attribute__ ((__visibility__ ("default")))
6278 {
6279
6280 # 78 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_construct.h" 3
6281 template<typename _T1, typename _T2>
6282 inline void
6283 _Construct(_T1* __p, const _T2& __value)
6284 {
6285
6286
6287 ::new(static_cast<void*>(__p)) _T1(__value);
6288 }
6289
6290
6291
6292
6293
6294 template<typename _Tp>
6295 inline void
6296 _Destroy(_Tp* __pointer)
6297 { __pointer->~_Tp(); }
6298
6299 template<bool>
6300 struct _Destroy_aux
6301 {
6302 template<typename _ForwardIterator>
6303 static void
6304 __destroy(_ForwardIterator __first, _ForwardIterator __last)
6305 {
6306 for (; __first != __last; ++__first)
6307 std::_Destroy(std::__addressof(*__first));
6308 }
6309 };
6310
6311 template<>
6312 struct _Destroy_aux<true>
6313 {
6314 template<typename _ForwardIterator>
6315 static void
6316 __destroy(_ForwardIterator, _ForwardIterator) { }
6317 };
6318
6319
6320
6321
6322
6323
6324 template<typename _ForwardIterator>
6325 inline void
6326 _Destroy(_ForwardIterator __first, _ForwardIterator __last)
6327 {
6328 typedef typename iterator_traits<_ForwardIterator>::value_type
6329 _Value_type;
6330 std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
6331 __destroy(__first, __last);
6332 }
6333
6334
6335
6336
6337
6338
6339
6340 template <typename _Tp> class allocator;
6341
6342 template<typename _ForwardIterator, typename _Allocator>
6343 void
6344 _Destroy(_ForwardIterator __first, _ForwardIterator __last,
6345 _Allocator& __alloc)
6346 {
6347 for (; __first != __last; ++__first)
6348 __alloc.destroy(std::__addressof(*__first));
6349 }
6350
6351 template<typename _ForwardIterator, typename _Tp>
6352 inline void
6353 _Destroy(_ForwardIterator __first, _ForwardIterator __last,
6354 allocator<_Tp>&)
6355 {
6356 _Destroy(__first, __last);
6357 }
6358
6359
6360 }
6361 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
6362 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 1 3
6363 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 3
6364 namespace std __attribute__ ((__visibility__ ("default")))
6365 {
6366
6367
6368 template<bool _TrivialValueTypes>
6369 struct __uninitialized_copy
6370 {
6371 template<typename _InputIterator, typename _ForwardIterator>
6372 static _ForwardIterator
6373 __uninit_copy(_InputIterator __first, _InputIterator __last,
6374 _ForwardIterator __result)
6375 {
6376 _ForwardIterator __cur = __result;
6377 try
6378 {
6379 for (; __first != __last; ++__first, ++__cur)
6380 std::_Construct(std::__addressof(*__cur), *__first);
6381 return __cur;
6382 }
6383 catch(...)
6384 {
6385 std::_Destroy(__result, __cur);
6386 throw;
6387 }
6388 }
6389 };
6390
6391 template<>
6392 struct __uninitialized_copy<true>
6393 {
6394 template<typename _InputIterator, typename _ForwardIterator>
6395 static _ForwardIterator
6396 __uninit_copy(_InputIterator __first, _InputIterator __last,
6397 _ForwardIterator __result)
6398 { return std::copy(__first, __last, __result); }
6399 };
6400 # 107 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 3
6401 template<typename _InputIterator, typename _ForwardIterator>
6402 inline _ForwardIterator
6403 uninitialized_copy(_InputIterator __first, _InputIterator __last,
6404 _ForwardIterator __result)
6405 {
6406 typedef typename iterator_traits<_InputIterator>::value_type
6407 _ValueType1;
6408 typedef typename iterator_traits<_ForwardIterator>::value_type
6409 _ValueType2;
6410
6411 return std::__uninitialized_copy<(__is_trivial(_ValueType1)
6412 && __is_trivial(_ValueType2))>::
6413 __uninit_copy(__first, __last, __result);
6414 }
6415
6416
6417 template<bool _TrivialValueType>
6418 struct __uninitialized_fill
6419 {
6420 template<typename _ForwardIterator, typename _Tp>
6421 static void
6422 __uninit_fill(_ForwardIterator __first, _ForwardIterator __last,
6423 const _Tp& __x)
6424 {
6425 _ForwardIterator __cur = __first;
6426 try
6427 {
6428 for (; __cur != __last; ++__cur)
6429 std::_Construct(std::__addressof(*__cur), __x);
6430 }
6431 catch(...)
6432 {
6433 std::_Destroy(__first, __cur);
6434 throw;
6435 }
6436 }
6437 };
6438
6439 template<>
6440 struct __uninitialized_fill<true>
6441 {
6442 template<typename _ForwardIterator, typename _Tp>
6443 static void
6444 __uninit_fill(_ForwardIterator __first, _ForwardIterator __last,
6445 const _Tp& __x)
6446 { std::fill(__first, __last, __x); }
6447 };
6448 # 164 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 3
6449 template<typename _ForwardIterator, typename _Tp>
6450 inline void
6451 uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
6452 const _Tp& __x)
6453 {
6454 typedef typename iterator_traits<_ForwardIterator>::value_type
6455 _ValueType;
6456
6457 std::__uninitialized_fill<__is_trivial(_ValueType)>::
6458 __uninit_fill(__first, __last, __x);
6459 }
6460
6461
6462 template<bool _TrivialValueType>
6463 struct __uninitialized_fill_n
6464 {
6465 template<typename _ForwardIterator, typename _Size, typename _Tp>
6466 static void
6467 __uninit_fill_n(_ForwardIterator __first, _Size __n,
6468 const _Tp& __x)
6469 {
6470 _ForwardIterator __cur = __first;
6471 try
6472 {
6473 for (; __n > 0; --__n, ++__cur)
6474 std::_Construct(std::__addressof(*__cur), __x);
6475 }
6476 catch(...)
6477 {
6478 std::_Destroy(__first, __cur);
6479 throw;
6480 }
6481 }
6482 };
6483
6484 template<>
6485 struct __uninitialized_fill_n<true>
6486 {
6487 template<typename _ForwardIterator, typename _Size, typename _Tp>
6488 static void
6489 __uninit_fill_n(_ForwardIterator __first, _Size __n,
6490 const _Tp& __x)
6491 { std::fill_n(__first, __n, __x); }
6492 };
6493 # 218 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 3
6494 template<typename _ForwardIterator, typename _Size, typename _Tp>
6495 inline void
6496 uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
6497 {
6498 typedef typename iterator_traits<_ForwardIterator>::value_type
6499 _ValueType;
6500
6501 std::__uninitialized_fill_n<__is_trivial(_ValueType)>::
6502 __uninit_fill_n(__first, __n, __x);
6503 }
6504
6505
6506
6507
6508
6509
6510
6511 template<typename _InputIterator, typename _ForwardIterator,
6512 typename _Allocator>
6513 _ForwardIterator
6514 __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
6515 _ForwardIterator __result, _Allocator& __alloc)
6516 {
6517 _ForwardIterator __cur = __result;
6518 try
6519 {
6520 for (; __first != __last; ++__first, ++__cur)
6521 __alloc.construct(std::__addressof(*__cur), *__first);
6522 return __cur;
6523 }
6524 catch(...)
6525 {
6526 std::_Destroy(__result, __cur, __alloc);
6527 throw;
6528 }
6529 }
6530
6531 template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
6532 inline _ForwardIterator
6533 __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
6534 _ForwardIterator __result, allocator<_Tp>&)
6535 { return std::uninitialized_copy(__first, __last, __result); }
6536
6537 template<typename _InputIterator, typename _ForwardIterator,
6538 typename _Allocator>
6539 inline _ForwardIterator
6540 __uninitialized_move_a(_InputIterator __first, _InputIterator __last,
6541 _ForwardIterator __result, _Allocator& __alloc)
6542 {
6543 return std::__uninitialized_copy_a((__first),
6544 (__last),
6545 __result, __alloc);
6546 }
6547
6548 template<typename _ForwardIterator, typename _Tp, typename _Allocator>
6549 void
6550 __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
6551 const _Tp& __x, _Allocator& __alloc)
6552 {
6553 _ForwardIterator __cur = __first;
6554 try
6555 {
6556 for (; __cur != __last; ++__cur)
6557 __alloc.construct(std::__addressof(*__cur), __x);
6558 }
6559 catch(...)
6560 {
6561 std::_Destroy(__first, __cur, __alloc);
6562 throw;
6563 }
6564 }
6565
6566 template<typename _ForwardIterator, typename _Tp, typename _Tp2>
6567 inline void
6568 __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
6569 const _Tp& __x, allocator<_Tp2>&)
6570 { std::uninitialized_fill(__first, __last, __x); }
6571
6572 template<typename _ForwardIterator, typename _Size, typename _Tp,
6573 typename _Allocator>
6574 void
6575 __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
6576 const _Tp& __x, _Allocator& __alloc)
6577 {
6578 _ForwardIterator __cur = __first;
6579 try
6580 {
6581 for (; __n > 0; --__n, ++__cur)
6582 __alloc.construct(std::__addressof(*__cur), __x);
6583 }
6584 catch(...)
6585 {
6586 std::_Destroy(__first, __cur, __alloc);
6587 throw;
6588 }
6589 }
6590
6591 template<typename _ForwardIterator, typename _Size, typename _Tp,
6592 typename _Tp2>
6593 inline void
6594 __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
6595 const _Tp& __x, allocator<_Tp2>&)
6596 { std::uninitialized_fill_n(__first, __n, __x); }
6597 # 332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 3
6598 template<typename _InputIterator1, typename _InputIterator2,
6599 typename _ForwardIterator, typename _Allocator>
6600 inline _ForwardIterator
6601 __uninitialized_copy_move(_InputIterator1 __first1,
6602 _InputIterator1 __last1,
6603 _InputIterator2 __first2,
6604 _InputIterator2 __last2,
6605 _ForwardIterator __result,
6606 _Allocator& __alloc)
6607 {
6608 _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
6609 __result,
6610 __alloc);
6611 try
6612 {
6613 return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc);
6614 }
6615 catch(...)
6616 {
6617 std::_Destroy(__result, __mid, __alloc);
6618 throw;
6619 }
6620 }
6621
6622
6623
6624
6625
6626 template<typename _InputIterator1, typename _InputIterator2,
6627 typename _ForwardIterator, typename _Allocator>
6628 inline _ForwardIterator
6629 __uninitialized_move_copy(_InputIterator1 __first1,
6630 _InputIterator1 __last1,
6631 _InputIterator2 __first2,
6632 _InputIterator2 __last2,
6633 _ForwardIterator __result,
6634 _Allocator& __alloc)
6635 {
6636 _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1,
6637 __result,
6638 __alloc);
6639 try
6640 {
6641 return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
6642 }
6643 catch(...)
6644 {
6645 std::_Destroy(__result, __mid, __alloc);
6646 throw;
6647 }
6648 }
6649
6650
6651
6652
6653 template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
6654 typename _Allocator>
6655 inline _ForwardIterator
6656 __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid,
6657 const _Tp& __x, _InputIterator __first,
6658 _InputIterator __last, _Allocator& __alloc)
6659 {
6660 std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
6661 try
6662 {
6663 return std::__uninitialized_move_a(__first, __last, __mid, __alloc);
6664 }
6665 catch(...)
6666 {
6667 std::_Destroy(__result, __mid, __alloc);
6668 throw;
6669 }
6670 }
6671
6672
6673
6674
6675 template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
6676 typename _Allocator>
6677 inline void
6678 __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1,
6679 _ForwardIterator __first2,
6680 _ForwardIterator __last2, const _Tp& __x,
6681 _Allocator& __alloc)
6682 {
6683 _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1,
6684 __first2,
6685 __alloc);
6686 try
6687 {
6688 std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
6689 }
6690 catch(...)
6691 {
6692 std::_Destroy(__first2, __mid2, __alloc);
6693 throw;
6694 }
6695 }
6696 # 637 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_uninitialized.h" 3
6697
6698 }
6699 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
6700 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tempbuf.h" 1 3
6701 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tempbuf.h" 3
6702 namespace std __attribute__ ((__visibility__ ("default")))
6703 {
6704
6705 # 84 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tempbuf.h" 3
6706 template<typename _Tp>
6707 pair<_Tp*, ptrdiff_t>
6708 get_temporary_buffer(ptrdiff_t __len)
6709 {
6710 const ptrdiff_t __max =
6711 __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
6712 if (__len > __max)
6713 __len = __max;
6714
6715 while (__len > 0)
6716 {
6717 _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
6718 std::nothrow));
6719 if (__tmp != 0)
6720 return std::pair<_Tp*, ptrdiff_t>(__tmp, __len);
6721 __len /= 2;
6722 }
6723 return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);
6724 }
6725 # 111 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tempbuf.h" 3
6726 template<typename _Tp>
6727 inline void
6728 return_temporary_buffer(_Tp* __p)
6729 { ::operator delete(__p, std::nothrow); }
6730
6731
6732
6733
6734
6735
6736
6737 template<typename _ForwardIterator, typename _Tp>
6738 class _Temporary_buffer
6739 {
6740
6741
6742
6743 public:
6744 typedef _Tp value_type;
6745 typedef value_type* pointer;
6746 typedef pointer iterator;
6747 typedef ptrdiff_t size_type;
6748
6749 protected:
6750 size_type _M_original_len;
6751 size_type _M_len;
6752 pointer _M_buffer;
6753
6754 public:
6755
6756 size_type
6757 size() const
6758 { return _M_len; }
6759
6760
6761 size_type
6762 requested_size() const
6763 { return _M_original_len; }
6764
6765
6766 iterator
6767 begin()
6768 { return _M_buffer; }
6769
6770
6771 iterator
6772 end()
6773 { return _M_buffer + _M_len; }
6774
6775
6776
6777
6778
6779 _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last);
6780
6781 ~_Temporary_buffer()
6782 {
6783 std::_Destroy(_M_buffer, _M_buffer + _M_len);
6784 std::return_temporary_buffer(_M_buffer);
6785 }
6786
6787 private:
6788
6789 _Temporary_buffer(const _Temporary_buffer&);
6790
6791 void
6792 operator=(const _Temporary_buffer&);
6793 };
6794
6795
6796 template<bool>
6797 struct __uninitialized_construct_buf_dispatch
6798 {
6799 template<typename _ForwardIterator, typename _Tp>
6800 static void
6801 __ucr(_ForwardIterator __first, _ForwardIterator __last,
6802 _Tp& __value)
6803 {
6804 if(__first == __last)
6805 return;
6806
6807 _ForwardIterator __cur = __first;
6808 try
6809 {
6810 std::_Construct(std::__addressof(*__first),
6811 (__value));
6812 _ForwardIterator __prev = __cur;
6813 ++__cur;
6814 for(; __cur != __last; ++__cur, ++__prev)
6815 std::_Construct(std::__addressof(*__cur),
6816 (*__prev));
6817 __value = (*__prev);
6818 }
6819 catch(...)
6820 {
6821 std::_Destroy(__first, __cur);
6822 throw;
6823 }
6824 }
6825 };
6826
6827 template<>
6828 struct __uninitialized_construct_buf_dispatch<true>
6829 {
6830 template<typename _ForwardIterator, typename _Tp>
6831 static void
6832 __ucr(_ForwardIterator, _ForwardIterator, _Tp&) { }
6833 };
6834 # 230 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tempbuf.h" 3
6835 template<typename _ForwardIterator, typename _Tp>
6836 inline void
6837 __uninitialized_construct_buf(_ForwardIterator __first,
6838 _ForwardIterator __last,
6839 _Tp& __value)
6840 {
6841 typedef typename std::iterator_traits<_ForwardIterator>::value_type
6842 _ValueType;
6843
6844 std::__uninitialized_construct_buf_dispatch<
6845 __has_trivial_constructor(_ValueType)>::
6846 __ucr(__first, __last, __value);
6847 }
6848
6849 template<typename _ForwardIterator, typename _Tp>
6850 _Temporary_buffer<_ForwardIterator, _Tp>::
6851 _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
6852 : _M_original_len(std::distance(__first, __last)),
6853 _M_len(0), _M_buffer(0)
6854 {
6855 try
6856 {
6857 std::pair<pointer, size_type> __p(std::get_temporary_buffer<
6858 value_type>(_M_original_len));
6859 _M_buffer = __p.first;
6860 _M_len = __p.second;
6861 if(_M_buffer)
6862 std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len,
6863 *__first);
6864 }
6865 catch(...)
6866 {
6867 std::return_temporary_buffer(_M_buffer);
6868 _M_buffer = 0;
6869 _M_len = 0;
6870 throw;
6871 }
6872 }
6873
6874
6875 }
6876 # 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
6877 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_raw_storage_iter.h" 1 3
6878 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_raw_storage_iter.h" 3
6879 namespace std __attribute__ ((__visibility__ ("default")))
6880 {
6881
6882
6883
6884
6885
6886
6887 template <class _OutputIterator, class _Tp>
6888 class raw_storage_iterator
6889 : public iterator<output_iterator_tag, void, void, void, void>
6890 {
6891 protected:
6892 _OutputIterator _M_iter;
6893
6894 public:
6895 explicit
6896 raw_storage_iterator(_OutputIterator __x)
6897 : _M_iter(__x) {}
6898
6899 raw_storage_iterator&
6900 operator*() { return *this; }
6901
6902 raw_storage_iterator&
6903 operator=(const _Tp& __element)
6904 {
6905 std::_Construct(std::__addressof(*_M_iter), __element);
6906 return *this;
6907 }
6908
6909 raw_storage_iterator<_OutputIterator, _Tp>&
6910 operator++()
6911 {
6912 ++_M_iter;
6913 return *this;
6914 }
6915
6916 raw_storage_iterator<_OutputIterator, _Tp>
6917 operator++(int)
6918 {
6919 raw_storage_iterator<_OutputIterator, _Tp> __tmp = *this;
6920 ++_M_iter;
6921 return __tmp;
6922 }
6923 };
6924
6925
6926 }
6927 # 70 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
6928 # 88 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 3
6929 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 1 3
6930 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6931 namespace std __attribute__ ((__visibility__ ("default")))
6932 {
6933
6934 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6935 template<typename _Tp1>
6936 struct auto_ptr_ref
6937 {
6938 _Tp1* _M_ptr;
6939
6940 explicit
6941 auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
6942 } ;
6943 # 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6944 template<typename _Tp>
6945 class auto_ptr
6946 {
6947 private:
6948 _Tp* _M_ptr;
6949
6950 public:
6951
6952 typedef _Tp element_type;
6953
6954
6955
6956
6957
6958
6959
6960 explicit
6961 auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
6962 # 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6963 auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
6964 # 124 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6965 template<typename _Tp1>
6966 auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
6967 # 135 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6968 auto_ptr&
6969 operator=(auto_ptr& __a) throw()
6970 {
6971 reset(__a.release());
6972 return *this;
6973 }
6974 # 152 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6975 template<typename _Tp1>
6976 auto_ptr&
6977 operator=(auto_ptr<_Tp1>& __a) throw()
6978 {
6979 reset(__a.release());
6980 return *this;
6981 }
6982 # 170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6983 ~auto_ptr() { delete _M_ptr; }
6984 # 180 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
6985 element_type&
6986 operator*() const throw()
6987 {
6988 ;
6989 return *_M_ptr;
6990 }
6991
6992
6993
6994
6995
6996
6997
6998 element_type*
6999 operator->() const throw()
7000 {
7001 ;
7002 return _M_ptr;
7003 }
7004 # 210 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
7005 element_type*
7006 get() const throw() { return _M_ptr; }
7007 # 224 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
7008 element_type*
7009 release() throw()
7010 {
7011 element_type* __tmp = _M_ptr;
7012 _M_ptr = 0;
7013 return __tmp;
7014 }
7015 # 239 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
7016 void
7017 reset(element_type* __p = 0) throw()
7018 {
7019 if (__p != _M_ptr)
7020 {
7021 delete _M_ptr;
7022 _M_ptr = __p;
7023 }
7024 }
7025 # 260 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/auto_ptr.h" 3
7026 auto_ptr(auto_ptr_ref<element_type> __ref) throw()
7027 : _M_ptr(__ref._M_ptr) { }
7028
7029 auto_ptr&
7030 operator=(auto_ptr_ref<element_type> __ref) throw()
7031 {
7032 if (__ref._M_ptr != this->get())
7033 {
7034 delete _M_ptr;
7035 _M_ptr = __ref._M_ptr;
7036 }
7037 return *this;
7038 }
7039
7040 template<typename _Tp1>
7041 operator auto_ptr_ref<_Tp1>() throw()
7042 { return auto_ptr_ref<_Tp1>(this->release()); }
7043
7044 template<typename _Tp1>
7045 operator auto_ptr<_Tp1>() throw()
7046 { return auto_ptr<_Tp1>(this->release()); }
7047 } ;
7048
7049
7050
7051 template<>
7052 class auto_ptr<void>
7053 {
7054 public:
7055 typedef void element_type;
7056 } ;
7057
7058
7059 }
7060 # 89 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/memory" 2 3
7061 # 20 "../boost/smart_ptr/scoped_ptr.hpp" 2
7062
7063
7064 namespace boost
7065 {
7066 # 39 "../boost/smart_ptr/scoped_ptr.hpp"
7067 template<class T> class scoped_ptr
7068 {
7069 private:
7070
7071 T * px;
7072
7073 scoped_ptr(scoped_ptr const &);
7074 scoped_ptr & operator=(scoped_ptr const &);
7075
7076 typedef scoped_ptr<T> this_type;
7077
7078 void operator==( scoped_ptr const& ) const;
7079 void operator!=( scoped_ptr const& ) const;
7080
7081 public:
7082
7083 typedef T element_type;
7084
7085 explicit scoped_ptr( T * p = 0 ): px( p )
7086 {
7087
7088
7089
7090 }
7091
7092
7093
7094 explicit scoped_ptr( std::auto_ptr<T> p ): px( p.release() )
7095 {
7096
7097
7098
7099 }
7100
7101
7102
7103 ~scoped_ptr()
7104 {
7105
7106
7107
7108 boost::checked_delete( px );
7109 }
7110
7111 void reset(T * p = 0)
7112 {
7113 (static_cast<void> (0));
7114 this_type(p).swap(*this);
7115 }
7116
7117 T & operator*() const
7118 {
7119 (static_cast<void> (0));
7120 return *px;
7121 }
7122
7123 T * operator->() const
7124 {
7125 (static_cast<void> (0));
7126 return px;
7127 }
7128
7129 T * get() const
7130 {
7131 return px;
7132 }
7133
7134
7135 # 1 "../boost/smart_ptr/detail/operator_bool.hpp" 1
7136 # 43 "../boost/smart_ptr/detail/operator_bool.hpp"
7137 typedef T * this_type::*unspecified_bool_type;
7138
7139 operator unspecified_bool_type() const
7140 {
7141 return px == 0? 0: &this_type::px;
7142 }
7143
7144
7145
7146
7147 bool operator! () const
7148 {
7149 return px == 0;
7150 }
7151 # 108 "../boost/smart_ptr/scoped_ptr.hpp" 2
7152
7153 void swap(scoped_ptr & b)
7154 {
7155 T * tmp = b.px;
7156 b.px = px;
7157 px = tmp;
7158 }
7159 };
7160
7161 template<class T> inline void swap(scoped_ptr<T> & a, scoped_ptr<T> & b)
7162 {
7163 a.swap(b);
7164 }
7165
7166
7167
7168 template<class T> inline T * get_pointer(scoped_ptr<T> const & p)
7169 {
7170 return p.get();
7171 }
7172
7173 }
7174 # 15 "../boost/scoped_ptr.hpp" 2
7175 # 13 "quickbook/src/id_manager.hpp" 2
7176 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 1 3
7177 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 3
7178
7179 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 3
7180
7181
7182 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stringfwd.h" 1 3
7183 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stringfwd.h" 3
7184
7185 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stringfwd.h" 3
7186
7187
7188
7189 namespace std __attribute__ ((__visibility__ ("default")))
7190 {
7191
7192
7193 template<typename _Alloc>
7194 class allocator;
7195
7196
7197
7198
7199
7200
7201
7202 template<class _CharT>
7203 struct char_traits;
7204
7205 template<typename _CharT, typename _Traits = char_traits<_CharT>,
7206 typename _Alloc = allocator<_CharT> >
7207 class basic_string;
7208
7209 template<> struct char_traits<char>;
7210
7211 typedef basic_string<char> string;
7212
7213
7214 template<> struct char_traits<wchar_t>;
7215
7216 typedef basic_string<wchar_t> wstring;
7217 # 85 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stringfwd.h" 3
7218
7219 }
7220 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
7221 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 1 3
7222 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 3
7223
7224 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 3
7225
7226
7227 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 1 3
7228 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
7229
7230 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
7231
7232 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 1 3
7233 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
7234
7235 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
7236
7237
7238
7239
7240 # 1 "/usr/include/wchar.h" 1 3 4
7241 # 37 "/usr/include/wchar.h" 3 4
7242 # 1 "/usr/include/stdio.h" 1 3 4
7243 # 45 "/usr/include/stdio.h" 3 4
7244 struct _IO_FILE;
7245
7246
7247
7248 typedef struct _IO_FILE FILE;
7249
7250
7251
7252
7253
7254 # 65 "/usr/include/stdio.h" 3 4
7255 typedef struct _IO_FILE __FILE;
7256 # 38 "/usr/include/wchar.h" 2 3 4
7257
7258
7259 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stdarg.h" 1 3 4
7260 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stdarg.h" 3 4
7261 typedef __builtin_va_list __gnuc_va_list;
7262 # 41 "/usr/include/wchar.h" 2 3 4
7263
7264 # 1 "/usr/include/bits/wchar.h" 1 3 4
7265 # 43 "/usr/include/wchar.h" 2 3 4
7266 # 52 "/usr/include/wchar.h" 3 4
7267 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
7268 # 353 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 3 4
7269 typedef unsigned int wint_t;
7270 # 53 "/usr/include/wchar.h" 2 3 4
7271 # 83 "/usr/include/wchar.h" 3 4
7272 typedef struct
7273 {
7274 int __count;
7275 union
7276 {
7277
7278 unsigned int __wch;
7279
7280
7281
7282 char __wchb[4];
7283 } __value;
7284 } __mbstate_t;
7285 # 104 "/usr/include/wchar.h" 3 4
7286
7287
7288 typedef __mbstate_t mbstate_t;
7289
7290
7291
7292 # 129 "/usr/include/wchar.h" 3 4
7293 extern "C" {
7294
7295
7296
7297
7298 struct tm;
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308 extern wchar_t *wcscpy (wchar_t *__restrict __dest,
7309 __const wchar_t *__restrict __src) throw ();
7310
7311 extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
7312 __const wchar_t *__restrict __src, size_t __n)
7313 throw ();
7314
7315
7316 extern wchar_t *wcscat (wchar_t *__restrict __dest,
7317 __const wchar_t *__restrict __src) throw ();
7318
7319 extern wchar_t *wcsncat (wchar_t *__restrict __dest,
7320 __const wchar_t *__restrict __src, size_t __n)
7321 throw ();
7322
7323
7324 extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
7325 throw () __attribute__ ((__pure__));
7326
7327 extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
7328 throw () __attribute__ ((__pure__));
7329
7330
7331
7332
7333 extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
7334
7335
7336 extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
7337 size_t __n) throw ();
7338
7339
7340
7341
7342
7343 extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
7344 __locale_t __loc) throw ();
7345
7346 extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
7347 size_t __n, __locale_t __loc) throw ();
7348
7349
7350
7351
7352
7353 extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
7354
7355
7356
7357 extern size_t wcsxfrm (wchar_t *__restrict __s1,
7358 __const wchar_t *__restrict __s2, size_t __n) throw ();
7359
7360
7361
7362
7363
7364
7365
7366
7367 extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
7368 __locale_t __loc) throw ();
7369
7370
7371
7372
7373 extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
7374 size_t __n, __locale_t __loc) throw ();
7375
7376
7377 extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__));
7378
7379
7380
7381
7382
7383 extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
7384 throw () __asm ("wcschr") __attribute__ ((__pure__));
7385 extern "C++" __const wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
7386 throw () __asm ("wcschr") __attribute__ ((__pure__));
7387
7388
7389
7390
7391
7392
7393 extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc)
7394 throw () __asm ("wcsrchr") __attribute__ ((__pure__));
7395 extern "C++" __const wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
7396 throw () __asm ("wcsrchr") __attribute__ ((__pure__));
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406 extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
7407 throw () __attribute__ ((__pure__));
7408
7409
7410
7411
7412
7413 extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
7414 throw () __attribute__ ((__pure__));
7415
7416
7417 extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
7418 throw () __attribute__ ((__pure__));
7419
7420
7421 extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, __const wchar_t *__accept)
7422 throw () __asm ("wcspbrk") __attribute__ ((__pure__));
7423 extern "C++" __const wchar_t *wcspbrk (__const wchar_t *__wcs,
7424 __const wchar_t *__accept)
7425 throw () __asm ("wcspbrk") __attribute__ ((__pure__));
7426
7427
7428
7429
7430
7431
7432 extern "C++" wchar_t *wcsstr (wchar_t *__haystack, __const wchar_t *__needle)
7433 throw () __asm ("wcsstr") __attribute__ ((__pure__));
7434 extern "C++" __const wchar_t *wcsstr (__const wchar_t *__haystack,
7435 __const wchar_t *__needle)
7436 throw () __asm ("wcsstr") __attribute__ ((__pure__));
7437
7438
7439
7440
7441
7442
7443 extern wchar_t *wcstok (wchar_t *__restrict __s,
7444 __const wchar_t *__restrict __delim,
7445 wchar_t **__restrict __ptr) throw ();
7446
7447
7448 extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__));
7449
7450
7451
7452
7453
7454 extern "C++" wchar_t *wcswcs (wchar_t *__haystack, __const wchar_t *__needle)
7455 throw () __asm ("wcswcs") __attribute__ ((__pure__));
7456 extern "C++" __const wchar_t *wcswcs (__const wchar_t *__haystack,
7457 __const wchar_t *__needle)
7458 throw () __asm ("wcswcs") __attribute__ ((__pure__));
7459 # 303 "/usr/include/wchar.h" 3 4
7460 extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
7461 throw () __attribute__ ((__pure__));
7462
7463
7464
7465
7466
7467
7468 extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n)
7469 throw () __asm ("wmemchr") __attribute__ ((__pure__));
7470 extern "C++" __const wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c,
7471 size_t __n)
7472 throw () __asm ("wmemchr") __attribute__ ((__pure__));
7473
7474
7475
7476
7477
7478
7479 extern int wmemcmp (__const wchar_t *__restrict __s1,
7480 __const wchar_t *__restrict __s2, size_t __n)
7481 throw () __attribute__ ((__pure__));
7482
7483
7484 extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
7485 __const wchar_t *__restrict __s2, size_t __n) throw ();
7486
7487
7488
7489 extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
7490 throw ();
7491
7492
7493 extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();
7494
7495
7496
7497
7498
7499 extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
7500 __const wchar_t *__restrict __s2, size_t __n)
7501 throw ();
7502
7503
7504
7505
7506
7507
7508 extern wint_t btowc (int __c) throw ();
7509
7510
7511
7512 extern int wctob (wint_t __c) throw ();
7513
7514
7515
7516 extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__));
7517
7518
7519
7520 extern size_t mbrtowc (wchar_t *__restrict __pwc,
7521 __const char *__restrict __s, size_t __n,
7522 mbstate_t *__p) throw ();
7523
7524
7525 extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
7526 mbstate_t *__restrict __ps) throw ();
7527
7528
7529 extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
7530 mbstate_t *__restrict __ps) throw ();
7531 extern size_t mbrlen (__const char *__restrict __s, size_t __n,
7532 mbstate_t *__restrict __ps) throw ();
7533
7534
7535
7536
7537
7538
7539
7540
7541 extern wint_t __btowc_alias (int __c) __asm ("btowc");
7542 extern __inline __attribute__ ((__gnu_inline__)) wint_t
7543 btowc (int __c) throw ()
7544 { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f'
7545 ? (wint_t) __c : __btowc_alias (__c)); }
7546
7547 extern int __wctob_alias (wint_t __c) __asm ("wctob");
7548 extern __inline __attribute__ ((__gnu_inline__)) int
7549 wctob (wint_t __wc) throw ()
7550 { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f'
7551 ? (int) __wc : __wctob_alias (__wc)); }
7552
7553 extern __inline __attribute__ ((__gnu_inline__)) size_t
7554 mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ()
7555
7556 { return (__ps != __null
7557 ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); }
7558
7559
7560
7561
7562
7563 extern size_t mbsrtowcs (wchar_t *__restrict __dst,
7564 __const char **__restrict __src, size_t __len,
7565 mbstate_t *__restrict __ps) throw ();
7566
7567
7568
7569 extern size_t wcsrtombs (char *__restrict __dst,
7570 __const wchar_t **__restrict __src, size_t __len,
7571 mbstate_t *__restrict __ps) throw ();
7572
7573
7574
7575
7576
7577
7578 extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
7579 __const char **__restrict __src, size_t __nmc,
7580 size_t __len, mbstate_t *__restrict __ps) throw ();
7581
7582
7583
7584 extern size_t wcsnrtombs (char *__restrict __dst,
7585 __const wchar_t **__restrict __src,
7586 size_t __nwc, size_t __len,
7587 mbstate_t *__restrict __ps) throw ();
7588
7589
7590
7591
7592
7593
7594 extern int wcwidth (wchar_t __c) throw ();
7595
7596
7597
7598 extern int wcswidth (__const wchar_t *__s, size_t __n) throw ();
7599
7600
7601
7602
7603
7604
7605 extern double wcstod (__const wchar_t *__restrict __nptr,
7606 wchar_t **__restrict __endptr) throw ();
7607
7608
7609
7610
7611
7612 extern float wcstof (__const wchar_t *__restrict __nptr,
7613 wchar_t **__restrict __endptr) throw ();
7614 extern long double wcstold (__const wchar_t *__restrict __nptr,
7615 wchar_t **__restrict __endptr) throw ();
7616
7617
7618
7619
7620
7621
7622
7623 extern long int wcstol (__const wchar_t *__restrict __nptr,
7624 wchar_t **__restrict __endptr, int __base) throw ();
7625
7626
7627
7628 extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
7629 wchar_t **__restrict __endptr, int __base)
7630 throw ();
7631
7632
7633
7634
7635
7636
7637 __extension__
7638 extern long long int wcstoll (__const wchar_t *__restrict __nptr,
7639 wchar_t **__restrict __endptr, int __base)
7640 throw ();
7641
7642
7643
7644 __extension__
7645 extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
7646 wchar_t **__restrict __endptr,
7647 int __base) throw ();
7648
7649
7650
7651
7652
7653
7654 __extension__
7655 extern long long int wcstoq (__const wchar_t *__restrict __nptr,
7656 wchar_t **__restrict __endptr, int __base)
7657 throw ();
7658
7659
7660
7661 __extension__
7662 extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
7663 wchar_t **__restrict __endptr,
7664 int __base) throw ();
7665 # 528 "/usr/include/wchar.h" 3 4
7666 extern long int wcstol_l (__const wchar_t *__restrict __nptr,
7667 wchar_t **__restrict __endptr, int __base,
7668 __locale_t __loc) throw ();
7669
7670 extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
7671 wchar_t **__restrict __endptr,
7672 int __base, __locale_t __loc) throw ();
7673
7674 __extension__
7675 extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
7676 wchar_t **__restrict __endptr,
7677 int __base, __locale_t __loc) throw ();
7678
7679 __extension__
7680 extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
7681 wchar_t **__restrict __endptr,
7682 int __base, __locale_t __loc)
7683 throw ();
7684
7685 extern double wcstod_l (__const wchar_t *__restrict __nptr,
7686 wchar_t **__restrict __endptr, __locale_t __loc)
7687 throw ();
7688
7689 extern float wcstof_l (__const wchar_t *__restrict __nptr,
7690 wchar_t **__restrict __endptr, __locale_t __loc)
7691 throw ();
7692
7693 extern long double wcstold_l (__const wchar_t *__restrict __nptr,
7694 wchar_t **__restrict __endptr,
7695 __locale_t __loc) throw ();
7696
7697
7698
7699
7700 extern wchar_t *wcpcpy (wchar_t *__restrict __dest,
7701 __const wchar_t *__restrict __src) throw ();
7702
7703
7704
7705 extern wchar_t *wcpncpy (wchar_t *__restrict __dest,
7706 __const wchar_t *__restrict __src, size_t __n)
7707 throw ();
7708 # 578 "/usr/include/wchar.h" 3 4
7709 extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw ();
7710
7711
7712
7713
7714
7715
7716 extern int fwide (__FILE *__fp, int __mode) throw ();
7717
7718
7719
7720
7721
7722
7723 extern int fwprintf (__FILE *__restrict __stream,
7724 __const wchar_t *__restrict __format, ...)
7725 ;
7726
7727
7728
7729
7730 extern int wprintf (__const wchar_t *__restrict __format, ...)
7731 ;
7732
7733 extern int swprintf (wchar_t *__restrict __s, size_t __n,
7734 __const wchar_t *__restrict __format, ...)
7735 throw () ;
7736
7737
7738
7739
7740
7741 extern int vfwprintf (__FILE *__restrict __s,
7742 __const wchar_t *__restrict __format,
7743 __gnuc_va_list __arg)
7744 ;
7745
7746
7747
7748
7749 extern int vwprintf (__const wchar_t *__restrict __format,
7750 __gnuc_va_list __arg)
7751 ;
7752
7753
7754 extern int vswprintf (wchar_t *__restrict __s, size_t __n,
7755 __const wchar_t *__restrict __format,
7756 __gnuc_va_list __arg)
7757 throw () ;
7758
7759
7760
7761
7762
7763
7764 extern int fwscanf (__FILE *__restrict __stream,
7765 __const wchar_t *__restrict __format, ...)
7766 ;
7767
7768
7769
7770
7771 extern int wscanf (__const wchar_t *__restrict __format, ...)
7772 ;
7773
7774 extern int swscanf (__const wchar_t *__restrict __s,
7775 __const wchar_t *__restrict __format, ...)
7776 throw () ;
7777 # 678 "/usr/include/wchar.h" 3 4
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787 extern int vfwscanf (__FILE *__restrict __s,
7788 __const wchar_t *__restrict __format,
7789 __gnuc_va_list __arg)
7790 ;
7791
7792
7793
7794
7795 extern int vwscanf (__const wchar_t *__restrict __format,
7796 __gnuc_va_list __arg)
7797 ;
7798
7799 extern int vswscanf (__const wchar_t *__restrict __s,
7800 __const wchar_t *__restrict __format,
7801 __gnuc_va_list __arg)
7802 throw () ;
7803 # 734 "/usr/include/wchar.h" 3 4
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813 extern wint_t fgetwc (__FILE *__stream);
7814 extern wint_t getwc (__FILE *__stream);
7815
7816
7817
7818
7819
7820 extern wint_t getwchar (void);
7821
7822
7823
7824
7825
7826
7827 extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
7828 extern wint_t putwc (wchar_t __wc, __FILE *__stream);
7829
7830
7831
7832
7833
7834 extern wint_t putwchar (wchar_t __wc);
7835
7836
7837
7838
7839
7840
7841
7842 extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
7843 __FILE *__restrict __stream);
7844
7845
7846
7847
7848
7849 extern int fputws (__const wchar_t *__restrict __ws,
7850 __FILE *__restrict __stream);
7851
7852
7853
7854
7855
7856
7857 extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
7858
7859 # 799 "/usr/include/wchar.h" 3 4
7860 extern wint_t getwc_unlocked (__FILE *__stream);
7861 extern wint_t getwchar_unlocked (void);
7862
7863
7864
7865
7866
7867
7868
7869 extern wint_t fgetwc_unlocked (__FILE *__stream);
7870
7871
7872
7873
7874
7875
7876
7877 extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
7878 # 825 "/usr/include/wchar.h" 3 4
7879 extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
7880 extern wint_t putwchar_unlocked (wchar_t __wc);
7881 # 835 "/usr/include/wchar.h" 3 4
7882 extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
7883 __FILE *__restrict __stream);
7884
7885
7886
7887
7888
7889
7890
7891 extern int fputws_unlocked (__const wchar_t *__restrict __ws,
7892 __FILE *__restrict __stream);
7893
7894
7895
7896
7897
7898
7899
7900 extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
7901 __const wchar_t *__restrict __format,
7902 __const struct tm *__restrict __tp) throw ();
7903
7904
7905
7906
7907
7908
7909
7910 extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
7911 __const wchar_t *__restrict __format,
7912 __const struct tm *__restrict __tp,
7913 __locale_t __loc) throw ();
7914 # 882 "/usr/include/wchar.h" 3 4
7915 # 1 "/usr/include/bits/wchar2.h" 1 3 4
7916 # 25 "/usr/include/bits/wchar2.h" 3 4
7917 extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
7918 __const wchar_t *__restrict __s2, size_t __n,
7919 size_t __ns1) throw ();
7920 extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy")
7921
7922
7923 ;
7924 extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemcpy_chk")
7925
7926
7927
7928 __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer")))
7929 ;
7930
7931 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
7932 wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ()
7933
7934 {
7935 if (__builtin_object_size (__s1, 0) != (size_t) -1)
7936 {
7937 if (!__builtin_constant_p (__n))
7938 return __wmemcpy_chk (__s1, __s2, __n,
7939 __builtin_object_size (__s1, 0) / sizeof (wchar_t));
7940
7941 if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t))
7942 return __wmemcpy_chk_warn (__s1, __s2, __n,
7943 __builtin_object_size (__s1, 0) / sizeof (wchar_t));
7944 }
7945 return __wmemcpy_alias (__s1, __s2, __n);
7946 }
7947
7948
7949 extern wchar_t *__wmemmove_chk (wchar_t *__s1, __const wchar_t *__s2,
7950 size_t __n, size_t __ns1) throw ();
7951 extern wchar_t *__wmemmove_alias (wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove")
7952
7953 ;
7954 extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, __const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk")
7955
7956
7957 __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer")))
7958 ;
7959
7960 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
7961 wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ()
7962 {
7963 if (__builtin_object_size (__s1, 0) != (size_t) -1)
7964 {
7965 if (!__builtin_constant_p (__n))
7966 return __wmemmove_chk (__s1, __s2, __n,
7967 __builtin_object_size (__s1, 0) / sizeof (wchar_t));
7968
7969 if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t))
7970 return __wmemmove_chk_warn (__s1, __s2, __n,
7971 __builtin_object_size (__s1, 0) / sizeof (wchar_t));
7972 }
7973 return __wmemmove_alias (__s1, __s2, __n);
7974 }
7975
7976
7977
7978 extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1,
7979 __const wchar_t *__restrict __s2, size_t __n,
7980 size_t __ns1) throw ();
7981 extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy")
7982
7983
7984 ;
7985 extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmempcpy_chk")
7986
7987
7988
7989 __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer")))
7990 ;
7991
7992 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
7993 wmempcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ()
7994
7995 {
7996 if (__builtin_object_size (__s1, 0) != (size_t) -1)
7997 {
7998 if (!__builtin_constant_p (__n))
7999 return __wmempcpy_chk (__s1, __s2, __n,
8000 __builtin_object_size (__s1, 0) / sizeof (wchar_t));
8001
8002 if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t))
8003 return __wmempcpy_chk_warn (__s1, __s2, __n,
8004 __builtin_object_size (__s1, 0) / sizeof (wchar_t));
8005 }
8006 return __wmempcpy_alias (__s1, __s2, __n);
8007 }
8008
8009
8010
8011 extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
8012 size_t __ns) throw ();
8013 extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset")
8014 ;
8015 extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk")
8016
8017
8018 __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer")))
8019 ;
8020
8021 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8022 wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ()
8023 {
8024 if (__builtin_object_size (__s, 0) != (size_t) -1)
8025 {
8026 if (!__builtin_constant_p (__n))
8027 return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t));
8028
8029 if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t))
8030 return __wmemset_chk_warn (__s, __c, __n,
8031 __builtin_object_size (__s, 0) / sizeof (wchar_t));
8032 }
8033 return __wmemset_alias (__s, __c, __n);
8034 }
8035
8036
8037 extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
8038 __const wchar_t *__restrict __src,
8039 size_t __n) throw ();
8040 extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy")
8041
8042 ;
8043
8044 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8045 wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ()
8046 {
8047 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
8048 return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8049 return __wcscpy_alias (__dest, __src);
8050 }
8051
8052
8053 extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest,
8054 __const wchar_t *__restrict __src,
8055 size_t __destlen) throw ();
8056 extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy")
8057
8058 ;
8059
8060 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8061 wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ()
8062 {
8063 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
8064 return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8065 return __wcpcpy_alias (__dest, __src);
8066 }
8067
8068
8069 extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest,
8070 __const wchar_t *__restrict __src, size_t __n,
8071 size_t __destlen) throw ();
8072 extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy")
8073
8074
8075 ;
8076 extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcsncpy_chk")
8077
8078
8079
8080 __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer")))
8081 ;
8082
8083 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8084 wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ()
8085
8086 {
8087 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
8088 {
8089 if (!__builtin_constant_p (__n))
8090 return __wcsncpy_chk (__dest, __src, __n,
8091 __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8092 if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))
8093 return __wcsncpy_chk_warn (__dest, __src, __n,
8094 __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8095 }
8096 return __wcsncpy_alias (__dest, __src, __n);
8097 }
8098
8099
8100 extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
8101 __const wchar_t *__restrict __src, size_t __n,
8102 size_t __destlen) throw ();
8103 extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy")
8104
8105
8106 ;
8107 extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcpncpy_chk")
8108
8109
8110
8111 __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer")))
8112 ;
8113
8114 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8115 wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ()
8116
8117 {
8118 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
8119 {
8120 if (!__builtin_constant_p (__n))
8121 return __wcpncpy_chk (__dest, __src, __n,
8122 __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8123 if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))
8124 return __wcpncpy_chk_warn (__dest, __src, __n,
8125 __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8126 }
8127 return __wcpncpy_alias (__dest, __src, __n);
8128 }
8129
8130
8131 extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
8132 __const wchar_t *__restrict __src,
8133 size_t __destlen) throw ();
8134 extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat")
8135
8136 ;
8137
8138 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8139 wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ()
8140 {
8141 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
8142 return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8143 return __wcscat_alias (__dest, __src);
8144 }
8145
8146
8147 extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest,
8148 __const wchar_t *__restrict __src,
8149 size_t __n, size_t __destlen) throw ();
8150 extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat")
8151
8152
8153 ;
8154
8155 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) wchar_t *
8156 wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ()
8157
8158 {
8159 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
8160 return __wcsncat_chk (__dest, __src, __n,
8161 __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
8162 return __wcsncat_alias (__dest, __src, __n);
8163 }
8164
8165
8166 extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n,
8167 int __flag, size_t __s_len,
8168 __const wchar_t *__restrict __format, ...)
8169 throw () ;
8170
8171 extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf")
8172
8173
8174 ;
8175
8176
8177 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
8178 swprintf (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __fmt, ...) throw ()
8179
8180 {
8181 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1)
8182 return __swprintf_chk (__s, __n, 2 - 1,
8183 __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
8184 __fmt, __builtin_va_arg_pack ());
8185 return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ());
8186 }
8187 # 304 "/usr/include/bits/wchar2.h" 3 4
8188 extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
8189 int __flag, size_t __s_len,
8190 __const wchar_t *__restrict __format,
8191 __gnuc_va_list __arg)
8192 throw () ;
8193
8194 extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf")
8195
8196
8197 ;
8198
8199 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
8200 vswprintf (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw ()
8201
8202 {
8203 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1)
8204 return __vswprintf_chk (__s, __n, 2 - 1,
8205 __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap);
8206 return __vswprintf_alias (__s, __n, __fmt, __ap);
8207 }
8208
8209
8210
8211
8212 extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag,
8213 __const wchar_t *__restrict __format, ...);
8214 extern int __wprintf_chk (int __flag, __const wchar_t *__restrict __format,
8215 ...);
8216 extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
8217 __const wchar_t *__restrict __format,
8218 __gnuc_va_list __ap);
8219 extern int __vwprintf_chk (int __flag, __const wchar_t *__restrict __format,
8220 __gnuc_va_list __ap);
8221
8222
8223 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
8224 wprintf (__const wchar_t *__restrict __fmt, ...)
8225 {
8226 return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
8227 }
8228
8229 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
8230 fwprintf (__FILE *__restrict __stream, __const wchar_t *__restrict __fmt, ...)
8231 {
8232 return __fwprintf_chk (__stream, 2 - 1, __fmt,
8233 __builtin_va_arg_pack ());
8234 }
8235
8236
8237
8238
8239
8240
8241
8242 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
8243 vwprintf (__const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
8244 {
8245 return __vwprintf_chk (2 - 1, __fmt, __ap);
8246 }
8247
8248 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
8249 vfwprintf (__FILE *__restrict __stream,
8250 __const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
8251 {
8252 return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap);
8253 }
8254
8255
8256
8257 extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
8258 __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
8259 extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws")
8260
8261 __attribute__ ((__warn_unused_result__));
8262 extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk")
8263
8264
8265 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer")))
8266 ;
8267
8268 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t *
8269 fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
8270 {
8271 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
8272 {
8273 if (!__builtin_constant_p (__n) || __n <= 0)
8274 return __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
8275 __n, __stream);
8276
8277 if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t))
8278 return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
8279 __n, __stream);
8280 }
8281 return __fgetws_alias (__s, __n, __stream);
8282 }
8283
8284
8285 extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
8286 int __n, __FILE *__restrict __stream)
8287 __attribute__ ((__warn_unused_result__));
8288 extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked")
8289
8290
8291 __attribute__ ((__warn_unused_result__));
8292 extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk")
8293
8294
8295
8296 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer")))
8297 ;
8298
8299 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t *
8300 fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
8301 {
8302 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
8303 {
8304 if (!__builtin_constant_p (__n) || __n <= 0)
8305 return __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
8306 __n, __stream);
8307
8308 if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t))
8309 return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
8310 __n, __stream);
8311 }
8312 return __fgetws_unlocked_alias (__s, __n, __stream);
8313 }
8314
8315
8316
8317 extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar,
8318 mbstate_t *__restrict __p,
8319 size_t __buflen) throw () __attribute__ ((__warn_unused_result__));
8320 extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb")
8321
8322 __attribute__ ((__warn_unused_result__));
8323
8324 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
8325 wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw ()
8326
8327 {
8328
8329
8330
8331
8332
8333
8334
8335 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
8336 return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1));
8337 return __wcrtomb_alias (__s, __wchar, __ps);
8338 }
8339
8340
8341 extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst,
8342 __const char **__restrict __src,
8343 size_t __len, mbstate_t *__restrict __ps,
8344 size_t __dstlen) throw ();
8345 extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs")
8346
8347
8348
8349 ;
8350 extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsrtowcs_chk")
8351
8352
8353
8354
8355 __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
8356 ;
8357
8358 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
8359 mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ()
8360
8361 {
8362 if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
8363 {
8364 if (!__builtin_constant_p (__len))
8365 return __mbsrtowcs_chk (__dst, __src, __len, __ps,
8366 __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
8367
8368 if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
8369 return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps,
8370 __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
8371 }
8372 return __mbsrtowcs_alias (__dst, __src, __len, __ps);
8373 }
8374
8375
8376 extern size_t __wcsrtombs_chk (char *__restrict __dst,
8377 __const wchar_t **__restrict __src,
8378 size_t __len, mbstate_t *__restrict __ps,
8379 size_t __dstlen) throw ();
8380 extern size_t __wcsrtombs_alias (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs")
8381
8382
8383
8384 ;
8385 extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsrtombs_chk")
8386
8387
8388
8389
8390 __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len")));
8391
8392 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
8393 wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ()
8394
8395 {
8396 if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
8397 {
8398 if (!__builtin_constant_p (__len))
8399 return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1));
8400
8401 if (__len > __builtin_object_size (__dst, 2 > 1))
8402 return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1));
8403 }
8404 return __wcsrtombs_alias (__dst, __src, __len, __ps);
8405 }
8406
8407
8408
8409 extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst,
8410 __const char **__restrict __src, size_t __nmc,
8411 size_t __len, mbstate_t *__restrict __ps,
8412 size_t __dstlen) throw ();
8413 extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsnrtowcs")
8414
8415
8416
8417 ;
8418 extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsnrtowcs_chk")
8419
8420
8421
8422
8423 __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
8424 ;
8425
8426 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
8427 mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw ()
8428
8429 {
8430 if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
8431 {
8432 if (!__builtin_constant_p (__len))
8433 return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps,
8434 __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
8435
8436 if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
8437 return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps,
8438 __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
8439 }
8440 return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps);
8441 }
8442
8443
8444 extern size_t __wcsnrtombs_chk (char *__restrict __dst,
8445 __const wchar_t **__restrict __src,
8446 size_t __nwc, size_t __len,
8447 mbstate_t *__restrict __ps, size_t __dstlen)
8448 throw ();
8449 extern size_t __wcsnrtombs_alias (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsnrtombs")
8450
8451
8452
8453 ;
8454 extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsnrtombs_chk")
8455
8456
8457
8458
8459
8460 __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len")));
8461
8462 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
8463 wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw ()
8464
8465 {
8466 if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
8467 {
8468 if (!__builtin_constant_p (__len))
8469 return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps,
8470 __builtin_object_size (__dst, 2 > 1));
8471
8472 if (__len > __builtin_object_size (__dst, 2 > 1))
8473 return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps,
8474 __builtin_object_size (__dst, 2 > 1));
8475 }
8476 return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps);
8477 }
8478 # 883 "/usr/include/wchar.h" 2 3 4
8479
8480
8481
8482
8483
8484
8485 }
8486 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 2 3
8487 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
8488 namespace std
8489 {
8490 using ::mbstate_t;
8491 }
8492 # 137 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
8493 namespace std __attribute__ ((__visibility__ ("default")))
8494 {
8495
8496
8497 using ::wint_t;
8498
8499 using ::btowc;
8500 using ::fgetwc;
8501 using ::fgetws;
8502 using ::fputwc;
8503 using ::fputws;
8504 using ::fwide;
8505 using ::fwprintf;
8506 using ::fwscanf;
8507 using ::getwc;
8508 using ::getwchar;
8509 using ::mbrlen;
8510 using ::mbrtowc;
8511 using ::mbsinit;
8512 using ::mbsrtowcs;
8513 using ::putwc;
8514 using ::putwchar;
8515
8516 using ::swprintf;
8517
8518 using ::swscanf;
8519 using ::ungetwc;
8520 using ::vfwprintf;
8521
8522 using ::vfwscanf;
8523
8524
8525 using ::vswprintf;
8526
8527
8528 using ::vswscanf;
8529
8530 using ::vwprintf;
8531
8532 using ::vwscanf;
8533
8534 using ::wcrtomb;
8535 using ::wcscat;
8536 using ::wcscmp;
8537 using ::wcscoll;
8538 using ::wcscpy;
8539 using ::wcscspn;
8540 using ::wcsftime;
8541 using ::wcslen;
8542 using ::wcsncat;
8543 using ::wcsncmp;
8544 using ::wcsncpy;
8545 using ::wcsrtombs;
8546 using ::wcsspn;
8547 using ::wcstod;
8548
8549 using ::wcstof;
8550
8551 using ::wcstok;
8552 using ::wcstol;
8553 using ::wcstoul;
8554 using ::wcsxfrm;
8555 using ::wctob;
8556 using ::wmemcmp;
8557 using ::wmemcpy;
8558 using ::wmemmove;
8559 using ::wmemset;
8560 using ::wprintf;
8561 using ::wscanf;
8562 using ::wcschr;
8563 using ::wcspbrk;
8564 using ::wcsrchr;
8565 using ::wcsstr;
8566 using ::wmemchr;
8567 # 234 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
8568
8569 }
8570
8571
8572
8573
8574
8575
8576
8577 namespace __gnu_cxx
8578 {
8579
8580
8581
8582
8583
8584 using ::wcstold;
8585 # 259 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
8586 using ::wcstoll;
8587 using ::wcstoull;
8588
8589 }
8590
8591 namespace std
8592 {
8593 using ::__gnu_cxx::wcstold;
8594 using ::__gnu_cxx::wcstoll;
8595 using ::__gnu_cxx::wcstoull;
8596 }
8597 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 2 3
8598 # 70 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
8599 namespace std __attribute__ ((__visibility__ ("default")))
8600 {
8601
8602 # 90 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
8603 typedef long streamoff;
8604 # 100 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
8605 typedef ptrdiff_t streamsize;
8606 # 113 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
8607 template<typename _StateT>
8608 class fpos
8609 {
8610 private:
8611 streamoff _M_off;
8612 _StateT _M_state;
8613
8614 public:
8615
8616
8617
8618
8619 fpos()
8620 : _M_off(0), _M_state() { }
8621 # 135 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
8622 fpos(streamoff __off)
8623 : _M_off(__off), _M_state() { }
8624
8625
8626 operator streamoff() const { return _M_off; }
8627
8628
8629 void
8630 state(_StateT __st)
8631 { _M_state = __st; }
8632
8633
8634 _StateT
8635 state() const
8636 { return _M_state; }
8637
8638
8639
8640
8641
8642 fpos&
8643 operator+=(streamoff __off)
8644 {
8645 _M_off += __off;
8646 return *this;
8647 }
8648
8649
8650
8651
8652
8653 fpos&
8654 operator-=(streamoff __off)
8655 {
8656 _M_off -= __off;
8657 return *this;
8658 }
8659
8660
8661
8662
8663
8664
8665
8666 fpos
8667 operator+(streamoff __off) const
8668 {
8669 fpos __pos(*this);
8670 __pos += __off;
8671 return __pos;
8672 }
8673
8674
8675
8676
8677
8678
8679
8680 fpos
8681 operator-(streamoff __off) const
8682 {
8683 fpos __pos(*this);
8684 __pos -= __off;
8685 return __pos;
8686 }
8687
8688
8689
8690
8691
8692
8693 streamoff
8694 operator-(const fpos& __other) const
8695 { return _M_off - __other._M_off; }
8696 };
8697
8698
8699
8700
8701
8702
8703 template<typename _StateT>
8704 inline bool
8705 operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
8706 { return streamoff(__lhs) == streamoff(__rhs); }
8707
8708 template<typename _StateT>
8709 inline bool
8710 operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
8711 { return streamoff(__lhs) != streamoff(__rhs); }
8712
8713
8714
8715
8716
8717 typedef fpos<mbstate_t> streampos;
8718
8719 typedef fpos<mbstate_t> wstreampos;
8720 # 241 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/postypes.h" 3
8721
8722 }
8723 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 2 3
8724 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 1 3
8725 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
8726
8727 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
8728
8729
8730
8731
8732 # 1 "/usr/include/wchar.h" 1 3 4
8733 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 2 3
8734 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 2 3
8735
8736 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
8737 {
8738
8739 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 3
8740 template<typename _CharT>
8741 struct _Char_types
8742 {
8743 typedef unsigned long int_type;
8744 typedef std::streampos pos_type;
8745 typedef std::streamoff off_type;
8746 typedef std::mbstate_t state_type;
8747 };
8748 # 84 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 3
8749 template<typename _CharT>
8750 struct char_traits
8751 {
8752 typedef _CharT char_type;
8753 typedef typename _Char_types<_CharT>::int_type int_type;
8754 typedef typename _Char_types<_CharT>::pos_type pos_type;
8755 typedef typename _Char_types<_CharT>::off_type off_type;
8756 typedef typename _Char_types<_CharT>::state_type state_type;
8757
8758 static void
8759 assign(char_type& __c1, const char_type& __c2)
8760 { __c1 = __c2; }
8761
8762 static bool
8763 eq(const char_type& __c1, const char_type& __c2)
8764 { return __c1 == __c2; }
8765
8766 static bool
8767 lt(const char_type& __c1, const char_type& __c2)
8768 { return __c1 < __c2; }
8769
8770 static int
8771 compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
8772
8773 static std::size_t
8774 length(const char_type* __s);
8775
8776 static const char_type*
8777 find(const char_type* __s, std::size_t __n, const char_type& __a);
8778
8779 static char_type*
8780 move(char_type* __s1, const char_type* __s2, std::size_t __n);
8781
8782 static char_type*
8783 copy(char_type* __s1, const char_type* __s2, std::size_t __n);
8784
8785 static char_type*
8786 assign(char_type* __s, std::size_t __n, char_type __a);
8787
8788 static char_type
8789 to_char_type(const int_type& __c)
8790 { return static_cast<char_type>(__c); }
8791
8792 static int_type
8793 to_int_type(const char_type& __c)
8794 { return static_cast<int_type>(__c); }
8795
8796 static bool
8797 eq_int_type(const int_type& __c1, const int_type& __c2)
8798 { return __c1 == __c2; }
8799
8800 static int_type
8801 eof()
8802 { return static_cast<int_type>(-1); }
8803
8804 static int_type
8805 not_eof(const int_type& __c)
8806 { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
8807 };
8808
8809 template<typename _CharT>
8810 int
8811 char_traits<_CharT>::
8812 compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
8813 {
8814 for (std::size_t __i = 0; __i < __n; ++__i)
8815 if (lt(__s1[__i], __s2[__i]))
8816 return -1;
8817 else if (lt(__s2[__i], __s1[__i]))
8818 return 1;
8819 return 0;
8820 }
8821
8822 template<typename _CharT>
8823 std::size_t
8824 char_traits<_CharT>::
8825 length(const char_type* __p)
8826 {
8827 std::size_t __i = 0;
8828 while (!eq(__p[__i], char_type()))
8829 ++__i;
8830 return __i;
8831 }
8832
8833 template<typename _CharT>
8834 const typename char_traits<_CharT>::char_type*
8835 char_traits<_CharT>::
8836 find(const char_type* __s, std::size_t __n, const char_type& __a)
8837 {
8838 for (std::size_t __i = 0; __i < __n; ++__i)
8839 if (eq(__s[__i], __a))
8840 return __s + __i;
8841 return 0;
8842 }
8843
8844 template<typename _CharT>
8845 typename char_traits<_CharT>::char_type*
8846 char_traits<_CharT>::
8847 move(char_type* __s1, const char_type* __s2, std::size_t __n)
8848 {
8849 return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
8850 __n * sizeof(char_type)));
8851 }
8852
8853 template<typename _CharT>
8854 typename char_traits<_CharT>::char_type*
8855 char_traits<_CharT>::
8856 copy(char_type* __s1, const char_type* __s2, std::size_t __n)
8857 {
8858
8859 std::copy(__s2, __s2 + __n, __s1);
8860 return __s1;
8861 }
8862
8863 template<typename _CharT>
8864 typename char_traits<_CharT>::char_type*
8865 char_traits<_CharT>::
8866 assign(char_type* __s, std::size_t __n, char_type __a)
8867 {
8868
8869 std::fill_n(__s, __n, __a);
8870 return __s;
8871 }
8872
8873
8874 }
8875
8876 namespace std __attribute__ ((__visibility__ ("default")))
8877 {
8878
8879 # 228 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/char_traits.h" 3
8880 template<class _CharT>
8881 struct char_traits : public __gnu_cxx::char_traits<_CharT>
8882 { };
8883
8884
8885
8886 template<>
8887 struct char_traits<char>
8888 {
8889 typedef char char_type;
8890 typedef int int_type;
8891 typedef streampos pos_type;
8892 typedef streamoff off_type;
8893 typedef mbstate_t state_type;
8894
8895 static void
8896 assign(char_type& __c1, const char_type& __c2)
8897 { __c1 = __c2; }
8898
8899 static bool
8900 eq(const char_type& __c1, const char_type& __c2)
8901 { return __c1 == __c2; }
8902
8903 static bool
8904 lt(const char_type& __c1, const char_type& __c2)
8905 { return __c1 < __c2; }
8906
8907 static int
8908 compare(const char_type* __s1, const char_type* __s2, size_t __n)
8909 { return __builtin_memcmp(__s1, __s2, __n); }
8910
8911 static size_t
8912 length(const char_type* __s)
8913 { return __builtin_strlen(__s); }
8914
8915 static const char_type*
8916 find(const char_type* __s, size_t __n, const char_type& __a)
8917 { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); }
8918
8919 static char_type*
8920 move(char_type* __s1, const char_type* __s2, size_t __n)
8921 { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); }
8922
8923 static char_type*
8924 copy(char_type* __s1, const char_type* __s2, size_t __n)
8925 { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); }
8926
8927 static char_type*
8928 assign(char_type* __s, size_t __n, char_type __a)
8929 { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); }
8930
8931 static char_type
8932 to_char_type(const int_type& __c)
8933 { return static_cast<char_type>(__c); }
8934
8935
8936
8937 static int_type
8938 to_int_type(const char_type& __c)
8939 { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
8940
8941 static bool
8942 eq_int_type(const int_type& __c1, const int_type& __c2)
8943 { return __c1 == __c2; }
8944
8945 static int_type
8946 eof()
8947 { return static_cast<int_type>(-1); }
8948
8949 static int_type
8950 not_eof(const int_type& __c)
8951 { return (__c == eof()) ? 0 : __c; }
8952 };
8953
8954
8955
8956
8957 template<>
8958 struct char_traits<wchar_t>
8959 {
8960 typedef wchar_t char_type;
8961 typedef wint_t int_type;
8962 typedef streamoff off_type;
8963 typedef wstreampos pos_type;
8964 typedef mbstate_t state_type;
8965
8966 static void
8967 assign(char_type& __c1, const char_type& __c2)
8968 { __c1 = __c2; }
8969
8970 static bool
8971 eq(const char_type& __c1, const char_type& __c2)
8972 { return __c1 == __c2; }
8973
8974 static bool
8975 lt(const char_type& __c1, const char_type& __c2)
8976 { return __c1 < __c2; }
8977
8978 static int
8979 compare(const char_type* __s1, const char_type* __s2, size_t __n)
8980 { return wmemcmp(__s1, __s2, __n); }
8981
8982 static size_t
8983 length(const char_type* __s)
8984 { return wcslen(__s); }
8985
8986 static const char_type*
8987 find(const char_type* __s, size_t __n, const char_type& __a)
8988 { return wmemchr(__s, __a, __n); }
8989
8990 static char_type*
8991 move(char_type* __s1, const char_type* __s2, size_t __n)
8992 { return wmemmove(__s1, __s2, __n); }
8993
8994 static char_type*
8995 copy(char_type* __s1, const char_type* __s2, size_t __n)
8996 { return wmemcpy(__s1, __s2, __n); }
8997
8998 static char_type*
8999 assign(char_type* __s, size_t __n, char_type __a)
9000 { return wmemset(__s, __a, __n); }
9001
9002 static char_type
9003 to_char_type(const int_type& __c)
9004 { return char_type(__c); }
9005
9006 static int_type
9007 to_int_type(const char_type& __c)
9008 { return int_type(__c); }
9009
9010 static bool
9011 eq_int_type(const int_type& __c1, const int_type& __c2)
9012 { return __c1 == __c2; }
9013
9014 static int_type
9015 eof()
9016 { return static_cast<int_type>((0xffffffffu)); }
9017
9018 static int_type
9019 not_eof(const int_type& __c)
9020 { return eq_int_type(__c, eof()) ? 0 : __c; }
9021 };
9022
9023
9024
9025 }
9026 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
9027
9028
9029 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 1 3
9030 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 3
9031
9032 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 3
9033
9034
9035 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 1 3
9036 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 3
9037
9038 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 3
9039
9040 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/clocale" 1 3
9041 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/clocale" 3
9042
9043 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/clocale" 3
9044
9045
9046 # 1 "/usr/include/locale.h" 1 3 4
9047 # 29 "/usr/include/locale.h" 3 4
9048 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
9049 # 30 "/usr/include/locale.h" 2 3 4
9050 # 1 "/usr/include/bits/locale.h" 1 3 4
9051 # 27 "/usr/include/bits/locale.h" 3 4
9052 enum
9053 {
9054 __LC_CTYPE = 0,
9055 __LC_NUMERIC = 1,
9056 __LC_TIME = 2,
9057 __LC_COLLATE = 3,
9058 __LC_MONETARY = 4,
9059 __LC_MESSAGES = 5,
9060 __LC_ALL = 6,
9061 __LC_PAPER = 7,
9062 __LC_NAME = 8,
9063 __LC_ADDRESS = 9,
9064 __LC_TELEPHONE = 10,
9065 __LC_MEASUREMENT = 11,
9066 __LC_IDENTIFICATION = 12
9067 };
9068 # 31 "/usr/include/locale.h" 2 3 4
9069
9070 extern "C" {
9071 # 51 "/usr/include/locale.h" 3 4
9072
9073
9074
9075 struct lconv
9076 {
9077
9078
9079 char *decimal_point;
9080 char *thousands_sep;
9081
9082
9083
9084
9085
9086 char *grouping;
9087
9088
9089
9090
9091
9092 char *int_curr_symbol;
9093 char *currency_symbol;
9094 char *mon_decimal_point;
9095 char *mon_thousands_sep;
9096 char *mon_grouping;
9097 char *positive_sign;
9098 char *negative_sign;
9099 char int_frac_digits;
9100 char frac_digits;
9101
9102 char p_cs_precedes;
9103
9104 char p_sep_by_space;
9105
9106 char n_cs_precedes;
9107
9108 char n_sep_by_space;
9109
9110
9111
9112
9113
9114
9115 char p_sign_posn;
9116 char n_sign_posn;
9117
9118
9119 char int_p_cs_precedes;
9120
9121 char int_p_sep_by_space;
9122
9123 char int_n_cs_precedes;
9124
9125 char int_n_sep_by_space;
9126
9127
9128
9129
9130
9131
9132 char int_p_sign_posn;
9133 char int_n_sign_posn;
9134 # 121 "/usr/include/locale.h" 3 4
9135 };
9136
9137
9138
9139 extern char *setlocale (int __category, __const char *__locale) throw ();
9140
9141
9142 extern struct lconv *localeconv (void) throw ();
9143
9144
9145 # 152 "/usr/include/locale.h" 3 4
9146 extern __locale_t newlocale (int __category_mask, __const char *__locale,
9147 __locale_t __base) throw ();
9148 # 187 "/usr/include/locale.h" 3 4
9149 extern __locale_t duplocale (__locale_t __dataset) throw ();
9150
9151
9152
9153 extern void freelocale (__locale_t __dataset) throw ();
9154
9155
9156
9157
9158
9159
9160 extern __locale_t uselocale (__locale_t __dataset) throw ();
9161
9162
9163
9164
9165
9166
9167
9168 }
9169 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/clocale" 2 3
9170 # 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/clocale" 3
9171 namespace std
9172 {
9173 using ::lconv;
9174 using ::setlocale;
9175 using ::localeconv;
9176 }
9177 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
9178
9179
9180
9181
9182
9183
9184 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
9185 {
9186
9187
9188 extern "C" __typeof(uselocale) __uselocale;
9189
9190
9191 }
9192
9193
9194 namespace std __attribute__ ((__visibility__ ("default")))
9195 {
9196
9197
9198 typedef __locale_t __c_locale;
9199
9200
9201
9202
9203
9204 inline int
9205 __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
9206 char* __out,
9207 const int __size __attribute__ ((__unused__)),
9208 const char* __fmt, ...)
9209 {
9210
9211 __c_locale __old = __gnu_cxx::__uselocale(__cloc);
9212 # 89 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 3
9213 __builtin_va_list __args;
9214 __builtin_va_start(__args, __fmt);
9215
9216
9217 const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
9218
9219
9220
9221
9222 __builtin_va_end(__args);
9223
9224
9225 __gnu_cxx::__uselocale(__old);
9226
9227
9228
9229
9230
9231
9232
9233 return __ret;
9234 }
9235
9236
9237 }
9238 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 2 3
9239 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iosfwd" 1 3
9240 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iosfwd" 3
9241
9242 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iosfwd" 3
9243
9244
9245
9246
9247
9248 namespace std __attribute__ ((__visibility__ ("default")))
9249 {
9250
9251 # 76 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iosfwd" 3
9252 class ios_base;
9253
9254 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9255 class basic_ios;
9256
9257 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9258 class basic_streambuf;
9259
9260 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9261 class basic_istream;
9262
9263 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9264 class basic_ostream;
9265
9266 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9267 class basic_iostream;
9268
9269 template<typename _CharT, typename _Traits = char_traits<_CharT>,
9270 typename _Alloc = allocator<_CharT> >
9271 class basic_stringbuf;
9272
9273 template<typename _CharT, typename _Traits = char_traits<_CharT>,
9274 typename _Alloc = allocator<_CharT> >
9275 class basic_istringstream;
9276
9277 template<typename _CharT, typename _Traits = char_traits<_CharT>,
9278 typename _Alloc = allocator<_CharT> >
9279 class basic_ostringstream;
9280
9281 template<typename _CharT, typename _Traits = char_traits<_CharT>,
9282 typename _Alloc = allocator<_CharT> >
9283 class basic_stringstream;
9284
9285 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9286 class basic_filebuf;
9287
9288 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9289 class basic_ifstream;
9290
9291 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9292 class basic_ofstream;
9293
9294 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9295 class basic_fstream;
9296
9297 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9298 class istreambuf_iterator;
9299
9300 template<typename _CharT, typename _Traits = char_traits<_CharT> >
9301 class ostreambuf_iterator;
9302
9303
9304
9305 typedef basic_ios<char> ios;
9306
9307
9308 typedef basic_streambuf<char> streambuf;
9309
9310
9311 typedef basic_istream<char> istream;
9312
9313
9314 typedef basic_ostream<char> ostream;
9315
9316
9317 typedef basic_iostream<char> iostream;
9318
9319
9320 typedef basic_stringbuf<char> stringbuf;
9321
9322
9323 typedef basic_istringstream<char> istringstream;
9324
9325
9326 typedef basic_ostringstream<char> ostringstream;
9327
9328
9329 typedef basic_stringstream<char> stringstream;
9330
9331
9332 typedef basic_filebuf<char> filebuf;
9333
9334
9335 typedef basic_ifstream<char> ifstream;
9336
9337
9338 typedef basic_ofstream<char> ofstream;
9339
9340
9341 typedef basic_fstream<char> fstream;
9342
9343
9344
9345 typedef basic_ios<wchar_t> wios;
9346
9347
9348 typedef basic_streambuf<wchar_t> wstreambuf;
9349
9350
9351 typedef basic_istream<wchar_t> wistream;
9352
9353
9354 typedef basic_ostream<wchar_t> wostream;
9355
9356
9357 typedef basic_iostream<wchar_t> wiostream;
9358
9359
9360 typedef basic_stringbuf<wchar_t> wstringbuf;
9361
9362
9363 typedef basic_istringstream<wchar_t> wistringstream;
9364
9365
9366 typedef basic_ostringstream<wchar_t> wostringstream;
9367
9368
9369 typedef basic_stringstream<wchar_t> wstringstream;
9370
9371
9372 typedef basic_filebuf<wchar_t> wfilebuf;
9373
9374
9375 typedef basic_ifstream<wchar_t> wifstream;
9376
9377
9378 typedef basic_ofstream<wchar_t> wofstream;
9379
9380
9381 typedef basic_fstream<wchar_t> wfstream;
9382
9383
9384
9385
9386 }
9387 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 2 3
9388 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 1 3
9389 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
9390
9391 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
9392
9393
9394 # 1 "/usr/include/ctype.h" 1 3 4
9395 # 30 "/usr/include/ctype.h" 3 4
9396 extern "C" {
9397 # 48 "/usr/include/ctype.h" 3 4
9398 enum
9399 {
9400 _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
9401 _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
9402 _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
9403 _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
9404 _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
9405 _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
9406 _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
9407 _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
9408 _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
9409 _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
9410 _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
9411 _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
9412 };
9413 # 81 "/usr/include/ctype.h" 3 4
9414 extern __const unsigned short int **__ctype_b_loc (void)
9415 throw () __attribute__ ((__const));
9416 extern __const __int32_t **__ctype_tolower_loc (void)
9417 throw () __attribute__ ((__const));
9418 extern __const __int32_t **__ctype_toupper_loc (void)
9419 throw () __attribute__ ((__const));
9420 # 96 "/usr/include/ctype.h" 3 4
9421
9422
9423
9424
9425
9426
9427 extern int isalnum (int) throw ();
9428 extern int isalpha (int) throw ();
9429 extern int iscntrl (int) throw ();
9430 extern int isdigit (int) throw ();
9431 extern int islower (int) throw ();
9432 extern int isgraph (int) throw ();
9433 extern int isprint (int) throw ();
9434 extern int ispunct (int) throw ();
9435 extern int isspace (int) throw ();
9436 extern int isupper (int) throw ();
9437 extern int isxdigit (int) throw ();
9438
9439
9440
9441 extern int tolower (int __c) throw ();
9442
9443
9444 extern int toupper (int __c) throw ();
9445
9446
9447
9448
9449
9450
9451
9452
9453 extern int isblank (int) throw ();
9454
9455
9456
9457
9458
9459
9460 extern int isctype (int __c, int __mask) throw ();
9461
9462
9463
9464
9465
9466
9467 extern int isascii (int __c) throw ();
9468
9469
9470
9471 extern int toascii (int __c) throw ();
9472
9473
9474
9475 extern int _toupper (int) throw ();
9476 extern int _tolower (int) throw ();
9477 # 247 "/usr/include/ctype.h" 3 4
9478 extern int isalnum_l (int, __locale_t) throw ();
9479 extern int isalpha_l (int, __locale_t) throw ();
9480 extern int iscntrl_l (int, __locale_t) throw ();
9481 extern int isdigit_l (int, __locale_t) throw ();
9482 extern int islower_l (int, __locale_t) throw ();
9483 extern int isgraph_l (int, __locale_t) throw ();
9484 extern int isprint_l (int, __locale_t) throw ();
9485 extern int ispunct_l (int, __locale_t) throw ();
9486 extern int isspace_l (int, __locale_t) throw ();
9487 extern int isupper_l (int, __locale_t) throw ();
9488 extern int isxdigit_l (int, __locale_t) throw ();
9489
9490 extern int isblank_l (int, __locale_t) throw ();
9491
9492
9493
9494 extern int __tolower_l (int __c, __locale_t __l) throw ();
9495 extern int tolower_l (int __c, __locale_t __l) throw ();
9496
9497
9498 extern int __toupper_l (int __c, __locale_t __l) throw ();
9499 extern int toupper_l (int __c, __locale_t __l) throw ();
9500 # 323 "/usr/include/ctype.h" 3 4
9501 }
9502 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 2 3
9503 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
9504 namespace std
9505 {
9506 using ::isalnum;
9507 using ::isalpha;
9508 using ::iscntrl;
9509 using ::isdigit;
9510 using ::isgraph;
9511 using ::islower;
9512 using ::isprint;
9513 using ::ispunct;
9514 using ::isspace;
9515 using ::isupper;
9516 using ::isxdigit;
9517 using ::tolower;
9518 using ::toupper;
9519 }
9520 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 2 3
9521
9522 namespace std __attribute__ ((__visibility__ ("default")))
9523 {
9524
9525 # 57 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/localefwd.h" 3
9526 class locale;
9527
9528 template<typename _Facet>
9529 bool
9530 has_facet(const locale&) throw();
9531
9532 template<typename _Facet>
9533 const _Facet&
9534 use_facet(const locale&);
9535
9536
9537 template<typename _CharT>
9538 bool
9539 isspace(_CharT, const locale&);
9540
9541 template<typename _CharT>
9542 bool
9543 isprint(_CharT, const locale&);
9544
9545 template<typename _CharT>
9546 bool
9547 iscntrl(_CharT, const locale&);
9548
9549 template<typename _CharT>
9550 bool
9551 isupper(_CharT, const locale&);
9552
9553 template<typename _CharT>
9554 bool
9555 islower(_CharT, const locale&);
9556
9557 template<typename _CharT>
9558 bool
9559 isalpha(_CharT, const locale&);
9560
9561 template<typename _CharT>
9562 bool
9563 isdigit(_CharT, const locale&);
9564
9565 template<typename _CharT>
9566 bool
9567 ispunct(_CharT, const locale&);
9568
9569 template<typename _CharT>
9570 bool
9571 isxdigit(_CharT, const locale&);
9572
9573 template<typename _CharT>
9574 bool
9575 isalnum(_CharT, const locale&);
9576
9577 template<typename _CharT>
9578 bool
9579 isgraph(_CharT, const locale&);
9580
9581 template<typename _CharT>
9582 _CharT
9583 toupper(_CharT, const locale&);
9584
9585 template<typename _CharT>
9586 _CharT
9587 tolower(_CharT, const locale&);
9588
9589
9590 class ctype_base;
9591 template<typename _CharT>
9592 class ctype;
9593 template<> class ctype<char>;
9594
9595 template<> class ctype<wchar_t>;
9596
9597 template<typename _CharT>
9598 class ctype_byname;
9599
9600
9601 class codecvt_base;
9602 template<typename _InternT, typename _ExternT, typename _StateT>
9603 class codecvt;
9604 template<> class codecvt<char, char, mbstate_t>;
9605
9606 template<> class codecvt<wchar_t, char, mbstate_t>;
9607
9608 template<typename _InternT, typename _ExternT, typename _StateT>
9609 class codecvt_byname;
9610
9611
9612
9613 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
9614 class num_get;
9615 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
9616 class num_put;
9617
9618 template<typename _CharT> class numpunct;
9619 template<typename _CharT> class numpunct_byname;
9620
9621
9622 template<typename _CharT>
9623 class collate;
9624 template<typename _CharT> class
9625 collate_byname;
9626
9627
9628 class time_base;
9629 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
9630 class time_get;
9631 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
9632 class time_get_byname;
9633 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
9634 class time_put;
9635 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
9636 class time_put_byname;
9637
9638
9639 class money_base;
9640
9641 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
9642 class money_get;
9643 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
9644 class money_put;
9645
9646 template<typename _CharT, bool _Intl = false>
9647 class moneypunct;
9648 template<typename _CharT, bool _Intl = false>
9649 class moneypunct_byname;
9650
9651
9652 class messages_base;
9653 template<typename _CharT>
9654 class messages;
9655 template<typename _CharT>
9656 class messages_byname;
9657
9658
9659 }
9660 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
9661 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream_insert.h" 1 3
9662 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream_insert.h" 3
9663
9664 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream_insert.h" 3
9665
9666
9667 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cxxabi_forced.h" 1 3
9668 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cxxabi_forced.h" 3
9669
9670 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/cxxabi_forced.h" 3
9671
9672 #pragma GCC visibility push(default)
9673
9674
9675 namespace __cxxabiv1
9676 {
9677
9678
9679
9680
9681
9682
9683
9684 class __forced_unwind
9685 {
9686 virtual ~__forced_unwind() throw();
9687
9688
9689 virtual void __pure_dummy() = 0;
9690 };
9691 }
9692
9693
9694 #pragma GCC visibility pop
9695 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream_insert.h" 2 3
9696
9697 namespace std __attribute__ ((__visibility__ ("default")))
9698 {
9699
9700
9701 template<typename _CharT, typename _Traits>
9702 inline void
9703 __ostream_write(basic_ostream<_CharT, _Traits>& __out,
9704 const _CharT* __s, streamsize __n)
9705 {
9706 typedef basic_ostream<_CharT, _Traits> __ostream_type;
9707 typedef typename __ostream_type::ios_base __ios_base;
9708
9709 const streamsize __put = __out.rdbuf()->sputn(__s, __n);
9710 if (__put != __n)
9711 __out.setstate(__ios_base::badbit);
9712 }
9713
9714 template<typename _CharT, typename _Traits>
9715 inline void
9716 __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
9717 {
9718 typedef basic_ostream<_CharT, _Traits> __ostream_type;
9719 typedef typename __ostream_type::ios_base __ios_base;
9720
9721 const _CharT __c = __out.fill();
9722 for (; __n > 0; --__n)
9723 {
9724 const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
9725 if (_Traits::eq_int_type(__put, _Traits::eof()))
9726 {
9727 __out.setstate(__ios_base::badbit);
9728 break;
9729 }
9730 }
9731 }
9732
9733 template<typename _CharT, typename _Traits>
9734 basic_ostream<_CharT, _Traits>&
9735 __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
9736 const _CharT* __s, streamsize __n)
9737 {
9738 typedef basic_ostream<_CharT, _Traits> __ostream_type;
9739 typedef typename __ostream_type::ios_base __ios_base;
9740
9741 typename __ostream_type::sentry __cerb(__out);
9742 if (__cerb)
9743 {
9744 try
9745 {
9746 const streamsize __w = __out.width();
9747 if (__w > __n)
9748 {
9749 const bool __left = ((__out.flags()
9750 & __ios_base::adjustfield)
9751 == __ios_base::left);
9752 if (!__left)
9753 __ostream_fill(__out, __w - __n);
9754 if (__out.good())
9755 __ostream_write(__out, __s, __n);
9756 if (__left && __out.good())
9757 __ostream_fill(__out, __w - __n);
9758 }
9759 else
9760 __ostream_write(__out, __s, __n);
9761 __out.width(0);
9762 }
9763 catch(__cxxabiv1::__forced_unwind&)
9764 {
9765 __out._M_setstate(__ios_base::badbit);
9766 throw;
9767 }
9768 catch(...)
9769 { __out._M_setstate(__ios_base::badbit); }
9770 }
9771 return __out;
9772 }
9773
9774
9775
9776
9777 extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
9778
9779
9780 extern template wostream& __ostream_insert(wostream&, const wchar_t*,
9781 streamsize);
9782
9783
9784
9785
9786 }
9787 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
9788
9789
9790
9791 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 1 3
9792 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
9793 namespace std __attribute__ ((__visibility__ ("default")))
9794 {
9795
9796 # 101 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
9797 template<typename _Arg, typename _Result>
9798 struct unary_function
9799 {
9800
9801 typedef _Arg argument_type;
9802
9803
9804 typedef _Result result_type;
9805 };
9806
9807
9808
9809
9810 template<typename _Arg1, typename _Arg2, typename _Result>
9811 struct binary_function
9812 {
9813
9814 typedef _Arg1 first_argument_type;
9815
9816
9817 typedef _Arg2 second_argument_type;
9818
9819
9820 typedef _Result result_type;
9821 };
9822 # 140 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
9823 template<typename _Tp>
9824 struct plus : public binary_function<_Tp, _Tp, _Tp>
9825 {
9826 _Tp
9827 operator()(const _Tp& __x, const _Tp& __y) const
9828 { return __x + __y; }
9829 };
9830
9831
9832 template<typename _Tp>
9833 struct minus : public binary_function<_Tp, _Tp, _Tp>
9834 {
9835 _Tp
9836 operator()(const _Tp& __x, const _Tp& __y) const
9837 { return __x - __y; }
9838 };
9839
9840
9841 template<typename _Tp>
9842 struct multiplies : public binary_function<_Tp, _Tp, _Tp>
9843 {
9844 _Tp
9845 operator()(const _Tp& __x, const _Tp& __y) const
9846 { return __x * __y; }
9847 };
9848
9849
9850 template<typename _Tp>
9851 struct divides : public binary_function<_Tp, _Tp, _Tp>
9852 {
9853 _Tp
9854 operator()(const _Tp& __x, const _Tp& __y) const
9855 { return __x / __y; }
9856 };
9857
9858
9859 template<typename _Tp>
9860 struct modulus : public binary_function<_Tp, _Tp, _Tp>
9861 {
9862 _Tp
9863 operator()(const _Tp& __x, const _Tp& __y) const
9864 { return __x % __y; }
9865 };
9866
9867
9868 template<typename _Tp>
9869 struct negate : public unary_function<_Tp, _Tp>
9870 {
9871 _Tp
9872 operator()(const _Tp& __x) const
9873 { return -__x; }
9874 };
9875 # 204 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
9876 template<typename _Tp>
9877 struct equal_to : public binary_function<_Tp, _Tp, bool>
9878 {
9879 bool
9880 operator()(const _Tp& __x, const _Tp& __y) const
9881 { return __x == __y; }
9882 };
9883
9884
9885 template<typename _Tp>
9886 struct not_equal_to : public binary_function<_Tp, _Tp, bool>
9887 {
9888 bool
9889 operator()(const _Tp& __x, const _Tp& __y) const
9890 { return __x != __y; }
9891 };
9892
9893
9894 template<typename _Tp>
9895 struct greater : public binary_function<_Tp, _Tp, bool>
9896 {
9897 bool
9898 operator()(const _Tp& __x, const _Tp& __y) const
9899 { return __x > __y; }
9900 };
9901
9902
9903 template<typename _Tp>
9904 struct less : public binary_function<_Tp, _Tp, bool>
9905 {
9906 bool
9907 operator()(const _Tp& __x, const _Tp& __y) const
9908 { return __x < __y; }
9909 };
9910
9911
9912 template<typename _Tp>
9913 struct greater_equal : public binary_function<_Tp, _Tp, bool>
9914 {
9915 bool
9916 operator()(const _Tp& __x, const _Tp& __y) const
9917 { return __x >= __y; }
9918 };
9919
9920
9921 template<typename _Tp>
9922 struct less_equal : public binary_function<_Tp, _Tp, bool>
9923 {
9924 bool
9925 operator()(const _Tp& __x, const _Tp& __y) const
9926 { return __x <= __y; }
9927 };
9928 # 268 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
9929 template<typename _Tp>
9930 struct logical_and : public binary_function<_Tp, _Tp, bool>
9931 {
9932 bool
9933 operator()(const _Tp& __x, const _Tp& __y) const
9934 { return __x && __y; }
9935 };
9936
9937
9938 template<typename _Tp>
9939 struct logical_or : public binary_function<_Tp, _Tp, bool>
9940 {
9941 bool
9942 operator()(const _Tp& __x, const _Tp& __y) const
9943 { return __x || __y; }
9944 };
9945
9946
9947 template<typename _Tp>
9948 struct logical_not : public unary_function<_Tp, bool>
9949 {
9950 bool
9951 operator()(const _Tp& __x) const
9952 { return !__x; }
9953 };
9954
9955
9956
9957
9958 template<typename _Tp>
9959 struct bit_and : public binary_function<_Tp, _Tp, _Tp>
9960 {
9961 _Tp
9962 operator()(const _Tp& __x, const _Tp& __y) const
9963 { return __x & __y; }
9964 };
9965
9966 template<typename _Tp>
9967 struct bit_or : public binary_function<_Tp, _Tp, _Tp>
9968 {
9969 _Tp
9970 operator()(const _Tp& __x, const _Tp& __y) const
9971 { return __x | __y; }
9972 };
9973
9974 template<typename _Tp>
9975 struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
9976 {
9977 _Tp
9978 operator()(const _Tp& __x, const _Tp& __y) const
9979 { return __x ^ __y; }
9980 };
9981 # 351 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
9982 template<typename _Predicate>
9983 class unary_negate
9984 : public unary_function<typename _Predicate::argument_type, bool>
9985 {
9986 protected:
9987 _Predicate _M_pred;
9988
9989 public:
9990 explicit
9991 unary_negate(const _Predicate& __x) : _M_pred(__x) { }
9992
9993 bool
9994 operator()(const typename _Predicate::argument_type& __x) const
9995 { return !_M_pred(__x); }
9996 };
9997
9998
9999 template<typename _Predicate>
10000 inline unary_negate<_Predicate>
10001 not1(const _Predicate& __pred)
10002 { return unary_negate<_Predicate>(__pred); }
10003
10004
10005 template<typename _Predicate>
10006 class binary_negate
10007 : public binary_function<typename _Predicate::first_argument_type,
10008 typename _Predicate::second_argument_type, bool>
10009 {
10010 protected:
10011 _Predicate _M_pred;
10012
10013 public:
10014 explicit
10015 binary_negate(const _Predicate& __x) : _M_pred(__x) { }
10016
10017 bool
10018 operator()(const typename _Predicate::first_argument_type& __x,
10019 const typename _Predicate::second_argument_type& __y) const
10020 { return !_M_pred(__x, __y); }
10021 };
10022
10023
10024 template<typename _Predicate>
10025 inline binary_negate<_Predicate>
10026 not2(const _Predicate& __pred)
10027 { return binary_negate<_Predicate>(__pred); }
10028 # 422 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
10029 template<typename _Arg, typename _Result>
10030 class pointer_to_unary_function : public unary_function<_Arg, _Result>
10031 {
10032 protected:
10033 _Result (*_M_ptr)(_Arg);
10034
10035 public:
10036 pointer_to_unary_function() { }
10037
10038 explicit
10039 pointer_to_unary_function(_Result (*__x)(_Arg))
10040 : _M_ptr(__x) { }
10041
10042 _Result
10043 operator()(_Arg __x) const
10044 { return _M_ptr(__x); }
10045 };
10046
10047
10048 template<typename _Arg, typename _Result>
10049 inline pointer_to_unary_function<_Arg, _Result>
10050 ptr_fun(_Result (*__x)(_Arg))
10051 { return pointer_to_unary_function<_Arg, _Result>(__x); }
10052
10053
10054 template<typename _Arg1, typename _Arg2, typename _Result>
10055 class pointer_to_binary_function
10056 : public binary_function<_Arg1, _Arg2, _Result>
10057 {
10058 protected:
10059 _Result (*_M_ptr)(_Arg1, _Arg2);
10060
10061 public:
10062 pointer_to_binary_function() { }
10063
10064 explicit
10065 pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
10066 : _M_ptr(__x) { }
10067
10068 _Result
10069 operator()(_Arg1 __x, _Arg2 __y) const
10070 { return _M_ptr(__x, __y); }
10071 };
10072
10073
10074 template<typename _Arg1, typename _Arg2, typename _Result>
10075 inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
10076 ptr_fun(_Result (*__x)(_Arg1, _Arg2))
10077 { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
10078
10079
10080 template<typename _Tp>
10081 struct _Identity : public unary_function<_Tp,_Tp>
10082 {
10083 _Tp&
10084 operator()(_Tp& __x) const
10085 { return __x; }
10086
10087 const _Tp&
10088 operator()(const _Tp& __x) const
10089 { return __x; }
10090 };
10091
10092 template<typename _Pair>
10093 struct _Select1st : public unary_function<_Pair,
10094 typename _Pair::first_type>
10095 {
10096 typename _Pair::first_type&
10097 operator()(_Pair& __x) const
10098 { return __x.first; }
10099
10100 const typename _Pair::first_type&
10101 operator()(const _Pair& __x) const
10102 { return __x.first; }
10103 # 508 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
10104 };
10105
10106 template<typename _Pair>
10107 struct _Select2nd : public unary_function<_Pair,
10108 typename _Pair::second_type>
10109 {
10110 typename _Pair::second_type&
10111 operator()(_Pair& __x) const
10112 { return __x.second; }
10113
10114 const typename _Pair::second_type&
10115 operator()(const _Pair& __x) const
10116 { return __x.second; }
10117 };
10118 # 541 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 3
10119 template<typename _Ret, typename _Tp>
10120 class mem_fun_t : public unary_function<_Tp*, _Ret>
10121 {
10122 public:
10123 explicit
10124 mem_fun_t(_Ret (_Tp::*__pf)())
10125 : _M_f(__pf) { }
10126
10127 _Ret
10128 operator()(_Tp* __p) const
10129 { return (__p->*_M_f)(); }
10130
10131 private:
10132 _Ret (_Tp::*_M_f)();
10133 };
10134
10135
10136
10137 template<typename _Ret, typename _Tp>
10138 class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
10139 {
10140 public:
10141 explicit
10142 const_mem_fun_t(_Ret (_Tp::*__pf)() const)
10143 : _M_f(__pf) { }
10144
10145 _Ret
10146 operator()(const _Tp* __p) const
10147 { return (__p->*_M_f)(); }
10148
10149 private:
10150 _Ret (_Tp::*_M_f)() const;
10151 };
10152
10153
10154
10155 template<typename _Ret, typename _Tp>
10156 class mem_fun_ref_t : public unary_function<_Tp, _Ret>
10157 {
10158 public:
10159 explicit
10160 mem_fun_ref_t(_Ret (_Tp::*__pf)())
10161 : _M_f(__pf) { }
10162
10163 _Ret
10164 operator()(_Tp& __r) const
10165 { return (__r.*_M_f)(); }
10166
10167 private:
10168 _Ret (_Tp::*_M_f)();
10169 };
10170
10171
10172
10173 template<typename _Ret, typename _Tp>
10174 class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
10175 {
10176 public:
10177 explicit
10178 const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
10179 : _M_f(__pf) { }
10180
10181 _Ret
10182 operator()(const _Tp& __r) const
10183 { return (__r.*_M_f)(); }
10184
10185 private:
10186 _Ret (_Tp::*_M_f)() const;
10187 };
10188
10189
10190
10191 template<typename _Ret, typename _Tp, typename _Arg>
10192 class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
10193 {
10194 public:
10195 explicit
10196 mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
10197 : _M_f(__pf) { }
10198
10199 _Ret
10200 operator()(_Tp* __p, _Arg __x) const
10201 { return (__p->*_M_f)(__x); }
10202
10203 private:
10204 _Ret (_Tp::*_M_f)(_Arg);
10205 };
10206
10207
10208
10209 template<typename _Ret, typename _Tp, typename _Arg>
10210 class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
10211 {
10212 public:
10213 explicit
10214 const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
10215 : _M_f(__pf) { }
10216
10217 _Ret
10218 operator()(const _Tp* __p, _Arg __x) const
10219 { return (__p->*_M_f)(__x); }
10220
10221 private:
10222 _Ret (_Tp::*_M_f)(_Arg) const;
10223 };
10224
10225
10226
10227 template<typename _Ret, typename _Tp, typename _Arg>
10228 class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
10229 {
10230 public:
10231 explicit
10232 mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
10233 : _M_f(__pf) { }
10234
10235 _Ret
10236 operator()(_Tp& __r, _Arg __x) const
10237 { return (__r.*_M_f)(__x); }
10238
10239 private:
10240 _Ret (_Tp::*_M_f)(_Arg);
10241 };
10242
10243
10244
10245 template<typename _Ret, typename _Tp, typename _Arg>
10246 class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
10247 {
10248 public:
10249 explicit
10250 const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
10251 : _M_f(__pf) { }
10252
10253 _Ret
10254 operator()(const _Tp& __r, _Arg __x) const
10255 { return (__r.*_M_f)(__x); }
10256
10257 private:
10258 _Ret (_Tp::*_M_f)(_Arg) const;
10259 };
10260
10261
10262
10263 template<typename _Ret, typename _Tp>
10264 inline mem_fun_t<_Ret, _Tp>
10265 mem_fun(_Ret (_Tp::*__f)())
10266 { return mem_fun_t<_Ret, _Tp>(__f); }
10267
10268 template<typename _Ret, typename _Tp>
10269 inline const_mem_fun_t<_Ret, _Tp>
10270 mem_fun(_Ret (_Tp::*__f)() const)
10271 { return const_mem_fun_t<_Ret, _Tp>(__f); }
10272
10273 template<typename _Ret, typename _Tp>
10274 inline mem_fun_ref_t<_Ret, _Tp>
10275 mem_fun_ref(_Ret (_Tp::*__f)())
10276 { return mem_fun_ref_t<_Ret, _Tp>(__f); }
10277
10278 template<typename _Ret, typename _Tp>
10279 inline const_mem_fun_ref_t<_Ret, _Tp>
10280 mem_fun_ref(_Ret (_Tp::*__f)() const)
10281 { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
10282
10283 template<typename _Ret, typename _Tp, typename _Arg>
10284 inline mem_fun1_t<_Ret, _Tp, _Arg>
10285 mem_fun(_Ret (_Tp::*__f)(_Arg))
10286 { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
10287
10288 template<typename _Ret, typename _Tp, typename _Arg>
10289 inline const_mem_fun1_t<_Ret, _Tp, _Arg>
10290 mem_fun(_Ret (_Tp::*__f)(_Arg) const)
10291 { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
10292
10293 template<typename _Ret, typename _Tp, typename _Arg>
10294 inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
10295 mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
10296 { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
10297
10298 template<typename _Ret, typename _Tp, typename _Arg>
10299 inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
10300 mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
10301 { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
10302
10303
10304
10305
10306 }
10307
10308
10309 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/binders.h" 1 3
10310 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/binders.h" 3
10311 namespace std __attribute__ ((__visibility__ ("default")))
10312 {
10313
10314 # 99 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward/binders.h" 3
10315 template<typename _Operation>
10316 class binder1st
10317 : public unary_function<typename _Operation::second_argument_type,
10318 typename _Operation::result_type>
10319 {
10320 protected:
10321 _Operation op;
10322 typename _Operation::first_argument_type value;
10323
10324 public:
10325 binder1st(const _Operation& __x,
10326 const typename _Operation::first_argument_type& __y)
10327 : op(__x), value(__y) { }
10328
10329 typename _Operation::result_type
10330 operator()(const typename _Operation::second_argument_type& __x) const
10331 { return op(value, __x); }
10332
10333
10334
10335 typename _Operation::result_type
10336 operator()(typename _Operation::second_argument_type& __x) const
10337 { return op(value, __x); }
10338 } ;
10339
10340
10341 template<typename _Operation, typename _Tp>
10342 inline binder1st<_Operation>
10343 bind1st(const _Operation& __fn, const _Tp& __x)
10344 {
10345 typedef typename _Operation::first_argument_type _Arg1_type;
10346 return binder1st<_Operation>(__fn, _Arg1_type(__x));
10347 }
10348
10349
10350 template<typename _Operation>
10351 class binder2nd
10352 : public unary_function<typename _Operation::first_argument_type,
10353 typename _Operation::result_type>
10354 {
10355 protected:
10356 _Operation op;
10357 typename _Operation::second_argument_type value;
10358
10359 public:
10360 binder2nd(const _Operation& __x,
10361 const typename _Operation::second_argument_type& __y)
10362 : op(__x), value(__y) { }
10363
10364 typename _Operation::result_type
10365 operator()(const typename _Operation::first_argument_type& __x) const
10366 { return op(__x, value); }
10367
10368
10369
10370 typename _Operation::result_type
10371 operator()(typename _Operation::first_argument_type& __x) const
10372 { return op(__x, value); }
10373 } ;
10374
10375
10376 template<typename _Operation, typename _Tp>
10377 inline binder2nd<_Operation>
10378 bind2nd(const _Operation& __fn, const _Tp& __x)
10379 {
10380 typedef typename _Operation::second_argument_type _Arg2_type;
10381 return binder2nd<_Operation>(__fn, _Arg2_type(__x));
10382 }
10383
10384
10385
10386 }
10387 # 732 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_function.h" 2 3
10388 # 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
10389
10390
10391 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/range_access.h" 1 3
10392 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/range_access.h" 3
10393
10394 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/range_access.h" 3
10395 # 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
10396 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 1 3
10397 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
10398
10399 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
10400
10401 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/atomicity.h" 1 3
10402 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/atomicity.h" 3
10403 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 1 3
10404 # 30 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 3
10405 #pragma GCC visibility push(default)
10406 # 162 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 3
10407 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 1 3
10408 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
10409 # 1 "/usr/include/pthread.h" 1 3 4
10410 # 25 "/usr/include/pthread.h" 3 4
10411 # 1 "/usr/include/sched.h" 1 3 4
10412 # 30 "/usr/include/sched.h" 3 4
10413 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
10414 # 31 "/usr/include/sched.h" 2 3 4
10415
10416
10417
10418 # 1 "/usr/include/time.h" 1 3 4
10419 # 35 "/usr/include/sched.h" 2 3 4
10420 # 43 "/usr/include/sched.h" 3 4
10421 # 1 "/usr/include/bits/sched.h" 1 3 4
10422 # 74 "/usr/include/bits/sched.h" 3 4
10423 struct sched_param
10424 {
10425 int __sched_priority;
10426 };
10427
10428 extern "C" {
10429
10430
10431
10432 extern int clone (int (*__fn) (void *__arg), void *__child_stack,
10433 int __flags, void *__arg, ...) throw ();
10434
10435
10436 extern int unshare (int __flags) throw ();
10437
10438
10439 extern int sched_getcpu (void) throw ();
10440
10441
10442 }
10443
10444
10445
10446
10447
10448
10449
10450 struct __sched_param
10451 {
10452 int __sched_priority;
10453 };
10454 # 116 "/usr/include/bits/sched.h" 3 4
10455 typedef unsigned long int __cpu_mask;
10456
10457
10458
10459
10460
10461
10462 typedef struct
10463 {
10464 __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
10465 } cpu_set_t;
10466 # 199 "/usr/include/bits/sched.h" 3 4
10467 extern "C" {
10468
10469 extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
10470 throw ();
10471 extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__));
10472 extern void __sched_cpufree (cpu_set_t *__set) throw ();
10473
10474 }
10475 # 44 "/usr/include/sched.h" 2 3 4
10476
10477
10478
10479
10480 extern "C" {
10481
10482
10483 extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
10484 throw ();
10485
10486
10487 extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
10488
10489
10490 extern int sched_setscheduler (__pid_t __pid, int __policy,
10491 __const struct sched_param *__param) throw ();
10492
10493
10494 extern int sched_getscheduler (__pid_t __pid) throw ();
10495
10496
10497 extern int sched_yield (void) throw ();
10498
10499
10500 extern int sched_get_priority_max (int __algorithm) throw ();
10501
10502
10503 extern int sched_get_priority_min (int __algorithm) throw ();
10504
10505
10506 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
10507 # 118 "/usr/include/sched.h" 3 4
10508 extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
10509 __const cpu_set_t *__cpuset) throw ();
10510
10511
10512 extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
10513 cpu_set_t *__cpuset) throw ();
10514
10515
10516 }
10517 # 26 "/usr/include/pthread.h" 2 3 4
10518 # 1 "/usr/include/time.h" 1 3 4
10519 # 30 "/usr/include/time.h" 3 4
10520 extern "C" {
10521
10522
10523
10524
10525
10526
10527
10528 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
10529 # 39 "/usr/include/time.h" 2 3 4
10530
10531
10532
10533 # 1 "/usr/include/bits/time.h" 1 3 4
10534 # 43 "/usr/include/time.h" 2 3 4
10535 # 131 "/usr/include/time.h" 3 4
10536
10537
10538 struct tm
10539 {
10540 int tm_sec;
10541 int tm_min;
10542 int tm_hour;
10543 int tm_mday;
10544 int tm_mon;
10545 int tm_year;
10546 int tm_wday;
10547 int tm_yday;
10548 int tm_isdst;
10549
10550
10551 long int tm_gmtoff;
10552 __const char *tm_zone;
10553
10554
10555
10556
10557 };
10558
10559
10560
10561
10562
10563
10564
10565
10566 struct itimerspec
10567 {
10568 struct timespec it_interval;
10569 struct timespec it_value;
10570 };
10571
10572
10573 struct sigevent;
10574 # 180 "/usr/include/time.h" 3 4
10575
10576
10577
10578 extern clock_t clock (void) throw ();
10579
10580
10581 extern time_t time (time_t *__timer) throw ();
10582
10583
10584 extern double difftime (time_t __time1, time_t __time0)
10585 throw () __attribute__ ((__const__));
10586
10587
10588 extern time_t mktime (struct tm *__tp) throw ();
10589
10590
10591
10592
10593
10594 extern size_t strftime (char *__restrict __s, size_t __maxsize,
10595 __const char *__restrict __format,
10596 __const struct tm *__restrict __tp) throw ();
10597
10598
10599
10600
10601
10602 extern char *strptime (__const char *__restrict __s,
10603 __const char *__restrict __fmt, struct tm *__tp)
10604 throw ();
10605
10606
10607
10608
10609
10610
10611
10612 extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
10613 __const char *__restrict __format,
10614 __const struct tm *__restrict __tp,
10615 __locale_t __loc) throw ();
10616
10617
10618
10619 extern char *strptime_l (__const char *__restrict __s,
10620 __const char *__restrict __fmt, struct tm *__tp,
10621 __locale_t __loc) throw ();
10622
10623
10624
10625
10626
10627
10628 extern struct tm *gmtime (__const time_t *__timer) throw ();
10629
10630
10631
10632 extern struct tm *localtime (__const time_t *__timer) throw ();
10633
10634
10635
10636
10637
10638 extern struct tm *gmtime_r (__const time_t *__restrict __timer,
10639 struct tm *__restrict __tp) throw ();
10640
10641
10642
10643 extern struct tm *localtime_r (__const time_t *__restrict __timer,
10644 struct tm *__restrict __tp) throw ();
10645
10646
10647
10648
10649
10650 extern char *asctime (__const struct tm *__tp) throw ();
10651
10652
10653 extern char *ctime (__const time_t *__timer) throw ();
10654
10655
10656
10657
10658
10659
10660
10661 extern char *asctime_r (__const struct tm *__restrict __tp,
10662 char *__restrict __buf) throw ();
10663
10664
10665 extern char *ctime_r (__const time_t *__restrict __timer,
10666 char *__restrict __buf) throw ();
10667
10668
10669
10670
10671 extern char *__tzname[2];
10672 extern int __daylight;
10673 extern long int __timezone;
10674
10675
10676
10677
10678 extern char *tzname[2];
10679
10680
10681
10682 extern void tzset (void) throw ();
10683
10684
10685
10686 extern int daylight;
10687 extern long int timezone;
10688
10689
10690
10691
10692
10693 extern int stime (__const time_t *__when) throw ();
10694 # 313 "/usr/include/time.h" 3 4
10695 extern time_t timegm (struct tm *__tp) throw ();
10696
10697
10698 extern time_t timelocal (struct tm *__tp) throw ();
10699
10700
10701 extern int dysize (int __year) throw () __attribute__ ((__const__));
10702 # 328 "/usr/include/time.h" 3 4
10703 extern int nanosleep (__const struct timespec *__requested_time,
10704 struct timespec *__remaining);
10705
10706
10707
10708 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
10709
10710
10711 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
10712
10713
10714 extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
10715 throw ();
10716
10717
10718
10719
10720
10721
10722 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
10723 __const struct timespec *__req,
10724 struct timespec *__rem);
10725
10726
10727 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
10728
10729
10730
10731
10732 extern int timer_create (clockid_t __clock_id,
10733 struct sigevent *__restrict __evp,
10734 timer_t *__restrict __timerid) throw ();
10735
10736
10737 extern int timer_delete (timer_t __timerid) throw ();
10738
10739
10740 extern int timer_settime (timer_t __timerid, int __flags,
10741 __const struct itimerspec *__restrict __value,
10742 struct itimerspec *__restrict __ovalue) throw ();
10743
10744
10745 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
10746 throw ();
10747
10748
10749 extern int timer_getoverrun (timer_t __timerid) throw ();
10750 # 390 "/usr/include/time.h" 3 4
10751 extern int getdate_err;
10752 # 399 "/usr/include/time.h" 3 4
10753 extern struct tm *getdate (__const char *__string);
10754 # 413 "/usr/include/time.h" 3 4
10755 extern int getdate_r (__const char *__restrict __string,
10756 struct tm *__restrict __resbufp);
10757
10758
10759 }
10760 # 27 "/usr/include/pthread.h" 2 3 4
10761
10762
10763 # 1 "/usr/include/bits/setjmp.h" 1 3 4
10764 # 27 "/usr/include/bits/setjmp.h" 3 4
10765 # 1 "/usr/include/bits/wordsize.h" 1 3 4
10766 # 28 "/usr/include/bits/setjmp.h" 2 3 4
10767
10768
10769
10770
10771 typedef long int __jmp_buf[8];
10772 # 30 "/usr/include/pthread.h" 2 3 4
10773 # 1 "/usr/include/bits/wordsize.h" 1 3 4
10774 # 31 "/usr/include/pthread.h" 2 3 4
10775
10776
10777
10778 enum
10779 {
10780 PTHREAD_CREATE_JOINABLE,
10781
10782 PTHREAD_CREATE_DETACHED
10783
10784 };
10785
10786
10787
10788 enum
10789 {
10790 PTHREAD_MUTEX_TIMED_NP,
10791 PTHREAD_MUTEX_RECURSIVE_NP,
10792 PTHREAD_MUTEX_ERRORCHECK_NP,
10793 PTHREAD_MUTEX_ADAPTIVE_NP
10794
10795 ,
10796 PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
10797 PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
10798 PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
10799 PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
10800
10801
10802
10803 , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
10804
10805 };
10806
10807
10808
10809
10810 enum
10811 {
10812 PTHREAD_MUTEX_STALLED,
10813 PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
10814 PTHREAD_MUTEX_ROBUST,
10815 PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
10816 };
10817
10818
10819
10820
10821
10822 enum
10823 {
10824 PTHREAD_PRIO_NONE,
10825 PTHREAD_PRIO_INHERIT,
10826 PTHREAD_PRIO_PROTECT
10827 };
10828 # 115 "/usr/include/pthread.h" 3 4
10829 enum
10830 {
10831 PTHREAD_RWLOCK_PREFER_READER_NP,
10832 PTHREAD_RWLOCK_PREFER_WRITER_NP,
10833 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
10834 PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
10835 };
10836 # 147 "/usr/include/pthread.h" 3 4
10837 enum
10838 {
10839 PTHREAD_INHERIT_SCHED,
10840
10841 PTHREAD_EXPLICIT_SCHED
10842
10843 };
10844
10845
10846
10847 enum
10848 {
10849 PTHREAD_SCOPE_SYSTEM,
10850
10851 PTHREAD_SCOPE_PROCESS
10852
10853 };
10854
10855
10856
10857 enum
10858 {
10859 PTHREAD_PROCESS_PRIVATE,
10860
10861 PTHREAD_PROCESS_SHARED
10862
10863 };
10864 # 182 "/usr/include/pthread.h" 3 4
10865 struct _pthread_cleanup_buffer
10866 {
10867 void (*__routine) (void *);
10868 void *__arg;
10869 int __canceltype;
10870 struct _pthread_cleanup_buffer *__prev;
10871 };
10872
10873
10874 enum
10875 {
10876 PTHREAD_CANCEL_ENABLE,
10877
10878 PTHREAD_CANCEL_DISABLE
10879
10880 };
10881 enum
10882 {
10883 PTHREAD_CANCEL_DEFERRED,
10884
10885 PTHREAD_CANCEL_ASYNCHRONOUS
10886
10887 };
10888 # 220 "/usr/include/pthread.h" 3 4
10889 extern "C" {
10890
10891
10892
10893
10894 extern int pthread_create (pthread_t *__restrict __newthread,
10895 __const pthread_attr_t *__restrict __attr,
10896 void *(*__start_routine) (void *),
10897 void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3)));
10898
10899
10900
10901
10902
10903 extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
10904
10905
10906
10907
10908
10909
10910
10911 extern int pthread_join (pthread_t __th, void **__thread_return);
10912
10913
10914
10915
10916 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();
10917
10918
10919
10920
10921
10922
10923
10924 extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
10925 __const struct timespec *__abstime);
10926
10927
10928
10929
10930
10931
10932 extern int pthread_detach (pthread_t __th) throw ();
10933
10934
10935
10936 extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));
10937
10938
10939 extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();
10940
10941
10942
10943
10944
10945
10946
10947 extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));
10948
10949
10950 extern int pthread_attr_destroy (pthread_attr_t *__attr)
10951 throw () __attribute__ ((__nonnull__ (1)));
10952
10953
10954 extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
10955 int *__detachstate)
10956 throw () __attribute__ ((__nonnull__ (1, 2)));
10957
10958
10959 extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
10960 int __detachstate)
10961 throw () __attribute__ ((__nonnull__ (1)));
10962
10963
10964
10965 extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
10966 size_t *__guardsize)
10967 throw () __attribute__ ((__nonnull__ (1, 2)));
10968
10969
10970 extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
10971 size_t __guardsize)
10972 throw () __attribute__ ((__nonnull__ (1)));
10973
10974
10975
10976 extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
10977 __attr,
10978 struct sched_param *__restrict __param)
10979 throw () __attribute__ ((__nonnull__ (1, 2)));
10980
10981
10982 extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
10983 __const struct sched_param *__restrict
10984 __param) throw () __attribute__ ((__nonnull__ (1, 2)));
10985
10986
10987 extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
10988 __attr, int *__restrict __policy)
10989 throw () __attribute__ ((__nonnull__ (1, 2)));
10990
10991
10992 extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
10993 throw () __attribute__ ((__nonnull__ (1)));
10994
10995
10996 extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
10997 __attr, int *__restrict __inherit)
10998 throw () __attribute__ ((__nonnull__ (1, 2)));
10999
11000
11001 extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
11002 int __inherit)
11003 throw () __attribute__ ((__nonnull__ (1)));
11004
11005
11006
11007 extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
11008 int *__restrict __scope)
11009 throw () __attribute__ ((__nonnull__ (1, 2)));
11010
11011
11012 extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
11013 throw () __attribute__ ((__nonnull__ (1)));
11014
11015
11016 extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
11017 __attr, void **__restrict __stackaddr)
11018 throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
11019
11020
11021
11022
11023
11024 extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
11025 void *__stackaddr)
11026 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
11027
11028
11029 extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
11030 __attr, size_t *__restrict __stacksize)
11031 throw () __attribute__ ((__nonnull__ (1, 2)));
11032
11033
11034
11035
11036 extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
11037 size_t __stacksize)
11038 throw () __attribute__ ((__nonnull__ (1)));
11039
11040
11041
11042 extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
11043 void **__restrict __stackaddr,
11044 size_t *__restrict __stacksize)
11045 throw () __attribute__ ((__nonnull__ (1, 2, 3)));
11046
11047
11048
11049
11050 extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
11051 size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));
11052
11053
11054
11055
11056
11057 extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
11058 size_t __cpusetsize,
11059 __const cpu_set_t *__cpuset)
11060 throw () __attribute__ ((__nonnull__ (1, 3)));
11061
11062
11063
11064 extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
11065 size_t __cpusetsize,
11066 cpu_set_t *__cpuset)
11067 throw () __attribute__ ((__nonnull__ (1, 3)));
11068
11069
11070
11071
11072
11073 extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
11074 throw () __attribute__ ((__nonnull__ (2)));
11075
11076
11077
11078
11079
11080
11081
11082 extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
11083 __const struct sched_param *__param)
11084 throw () __attribute__ ((__nonnull__ (3)));
11085
11086
11087 extern int pthread_getschedparam (pthread_t __target_thread,
11088 int *__restrict __policy,
11089 struct sched_param *__restrict __param)
11090 throw () __attribute__ ((__nonnull__ (2, 3)));
11091
11092
11093 extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
11094 throw ();
11095
11096
11097
11098
11099 extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
11100 size_t __buflen)
11101 throw () __attribute__ ((__nonnull__ (2)));
11102
11103
11104 extern int pthread_setname_np (pthread_t __target_thread, __const char *__name)
11105 throw () __attribute__ ((__nonnull__ (2)));
11106
11107
11108
11109
11110
11111 extern int pthread_getconcurrency (void) throw ();
11112
11113
11114 extern int pthread_setconcurrency (int __level) throw ();
11115
11116
11117
11118
11119
11120
11121
11122 extern int pthread_yield (void) throw ();
11123
11124
11125
11126
11127 extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
11128 __const cpu_set_t *__cpuset)
11129 throw () __attribute__ ((__nonnull__ (3)));
11130
11131
11132 extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
11133 cpu_set_t *__cpuset)
11134 throw () __attribute__ ((__nonnull__ (3)));
11135 # 478 "/usr/include/pthread.h" 3 4
11136 extern int pthread_once (pthread_once_t *__once_control,
11137 void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
11138 # 490 "/usr/include/pthread.h" 3 4
11139 extern int pthread_setcancelstate (int __state, int *__oldstate);
11140
11141
11142
11143 extern int pthread_setcanceltype (int __type, int *__oldtype);
11144
11145
11146 extern int pthread_cancel (pthread_t __th);
11147
11148
11149
11150
11151 extern void pthread_testcancel (void);
11152
11153
11154
11155
11156 typedef struct
11157 {
11158 struct
11159 {
11160 __jmp_buf __cancel_jmp_buf;
11161 int __mask_was_saved;
11162 } __cancel_jmp_buf[1];
11163 void *__pad[4];
11164 } __pthread_unwind_buf_t __attribute__ ((__aligned__));
11165 # 524 "/usr/include/pthread.h" 3 4
11166 struct __pthread_cleanup_frame
11167 {
11168 void (*__cancel_routine) (void *);
11169 void *__cancel_arg;
11170 int __do_it;
11171 int __cancel_type;
11172 };
11173
11174
11175
11176
11177 class __pthread_cleanup_class
11178 {
11179 void (*__cancel_routine) (void *);
11180 void *__cancel_arg;
11181 int __do_it;
11182 int __cancel_type;
11183
11184 public:
11185 __pthread_cleanup_class (void (*__fct) (void *), void *__arg)
11186 : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { }
11187 ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); }
11188 void __setdoit (int __newval) { __do_it = __newval; }
11189 void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED,
11190 &__cancel_type); }
11191 void __restore () const { pthread_setcanceltype (__cancel_type, 0); }
11192 };
11193 # 726 "/usr/include/pthread.h" 3 4
11194 struct __jmp_buf_tag;
11195 extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw ();
11196
11197
11198
11199
11200
11201 extern int pthread_mutex_init (pthread_mutex_t *__mutex,
11202 __const pthread_mutexattr_t *__mutexattr)
11203 throw () __attribute__ ((__nonnull__ (1)));
11204
11205
11206 extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
11207 throw () __attribute__ ((__nonnull__ (1)));
11208
11209
11210 extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
11211 throw () __attribute__ ((__nonnull__ (1)));
11212
11213
11214 extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
11215 throw () __attribute__ ((__nonnull__ (1)));
11216
11217
11218
11219 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
11220 __const struct timespec *__restrict
11221 __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
11222
11223
11224
11225 extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
11226 throw () __attribute__ ((__nonnull__ (1)));
11227
11228
11229
11230 extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
11231 __restrict __mutex,
11232 int *__restrict __prioceiling)
11233 throw () __attribute__ ((__nonnull__ (1, 2)));
11234
11235
11236
11237 extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
11238 int __prioceiling,
11239 int *__restrict __old_ceiling)
11240 throw () __attribute__ ((__nonnull__ (1, 3)));
11241
11242
11243
11244
11245 extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
11246 throw () __attribute__ ((__nonnull__ (1)));
11247
11248 extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
11249 throw () __attribute__ ((__nonnull__ (1)));
11250 # 790 "/usr/include/pthread.h" 3 4
11251 extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
11252 throw () __attribute__ ((__nonnull__ (1)));
11253
11254
11255 extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
11256 throw () __attribute__ ((__nonnull__ (1)));
11257
11258
11259 extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
11260 __restrict __attr,
11261 int *__restrict __pshared)
11262 throw () __attribute__ ((__nonnull__ (1, 2)));
11263
11264
11265 extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
11266 int __pshared)
11267 throw () __attribute__ ((__nonnull__ (1)));
11268
11269
11270
11271 extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
11272 __attr, int *__restrict __kind)
11273 throw () __attribute__ ((__nonnull__ (1, 2)));
11274
11275
11276
11277
11278 extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
11279 throw () __attribute__ ((__nonnull__ (1)));
11280
11281
11282
11283 extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
11284 __restrict __attr,
11285 int *__restrict __protocol)
11286 throw () __attribute__ ((__nonnull__ (1, 2)));
11287
11288
11289
11290 extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
11291 int __protocol)
11292 throw () __attribute__ ((__nonnull__ (1)));
11293
11294
11295 extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
11296 __restrict __attr,
11297 int *__restrict __prioceiling)
11298 throw () __attribute__ ((__nonnull__ (1, 2)));
11299
11300
11301 extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
11302 int __prioceiling)
11303 throw () __attribute__ ((__nonnull__ (1)));
11304
11305
11306
11307 extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr,
11308 int *__robustness)
11309 throw () __attribute__ ((__nonnull__ (1, 2)));
11310
11311 extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
11312 int *__robustness)
11313 throw () __attribute__ ((__nonnull__ (1, 2)));
11314
11315
11316
11317 extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
11318 int __robustness)
11319 throw () __attribute__ ((__nonnull__ (1)));
11320
11321 extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
11322 int __robustness)
11323 throw () __attribute__ ((__nonnull__ (1)));
11324 # 872 "/usr/include/pthread.h" 3 4
11325 extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
11326 __const pthread_rwlockattr_t *__restrict
11327 __attr) throw () __attribute__ ((__nonnull__ (1)));
11328
11329
11330 extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
11331 throw () __attribute__ ((__nonnull__ (1)));
11332
11333
11334 extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
11335 throw () __attribute__ ((__nonnull__ (1)));
11336
11337
11338 extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
11339 throw () __attribute__ ((__nonnull__ (1)));
11340
11341
11342
11343 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
11344 __const struct timespec *__restrict
11345 __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
11346
11347
11348
11349 extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
11350 throw () __attribute__ ((__nonnull__ (1)));
11351
11352
11353 extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
11354 throw () __attribute__ ((__nonnull__ (1)));
11355
11356
11357
11358 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
11359 __const struct timespec *__restrict
11360 __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
11361
11362
11363
11364 extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
11365 throw () __attribute__ ((__nonnull__ (1)));
11366
11367
11368
11369
11370
11371 extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
11372 throw () __attribute__ ((__nonnull__ (1)));
11373
11374
11375 extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
11376 throw () __attribute__ ((__nonnull__ (1)));
11377
11378
11379 extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
11380 __restrict __attr,
11381 int *__restrict __pshared)
11382 throw () __attribute__ ((__nonnull__ (1, 2)));
11383
11384
11385 extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
11386 int __pshared)
11387 throw () __attribute__ ((__nonnull__ (1)));
11388
11389
11390 extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
11391 __restrict __attr,
11392 int *__restrict __pref)
11393 throw () __attribute__ ((__nonnull__ (1, 2)));
11394
11395
11396 extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
11397 int __pref) throw () __attribute__ ((__nonnull__ (1)));
11398
11399
11400
11401
11402
11403
11404
11405 extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
11406 __const pthread_condattr_t *__restrict
11407 __cond_attr) throw () __attribute__ ((__nonnull__ (1)));
11408
11409
11410 extern int pthread_cond_destroy (pthread_cond_t *__cond)
11411 throw () __attribute__ ((__nonnull__ (1)));
11412
11413
11414 extern int pthread_cond_signal (pthread_cond_t *__cond)
11415 throw () __attribute__ ((__nonnull__ (1)));
11416
11417
11418 extern int pthread_cond_broadcast (pthread_cond_t *__cond)
11419 throw () __attribute__ ((__nonnull__ (1)));
11420
11421
11422
11423
11424
11425
11426 extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
11427 pthread_mutex_t *__restrict __mutex)
11428 __attribute__ ((__nonnull__ (1, 2)));
11429 # 984 "/usr/include/pthread.h" 3 4
11430 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
11431 pthread_mutex_t *__restrict __mutex,
11432 __const struct timespec *__restrict
11433 __abstime) __attribute__ ((__nonnull__ (1, 2, 3)));
11434
11435
11436
11437
11438 extern int pthread_condattr_init (pthread_condattr_t *__attr)
11439 throw () __attribute__ ((__nonnull__ (1)));
11440
11441
11442 extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
11443 throw () __attribute__ ((__nonnull__ (1)));
11444
11445
11446 extern int pthread_condattr_getpshared (__const pthread_condattr_t *
11447 __restrict __attr,
11448 int *__restrict __pshared)
11449 throw () __attribute__ ((__nonnull__ (1, 2)));
11450
11451
11452 extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
11453 int __pshared) throw () __attribute__ ((__nonnull__ (1)));
11454
11455
11456
11457 extern int pthread_condattr_getclock (__const pthread_condattr_t *
11458 __restrict __attr,
11459 __clockid_t *__restrict __clock_id)
11460 throw () __attribute__ ((__nonnull__ (1, 2)));
11461
11462
11463 extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
11464 __clockid_t __clock_id)
11465 throw () __attribute__ ((__nonnull__ (1)));
11466 # 1028 "/usr/include/pthread.h" 3 4
11467 extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
11468 throw () __attribute__ ((__nonnull__ (1)));
11469
11470
11471 extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
11472 throw () __attribute__ ((__nonnull__ (1)));
11473
11474
11475 extern int pthread_spin_lock (pthread_spinlock_t *__lock)
11476 throw () __attribute__ ((__nonnull__ (1)));
11477
11478
11479 extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
11480 throw () __attribute__ ((__nonnull__ (1)));
11481
11482
11483 extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
11484 throw () __attribute__ ((__nonnull__ (1)));
11485
11486
11487
11488
11489
11490
11491 extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
11492 __const pthread_barrierattr_t *__restrict
11493 __attr, unsigned int __count)
11494 throw () __attribute__ ((__nonnull__ (1)));
11495
11496
11497 extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
11498 throw () __attribute__ ((__nonnull__ (1)));
11499
11500
11501 extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
11502 throw () __attribute__ ((__nonnull__ (1)));
11503
11504
11505
11506 extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
11507 throw () __attribute__ ((__nonnull__ (1)));
11508
11509
11510 extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
11511 throw () __attribute__ ((__nonnull__ (1)));
11512
11513
11514 extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
11515 __restrict __attr,
11516 int *__restrict __pshared)
11517 throw () __attribute__ ((__nonnull__ (1, 2)));
11518
11519
11520 extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
11521 int __pshared)
11522 throw () __attribute__ ((__nonnull__ (1)));
11523 # 1095 "/usr/include/pthread.h" 3 4
11524 extern int pthread_key_create (pthread_key_t *__key,
11525 void (*__destr_function) (void *))
11526 throw () __attribute__ ((__nonnull__ (1)));
11527
11528
11529 extern int pthread_key_delete (pthread_key_t __key) throw ();
11530
11531
11532 extern void *pthread_getspecific (pthread_key_t __key) throw ();
11533
11534
11535 extern int pthread_setspecific (pthread_key_t __key,
11536 __const void *__pointer) throw () ;
11537
11538
11539
11540
11541 extern int pthread_getcpuclockid (pthread_t __thread_id,
11542 __clockid_t *__clock_id)
11543 throw () __attribute__ ((__nonnull__ (2)));
11544 # 1129 "/usr/include/pthread.h" 3 4
11545 extern int pthread_atfork (void (*__prepare) (void),
11546 void (*__parent) (void),
11547 void (*__child) (void)) throw ();
11548
11549
11550
11551
11552 extern __inline __attribute__ ((__gnu_inline__)) int
11553 pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ()
11554 {
11555 return __thread1 == __thread2;
11556 }
11557
11558
11559 }
11560 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 2 3
11561
11562
11563 typedef pthread_t __gthread_t;
11564 typedef pthread_key_t __gthread_key_t;
11565 typedef pthread_once_t __gthread_once_t;
11566 typedef pthread_mutex_t __gthread_mutex_t;
11567 typedef pthread_mutex_t __gthread_recursive_mutex_t;
11568 typedef pthread_cond_t __gthread_cond_t;
11569 typedef struct timespec __gthread_time_t;
11570 # 118 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
11571 static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
11572 static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
11573 static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
11574
11575 static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
11576 static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join")));
11577 static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal")));
11578 static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self")));
11579 static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach")));
11580
11581 static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
11582
11583 static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield")));
11584
11585 static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
11586 static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
11587
11588
11589 static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock")));
11590
11591
11592 static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
11593 static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
11594 static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy")));
11595
11596 static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast")));
11597 static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal")));
11598 static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait")));
11599 static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait")));
11600 static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy")));
11601
11602
11603 static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
11604 static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
11605 static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
11606 static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
11607 static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy")));
11608 # 239 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
11609 static inline int
11610 __gthread_active_p (void)
11611 {
11612 static void *const __gthread_active_ptr
11613 = __extension__ (void *) &
11614
11615
11616
11617
11618
11619
11620
11621 __gthrw_pthread_cancel;
11622 return __gthread_active_ptr != 0;
11623 }
11624 # 659 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
11625 static inline int
11626 __gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
11627 void *__args)
11628 {
11629 return __gthrw_pthread_create (__threadid, __null, __func, __args);
11630 }
11631
11632 static inline int
11633 __gthread_join (__gthread_t __threadid, void **__value_ptr)
11634 {
11635 return __gthrw_pthread_join (__threadid, __value_ptr);
11636 }
11637
11638 static inline int
11639 __gthread_detach (__gthread_t __threadid)
11640 {
11641 return __gthrw_pthread_detach (__threadid);
11642 }
11643
11644 static inline int
11645 __gthread_equal (__gthread_t __t1, __gthread_t __t2)
11646 {
11647 return __gthrw_pthread_equal (__t1, __t2);
11648 }
11649
11650 static inline __gthread_t
11651 __gthread_self (void)
11652 {
11653 return __gthrw_pthread_self ();
11654 }
11655
11656 static inline int
11657 __gthread_yield (void)
11658 {
11659 return __gthrw_sched_yield ();
11660 }
11661
11662 static inline int
11663 __gthread_once (__gthread_once_t *__once, void (*__func) (void))
11664 {
11665 if (__gthread_active_p ())
11666 return __gthrw_pthread_once (__once, __func);
11667 else
11668 return -1;
11669 }
11670
11671 static inline int
11672 __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
11673 {
11674 return __gthrw_pthread_key_create (__key, __dtor);
11675 }
11676
11677 static inline int
11678 __gthread_key_delete (__gthread_key_t __key)
11679 {
11680 return __gthrw_pthread_key_delete (__key);
11681 }
11682
11683 static inline void *
11684 __gthread_getspecific (__gthread_key_t __key)
11685 {
11686 return __gthrw_pthread_getspecific (__key);
11687 }
11688
11689 static inline int
11690 __gthread_setspecific (__gthread_key_t __key, const void *__ptr)
11691 {
11692 return __gthrw_pthread_setspecific (__key, __ptr);
11693 }
11694
11695 static inline int
11696 __gthread_mutex_destroy (__gthread_mutex_t *__mutex)
11697 {
11698 if (__gthread_active_p ())
11699 return __gthrw_pthread_mutex_destroy (__mutex);
11700 else
11701 return 0;
11702 }
11703
11704 static inline int
11705 __gthread_mutex_lock (__gthread_mutex_t *__mutex)
11706 {
11707 if (__gthread_active_p ())
11708 return __gthrw_pthread_mutex_lock (__mutex);
11709 else
11710 return 0;
11711 }
11712
11713 static inline int
11714 __gthread_mutex_trylock (__gthread_mutex_t *__mutex)
11715 {
11716 if (__gthread_active_p ())
11717 return __gthrw_pthread_mutex_trylock (__mutex);
11718 else
11719 return 0;
11720 }
11721
11722
11723
11724 static inline int
11725 __gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
11726 const __gthread_time_t *__abs_timeout)
11727 {
11728 if (__gthread_active_p ())
11729 return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout);
11730 else
11731 return 0;
11732 }
11733
11734
11735
11736 static inline int
11737 __gthread_mutex_unlock (__gthread_mutex_t *__mutex)
11738 {
11739 if (__gthread_active_p ())
11740 return __gthrw_pthread_mutex_unlock (__mutex);
11741 else
11742 return 0;
11743 }
11744 # 802 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
11745 static inline int
11746 __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
11747 {
11748 return __gthread_mutex_lock (__mutex);
11749 }
11750
11751 static inline int
11752 __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
11753 {
11754 return __gthread_mutex_trylock (__mutex);
11755 }
11756
11757
11758
11759 static inline int
11760 __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
11761 const __gthread_time_t *__abs_timeout)
11762 {
11763 return __gthread_mutex_timedlock (__mutex, __abs_timeout);
11764 }
11765
11766
11767
11768 static inline int
11769 __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
11770 {
11771 return __gthread_mutex_unlock (__mutex);
11772 }
11773
11774 static inline int
11775 __gthread_cond_broadcast (__gthread_cond_t *__cond)
11776 {
11777 return __gthrw_pthread_cond_broadcast (__cond);
11778 }
11779
11780 static inline int
11781 __gthread_cond_signal (__gthread_cond_t *__cond)
11782 {
11783 return __gthrw_pthread_cond_signal (__cond);
11784 }
11785
11786 static inline int
11787 __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
11788 {
11789 return __gthrw_pthread_cond_wait (__cond, __mutex);
11790 }
11791
11792 static inline int
11793 __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
11794 const __gthread_time_t *__abs_timeout)
11795 {
11796 return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout);
11797 }
11798
11799 static inline int
11800 __gthread_cond_wait_recursive (__gthread_cond_t *__cond,
11801 __gthread_recursive_mutex_t *__mutex)
11802 {
11803 return __gthread_cond_wait (__cond, __mutex);
11804 }
11805
11806 static inline int
11807 __gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
11808 __gthread_recursive_mutex_t *__mutex,
11809 const __gthread_time_t *__abs_timeout)
11810 {
11811 return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
11812 }
11813
11814 static inline int
11815 __gthread_cond_destroy (__gthread_cond_t* __cond)
11816 {
11817 return __gthrw_pthread_cond_destroy (__cond);
11818 }
11819 # 163 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 2 3
11820
11821
11822
11823
11824
11825
11826
11827 #pragma GCC visibility pop
11828 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/atomicity.h" 2 3
11829 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/atomic_word.h" 1 3
11830 # 32 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/atomic_word.h" 3
11831 typedef int _Atomic_word;
11832 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/atomicity.h" 2 3
11833
11834 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
11835 {
11836
11837
11838
11839
11840
11841
11842
11843 static inline _Atomic_word
11844 __exchange_and_add(volatile _Atomic_word* __mem, int __val)
11845 { return __sync_fetch_and_add(__mem, __val); }
11846
11847 static inline void
11848 __atomic_add(volatile _Atomic_word* __mem, int __val)
11849 { __sync_fetch_and_add(__mem, __val); }
11850 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ext/atomicity.h" 3
11851 static inline _Atomic_word
11852 __exchange_and_add_single(_Atomic_word* __mem, int __val)
11853 {
11854 _Atomic_word __result = *__mem;
11855 *__mem += __val;
11856 return __result;
11857 }
11858
11859 static inline void
11860 __atomic_add_single(_Atomic_word* __mem, int __val)
11861 { *__mem += __val; }
11862
11863 static inline _Atomic_word
11864 __attribute__ ((__unused__))
11865 __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
11866 {
11867
11868 if (__gthread_active_p())
11869 return __exchange_and_add(__mem, __val);
11870 else
11871 return __exchange_and_add_single(__mem, __val);
11872
11873
11874
11875 }
11876
11877 static inline void
11878 __attribute__ ((__unused__))
11879 __atomic_add_dispatch(_Atomic_word* __mem, int __val)
11880 {
11881
11882 if (__gthread_active_p())
11883 __atomic_add(__mem, __val);
11884 else
11885 __atomic_add_single(__mem, __val);
11886
11887
11888
11889 }
11890
11891
11892 }
11893 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 2 3
11894
11895 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/initializer_list" 1 3
11896 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/initializer_list" 3
11897
11898 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/initializer_list" 3
11899 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 2 3
11900
11901 namespace std __attribute__ ((__visibility__ ("default")))
11902 {
11903
11904 # 106 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
11905 template<typename _CharT, typename _Traits, typename _Alloc>
11906 class basic_string
11907 {
11908 typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
11909
11910
11911 public:
11912 typedef _Traits traits_type;
11913 typedef typename _Traits::char_type value_type;
11914 typedef _Alloc allocator_type;
11915 typedef typename _CharT_alloc_type::size_type size_type;
11916 typedef typename _CharT_alloc_type::difference_type difference_type;
11917 typedef typename _CharT_alloc_type::reference reference;
11918 typedef typename _CharT_alloc_type::const_reference const_reference;
11919 typedef typename _CharT_alloc_type::pointer pointer;
11920 typedef typename _CharT_alloc_type::const_pointer const_pointer;
11921 typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
11922 typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
11923 const_iterator;
11924 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
11925 typedef std::reverse_iterator<iterator> reverse_iterator;
11926
11927 private:
11928 # 143 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
11929 struct _Rep_base
11930 {
11931 size_type _M_length;
11932 size_type _M_capacity;
11933 _Atomic_word _M_refcount;
11934 };
11935
11936 struct _Rep : _Rep_base
11937 {
11938
11939 typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
11940 # 168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
11941 static const size_type _S_max_size;
11942 static const _CharT _S_terminal;
11943
11944
11945
11946 static size_type _S_empty_rep_storage[];
11947
11948 static _Rep&
11949 _S_empty_rep()
11950 {
11951
11952
11953
11954 void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
11955 return *reinterpret_cast<_Rep*>(__p);
11956 }
11957
11958 bool
11959 _M_is_leaked() const
11960 { return this->_M_refcount < 0; }
11961
11962 bool
11963 _M_is_shared() const
11964 { return this->_M_refcount > 0; }
11965
11966 void
11967 _M_set_leaked()
11968 { this->_M_refcount = -1; }
11969
11970 void
11971 _M_set_sharable()
11972 { this->_M_refcount = 0; }
11973
11974 void
11975 _M_set_length_and_sharable(size_type __n)
11976 {
11977
11978 if (__builtin_expect(this != &_S_empty_rep(), false))
11979
11980 {
11981 this->_M_set_sharable();
11982 this->_M_length = __n;
11983 traits_type::assign(this->_M_refdata()[__n], _S_terminal);
11984
11985
11986 }
11987 }
11988
11989 _CharT*
11990 _M_refdata() throw()
11991 { return reinterpret_cast<_CharT*>(this + 1); }
11992
11993 _CharT*
11994 _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
11995 {
11996 return (!_M_is_leaked() && __alloc1 == __alloc2)
11997 ? _M_refcopy() : _M_clone(__alloc1);
11998 }
11999
12000
12001 static _Rep*
12002 _S_create(size_type, size_type, const _Alloc&);
12003
12004 void
12005 _M_dispose(const _Alloc& __a)
12006 {
12007
12008 if (__builtin_expect(this != &_S_empty_rep(), false))
12009
12010 {
12011
12012 ;
12013 if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
12014 -1) <= 0)
12015 {
12016 ;
12017 _M_destroy(__a);
12018 }
12019 }
12020 }
12021
12022 void
12023 _M_destroy(const _Alloc&) throw();
12024
12025 _CharT*
12026 _M_refcopy() throw()
12027 {
12028
12029 if (__builtin_expect(this != &_S_empty_rep(), false))
12030
12031 __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
12032 return _M_refdata();
12033 }
12034
12035 _CharT*
12036 _M_clone(const _Alloc&, size_type __res = 0);
12037 };
12038
12039
12040 struct _Alloc_hider : _Alloc
12041 {
12042 _Alloc_hider(_CharT* __dat, const _Alloc& __a)
12043 : _Alloc(__a), _M_p(__dat) { }
12044
12045 _CharT* _M_p;
12046 };
12047
12048 public:
12049
12050
12051
12052
12053 static const size_type npos = static_cast<size_type>(-1);
12054
12055 private:
12056
12057 mutable _Alloc_hider _M_dataplus;
12058
12059 _CharT*
12060 _M_data() const
12061 { return _M_dataplus._M_p; }
12062
12063 _CharT*
12064 _M_data(_CharT* __p)
12065 { return (_M_dataplus._M_p = __p); }
12066
12067 _Rep*
12068 _M_rep() const
12069 { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
12070
12071
12072
12073 iterator
12074 _M_ibegin() const
12075 { return iterator(_M_data()); }
12076
12077 iterator
12078 _M_iend() const
12079 { return iterator(_M_data() + this->size()); }
12080
12081 void
12082 _M_leak()
12083 {
12084 if (!_M_rep()->_M_is_leaked())
12085 _M_leak_hard();
12086 }
12087
12088 size_type
12089 _M_check(size_type __pos, const char* __s) const
12090 {
12091 if (__pos > this->size())
12092 __throw_out_of_range((__s));
12093 return __pos;
12094 }
12095
12096 void
12097 _M_check_length(size_type __n1, size_type __n2, const char* __s) const
12098 {
12099 if (this->max_size() - (this->size() - __n1) < __n2)
12100 __throw_length_error((__s));
12101 }
12102
12103
12104 size_type
12105 _M_limit(size_type __pos, size_type __off) const
12106 {
12107 const bool __testoff = __off < this->size() - __pos;
12108 return __testoff ? __off : this->size() - __pos;
12109 }
12110
12111
12112 bool
12113 _M_disjunct(const _CharT* __s) const
12114 {
12115 return (less<const _CharT*>()(__s, _M_data())
12116 || less<const _CharT*>()(_M_data() + this->size(), __s));
12117 }
12118
12119
12120
12121 static void
12122 _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
12123 {
12124 if (__n == 1)
12125 traits_type::assign(*__d, *__s);
12126 else
12127 traits_type::copy(__d, __s, __n);
12128 }
12129
12130 static void
12131 _M_move(_CharT* __d, const _CharT* __s, size_type __n)
12132 {
12133 if (__n == 1)
12134 traits_type::assign(*__d, *__s);
12135 else
12136 traits_type::move(__d, __s, __n);
12137 }
12138
12139 static void
12140 _M_assign(_CharT* __d, size_type __n, _CharT __c)
12141 {
12142 if (__n == 1)
12143 traits_type::assign(*__d, __c);
12144 else
12145 traits_type::assign(__d, __n, __c);
12146 }
12147
12148
12149
12150 template<class _Iterator>
12151 static void
12152 _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
12153 {
12154 for (; __k1 != __k2; ++__k1, ++__p)
12155 traits_type::assign(*__p, *__k1);
12156 }
12157
12158 static void
12159 _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
12160 { _S_copy_chars(__p, __k1.base(), __k2.base()); }
12161
12162 static void
12163 _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
12164 { _S_copy_chars(__p, __k1.base(), __k2.base()); }
12165
12166 static void
12167 _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
12168 { _M_copy(__p, __k1, __k2 - __k1); }
12169
12170 static void
12171 _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
12172 { _M_copy(__p, __k1, __k2 - __k1); }
12173
12174 static int
12175 _S_compare(size_type __n1, size_type __n2)
12176 {
12177 const difference_type __d = difference_type(__n1 - __n2);
12178
12179 if (__d > __gnu_cxx::__numeric_traits<int>::__max)
12180 return __gnu_cxx::__numeric_traits<int>::__max;
12181 else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
12182 return __gnu_cxx::__numeric_traits<int>::__min;
12183 else
12184 return int(__d);
12185 }
12186
12187 void
12188 _M_mutate(size_type __pos, size_type __len1, size_type __len2);
12189
12190 void
12191 _M_leak_hard();
12192
12193 static _Rep&
12194 _S_empty_rep()
12195 { return _Rep::_S_empty_rep(); }
12196
12197 public:
12198
12199
12200
12201
12202
12203
12204
12205 basic_string()
12206
12207 : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
12208
12209
12210
12211
12212
12213
12214
12215 explicit
12216 basic_string(const _Alloc& __a);
12217
12218
12219
12220
12221
12222
12223 basic_string(const basic_string& __str);
12224
12225
12226
12227
12228
12229
12230 basic_string(const basic_string& __str, size_type __pos,
12231 size_type __n = npos);
12232
12233
12234
12235
12236
12237
12238
12239 basic_string(const basic_string& __str, size_type __pos,
12240 size_type __n, const _Alloc& __a);
12241 # 478 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12242 basic_string(const _CharT* __s, size_type __n,
12243 const _Alloc& __a = _Alloc());
12244
12245
12246
12247
12248
12249 basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
12250
12251
12252
12253
12254
12255
12256 basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
12257 # 526 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12258 template<class _InputIterator>
12259 basic_string(_InputIterator __beg, _InputIterator __end,
12260 const _Alloc& __a = _Alloc());
12261
12262
12263
12264
12265 ~basic_string()
12266 { _M_rep()->_M_dispose(this->get_allocator()); }
12267
12268
12269
12270
12271
12272 basic_string&
12273 operator=(const basic_string& __str)
12274 { return this->assign(__str); }
12275
12276
12277
12278
12279
12280 basic_string&
12281 operator=(const _CharT* __s)
12282 { return this->assign(__s); }
12283 # 559 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12284 basic_string&
12285 operator=(_CharT __c)
12286 {
12287 this->assign(1, __c);
12288 return *this;
12289 }
12290 # 599 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12291 iterator
12292 begin()
12293 {
12294 _M_leak();
12295 return iterator(_M_data());
12296 }
12297
12298
12299
12300
12301
12302 const_iterator
12303 begin() const
12304 { return const_iterator(_M_data()); }
12305
12306
12307
12308
12309
12310 iterator
12311 end()
12312 {
12313 _M_leak();
12314 return iterator(_M_data() + this->size());
12315 }
12316
12317
12318
12319
12320
12321 const_iterator
12322 end() const
12323 { return const_iterator(_M_data() + this->size()); }
12324
12325
12326
12327
12328
12329
12330 reverse_iterator
12331 rbegin()
12332 { return reverse_iterator(this->end()); }
12333
12334
12335
12336
12337
12338
12339 const_reverse_iterator
12340 rbegin() const
12341 { return const_reverse_iterator(this->end()); }
12342
12343
12344
12345
12346
12347
12348 reverse_iterator
12349 rend()
12350 { return reverse_iterator(this->begin()); }
12351
12352
12353
12354
12355
12356
12357 const_reverse_iterator
12358 rend() const
12359 { return const_reverse_iterator(this->begin()); }
12360 # 705 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12361 public:
12362
12363
12364
12365 size_type
12366 size() const
12367 { return _M_rep()->_M_length; }
12368
12369
12370
12371 size_type
12372 length() const
12373 { return _M_rep()->_M_length; }
12374
12375
12376 size_type
12377 max_size() const
12378 { return _Rep::_S_max_size; }
12379 # 734 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12380 void
12381 resize(size_type __n, _CharT __c);
12382 # 747 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12383 void
12384 resize(size_type __n)
12385 { this->resize(__n, _CharT()); }
12386 # 767 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12387 size_type
12388 capacity() const
12389 { return _M_rep()->_M_capacity; }
12390 # 788 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12391 void
12392 reserve(size_type __res_arg = 0);
12393
12394
12395
12396
12397 void
12398 clear()
12399 { _M_mutate(0, this->size(), 0); }
12400
12401
12402
12403
12404
12405 bool
12406 empty() const
12407 { return this->size() == 0; }
12408 # 817 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12409 const_reference
12410 operator[] (size_type __pos) const
12411 {
12412 ;
12413 return _M_data()[__pos];
12414 }
12415 # 834 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12416 reference
12417 operator[](size_type __pos)
12418 {
12419
12420 ;
12421
12422 ;
12423 _M_leak();
12424 return _M_data()[__pos];
12425 }
12426 # 855 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12427 const_reference
12428 at(size_type __n) const
12429 {
12430 if (__n >= this->size())
12431 __throw_out_of_range(("basic_string::at"));
12432 return _M_data()[__n];
12433 }
12434 # 908 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12435 reference
12436 at(size_type __n)
12437 {
12438 if (__n >= size())
12439 __throw_out_of_range(("basic_string::at"));
12440 _M_leak();
12441 return _M_data()[__n];
12442 }
12443
12444
12445
12446
12447
12448
12449
12450 basic_string&
12451 operator+=(const basic_string& __str)
12452 { return this->append(__str); }
12453
12454
12455
12456
12457
12458
12459 basic_string&
12460 operator+=(const _CharT* __s)
12461 { return this->append(__s); }
12462
12463
12464
12465
12466
12467
12468 basic_string&
12469 operator+=(_CharT __c)
12470 {
12471 this->push_back(__c);
12472 return *this;
12473 }
12474 # 964 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12475 basic_string&
12476 append(const basic_string& __str);
12477 # 979 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12478 basic_string&
12479 append(const basic_string& __str, size_type __pos, size_type __n);
12480
12481
12482
12483
12484
12485
12486
12487 basic_string&
12488 append(const _CharT* __s, size_type __n);
12489
12490
12491
12492
12493
12494
12495 basic_string&
12496 append(const _CharT* __s)
12497 {
12498 ;
12499 return this->append(__s, traits_type::length(__s));
12500 }
12501 # 1011 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12502 basic_string&
12503 append(size_type __n, _CharT __c);
12504 # 1033 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12505 template<class _InputIterator>
12506 basic_string&
12507 append(_InputIterator __first, _InputIterator __last)
12508 { return this->replace(_M_iend(), _M_iend(), __first, __last); }
12509
12510
12511
12512
12513
12514 void
12515 push_back(_CharT __c)
12516 {
12517 const size_type __len = 1 + this->size();
12518 if (__len > this->capacity() || _M_rep()->_M_is_shared())
12519 this->reserve(__len);
12520 traits_type::assign(_M_data()[this->size()], __c);
12521 _M_rep()->_M_set_length_and_sharable(__len);
12522 }
12523
12524
12525
12526
12527
12528
12529 basic_string&
12530 assign(const basic_string& __str);
12531 # 1089 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12532 basic_string&
12533 assign(const basic_string& __str, size_type __pos, size_type __n)
12534 { return this->assign(__str._M_data()
12535 + __str._M_check(__pos, "basic_string::assign"),
12536 __str._M_limit(__pos, __n)); }
12537 # 1105 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12538 basic_string&
12539 assign(const _CharT* __s, size_type __n);
12540 # 1117 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12541 basic_string&
12542 assign(const _CharT* __s)
12543 {
12544 ;
12545 return this->assign(__s, traits_type::length(__s));
12546 }
12547 # 1133 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12548 basic_string&
12549 assign(size_type __n, _CharT __c)
12550 { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
12551 # 1145 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12552 template<class _InputIterator>
12553 basic_string&
12554 assign(_InputIterator __first, _InputIterator __last)
12555 { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
12556 # 1173 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12557 void
12558 insert(iterator __p, size_type __n, _CharT __c)
12559 { this->replace(__p, __p, __n, __c); }
12560 # 1188 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12561 template<class _InputIterator>
12562 void
12563 insert(iterator __p, _InputIterator __beg, _InputIterator __end)
12564 { this->replace(__p, __p, __beg, __end); }
12565 # 1219 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12566 basic_string&
12567 insert(size_type __pos1, const basic_string& __str)
12568 { return this->insert(__pos1, __str, size_type(0), __str.size()); }
12569 # 1241 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12570 basic_string&
12571 insert(size_type __pos1, const basic_string& __str,
12572 size_type __pos2, size_type __n)
12573 { return this->insert(__pos1, __str._M_data()
12574 + __str._M_check(__pos2, "basic_string::insert"),
12575 __str._M_limit(__pos2, __n)); }
12576 # 1264 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12577 basic_string&
12578 insert(size_type __pos, const _CharT* __s, size_type __n);
12579 # 1282 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12580 basic_string&
12581 insert(size_type __pos, const _CharT* __s)
12582 {
12583 ;
12584 return this->insert(__pos, __s, traits_type::length(__s));
12585 }
12586 # 1305 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12587 basic_string&
12588 insert(size_type __pos, size_type __n, _CharT __c)
12589 { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
12590 size_type(0), __n, __c); }
12591 # 1322 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12592 iterator
12593 insert(iterator __p, _CharT __c)
12594 {
12595 ;
12596 const size_type __pos = __p - _M_ibegin();
12597 _M_replace_aux(__pos, size_type(0), size_type(1), __c);
12598 _M_rep()->_M_set_leaked();
12599 return iterator(_M_data() + __pos);
12600 }
12601 # 1346 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12602 basic_string&
12603 erase(size_type __pos = 0, size_type __n = npos)
12604 {
12605 _M_mutate(_M_check(__pos, "basic_string::erase"),
12606 _M_limit(__pos, __n), size_type(0));
12607 return *this;
12608 }
12609 # 1362 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12610 iterator
12611 erase(iterator __position)
12612 {
12613
12614 ;
12615 const size_type __pos = __position - _M_ibegin();
12616 _M_mutate(__pos, size_type(1), size_type(0));
12617 _M_rep()->_M_set_leaked();
12618 return iterator(_M_data() + __pos);
12619 }
12620 # 1382 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12621 iterator
12622 erase(iterator __first, iterator __last);
12623 # 1401 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12624 basic_string&
12625 replace(size_type __pos, size_type __n, const basic_string& __str)
12626 { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
12627 # 1423 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12628 basic_string&
12629 replace(size_type __pos1, size_type __n1, const basic_string& __str,
12630 size_type __pos2, size_type __n2)
12631 { return this->replace(__pos1, __n1, __str._M_data()
12632 + __str._M_check(__pos2, "basic_string::replace"),
12633 __str._M_limit(__pos2, __n2)); }
12634 # 1447 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12635 basic_string&
12636 replace(size_type __pos, size_type __n1, const _CharT* __s,
12637 size_type __n2);
12638 # 1466 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12639 basic_string&
12640 replace(size_type __pos, size_type __n1, const _CharT* __s)
12641 {
12642 ;
12643 return this->replace(__pos, __n1, __s, traits_type::length(__s));
12644 }
12645 # 1489 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12646 basic_string&
12647 replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
12648 { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
12649 _M_limit(__pos, __n1), __n2, __c); }
12650 # 1507 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12651 basic_string&
12652 replace(iterator __i1, iterator __i2, const basic_string& __str)
12653 { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
12654 # 1525 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12655 basic_string&
12656 replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
12657 {
12658
12659 ;
12660 return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
12661 }
12662 # 1546 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12663 basic_string&
12664 replace(iterator __i1, iterator __i2, const _CharT* __s)
12665 {
12666 ;
12667 return this->replace(__i1, __i2, __s, traits_type::length(__s));
12668 }
12669 # 1567 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12670 basic_string&
12671 replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
12672 {
12673
12674 ;
12675 return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
12676 }
12677 # 1589 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12678 template<class _InputIterator>
12679 basic_string&
12680 replace(iterator __i1, iterator __i2,
12681 _InputIterator __k1, _InputIterator __k2)
12682 {
12683
12684 ;
12685 ;
12686 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
12687 return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
12688 }
12689
12690
12691
12692 basic_string&
12693 replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
12694 {
12695
12696 ;
12697 ;
12698 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
12699 __k1, __k2 - __k1);
12700 }
12701
12702 basic_string&
12703 replace(iterator __i1, iterator __i2,
12704 const _CharT* __k1, const _CharT* __k2)
12705 {
12706
12707 ;
12708 ;
12709 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
12710 __k1, __k2 - __k1);
12711 }
12712
12713 basic_string&
12714 replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
12715 {
12716
12717 ;
12718 ;
12719 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
12720 __k1.base(), __k2 - __k1);
12721 }
12722
12723 basic_string&
12724 replace(iterator __i1, iterator __i2,
12725 const_iterator __k1, const_iterator __k2)
12726 {
12727
12728 ;
12729 ;
12730 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
12731 __k1.base(), __k2 - __k1);
12732 }
12733 # 1664 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12734 private:
12735 template<class _Integer>
12736 basic_string&
12737 _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
12738 _Integer __val, __true_type)
12739 { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
12740
12741 template<class _InputIterator>
12742 basic_string&
12743 _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
12744 _InputIterator __k2, __false_type);
12745
12746 basic_string&
12747 _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
12748 _CharT __c);
12749
12750 basic_string&
12751 _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
12752 size_type __n2);
12753
12754
12755
12756 template<class _InIterator>
12757 static _CharT*
12758 _S_construct_aux(_InIterator __beg, _InIterator __end,
12759 const _Alloc& __a, __false_type)
12760 {
12761 typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
12762 return _S_construct(__beg, __end, __a, _Tag());
12763 }
12764
12765
12766
12767 template<class _Integer>
12768 static _CharT*
12769 _S_construct_aux(_Integer __beg, _Integer __end,
12770 const _Alloc& __a, __true_type)
12771 { return _S_construct_aux_2(static_cast<size_type>(__beg),
12772 __end, __a); }
12773
12774 static _CharT*
12775 _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
12776 { return _S_construct(__req, __c, __a); }
12777
12778 template<class _InIterator>
12779 static _CharT*
12780 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
12781 {
12782 typedef typename std::__is_integer<_InIterator>::__type _Integral;
12783 return _S_construct_aux(__beg, __end, __a, _Integral());
12784 }
12785
12786
12787 template<class _InIterator>
12788 static _CharT*
12789 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
12790 input_iterator_tag);
12791
12792
12793
12794 template<class _FwdIterator>
12795 static _CharT*
12796 _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
12797 forward_iterator_tag);
12798
12799 static _CharT*
12800 _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
12801
12802 public:
12803 # 1745 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12804 size_type
12805 copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
12806 # 1755 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12807 void
12808 swap(basic_string& __s);
12809 # 1765 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12810 const _CharT*
12811 c_str() const
12812 { return _M_data(); }
12813
12814
12815
12816
12817
12818
12819
12820 const _CharT*
12821 data() const
12822 { return _M_data(); }
12823
12824
12825
12826
12827 allocator_type
12828 get_allocator() const
12829 { return _M_dataplus; }
12830 # 1797 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12831 size_type
12832 find(const _CharT* __s, size_type __pos, size_type __n) const;
12833 # 1810 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12834 size_type
12835 find(const basic_string& __str, size_type __pos = 0) const
12836 { return this->find(__str.data(), __pos, __str.size()); }
12837 # 1824 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12838 size_type
12839 find(const _CharT* __s, size_type __pos = 0) const
12840 {
12841 ;
12842 return this->find(__s, __pos, traits_type::length(__s));
12843 }
12844 # 1841 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12845 size_type
12846 find(_CharT __c, size_type __pos = 0) const;
12847 # 1854 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12848 size_type
12849 rfind(const basic_string& __str, size_type __pos = npos) const
12850 { return this->rfind(__str.data(), __pos, __str.size()); }
12851 # 1869 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12852 size_type
12853 rfind(const _CharT* __s, size_type __pos, size_type __n) const;
12854 # 1882 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12855 size_type
12856 rfind(const _CharT* __s, size_type __pos = npos) const
12857 {
12858 ;
12859 return this->rfind(__s, __pos, traits_type::length(__s));
12860 }
12861 # 1899 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12862 size_type
12863 rfind(_CharT __c, size_type __pos = npos) const;
12864 # 1912 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12865 size_type
12866 find_first_of(const basic_string& __str, size_type __pos = 0) const
12867 { return this->find_first_of(__str.data(), __pos, __str.size()); }
12868 # 1927 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12869 size_type
12870 find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
12871 # 1940 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12872 size_type
12873 find_first_of(const _CharT* __s, size_type __pos = 0) const
12874 {
12875 ;
12876 return this->find_first_of(__s, __pos, traits_type::length(__s));
12877 }
12878 # 1959 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12879 size_type
12880 find_first_of(_CharT __c, size_type __pos = 0) const
12881 { return this->find(__c, __pos); }
12882 # 1973 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12883 size_type
12884 find_last_of(const basic_string& __str, size_type __pos = npos) const
12885 { return this->find_last_of(__str.data(), __pos, __str.size()); }
12886 # 1988 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12887 size_type
12888 find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
12889 # 2001 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12890 size_type
12891 find_last_of(const _CharT* __s, size_type __pos = npos) const
12892 {
12893 ;
12894 return this->find_last_of(__s, __pos, traits_type::length(__s));
12895 }
12896 # 2020 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12897 size_type
12898 find_last_of(_CharT __c, size_type __pos = npos) const
12899 { return this->rfind(__c, __pos); }
12900 # 2034 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12901 size_type
12902 find_first_not_of(const basic_string& __str, size_type __pos = 0) const
12903 { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
12904 # 2049 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12905 size_type
12906 find_first_not_of(const _CharT* __s, size_type __pos,
12907 size_type __n) const;
12908 # 2063 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12909 size_type
12910 find_first_not_of(const _CharT* __s, size_type __pos = 0) const
12911 {
12912 ;
12913 return this->find_first_not_of(__s, __pos, traits_type::length(__s));
12914 }
12915 # 2080 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12916 size_type
12917 find_first_not_of(_CharT __c, size_type __pos = 0) const;
12918 # 2093 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12919 size_type
12920 find_last_not_of(const basic_string& __str, size_type __pos = npos) const
12921 { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
12922 # 2109 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12923 size_type
12924 find_last_not_of(const _CharT* __s, size_type __pos,
12925 size_type __n) const;
12926 # 2122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12927 size_type
12928 find_last_not_of(const _CharT* __s, size_type __pos = npos) const
12929 {
12930 ;
12931 return this->find_last_not_of(__s, __pos, traits_type::length(__s));
12932 }
12933 # 2139 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12934 size_type
12935 find_last_not_of(_CharT __c, size_type __pos = npos) const;
12936 # 2154 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12937 basic_string
12938 substr(size_type __pos = 0, size_type __n = npos) const
12939 { return basic_string(*this,
12940 _M_check(__pos, "basic_string::substr"), __n); }
12941 # 2172 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12942 int
12943 compare(const basic_string& __str) const
12944 {
12945 const size_type __size = this->size();
12946 const size_type __osize = __str.size();
12947 const size_type __len = std::min(__size, __osize);
12948
12949 int __r = traits_type::compare(_M_data(), __str.data(), __len);
12950 if (!__r)
12951 __r = _S_compare(__size, __osize);
12952 return __r;
12953 }
12954 # 2202 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12955 int
12956 compare(size_type __pos, size_type __n, const basic_string& __str) const;
12957 # 2226 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12958 int
12959 compare(size_type __pos1, size_type __n1, const basic_string& __str,
12960 size_type __pos2, size_type __n2) const;
12961 # 2244 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12962 int
12963 compare(const _CharT* __s) const;
12964 # 2267 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12965 int
12966 compare(size_type __pos, size_type __n1, const _CharT* __s) const;
12967 # 2292 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12968 int
12969 compare(size_type __pos, size_type __n1, const _CharT* __s,
12970 size_type __n2) const;
12971 };
12972 # 2304 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
12973 template<typename _CharT, typename _Traits, typename _Alloc>
12974 basic_string<_CharT, _Traits, _Alloc>
12975 operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
12976 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
12977 {
12978 basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
12979 __str.append(__rhs);
12980 return __str;
12981 }
12982
12983
12984
12985
12986
12987
12988
12989 template<typename _CharT, typename _Traits, typename _Alloc>
12990 basic_string<_CharT,_Traits,_Alloc>
12991 operator+(const _CharT* __lhs,
12992 const basic_string<_CharT,_Traits,_Alloc>& __rhs);
12993
12994
12995
12996
12997
12998
12999
13000 template<typename _CharT, typename _Traits, typename _Alloc>
13001 basic_string<_CharT,_Traits,_Alloc>
13002 operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
13003
13004
13005
13006
13007
13008
13009
13010 template<typename _CharT, typename _Traits, typename _Alloc>
13011 inline basic_string<_CharT, _Traits, _Alloc>
13012 operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13013 const _CharT* __rhs)
13014 {
13015 basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
13016 __str.append(__rhs);
13017 return __str;
13018 }
13019
13020
13021
13022
13023
13024
13025
13026 template<typename _CharT, typename _Traits, typename _Alloc>
13027 inline basic_string<_CharT, _Traits, _Alloc>
13028 operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
13029 {
13030 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
13031 typedef typename __string_type::size_type __size_type;
13032 __string_type __str(__lhs);
13033 __str.append(__size_type(1), __rhs);
13034 return __str;
13035 }
13036 # 2425 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13037 template<typename _CharT, typename _Traits, typename _Alloc>
13038 inline bool
13039 operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13040 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13041 { return __lhs.compare(__rhs) == 0; }
13042
13043 template<typename _CharT>
13044 inline
13045 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
13046 operator==(const basic_string<_CharT>& __lhs,
13047 const basic_string<_CharT>& __rhs)
13048 { return (__lhs.size() == __rhs.size()
13049 && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
13050 __lhs.size())); }
13051
13052
13053
13054
13055
13056
13057
13058 template<typename _CharT, typename _Traits, typename _Alloc>
13059 inline bool
13060 operator==(const _CharT* __lhs,
13061 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13062 { return __rhs.compare(__lhs) == 0; }
13063
13064
13065
13066
13067
13068
13069
13070 template<typename _CharT, typename _Traits, typename _Alloc>
13071 inline bool
13072 operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13073 const _CharT* __rhs)
13074 { return __lhs.compare(__rhs) == 0; }
13075 # 2471 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13076 template<typename _CharT, typename _Traits, typename _Alloc>
13077 inline bool
13078 operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13079 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13080 { return !(__lhs == __rhs); }
13081
13082
13083
13084
13085
13086
13087
13088 template<typename _CharT, typename _Traits, typename _Alloc>
13089 inline bool
13090 operator!=(const _CharT* __lhs,
13091 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13092 { return !(__lhs == __rhs); }
13093
13094
13095
13096
13097
13098
13099
13100 template<typename _CharT, typename _Traits, typename _Alloc>
13101 inline bool
13102 operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13103 const _CharT* __rhs)
13104 { return !(__lhs == __rhs); }
13105 # 2508 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13106 template<typename _CharT, typename _Traits, typename _Alloc>
13107 inline bool
13108 operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13109 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13110 { return __lhs.compare(__rhs) < 0; }
13111
13112
13113
13114
13115
13116
13117
13118 template<typename _CharT, typename _Traits, typename _Alloc>
13119 inline bool
13120 operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13121 const _CharT* __rhs)
13122 { return __lhs.compare(__rhs) < 0; }
13123
13124
13125
13126
13127
13128
13129
13130 template<typename _CharT, typename _Traits, typename _Alloc>
13131 inline bool
13132 operator<(const _CharT* __lhs,
13133 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13134 { return __rhs.compare(__lhs) > 0; }
13135 # 2545 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13136 template<typename _CharT, typename _Traits, typename _Alloc>
13137 inline bool
13138 operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13139 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13140 { return __lhs.compare(__rhs) > 0; }
13141
13142
13143
13144
13145
13146
13147
13148 template<typename _CharT, typename _Traits, typename _Alloc>
13149 inline bool
13150 operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13151 const _CharT* __rhs)
13152 { return __lhs.compare(__rhs) > 0; }
13153
13154
13155
13156
13157
13158
13159
13160 template<typename _CharT, typename _Traits, typename _Alloc>
13161 inline bool
13162 operator>(const _CharT* __lhs,
13163 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13164 { return __rhs.compare(__lhs) < 0; }
13165 # 2582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13166 template<typename _CharT, typename _Traits, typename _Alloc>
13167 inline bool
13168 operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13169 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13170 { return __lhs.compare(__rhs) <= 0; }
13171
13172
13173
13174
13175
13176
13177
13178 template<typename _CharT, typename _Traits, typename _Alloc>
13179 inline bool
13180 operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13181 const _CharT* __rhs)
13182 { return __lhs.compare(__rhs) <= 0; }
13183
13184
13185
13186
13187
13188
13189
13190 template<typename _CharT, typename _Traits, typename _Alloc>
13191 inline bool
13192 operator<=(const _CharT* __lhs,
13193 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13194 { return __rhs.compare(__lhs) >= 0; }
13195 # 2619 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13196 template<typename _CharT, typename _Traits, typename _Alloc>
13197 inline bool
13198 operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13199 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13200 { return __lhs.compare(__rhs) >= 0; }
13201
13202
13203
13204
13205
13206
13207
13208 template<typename _CharT, typename _Traits, typename _Alloc>
13209 inline bool
13210 operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
13211 const _CharT* __rhs)
13212 { return __lhs.compare(__rhs) >= 0; }
13213
13214
13215
13216
13217
13218
13219
13220 template<typename _CharT, typename _Traits, typename _Alloc>
13221 inline bool
13222 operator>=(const _CharT* __lhs,
13223 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13224 { return __rhs.compare(__lhs) <= 0; }
13225 # 2656 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13226 template<typename _CharT, typename _Traits, typename _Alloc>
13227 inline void
13228 swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
13229 basic_string<_CharT, _Traits, _Alloc>& __rhs)
13230 { __lhs.swap(__rhs); }
13231 # 2673 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13232 template<typename _CharT, typename _Traits, typename _Alloc>
13233 basic_istream<_CharT, _Traits>&
13234 operator>>(basic_istream<_CharT, _Traits>& __is,
13235 basic_string<_CharT, _Traits, _Alloc>& __str);
13236
13237 template<>
13238 basic_istream<char>&
13239 operator>>(basic_istream<char>& __is, basic_string<char>& __str);
13240 # 2691 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13241 template<typename _CharT, typename _Traits, typename _Alloc>
13242 inline basic_ostream<_CharT, _Traits>&
13243 operator<<(basic_ostream<_CharT, _Traits>& __os,
13244 const basic_string<_CharT, _Traits, _Alloc>& __str)
13245 {
13246
13247
13248 return __ostream_insert(__os, __str.data(), __str.size());
13249 }
13250 # 2714 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13251 template<typename _CharT, typename _Traits, typename _Alloc>
13252 basic_istream<_CharT, _Traits>&
13253 getline(basic_istream<_CharT, _Traits>& __is,
13254 basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
13255 # 2732 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.h" 3
13256 template<typename _CharT, typename _Traits, typename _Alloc>
13257 inline basic_istream<_CharT, _Traits>&
13258 getline(basic_istream<_CharT, _Traits>& __is,
13259 basic_string<_CharT, _Traits, _Alloc>& __str)
13260 { return getline(__is, __str, __is.widen('\n')); }
13261
13262 template<>
13263 basic_istream<char>&
13264 getline(basic_istream<char>& __in, basic_string<char>& __str,
13265 char __delim);
13266
13267
13268 template<>
13269 basic_istream<wchar_t>&
13270 getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
13271 wchar_t __delim);
13272
13273
13274
13275 }
13276 # 55 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
13277 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.tcc" 1 3
13278 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.tcc" 3
13279
13280 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.tcc" 3
13281
13282
13283
13284 namespace std __attribute__ ((__visibility__ ("default")))
13285 {
13286
13287
13288 template<typename _CharT, typename _Traits, typename _Alloc>
13289 const typename basic_string<_CharT, _Traits, _Alloc>::size_type
13290 basic_string<_CharT, _Traits, _Alloc>::
13291 _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
13292
13293 template<typename _CharT, typename _Traits, typename _Alloc>
13294 const _CharT
13295 basic_string<_CharT, _Traits, _Alloc>::
13296 _Rep::_S_terminal = _CharT();
13297
13298 template<typename _CharT, typename _Traits, typename _Alloc>
13299 const typename basic_string<_CharT, _Traits, _Alloc>::size_type
13300 basic_string<_CharT, _Traits, _Alloc>::npos;
13301
13302
13303
13304 template<typename _CharT, typename _Traits, typename _Alloc>
13305 typename basic_string<_CharT, _Traits, _Alloc>::size_type
13306 basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
13307 (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
13308 sizeof(size_type)];
13309
13310
13311
13312
13313
13314 template<typename _CharT, typename _Traits, typename _Alloc>
13315 template<typename _InIterator>
13316 _CharT*
13317 basic_string<_CharT, _Traits, _Alloc>::
13318 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
13319 input_iterator_tag)
13320 {
13321
13322 if (__beg == __end && __a == _Alloc())
13323 return _S_empty_rep()._M_refdata();
13324
13325
13326 _CharT __buf[128];
13327 size_type __len = 0;
13328 while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
13329 {
13330 __buf[__len++] = *__beg;
13331 ++__beg;
13332 }
13333 _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
13334 _M_copy(__r->_M_refdata(), __buf, __len);
13335 try
13336 {
13337 while (__beg != __end)
13338 {
13339 if (__len == __r->_M_capacity)
13340 {
13341
13342 _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
13343 _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
13344 __r->_M_destroy(__a);
13345 __r = __another;
13346 }
13347 __r->_M_refdata()[__len++] = *__beg;
13348 ++__beg;
13349 }
13350 }
13351 catch(...)
13352 {
13353 __r->_M_destroy(__a);
13354 throw;
13355 }
13356 __r->_M_set_length_and_sharable(__len);
13357 return __r->_M_refdata();
13358 }
13359
13360 template<typename _CharT, typename _Traits, typename _Alloc>
13361 template <typename _InIterator>
13362 _CharT*
13363 basic_string<_CharT, _Traits, _Alloc>::
13364 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
13365 forward_iterator_tag)
13366 {
13367
13368 if (__beg == __end && __a == _Alloc())
13369 return _S_empty_rep()._M_refdata();
13370
13371
13372 if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
13373 __throw_logic_error(("basic_string::_S_construct null not valid"));
13374
13375 const size_type __dnew = static_cast<size_type>(std::distance(__beg,
13376 __end));
13377
13378 _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
13379 try
13380 { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
13381 catch(...)
13382 {
13383 __r->_M_destroy(__a);
13384 throw;
13385 }
13386 __r->_M_set_length_and_sharable(__dnew);
13387 return __r->_M_refdata();
13388 }
13389
13390 template<typename _CharT, typename _Traits, typename _Alloc>
13391 _CharT*
13392 basic_string<_CharT, _Traits, _Alloc>::
13393 _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
13394 {
13395
13396 if (__n == 0 && __a == _Alloc())
13397 return _S_empty_rep()._M_refdata();
13398
13399
13400 _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
13401 if (__n)
13402 _M_assign(__r->_M_refdata(), __n, __c);
13403
13404 __r->_M_set_length_and_sharable(__n);
13405 return __r->_M_refdata();
13406 }
13407
13408 template<typename _CharT, typename _Traits, typename _Alloc>
13409 basic_string<_CharT, _Traits, _Alloc>::
13410 basic_string(const basic_string& __str)
13411 : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
13412 __str.get_allocator()),
13413 __str.get_allocator())
13414 { }
13415
13416 template<typename _CharT, typename _Traits, typename _Alloc>
13417 basic_string<_CharT, _Traits, _Alloc>::
13418 basic_string(const _Alloc& __a)
13419 : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
13420 { }
13421
13422 template<typename _CharT, typename _Traits, typename _Alloc>
13423 basic_string<_CharT, _Traits, _Alloc>::
13424 basic_string(const basic_string& __str, size_type __pos, size_type __n)
13425 : _M_dataplus(_S_construct(__str._M_data()
13426 + __str._M_check(__pos,
13427 "basic_string::basic_string"),
13428 __str._M_data() + __str._M_limit(__pos, __n)
13429 + __pos, _Alloc()), _Alloc())
13430 { }
13431
13432 template<typename _CharT, typename _Traits, typename _Alloc>
13433 basic_string<_CharT, _Traits, _Alloc>::
13434 basic_string(const basic_string& __str, size_type __pos,
13435 size_type __n, const _Alloc& __a)
13436 : _M_dataplus(_S_construct(__str._M_data()
13437 + __str._M_check(__pos,
13438 "basic_string::basic_string"),
13439 __str._M_data() + __str._M_limit(__pos, __n)
13440 + __pos, __a), __a)
13441 { }
13442
13443
13444 template<typename _CharT, typename _Traits, typename _Alloc>
13445 basic_string<_CharT, _Traits, _Alloc>::
13446 basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
13447 : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
13448 { }
13449
13450
13451 template<typename _CharT, typename _Traits, typename _Alloc>
13452 basic_string<_CharT, _Traits, _Alloc>::
13453 basic_string(const _CharT* __s, const _Alloc& __a)
13454 : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
13455 __s + npos, __a), __a)
13456 { }
13457
13458 template<typename _CharT, typename _Traits, typename _Alloc>
13459 basic_string<_CharT, _Traits, _Alloc>::
13460 basic_string(size_type __n, _CharT __c, const _Alloc& __a)
13461 : _M_dataplus(_S_construct(__n, __c, __a), __a)
13462 { }
13463
13464
13465 template<typename _CharT, typename _Traits, typename _Alloc>
13466 template<typename _InputIterator>
13467 basic_string<_CharT, _Traits, _Alloc>::
13468 basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
13469 : _M_dataplus(_S_construct(__beg, __end, __a), __a)
13470 { }
13471 # 242 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.tcc" 3
13472 template<typename _CharT, typename _Traits, typename _Alloc>
13473 basic_string<_CharT, _Traits, _Alloc>&
13474 basic_string<_CharT, _Traits, _Alloc>::
13475 assign(const basic_string& __str)
13476 {
13477 if (_M_rep() != __str._M_rep())
13478 {
13479
13480 const allocator_type __a = this->get_allocator();
13481 _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
13482 _M_rep()->_M_dispose(__a);
13483 _M_data(__tmp);
13484 }
13485 return *this;
13486 }
13487
13488 template<typename _CharT, typename _Traits, typename _Alloc>
13489 basic_string<_CharT, _Traits, _Alloc>&
13490 basic_string<_CharT, _Traits, _Alloc>::
13491 assign(const _CharT* __s, size_type __n)
13492 {
13493 ;
13494 _M_check_length(this->size(), __n, "basic_string::assign");
13495 if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
13496 return _M_replace_safe(size_type(0), this->size(), __s, __n);
13497 else
13498 {
13499
13500 const size_type __pos = __s - _M_data();
13501 if (__pos >= __n)
13502 _M_copy(_M_data(), __s, __n);
13503 else if (__pos)
13504 _M_move(_M_data(), __s, __n);
13505 _M_rep()->_M_set_length_and_sharable(__n);
13506 return *this;
13507 }
13508 }
13509
13510 template<typename _CharT, typename _Traits, typename _Alloc>
13511 basic_string<_CharT, _Traits, _Alloc>&
13512 basic_string<_CharT, _Traits, _Alloc>::
13513 append(size_type __n, _CharT __c)
13514 {
13515 if (__n)
13516 {
13517 _M_check_length(size_type(0), __n, "basic_string::append");
13518 const size_type __len = __n + this->size();
13519 if (__len > this->capacity() || _M_rep()->_M_is_shared())
13520 this->reserve(__len);
13521 _M_assign(_M_data() + this->size(), __n, __c);
13522 _M_rep()->_M_set_length_and_sharable(__len);
13523 }
13524 return *this;
13525 }
13526
13527 template<typename _CharT, typename _Traits, typename _Alloc>
13528 basic_string<_CharT, _Traits, _Alloc>&
13529 basic_string<_CharT, _Traits, _Alloc>::
13530 append(const _CharT* __s, size_type __n)
13531 {
13532 ;
13533 if (__n)
13534 {
13535 _M_check_length(size_type(0), __n, "basic_string::append");
13536 const size_type __len = __n + this->size();
13537 if (__len > this->capacity() || _M_rep()->_M_is_shared())
13538 {
13539 if (_M_disjunct(__s))
13540 this->reserve(__len);
13541 else
13542 {
13543 const size_type __off = __s - _M_data();
13544 this->reserve(__len);
13545 __s = _M_data() + __off;
13546 }
13547 }
13548 _M_copy(_M_data() + this->size(), __s, __n);
13549 _M_rep()->_M_set_length_and_sharable(__len);
13550 }
13551 return *this;
13552 }
13553
13554 template<typename _CharT, typename _Traits, typename _Alloc>
13555 basic_string<_CharT, _Traits, _Alloc>&
13556 basic_string<_CharT, _Traits, _Alloc>::
13557 append(const basic_string& __str)
13558 {
13559 const size_type __size = __str.size();
13560 if (__size)
13561 {
13562 const size_type __len = __size + this->size();
13563 if (__len > this->capacity() || _M_rep()->_M_is_shared())
13564 this->reserve(__len);
13565 _M_copy(_M_data() + this->size(), __str._M_data(), __size);
13566 _M_rep()->_M_set_length_and_sharable(__len);
13567 }
13568 return *this;
13569 }
13570
13571 template<typename _CharT, typename _Traits, typename _Alloc>
13572 basic_string<_CharT, _Traits, _Alloc>&
13573 basic_string<_CharT, _Traits, _Alloc>::
13574 append(const basic_string& __str, size_type __pos, size_type __n)
13575 {
13576 __str._M_check(__pos, "basic_string::append");
13577 __n = __str._M_limit(__pos, __n);
13578 if (__n)
13579 {
13580 const size_type __len = __n + this->size();
13581 if (__len > this->capacity() || _M_rep()->_M_is_shared())
13582 this->reserve(__len);
13583 _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
13584 _M_rep()->_M_set_length_and_sharable(__len);
13585 }
13586 return *this;
13587 }
13588
13589 template<typename _CharT, typename _Traits, typename _Alloc>
13590 basic_string<_CharT, _Traits, _Alloc>&
13591 basic_string<_CharT, _Traits, _Alloc>::
13592 insert(size_type __pos, const _CharT* __s, size_type __n)
13593 {
13594 ;
13595 _M_check(__pos, "basic_string::insert");
13596 _M_check_length(size_type(0), __n, "basic_string::insert");
13597 if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
13598 return _M_replace_safe(__pos, size_type(0), __s, __n);
13599 else
13600 {
13601
13602 const size_type __off = __s - _M_data();
13603 _M_mutate(__pos, 0, __n);
13604 __s = _M_data() + __off;
13605 _CharT* __p = _M_data() + __pos;
13606 if (__s + __n <= __p)
13607 _M_copy(__p, __s, __n);
13608 else if (__s >= __p)
13609 _M_copy(__p, __s + __n, __n);
13610 else
13611 {
13612 const size_type __nleft = __p - __s;
13613 _M_copy(__p, __s, __nleft);
13614 _M_copy(__p + __nleft, __p + __n, __n - __nleft);
13615 }
13616 return *this;
13617 }
13618 }
13619
13620 template<typename _CharT, typename _Traits, typename _Alloc>
13621 typename basic_string<_CharT, _Traits, _Alloc>::iterator
13622 basic_string<_CharT, _Traits, _Alloc>::
13623 erase(iterator __first, iterator __last)
13624 {
13625
13626 ;
13627
13628
13629
13630
13631 const size_type __size = __last - __first;
13632 if (__size)
13633 {
13634 const size_type __pos = __first - _M_ibegin();
13635 _M_mutate(__pos, __size, size_type(0));
13636 _M_rep()->_M_set_leaked();
13637 return iterator(_M_data() + __pos);
13638 }
13639 else
13640 return __first;
13641 }
13642
13643 template<typename _CharT, typename _Traits, typename _Alloc>
13644 basic_string<_CharT, _Traits, _Alloc>&
13645 basic_string<_CharT, _Traits, _Alloc>::
13646 replace(size_type __pos, size_type __n1, const _CharT* __s,
13647 size_type __n2)
13648 {
13649 ;
13650 _M_check(__pos, "basic_string::replace");
13651 __n1 = _M_limit(__pos, __n1);
13652 _M_check_length(__n1, __n2, "basic_string::replace");
13653 bool __left;
13654 if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
13655 return _M_replace_safe(__pos, __n1, __s, __n2);
13656 else if ((__left = __s + __n2 <= _M_data() + __pos)
13657 || _M_data() + __pos + __n1 <= __s)
13658 {
13659
13660 size_type __off = __s - _M_data();
13661 __left ? __off : (__off += __n2 - __n1);
13662 _M_mutate(__pos, __n1, __n2);
13663 _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
13664 return *this;
13665 }
13666 else
13667 {
13668
13669 const basic_string __tmp(__s, __n2);
13670 return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
13671 }
13672 }
13673
13674 template<typename _CharT, typename _Traits, typename _Alloc>
13675 void
13676 basic_string<_CharT, _Traits, _Alloc>::_Rep::
13677 _M_destroy(const _Alloc& __a) throw ()
13678 {
13679 const size_type __size = sizeof(_Rep_base) +
13680 (this->_M_capacity + 1) * sizeof(_CharT);
13681 _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
13682 }
13683
13684 template<typename _CharT, typename _Traits, typename _Alloc>
13685 void
13686 basic_string<_CharT, _Traits, _Alloc>::
13687 _M_leak_hard()
13688 {
13689
13690 if (_M_rep() == &_S_empty_rep())
13691 return;
13692
13693 if (_M_rep()->_M_is_shared())
13694 _M_mutate(0, 0, 0);
13695 _M_rep()->_M_set_leaked();
13696 }
13697
13698 template<typename _CharT, typename _Traits, typename _Alloc>
13699 void
13700 basic_string<_CharT, _Traits, _Alloc>::
13701 _M_mutate(size_type __pos, size_type __len1, size_type __len2)
13702 {
13703 const size_type __old_size = this->size();
13704 const size_type __new_size = __old_size + __len2 - __len1;
13705 const size_type __how_much = __old_size - __pos - __len1;
13706
13707 if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
13708 {
13709
13710 const allocator_type __a = get_allocator();
13711 _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
13712
13713 if (__pos)
13714 _M_copy(__r->_M_refdata(), _M_data(), __pos);
13715 if (__how_much)
13716 _M_copy(__r->_M_refdata() + __pos + __len2,
13717 _M_data() + __pos + __len1, __how_much);
13718
13719 _M_rep()->_M_dispose(__a);
13720 _M_data(__r->_M_refdata());
13721 }
13722 else if (__how_much && __len1 != __len2)
13723 {
13724
13725 _M_move(_M_data() + __pos + __len2,
13726 _M_data() + __pos + __len1, __how_much);
13727 }
13728 _M_rep()->_M_set_length_and_sharable(__new_size);
13729 }
13730
13731 template<typename _CharT, typename _Traits, typename _Alloc>
13732 void
13733 basic_string<_CharT, _Traits, _Alloc>::
13734 reserve(size_type __res)
13735 {
13736 if (__res != this->capacity() || _M_rep()->_M_is_shared())
13737 {
13738
13739 if (__res < this->size())
13740 __res = this->size();
13741 const allocator_type __a = get_allocator();
13742 _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
13743 _M_rep()->_M_dispose(__a);
13744 _M_data(__tmp);
13745 }
13746 }
13747
13748 template<typename _CharT, typename _Traits, typename _Alloc>
13749 void
13750 basic_string<_CharT, _Traits, _Alloc>::
13751 swap(basic_string& __s)
13752 {
13753 if (_M_rep()->_M_is_leaked())
13754 _M_rep()->_M_set_sharable();
13755 if (__s._M_rep()->_M_is_leaked())
13756 __s._M_rep()->_M_set_sharable();
13757 if (this->get_allocator() == __s.get_allocator())
13758 {
13759 _CharT* __tmp = _M_data();
13760 _M_data(__s._M_data());
13761 __s._M_data(__tmp);
13762 }
13763
13764 else
13765 {
13766 const basic_string __tmp1(_M_ibegin(), _M_iend(),
13767 __s.get_allocator());
13768 const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
13769 this->get_allocator());
13770 *this = __tmp2;
13771 __s = __tmp1;
13772 }
13773 }
13774
13775 template<typename _CharT, typename _Traits, typename _Alloc>
13776 typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
13777 basic_string<_CharT, _Traits, _Alloc>::_Rep::
13778 _S_create(size_type __capacity, size_type __old_capacity,
13779 const _Alloc& __alloc)
13780 {
13781
13782
13783 if (__capacity > _S_max_size)
13784 __throw_length_error(("basic_string::_S_create"));
13785 # 579 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_string.tcc" 3
13786 const size_type __pagesize = 4096;
13787 const size_type __malloc_header_size = 4 * sizeof(void*);
13788
13789
13790
13791
13792
13793
13794
13795 if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
13796 __capacity = 2 * __old_capacity;
13797
13798
13799
13800
13801 size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
13802
13803 const size_type __adj_size = __size + __malloc_header_size;
13804 if (__adj_size > __pagesize && __capacity > __old_capacity)
13805 {
13806 const size_type __extra = __pagesize - __adj_size % __pagesize;
13807 __capacity += __extra / sizeof(_CharT);
13808
13809 if (__capacity > _S_max_size)
13810 __capacity = _S_max_size;
13811 __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
13812 }
13813
13814
13815
13816 void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
13817 _Rep *__p = new (__place) _Rep;
13818 __p->_M_capacity = __capacity;
13819
13820
13821
13822
13823
13824
13825
13826 __p->_M_set_sharable();
13827 return __p;
13828 }
13829
13830 template<typename _CharT, typename _Traits, typename _Alloc>
13831 _CharT*
13832 basic_string<_CharT, _Traits, _Alloc>::_Rep::
13833 _M_clone(const _Alloc& __alloc, size_type __res)
13834 {
13835
13836 const size_type __requested_cap = this->_M_length + __res;
13837 _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
13838 __alloc);
13839 if (this->_M_length)
13840 _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
13841
13842 __r->_M_set_length_and_sharable(this->_M_length);
13843 return __r->_M_refdata();
13844 }
13845
13846 template<typename _CharT, typename _Traits, typename _Alloc>
13847 void
13848 basic_string<_CharT, _Traits, _Alloc>::
13849 resize(size_type __n, _CharT __c)
13850 {
13851 const size_type __size = this->size();
13852 _M_check_length(__size, __n, "basic_string::resize");
13853 if (__size < __n)
13854 this->append(__n - __size, __c);
13855 else if (__n < __size)
13856 this->erase(__n);
13857
13858 }
13859
13860 template<typename _CharT, typename _Traits, typename _Alloc>
13861 template<typename _InputIterator>
13862 basic_string<_CharT, _Traits, _Alloc>&
13863 basic_string<_CharT, _Traits, _Alloc>::
13864 _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
13865 _InputIterator __k2, __false_type)
13866 {
13867 const basic_string __s(__k1, __k2);
13868 const size_type __n1 = __i2 - __i1;
13869 _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
13870 return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
13871 __s.size());
13872 }
13873
13874 template<typename _CharT, typename _Traits, typename _Alloc>
13875 basic_string<_CharT, _Traits, _Alloc>&
13876 basic_string<_CharT, _Traits, _Alloc>::
13877 _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
13878 _CharT __c)
13879 {
13880 _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
13881 _M_mutate(__pos1, __n1, __n2);
13882 if (__n2)
13883 _M_assign(_M_data() + __pos1, __n2, __c);
13884 return *this;
13885 }
13886
13887 template<typename _CharT, typename _Traits, typename _Alloc>
13888 basic_string<_CharT, _Traits, _Alloc>&
13889 basic_string<_CharT, _Traits, _Alloc>::
13890 _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
13891 size_type __n2)
13892 {
13893 _M_mutate(__pos1, __n1, __n2);
13894 if (__n2)
13895 _M_copy(_M_data() + __pos1, __s, __n2);
13896 return *this;
13897 }
13898
13899 template<typename _CharT, typename _Traits, typename _Alloc>
13900 basic_string<_CharT, _Traits, _Alloc>
13901 operator+(const _CharT* __lhs,
13902 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13903 {
13904 ;
13905 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
13906 typedef typename __string_type::size_type __size_type;
13907 const __size_type __len = _Traits::length(__lhs);
13908 __string_type __str;
13909 __str.reserve(__len + __rhs.size());
13910 __str.append(__lhs, __len);
13911 __str.append(__rhs);
13912 return __str;
13913 }
13914
13915 template<typename _CharT, typename _Traits, typename _Alloc>
13916 basic_string<_CharT, _Traits, _Alloc>
13917 operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
13918 {
13919 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
13920 typedef typename __string_type::size_type __size_type;
13921 __string_type __str;
13922 const __size_type __len = __rhs.size();
13923 __str.reserve(__len + 1);
13924 __str.append(__size_type(1), __lhs);
13925 __str.append(__rhs);
13926 return __str;
13927 }
13928
13929 template<typename _CharT, typename _Traits, typename _Alloc>
13930 typename basic_string<_CharT, _Traits, _Alloc>::size_type
13931 basic_string<_CharT, _Traits, _Alloc>::
13932 copy(_CharT* __s, size_type __n, size_type __pos) const
13933 {
13934 _M_check(__pos, "basic_string::copy");
13935 __n = _M_limit(__pos, __n);
13936 ;
13937 if (__n)
13938 _M_copy(__s, _M_data() + __pos, __n);
13939
13940 return __n;
13941 }
13942
13943 template<typename _CharT, typename _Traits, typename _Alloc>
13944 typename basic_string<_CharT, _Traits, _Alloc>::size_type
13945 basic_string<_CharT, _Traits, _Alloc>::
13946 find(const _CharT* __s, size_type __pos, size_type __n) const
13947 {
13948 ;
13949 const size_type __size = this->size();
13950 const _CharT* __data = _M_data();
13951
13952 if (__n == 0)
13953 return __pos <= __size ? __pos : npos;
13954
13955 if (__n <= __size)
13956 {
13957 for (; __pos <= __size - __n; ++__pos)
13958 if (traits_type::eq(__data[__pos], __s[0])
13959 && traits_type::compare(__data + __pos + 1,
13960 __s + 1, __n - 1) == 0)
13961 return __pos;
13962 }
13963 return npos;
13964 }
13965
13966 template<typename _CharT, typename _Traits, typename _Alloc>
13967 typename basic_string<_CharT, _Traits, _Alloc>::size_type
13968 basic_string<_CharT, _Traits, _Alloc>::
13969 find(_CharT __c, size_type __pos) const
13970 {
13971 size_type __ret = npos;
13972 const size_type __size = this->size();
13973 if (__pos < __size)
13974 {
13975 const _CharT* __data = _M_data();
13976 const size_type __n = __size - __pos;
13977 const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
13978 if (__p)
13979 __ret = __p - __data;
13980 }
13981 return __ret;
13982 }
13983
13984 template<typename _CharT, typename _Traits, typename _Alloc>
13985 typename basic_string<_CharT, _Traits, _Alloc>::size_type
13986 basic_string<_CharT, _Traits, _Alloc>::
13987 rfind(const _CharT* __s, size_type __pos, size_type __n) const
13988 {
13989 ;
13990 const size_type __size = this->size();
13991 if (__n <= __size)
13992 {
13993 __pos = std::min(size_type(__size - __n), __pos);
13994 const _CharT* __data = _M_data();
13995 do
13996 {
13997 if (traits_type::compare(__data + __pos, __s, __n) == 0)
13998 return __pos;
13999 }
14000 while (__pos-- > 0);
14001 }
14002 return npos;
14003 }
14004
14005 template<typename _CharT, typename _Traits, typename _Alloc>
14006 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14007 basic_string<_CharT, _Traits, _Alloc>::
14008 rfind(_CharT __c, size_type __pos) const
14009 {
14010 size_type __size = this->size();
14011 if (__size)
14012 {
14013 if (--__size > __pos)
14014 __size = __pos;
14015 for (++__size; __size-- > 0; )
14016 if (traits_type::eq(_M_data()[__size], __c))
14017 return __size;
14018 }
14019 return npos;
14020 }
14021
14022 template<typename _CharT, typename _Traits, typename _Alloc>
14023 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14024 basic_string<_CharT, _Traits, _Alloc>::
14025 find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
14026 {
14027 ;
14028 for (; __n && __pos < this->size(); ++__pos)
14029 {
14030 const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
14031 if (__p)
14032 return __pos;
14033 }
14034 return npos;
14035 }
14036
14037 template<typename _CharT, typename _Traits, typename _Alloc>
14038 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14039 basic_string<_CharT, _Traits, _Alloc>::
14040 find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
14041 {
14042 ;
14043 size_type __size = this->size();
14044 if (__size && __n)
14045 {
14046 if (--__size > __pos)
14047 __size = __pos;
14048 do
14049 {
14050 if (traits_type::find(__s, __n, _M_data()[__size]))
14051 return __size;
14052 }
14053 while (__size-- != 0);
14054 }
14055 return npos;
14056 }
14057
14058 template<typename _CharT, typename _Traits, typename _Alloc>
14059 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14060 basic_string<_CharT, _Traits, _Alloc>::
14061 find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
14062 {
14063 ;
14064 for (; __pos < this->size(); ++__pos)
14065 if (!traits_type::find(__s, __n, _M_data()[__pos]))
14066 return __pos;
14067 return npos;
14068 }
14069
14070 template<typename _CharT, typename _Traits, typename _Alloc>
14071 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14072 basic_string<_CharT, _Traits, _Alloc>::
14073 find_first_not_of(_CharT __c, size_type __pos) const
14074 {
14075 for (; __pos < this->size(); ++__pos)
14076 if (!traits_type::eq(_M_data()[__pos], __c))
14077 return __pos;
14078 return npos;
14079 }
14080
14081 template<typename _CharT, typename _Traits, typename _Alloc>
14082 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14083 basic_string<_CharT, _Traits, _Alloc>::
14084 find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
14085 {
14086 ;
14087 size_type __size = this->size();
14088 if (__size)
14089 {
14090 if (--__size > __pos)
14091 __size = __pos;
14092 do
14093 {
14094 if (!traits_type::find(__s, __n, _M_data()[__size]))
14095 return __size;
14096 }
14097 while (__size--);
14098 }
14099 return npos;
14100 }
14101
14102 template<typename _CharT, typename _Traits, typename _Alloc>
14103 typename basic_string<_CharT, _Traits, _Alloc>::size_type
14104 basic_string<_CharT, _Traits, _Alloc>::
14105 find_last_not_of(_CharT __c, size_type __pos) const
14106 {
14107 size_type __size = this->size();
14108 if (__size)
14109 {
14110 if (--__size > __pos)
14111 __size = __pos;
14112 do
14113 {
14114 if (!traits_type::eq(_M_data()[__size], __c))
14115 return __size;
14116 }
14117 while (__size--);
14118 }
14119 return npos;
14120 }
14121
14122 template<typename _CharT, typename _Traits, typename _Alloc>
14123 int
14124 basic_string<_CharT, _Traits, _Alloc>::
14125 compare(size_type __pos, size_type __n, const basic_string& __str) const
14126 {
14127 _M_check(__pos, "basic_string::compare");
14128 __n = _M_limit(__pos, __n);
14129 const size_type __osize = __str.size();
14130 const size_type __len = std::min(__n, __osize);
14131 int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
14132 if (!__r)
14133 __r = _S_compare(__n, __osize);
14134 return __r;
14135 }
14136
14137 template<typename _CharT, typename _Traits, typename _Alloc>
14138 int
14139 basic_string<_CharT, _Traits, _Alloc>::
14140 compare(size_type __pos1, size_type __n1, const basic_string& __str,
14141 size_type __pos2, size_type __n2) const
14142 {
14143 _M_check(__pos1, "basic_string::compare");
14144 __str._M_check(__pos2, "basic_string::compare");
14145 __n1 = _M_limit(__pos1, __n1);
14146 __n2 = __str._M_limit(__pos2, __n2);
14147 const size_type __len = std::min(__n1, __n2);
14148 int __r = traits_type::compare(_M_data() + __pos1,
14149 __str.data() + __pos2, __len);
14150 if (!__r)
14151 __r = _S_compare(__n1, __n2);
14152 return __r;
14153 }
14154
14155 template<typename _CharT, typename _Traits, typename _Alloc>
14156 int
14157 basic_string<_CharT, _Traits, _Alloc>::
14158 compare(const _CharT* __s) const
14159 {
14160 ;
14161 const size_type __size = this->size();
14162 const size_type __osize = traits_type::length(__s);
14163 const size_type __len = std::min(__size, __osize);
14164 int __r = traits_type::compare(_M_data(), __s, __len);
14165 if (!__r)
14166 __r = _S_compare(__size, __osize);
14167 return __r;
14168 }
14169
14170 template<typename _CharT, typename _Traits, typename _Alloc>
14171 int
14172 basic_string <_CharT, _Traits, _Alloc>::
14173 compare(size_type __pos, size_type __n1, const _CharT* __s) const
14174 {
14175 ;
14176 _M_check(__pos, "basic_string::compare");
14177 __n1 = _M_limit(__pos, __n1);
14178 const size_type __osize = traits_type::length(__s);
14179 const size_type __len = std::min(__n1, __osize);
14180 int __r = traits_type::compare(_M_data() + __pos, __s, __len);
14181 if (!__r)
14182 __r = _S_compare(__n1, __osize);
14183 return __r;
14184 }
14185
14186 template<typename _CharT, typename _Traits, typename _Alloc>
14187 int
14188 basic_string <_CharT, _Traits, _Alloc>::
14189 compare(size_type __pos, size_type __n1, const _CharT* __s,
14190 size_type __n2) const
14191 {
14192 ;
14193 _M_check(__pos, "basic_string::compare");
14194 __n1 = _M_limit(__pos, __n1);
14195 const size_type __len = std::min(__n1, __n2);
14196 int __r = traits_type::compare(_M_data() + __pos, __s, __len);
14197 if (!__r)
14198 __r = _S_compare(__n1, __n2);
14199 return __r;
14200 }
14201
14202
14203 template<typename _CharT, typename _Traits, typename _Alloc>
14204 basic_istream<_CharT, _Traits>&
14205 operator>>(basic_istream<_CharT, _Traits>& __in,
14206 basic_string<_CharT, _Traits, _Alloc>& __str)
14207 {
14208 typedef basic_istream<_CharT, _Traits> __istream_type;
14209 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
14210 typedef typename __istream_type::ios_base __ios_base;
14211 typedef typename __istream_type::int_type __int_type;
14212 typedef typename __string_type::size_type __size_type;
14213 typedef ctype<_CharT> __ctype_type;
14214 typedef typename __ctype_type::ctype_base __ctype_base;
14215
14216 __size_type __extracted = 0;
14217 typename __ios_base::iostate __err = __ios_base::goodbit;
14218 typename __istream_type::sentry __cerb(__in, false);
14219 if (__cerb)
14220 {
14221 try
14222 {
14223
14224 __str.erase();
14225 _CharT __buf[128];
14226 __size_type __len = 0;
14227 const streamsize __w = __in.width();
14228 const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
14229 : __str.max_size();
14230 const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
14231 const __int_type __eof = _Traits::eof();
14232 __int_type __c = __in.rdbuf()->sgetc();
14233
14234 while (__extracted < __n
14235 && !_Traits::eq_int_type(__c, __eof)
14236 && !__ct.is(__ctype_base::space,
14237 _Traits::to_char_type(__c)))
14238 {
14239 if (__len == sizeof(__buf) / sizeof(_CharT))
14240 {
14241 __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
14242 __len = 0;
14243 }
14244 __buf[__len++] = _Traits::to_char_type(__c);
14245 ++__extracted;
14246 __c = __in.rdbuf()->snextc();
14247 }
14248 __str.append(__buf, __len);
14249
14250 if (_Traits::eq_int_type(__c, __eof))
14251 __err |= __ios_base::eofbit;
14252 __in.width(0);
14253 }
14254 catch(__cxxabiv1::__forced_unwind&)
14255 {
14256 __in._M_setstate(__ios_base::badbit);
14257 throw;
14258 }
14259 catch(...)
14260 {
14261
14262
14263
14264 __in._M_setstate(__ios_base::badbit);
14265 }
14266 }
14267
14268 if (!__extracted)
14269 __err |= __ios_base::failbit;
14270 if (__err)
14271 __in.setstate(__err);
14272 return __in;
14273 }
14274
14275 template<typename _CharT, typename _Traits, typename _Alloc>
14276 basic_istream<_CharT, _Traits>&
14277 getline(basic_istream<_CharT, _Traits>& __in,
14278 basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
14279 {
14280 typedef basic_istream<_CharT, _Traits> __istream_type;
14281 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
14282 typedef typename __istream_type::ios_base __ios_base;
14283 typedef typename __istream_type::int_type __int_type;
14284 typedef typename __string_type::size_type __size_type;
14285
14286 __size_type __extracted = 0;
14287 const __size_type __n = __str.max_size();
14288 typename __ios_base::iostate __err = __ios_base::goodbit;
14289 typename __istream_type::sentry __cerb(__in, true);
14290 if (__cerb)
14291 {
14292 try
14293 {
14294 __str.erase();
14295 const __int_type __idelim = _Traits::to_int_type(__delim);
14296 const __int_type __eof = _Traits::eof();
14297 __int_type __c = __in.rdbuf()->sgetc();
14298
14299 while (__extracted < __n
14300 && !_Traits::eq_int_type(__c, __eof)
14301 && !_Traits::eq_int_type(__c, __idelim))
14302 {
14303 __str += _Traits::to_char_type(__c);
14304 ++__extracted;
14305 __c = __in.rdbuf()->snextc();
14306 }
14307
14308 if (_Traits::eq_int_type(__c, __eof))
14309 __err |= __ios_base::eofbit;
14310 else if (_Traits::eq_int_type(__c, __idelim))
14311 {
14312 ++__extracted;
14313 __in.rdbuf()->sbumpc();
14314 }
14315 else
14316 __err |= __ios_base::failbit;
14317 }
14318 catch(__cxxabiv1::__forced_unwind&)
14319 {
14320 __in._M_setstate(__ios_base::badbit);
14321 throw;
14322 }
14323 catch(...)
14324 {
14325
14326
14327
14328 __in._M_setstate(__ios_base::badbit);
14329 }
14330 }
14331 if (!__extracted)
14332 __err |= __ios_base::failbit;
14333 if (__err)
14334 __in.setstate(__err);
14335 return __in;
14336 }
14337
14338
14339
14340
14341 extern template class basic_string<char>;
14342 extern template
14343 basic_istream<char>&
14344 operator>>(basic_istream<char>&, string&);
14345 extern template
14346 basic_ostream<char>&
14347 operator<<(basic_ostream<char>&, const string&);
14348 extern template
14349 basic_istream<char>&
14350 getline(basic_istream<char>&, string&, char);
14351 extern template
14352 basic_istream<char>&
14353 getline(basic_istream<char>&, string&);
14354
14355
14356 extern template class basic_string<wchar_t>;
14357 extern template
14358 basic_istream<wchar_t>&
14359 operator>>(basic_istream<wchar_t>&, wstring&);
14360 extern template
14361 basic_ostream<wchar_t>&
14362 operator<<(basic_ostream<wchar_t>&, const wstring&);
14363 extern template
14364 basic_istream<wchar_t>&
14365 getline(basic_istream<wchar_t>&, wstring&, wchar_t);
14366 extern template
14367 basic_istream<wchar_t>&
14368 getline(basic_istream<wchar_t>&, wstring&);
14369
14370
14371
14372
14373 }
14374 # 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/string" 2 3
14375 # 14 "quickbook/src/id_manager.hpp" 2
14376 # 1 "quickbook/src/values.hpp" 1
14377 # 16 "quickbook/src/values.hpp"
14378 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 1 3
14379 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
14380
14381 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
14382
14383 # 1 "/usr/include/assert.h" 1 3 4
14384 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 2 3
14385 # 17 "quickbook/src/values.hpp" 2
14386
14387 # 1 "../boost/iterator/iterator_traits.hpp" 1
14388
14389
14390
14391
14392
14393
14394
14395 # 1 "../boost/detail/iterator.hpp" 1
14396 # 54 "../boost/detail/iterator.hpp"
14397 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iterator" 1 3
14398 # 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iterator" 3
14399
14400 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iterator" 3
14401
14402
14403
14404
14405
14406 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 1 3
14407 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
14408
14409 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
14410
14411 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ios" 1 3
14412 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ios" 3
14413
14414 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ios" 3
14415
14416
14417
14418
14419
14420 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 1 3
14421 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
14422
14423 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
14424
14425
14426
14427 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 1 3
14428 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14429
14430 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14431
14432
14433
14434
14435
14436 namespace std __attribute__ ((__visibility__ ("default")))
14437 {
14438
14439 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14440 class locale
14441 {
14442 public:
14443
14444
14445 typedef int category;
14446
14447
14448 class facet;
14449 class id;
14450 class _Impl;
14451
14452 friend class facet;
14453 friend class _Impl;
14454
14455 template<typename _Facet>
14456 friend bool
14457 has_facet(const locale&) throw();
14458
14459 template<typename _Facet>
14460 friend const _Facet&
14461 use_facet(const locale&);
14462
14463 template<typename _Cache>
14464 friend struct __use_cache;
14465 # 100 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14466 static const category none = 0;
14467 static const category ctype = 1L << 0;
14468 static const category numeric = 1L << 1;
14469 static const category collate = 1L << 2;
14470 static const category time = 1L << 3;
14471 static const category monetary = 1L << 4;
14472 static const category messages = 1L << 5;
14473 static const category all = (ctype | numeric | collate |
14474 time | monetary | messages);
14475 # 119 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14476 locale() throw();
14477 # 128 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14478 locale(const locale& __other) throw();
14479 # 138 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14480 explicit
14481 locale(const char* __s);
14482 # 153 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14483 locale(const locale& __base, const char* __s, category __cat);
14484 # 166 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14485 locale(const locale& __base, const locale& __add, category __cat);
14486 # 178 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14487 template<typename _Facet>
14488 locale(const locale& __other, _Facet* __f);
14489
14490
14491 ~locale() throw();
14492 # 192 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14493 const locale&
14494 operator=(const locale& __other) throw();
14495 # 207 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14496 template<typename _Facet>
14497 locale
14498 combine(const locale& __other) const;
14499
14500
14501
14502
14503
14504
14505 string
14506 name() const;
14507 # 226 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14508 bool
14509 operator==(const locale& __other) const throw();
14510
14511
14512
14513
14514
14515
14516
14517 bool
14518 operator!=(const locale& __other) const throw()
14519 { return !(this->operator==(__other)); }
14520 # 254 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14521 template<typename _Char, typename _Traits, typename _Alloc>
14522 bool
14523 operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
14524 const basic_string<_Char, _Traits, _Alloc>& __s2) const;
14525 # 270 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14526 static locale
14527 global(const locale&);
14528
14529
14530
14531
14532 static const locale&
14533 classic();
14534
14535 private:
14536
14537 _Impl* _M_impl;
14538
14539
14540 static _Impl* _S_classic;
14541
14542
14543 static _Impl* _S_global;
14544
14545
14546
14547
14548
14549 static const char* const* const _S_categories;
14550 # 305 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14551 enum { _S_categories_size = 6 + 6 };
14552
14553
14554 static __gthread_once_t _S_once;
14555
14556
14557 explicit
14558 locale(_Impl*) throw();
14559
14560 static void
14561 _S_initialize();
14562
14563 static void
14564 _S_initialize_once() throw();
14565
14566 static category
14567 _S_normalize_category(category);
14568
14569 void
14570 _M_coalesce(const locale& __base, const locale& __add, category __cat);
14571 };
14572 # 339 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14573 class locale::facet
14574 {
14575 private:
14576 friend class locale;
14577 friend class locale::_Impl;
14578
14579 mutable _Atomic_word _M_refcount;
14580
14581
14582 static __c_locale _S_c_locale;
14583
14584
14585 static const char _S_c_name[2];
14586
14587
14588 static __gthread_once_t _S_once;
14589
14590
14591 static void
14592 _S_initialize_once();
14593
14594 protected:
14595 # 370 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14596 explicit
14597 facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
14598 { }
14599
14600
14601 virtual
14602 ~facet();
14603
14604 static void
14605 _S_create_c_locale(__c_locale& __cloc, const char* __s,
14606 __c_locale __old = 0);
14607
14608 static __c_locale
14609 _S_clone_c_locale(__c_locale& __cloc) throw();
14610
14611 static void
14612 _S_destroy_c_locale(__c_locale& __cloc);
14613
14614 static __c_locale
14615 _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s);
14616
14617
14618
14619 static __c_locale
14620 _S_get_c_locale();
14621
14622 __attribute__ ((__const__)) static const char*
14623 _S_get_c_name() throw();
14624
14625 private:
14626 void
14627 _M_add_reference() const throw()
14628 { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
14629
14630 void
14631 _M_remove_reference() const throw()
14632 {
14633
14634 ;
14635 if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
14636 {
14637 ;
14638 try
14639 { delete this; }
14640 catch(...)
14641 { }
14642 }
14643 }
14644
14645 facet(const facet&);
14646
14647 facet&
14648 operator=(const facet&);
14649 };
14650 # 437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14651 class locale::id
14652 {
14653 private:
14654 friend class locale;
14655 friend class locale::_Impl;
14656
14657 template<typename _Facet>
14658 friend const _Facet&
14659 use_facet(const locale&);
14660
14661 template<typename _Facet>
14662 friend bool
14663 has_facet(const locale&) throw();
14664
14665
14666
14667
14668 mutable size_t _M_index;
14669
14670
14671 static _Atomic_word _S_refcount;
14672
14673 void
14674 operator=(const id&);
14675
14676 id(const id&);
14677
14678 public:
14679
14680
14681
14682 id() { }
14683
14684 size_t
14685 _M_id() const throw();
14686 };
14687
14688
14689
14690 class locale::_Impl
14691 {
14692 public:
14693
14694 friend class locale;
14695 friend class locale::facet;
14696
14697 template<typename _Facet>
14698 friend bool
14699 has_facet(const locale&) throw();
14700
14701 template<typename _Facet>
14702 friend const _Facet&
14703 use_facet(const locale&);
14704
14705 template<typename _Cache>
14706 friend struct __use_cache;
14707
14708 private:
14709
14710 _Atomic_word _M_refcount;
14711 const facet** _M_facets;
14712 size_t _M_facets_size;
14713 const facet** _M_caches;
14714 char** _M_names;
14715 static const locale::id* const _S_id_ctype[];
14716 static const locale::id* const _S_id_numeric[];
14717 static const locale::id* const _S_id_collate[];
14718 static const locale::id* const _S_id_time[];
14719 static const locale::id* const _S_id_monetary[];
14720 static const locale::id* const _S_id_messages[];
14721 static const locale::id* const* const _S_facet_categories[];
14722
14723 void
14724 _M_add_reference() throw()
14725 { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
14726
14727 void
14728 _M_remove_reference() throw()
14729 {
14730
14731 ;
14732 if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
14733 {
14734 ;
14735 try
14736 { delete this; }
14737 catch(...)
14738 { }
14739 }
14740 }
14741
14742 _Impl(const _Impl&, size_t);
14743 _Impl(const char*, size_t);
14744 _Impl(size_t) throw();
14745
14746 ~_Impl() throw();
14747
14748 _Impl(const _Impl&);
14749
14750 void
14751 operator=(const _Impl&);
14752
14753 bool
14754 _M_check_same_name()
14755 {
14756 bool __ret = true;
14757 if (_M_names[1])
14758
14759 for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
14760 __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
14761 return __ret;
14762 }
14763
14764 void
14765 _M_replace_categories(const _Impl*, category);
14766
14767 void
14768 _M_replace_category(const _Impl*, const locale::id* const*);
14769
14770 void
14771 _M_replace_facet(const _Impl*, const locale::id*);
14772
14773 void
14774 _M_install_facet(const locale::id*, const facet*);
14775
14776 template<typename _Facet>
14777 void
14778 _M_init_facet(_Facet* __facet)
14779 { _M_install_facet(&_Facet::id, __facet); }
14780
14781 void
14782 _M_install_cache(const facet*, size_t);
14783 };
14784 # 583 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14785 template<typename _Facet>
14786 bool
14787 has_facet(const locale& __loc) throw();
14788 # 600 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14789 template<typename _Facet>
14790 const _Facet&
14791 use_facet(const locale& __loc);
14792 # 617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14793 template<typename _CharT>
14794 class collate : public locale::facet
14795 {
14796 public:
14797
14798
14799
14800 typedef _CharT char_type;
14801 typedef basic_string<_CharT> string_type;
14802
14803
14804 protected:
14805
14806
14807 __c_locale _M_c_locale_collate;
14808
14809 public:
14810
14811 static locale::id id;
14812 # 644 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14813 explicit
14814 collate(size_t __refs = 0)
14815 : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
14816 { }
14817 # 658 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14818 explicit
14819 collate(__c_locale __cloc, size_t __refs = 0)
14820 : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
14821 { }
14822 # 675 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14823 int
14824 compare(const _CharT* __lo1, const _CharT* __hi1,
14825 const _CharT* __lo2, const _CharT* __hi2) const
14826 { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
14827 # 694 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14828 string_type
14829 transform(const _CharT* __lo, const _CharT* __hi) const
14830 { return this->do_transform(__lo, __hi); }
14831 # 708 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14832 long
14833 hash(const _CharT* __lo, const _CharT* __hi) const
14834 { return this->do_hash(__lo, __hi); }
14835
14836
14837 int
14838 _M_compare(const _CharT*, const _CharT*) const throw();
14839
14840 size_t
14841 _M_transform(_CharT*, const _CharT*, size_t) const throw();
14842
14843 protected:
14844
14845 virtual
14846 ~collate()
14847 { _S_destroy_c_locale(_M_c_locale_collate); }
14848 # 737 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14849 virtual int
14850 do_compare(const _CharT* __lo1, const _CharT* __hi1,
14851 const _CharT* __lo2, const _CharT* __hi2) const;
14852 # 753 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14853 virtual string_type
14854 do_transform(const _CharT* __lo, const _CharT* __hi) const;
14855 # 766 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 3
14856 virtual long
14857 do_hash(const _CharT* __lo, const _CharT* __hi) const;
14858 };
14859
14860 template<typename _CharT>
14861 locale::id collate<_CharT>::id;
14862
14863
14864 template<>
14865 int
14866 collate<char>::_M_compare(const char*, const char*) const throw();
14867
14868 template<>
14869 size_t
14870 collate<char>::_M_transform(char*, const char*, size_t) const throw();
14871
14872
14873 template<>
14874 int
14875 collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw();
14876
14877 template<>
14878 size_t
14879 collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw();
14880
14881
14882
14883 template<typename _CharT>
14884 class collate_byname : public collate<_CharT>
14885 {
14886 public:
14887
14888
14889 typedef _CharT char_type;
14890 typedef basic_string<_CharT> string_type;
14891
14892
14893 explicit
14894 collate_byname(const char* __s, size_t __refs = 0)
14895 : collate<_CharT>(__refs)
14896 {
14897 if (__builtin_strcmp(__s, "C") != 0
14898 && __builtin_strcmp(__s, "POSIX") != 0)
14899 {
14900 this->_S_destroy_c_locale(this->_M_c_locale_collate);
14901 this->_S_create_c_locale(this->_M_c_locale_collate, __s);
14902 }
14903 }
14904
14905 protected:
14906 virtual
14907 ~collate_byname() { }
14908 };
14909
14910
14911 }
14912
14913 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.tcc" 1 3
14914 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.tcc" 3
14915
14916 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.tcc" 3
14917
14918 namespace std __attribute__ ((__visibility__ ("default")))
14919 {
14920
14921
14922 template<typename _Facet>
14923 locale::
14924 locale(const locale& __other, _Facet* __f)
14925 {
14926 _M_impl = new _Impl(*__other._M_impl, 1);
14927
14928 try
14929 { _M_impl->_M_install_facet(&_Facet::id, __f); }
14930 catch(...)
14931 {
14932 _M_impl->_M_remove_reference();
14933 throw;
14934 }
14935 delete [] _M_impl->_M_names[0];
14936 _M_impl->_M_names[0] = 0;
14937 }
14938
14939 template<typename _Facet>
14940 locale
14941 locale::
14942 combine(const locale& __other) const
14943 {
14944 _Impl* __tmp = new _Impl(*_M_impl, 1);
14945 try
14946 {
14947 __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
14948 }
14949 catch(...)
14950 {
14951 __tmp->_M_remove_reference();
14952 throw;
14953 }
14954 return locale(__tmp);
14955 }
14956
14957 template<typename _CharT, typename _Traits, typename _Alloc>
14958 bool
14959 locale::
14960 operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
14961 const basic_string<_CharT, _Traits, _Alloc>& __s2) const
14962 {
14963 typedef std::collate<_CharT> __collate_type;
14964 const __collate_type& __collate = use_facet<__collate_type>(*this);
14965 return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
14966 __s2.data(), __s2.data() + __s2.length()) < 0);
14967 }
14968
14969
14970 template<typename _Facet>
14971 bool
14972 has_facet(const locale& __loc) throw()
14973 {
14974 const size_t __i = _Facet::id._M_id();
14975 const locale::facet** __facets = __loc._M_impl->_M_facets;
14976 return (__i < __loc._M_impl->_M_facets_size
14977
14978 && dynamic_cast<const _Facet*>(__facets[__i]));
14979
14980
14981
14982 }
14983
14984 template<typename _Facet>
14985 const _Facet&
14986 use_facet(const locale& __loc)
14987 {
14988 const size_t __i = _Facet::id._M_id();
14989 const locale::facet** __facets = __loc._M_impl->_M_facets;
14990 if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
14991 __throw_bad_cast();
14992
14993 return dynamic_cast<const _Facet&>(*__facets[__i]);
14994
14995
14996
14997 }
14998
14999
15000
15001 template<typename _CharT>
15002 int
15003 collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw ()
15004 { return 0; }
15005
15006
15007 template<typename _CharT>
15008 size_t
15009 collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw ()
15010 { return 0; }
15011
15012 template<typename _CharT>
15013 int
15014 collate<_CharT>::
15015 do_compare(const _CharT* __lo1, const _CharT* __hi1,
15016 const _CharT* __lo2, const _CharT* __hi2) const
15017 {
15018
15019
15020 const string_type __one(__lo1, __hi1);
15021 const string_type __two(__lo2, __hi2);
15022
15023 const _CharT* __p = __one.c_str();
15024 const _CharT* __pend = __one.data() + __one.length();
15025 const _CharT* __q = __two.c_str();
15026 const _CharT* __qend = __two.data() + __two.length();
15027
15028
15029
15030
15031 for (;;)
15032 {
15033 const int __res = _M_compare(__p, __q);
15034 if (__res)
15035 return __res;
15036
15037 __p += char_traits<_CharT>::length(__p);
15038 __q += char_traits<_CharT>::length(__q);
15039 if (__p == __pend && __q == __qend)
15040 return 0;
15041 else if (__p == __pend)
15042 return -1;
15043 else if (__q == __qend)
15044 return 1;
15045
15046 __p++;
15047 __q++;
15048 }
15049 }
15050
15051 template<typename _CharT>
15052 typename collate<_CharT>::string_type
15053 collate<_CharT>::
15054 do_transform(const _CharT* __lo, const _CharT* __hi) const
15055 {
15056 string_type __ret;
15057
15058
15059 const string_type __str(__lo, __hi);
15060
15061 const _CharT* __p = __str.c_str();
15062 const _CharT* __pend = __str.data() + __str.length();
15063
15064 size_t __len = (__hi - __lo) * 2;
15065
15066 _CharT* __c = new _CharT[__len];
15067
15068 try
15069 {
15070
15071
15072
15073 for (;;)
15074 {
15075
15076 size_t __res = _M_transform(__c, __p, __len);
15077
15078
15079 if (__res >= __len)
15080 {
15081 __len = __res + 1;
15082 delete [] __c, __c = 0;
15083 __c = new _CharT[__len];
15084 __res = _M_transform(__c, __p, __len);
15085 }
15086
15087 __ret.append(__c, __res);
15088 __p += char_traits<_CharT>::length(__p);
15089 if (__p == __pend)
15090 break;
15091
15092 __p++;
15093 __ret.push_back(_CharT());
15094 }
15095 }
15096 catch(...)
15097 {
15098 delete [] __c;
15099 throw;
15100 }
15101
15102 delete [] __c;
15103
15104 return __ret;
15105 }
15106
15107 template<typename _CharT>
15108 long
15109 collate<_CharT>::
15110 do_hash(const _CharT* __lo, const _CharT* __hi) const
15111 {
15112 unsigned long __val = 0;
15113 for (; __lo < __hi; ++__lo)
15114 __val =
15115 *__lo + ((__val << 7)
15116 | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
15117 __digits - 7)));
15118 return static_cast<long>(__val);
15119 }
15120
15121
15122
15123
15124 extern template class collate<char>;
15125 extern template class collate_byname<char>;
15126
15127 extern template
15128 const collate<char>&
15129 use_facet<collate<char> >(const locale&);
15130
15131 extern template
15132 bool
15133 has_facet<collate<char> >(const locale&);
15134
15135
15136 extern template class collate<wchar_t>;
15137 extern template class collate_byname<wchar_t>;
15138
15139 extern template
15140 const collate<wchar_t>&
15141 use_facet<collate<wchar_t> >(const locale&);
15142
15143 extern template
15144 bool
15145 has_facet<collate<wchar_t> >(const locale&);
15146
15147
15148
15149
15150 }
15151 # 824 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_classes.h" 2 3
15152 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 2 3
15153
15154 namespace std __attribute__ ((__visibility__ ("default")))
15155 {
15156
15157
15158
15159
15160
15161
15162 enum _Ios_Fmtflags
15163 {
15164 _S_boolalpha = 1L << 0,
15165 _S_dec = 1L << 1,
15166 _S_fixed = 1L << 2,
15167 _S_hex = 1L << 3,
15168 _S_internal = 1L << 4,
15169 _S_left = 1L << 5,
15170 _S_oct = 1L << 6,
15171 _S_right = 1L << 7,
15172 _S_scientific = 1L << 8,
15173 _S_showbase = 1L << 9,
15174 _S_showpoint = 1L << 10,
15175 _S_showpos = 1L << 11,
15176 _S_skipws = 1L << 12,
15177 _S_unitbuf = 1L << 13,
15178 _S_uppercase = 1L << 14,
15179 _S_adjustfield = _S_left | _S_right | _S_internal,
15180 _S_basefield = _S_dec | _S_oct | _S_hex,
15181 _S_floatfield = _S_scientific | _S_fixed,
15182 _S_ios_fmtflags_end = 1L << 16
15183 };
15184
15185 inline _Ios_Fmtflags
15186 operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
15187 { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
15188
15189 inline _Ios_Fmtflags
15190 operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
15191 { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
15192
15193 inline _Ios_Fmtflags
15194 operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
15195 { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
15196
15197 inline _Ios_Fmtflags
15198 operator~(_Ios_Fmtflags __a)
15199 { return _Ios_Fmtflags(~static_cast<int>(__a)); }
15200
15201 inline const _Ios_Fmtflags&
15202 operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
15203 { return __a = __a | __b; }
15204
15205 inline const _Ios_Fmtflags&
15206 operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
15207 { return __a = __a & __b; }
15208
15209 inline const _Ios_Fmtflags&
15210 operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
15211 { return __a = __a ^ __b; }
15212
15213
15214 enum _Ios_Openmode
15215 {
15216 _S_app = 1L << 0,
15217 _S_ate = 1L << 1,
15218 _S_bin = 1L << 2,
15219 _S_in = 1L << 3,
15220 _S_out = 1L << 4,
15221 _S_trunc = 1L << 5,
15222 _S_ios_openmode_end = 1L << 16
15223 };
15224
15225 inline _Ios_Openmode
15226 operator&(_Ios_Openmode __a, _Ios_Openmode __b)
15227 { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
15228
15229 inline _Ios_Openmode
15230 operator|(_Ios_Openmode __a, _Ios_Openmode __b)
15231 { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
15232
15233 inline _Ios_Openmode
15234 operator^(_Ios_Openmode __a, _Ios_Openmode __b)
15235 { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
15236
15237 inline _Ios_Openmode
15238 operator~(_Ios_Openmode __a)
15239 { return _Ios_Openmode(~static_cast<int>(__a)); }
15240
15241 inline const _Ios_Openmode&
15242 operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
15243 { return __a = __a | __b; }
15244
15245 inline const _Ios_Openmode&
15246 operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
15247 { return __a = __a & __b; }
15248
15249 inline const _Ios_Openmode&
15250 operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
15251 { return __a = __a ^ __b; }
15252
15253
15254 enum _Ios_Iostate
15255 {
15256 _S_goodbit = 0,
15257 _S_badbit = 1L << 0,
15258 _S_eofbit = 1L << 1,
15259 _S_failbit = 1L << 2,
15260 _S_ios_iostate_end = 1L << 16
15261 };
15262
15263 inline _Ios_Iostate
15264 operator&(_Ios_Iostate __a, _Ios_Iostate __b)
15265 { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
15266
15267 inline _Ios_Iostate
15268 operator|(_Ios_Iostate __a, _Ios_Iostate __b)
15269 { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
15270
15271 inline _Ios_Iostate
15272 operator^(_Ios_Iostate __a, _Ios_Iostate __b)
15273 { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
15274
15275 inline _Ios_Iostate
15276 operator~(_Ios_Iostate __a)
15277 { return _Ios_Iostate(~static_cast<int>(__a)); }
15278
15279 inline const _Ios_Iostate&
15280 operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
15281 { return __a = __a | __b; }
15282
15283 inline const _Ios_Iostate&
15284 operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
15285 { return __a = __a & __b; }
15286
15287 inline const _Ios_Iostate&
15288 operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
15289 { return __a = __a ^ __b; }
15290
15291
15292 enum _Ios_Seekdir
15293 {
15294 _S_beg = 0,
15295 _S_cur = 1,
15296 _S_end = 2,
15297 _S_ios_seekdir_end = 1L << 16
15298 };
15299 # 201 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15300 class ios_base
15301 {
15302 public:
15303
15304
15305
15306
15307
15308
15309
15310 class failure : public exception
15311 {
15312 public:
15313
15314
15315 explicit
15316 failure(const string& __str) throw();
15317
15318
15319
15320 virtual
15321 ~failure() throw();
15322
15323 virtual const char*
15324 what() const throw();
15325
15326 private:
15327 string _M_msg;
15328 };
15329 # 257 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15330 typedef _Ios_Fmtflags fmtflags;
15331
15332
15333 static const fmtflags boolalpha = _S_boolalpha;
15334
15335
15336 static const fmtflags dec = _S_dec;
15337
15338
15339 static const fmtflags fixed = _S_fixed;
15340
15341
15342 static const fmtflags hex = _S_hex;
15343
15344
15345
15346
15347 static const fmtflags internal = _S_internal;
15348
15349
15350
15351 static const fmtflags left = _S_left;
15352
15353
15354 static const fmtflags oct = _S_oct;
15355
15356
15357
15358 static const fmtflags right = _S_right;
15359
15360
15361 static const fmtflags scientific = _S_scientific;
15362
15363
15364
15365 static const fmtflags showbase = _S_showbase;
15366
15367
15368
15369 static const fmtflags showpoint = _S_showpoint;
15370
15371
15372 static const fmtflags showpos = _S_showpos;
15373
15374
15375 static const fmtflags skipws = _S_skipws;
15376
15377
15378 static const fmtflags unitbuf = _S_unitbuf;
15379
15380
15381
15382 static const fmtflags uppercase = _S_uppercase;
15383
15384
15385 static const fmtflags adjustfield = _S_adjustfield;
15386
15387
15388 static const fmtflags basefield = _S_basefield;
15389
15390
15391 static const fmtflags floatfield = _S_floatfield;
15392 # 332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15393 typedef _Ios_Iostate iostate;
15394
15395
15396
15397 static const iostate badbit = _S_badbit;
15398
15399
15400 static const iostate eofbit = _S_eofbit;
15401
15402
15403
15404
15405 static const iostate failbit = _S_failbit;
15406
15407
15408 static const iostate goodbit = _S_goodbit;
15409 # 363 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15410 typedef _Ios_Openmode openmode;
15411
15412
15413 static const openmode app = _S_app;
15414
15415
15416 static const openmode ate = _S_ate;
15417
15418
15419
15420
15421 static const openmode binary = _S_bin;
15422
15423
15424 static const openmode in = _S_in;
15425
15426
15427 static const openmode out = _S_out;
15428
15429
15430 static const openmode trunc = _S_trunc;
15431 # 395 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15432 typedef _Ios_Seekdir seekdir;
15433
15434
15435 static const seekdir beg = _S_beg;
15436
15437
15438 static const seekdir cur = _S_cur;
15439
15440
15441 static const seekdir end = _S_end;
15442
15443
15444 typedef int io_state;
15445 typedef int open_mode;
15446 typedef int seek_dir;
15447
15448 typedef std::streampos streampos;
15449 typedef std::streamoff streamoff;
15450 # 421 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15451 enum event
15452 {
15453 erase_event,
15454 imbue_event,
15455 copyfmt_event
15456 };
15457 # 438 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15458 typedef void (*event_callback) (event, ios_base&, int);
15459 # 450 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15460 void
15461 register_callback(event_callback __fn, int __index);
15462
15463 protected:
15464 streamsize _M_precision;
15465 streamsize _M_width;
15466 fmtflags _M_flags;
15467 iostate _M_exception;
15468 iostate _M_streambuf_state;
15469
15470
15471
15472 struct _Callback_list
15473 {
15474
15475 _Callback_list* _M_next;
15476 ios_base::event_callback _M_fn;
15477 int _M_index;
15478 _Atomic_word _M_refcount;
15479
15480 _Callback_list(ios_base::event_callback __fn, int __index,
15481 _Callback_list* __cb)
15482 : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
15483
15484 void
15485 _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
15486
15487
15488 int
15489 _M_remove_reference()
15490 {
15491
15492 ;
15493 int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1);
15494 if (__res == 0)
15495 {
15496 ;
15497 }
15498 return __res;
15499 }
15500 };
15501
15502 _Callback_list* _M_callbacks;
15503
15504 void
15505 _M_call_callbacks(event __ev) throw();
15506
15507 void
15508 _M_dispose_callbacks(void) throw();
15509
15510
15511 struct _Words
15512 {
15513 void* _M_pword;
15514 long _M_iword;
15515 _Words() : _M_pword(0), _M_iword(0) { }
15516 };
15517
15518
15519 _Words _M_word_zero;
15520
15521
15522
15523 enum { _S_local_word_size = 8 };
15524 _Words _M_local_word[_S_local_word_size];
15525
15526
15527 int _M_word_size;
15528 _Words* _M_word;
15529
15530 _Words&
15531 _M_grow_words(int __index, bool __iword);
15532
15533
15534 locale _M_ios_locale;
15535
15536 void
15537 _M_init() throw();
15538
15539 public:
15540
15541
15542
15543
15544
15545 class Init
15546 {
15547 friend class ios_base;
15548 public:
15549 Init();
15550 ~Init();
15551
15552 private:
15553 static _Atomic_word _S_refcount;
15554 static bool _S_synced_with_stdio;
15555 };
15556
15557
15558
15559
15560
15561
15562 fmtflags
15563 flags() const
15564 { return _M_flags; }
15565 # 563 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15566 fmtflags
15567 flags(fmtflags __fmtfl)
15568 {
15569 fmtflags __old = _M_flags;
15570 _M_flags = __fmtfl;
15571 return __old;
15572 }
15573 # 579 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15574 fmtflags
15575 setf(fmtflags __fmtfl)
15576 {
15577 fmtflags __old = _M_flags;
15578 _M_flags |= __fmtfl;
15579 return __old;
15580 }
15581 # 596 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15582 fmtflags
15583 setf(fmtflags __fmtfl, fmtflags __mask)
15584 {
15585 fmtflags __old = _M_flags;
15586 _M_flags &= ~__mask;
15587 _M_flags |= (__fmtfl & __mask);
15588 return __old;
15589 }
15590
15591
15592
15593
15594
15595
15596
15597 void
15598 unsetf(fmtflags __mask)
15599 { _M_flags &= ~__mask; }
15600 # 622 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15601 streamsize
15602 precision() const
15603 { return _M_precision; }
15604
15605
15606
15607
15608
15609
15610 streamsize
15611 precision(streamsize __prec)
15612 {
15613 streamsize __old = _M_precision;
15614 _M_precision = __prec;
15615 return __old;
15616 }
15617
15618
15619
15620
15621
15622
15623
15624 streamsize
15625 width() const
15626 { return _M_width; }
15627
15628
15629
15630
15631
15632
15633 streamsize
15634 width(streamsize __wide)
15635 {
15636 streamsize __old = _M_width;
15637 _M_width = __wide;
15638 return __old;
15639 }
15640 # 673 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15641 static bool
15642 sync_with_stdio(bool __sync = true);
15643 # 685 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15644 locale
15645 imbue(const locale& __loc) throw();
15646 # 696 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15647 locale
15648 getloc() const
15649 { return _M_ios_locale; }
15650 # 707 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15651 const locale&
15652 _M_getloc() const
15653 { return _M_ios_locale; }
15654 # 726 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15655 static int
15656 xalloc() throw();
15657 # 742 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15658 long&
15659 iword(int __ix)
15660 {
15661 _Words& __word = (__ix < _M_word_size)
15662 ? _M_word[__ix] : _M_grow_words(__ix, true);
15663 return __word._M_iword;
15664 }
15665 # 763 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15666 void*&
15667 pword(int __ix)
15668 {
15669 _Words& __word = (__ix < _M_word_size)
15670 ? _M_word[__ix] : _M_grow_words(__ix, false);
15671 return __word._M_pword;
15672 }
15673 # 780 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ios_base.h" 3
15674 virtual ~ios_base();
15675
15676 protected:
15677 ios_base() throw ();
15678
15679
15680
15681 private:
15682 ios_base(const ios_base&);
15683
15684 ios_base&
15685 operator=(const ios_base&);
15686 };
15687
15688
15689
15690 inline ios_base&
15691 boolalpha(ios_base& __base)
15692 {
15693 __base.setf(ios_base::boolalpha);
15694 return __base;
15695 }
15696
15697
15698 inline ios_base&
15699 noboolalpha(ios_base& __base)
15700 {
15701 __base.unsetf(ios_base::boolalpha);
15702 return __base;
15703 }
15704
15705
15706 inline ios_base&
15707 showbase(ios_base& __base)
15708 {
15709 __base.setf(ios_base::showbase);
15710 return __base;
15711 }
15712
15713
15714 inline ios_base&
15715 noshowbase(ios_base& __base)
15716 {
15717 __base.unsetf(ios_base::showbase);
15718 return __base;
15719 }
15720
15721
15722 inline ios_base&
15723 showpoint(ios_base& __base)
15724 {
15725 __base.setf(ios_base::showpoint);
15726 return __base;
15727 }
15728
15729
15730 inline ios_base&
15731 noshowpoint(ios_base& __base)
15732 {
15733 __base.unsetf(ios_base::showpoint);
15734 return __base;
15735 }
15736
15737
15738 inline ios_base&
15739 showpos(ios_base& __base)
15740 {
15741 __base.setf(ios_base::showpos);
15742 return __base;
15743 }
15744
15745
15746 inline ios_base&
15747 noshowpos(ios_base& __base)
15748 {
15749 __base.unsetf(ios_base::showpos);
15750 return __base;
15751 }
15752
15753
15754 inline ios_base&
15755 skipws(ios_base& __base)
15756 {
15757 __base.setf(ios_base::skipws);
15758 return __base;
15759 }
15760
15761
15762 inline ios_base&
15763 noskipws(ios_base& __base)
15764 {
15765 __base.unsetf(ios_base::skipws);
15766 return __base;
15767 }
15768
15769
15770 inline ios_base&
15771 uppercase(ios_base& __base)
15772 {
15773 __base.setf(ios_base::uppercase);
15774 return __base;
15775 }
15776
15777
15778 inline ios_base&
15779 nouppercase(ios_base& __base)
15780 {
15781 __base.unsetf(ios_base::uppercase);
15782 return __base;
15783 }
15784
15785
15786 inline ios_base&
15787 unitbuf(ios_base& __base)
15788 {
15789 __base.setf(ios_base::unitbuf);
15790 return __base;
15791 }
15792
15793
15794 inline ios_base&
15795 nounitbuf(ios_base& __base)
15796 {
15797 __base.unsetf(ios_base::unitbuf);
15798 return __base;
15799 }
15800
15801
15802
15803 inline ios_base&
15804 internal(ios_base& __base)
15805 {
15806 __base.setf(ios_base::internal, ios_base::adjustfield);
15807 return __base;
15808 }
15809
15810
15811 inline ios_base&
15812 left(ios_base& __base)
15813 {
15814 __base.setf(ios_base::left, ios_base::adjustfield);
15815 return __base;
15816 }
15817
15818
15819 inline ios_base&
15820 right(ios_base& __base)
15821 {
15822 __base.setf(ios_base::right, ios_base::adjustfield);
15823 return __base;
15824 }
15825
15826
15827
15828 inline ios_base&
15829 dec(ios_base& __base)
15830 {
15831 __base.setf(ios_base::dec, ios_base::basefield);
15832 return __base;
15833 }
15834
15835
15836 inline ios_base&
15837 hex(ios_base& __base)
15838 {
15839 __base.setf(ios_base::hex, ios_base::basefield);
15840 return __base;
15841 }
15842
15843
15844 inline ios_base&
15845 oct(ios_base& __base)
15846 {
15847 __base.setf(ios_base::oct, ios_base::basefield);
15848 return __base;
15849 }
15850
15851
15852
15853 inline ios_base&
15854 fixed(ios_base& __base)
15855 {
15856 __base.setf(ios_base::fixed, ios_base::floatfield);
15857 return __base;
15858 }
15859
15860
15861 inline ios_base&
15862 scientific(ios_base& __base)
15863 {
15864 __base.setf(ios_base::scientific, ios_base::floatfield);
15865 return __base;
15866 }
15867
15868
15869 }
15870 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ios" 2 3
15871 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 1 3
15872 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15873
15874 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15875 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15876 namespace std __attribute__ ((__visibility__ ("default")))
15877 {
15878
15879
15880 template<typename _CharT, typename _Traits>
15881 streamsize
15882 __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
15883 basic_streambuf<_CharT, _Traits>*, bool&);
15884 # 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15885 template<typename _CharT, typename _Traits>
15886 class basic_streambuf
15887 {
15888 public:
15889
15890
15891
15892
15893
15894
15895 typedef _CharT char_type;
15896 typedef _Traits traits_type;
15897 typedef typename traits_type::int_type int_type;
15898 typedef typename traits_type::pos_type pos_type;
15899 typedef typename traits_type::off_type off_type;
15900
15901
15902
15903
15904 typedef basic_streambuf<char_type, traits_type> __streambuf_type;
15905
15906
15907 friend class basic_ios<char_type, traits_type>;
15908 friend class basic_istream<char_type, traits_type>;
15909 friend class basic_ostream<char_type, traits_type>;
15910 friend class istreambuf_iterator<char_type, traits_type>;
15911 friend class ostreambuf_iterator<char_type, traits_type>;
15912
15913 friend streamsize
15914 __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);
15915
15916 template<bool _IsMove, typename _CharT2>
15917 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
15918 _CharT2*>::__type
15919 __copy_move_a2(istreambuf_iterator<_CharT2>,
15920 istreambuf_iterator<_CharT2>, _CharT2*);
15921
15922 template<typename _CharT2>
15923 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
15924 istreambuf_iterator<_CharT2> >::__type
15925 find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
15926 const _CharT2&);
15927
15928 template<typename _CharT2, typename _Traits2>
15929 friend basic_istream<_CharT2, _Traits2>&
15930 operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
15931
15932 template<typename _CharT2, typename _Traits2, typename _Alloc>
15933 friend basic_istream<_CharT2, _Traits2>&
15934 operator>>(basic_istream<_CharT2, _Traits2>&,
15935 basic_string<_CharT2, _Traits2, _Alloc>&);
15936
15937 template<typename _CharT2, typename _Traits2, typename _Alloc>
15938 friend basic_istream<_CharT2, _Traits2>&
15939 getline(basic_istream<_CharT2, _Traits2>&,
15940 basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
15941
15942 protected:
15943 # 182 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15944 char_type* _M_in_beg;
15945 char_type* _M_in_cur;
15946 char_type* _M_in_end;
15947 char_type* _M_out_beg;
15948 char_type* _M_out_cur;
15949 char_type* _M_out_end;
15950
15951
15952 locale _M_buf_locale;
15953
15954 public:
15955
15956 virtual
15957 ~basic_streambuf()
15958 { }
15959 # 206 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15960 locale
15961 pubimbue(const locale &__loc)
15962 {
15963 locale __tmp(this->getloc());
15964 this->imbue(__loc);
15965 _M_buf_locale = __loc;
15966 return __tmp;
15967 }
15968 # 223 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15969 locale
15970 getloc() const
15971 { return _M_buf_locale; }
15972 # 236 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15973 __streambuf_type*
15974 pubsetbuf(char_type* __s, streamsize __n)
15975 { return this->setbuf(__s, __n); }
15976
15977 pos_type
15978 pubseekoff(off_type __off, ios_base::seekdir __way,
15979 ios_base::openmode __mode = ios_base::in | ios_base::out)
15980 { return this->seekoff(__off, __way, __mode); }
15981
15982 pos_type
15983 pubseekpos(pos_type __sp,
15984 ios_base::openmode __mode = ios_base::in | ios_base::out)
15985 { return this->seekpos(__sp, __mode); }
15986
15987 int
15988 pubsync() { return this->sync(); }
15989 # 263 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15990 streamsize
15991 in_avail()
15992 {
15993 const streamsize __ret = this->egptr() - this->gptr();
15994 return __ret ? __ret : this->showmanyc();
15995 }
15996 # 277 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
15997 int_type
15998 snextc()
15999 {
16000 int_type __ret = traits_type::eof();
16001 if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
16002 __ret), true))
16003 __ret = this->sgetc();
16004 return __ret;
16005 }
16006 # 295 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16007 int_type
16008 sbumpc()
16009 {
16010 int_type __ret;
16011 if (__builtin_expect(this->gptr() < this->egptr(), true))
16012 {
16013 __ret = traits_type::to_int_type(*this->gptr());
16014 this->gbump(1);
16015 }
16016 else
16017 __ret = this->uflow();
16018 return __ret;
16019 }
16020 # 317 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16021 int_type
16022 sgetc()
16023 {
16024 int_type __ret;
16025 if (__builtin_expect(this->gptr() < this->egptr(), true))
16026 __ret = traits_type::to_int_type(*this->gptr());
16027 else
16028 __ret = this->underflow();
16029 return __ret;
16030 }
16031 # 336 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16032 streamsize
16033 sgetn(char_type* __s, streamsize __n)
16034 { return this->xsgetn(__s, __n); }
16035 # 351 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16036 int_type
16037 sputbackc(char_type __c)
16038 {
16039 int_type __ret;
16040 const bool __testpos = this->eback() < this->gptr();
16041 if (__builtin_expect(!__testpos ||
16042 !traits_type::eq(__c, this->gptr()[-1]), false))
16043 __ret = this->pbackfail(traits_type::to_int_type(__c));
16044 else
16045 {
16046 this->gbump(-1);
16047 __ret = traits_type::to_int_type(*this->gptr());
16048 }
16049 return __ret;
16050 }
16051 # 376 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16052 int_type
16053 sungetc()
16054 {
16055 int_type __ret;
16056 if (__builtin_expect(this->eback() < this->gptr(), true))
16057 {
16058 this->gbump(-1);
16059 __ret = traits_type::to_int_type(*this->gptr());
16060 }
16061 else
16062 __ret = this->pbackfail();
16063 return __ret;
16064 }
16065 # 403 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16066 int_type
16067 sputc(char_type __c)
16068 {
16069 int_type __ret;
16070 if (__builtin_expect(this->pptr() < this->epptr(), true))
16071 {
16072 *this->pptr() = __c;
16073 this->pbump(1);
16074 __ret = traits_type::to_int_type(__c);
16075 }
16076 else
16077 __ret = this->overflow(traits_type::to_int_type(__c));
16078 return __ret;
16079 }
16080 # 429 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16081 streamsize
16082 sputn(const char_type* __s, streamsize __n)
16083 { return this->xsputn(__s, __n); }
16084
16085 protected:
16086 # 443 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16087 basic_streambuf()
16088 : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
16089 _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
16090 _M_buf_locale(locale())
16091 { }
16092 # 461 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16093 char_type*
16094 eback() const { return _M_in_beg; }
16095
16096 char_type*
16097 gptr() const { return _M_in_cur; }
16098
16099 char_type*
16100 egptr() const { return _M_in_end; }
16101 # 477 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16102 void
16103 gbump(int __n) { _M_in_cur += __n; }
16104 # 488 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16105 void
16106 setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
16107 {
16108 _M_in_beg = __gbeg;
16109 _M_in_cur = __gnext;
16110 _M_in_end = __gend;
16111 }
16112 # 508 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16113 char_type*
16114 pbase() const { return _M_out_beg; }
16115
16116 char_type*
16117 pptr() const { return _M_out_cur; }
16118
16119 char_type*
16120 epptr() const { return _M_out_end; }
16121 # 524 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16122 void
16123 pbump(int __n) { _M_out_cur += __n; }
16124 # 534 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16125 void
16126 setp(char_type* __pbeg, char_type* __pend)
16127 {
16128 _M_out_beg = _M_out_cur = __pbeg;
16129 _M_out_end = __pend;
16130 }
16131 # 555 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16132 virtual void
16133 imbue(const locale&)
16134 { }
16135 # 570 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16136 virtual basic_streambuf<char_type,_Traits>*
16137 setbuf(char_type*, streamsize)
16138 { return this; }
16139 # 581 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16140 virtual pos_type
16141 seekoff(off_type, ios_base::seekdir,
16142 ios_base::openmode = ios_base::in | ios_base::out)
16143 { return pos_type(off_type(-1)); }
16144 # 593 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16145 virtual pos_type
16146 seekpos(pos_type,
16147 ios_base::openmode = ios_base::in | ios_base::out)
16148 { return pos_type(off_type(-1)); }
16149 # 606 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16150 virtual int
16151 sync() { return 0; }
16152 # 628 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16153 virtual streamsize
16154 showmanyc() { return 0; }
16155 # 644 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16156 virtual streamsize
16157 xsgetn(char_type* __s, streamsize __n);
16158 # 666 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16159 virtual int_type
16160 underflow()
16161 { return traits_type::eof(); }
16162 # 679 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16163 virtual int_type
16164 uflow()
16165 {
16166 int_type __ret = traits_type::eof();
16167 const bool __testeof = traits_type::eq_int_type(this->underflow(),
16168 __ret);
16169 if (!__testeof)
16170 {
16171 __ret = traits_type::to_int_type(*this->gptr());
16172 this->gbump(1);
16173 }
16174 return __ret;
16175 }
16176 # 703 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16177 virtual int_type
16178 pbackfail(int_type = traits_type::eof())
16179 { return traits_type::eof(); }
16180 # 721 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16181 virtual streamsize
16182 xsputn(const char_type* __s, streamsize __n);
16183 # 747 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16184 virtual int_type
16185 overflow(int_type = traits_type::eof())
16186 { return traits_type::eof(); }
16187
16188
16189
16190 public:
16191 # 762 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 3
16192 void
16193 stossc()
16194 {
16195 if (this->gptr() < this->egptr())
16196 this->gbump(1);
16197 else
16198 this->uflow();
16199 }
16200
16201
16202
16203 void
16204 __safe_gbump(streamsize __n) { _M_in_cur += __n; }
16205
16206 void
16207 __safe_pbump(streamsize __n) { _M_out_cur += __n; }
16208
16209 private:
16210
16211
16212 basic_streambuf(const __streambuf_type& __sb)
16213 : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),
16214 _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),
16215 _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
16216 _M_buf_locale(__sb._M_buf_locale)
16217 { }
16218
16219 __streambuf_type&
16220 operator=(const __streambuf_type&) { return *this; };
16221 };
16222
16223
16224 template<>
16225 streamsize
16226 __copy_streambufs_eof(basic_streambuf<char>* __sbin,
16227 basic_streambuf<char>* __sbout, bool& __ineof);
16228
16229 template<>
16230 streamsize
16231 __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
16232 basic_streambuf<wchar_t>* __sbout, bool& __ineof);
16233
16234
16235
16236 }
16237
16238 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf.tcc" 1 3
16239 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf.tcc" 3
16240
16241 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf.tcc" 3
16242
16243 namespace std __attribute__ ((__visibility__ ("default")))
16244 {
16245
16246
16247 template<typename _CharT, typename _Traits>
16248 streamsize
16249 basic_streambuf<_CharT, _Traits>::
16250 xsgetn(char_type* __s, streamsize __n)
16251 {
16252 streamsize __ret = 0;
16253 while (__ret < __n)
16254 {
16255 const streamsize __buf_len = this->egptr() - this->gptr();
16256 if (__buf_len)
16257 {
16258 const streamsize __remaining = __n - __ret;
16259 const streamsize __len = std::min(__buf_len, __remaining);
16260 traits_type::copy(__s, this->gptr(), __len);
16261 __ret += __len;
16262 __s += __len;
16263 this->__safe_gbump(__len);
16264 }
16265
16266 if (__ret < __n)
16267 {
16268 const int_type __c = this->uflow();
16269 if (!traits_type::eq_int_type(__c, traits_type::eof()))
16270 {
16271 traits_type::assign(*__s++, traits_type::to_char_type(__c));
16272 ++__ret;
16273 }
16274 else
16275 break;
16276 }
16277 }
16278 return __ret;
16279 }
16280
16281 template<typename _CharT, typename _Traits>
16282 streamsize
16283 basic_streambuf<_CharT, _Traits>::
16284 xsputn(const char_type* __s, streamsize __n)
16285 {
16286 streamsize __ret = 0;
16287 while (__ret < __n)
16288 {
16289 const streamsize __buf_len = this->epptr() - this->pptr();
16290 if (__buf_len)
16291 {
16292 const streamsize __remaining = __n - __ret;
16293 const streamsize __len = std::min(__buf_len, __remaining);
16294 traits_type::copy(this->pptr(), __s, __len);
16295 __ret += __len;
16296 __s += __len;
16297 this->__safe_pbump(__len);
16298 }
16299
16300 if (__ret < __n)
16301 {
16302 int_type __c = this->overflow(traits_type::to_int_type(*__s));
16303 if (!traits_type::eq_int_type(__c, traits_type::eof()))
16304 {
16305 ++__ret;
16306 ++__s;
16307 }
16308 else
16309 break;
16310 }
16311 }
16312 return __ret;
16313 }
16314
16315
16316
16317
16318 template<typename _CharT, typename _Traits>
16319 streamsize
16320 __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
16321 basic_streambuf<_CharT, _Traits>* __sbout,
16322 bool& __ineof)
16323 {
16324 streamsize __ret = 0;
16325 __ineof = true;
16326 typename _Traits::int_type __c = __sbin->sgetc();
16327 while (!_Traits::eq_int_type(__c, _Traits::eof()))
16328 {
16329 __c = __sbout->sputc(_Traits::to_char_type(__c));
16330 if (_Traits::eq_int_type(__c, _Traits::eof()))
16331 {
16332 __ineof = false;
16333 break;
16334 }
16335 ++__ret;
16336 __c = __sbin->snextc();
16337 }
16338 return __ret;
16339 }
16340
16341 template<typename _CharT, typename _Traits>
16342 inline streamsize
16343 __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
16344 basic_streambuf<_CharT, _Traits>* __sbout)
16345 {
16346 bool __ineof;
16347 return __copy_streambufs_eof(__sbin, __sbout, __ineof);
16348 }
16349
16350
16351
16352
16353 extern template class basic_streambuf<char>;
16354 extern template
16355 streamsize
16356 __copy_streambufs(basic_streambuf<char>*,
16357 basic_streambuf<char>*);
16358 extern template
16359 streamsize
16360 __copy_streambufs_eof(basic_streambuf<char>*,
16361 basic_streambuf<char>*, bool&);
16362
16363
16364 extern template class basic_streambuf<wchar_t>;
16365 extern template
16366 streamsize
16367 __copy_streambufs(basic_streambuf<wchar_t>*,
16368 basic_streambuf<wchar_t>*);
16369 extern template
16370 streamsize
16371 __copy_streambufs_eof(basic_streambuf<wchar_t>*,
16372 basic_streambuf<wchar_t>*, bool&);
16373
16374
16375
16376
16377 }
16378 # 809 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/streambuf" 2 3
16379 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ios" 2 3
16380 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 1 3
16381 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
16382
16383 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
16384
16385
16386
16387 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 1 3
16388 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
16389
16390 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
16391
16392 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwctype" 1 3
16393 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwctype" 3
16394
16395 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwctype" 3
16396 # 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwctype" 3
16397 # 1 "/usr/include/wctype.h" 1 3 4
16398 # 34 "/usr/include/wctype.h" 3 4
16399 # 1 "/usr/include/wchar.h" 1 3 4
16400 # 35 "/usr/include/wctype.h" 2 3 4
16401 # 50 "/usr/include/wctype.h" 3 4
16402
16403
16404
16405 typedef unsigned long int wctype_t;
16406
16407 # 72 "/usr/include/wctype.h" 3 4
16408 enum
16409 {
16410 __ISwupper = 0,
16411 __ISwlower = 1,
16412 __ISwalpha = 2,
16413 __ISwdigit = 3,
16414 __ISwxdigit = 4,
16415 __ISwspace = 5,
16416 __ISwprint = 6,
16417 __ISwgraph = 7,
16418 __ISwblank = 8,
16419 __ISwcntrl = 9,
16420 __ISwpunct = 10,
16421 __ISwalnum = 11,
16422
16423 _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))),
16424 _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))),
16425 _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))),
16426 _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))),
16427 _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))),
16428 _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))),
16429 _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))),
16430 _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))),
16431 _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))),
16432 _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))),
16433 _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))),
16434 _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24))))
16435 };
16436
16437
16438
16439 extern "C" {
16440
16441
16442
16443
16444
16445
16446
16447
16448 extern int iswalnum (wint_t __wc) throw ();
16449
16450
16451
16452
16453
16454 extern int iswalpha (wint_t __wc) throw ();
16455
16456
16457 extern int iswcntrl (wint_t __wc) throw ();
16458
16459
16460
16461 extern int iswdigit (wint_t __wc) throw ();
16462
16463
16464
16465 extern int iswgraph (wint_t __wc) throw ();
16466
16467
16468
16469
16470 extern int iswlower (wint_t __wc) throw ();
16471
16472
16473 extern int iswprint (wint_t __wc) throw ();
16474
16475
16476
16477
16478 extern int iswpunct (wint_t __wc) throw ();
16479
16480
16481
16482
16483 extern int iswspace (wint_t __wc) throw ();
16484
16485
16486
16487
16488 extern int iswupper (wint_t __wc) throw ();
16489
16490
16491
16492
16493 extern int iswxdigit (wint_t __wc) throw ();
16494
16495
16496
16497
16498
16499 extern int iswblank (wint_t __wc) throw ();
16500 # 172 "/usr/include/wctype.h" 3 4
16501 extern wctype_t wctype (__const char *__property) throw ();
16502
16503
16504
16505 extern int iswctype (wint_t __wc, wctype_t __desc) throw ();
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516 typedef __const __int32_t *wctrans_t;
16517
16518
16519
16520
16521
16522
16523
16524 extern wint_t towlower (wint_t __wc) throw ();
16525
16526
16527 extern wint_t towupper (wint_t __wc) throw ();
16528
16529
16530 }
16531 # 214 "/usr/include/wctype.h" 3 4
16532 extern "C" {
16533
16534
16535
16536
16537 extern wctrans_t wctrans (__const char *__property) throw ();
16538
16539
16540 extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw ();
16541
16542
16543
16544
16545
16546
16547
16548
16549 extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw ();
16550
16551
16552
16553
16554
16555 extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw ();
16556
16557
16558 extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw ();
16559
16560
16561
16562 extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw ();
16563
16564
16565
16566 extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw ();
16567
16568
16569
16570
16571 extern int iswlower_l (wint_t __wc, __locale_t __locale) throw ();
16572
16573
16574 extern int iswprint_l (wint_t __wc, __locale_t __locale) throw ();
16575
16576
16577
16578
16579 extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw ();
16580
16581
16582
16583
16584 extern int iswspace_l (wint_t __wc, __locale_t __locale) throw ();
16585
16586
16587
16588
16589 extern int iswupper_l (wint_t __wc, __locale_t __locale) throw ();
16590
16591
16592
16593
16594 extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw ();
16595
16596
16597
16598
16599 extern int iswblank_l (wint_t __wc, __locale_t __locale) throw ();
16600
16601
16602
16603 extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
16604 throw ();
16605
16606
16607
16608 extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
16609 throw ();
16610
16611
16612
16613
16614
16615
16616
16617 extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw ();
16618
16619
16620 extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw ();
16621
16622
16623
16624 extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
16625 throw ();
16626
16627
16628 extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
16629 __locale_t __locale) throw ();
16630
16631
16632
16633 }
16634 # 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwctype" 2 3
16635 # 82 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwctype" 3
16636 namespace std
16637 {
16638 using ::wctrans_t;
16639 using ::wctype_t;
16640 using ::wint_t;
16641
16642 using ::iswalnum;
16643 using ::iswalpha;
16644
16645 using ::iswblank;
16646
16647 using ::iswcntrl;
16648 using ::iswctype;
16649 using ::iswdigit;
16650 using ::iswgraph;
16651 using ::iswlower;
16652 using ::iswprint;
16653 using ::iswpunct;
16654 using ::iswspace;
16655 using ::iswupper;
16656 using ::iswxdigit;
16657 using ::towctrans;
16658 using ::towlower;
16659 using ::towupper;
16660 using ::wctrans;
16661 using ::wctype;
16662 }
16663 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 2 3
16664 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 1 3
16665 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
16666
16667 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
16668 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 2 3
16669 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_base.h" 1 3
16670 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_base.h" 3
16671 namespace std __attribute__ ((__visibility__ ("default")))
16672 {
16673
16674
16675
16676 struct ctype_base
16677 {
16678
16679 typedef const int* __to_type;
16680
16681
16682
16683 typedef unsigned short mask;
16684 static const mask upper = _ISupper;
16685 static const mask lower = _ISlower;
16686 static const mask alpha = _ISalpha;
16687 static const mask digit = _ISdigit;
16688 static const mask xdigit = _ISxdigit;
16689 static const mask space = _ISspace;
16690 static const mask print = _ISprint;
16691 static const mask graph = _ISalpha | _ISdigit | _ISpunct;
16692 static const mask cntrl = _IScntrl;
16693 static const mask punct = _ISpunct;
16694 static const mask alnum = _ISalpha | _ISdigit;
16695 };
16696
16697
16698 }
16699 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 2 3
16700
16701
16702
16703
16704
16705
16706 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf_iterator.h" 1 3
16707 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf_iterator.h" 3
16708
16709 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf_iterator.h" 3
16710
16711
16712
16713
16714 namespace std __attribute__ ((__visibility__ ("default")))
16715 {
16716
16717 # 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/streambuf_iterator.h" 3
16718 template<typename _CharT, typename _Traits>
16719 class istreambuf_iterator
16720 : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
16721 _CharT*, _CharT&>
16722 {
16723 public:
16724
16725
16726
16727 typedef _CharT char_type;
16728 typedef _Traits traits_type;
16729 typedef typename _Traits::int_type int_type;
16730 typedef basic_streambuf<_CharT, _Traits> streambuf_type;
16731 typedef basic_istream<_CharT, _Traits> istream_type;
16732
16733
16734 template<typename _CharT2>
16735 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
16736 ostreambuf_iterator<_CharT2> >::__type
16737 copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
16738 ostreambuf_iterator<_CharT2>);
16739
16740 template<bool _IsMove, typename _CharT2>
16741 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
16742 _CharT2*>::__type
16743 __copy_move_a2(istreambuf_iterator<_CharT2>,
16744 istreambuf_iterator<_CharT2>, _CharT2*);
16745
16746 template<typename _CharT2>
16747 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
16748 istreambuf_iterator<_CharT2> >::__type
16749 find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
16750 const _CharT2&);
16751
16752 private:
16753
16754
16755
16756
16757
16758
16759
16760 mutable streambuf_type* _M_sbuf;
16761 mutable int_type _M_c;
16762
16763 public:
16764
16765 istreambuf_iterator() throw()
16766 : _M_sbuf(0), _M_c(traits_type::eof()) { }
16767
16768
16769 istreambuf_iterator(istream_type& __s) throw()
16770 : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
16771
16772
16773 istreambuf_iterator(streambuf_type* __s) throw()
16774 : _M_sbuf(__s), _M_c(traits_type::eof()) { }
16775
16776
16777
16778
16779 char_type
16780 operator*() const
16781 {
16782
16783
16784
16785
16786
16787
16788
16789 return traits_type::to_char_type(_M_get());
16790 }
16791
16792
16793 istreambuf_iterator&
16794 operator++()
16795 {
16796
16797
16798 ;
16799 if (_M_sbuf)
16800 {
16801 _M_sbuf->sbumpc();
16802 _M_c = traits_type::eof();
16803 }
16804 return *this;
16805 }
16806
16807
16808 istreambuf_iterator
16809 operator++(int)
16810 {
16811
16812
16813 ;
16814
16815 istreambuf_iterator __old = *this;
16816 if (_M_sbuf)
16817 {
16818 __old._M_c = _M_sbuf->sbumpc();
16819 _M_c = traits_type::eof();
16820 }
16821 return __old;
16822 }
16823
16824
16825
16826
16827
16828 bool
16829 equal(const istreambuf_iterator& __b) const
16830 { return _M_at_eof() == __b._M_at_eof(); }
16831
16832 private:
16833 int_type
16834 _M_get() const
16835 {
16836 const int_type __eof = traits_type::eof();
16837 int_type __ret = __eof;
16838 if (_M_sbuf)
16839 {
16840 if (!traits_type::eq_int_type(_M_c, __eof))
16841 __ret = _M_c;
16842 else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
16843 __eof))
16844 _M_c = __ret;
16845 else
16846 _M_sbuf = 0;
16847 }
16848 return __ret;
16849 }
16850
16851 bool
16852 _M_at_eof() const
16853 {
16854 const int_type __eof = traits_type::eof();
16855 return traits_type::eq_int_type(_M_get(), __eof);
16856 }
16857 };
16858
16859 template<typename _CharT, typename _Traits>
16860 inline bool
16861 operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
16862 const istreambuf_iterator<_CharT, _Traits>& __b)
16863 { return __a.equal(__b); }
16864
16865 template<typename _CharT, typename _Traits>
16866 inline bool
16867 operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
16868 const istreambuf_iterator<_CharT, _Traits>& __b)
16869 { return !__a.equal(__b); }
16870
16871
16872 template<typename _CharT, typename _Traits>
16873 class ostreambuf_iterator
16874 : public iterator<output_iterator_tag, void, void, void, void>
16875 {
16876 public:
16877
16878
16879
16880 typedef _CharT char_type;
16881 typedef _Traits traits_type;
16882 typedef basic_streambuf<_CharT, _Traits> streambuf_type;
16883 typedef basic_ostream<_CharT, _Traits> ostream_type;
16884
16885
16886 template<typename _CharT2>
16887 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
16888 ostreambuf_iterator<_CharT2> >::__type
16889 copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
16890 ostreambuf_iterator<_CharT2>);
16891
16892 private:
16893 streambuf_type* _M_sbuf;
16894 bool _M_failed;
16895
16896 public:
16897
16898 ostreambuf_iterator(ostream_type& __s) throw ()
16899 : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
16900
16901
16902 ostreambuf_iterator(streambuf_type* __s) throw ()
16903 : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
16904
16905
16906 ostreambuf_iterator&
16907 operator=(_CharT __c)
16908 {
16909 if (!_M_failed &&
16910 _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
16911 _M_failed = true;
16912 return *this;
16913 }
16914
16915
16916 ostreambuf_iterator&
16917 operator*()
16918 { return *this; }
16919
16920
16921 ostreambuf_iterator&
16922 operator++(int)
16923 { return *this; }
16924
16925
16926 ostreambuf_iterator&
16927 operator++()
16928 { return *this; }
16929
16930
16931 bool
16932 failed() const throw()
16933 { return _M_failed; }
16934
16935 ostreambuf_iterator&
16936 _M_put(const _CharT* __ws, streamsize __len)
16937 {
16938 if (__builtin_expect(!_M_failed, true)
16939 && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
16940 false))
16941 _M_failed = true;
16942 return *this;
16943 }
16944 };
16945
16946
16947 template<typename _CharT>
16948 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
16949 ostreambuf_iterator<_CharT> >::__type
16950 copy(istreambuf_iterator<_CharT> __first,
16951 istreambuf_iterator<_CharT> __last,
16952 ostreambuf_iterator<_CharT> __result)
16953 {
16954 if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
16955 {
16956 bool __ineof;
16957 __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
16958 if (!__ineof)
16959 __result._M_failed = true;
16960 }
16961 return __result;
16962 }
16963
16964 template<bool _IsMove, typename _CharT>
16965 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
16966 ostreambuf_iterator<_CharT> >::__type
16967 __copy_move_a2(_CharT* __first, _CharT* __last,
16968 ostreambuf_iterator<_CharT> __result)
16969 {
16970 const streamsize __num = __last - __first;
16971 if (__num > 0)
16972 __result._M_put(__first, __num);
16973 return __result;
16974 }
16975
16976 template<bool _IsMove, typename _CharT>
16977 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
16978 ostreambuf_iterator<_CharT> >::__type
16979 __copy_move_a2(const _CharT* __first, const _CharT* __last,
16980 ostreambuf_iterator<_CharT> __result)
16981 {
16982 const streamsize __num = __last - __first;
16983 if (__num > 0)
16984 __result._M_put(__first, __num);
16985 return __result;
16986 }
16987
16988 template<bool _IsMove, typename _CharT>
16989 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
16990 _CharT*>::__type
16991 __copy_move_a2(istreambuf_iterator<_CharT> __first,
16992 istreambuf_iterator<_CharT> __last, _CharT* __result)
16993 {
16994 typedef istreambuf_iterator<_CharT> __is_iterator_type;
16995 typedef typename __is_iterator_type::traits_type traits_type;
16996 typedef typename __is_iterator_type::streambuf_type streambuf_type;
16997 typedef typename traits_type::int_type int_type;
16998
16999 if (__first._M_sbuf && !__last._M_sbuf)
17000 {
17001 streambuf_type* __sb = __first._M_sbuf;
17002 int_type __c = __sb->sgetc();
17003 while (!traits_type::eq_int_type(__c, traits_type::eof()))
17004 {
17005 const streamsize __n = __sb->egptr() - __sb->gptr();
17006 if (__n > 1)
17007 {
17008 traits_type::copy(__result, __sb->gptr(), __n);
17009 __sb->__safe_gbump(__n);
17010 __result += __n;
17011 __c = __sb->underflow();
17012 }
17013 else
17014 {
17015 *__result++ = traits_type::to_char_type(__c);
17016 __c = __sb->snextc();
17017 }
17018 }
17019 }
17020 return __result;
17021 }
17022
17023 template<typename _CharT>
17024 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
17025 istreambuf_iterator<_CharT> >::__type
17026 find(istreambuf_iterator<_CharT> __first,
17027 istreambuf_iterator<_CharT> __last, const _CharT& __val)
17028 {
17029 typedef istreambuf_iterator<_CharT> __is_iterator_type;
17030 typedef typename __is_iterator_type::traits_type traits_type;
17031 typedef typename __is_iterator_type::streambuf_type streambuf_type;
17032 typedef typename traits_type::int_type int_type;
17033
17034 if (__first._M_sbuf && !__last._M_sbuf)
17035 {
17036 const int_type __ival = traits_type::to_int_type(__val);
17037 streambuf_type* __sb = __first._M_sbuf;
17038 int_type __c = __sb->sgetc();
17039 while (!traits_type::eq_int_type(__c, traits_type::eof())
17040 && !traits_type::eq_int_type(__c, __ival))
17041 {
17042 streamsize __n = __sb->egptr() - __sb->gptr();
17043 if (__n > 1)
17044 {
17045 const _CharT* __p = traits_type::find(__sb->gptr(),
17046 __n, __val);
17047 if (__p)
17048 __n = __p - __sb->gptr();
17049 __sb->__safe_gbump(__n);
17050 __c = __sb->sgetc();
17051 }
17052 else
17053 __c = __sb->snextc();
17054 }
17055
17056 if (!traits_type::eq_int_type(__c, traits_type::eof()))
17057 __first._M_c = __c;
17058 else
17059 __first._M_sbuf = 0;
17060 }
17061 return __first;
17062 }
17063
17064
17065
17066
17067 }
17068 # 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 2 3
17069
17070 namespace std __attribute__ ((__visibility__ ("default")))
17071 {
17072
17073 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17074 template<typename _Tp>
17075 void
17076 __convert_to_v(const char*, _Tp&, ios_base::iostate&,
17077 const __c_locale&) throw();
17078
17079
17080 template<>
17081 void
17082 __convert_to_v(const char*, float&, ios_base::iostate&,
17083 const __c_locale&) throw();
17084
17085 template<>
17086 void
17087 __convert_to_v(const char*, double&, ios_base::iostate&,
17088 const __c_locale&) throw();
17089
17090 template<>
17091 void
17092 __convert_to_v(const char*, long double&, ios_base::iostate&,
17093 const __c_locale&) throw();
17094
17095
17096
17097 template<typename _CharT, typename _Traits>
17098 struct __pad
17099 {
17100 static void
17101 _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
17102 const _CharT* __olds, streamsize __newlen, streamsize __oldlen);
17103 };
17104
17105
17106
17107
17108
17109
17110 template<typename _CharT>
17111 _CharT*
17112 __add_grouping(_CharT* __s, _CharT __sep,
17113 const char* __gbeg, size_t __gsize,
17114 const _CharT* __first, const _CharT* __last);
17115
17116
17117
17118
17119 template<typename _CharT>
17120 inline
17121 ostreambuf_iterator<_CharT>
17122 __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
17123 {
17124 __s._M_put(__ws, __len);
17125 return __s;
17126 }
17127
17128
17129 template<typename _CharT, typename _OutIter>
17130 inline
17131 _OutIter
17132 __write(_OutIter __s, const _CharT* __ws, int __len)
17133 {
17134 for (int __j = 0; __j < __len; __j++, ++__s)
17135 *__s = __ws[__j];
17136 return __s;
17137 }
17138 # 144 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17139 template<typename _CharT>
17140 class __ctype_abstract_base : public locale::facet, public ctype_base
17141 {
17142 public:
17143
17144
17145 typedef _CharT char_type;
17146 # 162 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17147 bool
17148 is(mask __m, char_type __c) const
17149 { return this->do_is(__m, __c); }
17150 # 179 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17151 const char_type*
17152 is(const char_type *__lo, const char_type *__hi, mask *__vec) const
17153 { return this->do_is(__lo, __hi, __vec); }
17154 # 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17155 const char_type*
17156 scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
17157 { return this->do_scan_is(__m, __lo, __hi); }
17158 # 211 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17159 const char_type*
17160 scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
17161 { return this->do_scan_not(__m, __lo, __hi); }
17162 # 225 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17163 char_type
17164 toupper(char_type __c) const
17165 { return this->do_toupper(__c); }
17166 # 240 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17167 const char_type*
17168 toupper(char_type *__lo, const char_type* __hi) const
17169 { return this->do_toupper(__lo, __hi); }
17170 # 254 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17171 char_type
17172 tolower(char_type __c) const
17173 { return this->do_tolower(__c); }
17174 # 269 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17175 const char_type*
17176 tolower(char_type* __lo, const char_type* __hi) const
17177 { return this->do_tolower(__lo, __hi); }
17178 # 286 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17179 char_type
17180 widen(char __c) const
17181 { return this->do_widen(__c); }
17182 # 305 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17183 const char*
17184 widen(const char* __lo, const char* __hi, char_type* __to) const
17185 { return this->do_widen(__lo, __hi, __to); }
17186 # 324 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17187 char
17188 narrow(char_type __c, char __dfault) const
17189 { return this->do_narrow(__c, __dfault); }
17190 # 346 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17191 const char_type*
17192 narrow(const char_type* __lo, const char_type* __hi,
17193 char __dfault, char *__to) const
17194 { return this->do_narrow(__lo, __hi, __dfault, __to); }
17195
17196 protected:
17197 explicit
17198 __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
17199
17200 virtual
17201 ~__ctype_abstract_base() { }
17202 # 371 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17203 virtual bool
17204 do_is(mask __m, char_type __c) const = 0;
17205 # 390 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17206 virtual const char_type*
17207 do_is(const char_type* __lo, const char_type* __hi,
17208 mask* __vec) const = 0;
17209 # 409 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17210 virtual const char_type*
17211 do_scan_is(mask __m, const char_type* __lo,
17212 const char_type* __hi) const = 0;
17213 # 428 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17214 virtual const char_type*
17215 do_scan_not(mask __m, const char_type* __lo,
17216 const char_type* __hi) const = 0;
17217 # 446 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17218 virtual char_type
17219 do_toupper(char_type) const = 0;
17220 # 463 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17221 virtual const char_type*
17222 do_toupper(char_type* __lo, const char_type* __hi) const = 0;
17223 # 479 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17224 virtual char_type
17225 do_tolower(char_type) const = 0;
17226 # 496 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17227 virtual const char_type*
17228 do_tolower(char_type* __lo, const char_type* __hi) const = 0;
17229 # 515 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17230 virtual char_type
17231 do_widen(char) const = 0;
17232 # 536 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17233 virtual const char*
17234 do_widen(const char* __lo, const char* __hi,
17235 char_type* __dest) const = 0;
17236 # 558 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17237 virtual char
17238 do_narrow(char_type, char __dfault) const = 0;
17239 # 582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17240 virtual const char_type*
17241 do_narrow(const char_type* __lo, const char_type* __hi,
17242 char __dfault, char* __dest) const = 0;
17243 };
17244 # 605 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17245 template<typename _CharT>
17246 class ctype : public __ctype_abstract_base<_CharT>
17247 {
17248 public:
17249
17250 typedef _CharT char_type;
17251 typedef typename __ctype_abstract_base<_CharT>::mask mask;
17252
17253
17254 static locale::id id;
17255
17256 explicit
17257 ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
17258
17259 protected:
17260 virtual
17261 ~ctype();
17262
17263 virtual bool
17264 do_is(mask __m, char_type __c) const;
17265
17266 virtual const char_type*
17267 do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
17268
17269 virtual const char_type*
17270 do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
17271
17272 virtual const char_type*
17273 do_scan_not(mask __m, const char_type* __lo,
17274 const char_type* __hi) const;
17275
17276 virtual char_type
17277 do_toupper(char_type __c) const;
17278
17279 virtual const char_type*
17280 do_toupper(char_type* __lo, const char_type* __hi) const;
17281
17282 virtual char_type
17283 do_tolower(char_type __c) const;
17284
17285 virtual const char_type*
17286 do_tolower(char_type* __lo, const char_type* __hi) const;
17287
17288 virtual char_type
17289 do_widen(char __c) const;
17290
17291 virtual const char*
17292 do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
17293
17294 virtual char
17295 do_narrow(char_type, char __dfault) const;
17296
17297 virtual const char_type*
17298 do_narrow(const char_type* __lo, const char_type* __hi,
17299 char __dfault, char* __dest) const;
17300 };
17301
17302 template<typename _CharT>
17303 locale::id ctype<_CharT>::id;
17304 # 674 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17305 template<>
17306 class ctype<char> : public locale::facet, public ctype_base
17307 {
17308 public:
17309
17310
17311 typedef char char_type;
17312
17313 protected:
17314
17315 __c_locale _M_c_locale_ctype;
17316 bool _M_del;
17317 __to_type _M_toupper;
17318 __to_type _M_tolower;
17319 const mask* _M_table;
17320 mutable char _M_widen_ok;
17321 mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
17322 mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
17323 mutable char _M_narrow_ok;
17324
17325
17326 public:
17327
17328 static locale::id id;
17329
17330 static const size_t table_size = 1 + static_cast<unsigned char>(-1);
17331 # 711 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17332 explicit
17333 ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
17334 # 724 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17335 explicit
17336 ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
17337 size_t __refs = 0);
17338 # 737 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17339 inline bool
17340 is(mask __m, char __c) const;
17341 # 752 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17342 inline const char*
17343 is(const char* __lo, const char* __hi, mask* __vec) const;
17344 # 766 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17345 inline const char*
17346 scan_is(mask __m, const char* __lo, const char* __hi) const;
17347 # 780 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17348 inline const char*
17349 scan_not(mask __m, const char* __lo, const char* __hi) const;
17350 # 795 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17351 char_type
17352 toupper(char_type __c) const
17353 { return this->do_toupper(__c); }
17354 # 812 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17355 const char_type*
17356 toupper(char_type *__lo, const char_type* __hi) const
17357 { return this->do_toupper(__lo, __hi); }
17358 # 828 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17359 char_type
17360 tolower(char_type __c) const
17361 { return this->do_tolower(__c); }
17362 # 845 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17363 const char_type*
17364 tolower(char_type* __lo, const char_type* __hi) const
17365 { return this->do_tolower(__lo, __hi); }
17366 # 865 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17367 char_type
17368 widen(char __c) const
17369 {
17370 if (_M_widen_ok)
17371 return _M_widen[static_cast<unsigned char>(__c)];
17372 this->_M_widen_init();
17373 return this->do_widen(__c);
17374 }
17375 # 892 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17376 const char*
17377 widen(const char* __lo, const char* __hi, char_type* __to) const
17378 {
17379 if (_M_widen_ok == 1)
17380 {
17381 __builtin_memcpy(__to, __lo, __hi - __lo);
17382 return __hi;
17383 }
17384 if (!_M_widen_ok)
17385 _M_widen_init();
17386 return this->do_widen(__lo, __hi, __to);
17387 }
17388 # 923 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17389 char
17390 narrow(char_type __c, char __dfault) const
17391 {
17392 if (_M_narrow[static_cast<unsigned char>(__c)])
17393 return _M_narrow[static_cast<unsigned char>(__c)];
17394 const char __t = do_narrow(__c, __dfault);
17395 if (__t != __dfault)
17396 _M_narrow[static_cast<unsigned char>(__c)] = __t;
17397 return __t;
17398 }
17399 # 956 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17400 const char_type*
17401 narrow(const char_type* __lo, const char_type* __hi,
17402 char __dfault, char *__to) const
17403 {
17404 if (__builtin_expect(_M_narrow_ok == 1, true))
17405 {
17406 __builtin_memcpy(__to, __lo, __hi - __lo);
17407 return __hi;
17408 }
17409 if (!_M_narrow_ok)
17410 _M_narrow_init();
17411 return this->do_narrow(__lo, __hi, __dfault, __to);
17412 }
17413
17414
17415
17416
17417
17418 const mask*
17419 table() const throw()
17420 { return _M_table; }
17421
17422
17423 static const mask*
17424 classic_table() throw();
17425 protected:
17426
17427
17428
17429
17430
17431
17432
17433 virtual
17434 ~ctype();
17435 # 1005 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17436 virtual char_type
17437 do_toupper(char_type) const;
17438 # 1022 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17439 virtual const char_type*
17440 do_toupper(char_type* __lo, const char_type* __hi) const;
17441 # 1038 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17442 virtual char_type
17443 do_tolower(char_type) const;
17444 # 1055 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17445 virtual const char_type*
17446 do_tolower(char_type* __lo, const char_type* __hi) const;
17447 # 1075 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17448 virtual char_type
17449 do_widen(char __c) const
17450 { return __c; }
17451 # 1098 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17452 virtual const char*
17453 do_widen(const char* __lo, const char* __hi, char_type* __dest) const
17454 {
17455 __builtin_memcpy(__dest, __lo, __hi - __lo);
17456 return __hi;
17457 }
17458 # 1124 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17459 virtual char
17460 do_narrow(char_type __c, char) const
17461 { return __c; }
17462 # 1150 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17463 virtual const char_type*
17464 do_narrow(const char_type* __lo, const char_type* __hi,
17465 char, char* __dest) const
17466 {
17467 __builtin_memcpy(__dest, __lo, __hi - __lo);
17468 return __hi;
17469 }
17470
17471 private:
17472 void _M_narrow_init() const;
17473 void _M_widen_init() const;
17474 };
17475 # 1175 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17476 template<>
17477 class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>
17478 {
17479 public:
17480
17481
17482 typedef wchar_t char_type;
17483 typedef wctype_t __wmask_type;
17484
17485 protected:
17486 __c_locale _M_c_locale_ctype;
17487
17488
17489 bool _M_narrow_ok;
17490 char _M_narrow[128];
17491 wint_t _M_widen[1 + static_cast<unsigned char>(-1)];
17492
17493
17494 mask _M_bit[16];
17495 __wmask_type _M_wmask[16];
17496
17497 public:
17498
17499
17500 static locale::id id;
17501 # 1208 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17502 explicit
17503 ctype(size_t __refs = 0);
17504 # 1219 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17505 explicit
17506 ctype(__c_locale __cloc, size_t __refs = 0);
17507
17508 protected:
17509 __wmask_type
17510 _M_convert_to_wmask(const mask __m) const throw();
17511
17512
17513 virtual
17514 ~ctype();
17515 # 1243 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17516 virtual bool
17517 do_is(mask __m, char_type __c) const;
17518 # 1262 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17519 virtual const char_type*
17520 do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
17521 # 1280 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17522 virtual const char_type*
17523 do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
17524 # 1298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17525 virtual const char_type*
17526 do_scan_not(mask __m, const char_type* __lo,
17527 const char_type* __hi) const;
17528 # 1315 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17529 virtual char_type
17530 do_toupper(char_type) const;
17531 # 1332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17532 virtual const char_type*
17533 do_toupper(char_type* __lo, const char_type* __hi) const;
17534 # 1348 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17535 virtual char_type
17536 do_tolower(char_type) const;
17537 # 1365 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17538 virtual const char_type*
17539 do_tolower(char_type* __lo, const char_type* __hi) const;
17540 # 1385 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17541 virtual char_type
17542 do_widen(char) const;
17543 # 1407 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17544 virtual const char*
17545 do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
17546 # 1430 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17547 virtual char
17548 do_narrow(char_type, char __dfault) const;
17549 # 1456 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17550 virtual const char_type*
17551 do_narrow(const char_type* __lo, const char_type* __hi,
17552 char __dfault, char* __dest) const;
17553
17554
17555 void
17556 _M_initialize_ctype() throw();
17557 };
17558
17559
17560
17561 template<typename _CharT>
17562 class ctype_byname : public ctype<_CharT>
17563 {
17564 public:
17565 typedef typename ctype<_CharT>::mask mask;
17566
17567 explicit
17568 ctype_byname(const char* __s, size_t __refs = 0);
17569
17570 protected:
17571 virtual
17572 ~ctype_byname() { };
17573 };
17574
17575
17576 template<>
17577 class ctype_byname<char> : public ctype<char>
17578 {
17579 public:
17580 explicit
17581 ctype_byname(const char* __s, size_t __refs = 0);
17582
17583 protected:
17584 virtual
17585 ~ctype_byname();
17586 };
17587
17588
17589 template<>
17590 class ctype_byname<wchar_t> : public ctype<wchar_t>
17591 {
17592 public:
17593 explicit
17594 ctype_byname(const char* __s, size_t __refs = 0);
17595
17596 protected:
17597 virtual
17598 ~ctype_byname();
17599 };
17600
17601
17602
17603 }
17604
17605
17606 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_inline.h" 1 3
17607 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_inline.h" 3
17608 namespace std __attribute__ ((__visibility__ ("default")))
17609 {
17610
17611
17612 bool
17613 ctype<char>::
17614 is(mask __m, char __c) const
17615 { return _M_table[static_cast<unsigned char>(__c)] & __m; }
17616
17617 const char*
17618 ctype<char>::
17619 is(const char* __low, const char* __high, mask* __vec) const
17620 {
17621 while (__low < __high)
17622 *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
17623 return __high;
17624 }
17625
17626 const char*
17627 ctype<char>::
17628 scan_is(mask __m, const char* __low, const char* __high) const
17629 {
17630 while (__low < __high
17631 && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
17632 ++__low;
17633 return __low;
17634 }
17635
17636 const char*
17637 ctype<char>::
17638 scan_not(mask __m, const char* __low, const char* __high) const
17639 {
17640 while (__low < __high
17641 && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
17642 ++__low;
17643 return __low;
17644 }
17645
17646
17647 }
17648 # 1513 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 2 3
17649
17650 namespace std __attribute__ ((__visibility__ ("default")))
17651 {
17652
17653
17654
17655 class __num_base
17656 {
17657 public:
17658
17659
17660 enum
17661 {
17662 _S_ominus,
17663 _S_oplus,
17664 _S_ox,
17665 _S_oX,
17666 _S_odigits,
17667 _S_odigits_end = _S_odigits + 16,
17668 _S_oudigits = _S_odigits_end,
17669 _S_oudigits_end = _S_oudigits + 16,
17670 _S_oe = _S_odigits + 14,
17671 _S_oE = _S_oudigits + 14,
17672 _S_oend = _S_oudigits_end
17673 };
17674
17675
17676
17677
17678
17679
17680 static const char* _S_atoms_out;
17681
17682
17683
17684 static const char* _S_atoms_in;
17685
17686 enum
17687 {
17688 _S_iminus,
17689 _S_iplus,
17690 _S_ix,
17691 _S_iX,
17692 _S_izero,
17693 _S_ie = _S_izero + 14,
17694 _S_iE = _S_izero + 20,
17695 _S_iend = 26
17696 };
17697
17698
17699
17700 static void
17701 _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();
17702 };
17703
17704 template<typename _CharT>
17705 struct __numpunct_cache : public locale::facet
17706 {
17707 const char* _M_grouping;
17708 size_t _M_grouping_size;
17709 bool _M_use_grouping;
17710 const _CharT* _M_truename;
17711 size_t _M_truename_size;
17712 const _CharT* _M_falsename;
17713 size_t _M_falsename_size;
17714 _CharT _M_decimal_point;
17715 _CharT _M_thousands_sep;
17716
17717
17718
17719
17720
17721 _CharT _M_atoms_out[__num_base::_S_oend];
17722
17723
17724
17725
17726
17727 _CharT _M_atoms_in[__num_base::_S_iend];
17728
17729 bool _M_allocated;
17730
17731 __numpunct_cache(size_t __refs = 0)
17732 : facet(__refs), _M_grouping(0), _M_grouping_size(0),
17733 _M_use_grouping(false),
17734 _M_truename(0), _M_truename_size(0), _M_falsename(0),
17735 _M_falsename_size(0), _M_decimal_point(_CharT()),
17736 _M_thousands_sep(_CharT()), _M_allocated(false)
17737 { }
17738
17739 ~__numpunct_cache();
17740
17741 void
17742 _M_cache(const locale& __loc);
17743
17744 private:
17745 __numpunct_cache&
17746 operator=(const __numpunct_cache&);
17747
17748 explicit
17749 __numpunct_cache(const __numpunct_cache&);
17750 };
17751
17752 template<typename _CharT>
17753 __numpunct_cache<_CharT>::~__numpunct_cache()
17754 {
17755 if (_M_allocated)
17756 {
17757 delete [] _M_grouping;
17758 delete [] _M_truename;
17759 delete [] _M_falsename;
17760 }
17761 }
17762 # 1641 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17763 template<typename _CharT>
17764 class numpunct : public locale::facet
17765 {
17766 public:
17767
17768
17769
17770 typedef _CharT char_type;
17771 typedef basic_string<_CharT> string_type;
17772
17773 typedef __numpunct_cache<_CharT> __cache_type;
17774
17775 protected:
17776 __cache_type* _M_data;
17777
17778 public:
17779
17780 static locale::id id;
17781
17782
17783
17784
17785
17786
17787 explicit
17788 numpunct(size_t __refs = 0)
17789 : facet(__refs), _M_data(0)
17790 { _M_initialize_numpunct(); }
17791 # 1679 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17792 explicit
17793 numpunct(__cache_type* __cache, size_t __refs = 0)
17794 : facet(__refs), _M_data(__cache)
17795 { _M_initialize_numpunct(); }
17796 # 1693 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17797 explicit
17798 numpunct(__c_locale __cloc, size_t __refs = 0)
17799 : facet(__refs), _M_data(0)
17800 { _M_initialize_numpunct(__cloc); }
17801 # 1707 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17802 char_type
17803 decimal_point() const
17804 { return this->do_decimal_point(); }
17805 # 1720 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17806 char_type
17807 thousands_sep() const
17808 { return this->do_thousands_sep(); }
17809 # 1751 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17810 string
17811 grouping() const
17812 { return this->do_grouping(); }
17813 # 1764 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17814 string_type
17815 truename() const
17816 { return this->do_truename(); }
17817 # 1777 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17818 string_type
17819 falsename() const
17820 { return this->do_falsename(); }
17821
17822 protected:
17823
17824 virtual
17825 ~numpunct();
17826 # 1794 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17827 virtual char_type
17828 do_decimal_point() const
17829 { return _M_data->_M_decimal_point; }
17830 # 1806 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17831 virtual char_type
17832 do_thousands_sep() const
17833 { return _M_data->_M_thousands_sep; }
17834 # 1819 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17835 virtual string
17836 do_grouping() const
17837 { return _M_data->_M_grouping; }
17838 # 1832 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17839 virtual string_type
17840 do_truename() const
17841 { return _M_data->_M_truename; }
17842 # 1845 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17843 virtual string_type
17844 do_falsename() const
17845 { return _M_data->_M_falsename; }
17846
17847
17848 void
17849 _M_initialize_numpunct(__c_locale __cloc = 0);
17850 };
17851
17852 template<typename _CharT>
17853 locale::id numpunct<_CharT>::id;
17854
17855 template<>
17856 numpunct<char>::~numpunct();
17857
17858 template<>
17859 void
17860 numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
17861
17862
17863 template<>
17864 numpunct<wchar_t>::~numpunct();
17865
17866 template<>
17867 void
17868 numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);
17869
17870
17871
17872 template<typename _CharT>
17873 class numpunct_byname : public numpunct<_CharT>
17874 {
17875 public:
17876 typedef _CharT char_type;
17877 typedef basic_string<_CharT> string_type;
17878
17879 explicit
17880 numpunct_byname(const char* __s, size_t __refs = 0)
17881 : numpunct<_CharT>(__refs)
17882 {
17883 if (__builtin_strcmp(__s, "C") != 0
17884 && __builtin_strcmp(__s, "POSIX") != 0)
17885 {
17886 __c_locale __tmp;
17887 this->_S_create_c_locale(__tmp, __s);
17888 this->_M_initialize_numpunct(__tmp);
17889 this->_S_destroy_c_locale(__tmp);
17890 }
17891 }
17892
17893 protected:
17894 virtual
17895 ~numpunct_byname() { }
17896 };
17897
17898
17899 # 1915 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17900 template<typename _CharT, typename _InIter>
17901 class num_get : public locale::facet
17902 {
17903 public:
17904
17905
17906
17907 typedef _CharT char_type;
17908 typedef _InIter iter_type;
17909
17910
17911
17912 static locale::id id;
17913 # 1936 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17914 explicit
17915 num_get(size_t __refs = 0) : facet(__refs) { }
17916 # 1962 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17917 iter_type
17918 get(iter_type __in, iter_type __end, ios_base& __io,
17919 ios_base::iostate& __err, bool& __v) const
17920 { return this->do_get(__in, __end, __io, __err, __v); }
17921 # 1998 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17922 iter_type
17923 get(iter_type __in, iter_type __end, ios_base& __io,
17924 ios_base::iostate& __err, long& __v) const
17925 { return this->do_get(__in, __end, __io, __err, __v); }
17926
17927 iter_type
17928 get(iter_type __in, iter_type __end, ios_base& __io,
17929 ios_base::iostate& __err, unsigned short& __v) const
17930 { return this->do_get(__in, __end, __io, __err, __v); }
17931
17932 iter_type
17933 get(iter_type __in, iter_type __end, ios_base& __io,
17934 ios_base::iostate& __err, unsigned int& __v) const
17935 { return this->do_get(__in, __end, __io, __err, __v); }
17936
17937 iter_type
17938 get(iter_type __in, iter_type __end, ios_base& __io,
17939 ios_base::iostate& __err, unsigned long& __v) const
17940 { return this->do_get(__in, __end, __io, __err, __v); }
17941
17942
17943 iter_type
17944 get(iter_type __in, iter_type __end, ios_base& __io,
17945 ios_base::iostate& __err, long long& __v) const
17946 { return this->do_get(__in, __end, __io, __err, __v); }
17947
17948 iter_type
17949 get(iter_type __in, iter_type __end, ios_base& __io,
17950 ios_base::iostate& __err, unsigned long long& __v) const
17951 { return this->do_get(__in, __end, __io, __err, __v); }
17952 # 2057 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17953 iter_type
17954 get(iter_type __in, iter_type __end, ios_base& __io,
17955 ios_base::iostate& __err, float& __v) const
17956 { return this->do_get(__in, __end, __io, __err, __v); }
17957
17958 iter_type
17959 get(iter_type __in, iter_type __end, ios_base& __io,
17960 ios_base::iostate& __err, double& __v) const
17961 { return this->do_get(__in, __end, __io, __err, __v); }
17962
17963 iter_type
17964 get(iter_type __in, iter_type __end, ios_base& __io,
17965 ios_base::iostate& __err, long double& __v) const
17966 { return this->do_get(__in, __end, __io, __err, __v); }
17967 # 2099 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
17968 iter_type
17969 get(iter_type __in, iter_type __end, ios_base& __io,
17970 ios_base::iostate& __err, void*& __v) const
17971 { return this->do_get(__in, __end, __io, __err, __v); }
17972
17973 protected:
17974
17975 virtual ~num_get() { }
17976
17977 iter_type
17978 _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
17979 string&) const;
17980
17981 template<typename _ValueT>
17982 iter_type
17983 _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
17984 _ValueT&) const;
17985
17986 template<typename _CharT2>
17987 typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
17988 _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
17989 {
17990 int __ret = -1;
17991 if (__len <= 10)
17992 {
17993 if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
17994 __ret = __c - _CharT2('0');
17995 }
17996 else
17997 {
17998 if (__c >= _CharT2('0') && __c <= _CharT2('9'))
17999 __ret = __c - _CharT2('0');
18000 else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
18001 __ret = 10 + (__c - _CharT2('a'));
18002 else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
18003 __ret = 10 + (__c - _CharT2('A'));
18004 }
18005 return __ret;
18006 }
18007
18008 template<typename _CharT2>
18009 typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
18010 int>::__type
18011 _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
18012 {
18013 int __ret = -1;
18014 const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
18015 if (__q)
18016 {
18017 __ret = __q - __zero;
18018 if (__ret > 15)
18019 __ret -= 6;
18020 }
18021 return __ret;
18022 }
18023 # 2170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18024 virtual iter_type
18025 do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
18026
18027 virtual iter_type
18028 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18029 ios_base::iostate& __err, long& __v) const
18030 { return _M_extract_int(__beg, __end, __io, __err, __v); }
18031
18032 virtual iter_type
18033 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18034 ios_base::iostate& __err, unsigned short& __v) const
18035 { return _M_extract_int(__beg, __end, __io, __err, __v); }
18036
18037 virtual iter_type
18038 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18039 ios_base::iostate& __err, unsigned int& __v) const
18040 { return _M_extract_int(__beg, __end, __io, __err, __v); }
18041
18042 virtual iter_type
18043 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18044 ios_base::iostate& __err, unsigned long& __v) const
18045 { return _M_extract_int(__beg, __end, __io, __err, __v); }
18046
18047
18048 virtual iter_type
18049 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18050 ios_base::iostate& __err, long long& __v) const
18051 { return _M_extract_int(__beg, __end, __io, __err, __v); }
18052
18053 virtual iter_type
18054 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18055 ios_base::iostate& __err, unsigned long long& __v) const
18056 { return _M_extract_int(__beg, __end, __io, __err, __v); }
18057
18058
18059 virtual iter_type
18060 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
18061 float&) const;
18062
18063 virtual iter_type
18064 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
18065 double&) const;
18066
18067
18068
18069
18070
18071
18072
18073 virtual iter_type
18074 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
18075 long double&) const;
18076
18077
18078 virtual iter_type
18079 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
18080 void*&) const;
18081 # 2235 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18082 };
18083
18084 template<typename _CharT, typename _InIter>
18085 locale::id num_get<_CharT, _InIter>::id;
18086 # 2253 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18087 template<typename _CharT, typename _OutIter>
18088 class num_put : public locale::facet
18089 {
18090 public:
18091
18092
18093
18094 typedef _CharT char_type;
18095 typedef _OutIter iter_type;
18096
18097
18098
18099 static locale::id id;
18100 # 2274 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18101 explicit
18102 num_put(size_t __refs = 0) : facet(__refs) { }
18103 # 2292 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18104 iter_type
18105 put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const
18106 { return this->do_put(__s, __f, __fill, __v); }
18107 # 2334 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18108 iter_type
18109 put(iter_type __s, ios_base& __f, char_type __fill, long __v) const
18110 { return this->do_put(__s, __f, __fill, __v); }
18111
18112 iter_type
18113 put(iter_type __s, ios_base& __f, char_type __fill,
18114 unsigned long __v) const
18115 { return this->do_put(__s, __f, __fill, __v); }
18116
18117
18118 iter_type
18119 put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const
18120 { return this->do_put(__s, __f, __fill, __v); }
18121
18122 iter_type
18123 put(iter_type __s, ios_base& __f, char_type __fill,
18124 unsigned long long __v) const
18125 { return this->do_put(__s, __f, __fill, __v); }
18126 # 2397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18127 iter_type
18128 put(iter_type __s, ios_base& __f, char_type __fill, double __v) const
18129 { return this->do_put(__s, __f, __fill, __v); }
18130
18131 iter_type
18132 put(iter_type __s, ios_base& __f, char_type __fill,
18133 long double __v) const
18134 { return this->do_put(__s, __f, __fill, __v); }
18135 # 2422 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18136 iter_type
18137 put(iter_type __s, ios_base& __f, char_type __fill,
18138 const void* __v) const
18139 { return this->do_put(__s, __f, __fill, __v); }
18140
18141 protected:
18142 template<typename _ValueT>
18143 iter_type
18144 _M_insert_float(iter_type, ios_base& __io, char_type __fill,
18145 char __mod, _ValueT __v) const;
18146
18147 void
18148 _M_group_float(const char* __grouping, size_t __grouping_size,
18149 char_type __sep, const char_type* __p, char_type* __new,
18150 char_type* __cs, int& __len) const;
18151
18152 template<typename _ValueT>
18153 iter_type
18154 _M_insert_int(iter_type, ios_base& __io, char_type __fill,
18155 _ValueT __v) const;
18156
18157 void
18158 _M_group_int(const char* __grouping, size_t __grouping_size,
18159 char_type __sep, ios_base& __io, char_type* __new,
18160 char_type* __cs, int& __len) const;
18161
18162 void
18163 _M_pad(char_type __fill, streamsize __w, ios_base& __io,
18164 char_type* __new, const char_type* __cs, int& __len) const;
18165
18166
18167 virtual
18168 ~num_put() { };
18169 # 2470 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 3
18170 virtual iter_type
18171 do_put(iter_type, ios_base&, char_type __fill, bool __v) const;
18172
18173 virtual iter_type
18174 do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
18175 { return _M_insert_int(__s, __io, __fill, __v); }
18176
18177 virtual iter_type
18178 do_put(iter_type __s, ios_base& __io, char_type __fill,
18179 unsigned long __v) const
18180 { return _M_insert_int(__s, __io, __fill, __v); }
18181
18182
18183 virtual iter_type
18184 do_put(iter_type __s, ios_base& __io, char_type __fill,
18185 long long __v) const
18186 { return _M_insert_int(__s, __io, __fill, __v); }
18187
18188 virtual iter_type
18189 do_put(iter_type __s, ios_base& __io, char_type __fill,
18190 unsigned long long __v) const
18191 { return _M_insert_int(__s, __io, __fill, __v); }
18192
18193
18194 virtual iter_type
18195 do_put(iter_type, ios_base&, char_type __fill, double __v) const;
18196
18197
18198
18199
18200
18201
18202 virtual iter_type
18203 do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
18204
18205
18206 virtual iter_type
18207 do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
18208
18209
18210
18211
18212
18213
18214
18215 };
18216
18217 template <typename _CharT, typename _OutIter>
18218 locale::id num_put<_CharT, _OutIter>::id;
18219
18220
18221
18222
18223
18224
18225
18226
18227
18228 template<typename _CharT>
18229 inline bool
18230 isspace(_CharT __c, const locale& __loc)
18231 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
18232
18233
18234 template<typename _CharT>
18235 inline bool
18236 isprint(_CharT __c, const locale& __loc)
18237 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
18238
18239
18240 template<typename _CharT>
18241 inline bool
18242 iscntrl(_CharT __c, const locale& __loc)
18243 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
18244
18245
18246 template<typename _CharT>
18247 inline bool
18248 isupper(_CharT __c, const locale& __loc)
18249 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
18250
18251
18252 template<typename _CharT>
18253 inline bool
18254 islower(_CharT __c, const locale& __loc)
18255 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
18256
18257
18258 template<typename _CharT>
18259 inline bool
18260 isalpha(_CharT __c, const locale& __loc)
18261 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
18262
18263
18264 template<typename _CharT>
18265 inline bool
18266 isdigit(_CharT __c, const locale& __loc)
18267 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
18268
18269
18270 template<typename _CharT>
18271 inline bool
18272 ispunct(_CharT __c, const locale& __loc)
18273 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
18274
18275
18276 template<typename _CharT>
18277 inline bool
18278 isxdigit(_CharT __c, const locale& __loc)
18279 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
18280
18281
18282 template<typename _CharT>
18283 inline bool
18284 isalnum(_CharT __c, const locale& __loc)
18285 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
18286
18287
18288 template<typename _CharT>
18289 inline bool
18290 isgraph(_CharT __c, const locale& __loc)
18291 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
18292
18293
18294 template<typename _CharT>
18295 inline _CharT
18296 toupper(_CharT __c, const locale& __loc)
18297 { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
18298
18299
18300 template<typename _CharT>
18301 inline _CharT
18302 tolower(_CharT __c, const locale& __loc)
18303 { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
18304
18305
18306 }
18307
18308 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 1 3
18309 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
18310
18311 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
18312
18313 namespace std __attribute__ ((__visibility__ ("default")))
18314 {
18315
18316
18317
18318
18319 template<typename _Facet>
18320 struct __use_cache
18321 {
18322 const _Facet*
18323 operator() (const locale& __loc) const;
18324 };
18325
18326
18327 template<typename _CharT>
18328 struct __use_cache<__numpunct_cache<_CharT> >
18329 {
18330 const __numpunct_cache<_CharT>*
18331 operator() (const locale& __loc) const
18332 {
18333 const size_t __i = numpunct<_CharT>::id._M_id();
18334 const locale::facet** __caches = __loc._M_impl->_M_caches;
18335 if (!__caches[__i])
18336 {
18337 __numpunct_cache<_CharT>* __tmp = 0;
18338 try
18339 {
18340 __tmp = new __numpunct_cache<_CharT>;
18341 __tmp->_M_cache(__loc);
18342 }
18343 catch(...)
18344 {
18345 delete __tmp;
18346 throw;
18347 }
18348 __loc._M_impl->_M_install_cache(__tmp, __i);
18349 }
18350 return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
18351 }
18352 };
18353
18354 template<typename _CharT>
18355 void
18356 __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
18357 {
18358 _M_allocated = true;
18359
18360 const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
18361
18362 char* __grouping = 0;
18363 _CharT* __truename = 0;
18364 _CharT* __falsename = 0;
18365 try
18366 {
18367 _M_grouping_size = __np.grouping().size();
18368 __grouping = new char[_M_grouping_size];
18369 __np.grouping().copy(__grouping, _M_grouping_size);
18370 _M_grouping = __grouping;
18371 _M_use_grouping = (_M_grouping_size
18372 && static_cast<signed char>(_M_grouping[0]) > 0
18373 && (_M_grouping[0]
18374 != __gnu_cxx::__numeric_traits<char>::__max));
18375
18376 _M_truename_size = __np.truename().size();
18377 __truename = new _CharT[_M_truename_size];
18378 __np.truename().copy(__truename, _M_truename_size);
18379 _M_truename = __truename;
18380
18381 _M_falsename_size = __np.falsename().size();
18382 __falsename = new _CharT[_M_falsename_size];
18383 __np.falsename().copy(__falsename, _M_falsename_size);
18384 _M_falsename = __falsename;
18385
18386 _M_decimal_point = __np.decimal_point();
18387 _M_thousands_sep = __np.thousands_sep();
18388
18389 const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
18390 __ct.widen(__num_base::_S_atoms_out,
18391 __num_base::_S_atoms_out
18392 + __num_base::_S_oend, _M_atoms_out);
18393 __ct.widen(__num_base::_S_atoms_in,
18394 __num_base::_S_atoms_in
18395 + __num_base::_S_iend, _M_atoms_in);
18396 }
18397 catch(...)
18398 {
18399 delete [] __grouping;
18400 delete [] __truename;
18401 delete [] __falsename;
18402 throw;
18403 }
18404 }
18405 # 138 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
18406 __attribute__ ((__pure__)) bool
18407 __verify_grouping(const char* __grouping, size_t __grouping_size,
18408 const string& __grouping_tmp) throw ();
18409
18410
18411
18412 template<typename _CharT, typename _InIter>
18413 _InIter
18414 num_get<_CharT, _InIter>::
18415 _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
18416 ios_base::iostate& __err, string& __xtrc) const
18417 {
18418 typedef char_traits<_CharT> __traits_type;
18419 typedef __numpunct_cache<_CharT> __cache_type;
18420 __use_cache<__cache_type> __uc;
18421 const locale& __loc = __io._M_getloc();
18422 const __cache_type* __lc = __uc(__loc);
18423 const _CharT* __lit = __lc->_M_atoms_in;
18424 char_type __c = char_type();
18425
18426
18427 bool __testeof = __beg == __end;
18428
18429
18430 if (!__testeof)
18431 {
18432 __c = *__beg;
18433 const bool __plus = __c == __lit[__num_base::_S_iplus];
18434 if ((__plus || __c == __lit[__num_base::_S_iminus])
18435 && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
18436 && !(__c == __lc->_M_decimal_point))
18437 {
18438 __xtrc += __plus ? '+' : '-';
18439 if (++__beg != __end)
18440 __c = *__beg;
18441 else
18442 __testeof = true;
18443 }
18444 }
18445
18446
18447 bool __found_mantissa = false;
18448 int __sep_pos = 0;
18449 while (!__testeof)
18450 {
18451 if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
18452 || __c == __lc->_M_decimal_point)
18453 break;
18454 else if (__c == __lit[__num_base::_S_izero])
18455 {
18456 if (!__found_mantissa)
18457 {
18458 __xtrc += '0';
18459 __found_mantissa = true;
18460 }
18461 ++__sep_pos;
18462
18463 if (++__beg != __end)
18464 __c = *__beg;
18465 else
18466 __testeof = true;
18467 }
18468 else
18469 break;
18470 }
18471
18472
18473 bool __found_dec = false;
18474 bool __found_sci = false;
18475 string __found_grouping;
18476 if (__lc->_M_use_grouping)
18477 __found_grouping.reserve(32);
18478 const char_type* __lit_zero = __lit + __num_base::_S_izero;
18479
18480 if (!__lc->_M_allocated)
18481
18482 while (!__testeof)
18483 {
18484 const int __digit = _M_find(__lit_zero, 10, __c);
18485 if (__digit != -1)
18486 {
18487 __xtrc += '0' + __digit;
18488 __found_mantissa = true;
18489 }
18490 else if (__c == __lc->_M_decimal_point
18491 && !__found_dec && !__found_sci)
18492 {
18493 __xtrc += '.';
18494 __found_dec = true;
18495 }
18496 else if ((__c == __lit[__num_base::_S_ie]
18497 || __c == __lit[__num_base::_S_iE])
18498 && !__found_sci && __found_mantissa)
18499 {
18500
18501 __xtrc += 'e';
18502 __found_sci = true;
18503
18504
18505 if (++__beg != __end)
18506 {
18507 __c = *__beg;
18508 const bool __plus = __c == __lit[__num_base::_S_iplus];
18509 if (__plus || __c == __lit[__num_base::_S_iminus])
18510 __xtrc += __plus ? '+' : '-';
18511 else
18512 continue;
18513 }
18514 else
18515 {
18516 __testeof = true;
18517 break;
18518 }
18519 }
18520 else
18521 break;
18522
18523 if (++__beg != __end)
18524 __c = *__beg;
18525 else
18526 __testeof = true;
18527 }
18528 else
18529 while (!__testeof)
18530 {
18531
18532
18533 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
18534 {
18535 if (!__found_dec && !__found_sci)
18536 {
18537
18538
18539 if (__sep_pos)
18540 {
18541 __found_grouping += static_cast<char>(__sep_pos);
18542 __sep_pos = 0;
18543 }
18544 else
18545 {
18546
18547
18548 __xtrc.clear();
18549 break;
18550 }
18551 }
18552 else
18553 break;
18554 }
18555 else if (__c == __lc->_M_decimal_point)
18556 {
18557 if (!__found_dec && !__found_sci)
18558 {
18559
18560
18561
18562 if (__found_grouping.size())
18563 __found_grouping += static_cast<char>(__sep_pos);
18564 __xtrc += '.';
18565 __found_dec = true;
18566 }
18567 else
18568 break;
18569 }
18570 else
18571 {
18572 const char_type* __q =
18573 __traits_type::find(__lit_zero, 10, __c);
18574 if (__q)
18575 {
18576 __xtrc += '0' + (__q - __lit_zero);
18577 __found_mantissa = true;
18578 ++__sep_pos;
18579 }
18580 else if ((__c == __lit[__num_base::_S_ie]
18581 || __c == __lit[__num_base::_S_iE])
18582 && !__found_sci && __found_mantissa)
18583 {
18584
18585 if (__found_grouping.size() && !__found_dec)
18586 __found_grouping += static_cast<char>(__sep_pos);
18587 __xtrc += 'e';
18588 __found_sci = true;
18589
18590
18591 if (++__beg != __end)
18592 {
18593 __c = *__beg;
18594 const bool __plus = __c == __lit[__num_base::_S_iplus];
18595 if ((__plus || __c == __lit[__num_base::_S_iminus])
18596 && !(__lc->_M_use_grouping
18597 && __c == __lc->_M_thousands_sep)
18598 && !(__c == __lc->_M_decimal_point))
18599 __xtrc += __plus ? '+' : '-';
18600 else
18601 continue;
18602 }
18603 else
18604 {
18605 __testeof = true;
18606 break;
18607 }
18608 }
18609 else
18610 break;
18611 }
18612
18613 if (++__beg != __end)
18614 __c = *__beg;
18615 else
18616 __testeof = true;
18617 }
18618
18619
18620
18621 if (__found_grouping.size())
18622 {
18623
18624 if (!__found_dec && !__found_sci)
18625 __found_grouping += static_cast<char>(__sep_pos);
18626
18627 if (!std::__verify_grouping(__lc->_M_grouping,
18628 __lc->_M_grouping_size,
18629 __found_grouping))
18630 __err = ios_base::failbit;
18631 }
18632
18633 return __beg;
18634 }
18635
18636 template<typename _CharT, typename _InIter>
18637 template<typename _ValueT>
18638 _InIter
18639 num_get<_CharT, _InIter>::
18640 _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
18641 ios_base::iostate& __err, _ValueT& __v) const
18642 {
18643 typedef char_traits<_CharT> __traits_type;
18644 using __gnu_cxx::__add_unsigned;
18645 typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
18646 typedef __numpunct_cache<_CharT> __cache_type;
18647 __use_cache<__cache_type> __uc;
18648 const locale& __loc = __io._M_getloc();
18649 const __cache_type* __lc = __uc(__loc);
18650 const _CharT* __lit = __lc->_M_atoms_in;
18651 char_type __c = char_type();
18652
18653
18654 const ios_base::fmtflags __basefield = __io.flags()
18655 & ios_base::basefield;
18656 const bool __oct = __basefield == ios_base::oct;
18657 int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
18658
18659
18660 bool __testeof = __beg == __end;
18661
18662
18663 bool __negative = false;
18664 if (!__testeof)
18665 {
18666 __c = *__beg;
18667 __negative = __c == __lit[__num_base::_S_iminus];
18668 if ((__negative || __c == __lit[__num_base::_S_iplus])
18669 && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
18670 && !(__c == __lc->_M_decimal_point))
18671 {
18672 if (++__beg != __end)
18673 __c = *__beg;
18674 else
18675 __testeof = true;
18676 }
18677 }
18678
18679
18680
18681 bool __found_zero = false;
18682 int __sep_pos = 0;
18683 while (!__testeof)
18684 {
18685 if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
18686 || __c == __lc->_M_decimal_point)
18687 break;
18688 else if (__c == __lit[__num_base::_S_izero]
18689 && (!__found_zero || __base == 10))
18690 {
18691 __found_zero = true;
18692 ++__sep_pos;
18693 if (__basefield == 0)
18694 __base = 8;
18695 if (__base == 8)
18696 __sep_pos = 0;
18697 }
18698 else if (__found_zero
18699 && (__c == __lit[__num_base::_S_ix]
18700 || __c == __lit[__num_base::_S_iX]))
18701 {
18702 if (__basefield == 0)
18703 __base = 16;
18704 if (__base == 16)
18705 {
18706 __found_zero = false;
18707 __sep_pos = 0;
18708 }
18709 else
18710 break;
18711 }
18712 else
18713 break;
18714
18715 if (++__beg != __end)
18716 {
18717 __c = *__beg;
18718 if (!__found_zero)
18719 break;
18720 }
18721 else
18722 __testeof = true;
18723 }
18724
18725
18726
18727 const size_t __len = (__base == 16 ? __num_base::_S_iend
18728 - __num_base::_S_izero : __base);
18729
18730
18731 string __found_grouping;
18732 if (__lc->_M_use_grouping)
18733 __found_grouping.reserve(32);
18734 bool __testfail = false;
18735 bool __testoverflow = false;
18736 const __unsigned_type __max =
18737 (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
18738 ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
18739 : __gnu_cxx::__numeric_traits<_ValueT>::__max;
18740 const __unsigned_type __smax = __max / __base;
18741 __unsigned_type __result = 0;
18742 int __digit = 0;
18743 const char_type* __lit_zero = __lit + __num_base::_S_izero;
18744
18745 if (!__lc->_M_allocated)
18746
18747 while (!__testeof)
18748 {
18749 __digit = _M_find(__lit_zero, __len, __c);
18750 if (__digit == -1)
18751 break;
18752
18753 if (__result > __smax)
18754 __testoverflow = true;
18755 else
18756 {
18757 __result *= __base;
18758 __testoverflow |= __result > __max - __digit;
18759 __result += __digit;
18760 ++__sep_pos;
18761 }
18762
18763 if (++__beg != __end)
18764 __c = *__beg;
18765 else
18766 __testeof = true;
18767 }
18768 else
18769 while (!__testeof)
18770 {
18771
18772
18773 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
18774 {
18775
18776
18777 if (__sep_pos)
18778 {
18779 __found_grouping += static_cast<char>(__sep_pos);
18780 __sep_pos = 0;
18781 }
18782 else
18783 {
18784 __testfail = true;
18785 break;
18786 }
18787 }
18788 else if (__c == __lc->_M_decimal_point)
18789 break;
18790 else
18791 {
18792 const char_type* __q =
18793 __traits_type::find(__lit_zero, __len, __c);
18794 if (!__q)
18795 break;
18796
18797 __digit = __q - __lit_zero;
18798 if (__digit > 15)
18799 __digit -= 6;
18800 if (__result > __smax)
18801 __testoverflow = true;
18802 else
18803 {
18804 __result *= __base;
18805 __testoverflow |= __result > __max - __digit;
18806 __result += __digit;
18807 ++__sep_pos;
18808 }
18809 }
18810
18811 if (++__beg != __end)
18812 __c = *__beg;
18813 else
18814 __testeof = true;
18815 }
18816
18817
18818
18819 if (__found_grouping.size())
18820 {
18821
18822 __found_grouping += static_cast<char>(__sep_pos);
18823
18824 if (!std::__verify_grouping(__lc->_M_grouping,
18825 __lc->_M_grouping_size,
18826 __found_grouping))
18827 __err = ios_base::failbit;
18828 }
18829
18830
18831
18832 if ((!__sep_pos && !__found_zero && !__found_grouping.size())
18833 || __testfail)
18834 {
18835 __v = 0;
18836 __err = ios_base::failbit;
18837 }
18838 else if (__testoverflow)
18839 {
18840 if (__negative
18841 && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
18842 __v = __gnu_cxx::__numeric_traits<_ValueT>::__min;
18843 else
18844 __v = __gnu_cxx::__numeric_traits<_ValueT>::__max;
18845 __err = ios_base::failbit;
18846 }
18847 else
18848 __v = __negative ? -__result : __result;
18849
18850 if (__testeof)
18851 __err |= ios_base::eofbit;
18852 return __beg;
18853 }
18854
18855
18856
18857 template<typename _CharT, typename _InIter>
18858 _InIter
18859 num_get<_CharT, _InIter>::
18860 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18861 ios_base::iostate& __err, bool& __v) const
18862 {
18863 if (!(__io.flags() & ios_base::boolalpha))
18864 {
18865
18866
18867
18868 long __l = -1;
18869 __beg = _M_extract_int(__beg, __end, __io, __err, __l);
18870 if (__l == 0 || __l == 1)
18871 __v = bool(__l);
18872 else
18873 {
18874
18875
18876 __v = true;
18877 __err = ios_base::failbit;
18878 if (__beg == __end)
18879 __err |= ios_base::eofbit;
18880 }
18881 }
18882 else
18883 {
18884
18885 typedef __numpunct_cache<_CharT> __cache_type;
18886 __use_cache<__cache_type> __uc;
18887 const locale& __loc = __io._M_getloc();
18888 const __cache_type* __lc = __uc(__loc);
18889
18890 bool __testf = true;
18891 bool __testt = true;
18892 bool __donef = __lc->_M_falsename_size == 0;
18893 bool __donet = __lc->_M_truename_size == 0;
18894 bool __testeof = false;
18895 size_t __n = 0;
18896 while (!__donef || !__donet)
18897 {
18898 if (__beg == __end)
18899 {
18900 __testeof = true;
18901 break;
18902 }
18903
18904 const char_type __c = *__beg;
18905
18906 if (!__donef)
18907 __testf = __c == __lc->_M_falsename[__n];
18908
18909 if (!__testf && __donet)
18910 break;
18911
18912 if (!__donet)
18913 __testt = __c == __lc->_M_truename[__n];
18914
18915 if (!__testt && __donef)
18916 break;
18917
18918 if (!__testt && !__testf)
18919 break;
18920
18921 ++__n;
18922 ++__beg;
18923
18924 __donef = !__testf || __n >= __lc->_M_falsename_size;
18925 __donet = !__testt || __n >= __lc->_M_truename_size;
18926 }
18927 if (__testf && __n == __lc->_M_falsename_size && __n)
18928 {
18929 __v = false;
18930 if (__testt && __n == __lc->_M_truename_size)
18931 __err = ios_base::failbit;
18932 else
18933 __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
18934 }
18935 else if (__testt && __n == __lc->_M_truename_size && __n)
18936 {
18937 __v = true;
18938 __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
18939 }
18940 else
18941 {
18942
18943
18944 __v = false;
18945 __err = ios_base::failbit;
18946 if (__testeof)
18947 __err |= ios_base::eofbit;
18948 }
18949 }
18950 return __beg;
18951 }
18952
18953 template<typename _CharT, typename _InIter>
18954 _InIter
18955 num_get<_CharT, _InIter>::
18956 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18957 ios_base::iostate& __err, float& __v) const
18958 {
18959 string __xtrc;
18960 __xtrc.reserve(32);
18961 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
18962 std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
18963 if (__beg == __end)
18964 __err |= ios_base::eofbit;
18965 return __beg;
18966 }
18967
18968 template<typename _CharT, typename _InIter>
18969 _InIter
18970 num_get<_CharT, _InIter>::
18971 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18972 ios_base::iostate& __err, double& __v) const
18973 {
18974 string __xtrc;
18975 __xtrc.reserve(32);
18976 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
18977 std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
18978 if (__beg == __end)
18979 __err |= ios_base::eofbit;
18980 return __beg;
18981 }
18982 # 732 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
18983 template<typename _CharT, typename _InIter>
18984 _InIter
18985 num_get<_CharT, _InIter>::
18986 do_get(iter_type __beg, iter_type __end, ios_base& __io,
18987 ios_base::iostate& __err, long double& __v) const
18988 {
18989 string __xtrc;
18990 __xtrc.reserve(32);
18991 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
18992 std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
18993 if (__beg == __end)
18994 __err |= ios_base::eofbit;
18995 return __beg;
18996 }
18997
18998 template<typename _CharT, typename _InIter>
18999 _InIter
19000 num_get<_CharT, _InIter>::
19001 do_get(iter_type __beg, iter_type __end, ios_base& __io,
19002 ios_base::iostate& __err, void*& __v) const
19003 {
19004
19005 typedef ios_base::fmtflags fmtflags;
19006 const fmtflags __fmt = __io.flags();
19007 __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
19008
19009 typedef __gnu_cxx::__conditional_type<(sizeof(void*)
19010 <= sizeof(unsigned long)),
19011 unsigned long, unsigned long long>::__type _UIntPtrType;
19012
19013 _UIntPtrType __ul;
19014 __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
19015
19016
19017 __io.flags(__fmt);
19018
19019 __v = reinterpret_cast<void*>(__ul);
19020 return __beg;
19021 }
19022
19023
19024
19025 template<typename _CharT, typename _OutIter>
19026 void
19027 num_put<_CharT, _OutIter>::
19028 _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
19029 _CharT* __new, const _CharT* __cs, int& __len) const
19030 {
19031
19032
19033 __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
19034 __cs, __w, __len);
19035 __len = static_cast<int>(__w);
19036 }
19037
19038
19039
19040 template<typename _CharT, typename _ValueT>
19041 int
19042 __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
19043 ios_base::fmtflags __flags, bool __dec)
19044 {
19045 _CharT* __buf = __bufend;
19046 if (__builtin_expect(__dec, true))
19047 {
19048
19049 do
19050 {
19051 *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
19052 __v /= 10;
19053 }
19054 while (__v != 0);
19055 }
19056 else if ((__flags & ios_base::basefield) == ios_base::oct)
19057 {
19058
19059 do
19060 {
19061 *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
19062 __v >>= 3;
19063 }
19064 while (__v != 0);
19065 }
19066 else
19067 {
19068
19069 const bool __uppercase = __flags & ios_base::uppercase;
19070 const int __case_offset = __uppercase ? __num_base::_S_oudigits
19071 : __num_base::_S_odigits;
19072 do
19073 {
19074 *--__buf = __lit[(__v & 0xf) + __case_offset];
19075 __v >>= 4;
19076 }
19077 while (__v != 0);
19078 }
19079 return __bufend - __buf;
19080 }
19081
19082
19083
19084 template<typename _CharT, typename _OutIter>
19085 void
19086 num_put<_CharT, _OutIter>::
19087 _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
19088 ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
19089 {
19090 _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
19091 __grouping_size, __cs, __cs + __len);
19092 __len = __p - __new;
19093 }
19094
19095 template<typename _CharT, typename _OutIter>
19096 template<typename _ValueT>
19097 _OutIter
19098 num_put<_CharT, _OutIter>::
19099 _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
19100 _ValueT __v) const
19101 {
19102 using __gnu_cxx::__add_unsigned;
19103 typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
19104 typedef __numpunct_cache<_CharT> __cache_type;
19105 __use_cache<__cache_type> __uc;
19106 const locale& __loc = __io._M_getloc();
19107 const __cache_type* __lc = __uc(__loc);
19108 const _CharT* __lit = __lc->_M_atoms_out;
19109 const ios_base::fmtflags __flags = __io.flags();
19110
19111
19112 const int __ilen = 5 * sizeof(_ValueT);
19113 _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19114 * __ilen));
19115
19116
19117
19118 const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
19119 const bool __dec = (__basefield != ios_base::oct
19120 && __basefield != ios_base::hex);
19121 const __unsigned_type __u = ((__v > 0 || !__dec)
19122 ? __unsigned_type(__v)
19123 : -__unsigned_type(__v));
19124 int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
19125 __cs += __ilen - __len;
19126
19127
19128 if (__lc->_M_use_grouping)
19129 {
19130
19131
19132 _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19133 * (__len + 1)
19134 * 2));
19135 _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
19136 __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
19137 __cs = __cs2 + 2;
19138 }
19139
19140
19141 if (__builtin_expect(__dec, true))
19142 {
19143
19144 if (__v >= 0)
19145 {
19146 if (bool(__flags & ios_base::showpos)
19147 && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
19148 *--__cs = __lit[__num_base::_S_oplus], ++__len;
19149 }
19150 else
19151 *--__cs = __lit[__num_base::_S_ominus], ++__len;
19152 }
19153 else if (bool(__flags & ios_base::showbase) && __v)
19154 {
19155 if (__basefield == ios_base::oct)
19156 *--__cs = __lit[__num_base::_S_odigits], ++__len;
19157 else
19158 {
19159
19160 const bool __uppercase = __flags & ios_base::uppercase;
19161 *--__cs = __lit[__num_base::_S_ox + __uppercase];
19162
19163 *--__cs = __lit[__num_base::_S_odigits];
19164 __len += 2;
19165 }
19166 }
19167
19168
19169 const streamsize __w = __io.width();
19170 if (__w > static_cast<streamsize>(__len))
19171 {
19172 _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19173 * __w));
19174 _M_pad(__fill, __w, __io, __cs3, __cs, __len);
19175 __cs = __cs3;
19176 }
19177 __io.width(0);
19178
19179
19180
19181 return std::__write(__s, __cs, __len);
19182 }
19183
19184 template<typename _CharT, typename _OutIter>
19185 void
19186 num_put<_CharT, _OutIter>::
19187 _M_group_float(const char* __grouping, size_t __grouping_size,
19188 _CharT __sep, const _CharT* __p, _CharT* __new,
19189 _CharT* __cs, int& __len) const
19190 {
19191
19192
19193
19194 const int __declen = __p ? __p - __cs : __len;
19195 _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
19196 __grouping_size,
19197 __cs, __cs + __declen);
19198
19199
19200 int __newlen = __p2 - __new;
19201 if (__p)
19202 {
19203 char_traits<_CharT>::copy(__p2, __p, __len - __declen);
19204 __newlen += __len - __declen;
19205 }
19206 __len = __newlen;
19207 }
19208 # 968 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
19209 template<typename _CharT, typename _OutIter>
19210 template<typename _ValueT>
19211 _OutIter
19212 num_put<_CharT, _OutIter>::
19213 _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
19214 _ValueT __v) const
19215 {
19216 typedef __numpunct_cache<_CharT> __cache_type;
19217 __use_cache<__cache_type> __uc;
19218 const locale& __loc = __io._M_getloc();
19219 const __cache_type* __lc = __uc(__loc);
19220
19221
19222 const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
19223
19224 const int __max_digits =
19225 __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
19226
19227
19228 int __len;
19229
19230 char __fbuf[16];
19231 __num_base::_S_format_float(__io, __fbuf, __mod);
19232
19233
19234
19235
19236 int __cs_size = __max_digits * 3;
19237 char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
19238 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
19239 __fbuf, __prec, __v);
19240
19241
19242 if (__len >= __cs_size)
19243 {
19244 __cs_size = __len + 1;
19245 __cs = static_cast<char*>(__builtin_alloca(__cs_size));
19246 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
19247 __fbuf, __prec, __v);
19248 }
19249 # 1029 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
19250 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
19251
19252 _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19253 * __len));
19254 __ctype.widen(__cs, __cs + __len, __ws);
19255
19256
19257 _CharT* __wp = 0;
19258 const char* __p = char_traits<char>::find(__cs, __len, '.');
19259 if (__p)
19260 {
19261 __wp = __ws + (__p - __cs);
19262 *__wp = __lc->_M_decimal_point;
19263 }
19264
19265
19266
19267
19268 if (__lc->_M_use_grouping
19269 && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
19270 && __cs[1] >= '0' && __cs[2] >= '0')))
19271 {
19272
19273
19274 _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19275 * __len * 2));
19276
19277 streamsize __off = 0;
19278 if (__cs[0] == '-' || __cs[0] == '+')
19279 {
19280 __off = 1;
19281 __ws2[0] = __ws[0];
19282 __len -= 1;
19283 }
19284
19285 _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
19286 __lc->_M_thousands_sep, __wp, __ws2 + __off,
19287 __ws + __off, __len);
19288 __len += __off;
19289
19290 __ws = __ws2;
19291 }
19292
19293
19294 const streamsize __w = __io.width();
19295 if (__w > static_cast<streamsize>(__len))
19296 {
19297 _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19298 * __w));
19299 _M_pad(__fill, __w, __io, __ws3, __ws, __len);
19300 __ws = __ws3;
19301 }
19302 __io.width(0);
19303
19304
19305
19306 return std::__write(__s, __ws, __len);
19307 }
19308
19309 template<typename _CharT, typename _OutIter>
19310 _OutIter
19311 num_put<_CharT, _OutIter>::
19312 do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
19313 {
19314 const ios_base::fmtflags __flags = __io.flags();
19315 if ((__flags & ios_base::boolalpha) == 0)
19316 {
19317 const long __l = __v;
19318 __s = _M_insert_int(__s, __io, __fill, __l);
19319 }
19320 else
19321 {
19322 typedef __numpunct_cache<_CharT> __cache_type;
19323 __use_cache<__cache_type> __uc;
19324 const locale& __loc = __io._M_getloc();
19325 const __cache_type* __lc = __uc(__loc);
19326
19327 const _CharT* __name = __v ? __lc->_M_truename
19328 : __lc->_M_falsename;
19329 int __len = __v ? __lc->_M_truename_size
19330 : __lc->_M_falsename_size;
19331
19332 const streamsize __w = __io.width();
19333 if (__w > static_cast<streamsize>(__len))
19334 {
19335 const streamsize __plen = __w - __len;
19336 _CharT* __ps
19337 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
19338 * __plen));
19339
19340 char_traits<_CharT>::assign(__ps, __plen, __fill);
19341 __io.width(0);
19342
19343 if ((__flags & ios_base::adjustfield) == ios_base::left)
19344 {
19345 __s = std::__write(__s, __name, __len);
19346 __s = std::__write(__s, __ps, __plen);
19347 }
19348 else
19349 {
19350 __s = std::__write(__s, __ps, __plen);
19351 __s = std::__write(__s, __name, __len);
19352 }
19353 return __s;
19354 }
19355 __io.width(0);
19356 __s = std::__write(__s, __name, __len);
19357 }
19358 return __s;
19359 }
19360
19361 template<typename _CharT, typename _OutIter>
19362 _OutIter
19363 num_put<_CharT, _OutIter>::
19364 do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
19365 { return _M_insert_float(__s, __io, __fill, char(), __v); }
19366 # 1154 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
19367 template<typename _CharT, typename _OutIter>
19368 _OutIter
19369 num_put<_CharT, _OutIter>::
19370 do_put(iter_type __s, ios_base& __io, char_type __fill,
19371 long double __v) const
19372 { return _M_insert_float(__s, __io, __fill, 'L', __v); }
19373
19374 template<typename _CharT, typename _OutIter>
19375 _OutIter
19376 num_put<_CharT, _OutIter>::
19377 do_put(iter_type __s, ios_base& __io, char_type __fill,
19378 const void* __v) const
19379 {
19380 const ios_base::fmtflags __flags = __io.flags();
19381 const ios_base::fmtflags __fmt = ~(ios_base::basefield
19382 | ios_base::uppercase);
19383 __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
19384
19385 typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
19386 <= sizeof(unsigned long)),
19387 unsigned long, unsigned long long>::__type _UIntPtrType;
19388
19389 __s = _M_insert_int(__s, __io, __fill,
19390 reinterpret_cast<_UIntPtrType>(__v));
19391 __io.flags(__flags);
19392 return __s;
19393 }
19394
19395
19396 # 1191 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.tcc" 3
19397 template<typename _CharT, typename _Traits>
19398 void
19399 __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
19400 _CharT* __news, const _CharT* __olds,
19401 streamsize __newlen, streamsize __oldlen)
19402 {
19403 const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
19404 const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
19405
19406
19407 if (__adjust == ios_base::left)
19408 {
19409 _Traits::copy(__news, __olds, __oldlen);
19410 _Traits::assign(__news + __oldlen, __plen, __fill);
19411 return;
19412 }
19413
19414 size_t __mod = 0;
19415 if (__adjust == ios_base::internal)
19416 {
19417
19418
19419
19420 const locale& __loc = __io._M_getloc();
19421 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
19422
19423 if (__ctype.widen('-') == __olds[0]
19424 || __ctype.widen('+') == __olds[0])
19425 {
19426 __news[0] = __olds[0];
19427 __mod = 1;
19428 ++__news;
19429 }
19430 else if (__ctype.widen('0') == __olds[0]
19431 && __oldlen > 1
19432 && (__ctype.widen('x') == __olds[1]
19433 || __ctype.widen('X') == __olds[1]))
19434 {
19435 __news[0] = __olds[0];
19436 __news[1] = __olds[1];
19437 __mod = 2;
19438 __news += 2;
19439 }
19440
19441 }
19442 _Traits::assign(__news, __plen, __fill);
19443 _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
19444 }
19445
19446 template<typename _CharT>
19447 _CharT*
19448 __add_grouping(_CharT* __s, _CharT __sep,
19449 const char* __gbeg, size_t __gsize,
19450 const _CharT* __first, const _CharT* __last)
19451 {
19452 size_t __idx = 0;
19453 size_t __ctr = 0;
19454
19455 while (__last - __first > __gbeg[__idx]
19456 && static_cast<signed char>(__gbeg[__idx]) > 0
19457 && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max)
19458 {
19459 __last -= __gbeg[__idx];
19460 __idx < __gsize - 1 ? ++__idx : ++__ctr;
19461 }
19462
19463 while (__first != __last)
19464 *__s++ = *__first++;
19465
19466 while (__ctr--)
19467 {
19468 *__s++ = __sep;
19469 for (char __i = __gbeg[__idx]; __i > 0; --__i)
19470 *__s++ = *__first++;
19471 }
19472
19473 while (__idx--)
19474 {
19475 *__s++ = __sep;
19476 for (char __i = __gbeg[__idx]; __i > 0; --__i)
19477 *__s++ = *__first++;
19478 }
19479
19480 return __s;
19481 }
19482
19483
19484
19485
19486 extern template class numpunct<char>;
19487 extern template class numpunct_byname<char>;
19488 extern template class num_get<char>;
19489 extern template class num_put<char>;
19490 extern template class ctype_byname<char>;
19491
19492 extern template
19493 const ctype<char>&
19494 use_facet<ctype<char> >(const locale&);
19495
19496 extern template
19497 const numpunct<char>&
19498 use_facet<numpunct<char> >(const locale&);
19499
19500 extern template
19501 const num_put<char>&
19502 use_facet<num_put<char> >(const locale&);
19503
19504 extern template
19505 const num_get<char>&
19506 use_facet<num_get<char> >(const locale&);
19507
19508 extern template
19509 bool
19510 has_facet<ctype<char> >(const locale&);
19511
19512 extern template
19513 bool
19514 has_facet<numpunct<char> >(const locale&);
19515
19516 extern template
19517 bool
19518 has_facet<num_put<char> >(const locale&);
19519
19520 extern template
19521 bool
19522 has_facet<num_get<char> >(const locale&);
19523
19524
19525 extern template class numpunct<wchar_t>;
19526 extern template class numpunct_byname<wchar_t>;
19527 extern template class num_get<wchar_t>;
19528 extern template class num_put<wchar_t>;
19529 extern template class ctype_byname<wchar_t>;
19530
19531 extern template
19532 const ctype<wchar_t>&
19533 use_facet<ctype<wchar_t> >(const locale&);
19534
19535 extern template
19536 const numpunct<wchar_t>&
19537 use_facet<numpunct<wchar_t> >(const locale&);
19538
19539 extern template
19540 const num_put<wchar_t>&
19541 use_facet<num_put<wchar_t> >(const locale&);
19542
19543 extern template
19544 const num_get<wchar_t>&
19545 use_facet<num_get<wchar_t> >(const locale&);
19546
19547 extern template
19548 bool
19549 has_facet<ctype<wchar_t> >(const locale&);
19550
19551 extern template
19552 bool
19553 has_facet<numpunct<wchar_t> >(const locale&);
19554
19555 extern template
19556 bool
19557 has_facet<num_put<wchar_t> >(const locale&);
19558
19559 extern template
19560 bool
19561 has_facet<num_get<wchar_t> >(const locale&);
19562
19563
19564
19565
19566 }
19567 # 2609 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets.h" 2 3
19568 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 2 3
19569
19570
19571 namespace std __attribute__ ((__visibility__ ("default")))
19572 {
19573
19574
19575 template<typename _Facet>
19576 inline const _Facet&
19577 __check_facet(const _Facet* __f)
19578 {
19579 if (!__f)
19580 __throw_bad_cast();
19581 return *__f;
19582 }
19583 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19584 template<typename _CharT, typename _Traits>
19585 class basic_ios : public ios_base
19586 {
19587 public:
19588
19589
19590
19591
19592
19593
19594 typedef _CharT char_type;
19595 typedef typename _Traits::int_type int_type;
19596 typedef typename _Traits::pos_type pos_type;
19597 typedef typename _Traits::off_type off_type;
19598 typedef _Traits traits_type;
19599
19600
19601
19602
19603
19604
19605 typedef ctype<_CharT> __ctype_type;
19606 typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
19607 __num_put_type;
19608 typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
19609 __num_get_type;
19610
19611
19612
19613 protected:
19614 basic_ostream<_CharT, _Traits>* _M_tie;
19615 mutable char_type _M_fill;
19616 mutable bool _M_fill_init;
19617 basic_streambuf<_CharT, _Traits>* _M_streambuf;
19618
19619
19620 const __ctype_type* _M_ctype;
19621
19622 const __num_put_type* _M_num_put;
19623
19624 const __num_get_type* _M_num_get;
19625
19626 public:
19627
19628
19629
19630
19631
19632
19633
19634 operator void*() const
19635 { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
19636
19637 bool
19638 operator!() const
19639 { return this->fail(); }
19640 # 128 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19641 iostate
19642 rdstate() const
19643 { return _M_streambuf_state; }
19644 # 139 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19645 void
19646 clear(iostate __state = goodbit);
19647
19648
19649
19650
19651
19652
19653
19654 void
19655 setstate(iostate __state)
19656 { this->clear(this->rdstate() | __state); }
19657
19658
19659
19660
19661 void
19662 _M_setstate(iostate __state)
19663 {
19664
19665
19666 _M_streambuf_state |= __state;
19667 if (this->exceptions() & __state)
19668 throw;
19669 }
19670
19671
19672
19673
19674
19675
19676
19677 bool
19678 good() const
19679 { return this->rdstate() == 0; }
19680
19681
19682
19683
19684
19685
19686
19687 bool
19688 eof() const
19689 { return (this->rdstate() & eofbit) != 0; }
19690 # 192 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19691 bool
19692 fail() const
19693 { return (this->rdstate() & (badbit | failbit)) != 0; }
19694
19695
19696
19697
19698
19699
19700
19701 bool
19702 bad() const
19703 { return (this->rdstate() & badbit) != 0; }
19704 # 213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19705 iostate
19706 exceptions() const
19707 { return _M_exception; }
19708 # 248 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19709 void
19710 exceptions(iostate __except)
19711 {
19712 _M_exception = __except;
19713 this->clear(_M_streambuf_state);
19714 }
19715
19716
19717
19718
19719
19720
19721
19722 explicit
19723 basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
19724 : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
19725 _M_ctype(0), _M_num_put(0), _M_num_get(0)
19726 { this->init(__sb); }
19727
19728
19729
19730
19731
19732
19733
19734 virtual
19735 ~basic_ios() { }
19736 # 286 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19737 basic_ostream<_CharT, _Traits>*
19738 tie() const
19739 { return _M_tie; }
19740 # 298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19741 basic_ostream<_CharT, _Traits>*
19742 tie(basic_ostream<_CharT, _Traits>* __tiestr)
19743 {
19744 basic_ostream<_CharT, _Traits>* __old = _M_tie;
19745 _M_tie = __tiestr;
19746 return __old;
19747 }
19748
19749
19750
19751
19752
19753
19754
19755 basic_streambuf<_CharT, _Traits>*
19756 rdbuf() const
19757 { return _M_streambuf; }
19758 # 338 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19759 basic_streambuf<_CharT, _Traits>*
19760 rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
19761 # 352 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19762 basic_ios&
19763 copyfmt(const basic_ios& __rhs);
19764
19765
19766
19767
19768
19769
19770
19771 char_type
19772 fill() const
19773 {
19774 if (!_M_fill_init)
19775 {
19776 _M_fill = this->widen(' ');
19777 _M_fill_init = true;
19778 }
19779 return _M_fill;
19780 }
19781 # 381 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19782 char_type
19783 fill(char_type __ch)
19784 {
19785 char_type __old = this->fill();
19786 _M_fill = __ch;
19787 return __old;
19788 }
19789 # 401 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19790 locale
19791 imbue(const locale& __loc);
19792 # 421 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19793 char
19794 narrow(char_type __c, char __dfault) const
19795 { return __check_facet(_M_ctype).narrow(__c, __dfault); }
19796 # 440 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 3
19797 char_type
19798 widen(char __c) const
19799 { return __check_facet(_M_ctype).widen(__c); }
19800
19801 protected:
19802
19803
19804
19805
19806
19807
19808
19809 basic_ios()
19810 : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
19811 _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
19812 { }
19813
19814
19815
19816
19817
19818
19819
19820 void
19821 init(basic_streambuf<_CharT, _Traits>* __sb);
19822
19823 void
19824 _M_cache_locale(const locale& __loc);
19825 };
19826
19827
19828 }
19829
19830 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.tcc" 1 3
19831 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.tcc" 3
19832
19833 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.tcc" 3
19834
19835 namespace std __attribute__ ((__visibility__ ("default")))
19836 {
19837
19838
19839 template<typename _CharT, typename _Traits>
19840 void
19841 basic_ios<_CharT, _Traits>::clear(iostate __state)
19842 {
19843 if (this->rdbuf())
19844 _M_streambuf_state = __state;
19845 else
19846 _M_streambuf_state = __state | badbit;
19847 if (this->exceptions() & this->rdstate())
19848 __throw_ios_failure(("basic_ios::clear"));
19849 }
19850
19851 template<typename _CharT, typename _Traits>
19852 basic_streambuf<_CharT, _Traits>*
19853 basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
19854 {
19855 basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
19856 _M_streambuf = __sb;
19857 this->clear();
19858 return __old;
19859 }
19860
19861 template<typename _CharT, typename _Traits>
19862 basic_ios<_CharT, _Traits>&
19863 basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
19864 {
19865
19866
19867 if (this != &__rhs)
19868 {
19869
19870
19871
19872
19873 _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
19874 _M_local_word : new _Words[__rhs._M_word_size];
19875
19876
19877 _Callback_list* __cb = __rhs._M_callbacks;
19878 if (__cb)
19879 __cb->_M_add_reference();
19880 _M_call_callbacks(erase_event);
19881 if (_M_word != _M_local_word)
19882 {
19883 delete [] _M_word;
19884 _M_word = 0;
19885 }
19886 _M_dispose_callbacks();
19887
19888
19889 _M_callbacks = __cb;
19890 for (int __i = 0; __i < __rhs._M_word_size; ++__i)
19891 __words[__i] = __rhs._M_word[__i];
19892 _M_word = __words;
19893 _M_word_size = __rhs._M_word_size;
19894
19895 this->flags(__rhs.flags());
19896 this->width(__rhs.width());
19897 this->precision(__rhs.precision());
19898 this->tie(__rhs.tie());
19899 this->fill(__rhs.fill());
19900 _M_ios_locale = __rhs.getloc();
19901 _M_cache_locale(_M_ios_locale);
19902
19903 _M_call_callbacks(copyfmt_event);
19904
19905
19906 this->exceptions(__rhs.exceptions());
19907 }
19908 return *this;
19909 }
19910
19911
19912 template<typename _CharT, typename _Traits>
19913 locale
19914 basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
19915 {
19916 locale __old(this->getloc());
19917 ios_base::imbue(__loc);
19918 _M_cache_locale(__loc);
19919 if (this->rdbuf() != 0)
19920 this->rdbuf()->pubimbue(__loc);
19921 return __old;
19922 }
19923
19924 template<typename _CharT, typename _Traits>
19925 void
19926 basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
19927 {
19928
19929 ios_base::_M_init();
19930
19931
19932 _M_cache_locale(_M_ios_locale);
19933 # 147 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.tcc" 3
19934 _M_fill = _CharT();
19935 _M_fill_init = false;
19936
19937 _M_tie = 0;
19938 _M_exception = goodbit;
19939 _M_streambuf = __sb;
19940 _M_streambuf_state = __sb ? goodbit : badbit;
19941 }
19942
19943 template<typename _CharT, typename _Traits>
19944 void
19945 basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
19946 {
19947 if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
19948 _M_ctype = &use_facet<__ctype_type>(__loc);
19949 else
19950 _M_ctype = 0;
19951
19952 if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
19953 _M_num_put = &use_facet<__num_put_type>(__loc);
19954 else
19955 _M_num_put = 0;
19956
19957 if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
19958 _M_num_get = &use_facet<__num_get_type>(__loc);
19959 else
19960 _M_num_get = 0;
19961 }
19962
19963
19964
19965
19966 extern template class basic_ios<char>;
19967
19968
19969 extern template class basic_ios<wchar_t>;
19970
19971
19972
19973
19974 }
19975 # 474 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/basic_ios.h" 2 3
19976 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ios" 2 3
19977 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 2 3
19978
19979
19980 namespace std __attribute__ ((__visibility__ ("default")))
19981 {
19982
19983 # 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
19984 template<typename _CharT, typename _Traits>
19985 class basic_ostream : virtual public basic_ios<_CharT, _Traits>
19986 {
19987 public:
19988
19989 typedef _CharT char_type;
19990 typedef typename _Traits::int_type int_type;
19991 typedef typename _Traits::pos_type pos_type;
19992 typedef typename _Traits::off_type off_type;
19993 typedef _Traits traits_type;
19994
19995
19996 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
19997 typedef basic_ios<_CharT, _Traits> __ios_type;
19998 typedef basic_ostream<_CharT, _Traits> __ostream_type;
19999 typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
20000 __num_put_type;
20001 typedef ctype<_CharT> __ctype_type;
20002 # 83 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20003 explicit
20004 basic_ostream(__streambuf_type* __sb)
20005 { this->init(__sb); }
20006
20007
20008
20009
20010
20011
20012 virtual
20013 ~basic_ostream() { }
20014
20015
20016 class sentry;
20017 friend class sentry;
20018 # 109 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20019 __ostream_type&
20020 operator<<(__ostream_type& (*__pf)(__ostream_type&))
20021 {
20022
20023
20024
20025 return __pf(*this);
20026 }
20027
20028 __ostream_type&
20029 operator<<(__ios_type& (*__pf)(__ios_type&))
20030 {
20031
20032
20033
20034 __pf(*this);
20035 return *this;
20036 }
20037
20038 __ostream_type&
20039 operator<<(ios_base& (*__pf) (ios_base&))
20040 {
20041
20042
20043
20044 __pf(*this);
20045 return *this;
20046 }
20047 # 166 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20048 __ostream_type&
20049 operator<<(long __n)
20050 { return _M_insert(__n); }
20051
20052 __ostream_type&
20053 operator<<(unsigned long __n)
20054 { return _M_insert(__n); }
20055
20056 __ostream_type&
20057 operator<<(bool __n)
20058 { return _M_insert(__n); }
20059
20060 __ostream_type&
20061 operator<<(short __n);
20062
20063 __ostream_type&
20064 operator<<(unsigned short __n)
20065 {
20066
20067
20068 return _M_insert(static_cast<unsigned long>(__n));
20069 }
20070
20071 __ostream_type&
20072 operator<<(int __n);
20073
20074 __ostream_type&
20075 operator<<(unsigned int __n)
20076 {
20077
20078
20079 return _M_insert(static_cast<unsigned long>(__n));
20080 }
20081
20082
20083 __ostream_type&
20084 operator<<(long long __n)
20085 { return _M_insert(__n); }
20086
20087 __ostream_type&
20088 operator<<(unsigned long long __n)
20089 { return _M_insert(__n); }
20090
20091
20092 __ostream_type&
20093 operator<<(double __f)
20094 { return _M_insert(__f); }
20095
20096 __ostream_type&
20097 operator<<(float __f)
20098 {
20099
20100
20101 return _M_insert(static_cast<double>(__f));
20102 }
20103
20104 __ostream_type&
20105 operator<<(long double __f)
20106 { return _M_insert(__f); }
20107
20108 __ostream_type&
20109 operator<<(const void* __p)
20110 { return _M_insert(__p); }
20111 # 251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20112 __ostream_type&
20113 operator<<(__streambuf_type* __sb);
20114 # 284 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20115 __ostream_type&
20116 put(char_type __c);
20117
20118
20119 void
20120 _M_write(const char_type* __s, streamsize __n)
20121 {
20122 const streamsize __put = this->rdbuf()->sputn(__s, __n);
20123 if (__put != __n)
20124 this->setstate(ios_base::badbit);
20125 }
20126 # 312 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20127 __ostream_type&
20128 write(const char_type* __s, streamsize __n);
20129 # 325 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20130 __ostream_type&
20131 flush();
20132 # 336 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20133 pos_type
20134 tellp();
20135 # 347 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20136 __ostream_type&
20137 seekp(pos_type);
20138 # 359 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20139 __ostream_type&
20140 seekp(off_type, ios_base::seekdir);
20141
20142 protected:
20143 basic_ostream()
20144 { this->init(0); }
20145
20146 template<typename _ValueT>
20147 __ostream_type&
20148 _M_insert(_ValueT __v);
20149 };
20150 # 378 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20151 template <typename _CharT, typename _Traits>
20152 class basic_ostream<_CharT, _Traits>::sentry
20153 {
20154
20155 bool _M_ok;
20156 basic_ostream<_CharT, _Traits>& _M_os;
20157
20158 public:
20159 # 397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20160 explicit
20161 sentry(basic_ostream<_CharT, _Traits>& __os);
20162 # 407 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20163 ~sentry()
20164 {
20165
20166 if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
20167 {
20168
20169 if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
20170 _M_os.setstate(ios_base::badbit);
20171 }
20172 }
20173 # 428 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20174 operator bool() const
20175 { return _M_ok; }
20176 };
20177 # 449 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20178 template<typename _CharT, typename _Traits>
20179 inline basic_ostream<_CharT, _Traits>&
20180 operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
20181 { return __ostream_insert(__out, &__c, 1); }
20182
20183 template<typename _CharT, typename _Traits>
20184 inline basic_ostream<_CharT, _Traits>&
20185 operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
20186 { return (__out << __out.widen(__c)); }
20187
20188
20189 template <class _Traits>
20190 inline basic_ostream<char, _Traits>&
20191 operator<<(basic_ostream<char, _Traits>& __out, char __c)
20192 { return __ostream_insert(__out, &__c, 1); }
20193
20194
20195 template<class _Traits>
20196 inline basic_ostream<char, _Traits>&
20197 operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
20198 { return (__out << static_cast<char>(__c)); }
20199
20200 template<class _Traits>
20201 inline basic_ostream<char, _Traits>&
20202 operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
20203 { return (__out << static_cast<char>(__c)); }
20204 # 491 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20205 template<typename _CharT, typename _Traits>
20206 inline basic_ostream<_CharT, _Traits>&
20207 operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
20208 {
20209 if (!__s)
20210 __out.setstate(ios_base::badbit);
20211 else
20212 __ostream_insert(__out, __s,
20213 static_cast<streamsize>(_Traits::length(__s)));
20214 return __out;
20215 }
20216
20217 template<typename _CharT, typename _Traits>
20218 basic_ostream<_CharT, _Traits> &
20219 operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
20220
20221
20222 template<class _Traits>
20223 inline basic_ostream<char, _Traits>&
20224 operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
20225 {
20226 if (!__s)
20227 __out.setstate(ios_base::badbit);
20228 else
20229 __ostream_insert(__out, __s,
20230 static_cast<streamsize>(_Traits::length(__s)));
20231 return __out;
20232 }
20233
20234
20235 template<class _Traits>
20236 inline basic_ostream<char, _Traits>&
20237 operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
20238 { return (__out << reinterpret_cast<const char*>(__s)); }
20239
20240 template<class _Traits>
20241 inline basic_ostream<char, _Traits> &
20242 operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
20243 { return (__out << reinterpret_cast<const char*>(__s)); }
20244 # 541 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20245 template<typename _CharT, typename _Traits>
20246 inline basic_ostream<_CharT, _Traits>&
20247 endl(basic_ostream<_CharT, _Traits>& __os)
20248 { return flush(__os.put(__os.widen('\n'))); }
20249
20250
20251
20252
20253
20254
20255
20256 template<typename _CharT, typename _Traits>
20257 inline basic_ostream<_CharT, _Traits>&
20258 ends(basic_ostream<_CharT, _Traits>& __os)
20259 { return __os.put(_CharT()); }
20260
20261
20262
20263
20264
20265
20266 template<typename _CharT, typename _Traits>
20267 inline basic_ostream<_CharT, _Traits>&
20268 flush(basic_ostream<_CharT, _Traits>& __os)
20269 { return __os.flush(); }
20270 # 585 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 3
20271
20272 }
20273
20274 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream.tcc" 1 3
20275 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream.tcc" 3
20276
20277 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/ostream.tcc" 3
20278
20279
20280
20281 namespace std __attribute__ ((__visibility__ ("default")))
20282 {
20283
20284
20285 template<typename _CharT, typename _Traits>
20286 basic_ostream<_CharT, _Traits>::sentry::
20287 sentry(basic_ostream<_CharT, _Traits>& __os)
20288 : _M_ok(false), _M_os(__os)
20289 {
20290
20291 if (__os.tie() && __os.good())
20292 __os.tie()->flush();
20293
20294 if (__os.good())
20295 _M_ok = true;
20296 else
20297 __os.setstate(ios_base::failbit);
20298 }
20299
20300 template<typename _CharT, typename _Traits>
20301 template<typename _ValueT>
20302 basic_ostream<_CharT, _Traits>&
20303 basic_ostream<_CharT, _Traits>::
20304 _M_insert(_ValueT __v)
20305 {
20306 sentry __cerb(*this);
20307 if (__cerb)
20308 {
20309 ios_base::iostate __err = ios_base::goodbit;
20310 try
20311 {
20312 const __num_put_type& __np = __check_facet(this->_M_num_put);
20313 if (__np.put(*this, *this, this->fill(), __v).failed())
20314 __err |= ios_base::badbit;
20315 }
20316 catch(__cxxabiv1::__forced_unwind&)
20317 {
20318 this->_M_setstate(ios_base::badbit);
20319 throw;
20320 }
20321 catch(...)
20322 { this->_M_setstate(ios_base::badbit); }
20323 if (__err)
20324 this->setstate(__err);
20325 }
20326 return *this;
20327 }
20328
20329 template<typename _CharT, typename _Traits>
20330 basic_ostream<_CharT, _Traits>&
20331 basic_ostream<_CharT, _Traits>::
20332 operator<<(short __n)
20333 {
20334
20335
20336 const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
20337 if (__fmt == ios_base::oct || __fmt == ios_base::hex)
20338 return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
20339 else
20340 return _M_insert(static_cast<long>(__n));
20341 }
20342
20343 template<typename _CharT, typename _Traits>
20344 basic_ostream<_CharT, _Traits>&
20345 basic_ostream<_CharT, _Traits>::
20346 operator<<(int __n)
20347 {
20348
20349
20350 const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
20351 if (__fmt == ios_base::oct || __fmt == ios_base::hex)
20352 return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
20353 else
20354 return _M_insert(static_cast<long>(__n));
20355 }
20356
20357 template<typename _CharT, typename _Traits>
20358 basic_ostream<_CharT, _Traits>&
20359 basic_ostream<_CharT, _Traits>::
20360 operator<<(__streambuf_type* __sbin)
20361 {
20362 ios_base::iostate __err = ios_base::goodbit;
20363 sentry __cerb(*this);
20364 if (__cerb && __sbin)
20365 {
20366 try
20367 {
20368 if (!__copy_streambufs(__sbin, this->rdbuf()))
20369 __err |= ios_base::failbit;
20370 }
20371 catch(__cxxabiv1::__forced_unwind&)
20372 {
20373 this->_M_setstate(ios_base::badbit);
20374 throw;
20375 }
20376 catch(...)
20377 { this->_M_setstate(ios_base::failbit); }
20378 }
20379 else if (!__sbin)
20380 __err |= ios_base::badbit;
20381 if (__err)
20382 this->setstate(__err);
20383 return *this;
20384 }
20385
20386 template<typename _CharT, typename _Traits>
20387 basic_ostream<_CharT, _Traits>&
20388 basic_ostream<_CharT, _Traits>::
20389 put(char_type __c)
20390 {
20391
20392
20393
20394
20395
20396
20397 sentry __cerb(*this);
20398 if (__cerb)
20399 {
20400 ios_base::iostate __err = ios_base::goodbit;
20401 try
20402 {
20403 const int_type __put = this->rdbuf()->sputc(__c);
20404 if (traits_type::eq_int_type(__put, traits_type::eof()))
20405 __err |= ios_base::badbit;
20406 }
20407 catch(__cxxabiv1::__forced_unwind&)
20408 {
20409 this->_M_setstate(ios_base::badbit);
20410 throw;
20411 }
20412 catch(...)
20413 { this->_M_setstate(ios_base::badbit); }
20414 if (__err)
20415 this->setstate(__err);
20416 }
20417 return *this;
20418 }
20419
20420 template<typename _CharT, typename _Traits>
20421 basic_ostream<_CharT, _Traits>&
20422 basic_ostream<_CharT, _Traits>::
20423 write(const _CharT* __s, streamsize __n)
20424 {
20425
20426
20427
20428
20429
20430
20431
20432 sentry __cerb(*this);
20433 if (__cerb)
20434 {
20435 try
20436 { _M_write(__s, __n); }
20437 catch(__cxxabiv1::__forced_unwind&)
20438 {
20439 this->_M_setstate(ios_base::badbit);
20440 throw;
20441 }
20442 catch(...)
20443 { this->_M_setstate(ios_base::badbit); }
20444 }
20445 return *this;
20446 }
20447
20448 template<typename _CharT, typename _Traits>
20449 basic_ostream<_CharT, _Traits>&
20450 basic_ostream<_CharT, _Traits>::
20451 flush()
20452 {
20453
20454
20455
20456 ios_base::iostate __err = ios_base::goodbit;
20457 try
20458 {
20459 if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
20460 __err |= ios_base::badbit;
20461 }
20462 catch(__cxxabiv1::__forced_unwind&)
20463 {
20464 this->_M_setstate(ios_base::badbit);
20465 throw;
20466 }
20467 catch(...)
20468 { this->_M_setstate(ios_base::badbit); }
20469 if (__err)
20470 this->setstate(__err);
20471 return *this;
20472 }
20473
20474 template<typename _CharT, typename _Traits>
20475 typename basic_ostream<_CharT, _Traits>::pos_type
20476 basic_ostream<_CharT, _Traits>::
20477 tellp()
20478 {
20479 pos_type __ret = pos_type(-1);
20480 try
20481 {
20482 if (!this->fail())
20483 __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
20484 }
20485 catch(__cxxabiv1::__forced_unwind&)
20486 {
20487 this->_M_setstate(ios_base::badbit);
20488 throw;
20489 }
20490 catch(...)
20491 { this->_M_setstate(ios_base::badbit); }
20492 return __ret;
20493 }
20494
20495 template<typename _CharT, typename _Traits>
20496 basic_ostream<_CharT, _Traits>&
20497 basic_ostream<_CharT, _Traits>::
20498 seekp(pos_type __pos)
20499 {
20500 ios_base::iostate __err = ios_base::goodbit;
20501 try
20502 {
20503 if (!this->fail())
20504 {
20505
20506
20507 const pos_type __p = this->rdbuf()->pubseekpos(__pos,
20508 ios_base::out);
20509
20510
20511 if (__p == pos_type(off_type(-1)))
20512 __err |= ios_base::failbit;
20513 }
20514 }
20515 catch(__cxxabiv1::__forced_unwind&)
20516 {
20517 this->_M_setstate(ios_base::badbit);
20518 throw;
20519 }
20520 catch(...)
20521 { this->_M_setstate(ios_base::badbit); }
20522 if (__err)
20523 this->setstate(__err);
20524 return *this;
20525 }
20526
20527 template<typename _CharT, typename _Traits>
20528 basic_ostream<_CharT, _Traits>&
20529 basic_ostream<_CharT, _Traits>::
20530 seekp(off_type __off, ios_base::seekdir __dir)
20531 {
20532 ios_base::iostate __err = ios_base::goodbit;
20533 try
20534 {
20535 if (!this->fail())
20536 {
20537
20538
20539 const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
20540 ios_base::out);
20541
20542
20543 if (__p == pos_type(off_type(-1)))
20544 __err |= ios_base::failbit;
20545 }
20546 }
20547 catch(__cxxabiv1::__forced_unwind&)
20548 {
20549 this->_M_setstate(ios_base::badbit);
20550 throw;
20551 }
20552 catch(...)
20553 { this->_M_setstate(ios_base::badbit); }
20554 if (__err)
20555 this->setstate(__err);
20556 return *this;
20557 }
20558
20559 template<typename _CharT, typename _Traits>
20560 basic_ostream<_CharT, _Traits>&
20561 operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
20562 {
20563 if (!__s)
20564 __out.setstate(ios_base::badbit);
20565 else
20566 {
20567
20568
20569 const size_t __clen = char_traits<char>::length(__s);
20570 try
20571 {
20572 struct __ptr_guard
20573 {
20574 _CharT *__p;
20575 __ptr_guard (_CharT *__ip): __p(__ip) { }
20576 ~__ptr_guard() { delete[] __p; }
20577 _CharT* __get() { return __p; }
20578 } __pg (new _CharT[__clen]);
20579
20580 _CharT *__ws = __pg.__get();
20581 for (size_t __i = 0; __i < __clen; ++__i)
20582 __ws[__i] = __out.widen(__s[__i]);
20583 __ostream_insert(__out, __ws, __clen);
20584 }
20585 catch(__cxxabiv1::__forced_unwind&)
20586 {
20587 __out._M_setstate(ios_base::badbit);
20588 throw;
20589 }
20590 catch(...)
20591 { __out._M_setstate(ios_base::badbit); }
20592 }
20593 return __out;
20594 }
20595
20596
20597
20598
20599 extern template class basic_ostream<char>;
20600 extern template ostream& endl(ostream&);
20601 extern template ostream& ends(ostream&);
20602 extern template ostream& flush(ostream&);
20603 extern template ostream& operator<<(ostream&, char);
20604 extern template ostream& operator<<(ostream&, unsigned char);
20605 extern template ostream& operator<<(ostream&, signed char);
20606 extern template ostream& operator<<(ostream&, const char*);
20607 extern template ostream& operator<<(ostream&, const unsigned char*);
20608 extern template ostream& operator<<(ostream&, const signed char*);
20609
20610 extern template ostream& ostream::_M_insert(long);
20611 extern template ostream& ostream::_M_insert(unsigned long);
20612 extern template ostream& ostream::_M_insert(bool);
20613
20614 extern template ostream& ostream::_M_insert(long long);
20615 extern template ostream& ostream::_M_insert(unsigned long long);
20616
20617 extern template ostream& ostream::_M_insert(double);
20618 extern template ostream& ostream::_M_insert(long double);
20619 extern template ostream& ostream::_M_insert(const void*);
20620
20621
20622 extern template class basic_ostream<wchar_t>;
20623 extern template wostream& endl(wostream&);
20624 extern template wostream& ends(wostream&);
20625 extern template wostream& flush(wostream&);
20626 extern template wostream& operator<<(wostream&, wchar_t);
20627 extern template wostream& operator<<(wostream&, char);
20628 extern template wostream& operator<<(wostream&, const wchar_t*);
20629 extern template wostream& operator<<(wostream&, const char*);
20630
20631 extern template wostream& wostream::_M_insert(long);
20632 extern template wostream& wostream::_M_insert(unsigned long);
20633 extern template wostream& wostream::_M_insert(bool);
20634
20635 extern template wostream& wostream::_M_insert(long long);
20636 extern template wostream& wostream::_M_insert(unsigned long long);
20637
20638 extern template wostream& wostream::_M_insert(double);
20639 extern template wostream& wostream::_M_insert(long double);
20640 extern template wostream& wostream::_M_insert(const void*);
20641
20642
20643
20644
20645 }
20646 # 589 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ostream" 2 3
20647 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iterator" 2 3
20648 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 1 3
20649 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20650
20651 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20652
20653
20654
20655
20656 namespace std __attribute__ ((__visibility__ ("default")))
20657 {
20658
20659 # 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20660 template<typename _CharT, typename _Traits>
20661 class basic_istream : virtual public basic_ios<_CharT, _Traits>
20662 {
20663 public:
20664
20665 typedef _CharT char_type;
20666 typedef typename _Traits::int_type int_type;
20667 typedef typename _Traits::pos_type pos_type;
20668 typedef typename _Traits::off_type off_type;
20669 typedef _Traits traits_type;
20670
20671
20672 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
20673 typedef basic_ios<_CharT, _Traits> __ios_type;
20674 typedef basic_istream<_CharT, _Traits> __istream_type;
20675 typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
20676 __num_get_type;
20677 typedef ctype<_CharT> __ctype_type;
20678
20679 protected:
20680
20681
20682
20683
20684
20685 streamsize _M_gcount;
20686
20687 public:
20688 # 92 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20689 explicit
20690 basic_istream(__streambuf_type* __sb)
20691 : _M_gcount(streamsize(0))
20692 { this->init(__sb); }
20693
20694
20695
20696
20697
20698
20699 virtual
20700 ~basic_istream()
20701 { _M_gcount = streamsize(0); }
20702
20703
20704 class sentry;
20705 friend class sentry;
20706 # 121 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20707 __istream_type&
20708 operator>>(__istream_type& (*__pf)(__istream_type&))
20709 { return __pf(*this); }
20710
20711 __istream_type&
20712 operator>>(__ios_type& (*__pf)(__ios_type&))
20713 {
20714 __pf(*this);
20715 return *this;
20716 }
20717
20718 __istream_type&
20719 operator>>(ios_base& (*__pf)(ios_base&))
20720 {
20721 __pf(*this);
20722 return *this;
20723 }
20724 # 168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20725 __istream_type&
20726 operator>>(bool& __n)
20727 { return _M_extract(__n); }
20728
20729 __istream_type&
20730 operator>>(short& __n);
20731
20732 __istream_type&
20733 operator>>(unsigned short& __n)
20734 { return _M_extract(__n); }
20735
20736 __istream_type&
20737 operator>>(int& __n);
20738
20739 __istream_type&
20740 operator>>(unsigned int& __n)
20741 { return _M_extract(__n); }
20742
20743 __istream_type&
20744 operator>>(long& __n)
20745 { return _M_extract(__n); }
20746
20747 __istream_type&
20748 operator>>(unsigned long& __n)
20749 { return _M_extract(__n); }
20750
20751
20752 __istream_type&
20753 operator>>(long long& __n)
20754 { return _M_extract(__n); }
20755
20756 __istream_type&
20757 operator>>(unsigned long long& __n)
20758 { return _M_extract(__n); }
20759
20760
20761 __istream_type&
20762 operator>>(float& __f)
20763 { return _M_extract(__f); }
20764
20765 __istream_type&
20766 operator>>(double& __f)
20767 { return _M_extract(__f); }
20768
20769 __istream_type&
20770 operator>>(long double& __f)
20771 { return _M_extract(__f); }
20772
20773 __istream_type&
20774 operator>>(void*& __p)
20775 { return _M_extract(__p); }
20776 # 240 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20777 __istream_type&
20778 operator>>(__streambuf_type* __sb);
20779 # 250 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20780 streamsize
20781 gcount() const
20782 { return _M_gcount; }
20783 # 282 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20784 int_type
20785 get();
20786 # 296 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20787 __istream_type&
20788 get(char_type& __c);
20789 # 323 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20790 __istream_type&
20791 get(char_type* __s, streamsize __n, char_type __delim);
20792 # 334 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20793 __istream_type&
20794 get(char_type* __s, streamsize __n)
20795 { return this->get(__s, __n, this->widen('\n')); }
20796 # 357 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20797 __istream_type&
20798 get(__streambuf_type& __sb, char_type __delim);
20799 # 367 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20800 __istream_type&
20801 get(__streambuf_type& __sb)
20802 { return this->get(__sb, this->widen('\n')); }
20803 # 396 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20804 __istream_type&
20805 getline(char_type* __s, streamsize __n, char_type __delim);
20806 # 407 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20807 __istream_type&
20808 getline(char_type* __s, streamsize __n)
20809 { return this->getline(__s, __n, this->widen('\n')); }
20810 # 431 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20811 __istream_type&
20812 ignore();
20813
20814 __istream_type&
20815 ignore(streamsize __n);
20816
20817 __istream_type&
20818 ignore(streamsize __n, int_type __delim);
20819 # 448 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20820 int_type
20821 peek();
20822 # 466 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20823 __istream_type&
20824 read(char_type* __s, streamsize __n);
20825 # 485 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20826 streamsize
20827 readsome(char_type* __s, streamsize __n);
20828 # 502 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20829 __istream_type&
20830 putback(char_type __c);
20831 # 518 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20832 __istream_type&
20833 unget();
20834 # 536 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20835 int
20836 sync();
20837 # 551 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20838 pos_type
20839 tellg();
20840 # 566 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20841 __istream_type&
20842 seekg(pos_type);
20843 # 582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20844 __istream_type&
20845 seekg(off_type, ios_base::seekdir);
20846
20847
20848 protected:
20849 basic_istream()
20850 : _M_gcount(streamsize(0))
20851 { this->init(0); }
20852
20853 template<typename _ValueT>
20854 __istream_type&
20855 _M_extract(_ValueT& __v);
20856 };
20857
20858
20859 template<>
20860 basic_istream<char>&
20861 basic_istream<char>::
20862 getline(char_type* __s, streamsize __n, char_type __delim);
20863
20864 template<>
20865 basic_istream<char>&
20866 basic_istream<char>::
20867 ignore(streamsize __n);
20868
20869 template<>
20870 basic_istream<char>&
20871 basic_istream<char>::
20872 ignore(streamsize __n, int_type __delim);
20873
20874
20875 template<>
20876 basic_istream<wchar_t>&
20877 basic_istream<wchar_t>::
20878 getline(char_type* __s, streamsize __n, char_type __delim);
20879
20880 template<>
20881 basic_istream<wchar_t>&
20882 basic_istream<wchar_t>::
20883 ignore(streamsize __n);
20884
20885 template<>
20886 basic_istream<wchar_t>&
20887 basic_istream<wchar_t>::
20888 ignore(streamsize __n, int_type __delim);
20889 # 637 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20890 template<typename _CharT, typename _Traits>
20891 class basic_istream<_CharT, _Traits>::sentry
20892 {
20893
20894 bool _M_ok;
20895
20896 public:
20897
20898 typedef _Traits traits_type;
20899 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
20900 typedef basic_istream<_CharT, _Traits> __istream_type;
20901 typedef typename __istream_type::__ctype_type __ctype_type;
20902 typedef typename _Traits::int_type __int_type;
20903 # 673 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20904 explicit
20905 sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
20906 # 686 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20907 operator bool() const
20908 { return _M_ok; }
20909 };
20910 # 703 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20911 template<typename _CharT, typename _Traits>
20912 basic_istream<_CharT, _Traits>&
20913 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
20914
20915 template<class _Traits>
20916 inline basic_istream<char, _Traits>&
20917 operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
20918 { return (__in >> reinterpret_cast<char&>(__c)); }
20919
20920 template<class _Traits>
20921 inline basic_istream<char, _Traits>&
20922 operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
20923 { return (__in >> reinterpret_cast<char&>(__c)); }
20924 # 745 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20925 template<typename _CharT, typename _Traits>
20926 basic_istream<_CharT, _Traits>&
20927 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
20928
20929
20930 template<>
20931 basic_istream<char>&
20932 operator>>(basic_istream<char>& __in, char* __s);
20933
20934 template<class _Traits>
20935 inline basic_istream<char, _Traits>&
20936 operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
20937 { return (__in >> reinterpret_cast<char*>(__s)); }
20938
20939 template<class _Traits>
20940 inline basic_istream<char, _Traits>&
20941 operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
20942 { return (__in >> reinterpret_cast<char*>(__s)); }
20943 # 773 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20944 template<typename _CharT, typename _Traits>
20945 class basic_iostream
20946 : public basic_istream<_CharT, _Traits>,
20947 public basic_ostream<_CharT, _Traits>
20948 {
20949 public:
20950
20951
20952
20953 typedef _CharT char_type;
20954 typedef typename _Traits::int_type int_type;
20955 typedef typename _Traits::pos_type pos_type;
20956 typedef typename _Traits::off_type off_type;
20957 typedef _Traits traits_type;
20958
20959
20960 typedef basic_istream<_CharT, _Traits> __istream_type;
20961 typedef basic_ostream<_CharT, _Traits> __ostream_type;
20962
20963
20964
20965
20966
20967
20968
20969 explicit
20970 basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
20971 : __istream_type(__sb), __ostream_type(__sb) { }
20972
20973
20974
20975
20976 virtual
20977 ~basic_iostream() { }
20978
20979 protected:
20980 basic_iostream()
20981 : __istream_type(), __ostream_type() { }
20982 };
20983 # 834 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20984 template<typename _CharT, typename _Traits>
20985 basic_istream<_CharT, _Traits>&
20986 ws(basic_istream<_CharT, _Traits>& __is);
20987 # 856 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 3
20988
20989 }
20990
20991 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/istream.tcc" 1 3
20992 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/istream.tcc" 3
20993
20994 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/istream.tcc" 3
20995
20996
20997
20998 namespace std __attribute__ ((__visibility__ ("default")))
20999 {
21000
21001
21002 template<typename _CharT, typename _Traits>
21003 basic_istream<_CharT, _Traits>::sentry::
21004 sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
21005 {
21006 ios_base::iostate __err = ios_base::goodbit;
21007 if (__in.good())
21008 {
21009 if (__in.tie())
21010 __in.tie()->flush();
21011 if (!__noskip && bool(__in.flags() & ios_base::skipws))
21012 {
21013 const __int_type __eof = traits_type::eof();
21014 __streambuf_type* __sb = __in.rdbuf();
21015 __int_type __c = __sb->sgetc();
21016
21017 const __ctype_type& __ct = __check_facet(__in._M_ctype);
21018 while (!traits_type::eq_int_type(__c, __eof)
21019 && __ct.is(ctype_base::space,
21020 traits_type::to_char_type(__c)))
21021 __c = __sb->snextc();
21022
21023
21024
21025
21026 if (traits_type::eq_int_type(__c, __eof))
21027 __err |= ios_base::eofbit;
21028 }
21029 }
21030
21031 if (__in.good() && __err == ios_base::goodbit)
21032 _M_ok = true;
21033 else
21034 {
21035 __err |= ios_base::failbit;
21036 __in.setstate(__err);
21037 }
21038 }
21039
21040 template<typename _CharT, typename _Traits>
21041 template<typename _ValueT>
21042 basic_istream<_CharT, _Traits>&
21043 basic_istream<_CharT, _Traits>::
21044 _M_extract(_ValueT& __v)
21045 {
21046 sentry __cerb(*this, false);
21047 if (__cerb)
21048 {
21049 ios_base::iostate __err = ios_base::goodbit;
21050 try
21051 {
21052 const __num_get_type& __ng = __check_facet(this->_M_num_get);
21053 __ng.get(*this, 0, *this, __err, __v);
21054 }
21055 catch(__cxxabiv1::__forced_unwind&)
21056 {
21057 this->_M_setstate(ios_base::badbit);
21058 throw;
21059 }
21060 catch(...)
21061 { this->_M_setstate(ios_base::badbit); }
21062 if (__err)
21063 this->setstate(__err);
21064 }
21065 return *this;
21066 }
21067
21068 template<typename _CharT, typename _Traits>
21069 basic_istream<_CharT, _Traits>&
21070 basic_istream<_CharT, _Traits>::
21071 operator>>(short& __n)
21072 {
21073
21074
21075 sentry __cerb(*this, false);
21076 if (__cerb)
21077 {
21078 ios_base::iostate __err = ios_base::goodbit;
21079 try
21080 {
21081 long __l;
21082 const __num_get_type& __ng = __check_facet(this->_M_num_get);
21083 __ng.get(*this, 0, *this, __err, __l);
21084
21085
21086
21087 if (__l < __gnu_cxx::__numeric_traits<short>::__min)
21088 {
21089 __err |= ios_base::failbit;
21090 __n = __gnu_cxx::__numeric_traits<short>::__min;
21091 }
21092 else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
21093 {
21094 __err |= ios_base::failbit;
21095 __n = __gnu_cxx::__numeric_traits<short>::__max;
21096 }
21097 else
21098 __n = short(__l);
21099 }
21100 catch(__cxxabiv1::__forced_unwind&)
21101 {
21102 this->_M_setstate(ios_base::badbit);
21103 throw;
21104 }
21105 catch(...)
21106 { this->_M_setstate(ios_base::badbit); }
21107 if (__err)
21108 this->setstate(__err);
21109 }
21110 return *this;
21111 }
21112
21113 template<typename _CharT, typename _Traits>
21114 basic_istream<_CharT, _Traits>&
21115 basic_istream<_CharT, _Traits>::
21116 operator>>(int& __n)
21117 {
21118
21119
21120 sentry __cerb(*this, false);
21121 if (__cerb)
21122 {
21123 ios_base::iostate __err = ios_base::goodbit;
21124 try
21125 {
21126 long __l;
21127 const __num_get_type& __ng = __check_facet(this->_M_num_get);
21128 __ng.get(*this, 0, *this, __err, __l);
21129
21130
21131
21132 if (__l < __gnu_cxx::__numeric_traits<int>::__min)
21133 {
21134 __err |= ios_base::failbit;
21135 __n = __gnu_cxx::__numeric_traits<int>::__min;
21136 }
21137 else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
21138 {
21139 __err |= ios_base::failbit;
21140 __n = __gnu_cxx::__numeric_traits<int>::__max;
21141 }
21142 else
21143 __n = int(__l);
21144 }
21145 catch(__cxxabiv1::__forced_unwind&)
21146 {
21147 this->_M_setstate(ios_base::badbit);
21148 throw;
21149 }
21150 catch(...)
21151 { this->_M_setstate(ios_base::badbit); }
21152 if (__err)
21153 this->setstate(__err);
21154 }
21155 return *this;
21156 }
21157
21158 template<typename _CharT, typename _Traits>
21159 basic_istream<_CharT, _Traits>&
21160 basic_istream<_CharT, _Traits>::
21161 operator>>(__streambuf_type* __sbout)
21162 {
21163 ios_base::iostate __err = ios_base::goodbit;
21164 sentry __cerb(*this, false);
21165 if (__cerb && __sbout)
21166 {
21167 try
21168 {
21169 bool __ineof;
21170 if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
21171 __err |= ios_base::failbit;
21172 if (__ineof)
21173 __err |= ios_base::eofbit;
21174 }
21175 catch(__cxxabiv1::__forced_unwind&)
21176 {
21177 this->_M_setstate(ios_base::failbit);
21178 throw;
21179 }
21180 catch(...)
21181 { this->_M_setstate(ios_base::failbit); }
21182 }
21183 else if (!__sbout)
21184 __err |= ios_base::failbit;
21185 if (__err)
21186 this->setstate(__err);
21187 return *this;
21188 }
21189
21190 template<typename _CharT, typename _Traits>
21191 typename basic_istream<_CharT, _Traits>::int_type
21192 basic_istream<_CharT, _Traits>::
21193 get(void)
21194 {
21195 const int_type __eof = traits_type::eof();
21196 int_type __c = __eof;
21197 _M_gcount = 0;
21198 ios_base::iostate __err = ios_base::goodbit;
21199 sentry __cerb(*this, true);
21200 if (__cerb)
21201 {
21202 try
21203 {
21204 __c = this->rdbuf()->sbumpc();
21205
21206 if (!traits_type::eq_int_type(__c, __eof))
21207 _M_gcount = 1;
21208 else
21209 __err |= ios_base::eofbit;
21210 }
21211 catch(__cxxabiv1::__forced_unwind&)
21212 {
21213 this->_M_setstate(ios_base::badbit);
21214 throw;
21215 }
21216 catch(...)
21217 { this->_M_setstate(ios_base::badbit); }
21218 }
21219 if (!_M_gcount)
21220 __err |= ios_base::failbit;
21221 if (__err)
21222 this->setstate(__err);
21223 return __c;
21224 }
21225
21226 template<typename _CharT, typename _Traits>
21227 basic_istream<_CharT, _Traits>&
21228 basic_istream<_CharT, _Traits>::
21229 get(char_type& __c)
21230 {
21231 _M_gcount = 0;
21232 ios_base::iostate __err = ios_base::goodbit;
21233 sentry __cerb(*this, true);
21234 if (__cerb)
21235 {
21236 try
21237 {
21238 const int_type __cb = this->rdbuf()->sbumpc();
21239
21240 if (!traits_type::eq_int_type(__cb, traits_type::eof()))
21241 {
21242 _M_gcount = 1;
21243 __c = traits_type::to_char_type(__cb);
21244 }
21245 else
21246 __err |= ios_base::eofbit;
21247 }
21248 catch(__cxxabiv1::__forced_unwind&)
21249 {
21250 this->_M_setstate(ios_base::badbit);
21251 throw;
21252 }
21253 catch(...)
21254 { this->_M_setstate(ios_base::badbit); }
21255 }
21256 if (!_M_gcount)
21257 __err |= ios_base::failbit;
21258 if (__err)
21259 this->setstate(__err);
21260 return *this;
21261 }
21262
21263 template<typename _CharT, typename _Traits>
21264 basic_istream<_CharT, _Traits>&
21265 basic_istream<_CharT, _Traits>::
21266 get(char_type* __s, streamsize __n, char_type __delim)
21267 {
21268 _M_gcount = 0;
21269 ios_base::iostate __err = ios_base::goodbit;
21270 sentry __cerb(*this, true);
21271 if (__cerb)
21272 {
21273 try
21274 {
21275 const int_type __idelim = traits_type::to_int_type(__delim);
21276 const int_type __eof = traits_type::eof();
21277 __streambuf_type* __sb = this->rdbuf();
21278 int_type __c = __sb->sgetc();
21279
21280 while (_M_gcount + 1 < __n
21281 && !traits_type::eq_int_type(__c, __eof)
21282 && !traits_type::eq_int_type(__c, __idelim))
21283 {
21284 *__s++ = traits_type::to_char_type(__c);
21285 ++_M_gcount;
21286 __c = __sb->snextc();
21287 }
21288 if (traits_type::eq_int_type(__c, __eof))
21289 __err |= ios_base::eofbit;
21290 }
21291 catch(__cxxabiv1::__forced_unwind&)
21292 {
21293 this->_M_setstate(ios_base::badbit);
21294 throw;
21295 }
21296 catch(...)
21297 { this->_M_setstate(ios_base::badbit); }
21298 }
21299
21300
21301 if (__n > 0)
21302 *__s = char_type();
21303 if (!_M_gcount)
21304 __err |= ios_base::failbit;
21305 if (__err)
21306 this->setstate(__err);
21307 return *this;
21308 }
21309
21310 template<typename _CharT, typename _Traits>
21311 basic_istream<_CharT, _Traits>&
21312 basic_istream<_CharT, _Traits>::
21313 get(__streambuf_type& __sb, char_type __delim)
21314 {
21315 _M_gcount = 0;
21316 ios_base::iostate __err = ios_base::goodbit;
21317 sentry __cerb(*this, true);
21318 if (__cerb)
21319 {
21320 try
21321 {
21322 const int_type __idelim = traits_type::to_int_type(__delim);
21323 const int_type __eof = traits_type::eof();
21324 __streambuf_type* __this_sb = this->rdbuf();
21325 int_type __c = __this_sb->sgetc();
21326 char_type __c2 = traits_type::to_char_type(__c);
21327
21328 while (!traits_type::eq_int_type(__c, __eof)
21329 && !traits_type::eq_int_type(__c, __idelim)
21330 && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
21331 {
21332 ++_M_gcount;
21333 __c = __this_sb->snextc();
21334 __c2 = traits_type::to_char_type(__c);
21335 }
21336 if (traits_type::eq_int_type(__c, __eof))
21337 __err |= ios_base::eofbit;
21338 }
21339 catch(__cxxabiv1::__forced_unwind&)
21340 {
21341 this->_M_setstate(ios_base::badbit);
21342 throw;
21343 }
21344 catch(...)
21345 { this->_M_setstate(ios_base::badbit); }
21346 }
21347 if (!_M_gcount)
21348 __err |= ios_base::failbit;
21349 if (__err)
21350 this->setstate(__err);
21351 return *this;
21352 }
21353
21354 template<typename _CharT, typename _Traits>
21355 basic_istream<_CharT, _Traits>&
21356 basic_istream<_CharT, _Traits>::
21357 getline(char_type* __s, streamsize __n, char_type __delim)
21358 {
21359 _M_gcount = 0;
21360 ios_base::iostate __err = ios_base::goodbit;
21361 sentry __cerb(*this, true);
21362 if (__cerb)
21363 {
21364 try
21365 {
21366 const int_type __idelim = traits_type::to_int_type(__delim);
21367 const int_type __eof = traits_type::eof();
21368 __streambuf_type* __sb = this->rdbuf();
21369 int_type __c = __sb->sgetc();
21370
21371 while (_M_gcount + 1 < __n
21372 && !traits_type::eq_int_type(__c, __eof)
21373 && !traits_type::eq_int_type(__c, __idelim))
21374 {
21375 *__s++ = traits_type::to_char_type(__c);
21376 __c = __sb->snextc();
21377 ++_M_gcount;
21378 }
21379 if (traits_type::eq_int_type(__c, __eof))
21380 __err |= ios_base::eofbit;
21381 else
21382 {
21383 if (traits_type::eq_int_type(__c, __idelim))
21384 {
21385 __sb->sbumpc();
21386 ++_M_gcount;
21387 }
21388 else
21389 __err |= ios_base::failbit;
21390 }
21391 }
21392 catch(__cxxabiv1::__forced_unwind&)
21393 {
21394 this->_M_setstate(ios_base::badbit);
21395 throw;
21396 }
21397 catch(...)
21398 { this->_M_setstate(ios_base::badbit); }
21399 }
21400
21401
21402 if (__n > 0)
21403 *__s = char_type();
21404 if (!_M_gcount)
21405 __err |= ios_base::failbit;
21406 if (__err)
21407 this->setstate(__err);
21408 return *this;
21409 }
21410
21411
21412
21413
21414 template<typename _CharT, typename _Traits>
21415 basic_istream<_CharT, _Traits>&
21416 basic_istream<_CharT, _Traits>::
21417 ignore(void)
21418 {
21419 _M_gcount = 0;
21420 sentry __cerb(*this, true);
21421 if (__cerb)
21422 {
21423 ios_base::iostate __err = ios_base::goodbit;
21424 try
21425 {
21426 const int_type __eof = traits_type::eof();
21427 __streambuf_type* __sb = this->rdbuf();
21428
21429 if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
21430 __err |= ios_base::eofbit;
21431 else
21432 _M_gcount = 1;
21433 }
21434 catch(__cxxabiv1::__forced_unwind&)
21435 {
21436 this->_M_setstate(ios_base::badbit);
21437 throw;
21438 }
21439 catch(...)
21440 { this->_M_setstate(ios_base::badbit); }
21441 if (__err)
21442 this->setstate(__err);
21443 }
21444 return *this;
21445 }
21446
21447 template<typename _CharT, typename _Traits>
21448 basic_istream<_CharT, _Traits>&
21449 basic_istream<_CharT, _Traits>::
21450 ignore(streamsize __n)
21451 {
21452 _M_gcount = 0;
21453 sentry __cerb(*this, true);
21454 if (__cerb && __n > 0)
21455 {
21456 ios_base::iostate __err = ios_base::goodbit;
21457 try
21458 {
21459 const int_type __eof = traits_type::eof();
21460 __streambuf_type* __sb = this->rdbuf();
21461 int_type __c = __sb->sgetc();
21462 # 515 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/istream.tcc" 3
21463 bool __large_ignore = false;
21464 while (true)
21465 {
21466 while (_M_gcount < __n
21467 && !traits_type::eq_int_type(__c, __eof))
21468 {
21469 ++_M_gcount;
21470 __c = __sb->snextc();
21471 }
21472 if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
21473 && !traits_type::eq_int_type(__c, __eof))
21474 {
21475 _M_gcount =
21476 __gnu_cxx::__numeric_traits<streamsize>::__min;
21477 __large_ignore = true;
21478 }
21479 else
21480 break;
21481 }
21482
21483 if (__large_ignore)
21484 _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
21485
21486 if (traits_type::eq_int_type(__c, __eof))
21487 __err |= ios_base::eofbit;
21488 }
21489 catch(__cxxabiv1::__forced_unwind&)
21490 {
21491 this->_M_setstate(ios_base::badbit);
21492 throw;
21493 }
21494 catch(...)
21495 { this->_M_setstate(ios_base::badbit); }
21496 if (__err)
21497 this->setstate(__err);
21498 }
21499 return *this;
21500 }
21501
21502 template<typename _CharT, typename _Traits>
21503 basic_istream<_CharT, _Traits>&
21504 basic_istream<_CharT, _Traits>::
21505 ignore(streamsize __n, int_type __delim)
21506 {
21507 _M_gcount = 0;
21508 sentry __cerb(*this, true);
21509 if (__cerb && __n > 0)
21510 {
21511 ios_base::iostate __err = ios_base::goodbit;
21512 try
21513 {
21514 const int_type __eof = traits_type::eof();
21515 __streambuf_type* __sb = this->rdbuf();
21516 int_type __c = __sb->sgetc();
21517
21518
21519 bool __large_ignore = false;
21520 while (true)
21521 {
21522 while (_M_gcount < __n
21523 && !traits_type::eq_int_type(__c, __eof)
21524 && !traits_type::eq_int_type(__c, __delim))
21525 {
21526 ++_M_gcount;
21527 __c = __sb->snextc();
21528 }
21529 if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
21530 && !traits_type::eq_int_type(__c, __eof)
21531 && !traits_type::eq_int_type(__c, __delim))
21532 {
21533 _M_gcount =
21534 __gnu_cxx::__numeric_traits<streamsize>::__min;
21535 __large_ignore = true;
21536 }
21537 else
21538 break;
21539 }
21540
21541 if (__large_ignore)
21542 _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
21543
21544 if (traits_type::eq_int_type(__c, __eof))
21545 __err |= ios_base::eofbit;
21546 else if (traits_type::eq_int_type(__c, __delim))
21547 {
21548 if (_M_gcount
21549 < __gnu_cxx::__numeric_traits<streamsize>::__max)
21550 ++_M_gcount;
21551 __sb->sbumpc();
21552 }
21553 }
21554 catch(__cxxabiv1::__forced_unwind&)
21555 {
21556 this->_M_setstate(ios_base::badbit);
21557 throw;
21558 }
21559 catch(...)
21560 { this->_M_setstate(ios_base::badbit); }
21561 if (__err)
21562 this->setstate(__err);
21563 }
21564 return *this;
21565 }
21566
21567 template<typename _CharT, typename _Traits>
21568 typename basic_istream<_CharT, _Traits>::int_type
21569 basic_istream<_CharT, _Traits>::
21570 peek(void)
21571 {
21572 int_type __c = traits_type::eof();
21573 _M_gcount = 0;
21574 sentry __cerb(*this, true);
21575 if (__cerb)
21576 {
21577 ios_base::iostate __err = ios_base::goodbit;
21578 try
21579 {
21580 __c = this->rdbuf()->sgetc();
21581 if (traits_type::eq_int_type(__c, traits_type::eof()))
21582 __err |= ios_base::eofbit;
21583 }
21584 catch(__cxxabiv1::__forced_unwind&)
21585 {
21586 this->_M_setstate(ios_base::badbit);
21587 throw;
21588 }
21589 catch(...)
21590 { this->_M_setstate(ios_base::badbit); }
21591 if (__err)
21592 this->setstate(__err);
21593 }
21594 return __c;
21595 }
21596
21597 template<typename _CharT, typename _Traits>
21598 basic_istream<_CharT, _Traits>&
21599 basic_istream<_CharT, _Traits>::
21600 read(char_type* __s, streamsize __n)
21601 {
21602 _M_gcount = 0;
21603 sentry __cerb(*this, true);
21604 if (__cerb)
21605 {
21606 ios_base::iostate __err = ios_base::goodbit;
21607 try
21608 {
21609 _M_gcount = this->rdbuf()->sgetn(__s, __n);
21610 if (_M_gcount != __n)
21611 __err |= (ios_base::eofbit | ios_base::failbit);
21612 }
21613 catch(__cxxabiv1::__forced_unwind&)
21614 {
21615 this->_M_setstate(ios_base::badbit);
21616 throw;
21617 }
21618 catch(...)
21619 { this->_M_setstate(ios_base::badbit); }
21620 if (__err)
21621 this->setstate(__err);
21622 }
21623 return *this;
21624 }
21625
21626 template<typename _CharT, typename _Traits>
21627 streamsize
21628 basic_istream<_CharT, _Traits>::
21629 readsome(char_type* __s, streamsize __n)
21630 {
21631 _M_gcount = 0;
21632 sentry __cerb(*this, true);
21633 if (__cerb)
21634 {
21635 ios_base::iostate __err = ios_base::goodbit;
21636 try
21637 {
21638
21639 const streamsize __num = this->rdbuf()->in_avail();
21640 if (__num > 0)
21641 _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
21642 else if (__num == -1)
21643 __err |= ios_base::eofbit;
21644 }
21645 catch(__cxxabiv1::__forced_unwind&)
21646 {
21647 this->_M_setstate(ios_base::badbit);
21648 throw;
21649 }
21650 catch(...)
21651 { this->_M_setstate(ios_base::badbit); }
21652 if (__err)
21653 this->setstate(__err);
21654 }
21655 return _M_gcount;
21656 }
21657
21658 template<typename _CharT, typename _Traits>
21659 basic_istream<_CharT, _Traits>&
21660 basic_istream<_CharT, _Traits>::
21661 putback(char_type __c)
21662 {
21663
21664
21665 _M_gcount = 0;
21666
21667 this->clear(this->rdstate() & ~ios_base::eofbit);
21668 sentry __cerb(*this, true);
21669 if (__cerb)
21670 {
21671 ios_base::iostate __err = ios_base::goodbit;
21672 try
21673 {
21674 const int_type __eof = traits_type::eof();
21675 __streambuf_type* __sb = this->rdbuf();
21676 if (!__sb
21677 || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
21678 __err |= ios_base::badbit;
21679 }
21680 catch(__cxxabiv1::__forced_unwind&)
21681 {
21682 this->_M_setstate(ios_base::badbit);
21683 throw;
21684 }
21685 catch(...)
21686 { this->_M_setstate(ios_base::badbit); }
21687 if (__err)
21688 this->setstate(__err);
21689 }
21690 return *this;
21691 }
21692
21693 template<typename _CharT, typename _Traits>
21694 basic_istream<_CharT, _Traits>&
21695 basic_istream<_CharT, _Traits>::
21696 unget(void)
21697 {
21698
21699
21700 _M_gcount = 0;
21701
21702 this->clear(this->rdstate() & ~ios_base::eofbit);
21703 sentry __cerb(*this, true);
21704 if (__cerb)
21705 {
21706 ios_base::iostate __err = ios_base::goodbit;
21707 try
21708 {
21709 const int_type __eof = traits_type::eof();
21710 __streambuf_type* __sb = this->rdbuf();
21711 if (!__sb
21712 || traits_type::eq_int_type(__sb->sungetc(), __eof))
21713 __err |= ios_base::badbit;
21714 }
21715 catch(__cxxabiv1::__forced_unwind&)
21716 {
21717 this->_M_setstate(ios_base::badbit);
21718 throw;
21719 }
21720 catch(...)
21721 { this->_M_setstate(ios_base::badbit); }
21722 if (__err)
21723 this->setstate(__err);
21724 }
21725 return *this;
21726 }
21727
21728 template<typename _CharT, typename _Traits>
21729 int
21730 basic_istream<_CharT, _Traits>::
21731 sync(void)
21732 {
21733
21734
21735 int __ret = -1;
21736 sentry __cerb(*this, true);
21737 if (__cerb)
21738 {
21739 ios_base::iostate __err = ios_base::goodbit;
21740 try
21741 {
21742 __streambuf_type* __sb = this->rdbuf();
21743 if (__sb)
21744 {
21745 if (__sb->pubsync() == -1)
21746 __err |= ios_base::badbit;
21747 else
21748 __ret = 0;
21749 }
21750 }
21751 catch(__cxxabiv1::__forced_unwind&)
21752 {
21753 this->_M_setstate(ios_base::badbit);
21754 throw;
21755 }
21756 catch(...)
21757 { this->_M_setstate(ios_base::badbit); }
21758 if (__err)
21759 this->setstate(__err);
21760 }
21761 return __ret;
21762 }
21763
21764 template<typename _CharT, typename _Traits>
21765 typename basic_istream<_CharT, _Traits>::pos_type
21766 basic_istream<_CharT, _Traits>::
21767 tellg(void)
21768 {
21769
21770
21771 pos_type __ret = pos_type(-1);
21772 sentry __cerb(*this, true);
21773 if (__cerb)
21774 {
21775 try
21776 {
21777 if (!this->fail())
21778 __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
21779 ios_base::in);
21780 }
21781 catch(__cxxabiv1::__forced_unwind&)
21782 {
21783 this->_M_setstate(ios_base::badbit);
21784 throw;
21785 }
21786 catch(...)
21787 { this->_M_setstate(ios_base::badbit); }
21788 }
21789 return __ret;
21790 }
21791
21792 template<typename _CharT, typename _Traits>
21793 basic_istream<_CharT, _Traits>&
21794 basic_istream<_CharT, _Traits>::
21795 seekg(pos_type __pos)
21796 {
21797
21798
21799
21800 this->clear(this->rdstate() & ~ios_base::eofbit);
21801 sentry __cerb(*this, true);
21802 if (__cerb)
21803 {
21804 ios_base::iostate __err = ios_base::goodbit;
21805 try
21806 {
21807 if (!this->fail())
21808 {
21809
21810 const pos_type __p = this->rdbuf()->pubseekpos(__pos,
21811 ios_base::in);
21812
21813
21814 if (__p == pos_type(off_type(-1)))
21815 __err |= ios_base::failbit;
21816 }
21817 }
21818 catch(__cxxabiv1::__forced_unwind&)
21819 {
21820 this->_M_setstate(ios_base::badbit);
21821 throw;
21822 }
21823 catch(...)
21824 { this->_M_setstate(ios_base::badbit); }
21825 if (__err)
21826 this->setstate(__err);
21827 }
21828 return *this;
21829 }
21830
21831 template<typename _CharT, typename _Traits>
21832 basic_istream<_CharT, _Traits>&
21833 basic_istream<_CharT, _Traits>::
21834 seekg(off_type __off, ios_base::seekdir __dir)
21835 {
21836
21837
21838
21839 this->clear(this->rdstate() & ~ios_base::eofbit);
21840 sentry __cerb(*this, true);
21841 if (__cerb)
21842 {
21843 ios_base::iostate __err = ios_base::goodbit;
21844 try
21845 {
21846 if (!this->fail())
21847 {
21848
21849 const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
21850 ios_base::in);
21851
21852
21853 if (__p == pos_type(off_type(-1)))
21854 __err |= ios_base::failbit;
21855 }
21856 }
21857 catch(__cxxabiv1::__forced_unwind&)
21858 {
21859 this->_M_setstate(ios_base::badbit);
21860 throw;
21861 }
21862 catch(...)
21863 { this->_M_setstate(ios_base::badbit); }
21864 if (__err)
21865 this->setstate(__err);
21866 }
21867 return *this;
21868 }
21869
21870
21871 template<typename _CharT, typename _Traits>
21872 basic_istream<_CharT, _Traits>&
21873 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
21874 {
21875 typedef basic_istream<_CharT, _Traits> __istream_type;
21876 typedef typename __istream_type::int_type __int_type;
21877
21878 typename __istream_type::sentry __cerb(__in, false);
21879 if (__cerb)
21880 {
21881 ios_base::iostate __err = ios_base::goodbit;
21882 try
21883 {
21884 const __int_type __cb = __in.rdbuf()->sbumpc();
21885 if (!_Traits::eq_int_type(__cb, _Traits::eof()))
21886 __c = _Traits::to_char_type(__cb);
21887 else
21888 __err |= (ios_base::eofbit | ios_base::failbit);
21889 }
21890 catch(__cxxabiv1::__forced_unwind&)
21891 {
21892 __in._M_setstate(ios_base::badbit);
21893 throw;
21894 }
21895 catch(...)
21896 { __in._M_setstate(ios_base::badbit); }
21897 if (__err)
21898 __in.setstate(__err);
21899 }
21900 return __in;
21901 }
21902
21903 template<typename _CharT, typename _Traits>
21904 basic_istream<_CharT, _Traits>&
21905 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
21906 {
21907 typedef basic_istream<_CharT, _Traits> __istream_type;
21908 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
21909 typedef typename _Traits::int_type int_type;
21910 typedef _CharT char_type;
21911 typedef ctype<_CharT> __ctype_type;
21912
21913 streamsize __extracted = 0;
21914 ios_base::iostate __err = ios_base::goodbit;
21915 typename __istream_type::sentry __cerb(__in, false);
21916 if (__cerb)
21917 {
21918 try
21919 {
21920
21921 streamsize __num = __in.width();
21922 if (__num <= 0)
21923 __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
21924
21925 const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
21926
21927 const int_type __eof = _Traits::eof();
21928 __streambuf_type* __sb = __in.rdbuf();
21929 int_type __c = __sb->sgetc();
21930
21931 while (__extracted < __num - 1
21932 && !_Traits::eq_int_type(__c, __eof)
21933 && !__ct.is(ctype_base::space,
21934 _Traits::to_char_type(__c)))
21935 {
21936 *__s++ = _Traits::to_char_type(__c);
21937 ++__extracted;
21938 __c = __sb->snextc();
21939 }
21940 if (_Traits::eq_int_type(__c, __eof))
21941 __err |= ios_base::eofbit;
21942
21943
21944
21945 *__s = char_type();
21946 __in.width(0);
21947 }
21948 catch(__cxxabiv1::__forced_unwind&)
21949 {
21950 __in._M_setstate(ios_base::badbit);
21951 throw;
21952 }
21953 catch(...)
21954 { __in._M_setstate(ios_base::badbit); }
21955 }
21956 if (!__extracted)
21957 __err |= ios_base::failbit;
21958 if (__err)
21959 __in.setstate(__err);
21960 return __in;
21961 }
21962
21963
21964 template<typename _CharT, typename _Traits>
21965 basic_istream<_CharT, _Traits>&
21966 ws(basic_istream<_CharT, _Traits>& __in)
21967 {
21968 typedef basic_istream<_CharT, _Traits> __istream_type;
21969 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
21970 typedef typename __istream_type::int_type __int_type;
21971 typedef ctype<_CharT> __ctype_type;
21972
21973 const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
21974 const __int_type __eof = _Traits::eof();
21975 __streambuf_type* __sb = __in.rdbuf();
21976 __int_type __c = __sb->sgetc();
21977
21978 while (!_Traits::eq_int_type(__c, __eof)
21979 && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
21980 __c = __sb->snextc();
21981
21982 if (_Traits::eq_int_type(__c, __eof))
21983 __in.setstate(ios_base::eofbit);
21984 return __in;
21985 }
21986
21987
21988
21989
21990 extern template class basic_istream<char>;
21991 extern template istream& ws(istream&);
21992 extern template istream& operator>>(istream&, char&);
21993 extern template istream& operator>>(istream&, char*);
21994 extern template istream& operator>>(istream&, unsigned char&);
21995 extern template istream& operator>>(istream&, signed char&);
21996 extern template istream& operator>>(istream&, unsigned char*);
21997 extern template istream& operator>>(istream&, signed char*);
21998
21999 extern template istream& istream::_M_extract(unsigned short&);
22000 extern template istream& istream::_M_extract(unsigned int&);
22001 extern template istream& istream::_M_extract(long&);
22002 extern template istream& istream::_M_extract(unsigned long&);
22003 extern template istream& istream::_M_extract(bool&);
22004
22005 extern template istream& istream::_M_extract(long long&);
22006 extern template istream& istream::_M_extract(unsigned long long&);
22007
22008 extern template istream& istream::_M_extract(float&);
22009 extern template istream& istream::_M_extract(double&);
22010 extern template istream& istream::_M_extract(long double&);
22011 extern template istream& istream::_M_extract(void*&);
22012
22013 extern template class basic_iostream<char>;
22014
22015
22016 extern template class basic_istream<wchar_t>;
22017 extern template wistream& ws(wistream&);
22018 extern template wistream& operator>>(wistream&, wchar_t&);
22019 extern template wistream& operator>>(wistream&, wchar_t*);
22020
22021 extern template wistream& wistream::_M_extract(unsigned short&);
22022 extern template wistream& wistream::_M_extract(unsigned int&);
22023 extern template wistream& wistream::_M_extract(long&);
22024 extern template wistream& wistream::_M_extract(unsigned long&);
22025 extern template wistream& wistream::_M_extract(bool&);
22026
22027 extern template wistream& wistream::_M_extract(long long&);
22028 extern template wistream& wistream::_M_extract(unsigned long long&);
22029
22030 extern template wistream& wistream::_M_extract(float&);
22031 extern template wistream& wistream::_M_extract(double&);
22032 extern template wistream& wistream::_M_extract(long double&);
22033 extern template wistream& wistream::_M_extract(void*&);
22034
22035 extern template class basic_iostream<wchar_t>;
22036
22037
22038
22039
22040 }
22041 # 860 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/istream" 2 3
22042 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iterator" 2 3
22043 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stream_iterator.h" 1 3
22044 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stream_iterator.h" 3
22045
22046 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stream_iterator.h" 3
22047
22048
22049
22050 namespace std __attribute__ ((__visibility__ ("default")))
22051 {
22052
22053
22054
22055
22056
22057
22058
22059
22060 template<typename _Tp, typename _CharT = char,
22061 typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
22062 class istream_iterator
22063 : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
22064 {
22065 public:
22066 typedef _CharT char_type;
22067 typedef _Traits traits_type;
22068 typedef basic_istream<_CharT, _Traits> istream_type;
22069
22070 private:
22071 istream_type* _M_stream;
22072 _Tp _M_value;
22073 bool _M_ok;
22074
22075 public:
22076
22077 istream_iterator()
22078 : _M_stream(0), _M_value(), _M_ok(false) {}
22079
22080
22081 istream_iterator(istream_type& __s)
22082 : _M_stream(&__s)
22083 { _M_read(); }
22084
22085 istream_iterator(const istream_iterator& __obj)
22086 : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
22087 _M_ok(__obj._M_ok)
22088 { }
22089
22090 const _Tp&
22091 operator*() const
22092 {
22093
22094
22095 ;
22096 return _M_value;
22097 }
22098
22099 const _Tp*
22100 operator->() const { return &(operator*()); }
22101
22102 istream_iterator&
22103 operator++()
22104 {
22105
22106
22107 ;
22108 _M_read();
22109 return *this;
22110 }
22111
22112 istream_iterator
22113 operator++(int)
22114 {
22115
22116
22117 ;
22118 istream_iterator __tmp = *this;
22119 _M_read();
22120 return __tmp;
22121 }
22122
22123 bool
22124 _M_equal(const istream_iterator& __x) const
22125 { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
22126
22127 private:
22128 void
22129 _M_read()
22130 {
22131 _M_ok = (_M_stream && *_M_stream) ? true : false;
22132 if (_M_ok)
22133 {
22134 *_M_stream >> _M_value;
22135 _M_ok = *_M_stream ? true : false;
22136 }
22137 }
22138 };
22139
22140
22141 template<typename _Tp, typename _CharT, typename _Traits, typename _Dist>
22142 inline bool
22143 operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
22144 const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
22145 { return __x._M_equal(__y); }
22146
22147
22148 template <class _Tp, class _CharT, class _Traits, class _Dist>
22149 inline bool
22150 operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
22151 const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
22152 { return !__x._M_equal(__y); }
22153 # 152 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stream_iterator.h" 3
22154 template<typename _Tp, typename _CharT = char,
22155 typename _Traits = char_traits<_CharT> >
22156 class ostream_iterator
22157 : public iterator<output_iterator_tag, void, void, void, void>
22158 {
22159 public:
22160
22161
22162 typedef _CharT char_type;
22163 typedef _Traits traits_type;
22164 typedef basic_ostream<_CharT, _Traits> ostream_type;
22165
22166
22167 private:
22168 ostream_type* _M_stream;
22169 const _CharT* _M_string;
22170
22171 public:
22172
22173 ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
22174 # 183 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stream_iterator.h" 3
22175 ostream_iterator(ostream_type& __s, const _CharT* __c)
22176 : _M_stream(&__s), _M_string(__c) { }
22177
22178
22179 ostream_iterator(const ostream_iterator& __obj)
22180 : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
22181
22182
22183
22184 ostream_iterator&
22185 operator=(const _Tp& __value)
22186 {
22187
22188
22189 ;
22190 *_M_stream << __value;
22191 if (_M_string) *_M_stream << _M_string;
22192 return *this;
22193 }
22194
22195 ostream_iterator&
22196 operator*()
22197 { return *this; }
22198
22199 ostream_iterator&
22200 operator++()
22201 { return *this; }
22202
22203 ostream_iterator&
22204 operator++(int)
22205 { return *this; }
22206 };
22207
22208
22209
22210
22211 }
22212 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/iterator" 2 3
22213 # 55 "../boost/detail/iterator.hpp" 2
22214 # 77 "../boost/detail/iterator.hpp"
22215 namespace boost { namespace detail {
22216
22217
22218 template <class Iterator>
22219 struct iterator_traits
22220 : std::iterator_traits<Iterator>
22221 {};
22222 using std::distance;
22223
22224 }}
22225 # 9 "../boost/iterator/iterator_traits.hpp" 2
22226
22227
22228 namespace boost {
22229 # 27 "../boost/iterator/iterator_traits.hpp"
22230 template <class Iterator>
22231 struct iterator_value
22232 {
22233 typedef typename boost::detail::iterator_traits<Iterator>::value_type type;
22234 };
22235
22236 template <class Iterator>
22237 struct iterator_reference
22238 {
22239 typedef typename boost::detail::iterator_traits<Iterator>::reference type;
22240 };
22241
22242
22243 template <class Iterator>
22244 struct iterator_pointer
22245 {
22246 typedef typename boost::detail::iterator_traits<Iterator>::pointer type;
22247 };
22248
22249 template <class Iterator>
22250 struct iterator_difference
22251 {
22252 typedef typename boost::detail::iterator_traits<Iterator>::difference_type type;
22253 };
22254
22255 template <class Iterator>
22256 struct iterator_category
22257 {
22258 typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;
22259 };
22260 # 90 "../boost/iterator/iterator_traits.hpp"
22261 }
22262 # 19 "quickbook/src/values.hpp" 2
22263 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/stdexcept" 1 3
22264 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/stdexcept" 3
22265
22266 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/stdexcept" 3
22267
22268
22269
22270
22271 namespace std __attribute__ ((__visibility__ ("default")))
22272 {
22273
22274 # 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/stdexcept" 3
22275 class logic_error : public exception
22276 {
22277 string _M_msg;
22278
22279 public:
22280
22281 explicit
22282 logic_error(const string& __arg);
22283
22284 virtual ~logic_error() throw();
22285
22286
22287
22288 virtual const char*
22289 what() const throw();
22290 };
22291
22292
22293
22294 class domain_error : public logic_error
22295 {
22296 public:
22297 explicit domain_error(const string& __arg);
22298 virtual ~domain_error() throw();
22299 };
22300
22301
22302 class invalid_argument : public logic_error
22303 {
22304 public:
22305 explicit invalid_argument(const string& __arg);
22306 virtual ~invalid_argument() throw();
22307 };
22308
22309
22310
22311 class length_error : public logic_error
22312 {
22313 public:
22314 explicit length_error(const string& __arg);
22315 virtual ~length_error() throw();
22316 };
22317
22318
22319
22320 class out_of_range : public logic_error
22321 {
22322 public:
22323 explicit out_of_range(const string& __arg);
22324 virtual ~out_of_range() throw();
22325 };
22326
22327
22328
22329
22330
22331
22332 class runtime_error : public exception
22333 {
22334 string _M_msg;
22335
22336 public:
22337
22338 explicit
22339 runtime_error(const string& __arg);
22340
22341 virtual ~runtime_error() throw();
22342
22343
22344
22345 virtual const char*
22346 what() const throw();
22347 };
22348
22349
22350 class range_error : public runtime_error
22351 {
22352 public:
22353 explicit range_error(const string& __arg);
22354 virtual ~range_error() throw();
22355 };
22356
22357
22358 class overflow_error : public runtime_error
22359 {
22360 public:
22361 explicit overflow_error(const string& __arg);
22362 virtual ~overflow_error() throw();
22363 };
22364
22365
22366 class underflow_error : public runtime_error
22367 {
22368 public:
22369 explicit underflow_error(const string& __arg);
22370 virtual ~underflow_error() throw();
22371 };
22372
22373
22374
22375
22376 }
22377 # 20 "quickbook/src/values.hpp" 2
22378 # 1 "quickbook/src/fwd.hpp" 1
22379 # 14 "quickbook/src/fwd.hpp"
22380 # 1 "quickbook/src/iterator.hpp" 1
22381 # 12 "quickbook/src/iterator.hpp"
22382 # 1 "../boost/operators.hpp" 1
22383 # 86 "../boost/operators.hpp"
22384 # 1 "../boost/iterator.hpp" 1
22385 # 18 "../boost/iterator.hpp"
22386 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
22387 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
22388
22389 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
22390
22391
22392 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
22393 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
22394 # 19 "../boost/iterator.hpp" 2
22395
22396
22397 namespace boost
22398 {
22399 # 39 "../boost/iterator.hpp"
22400 namespace detail {
22401 template <class Category, class T, class Distance, class Pointer, class Reference>
22402
22403 struct iterator_base : std::iterator<Category, T, Distance, Pointer, Reference> {};
22404 # 51 "../boost/iterator.hpp"
22405 }
22406
22407 template <class Category, class T, class Distance = std::ptrdiff_t,
22408 class Pointer = T*, class Reference = T&>
22409 struct iterator : boost::detail::iterator_base<Category, T, Distance, Pointer, Reference> {};
22410
22411 }
22412 # 87 "../boost/operators.hpp" 2
22413 # 97 "../boost/operators.hpp"
22414 namespace boost {
22415 namespace detail {
22416
22417 template <typename T> class empty_base {
22418
22419
22420
22421
22422
22423
22424 };
22425
22426 }
22427 }
22428 # 120 "../boost/operators.hpp"
22429 namespace boost
22430 {
22431
22432
22433
22434
22435
22436
22437
22438 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22439 struct less_than_comparable2 : B
22440 {
22441 friend bool operator<=(const T& x, const U& y) { return !static_cast<bool>(x > y); }
22442 friend bool operator>=(const T& x, const U& y) { return !static_cast<bool>(x < y); }
22443 friend bool operator>(const U& x, const T& y) { return y < x; }
22444 friend bool operator<(const U& x, const T& y) { return y > x; }
22445 friend bool operator<=(const U& x, const T& y) { return !static_cast<bool>(y < x); }
22446 friend bool operator>=(const U& x, const T& y) { return !static_cast<bool>(y > x); }
22447 };
22448
22449 template <class T, class B = ::boost::detail::empty_base<T> >
22450 struct less_than_comparable1 : B
22451 {
22452 friend bool operator>(const T& x, const T& y) { return y < x; }
22453 friend bool operator<=(const T& x, const T& y) { return !static_cast<bool>(y < x); }
22454 friend bool operator>=(const T& x, const T& y) { return !static_cast<bool>(x < y); }
22455 };
22456
22457 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22458 struct equality_comparable2 : B
22459 {
22460 friend bool operator==(const U& y, const T& x) { return x == y; }
22461 friend bool operator!=(const U& y, const T& x) { return !static_cast<bool>(x == y); }
22462 friend bool operator!=(const T& y, const U& x) { return !static_cast<bool>(y == x); }
22463 };
22464
22465 template <class T, class B = ::boost::detail::empty_base<T> >
22466 struct equality_comparable1 : B
22467 {
22468 friend bool operator!=(const T& x, const T& y) { return !static_cast<bool>(x == y); }
22469 };
22470 # 256 "../boost/operators.hpp"
22471 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct multipliable2 : B { friend T operator *( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv *= rhs; return nrv; } friend T operator *( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv *= lhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct multipliable1 : B { friend T operator *( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv *= rhs; return nrv; } };
22472 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct addable2 : B { friend T operator +( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv += rhs; return nrv; } friend T operator +( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv += lhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct addable1 : B { friend T operator +( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv += rhs; return nrv; } };
22473 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct subtractable2 : B { friend T operator -( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; template <class T, class U, class B = ::boost::detail::empty_base<T> > struct subtractable2_left : B { friend T operator -( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct subtractable1 : B { friend T operator -( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } };
22474 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct dividable2 : B { friend T operator /( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; template <class T, class U, class B = ::boost::detail::empty_base<T> > struct dividable2_left : B { friend T operator /( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct dividable1 : B { friend T operator /( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } };
22475 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct modable2 : B { friend T operator %( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; template <class T, class U, class B = ::boost::detail::empty_base<T> > struct modable2_left : B { friend T operator %( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct modable1 : B { friend T operator %( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } };
22476 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct xorable2 : B { friend T operator ^( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv ^= rhs; return nrv; } friend T operator ^( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv ^= lhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct xorable1 : B { friend T operator ^( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv ^= rhs; return nrv; } };
22477 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct andable2 : B { friend T operator &( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv &= rhs; return nrv; } friend T operator &( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv &= lhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct andable1 : B { friend T operator &( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv &= rhs; return nrv; } };
22478 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct orable2 : B { friend T operator |( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv |= rhs; return nrv; } friend T operator |( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv |= lhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct orable1 : B { friend T operator |( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv |= rhs; return nrv; } };
22479
22480
22481
22482
22483
22484
22485
22486 template <class T, class B = ::boost::detail::empty_base<T> >
22487 struct incrementable : B
22488 {
22489 friend T operator++(T& x, int)
22490 {
22491 incrementable_type nrv(x);
22492 ++x;
22493 return nrv;
22494 }
22495 private:
22496 typedef T incrementable_type;
22497 };
22498
22499 template <class T, class B = ::boost::detail::empty_base<T> >
22500 struct decrementable : B
22501 {
22502 friend T operator--(T& x, int)
22503 {
22504 decrementable_type nrv(x);
22505 --x;
22506 return nrv;
22507 }
22508 private:
22509 typedef T decrementable_type;
22510 };
22511
22512
22513
22514 template <class T, class P, class B = ::boost::detail::empty_base<T> >
22515 struct dereferenceable : B
22516 {
22517 P operator->() const
22518 {
22519 return &*static_cast<const T&>(*this);
22520 }
22521 };
22522
22523 template <class T, class I, class R, class B = ::boost::detail::empty_base<T> >
22524 struct indexable : B
22525 {
22526 R operator[](I n) const
22527 {
22528 return *(static_cast<const T&>(*this) + n);
22529 }
22530 };
22531 # 354 "../boost/operators.hpp"
22532 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct left_shiftable2 : B { friend T operator <<( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv <<= rhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct left_shiftable1 : B { friend T operator <<( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv <<= rhs; return nrv; } };
22533 template <class T, class U, class B = ::boost::detail::empty_base<T> > struct right_shiftable2 : B { friend T operator >>( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv >>= rhs; return nrv; } }; template <class T, class B = ::boost::detail::empty_base<T> > struct right_shiftable1 : B { friend T operator >>( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv >>= rhs; return nrv; } };
22534
22535
22536
22537 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22538 struct equivalent2 : B
22539 {
22540 friend bool operator==(const T& x, const U& y)
22541 {
22542 return !static_cast<bool>(x < y) && !static_cast<bool>(x > y);
22543 }
22544 };
22545
22546 template <class T, class B = ::boost::detail::empty_base<T> >
22547 struct equivalent1 : B
22548 {
22549 friend bool operator==(const T&x, const T&y)
22550 {
22551 return !static_cast<bool>(x < y) && !static_cast<bool>(y < x);
22552 }
22553 };
22554
22555 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22556 struct partially_ordered2 : B
22557 {
22558 friend bool operator<=(const T& x, const U& y)
22559 { return static_cast<bool>(x < y) || static_cast<bool>(x == y); }
22560 friend bool operator>=(const T& x, const U& y)
22561 { return static_cast<bool>(x > y) || static_cast<bool>(x == y); }
22562 friend bool operator>(const U& x, const T& y)
22563 { return y < x; }
22564 friend bool operator<(const U& x, const T& y)
22565 { return y > x; }
22566 friend bool operator<=(const U& x, const T& y)
22567 { return static_cast<bool>(y > x) || static_cast<bool>(y == x); }
22568 friend bool operator>=(const U& x, const T& y)
22569 { return static_cast<bool>(y < x) || static_cast<bool>(y == x); }
22570 };
22571
22572 template <class T, class B = ::boost::detail::empty_base<T> >
22573 struct partially_ordered1 : B
22574 {
22575 friend bool operator>(const T& x, const T& y)
22576 { return y < x; }
22577 friend bool operator<=(const T& x, const T& y)
22578 { return static_cast<bool>(x < y) || static_cast<bool>(x == y); }
22579 friend bool operator>=(const T& x, const T& y)
22580 { return static_cast<bool>(y < x) || static_cast<bool>(x == y); }
22581 };
22582
22583
22584
22585 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22586 struct totally_ordered2
22587 : less_than_comparable2<T, U
22588 , equality_comparable2<T, U, B
22589 > > {};
22590
22591 template <class T, class B = ::boost::detail::empty_base<T> >
22592 struct totally_ordered1
22593 : less_than_comparable1<T
22594 , equality_comparable1<T, B
22595 > > {};
22596
22597 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22598 struct additive2
22599 : addable2<T, U
22600 , subtractable2<T, U, B
22601 > > {};
22602
22603 template <class T, class B = ::boost::detail::empty_base<T> >
22604 struct additive1
22605 : addable1<T
22606 , subtractable1<T, B
22607 > > {};
22608
22609 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22610 struct multiplicative2
22611 : multipliable2<T, U
22612 , dividable2<T, U, B
22613 > > {};
22614
22615 template <class T, class B = ::boost::detail::empty_base<T> >
22616 struct multiplicative1
22617 : multipliable1<T
22618 , dividable1<T, B
22619 > > {};
22620
22621 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22622 struct integer_multiplicative2
22623 : multiplicative2<T, U
22624 , modable2<T, U, B
22625 > > {};
22626
22627 template <class T, class B = ::boost::detail::empty_base<T> >
22628 struct integer_multiplicative1
22629 : multiplicative1<T
22630 , modable1<T, B
22631 > > {};
22632
22633 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22634 struct arithmetic2
22635 : additive2<T, U
22636 , multiplicative2<T, U, B
22637 > > {};
22638
22639 template <class T, class B = ::boost::detail::empty_base<T> >
22640 struct arithmetic1
22641 : additive1<T
22642 , multiplicative1<T, B
22643 > > {};
22644
22645 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22646 struct integer_arithmetic2
22647 : additive2<T, U
22648 , integer_multiplicative2<T, U, B
22649 > > {};
22650
22651 template <class T, class B = ::boost::detail::empty_base<T> >
22652 struct integer_arithmetic1
22653 : additive1<T
22654 , integer_multiplicative1<T, B
22655 > > {};
22656
22657 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22658 struct bitwise2
22659 : xorable2<T, U
22660 , andable2<T, U
22661 , orable2<T, U, B
22662 > > > {};
22663
22664 template <class T, class B = ::boost::detail::empty_base<T> >
22665 struct bitwise1
22666 : xorable1<T
22667 , andable1<T
22668 , orable1<T, B
22669 > > > {};
22670
22671 template <class T, class B = ::boost::detail::empty_base<T> >
22672 struct unit_steppable
22673 : incrementable<T
22674 , decrementable<T, B
22675 > > {};
22676
22677 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22678 struct shiftable2
22679 : left_shiftable2<T, U
22680 , right_shiftable2<T, U, B
22681 > > {};
22682
22683 template <class T, class B = ::boost::detail::empty_base<T> >
22684 struct shiftable1
22685 : left_shiftable1<T
22686 , right_shiftable1<T, B
22687 > > {};
22688
22689 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22690 struct ring_operators2
22691 : additive2<T, U
22692 , subtractable2_left<T, U
22693 , multipliable2<T, U, B
22694 > > > {};
22695
22696 template <class T, class B = ::boost::detail::empty_base<T> >
22697 struct ring_operators1
22698 : additive1<T
22699 , multipliable1<T, B
22700 > > {};
22701
22702 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22703 struct ordered_ring_operators2
22704 : ring_operators2<T, U
22705 , totally_ordered2<T, U, B
22706 > > {};
22707
22708 template <class T, class B = ::boost::detail::empty_base<T> >
22709 struct ordered_ring_operators1
22710 : ring_operators1<T
22711 , totally_ordered1<T, B
22712 > > {};
22713
22714 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22715 struct field_operators2
22716 : ring_operators2<T, U
22717 , dividable2<T, U
22718 , dividable2_left<T, U, B
22719 > > > {};
22720
22721 template <class T, class B = ::boost::detail::empty_base<T> >
22722 struct field_operators1
22723 : ring_operators1<T
22724 , dividable1<T, B
22725 > > {};
22726
22727 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22728 struct ordered_field_operators2
22729 : field_operators2<T, U
22730 , totally_ordered2<T, U, B
22731 > > {};
22732
22733 template <class T, class B = ::boost::detail::empty_base<T> >
22734 struct ordered_field_operators1
22735 : field_operators1<T
22736 , totally_ordered1<T, B
22737 > > {};
22738
22739 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22740 struct euclidian_ring_operators2
22741 : ring_operators2<T, U
22742 , dividable2<T, U
22743 , dividable2_left<T, U
22744 , modable2<T, U
22745 , modable2_left<T, U, B
22746 > > > > > {};
22747
22748 template <class T, class B = ::boost::detail::empty_base<T> >
22749 struct euclidian_ring_operators1
22750 : ring_operators1<T
22751 , dividable1<T
22752 , modable1<T, B
22753 > > > {};
22754
22755 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22756 struct ordered_euclidian_ring_operators2
22757 : totally_ordered2<T, U
22758 , euclidian_ring_operators2<T, U, B
22759 > > {};
22760
22761 template <class T, class B = ::boost::detail::empty_base<T> >
22762 struct ordered_euclidian_ring_operators1
22763 : totally_ordered1<T
22764 , euclidian_ring_operators1<T, B
22765 > > {};
22766
22767 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22768 struct euclidean_ring_operators2
22769 : ring_operators2<T, U
22770 , dividable2<T, U
22771 , dividable2_left<T, U
22772 , modable2<T, U
22773 , modable2_left<T, U, B
22774 > > > > > {};
22775
22776 template <class T, class B = ::boost::detail::empty_base<T> >
22777 struct euclidean_ring_operators1
22778 : ring_operators1<T
22779 , dividable1<T
22780 , modable1<T, B
22781 > > > {};
22782
22783 template <class T, class U, class B = ::boost::detail::empty_base<T> >
22784 struct ordered_euclidean_ring_operators2
22785 : totally_ordered2<T, U
22786 , euclidean_ring_operators2<T, U, B
22787 > > {};
22788
22789 template <class T, class B = ::boost::detail::empty_base<T> >
22790 struct ordered_euclidean_ring_operators1
22791 : totally_ordered1<T
22792 , euclidean_ring_operators1<T, B
22793 > > {};
22794
22795 template <class T, class P, class B = ::boost::detail::empty_base<T> >
22796 struct input_iteratable
22797 : equality_comparable1<T
22798 , incrementable<T
22799 , dereferenceable<T, P, B
22800 > > > {};
22801
22802 template <class T, class B = ::boost::detail::empty_base<T> >
22803 struct output_iteratable
22804 : incrementable<T, B
22805 > {};
22806
22807 template <class T, class P, class B = ::boost::detail::empty_base<T> >
22808 struct forward_iteratable
22809 : input_iteratable<T, P, B
22810 > {};
22811
22812 template <class T, class P, class B = ::boost::detail::empty_base<T> >
22813 struct bidirectional_iteratable
22814 : forward_iteratable<T, P
22815 , decrementable<T, B
22816 > > {};
22817
22818
22819
22820
22821
22822 template <class T, class P, class D, class R, class B = ::boost::detail::empty_base<T> >
22823 struct random_access_iteratable
22824 : bidirectional_iteratable<T, P
22825 , less_than_comparable1<T
22826 , additive2<T, D
22827 , indexable<T, D, R, B
22828 > > > > {};
22829
22830
22831 }
22832 # 720 "../boost/operators.hpp"
22833 namespace boost {
22834
22835
22836 namespace detail {
22837 struct true_t {};
22838 struct false_t {};
22839 }
22840
22841
22842
22843
22844 template<class T> struct is_chained_base {
22845 typedef ::boost::detail::false_t value;
22846 };
22847
22848 }
22849 # 831 "../boost/operators.hpp"
22850 namespace boost {
22851
22852 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct less_than_comparable : less_than_comparable2<T, U, B> {}; template<class T, class U, class B> struct less_than_comparable<T, U, B, ::boost::detail::true_t> : less_than_comparable1<T, U> {}; template <class T, class B> struct less_than_comparable<T, T, B, ::boost::detail::false_t> : less_than_comparable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::less_than_comparable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::less_than_comparable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::less_than_comparable1<T, B> > { typedef ::boost::detail::true_t value; };
22853 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct equality_comparable : equality_comparable2<T, U, B> {}; template<class T, class U, class B> struct equality_comparable<T, U, B, ::boost::detail::true_t> : equality_comparable1<T, U> {}; template <class T, class B> struct equality_comparable<T, T, B, ::boost::detail::false_t> : equality_comparable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::equality_comparable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::equality_comparable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::equality_comparable1<T, B> > { typedef ::boost::detail::true_t value; };
22854 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct multipliable : multipliable2<T, U, B> {}; template<class T, class U, class B> struct multipliable<T, U, B, ::boost::detail::true_t> : multipliable1<T, U> {}; template <class T, class B> struct multipliable<T, T, B, ::boost::detail::false_t> : multipliable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::multipliable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::multipliable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::multipliable1<T, B> > { typedef ::boost::detail::true_t value; };
22855 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct addable : addable2<T, U, B> {}; template<class T, class U, class B> struct addable<T, U, B, ::boost::detail::true_t> : addable1<T, U> {}; template <class T, class B> struct addable<T, T, B, ::boost::detail::false_t> : addable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::addable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::addable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::addable1<T, B> > { typedef ::boost::detail::true_t value; };
22856 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct subtractable : subtractable2<T, U, B> {}; template<class T, class U, class B> struct subtractable<T, U, B, ::boost::detail::true_t> : subtractable1<T, U> {}; template <class T, class B> struct subtractable<T, T, B, ::boost::detail::false_t> : subtractable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::subtractable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::subtractable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::subtractable1<T, B> > { typedef ::boost::detail::true_t value; };
22857 template<class T, class U, class B> struct is_chained_base< ::boost::subtractable2_left<T, U, B> > { typedef ::boost::detail::true_t value; };
22858 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct dividable : dividable2<T, U, B> {}; template<class T, class U, class B> struct dividable<T, U, B, ::boost::detail::true_t> : dividable1<T, U> {}; template <class T, class B> struct dividable<T, T, B, ::boost::detail::false_t> : dividable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::dividable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::dividable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::dividable1<T, B> > { typedef ::boost::detail::true_t value; };
22859 template<class T, class U, class B> struct is_chained_base< ::boost::dividable2_left<T, U, B> > { typedef ::boost::detail::true_t value; };
22860 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct modable : modable2<T, U, B> {}; template<class T, class U, class B> struct modable<T, U, B, ::boost::detail::true_t> : modable1<T, U> {}; template <class T, class B> struct modable<T, T, B, ::boost::detail::false_t> : modable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::modable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::modable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::modable1<T, B> > { typedef ::boost::detail::true_t value; };
22861 template<class T, class U, class B> struct is_chained_base< ::boost::modable2_left<T, U, B> > { typedef ::boost::detail::true_t value; };
22862 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct xorable : xorable2<T, U, B> {}; template<class T, class U, class B> struct xorable<T, U, B, ::boost::detail::true_t> : xorable1<T, U> {}; template <class T, class B> struct xorable<T, T, B, ::boost::detail::false_t> : xorable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::xorable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::xorable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::xorable1<T, B> > { typedef ::boost::detail::true_t value; };
22863 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct andable : andable2<T, U, B> {}; template<class T, class U, class B> struct andable<T, U, B, ::boost::detail::true_t> : andable1<T, U> {}; template <class T, class B> struct andable<T, T, B, ::boost::detail::false_t> : andable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::andable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::andable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::andable1<T, B> > { typedef ::boost::detail::true_t value; };
22864 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct orable : orable2<T, U, B> {}; template<class T, class U, class B> struct orable<T, U, B, ::boost::detail::true_t> : orable1<T, U> {}; template <class T, class B> struct orable<T, T, B, ::boost::detail::false_t> : orable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::orable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::orable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::orable1<T, B> > { typedef ::boost::detail::true_t value; };
22865
22866 template<class T, class B> struct is_chained_base< ::boost::incrementable<T, B> > { typedef ::boost::detail::true_t value; };
22867 template<class T, class B> struct is_chained_base< ::boost::decrementable<T, B> > { typedef ::boost::detail::true_t value; };
22868
22869 template<class T, class U, class B> struct is_chained_base< ::boost::dereferenceable<T, U, B> > { typedef ::boost::detail::true_t value; };
22870 template<class T, class U, class V, class B> struct is_chained_base< ::boost::indexable<T, U, V, B> > { typedef ::boost::detail::true_t value; };
22871
22872 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct left_shiftable : left_shiftable2<T, U, B> {}; template<class T, class U, class B> struct left_shiftable<T, U, B, ::boost::detail::true_t> : left_shiftable1<T, U> {}; template <class T, class B> struct left_shiftable<T, T, B, ::boost::detail::false_t> : left_shiftable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::left_shiftable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::left_shiftable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::left_shiftable1<T, B> > { typedef ::boost::detail::true_t value; };
22873 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct right_shiftable : right_shiftable2<T, U, B> {}; template<class T, class U, class B> struct right_shiftable<T, U, B, ::boost::detail::true_t> : right_shiftable1<T, U> {}; template <class T, class B> struct right_shiftable<T, T, B, ::boost::detail::false_t> : right_shiftable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::right_shiftable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::right_shiftable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::right_shiftable1<T, B> > { typedef ::boost::detail::true_t value; };
22874 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct equivalent : equivalent2<T, U, B> {}; template<class T, class U, class B> struct equivalent<T, U, B, ::boost::detail::true_t> : equivalent1<T, U> {}; template <class T, class B> struct equivalent<T, T, B, ::boost::detail::false_t> : equivalent1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::equivalent<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::equivalent2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::equivalent1<T, B> > { typedef ::boost::detail::true_t value; };
22875 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct partially_ordered : partially_ordered2<T, U, B> {}; template<class T, class U, class B> struct partially_ordered<T, U, B, ::boost::detail::true_t> : partially_ordered1<T, U> {}; template <class T, class B> struct partially_ordered<T, T, B, ::boost::detail::false_t> : partially_ordered1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::partially_ordered<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::partially_ordered2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::partially_ordered1<T, B> > { typedef ::boost::detail::true_t value; };
22876
22877 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct totally_ordered : totally_ordered2<T, U, B> {}; template<class T, class U, class B> struct totally_ordered<T, U, B, ::boost::detail::true_t> : totally_ordered1<T, U> {}; template <class T, class B> struct totally_ordered<T, T, B, ::boost::detail::false_t> : totally_ordered1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::totally_ordered<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::totally_ordered2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::totally_ordered1<T, B> > { typedef ::boost::detail::true_t value; };
22878 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct additive : additive2<T, U, B> {}; template<class T, class U, class B> struct additive<T, U, B, ::boost::detail::true_t> : additive1<T, U> {}; template <class T, class B> struct additive<T, T, B, ::boost::detail::false_t> : additive1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::additive<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::additive2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::additive1<T, B> > { typedef ::boost::detail::true_t value; };
22879 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct multiplicative : multiplicative2<T, U, B> {}; template<class T, class U, class B> struct multiplicative<T, U, B, ::boost::detail::true_t> : multiplicative1<T, U> {}; template <class T, class B> struct multiplicative<T, T, B, ::boost::detail::false_t> : multiplicative1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::multiplicative<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::multiplicative2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::multiplicative1<T, B> > { typedef ::boost::detail::true_t value; };
22880 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct integer_multiplicative : integer_multiplicative2<T, U, B> {}; template<class T, class U, class B> struct integer_multiplicative<T, U, B, ::boost::detail::true_t> : integer_multiplicative1<T, U> {}; template <class T, class B> struct integer_multiplicative<T, T, B, ::boost::detail::false_t> : integer_multiplicative1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::integer_multiplicative<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::integer_multiplicative2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::integer_multiplicative1<T, B> > { typedef ::boost::detail::true_t value; };
22881 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct arithmetic : arithmetic2<T, U, B> {}; template<class T, class U, class B> struct arithmetic<T, U, B, ::boost::detail::true_t> : arithmetic1<T, U> {}; template <class T, class B> struct arithmetic<T, T, B, ::boost::detail::false_t> : arithmetic1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::arithmetic<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::arithmetic2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::arithmetic1<T, B> > { typedef ::boost::detail::true_t value; };
22882 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct integer_arithmetic : integer_arithmetic2<T, U, B> {}; template<class T, class U, class B> struct integer_arithmetic<T, U, B, ::boost::detail::true_t> : integer_arithmetic1<T, U> {}; template <class T, class B> struct integer_arithmetic<T, T, B, ::boost::detail::false_t> : integer_arithmetic1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::integer_arithmetic<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::integer_arithmetic2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::integer_arithmetic1<T, B> > { typedef ::boost::detail::true_t value; };
22883 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct bitwise : bitwise2<T, U, B> {}; template<class T, class U, class B> struct bitwise<T, U, B, ::boost::detail::true_t> : bitwise1<T, U> {}; template <class T, class B> struct bitwise<T, T, B, ::boost::detail::false_t> : bitwise1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::bitwise<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::bitwise2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::bitwise1<T, B> > { typedef ::boost::detail::true_t value; };
22884 template<class T, class B> struct is_chained_base< ::boost::unit_steppable<T, B> > { typedef ::boost::detail::true_t value; };
22885 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct shiftable : shiftable2<T, U, B> {}; template<class T, class U, class B> struct shiftable<T, U, B, ::boost::detail::true_t> : shiftable1<T, U> {}; template <class T, class B> struct shiftable<T, T, B, ::boost::detail::false_t> : shiftable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::shiftable<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::shiftable2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::shiftable1<T, B> > { typedef ::boost::detail::true_t value; };
22886 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ring_operators : ring_operators2<T, U, B> {}; template<class T, class U, class B> struct ring_operators<T, U, B, ::boost::detail::true_t> : ring_operators1<T, U> {}; template <class T, class B> struct ring_operators<T, T, B, ::boost::detail::false_t> : ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::ring_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::ring_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::ring_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22887 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_ring_operators : ordered_ring_operators2<T, U, B> {}; template<class T, class U, class B> struct ordered_ring_operators<T, U, B, ::boost::detail::true_t> : ordered_ring_operators1<T, U> {}; template <class T, class B> struct ordered_ring_operators<T, T, B, ::boost::detail::false_t> : ordered_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::ordered_ring_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::ordered_ring_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::ordered_ring_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22888 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct field_operators : field_operators2<T, U, B> {}; template<class T, class U, class B> struct field_operators<T, U, B, ::boost::detail::true_t> : field_operators1<T, U> {}; template <class T, class B> struct field_operators<T, T, B, ::boost::detail::false_t> : field_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::field_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::field_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::field_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22889 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_field_operators : ordered_field_operators2<T, U, B> {}; template<class T, class U, class B> struct ordered_field_operators<T, U, B, ::boost::detail::true_t> : ordered_field_operators1<T, U> {}; template <class T, class B> struct ordered_field_operators<T, T, B, ::boost::detail::false_t> : ordered_field_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::ordered_field_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::ordered_field_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::ordered_field_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22890 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct euclidian_ring_operators : euclidian_ring_operators2<T, U, B> {}; template<class T, class U, class B> struct euclidian_ring_operators<T, U, B, ::boost::detail::true_t> : euclidian_ring_operators1<T, U> {}; template <class T, class B> struct euclidian_ring_operators<T, T, B, ::boost::detail::false_t> : euclidian_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::euclidian_ring_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::euclidian_ring_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::euclidian_ring_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22891 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_euclidian_ring_operators : ordered_euclidian_ring_operators2<T, U, B> {}; template<class T, class U, class B> struct ordered_euclidian_ring_operators<T, U, B, ::boost::detail::true_t> : ordered_euclidian_ring_operators1<T, U> {}; template <class T, class B> struct ordered_euclidian_ring_operators<T, T, B, ::boost::detail::false_t> : ordered_euclidian_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::ordered_euclidian_ring_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::ordered_euclidian_ring_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::ordered_euclidian_ring_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22892 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct euclidean_ring_operators : euclidean_ring_operators2<T, U, B> {}; template<class T, class U, class B> struct euclidean_ring_operators<T, U, B, ::boost::detail::true_t> : euclidean_ring_operators1<T, U> {}; template <class T, class B> struct euclidean_ring_operators<T, T, B, ::boost::detail::false_t> : euclidean_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::euclidean_ring_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::euclidean_ring_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::euclidean_ring_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22893 template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_euclidean_ring_operators : ordered_euclidean_ring_operators2<T, U, B> {}; template<class T, class U, class B> struct ordered_euclidean_ring_operators<T, U, B, ::boost::detail::true_t> : ordered_euclidean_ring_operators1<T, U> {}; template <class T, class B> struct ordered_euclidean_ring_operators<T, T, B, ::boost::detail::false_t> : ordered_euclidean_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ::boost::ordered_euclidean_ring_operators<T, U, B, O> > { typedef ::boost::detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ::boost::ordered_euclidean_ring_operators2<T, U, B> > { typedef ::boost::detail::true_t value; }; template<class T, class B> struct is_chained_base< ::boost::ordered_euclidean_ring_operators1<T, B> > { typedef ::boost::detail::true_t value; };
22894 template<class T, class U, class B> struct is_chained_base< ::boost::input_iteratable<T, U, B> > { typedef ::boost::detail::true_t value; };
22895 template<class T, class B> struct is_chained_base< ::boost::output_iteratable<T, B> > { typedef ::boost::detail::true_t value; };
22896 template<class T, class U, class B> struct is_chained_base< ::boost::forward_iteratable<T, U, B> > { typedef ::boost::detail::true_t value; };
22897 template<class T, class U, class B> struct is_chained_base< ::boost::bidirectional_iteratable<T, U, B> > { typedef ::boost::detail::true_t value; };
22898 template<class T, class U, class V, class W, class B> struct is_chained_base< ::boost::random_access_iteratable<T, U, V, W, B> > { typedef ::boost::detail::true_t value; };
22899 # 893 "../boost/operators.hpp"
22900 template <class T, class U>
22901 struct operators2
22902 : totally_ordered2<T,U
22903 , integer_arithmetic2<T,U
22904 , bitwise2<T,U
22905 > > > {};
22906
22907
22908 template <class T, class U = T>
22909 struct operators : operators2<T, U> {};
22910
22911 template <class T> struct operators<T, T>
22912
22913
22914
22915 : totally_ordered<T
22916 , integer_arithmetic<T
22917 , bitwise<T
22918 , unit_steppable<T
22919 > > > > {};
22920
22921
22922
22923
22924 template <class T,
22925 class V,
22926 class D = std::ptrdiff_t,
22927 class P = V const *,
22928 class R = V const &>
22929 struct input_iterator_helper
22930 : input_iteratable<T, P
22931 , boost::iterator<std::input_iterator_tag, V, D, P, R
22932 > > {};
22933
22934 template<class T>
22935 struct output_iterator_helper
22936 : output_iteratable<T
22937 , boost::iterator<std::output_iterator_tag, void, void, void, void
22938 > >
22939 {
22940 T& operator*() { return static_cast<T&>(*this); }
22941 T& operator++() { return static_cast<T&>(*this); }
22942 };
22943
22944 template <class T,
22945 class V,
22946 class D = std::ptrdiff_t,
22947 class P = V*,
22948 class R = V&>
22949 struct forward_iterator_helper
22950 : forward_iteratable<T, P
22951 , boost::iterator<std::forward_iterator_tag, V, D, P, R
22952 > > {};
22953
22954 template <class T,
22955 class V,
22956 class D = std::ptrdiff_t,
22957 class P = V*,
22958 class R = V&>
22959 struct bidirectional_iterator_helper
22960 : bidirectional_iteratable<T, P
22961 , boost::iterator<std::bidirectional_iterator_tag, V, D, P, R
22962 > > {};
22963
22964 template <class T,
22965 class V,
22966 class D = std::ptrdiff_t,
22967 class P = V*,
22968 class R = V&>
22969 struct random_access_iterator_helper
22970 : random_access_iteratable<T, P, D, R
22971 , boost::iterator<std::random_access_iterator_tag, V, D, P, R
22972 > >
22973 {
22974 friend D requires_difference_operator(const T& x, const T& y) {
22975 return x - y;
22976 }
22977 };
22978
22979 }
22980 # 13 "quickbook/src/iterator.hpp" 2
22981
22982 # 1 "../boost/range/iterator_range.hpp" 1
22983 # 13 "../boost/range/iterator_range.hpp"
22984 # 1 "../boost/range/iterator_range_core.hpp" 1
22985 # 21 "../boost/range/iterator_range_core.hpp"
22986 # 1 "../boost/assert.hpp" 1
22987 # 50 "../boost/assert.hpp"
22988 # 1 "/usr/include/assert.h" 1 3 4
22989 # 51 "../boost/assert.hpp" 2
22990 # 22 "../boost/range/iterator_range_core.hpp" 2
22991
22992 # 1 "../boost/iterator/iterator_facade.hpp" 1
22993 # 11 "../boost/iterator/iterator_facade.hpp"
22994 # 1 "../boost/iterator/interoperable.hpp" 1
22995 # 10 "../boost/iterator/interoperable.hpp"
22996 # 1 "../boost/mpl/bool.hpp" 1
22997 # 17 "../boost/mpl/bool.hpp"
22998 # 1 "../boost/mpl/bool_fwd.hpp" 1
22999 # 17 "../boost/mpl/bool_fwd.hpp"
23000 # 1 "../boost/mpl/aux_/adl_barrier.hpp" 1
23001 # 17 "../boost/mpl/aux_/adl_barrier.hpp"
23002 # 1 "../boost/mpl/aux_/config/adl.hpp" 1
23003 # 17 "../boost/mpl/aux_/config/adl.hpp"
23004 # 1 "../boost/mpl/aux_/config/msvc.hpp" 1
23005 # 18 "../boost/mpl/aux_/config/adl.hpp" 2
23006 # 1 "../boost/mpl/aux_/config/intel.hpp" 1
23007 # 19 "../boost/mpl/aux_/config/adl.hpp" 2
23008 # 1 "../boost/mpl/aux_/config/gcc.hpp" 1
23009 # 20 "../boost/mpl/aux_/config/adl.hpp" 2
23010 # 1 "../boost/mpl/aux_/config/workaround.hpp" 1
23011 # 21 "../boost/mpl/aux_/config/adl.hpp" 2
23012 # 18 "../boost/mpl/aux_/adl_barrier.hpp" 2
23013 # 33 "../boost/mpl/aux_/adl_barrier.hpp"
23014 namespace mpl_ { namespace aux {} }
23015 namespace boost { namespace mpl { using namespace mpl_;
23016 namespace aux { using namespace mpl_::aux; }
23017 }}
23018 # 18 "../boost/mpl/bool_fwd.hpp" 2
23019
23020 namespace mpl_ {
23021
23022 template< bool C_ > struct bool_;
23023
23024
23025 typedef bool_<true> true_;
23026 typedef bool_<false> false_;
23027
23028 }
23029
23030 namespace boost { namespace mpl { using ::mpl_::bool_; } }
23031 namespace boost { namespace mpl { using ::mpl_::true_; } }
23032 namespace boost { namespace mpl { using ::mpl_::false_; } }
23033 # 18 "../boost/mpl/bool.hpp" 2
23034 # 1 "../boost/mpl/integral_c_tag.hpp" 1
23035 # 19 "../boost/mpl/integral_c_tag.hpp"
23036 # 1 "../boost/mpl/aux_/config/static_constant.hpp" 1
23037 # 20 "../boost/mpl/integral_c_tag.hpp" 2
23038
23039 namespace mpl_ {
23040 struct integral_c_tag { static const int value = 0; };
23041 }
23042 namespace boost { namespace mpl { using ::mpl_::integral_c_tag; } }
23043 # 19 "../boost/mpl/bool.hpp" 2
23044
23045
23046 namespace mpl_ {
23047
23048 template< bool C_ > struct bool_
23049 {
23050 static const bool value = C_;
23051 typedef integral_c_tag tag;
23052 typedef bool_ type;
23053 typedef bool value_type;
23054 operator bool() const { return this->value; }
23055 };
23056
23057
23058 template< bool C_ >
23059 bool const bool_<C_>::value;
23060
23061
23062 }
23063 # 11 "../boost/iterator/interoperable.hpp" 2
23064 # 1 "../boost/mpl/or.hpp" 1
23065 # 17 "../boost/mpl/or.hpp"
23066 # 1 "../boost/mpl/aux_/config/use_preprocessed.hpp" 1
23067 # 18 "../boost/mpl/or.hpp" 2
23068
23069
23070
23071
23072
23073 # 1 "../boost/mpl/aux_/nested_type_wknd.hpp" 1
23074 # 25 "../boost/mpl/aux_/nested_type_wknd.hpp"
23075 namespace boost { namespace mpl { namespace aux {
23076 template< typename T > struct nested_type_wknd
23077 : T::type
23078 {
23079 };
23080 }}}
23081 # 24 "../boost/mpl/or.hpp" 2
23082 # 1 "../boost/mpl/aux_/na_spec.hpp" 1
23083 # 18 "../boost/mpl/aux_/na_spec.hpp"
23084 # 1 "../boost/mpl/lambda_fwd.hpp" 1
23085 # 17 "../boost/mpl/lambda_fwd.hpp"
23086 # 1 "../boost/mpl/void_fwd.hpp" 1
23087 # 19 "../boost/mpl/void_fwd.hpp"
23088 namespace mpl_ {
23089
23090 struct void_;
23091
23092 }
23093 namespace boost { namespace mpl { using ::mpl_::void_; } }
23094 # 18 "../boost/mpl/lambda_fwd.hpp" 2
23095 # 1 "../boost/mpl/aux_/na.hpp" 1
23096 # 18 "../boost/mpl/aux_/na.hpp"
23097 # 1 "../boost/mpl/aux_/na_fwd.hpp" 1
23098 # 19 "../boost/mpl/aux_/na_fwd.hpp"
23099 namespace mpl_ {
23100
23101
23102 struct na
23103 {
23104 typedef na type;
23105 enum { value = 0 };
23106 };
23107
23108 }
23109 namespace boost { namespace mpl { using ::mpl_::na; } }
23110 # 19 "../boost/mpl/aux_/na.hpp" 2
23111
23112 # 1 "../boost/mpl/aux_/config/ctps.hpp" 1
23113 # 21 "../boost/mpl/aux_/na.hpp" 2
23114
23115 namespace boost { namespace mpl {
23116
23117 template< typename T >
23118 struct is_na
23119 : false_
23120 {
23121
23122
23123
23124 };
23125
23126 template<>
23127 struct is_na<na>
23128 : true_
23129 {
23130
23131
23132
23133 };
23134
23135 template< typename T >
23136 struct is_not_na
23137 : true_
23138 {
23139
23140
23141
23142 };
23143
23144 template<>
23145 struct is_not_na<na>
23146 : false_
23147 {
23148
23149
23150
23151 };
23152
23153
23154 template< typename T, typename U > struct if_na
23155 {
23156 typedef T type;
23157 };
23158
23159 template< typename U > struct if_na<na,U>
23160 {
23161 typedef U type;
23162 };
23163 # 93 "../boost/mpl/aux_/na.hpp"
23164 }}
23165 # 19 "../boost/mpl/lambda_fwd.hpp" 2
23166 # 1 "../boost/mpl/aux_/config/lambda.hpp" 1
23167 # 17 "../boost/mpl/aux_/config/lambda.hpp"
23168 # 1 "../boost/mpl/aux_/config/ttp.hpp" 1
23169 # 18 "../boost/mpl/aux_/config/lambda.hpp" 2
23170 # 20 "../boost/mpl/lambda_fwd.hpp" 2
23171
23172
23173
23174 # 1 "../boost/mpl/int.hpp" 1
23175 # 17 "../boost/mpl/int.hpp"
23176 # 1 "../boost/mpl/int_fwd.hpp" 1
23177 # 18 "../boost/mpl/int_fwd.hpp"
23178 # 1 "../boost/mpl/aux_/nttp_decl.hpp" 1
23179 # 17 "../boost/mpl/aux_/nttp_decl.hpp"
23180 # 1 "../boost/mpl/aux_/config/nttp.hpp" 1
23181 # 18 "../boost/mpl/aux_/nttp_decl.hpp" 2
23182 # 19 "../boost/mpl/int_fwd.hpp" 2
23183
23184 namespace mpl_ {
23185
23186 template< int N > struct int_;
23187
23188 }
23189 namespace boost { namespace mpl { using ::mpl_::int_; } }
23190 # 18 "../boost/mpl/int.hpp" 2
23191
23192
23193 # 1 "../boost/mpl/aux_/integral_wrapper.hpp" 1
23194 # 17 "../boost/mpl/aux_/integral_wrapper.hpp"
23195 # 1 "../boost/mpl/aux_/static_cast.hpp" 1
23196 # 18 "../boost/mpl/aux_/integral_wrapper.hpp" 2
23197
23198
23199
23200
23201 # 1 "../boost/preprocessor/cat.hpp" 1
23202 # 17 "../boost/preprocessor/cat.hpp"
23203 # 1 "../boost/preprocessor/config/config.hpp" 1
23204 # 18 "../boost/preprocessor/cat.hpp" 2
23205 # 23 "../boost/mpl/aux_/integral_wrapper.hpp" 2
23206 # 40 "../boost/mpl/aux_/integral_wrapper.hpp"
23207 namespace mpl_ {
23208
23209 template< int N >
23210 struct int_
23211 {
23212 static const int value = N;
23213
23214
23215
23216
23217
23218 typedef int_ type;
23219
23220 typedef int value_type;
23221 typedef integral_c_tag tag;
23222 # 72 "../boost/mpl/aux_/integral_wrapper.hpp"
23223 typedef mpl_::int_< static_cast<int>((value + 1)) > next;
23224 typedef mpl_::int_< static_cast<int>((value - 1)) > prior;
23225
23226
23227
23228
23229
23230
23231 operator int() const { return static_cast<int>(this->value); }
23232 };
23233
23234
23235 template< int N >
23236 int const mpl_::int_< N >::value;
23237
23238
23239 }
23240 # 21 "../boost/mpl/int.hpp" 2
23241 # 24 "../boost/mpl/lambda_fwd.hpp" 2
23242 # 1 "../boost/mpl/aux_/lambda_arity_param.hpp" 1
23243 # 25 "../boost/mpl/lambda_fwd.hpp" 2
23244 # 1 "../boost/mpl/aux_/template_arity_fwd.hpp" 1
23245 # 17 "../boost/mpl/aux_/template_arity_fwd.hpp"
23246 namespace boost { namespace mpl { namespace aux {
23247
23248 template< typename F > struct template_arity;
23249
23250 }}}
23251 # 26 "../boost/mpl/lambda_fwd.hpp" 2
23252
23253 namespace boost { namespace mpl {
23254
23255 template<
23256 typename T = na
23257 , typename Tag = void_
23258 , typename Arity = int_< aux::template_arity<T>::value >
23259
23260
23261 >
23262 struct lambda;
23263
23264 }}
23265 # 19 "../boost/mpl/aux_/na_spec.hpp" 2
23266
23267
23268
23269 # 1 "../boost/mpl/aux_/arity.hpp" 1
23270 # 17 "../boost/mpl/aux_/arity.hpp"
23271 # 1 "../boost/mpl/aux_/config/dtp.hpp" 1
23272 # 18 "../boost/mpl/aux_/arity.hpp" 2
23273 # 23 "../boost/mpl/aux_/na_spec.hpp" 2
23274
23275
23276
23277 # 1 "../boost/mpl/aux_/preprocessor/params.hpp" 1
23278 # 17 "../boost/mpl/aux_/preprocessor/params.hpp"
23279 # 1 "../boost/mpl/aux_/config/preprocessor.hpp" 1
23280 # 18 "../boost/mpl/aux_/preprocessor/params.hpp" 2
23281 # 45 "../boost/mpl/aux_/preprocessor/params.hpp"
23282 # 1 "../boost/preprocessor/comma_if.hpp" 1
23283 # 15 "../boost/preprocessor/comma_if.hpp"
23284 # 1 "../boost/preprocessor/punctuation/comma_if.hpp" 1
23285 # 18 "../boost/preprocessor/punctuation/comma_if.hpp"
23286 # 1 "../boost/preprocessor/control/if.hpp" 1
23287 # 18 "../boost/preprocessor/control/if.hpp"
23288 # 1 "../boost/preprocessor/control/iif.hpp" 1
23289 # 19 "../boost/preprocessor/control/if.hpp" 2
23290 # 1 "../boost/preprocessor/logical/bool.hpp" 1
23291 # 20 "../boost/preprocessor/control/if.hpp" 2
23292 # 19 "../boost/preprocessor/punctuation/comma_if.hpp" 2
23293 # 1 "../boost/preprocessor/facilities/empty.hpp" 1
23294 # 20 "../boost/preprocessor/punctuation/comma_if.hpp" 2
23295 # 1 "../boost/preprocessor/punctuation/comma.hpp" 1
23296 # 21 "../boost/preprocessor/punctuation/comma_if.hpp" 2
23297 # 16 "../boost/preprocessor/comma_if.hpp" 2
23298 # 46 "../boost/mpl/aux_/preprocessor/params.hpp" 2
23299 # 1 "../boost/preprocessor/repeat.hpp" 1
23300 # 15 "../boost/preprocessor/repeat.hpp"
23301 # 1 "../boost/preprocessor/repetition/repeat.hpp" 1
23302 # 19 "../boost/preprocessor/repetition/repeat.hpp"
23303 # 1 "../boost/preprocessor/debug/error.hpp" 1
23304 # 20 "../boost/preprocessor/repetition/repeat.hpp" 2
23305 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
23306 # 21 "../boost/preprocessor/repetition/repeat.hpp" 2
23307 # 1 "../boost/preprocessor/tuple/eat.hpp" 1
23308 # 22 "../boost/preprocessor/repetition/repeat.hpp" 2
23309 # 16 "../boost/preprocessor/repeat.hpp" 2
23310 # 47 "../boost/mpl/aux_/preprocessor/params.hpp" 2
23311 # 1 "../boost/preprocessor/inc.hpp" 1
23312 # 15 "../boost/preprocessor/inc.hpp"
23313 # 1 "../boost/preprocessor/arithmetic/inc.hpp" 1
23314 # 16 "../boost/preprocessor/inc.hpp" 2
23315 # 48 "../boost/mpl/aux_/preprocessor/params.hpp" 2
23316 # 27 "../boost/mpl/aux_/na_spec.hpp" 2
23317 # 1 "../boost/mpl/aux_/preprocessor/enum.hpp" 1
23318 # 28 "../boost/mpl/aux_/na_spec.hpp" 2
23319 # 1 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 1
23320 # 17 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp"
23321 # 1 "../boost/mpl/limits/arity.hpp" 1
23322 # 18 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2
23323
23324
23325
23326
23327 # 1 "../boost/preprocessor/logical/and.hpp" 1
23328 # 19 "../boost/preprocessor/logical/and.hpp"
23329 # 1 "../boost/preprocessor/logical/bitand.hpp" 1
23330 # 20 "../boost/preprocessor/logical/and.hpp" 2
23331 # 23 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2
23332 # 1 "../boost/preprocessor/identity.hpp" 1
23333 # 15 "../boost/preprocessor/identity.hpp"
23334 # 1 "../boost/preprocessor/facilities/identity.hpp" 1
23335 # 16 "../boost/preprocessor/identity.hpp" 2
23336 # 24 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2
23337 # 1 "../boost/preprocessor/empty.hpp" 1
23338 # 25 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2
23339 # 66 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp"
23340 # 1 "../boost/preprocessor/arithmetic/add.hpp" 1
23341 # 17 "../boost/preprocessor/arithmetic/add.hpp"
23342 # 1 "../boost/preprocessor/arithmetic/dec.hpp" 1
23343 # 18 "../boost/preprocessor/arithmetic/add.hpp" 2
23344
23345
23346 # 1 "../boost/preprocessor/control/while.hpp" 1
23347 # 20 "../boost/preprocessor/control/while.hpp"
23348 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
23349 # 21 "../boost/preprocessor/control/while.hpp" 2
23350 # 1 "../boost/preprocessor/list/fold_left.hpp" 1
23351 # 18 "../boost/preprocessor/list/fold_left.hpp"
23352 # 1 "../boost/preprocessor/control/while.hpp" 1
23353 # 19 "../boost/preprocessor/list/fold_left.hpp" 2
23354
23355 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
23356 # 21 "../boost/preprocessor/list/fold_left.hpp" 2
23357 # 41 "../boost/preprocessor/list/fold_left.hpp"
23358 # 1 "../boost/preprocessor/list/detail/fold_left.hpp" 1
23359 # 17 "../boost/preprocessor/list/detail/fold_left.hpp"
23360 # 1 "../boost/preprocessor/control/expr_iif.hpp" 1
23361 # 18 "../boost/preprocessor/list/detail/fold_left.hpp" 2
23362
23363 # 1 "../boost/preprocessor/list/adt.hpp" 1
23364 # 18 "../boost/preprocessor/list/adt.hpp"
23365 # 1 "../boost/preprocessor/detail/is_binary.hpp" 1
23366 # 16 "../boost/preprocessor/detail/is_binary.hpp"
23367 # 1 "../boost/preprocessor/detail/check.hpp" 1
23368 # 17 "../boost/preprocessor/detail/is_binary.hpp" 2
23369 # 19 "../boost/preprocessor/list/adt.hpp" 2
23370 # 1 "../boost/preprocessor/logical/compl.hpp" 1
23371 # 20 "../boost/preprocessor/list/adt.hpp" 2
23372 # 20 "../boost/preprocessor/list/detail/fold_left.hpp" 2
23373 # 42 "../boost/preprocessor/list/fold_left.hpp" 2
23374 # 22 "../boost/preprocessor/control/while.hpp" 2
23375 # 1 "../boost/preprocessor/list/fold_right.hpp" 1
23376 # 20 "../boost/preprocessor/list/fold_right.hpp"
23377 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
23378 # 21 "../boost/preprocessor/list/fold_right.hpp" 2
23379 # 37 "../boost/preprocessor/list/fold_right.hpp"
23380 # 1 "../boost/preprocessor/list/detail/fold_right.hpp" 1
23381 # 18 "../boost/preprocessor/list/detail/fold_right.hpp"
23382 # 1 "../boost/preprocessor/list/reverse.hpp" 1
23383 # 19 "../boost/preprocessor/list/detail/fold_right.hpp" 2
23384 # 38 "../boost/preprocessor/list/fold_right.hpp" 2
23385 # 23 "../boost/preprocessor/control/while.hpp" 2
23386 # 48 "../boost/preprocessor/control/while.hpp"
23387 # 1 "../boost/preprocessor/control/detail/while.hpp" 1
23388 # 49 "../boost/preprocessor/control/while.hpp" 2
23389 # 21 "../boost/preprocessor/arithmetic/add.hpp" 2
23390 # 1 "../boost/preprocessor/tuple/elem.hpp" 1
23391 # 20 "../boost/preprocessor/tuple/elem.hpp"
23392 # 1 "../boost/preprocessor/facilities/overload.hpp" 1
23393 # 17 "../boost/preprocessor/facilities/overload.hpp"
23394 # 1 "../boost/preprocessor/variadic/size.hpp" 1
23395 # 18 "../boost/preprocessor/facilities/overload.hpp" 2
23396 # 21 "../boost/preprocessor/tuple/elem.hpp" 2
23397 # 1 "../boost/preprocessor/tuple/rem.hpp" 1
23398 # 22 "../boost/preprocessor/tuple/elem.hpp" 2
23399 # 1 "../boost/preprocessor/variadic/elem.hpp" 1
23400 # 23 "../boost/preprocessor/tuple/elem.hpp" 2
23401 # 22 "../boost/preprocessor/arithmetic/add.hpp" 2
23402 # 67 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2
23403 # 1 "../boost/preprocessor/arithmetic/sub.hpp" 1
23404 # 68 "../boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2
23405 # 29 "../boost/mpl/aux_/na_spec.hpp" 2
23406
23407
23408 # 1 "../boost/mpl/aux_/config/eti.hpp" 1
23409 # 32 "../boost/mpl/aux_/na_spec.hpp" 2
23410
23411
23412
23413 # 1 "../boost/mpl/aux_/config/overload_resolution.hpp" 1
23414 # 36 "../boost/mpl/aux_/na_spec.hpp" 2
23415 # 25 "../boost/mpl/or.hpp" 2
23416 # 1 "../boost/mpl/aux_/lambda_support.hpp" 1
23417 # 26 "../boost/mpl/or.hpp" 2
23418 # 43 "../boost/mpl/or.hpp"
23419 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
23420 # 16 "../boost/mpl/aux_/include_preprocessed.hpp"
23421 # 1 "../boost/mpl/aux_/config/compiler.hpp" 1
23422 # 17 "../boost/mpl/aux_/include_preprocessed.hpp" 2
23423
23424
23425
23426 # 1 "../boost/preprocessor/stringize.hpp" 1
23427 # 21 "../boost/mpl/aux_/include_preprocessed.hpp" 2
23428 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
23429 # 1 "../boost/mpl/aux_/preprocessed/gcc/or.hpp" 1
23430 # 12 "../boost/mpl/aux_/preprocessed/gcc/or.hpp"
23431 namespace boost { namespace mpl {
23432
23433 namespace aux {
23434
23435 template< bool C_, typename T1, typename T2, typename T3, typename T4 >
23436 struct or_impl
23437 : true_
23438 {
23439 };
23440
23441 template< typename T1, typename T2, typename T3, typename T4 >
23442 struct or_impl< false,T1,T2,T3,T4 >
23443 : or_impl<
23444 ::boost::mpl::aux::nested_type_wknd<T1>::value
23445 , T2, T3, T4
23446 , false_
23447 >
23448 {
23449 };
23450
23451 template<>
23452 struct or_impl<
23453 false
23454 , false_, false_, false_, false_
23455 >
23456 : false_
23457 {
23458 };
23459
23460 }
23461
23462 template<
23463 typename T1 = na
23464 , typename T2 = na
23465 , typename T3 = false_, typename T4 = false_, typename T5 = false_
23466 >
23467 struct or_
23468
23469 : aux::or_impl<
23470 ::boost::mpl::aux::nested_type_wknd<T1>::value
23471 , T2, T3, T4, T5
23472 >
23473
23474 {
23475
23476
23477
23478
23479
23480 };
23481
23482 template<> struct or_<
23483
23484
23485
23486 na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : or_< T1 , T2 > { }; }; template< typename Tag > struct lambda< or_< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef or_< na , na > result_; typedef or_< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< or_< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< or_< na , na > > : int_<-1> { }; }
23487
23488 }}
23489 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
23490 # 44 "../boost/mpl/or.hpp" 2
23491 # 12 "../boost/iterator/interoperable.hpp" 2
23492
23493 # 1 "../boost/type_traits/is_convertible.hpp" 1
23494 # 15 "../boost/type_traits/is_convertible.hpp"
23495 # 1 "../boost/type_traits/intrinsics.hpp" 1
23496 # 12 "../boost/type_traits/intrinsics.hpp"
23497 # 1 "../boost/type_traits/config.hpp" 1
23498 # 13 "../boost/type_traits/intrinsics.hpp" 2
23499 # 189 "../boost/type_traits/intrinsics.hpp"
23500 # 1 "../boost/type_traits/is_same.hpp" 1
23501 # 31 "../boost/type_traits/is_same.hpp"
23502 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
23503 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
23504 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23505 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23506 # 1 "../boost/type_traits/integral_constant.hpp" 1
23507 # 11 "../boost/type_traits/integral_constant.hpp"
23508 # 1 "../boost/mpl/integral_c.hpp" 1
23509 # 17 "../boost/mpl/integral_c.hpp"
23510 # 1 "../boost/mpl/integral_c_fwd.hpp" 1
23511 # 20 "../boost/mpl/integral_c_fwd.hpp"
23512 namespace mpl_ {
23513
23514
23515
23516
23517
23518 template< typename T, T N > struct integral_c;
23519
23520
23521 }
23522 namespace boost { namespace mpl { using ::mpl_::integral_c; } }
23523 # 18 "../boost/mpl/integral_c.hpp" 2
23524 # 32 "../boost/mpl/integral_c.hpp"
23525 # 1 "../boost/mpl/aux_/integral_wrapper.hpp" 1
23526 # 40 "../boost/mpl/aux_/integral_wrapper.hpp"
23527 namespace mpl_ {
23528
23529 template< typename T, T N >
23530 struct integral_c
23531 {
23532 static const T value = N;
23533
23534
23535
23536
23537
23538 typedef integral_c type;
23539
23540 typedef T value_type;
23541 typedef integral_c_tag tag;
23542 # 72 "../boost/mpl/aux_/integral_wrapper.hpp"
23543 typedef integral_c< T, static_cast<T>((value + 1)) > next;
23544 typedef integral_c< T, static_cast<T>((value - 1)) > prior;
23545
23546
23547
23548
23549
23550
23551 operator T() const { return static_cast<T>(this->value); }
23552 };
23553
23554
23555 template< typename T, T N >
23556 T const integral_c< T, N >::value;
23557
23558
23559 }
23560 # 33 "../boost/mpl/integral_c.hpp" 2
23561
23562
23563
23564
23565 namespace mpl_ {
23566
23567 template< bool C >
23568 struct integral_c<bool, C>
23569 {
23570 static const bool value = C;
23571 typedef integral_c_tag tag;
23572 typedef integral_c type;
23573 typedef bool value_type;
23574 operator bool() const { return this->value; }
23575 };
23576 }
23577 # 12 "../boost/type_traits/integral_constant.hpp" 2
23578
23579 namespace boost{
23580
23581
23582
23583
23584 template <class T, T val>
23585
23586 struct integral_constant : public mpl::integral_c<T, val>
23587 {
23588 typedef integral_constant<T,val> type;
23589 };
23590
23591 template<> struct integral_constant<bool,true> : public mpl::true_
23592 {
23593
23594
23595
23596
23597
23598
23599
23600 typedef integral_constant<bool,true> type;
23601 };
23602 template<> struct integral_constant<bool,false> : public mpl::false_
23603 {
23604
23605
23606
23607
23608
23609
23610
23611 typedef integral_constant<bool,false> type;
23612 };
23613
23614 typedef integral_constant<bool,true> true_type;
23615 typedef integral_constant<bool,false> false_type;
23616
23617 }
23618 # 16 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23619 # 32 "../boost/type_traits/is_same.hpp" 2
23620
23621 namespace boost {
23622
23623
23624
23625 template< typename T, typename U > struct is_same : public ::boost::integral_constant<bool,false> { public: };
23626 template< typename T > struct is_same< T,T > : public ::boost::integral_constant<bool,true> { public: };
23627 # 98 "../boost/type_traits/is_same.hpp"
23628 }
23629
23630 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
23631 # 101 "../boost/type_traits/is_same.hpp" 2
23632 # 190 "../boost/type_traits/intrinsics.hpp" 2
23633 # 1 "../boost/type_traits/is_reference.hpp" 1
23634 # 16 "../boost/type_traits/is_reference.hpp"
23635 # 1 "../boost/type_traits/is_lvalue_reference.hpp" 1
23636 # 32 "../boost/type_traits/is_lvalue_reference.hpp"
23637 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
23638 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
23639 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23640 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23641 # 33 "../boost/type_traits/is_lvalue_reference.hpp" 2
23642
23643 namespace boost {
23644
23645
23646
23647
23648
23649 template< typename T > struct is_lvalue_reference : public ::boost::integral_constant<bool,false> { public: };
23650 template< typename T > struct is_lvalue_reference< T& > : public ::boost::integral_constant<bool,true> { public: };
23651 # 113 "../boost/type_traits/is_lvalue_reference.hpp"
23652 }
23653
23654 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
23655 # 116 "../boost/type_traits/is_lvalue_reference.hpp" 2
23656 # 17 "../boost/type_traits/is_reference.hpp" 2
23657 # 1 "../boost/type_traits/is_rvalue_reference.hpp" 1
23658 # 15 "../boost/type_traits/is_rvalue_reference.hpp"
23659 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
23660 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
23661 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23662 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23663 # 16 "../boost/type_traits/is_rvalue_reference.hpp" 2
23664
23665 namespace boost {
23666
23667 template< typename T > struct is_rvalue_reference : public ::boost::integral_constant<bool,false> { public: };
23668
23669
23670
23671
23672 }
23673
23674 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
23675 # 27 "../boost/type_traits/is_rvalue_reference.hpp" 2
23676 # 18 "../boost/type_traits/is_reference.hpp" 2
23677 # 1 "../boost/type_traits/ice.hpp" 1
23678 # 14 "../boost/type_traits/ice.hpp"
23679 # 1 "../boost/type_traits/detail/yes_no_type.hpp" 1
23680 # 14 "../boost/type_traits/detail/yes_no_type.hpp"
23681 namespace boost {
23682 namespace type_traits {
23683
23684 typedef char yes_type;
23685 struct no_type
23686 {
23687 char padding[8];
23688 };
23689
23690 }
23691 }
23692 # 15 "../boost/type_traits/ice.hpp" 2
23693 # 1 "../boost/type_traits/detail/ice_or.hpp" 1
23694 # 13 "../boost/type_traits/detail/ice_or.hpp"
23695 namespace boost {
23696 namespace type_traits {
23697
23698 template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
23699 struct ice_or;
23700
23701 template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
23702 struct ice_or
23703 {
23704 static const bool value = true;
23705 };
23706
23707 template <>
23708 struct ice_or<false, false, false, false, false, false, false>
23709 {
23710 static const bool value = false;
23711 };
23712
23713 }
23714 }
23715 # 16 "../boost/type_traits/ice.hpp" 2
23716 # 1 "../boost/type_traits/detail/ice_and.hpp" 1
23717 # 14 "../boost/type_traits/detail/ice_and.hpp"
23718 namespace boost {
23719 namespace type_traits {
23720
23721 template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
23722 struct ice_and;
23723
23724 template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
23725 struct ice_and
23726 {
23727 static const bool value = false;
23728 };
23729
23730 template <>
23731 struct ice_and<true, true, true, true, true, true, true>
23732 {
23733 static const bool value = true;
23734 };
23735
23736 }
23737 }
23738 # 17 "../boost/type_traits/ice.hpp" 2
23739 # 1 "../boost/type_traits/detail/ice_not.hpp" 1
23740 # 13 "../boost/type_traits/detail/ice_not.hpp"
23741 namespace boost {
23742 namespace type_traits {
23743
23744 template <bool b>
23745 struct ice_not
23746 {
23747 static const bool value = true;
23748 };
23749
23750 template <>
23751 struct ice_not<true>
23752 {
23753 static const bool value = false;
23754 };
23755
23756 }
23757 }
23758 # 18 "../boost/type_traits/ice.hpp" 2
23759 # 1 "../boost/type_traits/detail/ice_eq.hpp" 1
23760 # 13 "../boost/type_traits/detail/ice_eq.hpp"
23761 namespace boost {
23762 namespace type_traits {
23763
23764 template <int b1, int b2>
23765 struct ice_eq
23766 {
23767 static const bool value = (b1 == b2);
23768 };
23769
23770 template <int b1, int b2>
23771 struct ice_ne
23772 {
23773 static const bool value = (b1 != b2);
23774 };
23775
23776
23777 template <int b1, int b2> bool const ice_eq<b1,b2>::value;
23778 template <int b1, int b2> bool const ice_ne<b1,b2>::value;
23779
23780
23781 }
23782 }
23783 # 19 "../boost/type_traits/ice.hpp" 2
23784 # 19 "../boost/type_traits/is_reference.hpp" 2
23785
23786
23787 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
23788 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
23789 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23790 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23791 # 22 "../boost/type_traits/is_reference.hpp" 2
23792
23793 namespace boost {
23794
23795 namespace detail {
23796
23797 template <typename T>
23798 struct is_reference_impl
23799 {
23800 static const bool value = (::boost::type_traits::ice_or< ::boost::is_lvalue_reference<T>::value, ::boost::is_rvalue_reference<T>::value >::value)
23801
23802
23803 ;
23804 };
23805
23806 }
23807
23808 template< typename T > struct is_reference : public ::boost::integral_constant<bool,::boost::detail::is_reference_impl<T>::value> { public: };
23809
23810 }
23811
23812 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
23813 # 43 "../boost/type_traits/is_reference.hpp" 2
23814 # 191 "../boost/type_traits/intrinsics.hpp" 2
23815 # 1 "../boost/type_traits/is_volatile.hpp" 1
23816 # 28 "../boost/type_traits/is_volatile.hpp"
23817 # 1 "../boost/type_traits/detail/cv_traits_impl.hpp" 1
23818 # 23 "../boost/type_traits/detail/cv_traits_impl.hpp"
23819 namespace boost {
23820 namespace detail {
23821
23822
23823
23824
23825
23826
23827
23828 template <typename T> struct cv_traits_imp {};
23829
23830 template <typename T>
23831 struct cv_traits_imp<T*>
23832 {
23833 static const bool is_const = false;
23834 static const bool is_volatile = false;
23835 typedef T unqualified_type;
23836 };
23837
23838 template <typename T>
23839 struct cv_traits_imp<const T*>
23840 {
23841 static const bool is_const = true;
23842 static const bool is_volatile = false;
23843 typedef T unqualified_type;
23844 };
23845
23846 template <typename T>
23847 struct cv_traits_imp<volatile T*>
23848 {
23849 static const bool is_const = false;
23850 static const bool is_volatile = true;
23851 typedef T unqualified_type;
23852 };
23853
23854 template <typename T>
23855 struct cv_traits_imp<const volatile T*>
23856 {
23857 static const bool is_const = true;
23858 static const bool is_volatile = true;
23859 typedef T unqualified_type;
23860 };
23861 # 92 "../boost/type_traits/detail/cv_traits_impl.hpp"
23862 }
23863 }
23864 # 29 "../boost/type_traits/is_volatile.hpp" 2
23865 # 40 "../boost/type_traits/is_volatile.hpp"
23866 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
23867 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
23868 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23869 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23870 # 41 "../boost/type_traits/is_volatile.hpp" 2
23871
23872 namespace boost {
23873
23874 namespace detail{
23875 template <class T>
23876 struct is_volatile_rval_filter
23877 {
23878
23879
23880
23881 static const bool value = ::boost::detail::cv_traits_imp<T*>::is_volatile;
23882
23883 };
23884 # 65 "../boost/type_traits/is_volatile.hpp"
23885 }
23886
23887
23888
23889
23890
23891
23892 template< typename T > struct is_volatile : public ::boost::integral_constant<bool,::boost::detail::is_volatile_rval_filter<T>::value> { public: };
23893 template< typename T > struct is_volatile< T& > : public ::boost::integral_constant<bool,false> { public: };
23894 # 148 "../boost/type_traits/is_volatile.hpp"
23895 }
23896
23897 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
23898 # 151 "../boost/type_traits/is_volatile.hpp" 2
23899 # 192 "../boost/type_traits/intrinsics.hpp" 2
23900 # 16 "../boost/type_traits/is_convertible.hpp" 2
23901
23902
23903
23904 # 1 "../boost/type_traits/is_array.hpp" 1
23905 # 24 "../boost/type_traits/is_array.hpp"
23906 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
23907 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
23908
23909 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
23910
23911
23912 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
23913 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
23914 # 25 "../boost/type_traits/is_array.hpp" 2
23915
23916
23917 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
23918 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
23919 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23920 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
23921 # 28 "../boost/type_traits/is_array.hpp" 2
23922
23923 namespace boost {
23924
23925
23926
23927
23928 template< typename T > struct is_array : public ::boost::integral_constant<bool,false> { public: };
23929
23930 template< typename T, std::size_t N > struct is_array< T[N] > : public ::boost::integral_constant<bool,true> { public: };
23931 template< typename T, std::size_t N > struct is_array< T const[N] > : public ::boost::integral_constant<bool,true> { public: };
23932 template< typename T, std::size_t N > struct is_array< T volatile[N] > : public ::boost::integral_constant<bool,true> { public: };
23933 template< typename T, std::size_t N > struct is_array< T const volatile[N] > : public ::boost::integral_constant<bool,true> { public: };
23934
23935 template< typename T > struct is_array< T[] > : public ::boost::integral_constant<bool,true> { public: };
23936 template< typename T > struct is_array< T const[] > : public ::boost::integral_constant<bool,true> { public: };
23937 template< typename T > struct is_array< T volatile[] > : public ::boost::integral_constant<bool,true> { public: };
23938 template< typename T > struct is_array< T const volatile[] > : public ::boost::integral_constant<bool,true> { public: };
23939 # 87 "../boost/type_traits/is_array.hpp"
23940 }
23941
23942 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
23943 # 90 "../boost/type_traits/is_array.hpp" 2
23944 # 20 "../boost/type_traits/is_convertible.hpp" 2
23945 # 1 "../boost/type_traits/add_reference.hpp" 1
23946 # 17 "../boost/type_traits/add_reference.hpp"
23947 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
23948 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
23949 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
23950 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
23951 # 18 "../boost/type_traits/add_reference.hpp" 2
23952
23953 namespace boost {
23954
23955 namespace detail {
23956 # 59 "../boost/type_traits/add_reference.hpp"
23957 template <typename T>
23958 struct add_reference_rvalue_layer
23959 {
23960 typedef T& type;
23961 };
23962 # 73 "../boost/type_traits/add_reference.hpp"
23963 template <typename T>
23964 struct add_reference_impl
23965 {
23966 typedef typename add_reference_rvalue_layer<T>::type type;
23967 };
23968
23969
23970 template< typename T > struct add_reference_impl<T&> { public: typedef T& type; };
23971
23972
23973
23974
23975
23976 template<> struct add_reference_impl<void> { public: typedef void type; };
23977
23978 template<> struct add_reference_impl<void const> { public: typedef void const type; };
23979 template<> struct add_reference_impl<void volatile> { public: typedef void volatile type; };
23980 template<> struct add_reference_impl<void const volatile> { public: typedef void const volatile type; };
23981
23982
23983 }
23984
23985 template< typename T > struct add_reference { public: typedef typename boost::detail::add_reference_impl<T>::type type; };
23986
23987
23988
23989
23990
23991
23992
23993 }
23994
23995 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
23996 # 106 "../boost/type_traits/add_reference.hpp" 2
23997 # 21 "../boost/type_traits/is_convertible.hpp" 2
23998
23999 # 1 "../boost/type_traits/is_arithmetic.hpp" 1
24000 # 13 "../boost/type_traits/is_arithmetic.hpp"
24001 # 1 "../boost/type_traits/is_integral.hpp" 1
24002 # 15 "../boost/type_traits/is_integral.hpp"
24003 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
24004 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
24005 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24006 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
24007 # 16 "../boost/type_traits/is_integral.hpp" 2
24008
24009 namespace boost {
24010
24011
24012
24013
24014
24015
24016
24017 template< typename T > struct is_integral : public ::boost::integral_constant<bool,false> { public: };
24018
24019 template<> struct is_integral< unsigned char > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned char const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned char volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned char const volatile > : public ::boost::integral_constant<bool,true> { public: };
24020 template<> struct is_integral< unsigned short > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned short const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned short volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned short const volatile > : public ::boost::integral_constant<bool,true> { public: };
24021 template<> struct is_integral< unsigned int > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned int const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned int volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned int const volatile > : public ::boost::integral_constant<bool,true> { public: };
24022 template<> struct is_integral< unsigned long > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned long const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned long volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< unsigned long const volatile > : public ::boost::integral_constant<bool,true> { public: };
24023
24024 template<> struct is_integral< signed char > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed char const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed char volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed char const volatile > : public ::boost::integral_constant<bool,true> { public: };
24025 template<> struct is_integral< signed short > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed short const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed short volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed short const volatile > : public ::boost::integral_constant<bool,true> { public: };
24026 template<> struct is_integral< signed int > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed int const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed int volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed int const volatile > : public ::boost::integral_constant<bool,true> { public: };
24027 template<> struct is_integral< signed long > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed long const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed long volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< signed long const volatile > : public ::boost::integral_constant<bool,true> { public: };
24028
24029 template<> struct is_integral< bool > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< bool const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< bool volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< bool const volatile > : public ::boost::integral_constant<bool,true> { public: };
24030 template<> struct is_integral< char > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< char const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< char volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< char const volatile > : public ::boost::integral_constant<bool,true> { public: };
24031
24032
24033
24034
24035
24036 template<> struct is_integral< wchar_t > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< wchar_t const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< wchar_t volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< wchar_t const volatile > : public ::boost::integral_constant<bool,true> { public: };
24037 # 65 "../boost/type_traits/is_integral.hpp"
24038 template<> struct is_integral< ::boost::ulong_long_type > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< ::boost::ulong_long_type const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< ::boost::ulong_long_type volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< ::boost::ulong_long_type const volatile > : public ::boost::integral_constant<bool,true> { public: };
24039 template<> struct is_integral< ::boost::long_long_type > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< ::boost::long_long_type const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< ::boost::long_long_type volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_integral< ::boost::long_long_type const volatile > : public ::boost::integral_constant<bool,true> { public: };
24040
24041
24042
24043
24044
24045
24046
24047 }
24048
24049 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
24050 # 77 "../boost/type_traits/is_integral.hpp" 2
24051 # 14 "../boost/type_traits/is_arithmetic.hpp" 2
24052 # 1 "../boost/type_traits/is_float.hpp" 1
24053 # 13 "../boost/type_traits/is_float.hpp"
24054 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
24055 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
24056 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24057 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
24058 # 14 "../boost/type_traits/is_float.hpp" 2
24059
24060 namespace boost {
24061
24062
24063 template< typename T > struct is_float : public ::boost::integral_constant<bool,false> { public: };
24064 template<> struct is_float< float > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< float const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< float volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< float const volatile > : public ::boost::integral_constant<bool,true> { public: };
24065 template<> struct is_float< double > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< double const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< double volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< double const volatile > : public ::boost::integral_constant<bool,true> { public: };
24066 template<> struct is_float< long double > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< long double const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< long double volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_float< long double const volatile > : public ::boost::integral_constant<bool,true> { public: };
24067
24068 }
24069
24070 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
24071 # 26 "../boost/type_traits/is_float.hpp" 2
24072 # 15 "../boost/type_traits/is_arithmetic.hpp" 2
24073
24074
24075
24076
24077
24078 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
24079 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
24080 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24081 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
24082 # 21 "../boost/type_traits/is_arithmetic.hpp" 2
24083
24084 namespace boost {
24085
24086
24087 namespace detail {
24088
24089 template< typename T >
24090 struct is_arithmetic_impl
24091 {
24092 static const bool value = (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_float<T>::value >::value)
24093
24094
24095
24096 ;
24097 };
24098
24099 }
24100
24101
24102
24103
24104
24105
24106 template< typename T > struct is_arithmetic : public ::boost::integral_constant<bool,::boost::detail::is_arithmetic_impl<T>::value> { public: };
24107
24108
24109 }
24110
24111 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
24112 # 50 "../boost/type_traits/is_arithmetic.hpp" 2
24113 # 23 "../boost/type_traits/is_convertible.hpp" 2
24114 # 1 "../boost/type_traits/is_void.hpp" 1
24115 # 15 "../boost/type_traits/is_void.hpp"
24116 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
24117 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
24118 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24119 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
24120 # 16 "../boost/type_traits/is_void.hpp" 2
24121
24122 namespace boost {
24123
24124
24125
24126
24127
24128 template< typename T > struct is_void : public ::boost::integral_constant<bool,false> { public: };
24129 template<> struct is_void< void > : public ::boost::integral_constant<bool,true> { public: };
24130
24131
24132 template<> struct is_void< void const > : public ::boost::integral_constant<bool,true> { public: };
24133 template<> struct is_void< void volatile > : public ::boost::integral_constant<bool,true> { public: };
24134 template<> struct is_void< void const volatile > : public ::boost::integral_constant<bool,true> { public: };
24135
24136
24137
24138
24139 }
24140
24141 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
24142 # 37 "../boost/type_traits/is_void.hpp" 2
24143 # 24 "../boost/type_traits/is_convertible.hpp" 2
24144
24145 # 1 "../boost/type_traits/is_abstract.hpp" 1
24146 # 62 "../boost/type_traits/is_abstract.hpp"
24147 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
24148 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
24149 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24150 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
24151 # 63 "../boost/type_traits/is_abstract.hpp" 2
24152
24153
24154 namespace boost {
24155 namespace detail{
24156
24157
24158 template <class T>
24159 struct is_abstract_imp
24160 {
24161 static const bool value = __is_abstract(T);
24162 };
24163 # 141 "../boost/type_traits/is_abstract.hpp"
24164 }
24165
24166
24167 template< typename T > struct is_abstract : public ::boost::integral_constant<bool,::boost::detail::is_abstract_imp<T>::value> { public: };
24168
24169
24170
24171
24172 }
24173
24174 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
24175 # 152 "../boost/type_traits/is_abstract.hpp" 2
24176 # 26 "../boost/type_traits/is_convertible.hpp" 2
24177
24178 # 1 "../boost/type_traits/add_rvalue_reference.hpp" 1
24179 # 19 "../boost/type_traits/add_rvalue_reference.hpp"
24180 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
24181 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
24182 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24183 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
24184 # 20 "../boost/type_traits/add_rvalue_reference.hpp" 2
24185 # 34 "../boost/type_traits/add_rvalue_reference.hpp"
24186 namespace boost {
24187
24188 namespace type_traits_detail {
24189
24190 template <typename T, bool b>
24191 struct add_rvalue_reference_helper
24192 { typedef T type; };
24193 # 50 "../boost/type_traits/add_rvalue_reference.hpp"
24194 template <typename T>
24195 struct add_rvalue_reference_imp
24196 {
24197 typedef typename boost::type_traits_detail::add_rvalue_reference_helper
24198 <T, (!is_void<T>::value && !is_reference<T>::value) >::type type;
24199 };
24200
24201 }
24202
24203 template< typename T > struct add_rvalue_reference { public: typedef typename boost::type_traits_detail::add_rvalue_reference_imp<T>::type type; };
24204
24205 }
24206
24207 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
24208 # 64 "../boost/type_traits/add_rvalue_reference.hpp" 2
24209 # 28 "../boost/type_traits/is_convertible.hpp" 2
24210 # 37 "../boost/type_traits/is_convertible.hpp"
24211 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
24212 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
24213 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
24214 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
24215 # 38 "../boost/type_traits/is_convertible.hpp" 2
24216
24217 namespace boost {
24218 # 53 "../boost/type_traits/is_convertible.hpp"
24219 namespace detail {
24220 # 120 "../boost/type_traits/is_convertible.hpp"
24221 struct any_conversion
24222 {
24223 template <typename T> any_conversion(const volatile T&);
24224 template <typename T> any_conversion(T&);
24225 };
24226
24227 template <typename T> struct checker
24228 {
24229 static boost::type_traits::no_type _m_check(any_conversion ...);
24230 static boost::type_traits::yes_type _m_check(T, int);
24231 };
24232
24233 template <typename From, typename To>
24234 struct is_convertible_basic_impl
24235 {
24236 static typename add_rvalue_reference<From>::type _m_from;
24237 static bool const value = sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
24238 == sizeof(::boost::type_traits::yes_type);
24239 };
24240 # 292 "../boost/type_traits/is_convertible.hpp"
24241 template <typename From, typename To>
24242 struct is_convertible_impl
24243 {
24244 typedef typename add_reference<From>::type ref_type;
24245 static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::detail::is_convertible_basic_impl<ref_type,To>::value, ::boost::is_void<To>::value >::value, ::boost::type_traits::ice_not< ::boost::is_array<To>::value >::value >::value)
24246 # 306 "../boost/type_traits/is_convertible.hpp"
24247 ;
24248 };
24249
24250
24251 template <bool trivial1, bool trivial2, bool abstract_target>
24252 struct is_convertible_impl_select
24253 {
24254 template <class From, class To>
24255 struct rebind
24256 {
24257 typedef is_convertible_impl<From, To> type;
24258 };
24259 };
24260
24261 template <>
24262 struct is_convertible_impl_select<true, true, false>
24263 {
24264 template <class From, class To>
24265 struct rebind
24266 {
24267 typedef true_type type;
24268 };
24269 };
24270
24271 template <>
24272 struct is_convertible_impl_select<false, false, true>
24273 {
24274 template <class From, class To>
24275 struct rebind
24276 {
24277 typedef false_type type;
24278 };
24279 };
24280
24281 template <>
24282 struct is_convertible_impl_select<true, false, true>
24283 {
24284 template <class From, class To>
24285 struct rebind
24286 {
24287 typedef false_type type;
24288 };
24289 };
24290
24291 template <typename From, typename To>
24292 struct is_convertible_impl_dispatch_base
24293 {
24294
24295 typedef is_convertible_impl_select<
24296 ::boost::is_arithmetic<From>::value,
24297 ::boost::is_arithmetic<To>::value,
24298
24299 ::boost::is_abstract<To>::value
24300
24301
24302
24303 > selector;
24304
24305
24306
24307 typedef typename selector::template rebind<From, To> isc_binder;
24308 typedef typename isc_binder::type type;
24309 };
24310
24311 template <typename From, typename To>
24312 struct is_convertible_impl_dispatch
24313 : public is_convertible_impl_dispatch_base<From, To>::type
24314 {};
24315 # 395 "../boost/type_traits/is_convertible.hpp"
24316 template<> struct is_convertible_impl< void,void > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void,void const > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void,void volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void,void const volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const,void > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const,void volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void volatile > { public: static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const volatile > { public: static const bool value = (true); };
24317 # 405 "../boost/type_traits/is_convertible.hpp"
24318 template< typename To > struct is_convertible_impl< void,To > { public: static const bool value = (false); };
24319 template< typename From > struct is_convertible_impl< From,void > { public: static const bool value = (false); };
24320
24321 template< typename To > struct is_convertible_impl< void const,To > { public: static const bool value = (false); };
24322 template< typename To > struct is_convertible_impl< void volatile,To > { public: static const bool value = (false); };
24323 template< typename To > struct is_convertible_impl< void const volatile,To > { public: static const bool value = (false); };
24324 template< typename From > struct is_convertible_impl< From,void const > { public: static const bool value = (false); };
24325 template< typename From > struct is_convertible_impl< From,void volatile > { public: static const bool value = (false); };
24326 template< typename From > struct is_convertible_impl< From,void const volatile > { public: static const bool value = (false); };
24327
24328
24329
24330 }
24331
24332 template< typename From, typename To > struct is_convertible : public ::boost::integral_constant<bool,(::boost::detail::is_convertible_impl_dispatch<From,To>::value)> { public: };
24333
24334
24335
24336
24337
24338
24339
24340 }
24341
24342 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
24343 # 430 "../boost/type_traits/is_convertible.hpp" 2
24344 # 14 "../boost/iterator/interoperable.hpp" 2
24345
24346 # 1 "../boost/iterator/detail/config_def.hpp" 1
24347 # 16 "../boost/iterator/interoperable.hpp" 2
24348
24349 namespace boost
24350 {
24351 # 34 "../boost/iterator/interoperable.hpp"
24352 template <typename A, typename B>
24353 struct is_interoperable
24354
24355
24356
24357 : mpl::or_<
24358 is_convertible< A, B >
24359 , is_convertible< B, A > >
24360
24361 {
24362 };
24363
24364 }
24365
24366 # 1 "../boost/iterator/detail/config_undef.hpp" 1
24367 # 49 "../boost/iterator/interoperable.hpp" 2
24368 # 12 "../boost/iterator/iterator_facade.hpp" 2
24369
24370
24371 # 1 "../boost/iterator/detail/facade_iterator_category.hpp" 1
24372
24373
24374
24375
24376
24377
24378 # 1 "../boost/iterator/iterator_categories.hpp" 1
24379 # 11 "../boost/iterator/iterator_categories.hpp"
24380 # 1 "../boost/iterator/detail/config_def.hpp" 1
24381 # 12 "../boost/iterator/iterator_categories.hpp" 2
24382
24383
24384
24385 # 1 "../boost/mpl/eval_if.hpp" 1
24386 # 17 "../boost/mpl/eval_if.hpp"
24387 # 1 "../boost/mpl/if.hpp" 1
24388 # 17 "../boost/mpl/if.hpp"
24389 # 1 "../boost/mpl/aux_/value_wknd.hpp" 1
24390 # 18 "../boost/mpl/aux_/value_wknd.hpp"
24391 # 1 "../boost/mpl/aux_/config/integral.hpp" 1
24392 # 19 "../boost/mpl/aux_/value_wknd.hpp" 2
24393 # 73 "../boost/mpl/aux_/value_wknd.hpp"
24394 namespace boost { namespace mpl { namespace aux {
24395
24396 template< typename T > struct value_type_wknd
24397 {
24398 typedef typename T::value_type type;
24399 };
24400 # 87 "../boost/mpl/aux_/value_wknd.hpp"
24401 }}}
24402 # 18 "../boost/mpl/if.hpp" 2
24403
24404
24405
24406
24407
24408
24409
24410 namespace boost { namespace mpl {
24411
24412
24413
24414 template<
24415 bool C
24416 , typename T1
24417 , typename T2
24418 >
24419 struct if_c
24420 {
24421 typedef T1 type;
24422 };
24423
24424 template<
24425 typename T1
24426 , typename T2
24427 >
24428 struct if_c<false,T1,T2>
24429 {
24430 typedef T2 type;
24431 };
24432
24433
24434
24435 template<
24436 typename T1 = na
24437 , typename T2 = na
24438 , typename T3 = na
24439 >
24440 struct if_
24441 {
24442 private:
24443
24444 typedef if_c<
24445
24446
24447
24448 static_cast<bool>(T1::value)
24449
24450 , T2
24451 , T3
24452 > almost_type_;
24453
24454 public:
24455 typedef typename almost_type_::type type;
24456
24457
24458 };
24459 # 131 "../boost/mpl/if.hpp"
24460 template<> struct if_< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : if_< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< if_< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef if_< na , na , na > result_; typedef if_< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< if_< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< if_< na , na , na > > : int_<-1> { }; }
24461
24462 }}
24463 # 18 "../boost/mpl/eval_if.hpp" 2
24464
24465
24466
24467
24468
24469
24470 namespace boost { namespace mpl {
24471
24472 template<
24473 typename C = na
24474 , typename F1 = na
24475 , typename F2 = na
24476 >
24477 struct eval_if
24478
24479
24480
24481
24482 {
24483 typedef typename if_<C,F1,F2>::type f_;
24484 typedef typename f_::type type;
24485
24486
24487
24488
24489
24490 };
24491
24492
24493
24494 template<
24495 bool C
24496 , typename F1
24497 , typename F2
24498 >
24499 struct eval_if_c
24500
24501
24502
24503
24504 {
24505 typedef typename if_c<C,F1,F2>::type f_;
24506 typedef typename f_::type type;
24507
24508
24509
24510
24511 };
24512
24513 template<> struct eval_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : eval_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< eval_if< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef eval_if< na , na , na > result_; typedef eval_if< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< eval_if< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< eval_if< na , na , na > > : int_<-1> { }; }
24514
24515 }}
24516 # 16 "../boost/iterator/iterator_categories.hpp" 2
24517 # 1 "../boost/mpl/identity.hpp" 1
24518 # 20 "../boost/mpl/identity.hpp"
24519 namespace boost { namespace mpl {
24520
24521 template<
24522 typename T = na
24523 >
24524 struct identity
24525 {
24526 typedef T type;
24527
24528 };
24529
24530 template<
24531 typename T = na
24532 >
24533 struct make_identity
24534 {
24535 typedef identity<T> type;
24536
24537 };
24538
24539 template<> struct identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : identity< T1 > { }; }; template< typename Tag > struct lambda< identity< na > , Tag , int_<-1> > { typedef false_ is_le; typedef identity< na > result_; typedef identity< na > type; }; namespace aux { template< typename T1 > struct template_arity< identity< T1 > > : int_<1> { }; template<> struct template_arity< identity< na > > : int_<-1> { }; }
24540 template<> struct make_identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : make_identity< T1 > { }; }; template< typename Tag > struct lambda< make_identity< na > , Tag , int_<-1> > { typedef false_ is_le; typedef make_identity< na > result_; typedef make_identity< na > type; }; namespace aux { template< typename T1 > struct template_arity< make_identity< T1 > > : int_<1> { }; template<> struct template_arity< make_identity< na > > : int_<-1> { }; }
24541
24542 }}
24543 # 17 "../boost/iterator/iterator_categories.hpp" 2
24544 # 1 "../boost/mpl/placeholders.hpp" 1
24545 # 24 "../boost/mpl/placeholders.hpp"
24546 # 1 "../boost/mpl/arg.hpp" 1
24547 # 23 "../boost/mpl/arg.hpp"
24548 # 1 "../boost/mpl/arg_fwd.hpp" 1
24549 # 21 "../boost/mpl/arg_fwd.hpp"
24550 namespace mpl_ {
24551
24552 template< int N > struct arg;
24553
24554 }
24555 namespace boost { namespace mpl { using ::mpl_::arg; } }
24556 # 24 "../boost/mpl/arg.hpp" 2
24557
24558 # 1 "../boost/mpl/aux_/na_assert.hpp" 1
24559 # 23 "../boost/mpl/aux_/na_assert.hpp"
24560 # 1 "../boost/mpl/assert.hpp" 1
24561 # 17 "../boost/mpl/assert.hpp"
24562 # 1 "../boost/mpl/not.hpp" 1
24563 # 23 "../boost/mpl/not.hpp"
24564 namespace boost { namespace mpl {
24565
24566 namespace aux {
24567
24568 template< long C_ >
24569 struct not_impl
24570 : bool_<!C_>
24571 {
24572 };
24573
24574 }
24575
24576
24577 template<
24578 typename T = na
24579 >
24580 struct not_
24581 : aux::not_impl<
24582 ::boost::mpl::aux::nested_type_wknd<T>::value
24583 >
24584 {
24585
24586 };
24587
24588 template<> struct not_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : not_< T1 > { }; }; template< typename Tag > struct lambda< not_< na > , Tag , int_<-1> > { typedef false_ is_le; typedef not_< na > result_; typedef not_< na > type; }; namespace aux { template< typename T1 > struct template_arity< not_< T1 > > : int_<1> { }; template<> struct template_arity< not_< na > > : int_<-1> { }; }
24589
24590 }}
24591 # 18 "../boost/mpl/assert.hpp" 2
24592
24593
24594 # 1 "../boost/mpl/aux_/yes_no.hpp" 1
24595 # 18 "../boost/mpl/aux_/yes_no.hpp"
24596 # 1 "../boost/mpl/aux_/config/arrays.hpp" 1
24597 # 19 "../boost/mpl/aux_/yes_no.hpp" 2
24598
24599
24600
24601
24602 namespace boost { namespace mpl { namespace aux {
24603
24604 typedef char (&no_tag)[1];
24605 typedef char (&yes_tag)[2];
24606
24607 template< bool C_ > struct yes_no_tag
24608 {
24609 typedef no_tag type;
24610 };
24611
24612 template<> struct yes_no_tag<true>
24613 {
24614 typedef yes_tag type;
24615 };
24616
24617
24618 template< long n > struct weighted_tag
24619 {
24620
24621 typedef char (&type)[n];
24622
24623
24624
24625
24626 };
24627 # 56 "../boost/mpl/aux_/yes_no.hpp"
24628 }}}
24629 # 21 "../boost/mpl/assert.hpp" 2
24630 # 29 "../boost/mpl/assert.hpp"
24631 # 1 "../boost/mpl/aux_/config/pp_counter.hpp" 1
24632 # 30 "../boost/mpl/assert.hpp" 2
24633
24634
24635
24636
24637
24638 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
24639 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
24640
24641 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
24642
24643
24644 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
24645 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
24646 # 36 "../boost/mpl/assert.hpp" 2
24647 # 62 "../boost/mpl/assert.hpp"
24648 namespace mpl_ {
24649
24650 struct failed {};
24651 # 75 "../boost/mpl/assert.hpp"
24652 template< bool C > struct assert { typedef void* type; };
24653 template<> struct assert<false> { typedef assert type; };
24654
24655 template< bool C >
24656 int assertion_failed( typename assert<C>::type );
24657
24658 template< bool C >
24659 struct assertion
24660 {
24661 static int failed( assert<false> );
24662 };
24663
24664 template<>
24665 struct assertion<true>
24666 {
24667 static int failed( void* );
24668 };
24669
24670 struct assert_
24671 {
24672
24673 template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
24674
24675 static assert_ const arg;
24676 enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal };
24677 };
24678 # 123 "../boost/mpl/assert.hpp"
24679 boost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ );
24680 boost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ );
24681 boost::mpl::aux::weighted_tag<3>::type operator>( assert_, assert_ );
24682 boost::mpl::aux::weighted_tag<4>::type operator>=( assert_, assert_ );
24683 boost::mpl::aux::weighted_tag<5>::type operator<( assert_, assert_ );
24684 boost::mpl::aux::weighted_tag<6>::type operator<=( assert_, assert_ );
24685
24686 template< assert_::relations r, long x, long y > struct assert_relation {};
24687
24688
24689
24690
24691
24692
24693 template< bool > struct assert_arg_pred_impl { typedef int type; };
24694 template<> struct assert_arg_pred_impl<true> { typedef void* type; };
24695
24696 template< typename P > struct assert_arg_pred
24697 {
24698 typedef typename P::type p_type;
24699 typedef typename assert_arg_pred_impl< p_type::value >::type type;
24700 };
24701
24702 template< typename P > struct assert_arg_pred_not
24703 {
24704 typedef typename P::type p_type;
24705 enum { p = !p_type::value };
24706 typedef typename assert_arg_pred_impl<p>::type type;
24707 };
24708
24709 template< typename Pred >
24710 failed ************ (Pred::************
24711 assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
24712 );
24713
24714 template< typename Pred >
24715 failed ************ (boost::mpl::not_<Pred>::************
24716 assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
24717 );
24718
24719 template< typename Pred >
24720 assert<false>
24721 assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
24722
24723 template< typename Pred >
24724 assert<false>
24725 assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
24726 # 212 "../boost/mpl/assert.hpp"
24727 }
24728 # 24 "../boost/mpl/aux_/na_assert.hpp" 2
24729 # 26 "../boost/mpl/arg.hpp" 2
24730 # 1 "../boost/mpl/aux_/arity_spec.hpp" 1
24731 # 27 "../boost/mpl/arg.hpp" 2
24732 # 1 "../boost/mpl/aux_/arg_typedef.hpp" 1
24733 # 28 "../boost/mpl/arg.hpp" 2
24734 # 37 "../boost/mpl/arg.hpp"
24735 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
24736 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
24737 # 1 "../boost/mpl/aux_/preprocessed/gcc/arg.hpp" 1
24738 # 13 "../boost/mpl/aux_/preprocessed/gcc/arg.hpp"
24739 namespace mpl_ {
24740 template<> struct arg< -1 >
24741 {
24742 static const int value = -1;
24743
24744
24745
24746 template<
24747 typename U1 = na, typename U2 = na, typename U3 = na
24748 , typename U4 = na, typename U5 = na
24749 >
24750 struct apply
24751 {
24752 typedef U1 type;
24753 enum { mpl_assertion_in_line_27 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
24754 };
24755 };
24756
24757 template<> struct arg<1>
24758 {
24759 static const int value = 1;
24760 typedef arg<2> next;
24761
24762
24763
24764 template<
24765 typename U1 = na, typename U2 = na, typename U3 = na
24766 , typename U4 = na, typename U5 = na
24767 >
24768 struct apply
24769 {
24770 typedef U1 type;
24771 enum { mpl_assertion_in_line_45 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
24772 };
24773 };
24774
24775 template<> struct arg<2>
24776 {
24777 static const int value = 2;
24778 typedef arg<3> next;
24779
24780
24781
24782 template<
24783 typename U1 = na, typename U2 = na, typename U3 = na
24784 , typename U4 = na, typename U5 = na
24785 >
24786 struct apply
24787 {
24788 typedef U2 type;
24789 enum { mpl_assertion_in_line_63 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
24790 };
24791 };
24792
24793 template<> struct arg<3>
24794 {
24795 static const int value = 3;
24796 typedef arg<4> next;
24797
24798
24799
24800 template<
24801 typename U1 = na, typename U2 = na, typename U3 = na
24802 , typename U4 = na, typename U5 = na
24803 >
24804 struct apply
24805 {
24806 typedef U3 type;
24807 enum { mpl_assertion_in_line_81 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
24808 };
24809 };
24810
24811 template<> struct arg<4>
24812 {
24813 static const int value = 4;
24814 typedef arg<5> next;
24815
24816
24817
24818 template<
24819 typename U1 = na, typename U2 = na, typename U3 = na
24820 , typename U4 = na, typename U5 = na
24821 >
24822 struct apply
24823 {
24824 typedef U4 type;
24825 enum { mpl_assertion_in_line_99 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
24826 };
24827 };
24828
24829 template<> struct arg<5>
24830 {
24831 static const int value = 5;
24832 typedef arg<6> next;
24833
24834
24835
24836 template<
24837 typename U1 = na, typename U2 = na, typename U3 = na
24838 , typename U4 = na, typename U5 = na
24839 >
24840 struct apply
24841 {
24842 typedef U5 type;
24843 enum { mpl_assertion_in_line_117 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
24844 };
24845 };
24846
24847
24848
24849 }
24850 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
24851 # 38 "../boost/mpl/arg.hpp" 2
24852 # 25 "../boost/mpl/placeholders.hpp" 2
24853 # 43 "../boost/mpl/placeholders.hpp"
24854 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
24855 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
24856 # 1 "../boost/mpl/aux_/preprocessed/gcc/placeholders.hpp" 1
24857 # 13 "../boost/mpl/aux_/preprocessed/gcc/placeholders.hpp"
24858 namespace mpl_ {
24859 typedef arg< -1 > _;
24860 }
24861 namespace boost { namespace mpl {
24862
24863 using ::mpl_::_;
24864
24865 namespace placeholders {
24866 using mpl_::_;
24867 }
24868
24869 }}
24870
24871
24872
24873 namespace mpl_ {
24874 typedef arg<1> _1;
24875
24876 }
24877 namespace boost { namespace mpl {
24878
24879 using ::mpl_::_1;
24880
24881 namespace placeholders {
24882 using mpl_::_1;
24883 }
24884
24885 }}
24886 namespace mpl_ {
24887 typedef arg<2> _2;
24888
24889 }
24890 namespace boost { namespace mpl {
24891
24892 using ::mpl_::_2;
24893
24894 namespace placeholders {
24895 using mpl_::_2;
24896 }
24897
24898 }}
24899 namespace mpl_ {
24900 typedef arg<3> _3;
24901
24902 }
24903 namespace boost { namespace mpl {
24904
24905 using ::mpl_::_3;
24906
24907 namespace placeholders {
24908 using mpl_::_3;
24909 }
24910
24911 }}
24912 namespace mpl_ {
24913 typedef arg<4> _4;
24914
24915 }
24916 namespace boost { namespace mpl {
24917
24918 using ::mpl_::_4;
24919
24920 namespace placeholders {
24921 using mpl_::_4;
24922 }
24923
24924 }}
24925 namespace mpl_ {
24926 typedef arg<5> _5;
24927
24928 }
24929 namespace boost { namespace mpl {
24930
24931 using ::mpl_::_5;
24932
24933 namespace placeholders {
24934 using mpl_::_5;
24935 }
24936
24937 }}
24938 namespace mpl_ {
24939 typedef arg<6> _6;
24940
24941 }
24942 namespace boost { namespace mpl {
24943
24944 using ::mpl_::_6;
24945
24946 namespace placeholders {
24947 using mpl_::_6;
24948 }
24949
24950 }}
24951 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
24952 # 44 "../boost/mpl/placeholders.hpp" 2
24953 # 18 "../boost/iterator/iterator_categories.hpp" 2
24954
24955
24956
24957
24958 # 1 "../boost/static_assert.hpp" 1
24959 # 51 "../boost/static_assert.hpp"
24960 namespace boost{
24961
24962
24963 template <bool x> struct STATIC_ASSERTION_FAILURE;
24964
24965 template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
24966
24967
24968 template<int x> struct static_assert_test{};
24969
24970 }
24971 # 23 "../boost/iterator/iterator_categories.hpp" 2
24972
24973 namespace boost {
24974
24975
24976
24977
24978
24979 struct no_traversal_tag {};
24980
24981 struct incrementable_traversal_tag
24982 : no_traversal_tag
24983 {
24984
24985
24986 };
24987
24988 struct single_pass_traversal_tag
24989 : incrementable_traversal_tag
24990 {
24991
24992
24993 };
24994
24995 struct forward_traversal_tag
24996 : single_pass_traversal_tag
24997 {
24998
24999
25000 };
25001
25002 struct bidirectional_traversal_tag
25003 : forward_traversal_tag
25004 {
25005
25006
25007 };
25008
25009 struct random_access_traversal_tag
25010 : bidirectional_traversal_tag
25011 {
25012
25013
25014 };
25015
25016 namespace detail
25017 {
25018
25019
25020
25021
25022
25023
25024 template <class Cat>
25025 struct old_category_to_traversal
25026 : mpl::eval_if<
25027 is_convertible<Cat,std::random_access_iterator_tag>
25028 , mpl::identity<random_access_traversal_tag>
25029 , mpl::eval_if<
25030 is_convertible<Cat,std::bidirectional_iterator_tag>
25031 , mpl::identity<bidirectional_traversal_tag>
25032 , mpl::eval_if<
25033 is_convertible<Cat,std::forward_iterator_tag>
25034 , mpl::identity<forward_traversal_tag>
25035 , mpl::eval_if<
25036 is_convertible<Cat,std::input_iterator_tag>
25037 , mpl::identity<single_pass_traversal_tag>
25038 , mpl::eval_if<
25039 is_convertible<Cat,std::output_iterator_tag>
25040 , mpl::identity<incrementable_traversal_tag>
25041 , void
25042 >
25043 >
25044 >
25045 >
25046 >
25047 {};
25048 # 108 "../boost/iterator/iterator_categories.hpp"
25049 template <class Traversal>
25050 struct pure_traversal_tag
25051 : mpl::eval_if<
25052 is_convertible<Traversal,random_access_traversal_tag>
25053 , mpl::identity<random_access_traversal_tag>
25054 , mpl::eval_if<
25055 is_convertible<Traversal,bidirectional_traversal_tag>
25056 , mpl::identity<bidirectional_traversal_tag>
25057 , mpl::eval_if<
25058 is_convertible<Traversal,forward_traversal_tag>
25059 , mpl::identity<forward_traversal_tag>
25060 , mpl::eval_if<
25061 is_convertible<Traversal,single_pass_traversal_tag>
25062 , mpl::identity<single_pass_traversal_tag>
25063 , mpl::eval_if<
25064 is_convertible<Traversal,incrementable_traversal_tag>
25065 , mpl::identity<incrementable_traversal_tag>
25066 , void
25067 >
25068 >
25069 >
25070 >
25071 >
25072 {
25073 };
25074 # 142 "../boost/iterator/iterator_categories.hpp"
25075 }
25076
25077
25078
25079
25080
25081 template <class Cat>
25082 struct iterator_category_to_traversal
25083 : mpl::eval_if<
25084 is_convertible<Cat,incrementable_traversal_tag>
25085 , mpl::identity<Cat>
25086 , boost::detail::old_category_to_traversal<Cat>
25087 >
25088 {};
25089
25090
25091 template <class Iterator = mpl::_1>
25092 struct iterator_traversal
25093 : iterator_category_to_traversal<
25094 typename boost::detail::iterator_traits<Iterator>::iterator_category
25095 >
25096 {};
25097 # 184 "../boost/iterator/iterator_categories.hpp"
25098 }
25099
25100 # 1 "../boost/iterator/detail/config_undef.hpp" 1
25101 # 187 "../boost/iterator/iterator_categories.hpp" 2
25102 # 8 "../boost/iterator/detail/facade_iterator_category.hpp" 2
25103
25104
25105 # 1 "../boost/mpl/and.hpp" 1
25106 # 42 "../boost/mpl/and.hpp"
25107 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
25108 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
25109 # 1 "../boost/mpl/aux_/preprocessed/gcc/and.hpp" 1
25110 # 12 "../boost/mpl/aux_/preprocessed/gcc/and.hpp"
25111 namespace boost { namespace mpl {
25112
25113 namespace aux {
25114
25115 template< bool C_, typename T1, typename T2, typename T3, typename T4 >
25116 struct and_impl
25117 : false_
25118 {
25119 };
25120
25121 template< typename T1, typename T2, typename T3, typename T4 >
25122 struct and_impl< true,T1,T2,T3,T4 >
25123 : and_impl<
25124 ::boost::mpl::aux::nested_type_wknd<T1>::value
25125 , T2, T3, T4
25126 , true_
25127 >
25128 {
25129 };
25130
25131 template<>
25132 struct and_impl<
25133 true
25134 , true_, true_, true_, true_
25135 >
25136 : true_
25137 {
25138 };
25139
25140 }
25141
25142 template<
25143 typename T1 = na
25144 , typename T2 = na
25145 , typename T3 = true_, typename T4 = true_, typename T5 = true_
25146 >
25147 struct and_
25148
25149 : aux::and_impl<
25150 ::boost::mpl::aux::nested_type_wknd<T1>::value
25151 , T2, T3, T4, T5
25152 >
25153
25154 {
25155
25156
25157
25158
25159
25160 };
25161
25162 template<> struct and_<
25163
25164
25165
25166 na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : and_< T1 , T2 > { }; }; template< typename Tag > struct lambda< and_< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef and_< na , na > result_; typedef and_< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< and_< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< and_< na , na > > : int_<-1> { }; }
25167
25168 }}
25169 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
25170 # 43 "../boost/mpl/and.hpp" 2
25171 # 11 "../boost/iterator/detail/facade_iterator_category.hpp" 2
25172
25173
25174
25175
25176
25177
25178 # 1 "../boost/type_traits/is_const.hpp" 1
25179 # 43 "../boost/type_traits/is_const.hpp"
25180 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
25181 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
25182 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
25183 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
25184 # 44 "../boost/type_traits/is_const.hpp" 2
25185
25186 namespace boost {
25187
25188
25189
25190
25191
25192
25193
25194 namespace detail{
25195
25196
25197
25198
25199 template <class T>
25200 struct is_const_rvalue_filter
25201 {
25202
25203
25204
25205 static const bool value = ::boost::detail::cv_traits_imp<T*>::is_const;
25206
25207 };
25208
25209
25210
25211
25212
25213
25214
25215 }
25216
25217
25218 template< typename T > struct is_const : public ::boost::integral_constant<bool,::boost::detail::is_const_rvalue_filter<T>::value> { public: };
25219 template< typename T > struct is_const< T& > : public ::boost::integral_constant<bool,false> { public: };
25220 # 160 "../boost/type_traits/is_const.hpp"
25221 }
25222
25223 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
25224 # 163 "../boost/type_traits/is_const.hpp" 2
25225 # 18 "../boost/iterator/detail/facade_iterator_category.hpp" 2
25226
25227
25228
25229
25230
25231 # 1 "../boost/iterator/detail/config_def.hpp" 1
25232 # 24 "../boost/iterator/detail/facade_iterator_category.hpp" 2
25233
25234
25235 # 1 "../boost/detail/indirect_traits.hpp" 1
25236
25237
25238
25239
25240
25241
25242 # 1 "../boost/type_traits/is_function.hpp" 1
25243 # 15 "../boost/type_traits/is_function.hpp"
25244 # 1 "../boost/type_traits/detail/false_result.hpp" 1
25245 # 14 "../boost/type_traits/detail/false_result.hpp"
25246 namespace boost {
25247 namespace type_traits {
25248
25249
25250 struct false_result
25251 {
25252 template <typename T> struct result_
25253 {
25254 static const bool value = false;
25255 };
25256 };
25257
25258 }}
25259 # 16 "../boost/type_traits/is_function.hpp" 2
25260
25261
25262
25263 # 1 "../boost/type_traits/detail/is_function_ptr_helper.hpp" 1
25264 # 26 "../boost/type_traits/detail/is_function_ptr_helper.hpp"
25265 namespace boost {
25266 namespace type_traits {
25267
25268 template <class R>
25269 struct is_function_ptr_helper
25270 {
25271 static const bool value = false;
25272 };
25273
25274
25275
25276
25277 template <class R >
25278 struct is_function_ptr_helper<R (*)()> { static const bool value = true; };
25279
25280 template <class R >
25281 struct is_function_ptr_helper<R (*)( ...)> { static const bool value = true; };
25282
25283 template <class R , class T0>
25284 struct is_function_ptr_helper<R (*)( T0)> { static const bool value = true; };
25285
25286 template <class R , class T0>
25287 struct is_function_ptr_helper<R (*)( T0 ...)> { static const bool value = true; };
25288
25289 template <class R , class T0 , class T1>
25290 struct is_function_ptr_helper<R (*)( T0 , T1)> { static const bool value = true; };
25291
25292 template <class R , class T0 , class T1>
25293 struct is_function_ptr_helper<R (*)( T0 , T1 ...)> { static const bool value = true; };
25294
25295 template <class R , class T0 , class T1 , class T2>
25296 struct is_function_ptr_helper<R (*)( T0 , T1 , T2)> { static const bool value = true; };
25297
25298 template <class R , class T0 , class T1 , class T2>
25299 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 ...)> { static const bool value = true; };
25300
25301 template <class R , class T0 , class T1 , class T2 , class T3>
25302 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3)> { static const bool value = true; };
25303
25304 template <class R , class T0 , class T1 , class T2 , class T3>
25305 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 ...)> { static const bool value = true; };
25306
25307 template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
25308 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4)> { static const bool value = true; };
25309
25310 template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
25311 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 ...)> { static const bool value = true; };
25312
25313 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25314 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5)> { static const bool value = true; };
25315
25316 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25317 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)> { static const bool value = true; };
25318
25319 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25320 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { static const bool value = true; };
25321
25322 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25323 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)> { static const bool value = true; };
25324
25325 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25326 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { static const bool value = true; };
25327
25328 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25329 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)> { static const bool value = true; };
25330
25331 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25332 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { static const bool value = true; };
25333
25334 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25335 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)> { static const bool value = true; };
25336
25337 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25338 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { static const bool value = true; };
25339
25340 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25341 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)> { static const bool value = true; };
25342
25343 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25344 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { static const bool value = true; };
25345
25346 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25347 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)> { static const bool value = true; };
25348
25349 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25350 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { static const bool value = true; };
25351
25352 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25353 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)> { static const bool value = true; };
25354
25355 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25356 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { static const bool value = true; };
25357
25358 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25359 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)> { static const bool value = true; };
25360
25361 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25362 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { static const bool value = true; };
25363
25364 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25365 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)> { static const bool value = true; };
25366
25367 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25368 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)> { static const bool value = true; };
25369
25370 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25371 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)> { static const bool value = true; };
25372
25373 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25374 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)> { static const bool value = true; };
25375
25376 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25377 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)> { static const bool value = true; };
25378
25379 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
25380 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)> { static const bool value = true; };
25381
25382 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
25383 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)> { static const bool value = true; };
25384
25385 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
25386 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)> { static const bool value = true; };
25387
25388 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
25389 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)> { static const bool value = true; };
25390
25391 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
25392 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)> { static const bool value = true; };
25393
25394 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
25395 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)> { static const bool value = true; };
25396
25397 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
25398 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)> { static const bool value = true; };
25399
25400 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
25401 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)> { static const bool value = true; };
25402
25403 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
25404 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)> { static const bool value = true; };
25405
25406 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
25407 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)> { static const bool value = true; };
25408
25409 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
25410 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)> { static const bool value = true; };
25411
25412 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
25413 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)> { static const bool value = true; };
25414
25415 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
25416 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)> { static const bool value = true; };
25417
25418 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
25419 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)> { static const bool value = true; };
25420
25421 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
25422 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)> { static const bool value = true; };
25423
25424 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
25425 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)> { static const bool value = true; };
25426
25427 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
25428 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)> { static const bool value = true; };
25429
25430 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
25431 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)> { static const bool value = true; };
25432 # 203 "../boost/type_traits/detail/is_function_ptr_helper.hpp"
25433 }
25434 }
25435 # 20 "../boost/type_traits/is_function.hpp" 2
25436
25437
25438
25439
25440
25441
25442 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
25443 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
25444 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
25445 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
25446 # 27 "../boost/type_traits/is_function.hpp" 2
25447
25448
25449
25450
25451
25452
25453
25454 namespace boost {
25455
25456
25457
25458 namespace detail {
25459
25460
25461 template<bool is_ref = true>
25462 struct is_function_chooser
25463 : public ::boost::type_traits::false_result
25464 {
25465 };
25466
25467 template <>
25468 struct is_function_chooser<false>
25469 {
25470 template< typename T > struct result_
25471 : public ::boost::type_traits::is_function_ptr_helper<T*>
25472 {
25473 };
25474 };
25475
25476 template <typename T>
25477 struct is_function_impl
25478 : public is_function_chooser< ::boost::is_reference<T>::value >
25479 ::template result_<T>
25480 {
25481 };
25482 # 90 "../boost/type_traits/is_function.hpp"
25483 }
25484
25485
25486
25487
25488
25489
25490 template< typename T > struct is_function : public ::boost::integral_constant<bool,::boost::detail::is_function_impl<T>::value> { public: };
25491
25492
25493
25494
25495 }
25496
25497 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
25498 # 105 "../boost/type_traits/is_function.hpp" 2
25499 # 8 "../boost/detail/indirect_traits.hpp" 2
25500
25501 # 1 "../boost/type_traits/is_pointer.hpp" 1
25502 # 24 "../boost/type_traits/is_pointer.hpp"
25503 # 1 "../boost/type_traits/is_member_pointer.hpp" 1
25504 # 28 "../boost/type_traits/is_member_pointer.hpp"
25505 # 1 "../boost/type_traits/is_member_function_pointer.hpp" 1
25506 # 24 "../boost/type_traits/is_member_function_pointer.hpp"
25507 # 1 "../boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 1
25508 # 25 "../boost/type_traits/detail/is_mem_fun_pointer_impl.hpp"
25509 namespace boost {
25510 namespace type_traits {
25511
25512 template <typename T>
25513 struct is_mem_fun_pointer_impl
25514 {
25515 static const bool value = false;
25516 };
25517
25518
25519
25520
25521
25522 template <class R, class T >
25523 struct is_mem_fun_pointer_impl<R (T::*)() > { static const bool value = true; };
25524
25525 template <class R, class T >
25526 struct is_mem_fun_pointer_impl<R (T::*)( ...) > { static const bool value = true; };
25527
25528
25529
25530 template <class R, class T >
25531 struct is_mem_fun_pointer_impl<R (T::*)() const > { static const bool value = true; };
25532
25533 template <class R, class T >
25534 struct is_mem_fun_pointer_impl<R (T::*)() volatile > { static const bool value = true; };
25535
25536 template <class R, class T >
25537 struct is_mem_fun_pointer_impl<R (T::*)() const volatile > { static const bool value = true; };
25538
25539
25540 template <class R, class T >
25541 struct is_mem_fun_pointer_impl<R (T::*)( ...) const > { static const bool value = true; };
25542
25543 template <class R, class T >
25544 struct is_mem_fun_pointer_impl<R (T::*)( ...) volatile > { static const bool value = true; };
25545
25546 template <class R, class T >
25547 struct is_mem_fun_pointer_impl<R (T::*)( ...) const volatile > { static const bool value = true; };
25548
25549
25550 template <class R, class T , class T0>
25551 struct is_mem_fun_pointer_impl<R (T::*)( T0) > { static const bool value = true; };
25552
25553 template <class R, class T , class T0>
25554 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) > { static const bool value = true; };
25555
25556
25557
25558 template <class R, class T , class T0>
25559 struct is_mem_fun_pointer_impl<R (T::*)( T0) const > { static const bool value = true; };
25560
25561 template <class R, class T , class T0>
25562 struct is_mem_fun_pointer_impl<R (T::*)( T0) volatile > { static const bool value = true; };
25563
25564 template <class R, class T , class T0>
25565 struct is_mem_fun_pointer_impl<R (T::*)( T0) const volatile > { static const bool value = true; };
25566
25567
25568 template <class R, class T , class T0>
25569 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const > { static const bool value = true; };
25570
25571 template <class R, class T , class T0>
25572 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) volatile > { static const bool value = true; };
25573
25574 template <class R, class T , class T0>
25575 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const volatile > { static const bool value = true; };
25576
25577
25578 template <class R, class T , class T0 , class T1>
25579 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) > { static const bool value = true; };
25580
25581 template <class R, class T , class T0 , class T1>
25582 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) > { static const bool value = true; };
25583
25584
25585
25586 template <class R, class T , class T0 , class T1>
25587 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const > { static const bool value = true; };
25588
25589 template <class R, class T , class T0 , class T1>
25590 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) volatile > { static const bool value = true; };
25591
25592 template <class R, class T , class T0 , class T1>
25593 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const volatile > { static const bool value = true; };
25594
25595
25596 template <class R, class T , class T0 , class T1>
25597 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const > { static const bool value = true; };
25598
25599 template <class R, class T , class T0 , class T1>
25600 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) volatile > { static const bool value = true; };
25601
25602 template <class R, class T , class T0 , class T1>
25603 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const volatile > { static const bool value = true; };
25604
25605
25606 template <class R, class T , class T0 , class T1 , class T2>
25607 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) > { static const bool value = true; };
25608
25609 template <class R, class T , class T0 , class T1 , class T2>
25610 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) > { static const bool value = true; };
25611
25612
25613
25614 template <class R, class T , class T0 , class T1 , class T2>
25615 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const > { static const bool value = true; };
25616
25617 template <class R, class T , class T0 , class T1 , class T2>
25618 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) volatile > { static const bool value = true; };
25619
25620 template <class R, class T , class T0 , class T1 , class T2>
25621 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const volatile > { static const bool value = true; };
25622
25623
25624 template <class R, class T , class T0 , class T1 , class T2>
25625 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const > { static const bool value = true; };
25626
25627 template <class R, class T , class T0 , class T1 , class T2>
25628 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) volatile > { static const bool value = true; };
25629
25630 template <class R, class T , class T0 , class T1 , class T2>
25631 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const volatile > { static const bool value = true; };
25632
25633
25634 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25635 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) > { static const bool value = true; };
25636
25637 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25638 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) > { static const bool value = true; };
25639
25640
25641
25642 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25643 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const > { static const bool value = true; };
25644
25645 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25646 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) volatile > { static const bool value = true; };
25647
25648 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25649 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const volatile > { static const bool value = true; };
25650
25651
25652 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25653 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const > { static const bool value = true; };
25654
25655 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25656 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) volatile > { static const bool value = true; };
25657
25658 template <class R, class T , class T0 , class T1 , class T2 , class T3>
25659 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const volatile > { static const bool value = true; };
25660
25661
25662 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25663 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) > { static const bool value = true; };
25664
25665 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25666 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) > { static const bool value = true; };
25667
25668
25669
25670 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25671 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const > { static const bool value = true; };
25672
25673 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25674 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) volatile > { static const bool value = true; };
25675
25676 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25677 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const volatile > { static const bool value = true; };
25678
25679
25680 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25681 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const > { static const bool value = true; };
25682
25683 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25684 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) volatile > { static const bool value = true; };
25685
25686 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
25687 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const volatile > { static const bool value = true; };
25688
25689
25690 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25691 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) > { static const bool value = true; };
25692
25693 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25694 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) > { static const bool value = true; };
25695
25696
25697
25698 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25699 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const > { static const bool value = true; };
25700
25701 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25702 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) volatile > { static const bool value = true; };
25703
25704 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25705 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile > { static const bool value = true; };
25706
25707
25708 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25709 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const > { static const bool value = true; };
25710
25711 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25712 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile > { static const bool value = true; };
25713
25714 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
25715 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile > { static const bool value = true; };
25716
25717
25718 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25719 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) > { static const bool value = true; };
25720
25721 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25722 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) > { static const bool value = true; };
25723
25724
25725
25726 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25727 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const > { static const bool value = true; };
25728
25729 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25730 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile > { static const bool value = true; };
25731
25732 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25733 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile > { static const bool value = true; };
25734
25735
25736 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25737 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const > { static const bool value = true; };
25738
25739 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25740 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile > { static const bool value = true; };
25741
25742 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
25743 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile > { static const bool value = true; };
25744
25745
25746 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25747 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) > { static const bool value = true; };
25748
25749 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25750 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) > { static const bool value = true; };
25751
25752
25753
25754 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25755 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const > { static const bool value = true; };
25756
25757 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25758 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile > { static const bool value = true; };
25759
25760 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25761 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile > { static const bool value = true; };
25762
25763
25764 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25765 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const > { static const bool value = true; };
25766
25767 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25768 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile > { static const bool value = true; };
25769
25770 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
25771 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile > { static const bool value = true; };
25772
25773
25774 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25775 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) > { static const bool value = true; };
25776
25777 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25778 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) > { static const bool value = true; };
25779
25780
25781
25782 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25783 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const > { static const bool value = true; };
25784
25785 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25786 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile > { static const bool value = true; };
25787
25788 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25789 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile > { static const bool value = true; };
25790
25791
25792 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25793 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const > { static const bool value = true; };
25794
25795 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25796 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile > { static const bool value = true; };
25797
25798 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
25799 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile > { static const bool value = true; };
25800
25801
25802 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25803 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) > { static const bool value = true; };
25804
25805 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25806 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) > { static const bool value = true; };
25807
25808
25809
25810 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25811 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const > { static const bool value = true; };
25812
25813 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25814 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile > { static const bool value = true; };
25815
25816 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25817 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile > { static const bool value = true; };
25818
25819
25820 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25821 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const > { static const bool value = true; };
25822
25823 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25824 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile > { static const bool value = true; };
25825
25826 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
25827 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile > { static const bool value = true; };
25828
25829
25830 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25831 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) > { static const bool value = true; };
25832
25833 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25834 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) > { static const bool value = true; };
25835
25836
25837
25838 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25839 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const > { static const bool value = true; };
25840
25841 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25842 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile > { static const bool value = true; };
25843
25844 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25845 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile > { static const bool value = true; };
25846
25847
25848 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25849 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const > { static const bool value = true; };
25850
25851 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25852 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile > { static const bool value = true; };
25853
25854 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
25855 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile > { static const bool value = true; };
25856
25857
25858 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25859 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) > { static const bool value = true; };
25860
25861 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25862 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) > { static const bool value = true; };
25863
25864
25865
25866 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25867 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const > { static const bool value = true; };
25868
25869 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25870 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile > { static const bool value = true; };
25871
25872 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25873 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile > { static const bool value = true; };
25874
25875
25876 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25877 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const > { static const bool value = true; };
25878
25879 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25880 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile > { static const bool value = true; };
25881
25882 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
25883 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile > { static const bool value = true; };
25884
25885
25886 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25887 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) > { static const bool value = true; };
25888
25889 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25890 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) > { static const bool value = true; };
25891
25892
25893
25894 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25895 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const > { static const bool value = true; };
25896
25897 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25898 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile > { static const bool value = true; };
25899
25900 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25901 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile > { static const bool value = true; };
25902
25903
25904 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25905 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const > { static const bool value = true; };
25906
25907 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25908 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile > { static const bool value = true; };
25909
25910 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
25911 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile > { static const bool value = true; };
25912
25913
25914 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25915 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) > { static const bool value = true; };
25916
25917 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25918 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) > { static const bool value = true; };
25919
25920
25921
25922 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25923 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const > { static const bool value = true; };
25924
25925 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25926 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile > { static const bool value = true; };
25927
25928 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25929 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile > { static const bool value = true; };
25930
25931
25932 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25933 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const > { static const bool value = true; };
25934
25935 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25936 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile > { static const bool value = true; };
25937
25938 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
25939 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile > { static const bool value = true; };
25940
25941
25942 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25943 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) > { static const bool value = true; };
25944
25945 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25946 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) > { static const bool value = true; };
25947
25948
25949
25950 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25951 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const > { static const bool value = true; };
25952
25953 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25954 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile > { static const bool value = true; };
25955
25956 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25957 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile > { static const bool value = true; };
25958
25959
25960 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25961 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const > { static const bool value = true; };
25962
25963 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25964 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile > { static const bool value = true; };
25965
25966 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
25967 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile > { static const bool value = true; };
25968
25969
25970 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25971 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) > { static const bool value = true; };
25972
25973 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25974 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) > { static const bool value = true; };
25975
25976
25977
25978 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25979 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const > { static const bool value = true; };
25980
25981 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25982 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile > { static const bool value = true; };
25983
25984 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25985 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile > { static const bool value = true; };
25986
25987
25988 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25989 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const > { static const bool value = true; };
25990
25991 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25992 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile > { static const bool value = true; };
25993
25994 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
25995 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile > { static const bool value = true; };
25996
25997
25998 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
25999 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) > { static const bool value = true; };
26000
26001 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26002 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) > { static const bool value = true; };
26003
26004
26005
26006 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26007 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const > { static const bool value = true; };
26008
26009 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26010 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile > { static const bool value = true; };
26011
26012 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26013 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile > { static const bool value = true; };
26014
26015
26016 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26017 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const > { static const bool value = true; };
26018
26019 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26020 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile > { static const bool value = true; };
26021
26022 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
26023 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile > { static const bool value = true; };
26024
26025
26026 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26027 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) > { static const bool value = true; };
26028
26029 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26030 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) > { static const bool value = true; };
26031
26032
26033
26034 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26035 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const > { static const bool value = true; };
26036
26037 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26038 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile > { static const bool value = true; };
26039
26040 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26041 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile > { static const bool value = true; };
26042
26043
26044 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26045 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const > { static const bool value = true; };
26046
26047 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26048 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile > { static const bool value = true; };
26049
26050 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
26051 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile > { static const bool value = true; };
26052
26053
26054 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26055 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) > { static const bool value = true; };
26056
26057 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26058 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) > { static const bool value = true; };
26059
26060
26061
26062 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26063 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const > { static const bool value = true; };
26064
26065 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26066 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile > { static const bool value = true; };
26067
26068 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26069 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile > { static const bool value = true; };
26070
26071
26072 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26073 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const > { static const bool value = true; };
26074
26075 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26076 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile > { static const bool value = true; };
26077
26078 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
26079 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile > { static const bool value = true; };
26080
26081
26082 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26083 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) > { static const bool value = true; };
26084
26085 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26086 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) > { static const bool value = true; };
26087
26088
26089
26090 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26091 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const > { static const bool value = true; };
26092
26093 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26094 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile > { static const bool value = true; };
26095
26096 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26097 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile > { static const bool value = true; };
26098
26099
26100 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26101 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const > { static const bool value = true; };
26102
26103 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26104 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile > { static const bool value = true; };
26105
26106 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
26107 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile > { static const bool value = true; };
26108
26109
26110 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26111 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) > { static const bool value = true; };
26112
26113 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26114 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) > { static const bool value = true; };
26115
26116
26117
26118 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26119 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const > { static const bool value = true; };
26120
26121 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26122 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile > { static const bool value = true; };
26123
26124 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26125 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile > { static const bool value = true; };
26126
26127
26128 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26129 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const > { static const bool value = true; };
26130
26131 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26132 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile > { static const bool value = true; };
26133
26134 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
26135 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile > { static const bool value = true; };
26136
26137
26138 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26139 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) > { static const bool value = true; };
26140
26141 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26142 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) > { static const bool value = true; };
26143
26144
26145
26146 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26147 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const > { static const bool value = true; };
26148
26149 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26150 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile > { static const bool value = true; };
26151
26152 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26153 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile > { static const bool value = true; };
26154
26155
26156 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26157 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const > { static const bool value = true; };
26158
26159 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26160 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile > { static const bool value = true; };
26161
26162 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
26163 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile > { static const bool value = true; };
26164
26165
26166 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26167 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) > { static const bool value = true; };
26168
26169 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26170 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) > { static const bool value = true; };
26171
26172
26173
26174 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26175 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const > { static const bool value = true; };
26176
26177 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26178 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile > { static const bool value = true; };
26179
26180 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26181 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile > { static const bool value = true; };
26182
26183
26184 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26185 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const > { static const bool value = true; };
26186
26187 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26188 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile > { static const bool value = true; };
26189
26190 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
26191 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile > { static const bool value = true; };
26192
26193
26194 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26195 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) > { static const bool value = true; };
26196
26197 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26198 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) > { static const bool value = true; };
26199
26200
26201
26202 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26203 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const > { static const bool value = true; };
26204
26205 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26206 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile > { static const bool value = true; };
26207
26208 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26209 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile > { static const bool value = true; };
26210
26211
26212 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26213 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const > { static const bool value = true; };
26214
26215 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26216 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile > { static const bool value = true; };
26217
26218 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
26219 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile > { static const bool value = true; };
26220
26221
26222 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26223 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) > { static const bool value = true; };
26224
26225 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26226 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) > { static const bool value = true; };
26227
26228
26229
26230 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26231 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const > { static const bool value = true; };
26232
26233 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26234 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile > { static const bool value = true; };
26235
26236 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26237 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile > { static const bool value = true; };
26238
26239
26240 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26241 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const > { static const bool value = true; };
26242
26243 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26244 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile > { static const bool value = true; };
26245
26246 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
26247 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile > { static const bool value = true; };
26248 # 776 "../boost/type_traits/detail/is_mem_fun_pointer_impl.hpp"
26249 }
26250 }
26251 # 25 "../boost/type_traits/is_member_function_pointer.hpp" 2
26252 # 1 "../boost/type_traits/remove_cv.hpp" 1
26253 # 14 "../boost/type_traits/remove_cv.hpp"
26254 # 1 "../boost/type_traits/broken_compiler_spec.hpp" 1
26255 # 95 "../boost/type_traits/broken_compiler_spec.hpp"
26256
26257
26258
26259
26260
26261
26262
26263
26264
26265
26266
26267
26268
26269
26270
26271 # 15 "../boost/type_traits/remove_cv.hpp" 2
26272
26273
26274
26275
26276 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
26277 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
26278
26279 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
26280
26281
26282 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
26283 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
26284 # 20 "../boost/type_traits/remove_cv.hpp" 2
26285
26286
26287
26288
26289
26290
26291 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
26292 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
26293 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26294 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
26295 # 27 "../boost/type_traits/remove_cv.hpp" 2
26296
26297 namespace boost {
26298
26299
26300
26301 namespace detail{
26302
26303 template <class T>
26304 struct rvalue_ref_filter_rem_cv
26305 {
26306 typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
26307 };
26308 # 52 "../boost/type_traits/remove_cv.hpp"
26309 }
26310
26311
26312
26313 template< typename T > struct remove_cv { public: typedef typename boost::detail::rvalue_ref_filter_rem_cv<T>::type type; };
26314 template< typename T > struct remove_cv<T&> { public: typedef T& type; };
26315
26316 template< typename T, std::size_t N > struct remove_cv<T const[N]> { public: typedef T type[N]; };
26317 template< typename T, std::size_t N > struct remove_cv<T volatile[N]> { public: typedef T type[N]; };
26318 template< typename T, std::size_t N > struct remove_cv<T const volatile[N]> { public: typedef T type[N]; };
26319 # 80 "../boost/type_traits/remove_cv.hpp"
26320 }
26321
26322 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
26323 # 83 "../boost/type_traits/remove_cv.hpp" 2
26324 # 26 "../boost/type_traits/is_member_function_pointer.hpp" 2
26325 # 36 "../boost/type_traits/is_member_function_pointer.hpp"
26326 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
26327 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
26328 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26329 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
26330 # 37 "../boost/type_traits/is_member_function_pointer.hpp" 2
26331
26332 namespace boost {
26333
26334
26335
26336
26337
26338 template< typename T > struct is_member_function_pointer : public ::boost::integral_constant<bool,::boost::type_traits::is_mem_fun_pointer_impl<typename remove_cv<T>::type>::value> { public: };
26339 # 132 "../boost/type_traits/is_member_function_pointer.hpp"
26340 }
26341
26342 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
26343 # 135 "../boost/type_traits/is_member_function_pointer.hpp" 2
26344 # 29 "../boost/type_traits/is_member_pointer.hpp" 2
26345 # 39 "../boost/type_traits/is_member_pointer.hpp"
26346 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
26347 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
26348 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26349 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
26350 # 40 "../boost/type_traits/is_member_pointer.hpp" 2
26351
26352 namespace boost {
26353 # 50 "../boost/type_traits/is_member_pointer.hpp"
26354 template< typename T > struct is_member_pointer : public ::boost::integral_constant<bool,::boost::is_member_function_pointer<T>::value> { public: };
26355 template< typename T, typename U > struct is_member_pointer< U T::* > : public ::boost::integral_constant<bool,true> { public: };
26356
26357
26358 template< typename T, typename U > struct is_member_pointer< U T::*const > : public ::boost::integral_constant<bool,true> { public: };
26359 template< typename T, typename U > struct is_member_pointer< U T::*volatile > : public ::boost::integral_constant<bool,true> { public: };
26360 template< typename T, typename U > struct is_member_pointer< U T::*const volatile > : public ::boost::integral_constant<bool,true> { public: };
26361 # 112 "../boost/type_traits/is_member_pointer.hpp"
26362 }
26363
26364 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
26365 # 115 "../boost/type_traits/is_member_pointer.hpp" 2
26366 # 25 "../boost/type_traits/is_pointer.hpp" 2
26367 # 41 "../boost/type_traits/is_pointer.hpp"
26368 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
26369 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
26370 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26371 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
26372 # 42 "../boost/type_traits/is_pointer.hpp" 2
26373
26374 namespace boost {
26375
26376
26377
26378
26379
26380 namespace detail {
26381
26382 template< typename T > struct is_pointer_helper
26383 {
26384 static const bool value = false;
26385 };
26386 # 63 "../boost/type_traits/is_pointer.hpp"
26387 template< typename T > struct is_pointer_helper<T*> { static const bool value = true; };
26388
26389
26390
26391 template< typename T >
26392 struct is_pointer_impl
26393 {
26394 # 80 "../boost/type_traits/is_pointer.hpp"
26395 static const bool value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper<typename remove_cv<T>::type>::value , ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value >::value)
26396
26397
26398
26399
26400
26401
26402 ;
26403
26404 };
26405
26406 }
26407
26408 template< typename T > struct is_pointer : public ::boost::integral_constant<bool,::boost::detail::is_pointer_impl<T>::value> { public: };
26409 # 158 "../boost/type_traits/is_pointer.hpp"
26410 }
26411
26412 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
26413 # 161 "../boost/type_traits/is_pointer.hpp" 2
26414 # 10 "../boost/detail/indirect_traits.hpp" 2
26415 # 1 "../boost/type_traits/is_class.hpp" 1
26416 # 37 "../boost/type_traits/is_class.hpp"
26417 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
26418 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
26419 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26420 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
26421 # 38 "../boost/type_traits/is_class.hpp" 2
26422
26423 namespace boost {
26424
26425 namespace detail {
26426 # 120 "../boost/type_traits/is_class.hpp"
26427 template <typename T>
26428 struct is_class_impl
26429 {
26430 static const bool value = __is_class(T);
26431 };
26432
26433
26434 }
26435
26436
26437
26438
26439
26440 template< typename T > struct is_class : public ::boost::integral_constant<bool,::boost::detail::is_class_impl<T>::value> { public: };
26441
26442
26443 }
26444
26445 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
26446 # 139 "../boost/type_traits/is_class.hpp" 2
26447 # 11 "../boost/detail/indirect_traits.hpp" 2
26448
26449
26450
26451
26452
26453 # 1 "../boost/type_traits/remove_reference.hpp" 1
26454 # 21 "../boost/type_traits/remove_reference.hpp"
26455 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
26456 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
26457 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26458 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
26459 # 22 "../boost/type_traits/remove_reference.hpp" 2
26460
26461 namespace boost {
26462
26463
26464
26465 namespace detail{
26466
26467
26468
26469
26470 template <class T>
26471 struct remove_rvalue_ref
26472 {
26473 typedef T type;
26474 };
26475 # 45 "../boost/type_traits/remove_reference.hpp"
26476 }
26477
26478 template< typename T > struct remove_reference { public: typedef typename boost::detail::remove_rvalue_ref<T>::type type; };
26479 template< typename T > struct remove_reference<T&> { public: typedef T type; };
26480 # 66 "../boost/type_traits/remove_reference.hpp"
26481 }
26482
26483 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
26484 # 69 "../boost/type_traits/remove_reference.hpp" 2
26485 # 17 "../boost/detail/indirect_traits.hpp" 2
26486 # 1 "../boost/type_traits/remove_pointer.hpp" 1
26487 # 26 "../boost/type_traits/remove_pointer.hpp"
26488 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
26489 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
26490 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26491 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
26492 # 27 "../boost/type_traits/remove_pointer.hpp" 2
26493
26494 namespace boost {
26495 # 76 "../boost/type_traits/remove_pointer.hpp"
26496 template< typename T > struct remove_pointer { public: typedef T type; };
26497 template< typename T > struct remove_pointer<T*> { public: typedef T type; };
26498 template< typename T > struct remove_pointer<T* const> { public: typedef T type; };
26499 template< typename T > struct remove_pointer<T* volatile> { public: typedef T type; };
26500 template< typename T > struct remove_pointer<T* const volatile> { public: typedef T type; };
26501
26502
26503
26504
26505
26506
26507
26508 }
26509
26510 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
26511 # 91 "../boost/type_traits/remove_pointer.hpp" 2
26512 # 18 "../boost/detail/indirect_traits.hpp" 2
26513 # 33 "../boost/detail/indirect_traits.hpp"
26514 namespace boost { namespace detail {
26515
26516 namespace indirect_traits {
26517
26518
26519 template <class T>
26520 struct is_reference_to_const : mpl::false_
26521 {
26522 };
26523
26524 template <class T>
26525 struct is_reference_to_const<T const&> : mpl::true_
26526 {
26527 };
26528 # 55 "../boost/detail/indirect_traits.hpp"
26529 template <class T>
26530 struct is_reference_to_function : mpl::false_
26531 {
26532 };
26533
26534 template <class T>
26535 struct is_reference_to_function<T&> : is_function<T>
26536 {
26537 };
26538
26539 template <class T>
26540 struct is_pointer_to_function : mpl::false_
26541 {
26542 };
26543
26544
26545
26546 template <class T>
26547 struct is_pointer_to_function<T*> : is_function<T>
26548 {
26549 };
26550
26551 template <class T>
26552 struct is_reference_to_member_function_pointer_impl : mpl::false_
26553 {
26554 };
26555
26556 template <class T>
26557 struct is_reference_to_member_function_pointer_impl<T&>
26558 : is_member_function_pointer<typename remove_cv<T>::type>
26559 {
26560 };
26561
26562
26563 template <class T>
26564 struct is_reference_to_member_function_pointer
26565 : is_reference_to_member_function_pointer_impl<T>
26566 {
26567
26568 };
26569
26570 template <class T>
26571 struct is_reference_to_function_pointer_aux
26572 : mpl::and_<
26573 is_reference<T>
26574 , is_pointer_to_function<
26575 typename remove_cv<
26576 typename remove_reference<T>::type
26577 >::type
26578 >
26579 >
26580 {
26581
26582 };
26583
26584 template <class T>
26585 struct is_reference_to_function_pointer
26586 : mpl::if_<
26587 is_reference_to_function<T>
26588 , mpl::false_
26589 , is_reference_to_function_pointer_aux<T>
26590 >::type
26591 {
26592 };
26593
26594 template <class T>
26595 struct is_reference_to_non_const
26596 : mpl::and_<
26597 is_reference<T>
26598 , mpl::not_<
26599 is_reference_to_const<T>
26600 >
26601 >
26602 {
26603 };
26604
26605 template <class T>
26606 struct is_reference_to_volatile : mpl::false_
26607 {
26608 };
26609
26610 template <class T>
26611 struct is_reference_to_volatile<T volatile&> : mpl::true_
26612 {
26613 };
26614 # 149 "../boost/detail/indirect_traits.hpp"
26615 template <class T>
26616 struct is_reference_to_pointer : mpl::false_
26617 {
26618 };
26619
26620 template <class T>
26621 struct is_reference_to_pointer<T*&> : mpl::true_
26622 {
26623 };
26624
26625 template <class T>
26626 struct is_reference_to_pointer<T* const&> : mpl::true_
26627 {
26628 };
26629
26630 template <class T>
26631 struct is_reference_to_pointer<T* volatile&> : mpl::true_
26632 {
26633 };
26634
26635 template <class T>
26636 struct is_reference_to_pointer<T* const volatile&> : mpl::true_
26637 {
26638 };
26639
26640 template <class T>
26641 struct is_reference_to_class
26642 : mpl::and_<
26643 is_reference<T>
26644 , is_class<
26645 typename remove_cv<
26646 typename remove_reference<T>::type
26647 >::type
26648 >
26649 >
26650 {
26651
26652 };
26653
26654 template <class T>
26655 struct is_pointer_to_class
26656 : mpl::and_<
26657 is_pointer<T>
26658 , is_class<
26659 typename remove_cv<
26660 typename remove_pointer<T>::type
26661 >::type
26662 >
26663 >
26664 {
26665
26666 };
26667 # 481 "../boost/detail/indirect_traits.hpp"
26668 }
26669
26670 using namespace indirect_traits;
26671
26672 }}
26673 # 27 "../boost/iterator/detail/facade_iterator_category.hpp" 2
26674
26675
26676
26677
26678
26679
26680
26681 namespace boost { struct use_default; }
26682
26683 namespace boost { namespace detail {
26684
26685 struct input_output_iterator_tag
26686 : std::input_iterator_tag
26687 {
26688
26689
26690
26691
26692
26693
26694 operator std::output_iterator_tag() const
26695 {
26696 return std::output_iterator_tag();
26697 }
26698 };
26699
26700
26701
26702
26703
26704
26705 template <class ValueParam, class Reference>
26706 struct iterator_writability_disabled
26707
26708 : mpl::or_<
26709 is_const<Reference>
26710 , boost::detail::indirect_traits::is_reference_to_const<Reference>
26711 , is_const<ValueParam>
26712 >
26713
26714
26715
26716 {};
26717 # 86 "../boost/iterator/detail/facade_iterator_category.hpp"
26718 template <class Traversal, class ValueParam, class Reference>
26719 struct iterator_facade_default_category
26720 : mpl::eval_if<
26721 mpl::and_<
26722 is_reference<Reference>
26723 , is_convertible<Traversal,forward_traversal_tag>
26724 >
26725 , mpl::eval_if<
26726 is_convertible<Traversal,random_access_traversal_tag>
26727 , mpl::identity<std::random_access_iterator_tag>
26728 , mpl::if_<
26729 is_convertible<Traversal,bidirectional_traversal_tag>
26730 , std::bidirectional_iterator_tag
26731 , std::forward_iterator_tag
26732 >
26733 >
26734 , typename mpl::eval_if<
26735 mpl::and_<
26736 is_convertible<Traversal, single_pass_traversal_tag>
26737
26738
26739 , is_convertible<Reference, ValueParam>
26740 >
26741 , mpl::identity<std::input_iterator_tag>
26742 , mpl::identity<Traversal>
26743 >
26744 >
26745 {
26746 };
26747
26748
26749 template <class T>
26750 struct is_iterator_category
26751 : mpl::or_<
26752 is_convertible<T,std::input_iterator_tag>
26753 , is_convertible<T,std::output_iterator_tag>
26754 >
26755 {
26756 };
26757
26758 template <class T>
26759 struct is_iterator_traversal
26760 : is_convertible<T,incrementable_traversal_tag>
26761 {};
26762
26763
26764
26765
26766
26767
26768
26769 template <class Category, class Traversal>
26770 struct iterator_category_with_traversal
26771 : Category, Traversal
26772 {
26773
26774
26775
26776
26777 enum { mpl_assertion_in_line_149 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) ( is_convertible< typename iterator_category_to_traversal<Category>::type , Traversal >))0, 1 ) ) ) }
26778
26779
26780
26781 ;
26782
26783 enum { mpl_assertion_in_line_151 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (is_iterator_category<Category>))0, 1 ) ) ) };
26784 enum { mpl_assertion_in_line_152 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (is_iterator_category<Traversal>))0, 1 ) ) ) };
26785 enum { mpl_assertion_in_line_153 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (is_iterator_traversal<Category>))0, 1 ) ) ) };
26786
26787 enum { mpl_assertion_in_line_155 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (is_iterator_traversal<Traversal>))0, 1 ) ) ) };
26788
26789
26790 };
26791
26792
26793
26794 template <class Traversal, class ValueParam, class Reference>
26795 struct facade_iterator_category_impl
26796 {
26797
26798 enum { mpl_assertion_in_line_166 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (is_iterator_category<Traversal>))0, 1 ) ) ) };
26799
26800
26801 typedef typename iterator_facade_default_category<
26802 Traversal,ValueParam,Reference
26803 >::type category;
26804
26805 typedef typename mpl::if_<
26806 is_same<
26807 Traversal
26808 , typename iterator_category_to_traversal<category>::type
26809 >
26810 , category
26811 , iterator_category_with_traversal<category,Traversal>
26812 >::type type;
26813 };
26814
26815
26816
26817
26818 template <class CategoryOrTraversal, class ValueParam, class Reference>
26819 struct facade_iterator_category
26820 : mpl::eval_if<
26821 is_iterator_category<CategoryOrTraversal>
26822 , mpl::identity<CategoryOrTraversal>
26823 , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
26824 >
26825 {
26826 };
26827
26828 }}
26829
26830 # 1 "../boost/iterator/detail/config_undef.hpp" 1
26831 # 199 "../boost/iterator/detail/facade_iterator_category.hpp" 2
26832 # 15 "../boost/iterator/iterator_facade.hpp" 2
26833 # 1 "../boost/iterator/detail/enable_if.hpp" 1
26834 # 13 "../boost/iterator/detail/enable_if.hpp"
26835 # 1 "../boost/iterator/detail/config_def.hpp" 1
26836 # 14 "../boost/iterator/detail/enable_if.hpp" 2
26837
26838
26839
26840
26841
26842
26843
26844 namespace boost
26845 {
26846
26847 namespace iterators
26848 {
26849
26850
26851
26852 template<bool>
26853 struct enabled
26854 {
26855 template<typename T>
26856 struct base
26857 {
26858 typedef T type;
26859 };
26860 };
26861
26862
26863
26864
26865
26866
26867 template<>
26868 struct enabled<false>
26869 {
26870 template<typename T>
26871 struct base
26872 {
26873 # 62 "../boost/iterator/detail/enable_if.hpp"
26874 };
26875 };
26876
26877
26878 template <class Cond,
26879 class Return>
26880 struct enable_if
26881
26882 : enabled<(Cond::value)>::template base<Return>
26883
26884
26885
26886 {
26887
26888
26889
26890 };
26891
26892 }
26893
26894 }
26895
26896 # 1 "../boost/iterator/detail/config_undef.hpp" 1
26897 # 85 "../boost/iterator/detail/enable_if.hpp" 2
26898 # 16 "../boost/iterator/iterator_facade.hpp" 2
26899
26900 # 1 "../boost/implicit_cast.hpp" 1
26901 # 10 "../boost/implicit_cast.hpp"
26902 namespace boost {
26903
26904
26905
26906
26907
26908
26909 template <typename T>
26910 inline T implicit_cast (typename mpl::identity<T>::type x) {
26911 return x;
26912 }
26913
26914
26915
26916
26917
26918 }
26919 # 18 "../boost/iterator/iterator_facade.hpp" 2
26920
26921
26922
26923 # 1 "../boost/type_traits/add_const.hpp" 1
26924 # 16 "../boost/type_traits/add_const.hpp"
26925 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
26926 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
26927 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26928 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
26929 # 17 "../boost/type_traits/add_const.hpp" 2
26930
26931 namespace boost {
26932 # 33 "../boost/type_traits/add_const.hpp"
26933 template< typename T > struct add_const { public: typedef T const type; };
26934
26935
26936
26937
26938
26939
26940 template< typename T > struct add_const<T&> { public: typedef T& type; };
26941
26942
26943 }
26944
26945 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
26946 # 46 "../boost/type_traits/add_const.hpp" 2
26947 # 22 "../boost/iterator/iterator_facade.hpp" 2
26948 # 1 "../boost/type_traits/add_pointer.hpp" 1
26949 # 15 "../boost/type_traits/add_pointer.hpp"
26950 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
26951 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
26952 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26953 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
26954 # 16 "../boost/type_traits/add_pointer.hpp" 2
26955
26956 namespace boost {
26957
26958 namespace detail {
26959 # 55 "../boost/type_traits/add_pointer.hpp"
26960 template <typename T>
26961 struct add_pointer_impl
26962 {
26963 typedef typename remove_reference<T>::type no_ref_type;
26964 typedef no_ref_type* type;
26965 };
26966
26967
26968
26969 }
26970
26971 template< typename T > struct add_pointer { public: typedef typename boost::detail::add_pointer_impl<T>::type type; };
26972
26973 }
26974
26975 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
26976 # 71 "../boost/type_traits/add_pointer.hpp" 2
26977 # 23 "../boost/iterator/iterator_facade.hpp" 2
26978 # 1 "../boost/type_traits/remove_const.hpp" 1
26979 # 20 "../boost/type_traits/remove_const.hpp"
26980 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
26981 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
26982
26983 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
26984
26985
26986 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
26987 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
26988 # 21 "../boost/type_traits/remove_const.hpp" 2
26989
26990
26991
26992
26993
26994
26995 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
26996 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
26997 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
26998 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
26999 # 28 "../boost/type_traits/remove_const.hpp" 2
27000
27001 namespace boost {
27002
27003
27004
27005 namespace detail {
27006
27007 template <typename T, bool is_vol>
27008 struct remove_const_helper
27009 {
27010 typedef T type;
27011 };
27012
27013 template <typename T>
27014 struct remove_const_helper<T, true>
27015 {
27016 typedef T volatile type;
27017 };
27018
27019
27020 template <typename T>
27021 struct remove_const_impl
27022 {
27023 typedef typename remove_const_helper<
27024 typename cv_traits_imp<T*>::unqualified_type
27025 , ::boost::is_volatile<T>::value
27026 >::type type;
27027 };
27028 # 69 "../boost/type_traits/remove_const.hpp"
27029 }
27030
27031
27032
27033 template< typename T > struct remove_const { public: typedef typename boost::detail::remove_const_impl<T>::type type; };
27034 template< typename T > struct remove_const<T&> { public: typedef T& type; };
27035
27036 template< typename T, std::size_t N > struct remove_const<T const[N]> { public: typedef T type[N]; };
27037 template< typename T, std::size_t N > struct remove_const<T const volatile[N]> { public: typedef T volatile type[N]; };
27038 # 86 "../boost/type_traits/remove_const.hpp"
27039 }
27040
27041 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
27042 # 89 "../boost/type_traits/remove_const.hpp" 2
27043 # 24 "../boost/iterator/iterator_facade.hpp" 2
27044
27045
27046 # 1 "../boost/type_traits/is_pod.hpp" 1
27047 # 14 "../boost/type_traits/is_pod.hpp"
27048 # 1 "../boost/type_traits/is_scalar.hpp" 1
27049 # 13 "../boost/type_traits/is_scalar.hpp"
27050 # 1 "../boost/type_traits/is_enum.hpp" 1
27051 # 32 "../boost/type_traits/is_enum.hpp"
27052 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
27053 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
27054 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
27055 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
27056 # 33 "../boost/type_traits/is_enum.hpp" 2
27057
27058 namespace boost {
27059 # 181 "../boost/type_traits/is_enum.hpp"
27060 template< typename T > struct is_enum : public ::boost::integral_constant<bool,__is_enum(T)> { public: };
27061
27062
27063
27064 }
27065
27066 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
27067 # 188 "../boost/type_traits/is_enum.hpp" 2
27068 # 14 "../boost/type_traits/is_scalar.hpp" 2
27069
27070
27071
27072
27073
27074
27075 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
27076 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
27077 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
27078 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
27079 # 21 "../boost/type_traits/is_scalar.hpp" 2
27080
27081 namespace boost {
27082
27083 namespace detail {
27084
27085 template <typename T>
27086 struct is_scalar_impl
27087 {
27088 static const bool value = (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value, ::boost::is_enum<T>::value, ::boost::is_pointer<T>::value, ::boost::is_member_pointer<T>::value >::value)
27089
27090
27091
27092
27093
27094 ;
27095 };
27096
27097
27098
27099 template <> struct is_scalar_impl<void>{ static const bool value = false; };
27100
27101 template <> struct is_scalar_impl<void const>{ static const bool value = false; };
27102 template <> struct is_scalar_impl<void volatile>{ static const bool value = false; };
27103 template <> struct is_scalar_impl<void const volatile>{ static const bool value = false; };
27104
27105
27106 }
27107
27108 template< typename T > struct is_scalar : public ::boost::integral_constant<bool,::boost::detail::is_scalar_impl<T>::value> { public: };
27109
27110 }
27111
27112 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
27113 # 54 "../boost/type_traits/is_scalar.hpp" 2
27114 # 15 "../boost/type_traits/is_pod.hpp" 2
27115
27116
27117
27118 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
27119 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
27120
27121 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
27122
27123
27124 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
27125 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
27126 # 19 "../boost/type_traits/is_pod.hpp" 2
27127
27128
27129 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
27130 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
27131 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
27132 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
27133 # 22 "../boost/type_traits/is_pod.hpp" 2
27134
27135
27136
27137
27138
27139
27140
27141 namespace boost {
27142
27143
27144 template< typename T > struct is_POD;
27145
27146 namespace detail {
27147
27148
27149
27150 template <typename T> struct is_pod_impl
27151 {
27152 static const bool value = (::boost::type_traits::ice_or< ::boost::is_scalar<T>::value, ::boost::is_void<T>::value, __is_pod(T) >::value)
27153
27154
27155
27156
27157
27158 ;
27159 };
27160
27161
27162 template <typename T, std::size_t sz>
27163 struct is_pod_impl<T[sz]>
27164 : public is_pod_impl<T>
27165 {
27166 };
27167 # 124 "../boost/type_traits/is_pod.hpp"
27168 template<> struct is_pod_impl< void > { public: static const bool value = (true); };
27169
27170
27171 template<> struct is_pod_impl< void const > { public: static const bool value = (true); };
27172 template<> struct is_pod_impl< void volatile > { public: static const bool value = (true); };
27173 template<> struct is_pod_impl< void const volatile > { public: static const bool value = (true); };
27174
27175
27176 }
27177
27178 template< typename T > struct is_POD : public ::boost::integral_constant<bool,::boost::detail::is_pod_impl<T>::value> { public: };
27179 template< typename T > struct is_pod : public ::boost::integral_constant<bool,::boost::detail::is_pod_impl<T>::value> { public: };
27180
27181 }
27182
27183 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
27184 # 140 "../boost/type_traits/is_pod.hpp" 2
27185 # 27 "../boost/iterator/iterator_facade.hpp" 2
27186
27187
27188
27189
27190
27191
27192 # 1 "../boost/mpl/always.hpp" 1
27193 # 21 "../boost/mpl/always.hpp"
27194 namespace boost { namespace mpl {
27195
27196 template< typename Value > struct always
27197 {
27198 template<
27199 typename T
27200 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na
27201 >
27202 struct apply
27203 {
27204 typedef Value type;
27205 };
27206 };
27207
27208
27209
27210 }}
27211 # 34 "../boost/iterator/iterator_facade.hpp" 2
27212 # 1 "../boost/mpl/apply.hpp" 1
27213 # 22 "../boost/mpl/apply.hpp"
27214 # 1 "../boost/mpl/apply_fwd.hpp" 1
27215 # 31 "../boost/mpl/apply_fwd.hpp"
27216 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
27217 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
27218 # 1 "../boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp" 1
27219 # 12 "../boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp"
27220 namespace boost { namespace mpl {
27221
27222 template<
27223 typename F, typename T1 = na, typename T2 = na, typename T3 = na
27224 , typename T4 = na, typename T5 = na
27225 >
27226 struct apply;
27227
27228 template<
27229 typename F
27230 >
27231 struct apply0;
27232
27233 template<
27234 typename F, typename T1
27235 >
27236 struct apply1;
27237
27238 template<
27239 typename F, typename T1, typename T2
27240 >
27241 struct apply2;
27242
27243 template<
27244 typename F, typename T1, typename T2, typename T3
27245 >
27246 struct apply3;
27247
27248 template<
27249 typename F, typename T1, typename T2, typename T3, typename T4
27250 >
27251 struct apply4;
27252
27253 template<
27254 typename F, typename T1, typename T2, typename T3, typename T4
27255 , typename T5
27256 >
27257 struct apply5;
27258
27259 }}
27260 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
27261 # 32 "../boost/mpl/apply_fwd.hpp" 2
27262 # 23 "../boost/mpl/apply.hpp" 2
27263 # 1 "../boost/mpl/apply_wrap.hpp" 1
27264 # 23 "../boost/mpl/apply_wrap.hpp"
27265 # 1 "../boost/mpl/aux_/has_apply.hpp" 1
27266 # 17 "../boost/mpl/aux_/has_apply.hpp"
27267 # 1 "../boost/mpl/has_xxx.hpp" 1
27268 # 21 "../boost/mpl/has_xxx.hpp"
27269 # 1 "../boost/mpl/aux_/type_wrapper.hpp" 1
27270 # 20 "../boost/mpl/aux_/type_wrapper.hpp"
27271 namespace boost { namespace mpl { namespace aux {
27272
27273 template< typename T > struct type_wrapper
27274 {
27275 typedef T type;
27276 };
27277
27278
27279
27280
27281
27282
27283 template< typename T > struct wrapped_type;
27284
27285 template< typename T > struct wrapped_type< type_wrapper<T> >
27286 {
27287 typedef T type;
27288 };
27289
27290
27291
27292
27293
27294
27295
27296 }}}
27297 # 22 "../boost/mpl/has_xxx.hpp" 2
27298
27299
27300 # 1 "../boost/mpl/aux_/config/has_xxx.hpp" 1
27301 # 25 "../boost/mpl/has_xxx.hpp" 2
27302 # 1 "../boost/mpl/aux_/config/msvc_typename.hpp" 1
27303 # 26 "../boost/mpl/has_xxx.hpp" 2
27304
27305
27306
27307
27308 # 1 "../boost/preprocessor/array/elem.hpp" 1
27309 # 15 "../boost/preprocessor/array/elem.hpp"
27310 # 1 "../boost/preprocessor/array/data.hpp" 1
27311 # 16 "../boost/preprocessor/array/elem.hpp" 2
27312 # 1 "../boost/preprocessor/array/size.hpp" 1
27313 # 17 "../boost/preprocessor/array/elem.hpp" 2
27314 # 31 "../boost/mpl/has_xxx.hpp" 2
27315
27316
27317 # 1 "../boost/preprocessor/repetition/enum_params.hpp" 1
27318 # 34 "../boost/mpl/has_xxx.hpp" 2
27319 # 1 "../boost/preprocessor/repetition/enum_trailing_params.hpp" 1
27320 # 35 "../boost/mpl/has_xxx.hpp" 2
27321 # 18 "../boost/mpl/aux_/has_apply.hpp" 2
27322 # 1 "../boost/mpl/aux_/config/has_apply.hpp" 1
27323 # 19 "../boost/mpl/aux_/has_apply.hpp" 2
27324
27325 namespace boost { namespace mpl { namespace aux {
27326
27327 template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_apply { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::apply>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
27328
27329
27330
27331
27332
27333
27334
27335 }}}
27336 # 24 "../boost/mpl/apply_wrap.hpp" 2
27337
27338 # 1 "../boost/mpl/aux_/msvc_never_true.hpp" 1
27339 # 26 "../boost/mpl/apply_wrap.hpp" 2
27340 # 34 "../boost/mpl/apply_wrap.hpp"
27341 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
27342 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
27343 # 1 "../boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp" 1
27344 # 12 "../boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp"
27345 namespace boost { namespace mpl {
27346
27347 template<
27348 typename F
27349
27350 , typename has_apply_ = typename aux::has_apply<F>::type
27351
27352 >
27353 struct apply_wrap0
27354
27355 : F::template apply< >
27356 {
27357 };
27358
27359 template< typename F >
27360 struct apply_wrap0< F,true_ >
27361 : F::apply
27362 {
27363 };
27364
27365 template<
27366 typename F, typename T1
27367
27368 >
27369 struct apply_wrap1
27370
27371 : F::template apply<T1>
27372 {
27373 };
27374
27375 template<
27376 typename F, typename T1, typename T2
27377
27378 >
27379 struct apply_wrap2
27380
27381 : F::template apply< T1,T2 >
27382 {
27383 };
27384
27385 template<
27386 typename F, typename T1, typename T2, typename T3
27387
27388 >
27389 struct apply_wrap3
27390
27391 : F::template apply< T1,T2,T3 >
27392 {
27393 };
27394
27395 template<
27396 typename F, typename T1, typename T2, typename T3, typename T4
27397
27398 >
27399 struct apply_wrap4
27400
27401 : F::template apply< T1,T2,T3,T4 >
27402 {
27403 };
27404
27405 template<
27406 typename F, typename T1, typename T2, typename T3, typename T4
27407 , typename T5
27408
27409 >
27410 struct apply_wrap5
27411
27412 : F::template apply< T1,T2,T3,T4,T5 >
27413 {
27414 };
27415
27416 }}
27417 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
27418 # 35 "../boost/mpl/apply_wrap.hpp" 2
27419 # 24 "../boost/mpl/apply.hpp" 2
27420 # 1 "../boost/mpl/placeholders.hpp" 1
27421 # 25 "../boost/mpl/apply.hpp" 2
27422 # 1 "../boost/mpl/lambda.hpp" 1
27423 # 18 "../boost/mpl/lambda.hpp"
27424 # 1 "../boost/mpl/bind.hpp" 1
27425 # 23 "../boost/mpl/bind.hpp"
27426 # 1 "../boost/mpl/bind_fwd.hpp" 1
27427 # 25 "../boost/mpl/bind_fwd.hpp"
27428 # 1 "../boost/mpl/aux_/config/bind.hpp" 1
27429 # 26 "../boost/mpl/bind_fwd.hpp" 2
27430
27431
27432
27433
27434
27435
27436 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
27437 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
27438 # 1 "../boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp" 1
27439 # 12 "../boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp"
27440 namespace boost { namespace mpl {
27441
27442 template<
27443 typename F, typename T1 = na, typename T2 = na, typename T3 = na
27444 , typename T4 = na, typename T5 = na
27445 >
27446 struct bind;
27447
27448 template<
27449 typename F
27450 >
27451 struct bind0;
27452
27453 template<
27454 typename F, typename T1
27455 >
27456 struct bind1;
27457
27458 template<
27459 typename F, typename T1, typename T2
27460 >
27461 struct bind2;
27462
27463 template<
27464 typename F, typename T1, typename T2, typename T3
27465 >
27466 struct bind3;
27467
27468 template<
27469 typename F, typename T1, typename T2, typename T3, typename T4
27470 >
27471 struct bind4;
27472
27473 template<
27474 typename F, typename T1, typename T2, typename T3, typename T4
27475 , typename T5
27476 >
27477 struct bind5;
27478
27479 }}
27480 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
27481 # 33 "../boost/mpl/bind_fwd.hpp" 2
27482 # 24 "../boost/mpl/bind.hpp" 2
27483 # 1 "../boost/mpl/placeholders.hpp" 1
27484 # 25 "../boost/mpl/bind.hpp" 2
27485 # 1 "../boost/mpl/next.hpp" 1
27486 # 17 "../boost/mpl/next.hpp"
27487 # 1 "../boost/mpl/next_prior.hpp" 1
27488 # 17 "../boost/mpl/next_prior.hpp"
27489 # 1 "../boost/mpl/aux_/common_name_wknd.hpp" 1
27490 # 18 "../boost/mpl/next_prior.hpp" 2
27491
27492
27493
27494 namespace boost { namespace mpl {
27495
27496
27497
27498
27499 template<
27500 typename T = na
27501 >
27502 struct next
27503 {
27504 typedef typename T::next type;
27505
27506 };
27507
27508 template<
27509 typename T = na
27510 >
27511 struct prior
27512 {
27513 typedef typename T::prior type;
27514
27515 };
27516
27517 template<> struct next< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : next< T1 > { }; }; template< typename Tag > struct lambda< next< na > , Tag , int_<-1> > { typedef false_ is_le; typedef next< na > result_; typedef next< na > type; }; namespace aux { template< typename T1 > struct template_arity< next< T1 > > : int_<1> { }; template<> struct template_arity< next< na > > : int_<-1> { }; }
27518 template<> struct prior< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : prior< T1 > { }; }; template< typename Tag > struct lambda< prior< na > , Tag , int_<-1> > { typedef false_ is_le; typedef prior< na > result_; typedef prior< na > type; }; namespace aux { template< typename T1 > struct template_arity< prior< T1 > > : int_<1> { }; template<> struct template_arity< prior< na > > : int_<-1> { }; }
27519
27520 }}
27521 # 18 "../boost/mpl/next.hpp" 2
27522 # 26 "../boost/mpl/bind.hpp" 2
27523 # 1 "../boost/mpl/protect.hpp" 1
27524 # 23 "../boost/mpl/protect.hpp"
27525 namespace boost { namespace mpl {
27526
27527 template<
27528 typename T = na
27529 , int not_le_ = 0
27530 >
27531 struct protect : T
27532 {
27533
27534
27535
27536 typedef protect type;
27537
27538 };
27539 # 48 "../boost/mpl/protect.hpp"
27540 template<> struct protect< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : protect< T1 > { }; };
27541
27542 namespace aux { template< typename T1 > struct template_arity< protect< T1 > > : int_<1> { }; template<> struct template_arity< protect< na > > : int_<-1> { }; }
27543
27544
27545 }}
27546 # 27 "../boost/mpl/bind.hpp" 2
27547 # 1 "../boost/mpl/apply_wrap.hpp" 1
27548 # 28 "../boost/mpl/bind.hpp" 2
27549 # 50 "../boost/mpl/bind.hpp"
27550 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
27551 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
27552 # 1 "../boost/mpl/aux_/preprocessed/gcc/bind.hpp" 1
27553 # 13 "../boost/mpl/aux_/preprocessed/gcc/bind.hpp"
27554 namespace boost { namespace mpl {
27555
27556 namespace aux {
27557
27558 template<
27559 typename T, typename U1, typename U2, typename U3, typename U4
27560 , typename U5
27561 >
27562 struct resolve_bind_arg
27563 {
27564 typedef T type;
27565 };
27566
27567 template<
27568 typename T
27569 , typename Arg
27570 >
27571 struct replace_unnamed_arg
27572 {
27573 typedef Arg next;
27574 typedef T type;
27575 };
27576
27577 template<
27578 typename Arg
27579 >
27580 struct replace_unnamed_arg< arg< -1 >, Arg >
27581 {
27582 typedef typename Arg::next next;
27583 typedef Arg type;
27584 };
27585
27586 template<
27587 int N, typename U1, typename U2, typename U3, typename U4, typename U5
27588 >
27589 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
27590 {
27591 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
27592 };
27593
27594 template<
27595 typename F, typename T1, typename T2, typename T3, typename T4
27596 , typename T5, typename U1, typename U2, typename U3, typename U4
27597 , typename U5
27598 >
27599 struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
27600 {
27601 typedef bind< F,T1,T2,T3,T4,T5 > f_;
27602 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27603 };
27604
27605 }
27606
27607 template<
27608 typename F
27609 >
27610 struct bind0
27611 {
27612 template<
27613 typename U1 = na, typename U2 = na, typename U3 = na
27614 , typename U4 = na, typename U5 = na
27615 >
27616 struct apply
27617 {
27618 private:
27619 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
27620 typedef typename r0::type a0;
27621 typedef typename r0::next n1;
27622 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
27623
27624 public:
27625 typedef typename apply_wrap0<
27626 f_
27627 >::type type;
27628
27629 };
27630 };
27631
27632 namespace aux {
27633
27634 template<
27635 typename F, typename U1, typename U2, typename U3, typename U4
27636 , typename U5
27637 >
27638 struct resolve_bind_arg<
27639 bind0<F>, U1, U2, U3, U4, U5
27640 >
27641 {
27642 typedef bind0<F> f_;
27643 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27644 };
27645
27646 }
27647
27648
27649 namespace aux { template< typename T1 > struct template_arity< bind0< T1> > : int_<1> { }; }
27650
27651 template<
27652 typename F
27653 >
27654 struct bind< F,na,na,na,na,na >
27655 : bind0<F>
27656 {
27657 };
27658
27659 template<
27660 typename F, typename T1
27661 >
27662 struct bind1
27663 {
27664 template<
27665 typename U1 = na, typename U2 = na, typename U3 = na
27666 , typename U4 = na, typename U5 = na
27667 >
27668 struct apply
27669 {
27670 private:
27671 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
27672 typedef typename r0::type a0;
27673 typedef typename r0::next n1;
27674 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
27675
27676 typedef aux::replace_unnamed_arg< T1,n1 > r1;
27677 typedef typename r1::type a1;
27678 typedef typename r1::next n2;
27679 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
27680
27681 public:
27682 typedef typename apply_wrap1<
27683 f_
27684 , typename t1::type
27685 >::type type;
27686
27687 };
27688 };
27689
27690 namespace aux {
27691
27692 template<
27693 typename F, typename T1, typename U1, typename U2, typename U3
27694 , typename U4, typename U5
27695 >
27696 struct resolve_bind_arg<
27697 bind1< F,T1 >, U1, U2, U3, U4, U5
27698 >
27699 {
27700 typedef bind1< F,T1 > f_;
27701 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27702 };
27703
27704 }
27705
27706
27707 namespace aux { template< typename T1 , typename T2 > struct template_arity< bind1< T1 , T2> > : int_<2> { }; }
27708
27709 template<
27710 typename F, typename T1
27711 >
27712 struct bind< F,T1,na,na,na,na >
27713 : bind1< F,T1 >
27714 {
27715 };
27716
27717 template<
27718 typename F, typename T1, typename T2
27719 >
27720 struct bind2
27721 {
27722 template<
27723 typename U1 = na, typename U2 = na, typename U3 = na
27724 , typename U4 = na, typename U5 = na
27725 >
27726 struct apply
27727 {
27728 private:
27729 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
27730 typedef typename r0::type a0;
27731 typedef typename r0::next n1;
27732 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
27733
27734 typedef aux::replace_unnamed_arg< T1,n1 > r1;
27735 typedef typename r1::type a1;
27736 typedef typename r1::next n2;
27737 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
27738
27739 typedef aux::replace_unnamed_arg< T2,n2 > r2;
27740 typedef typename r2::type a2;
27741 typedef typename r2::next n3;
27742 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
27743
27744 public:
27745 typedef typename apply_wrap2<
27746 f_
27747 , typename t1::type, typename t2::type
27748 >::type type;
27749
27750 };
27751 };
27752
27753 namespace aux {
27754
27755 template<
27756 typename F, typename T1, typename T2, typename U1, typename U2
27757 , typename U3, typename U4, typename U5
27758 >
27759 struct resolve_bind_arg<
27760 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
27761 >
27762 {
27763 typedef bind2< F,T1,T2 > f_;
27764 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27765 };
27766
27767 }
27768
27769
27770 namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< bind2< T1 , T2 , T3> > : int_<3> { }; }
27771
27772 template<
27773 typename F, typename T1, typename T2
27774 >
27775 struct bind< F,T1,T2,na,na,na >
27776 : bind2< F,T1,T2 >
27777 {
27778 };
27779
27780 template<
27781 typename F, typename T1, typename T2, typename T3
27782 >
27783 struct bind3
27784 {
27785 template<
27786 typename U1 = na, typename U2 = na, typename U3 = na
27787 , typename U4 = na, typename U5 = na
27788 >
27789 struct apply
27790 {
27791 private:
27792 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
27793 typedef typename r0::type a0;
27794 typedef typename r0::next n1;
27795 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
27796
27797 typedef aux::replace_unnamed_arg< T1,n1 > r1;
27798 typedef typename r1::type a1;
27799 typedef typename r1::next n2;
27800 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
27801
27802 typedef aux::replace_unnamed_arg< T2,n2 > r2;
27803 typedef typename r2::type a2;
27804 typedef typename r2::next n3;
27805 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
27806
27807 typedef aux::replace_unnamed_arg< T3,n3 > r3;
27808 typedef typename r3::type a3;
27809 typedef typename r3::next n4;
27810 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
27811
27812 public:
27813 typedef typename apply_wrap3<
27814 f_
27815 , typename t1::type, typename t2::type, typename t3::type
27816 >::type type;
27817
27818 };
27819 };
27820
27821 namespace aux {
27822
27823 template<
27824 typename F, typename T1, typename T2, typename T3, typename U1
27825 , typename U2, typename U3, typename U4, typename U5
27826 >
27827 struct resolve_bind_arg<
27828 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
27829 >
27830 {
27831 typedef bind3< F,T1,T2,T3 > f_;
27832 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27833 };
27834
27835 }
27836
27837
27838 namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 > struct template_arity< bind3< T1 , T2 , T3 , T4> > : int_<4> { }; }
27839
27840 template<
27841 typename F, typename T1, typename T2, typename T3
27842 >
27843 struct bind< F,T1,T2,T3,na,na >
27844 : bind3< F,T1,T2,T3 >
27845 {
27846 };
27847
27848 template<
27849 typename F, typename T1, typename T2, typename T3, typename T4
27850 >
27851 struct bind4
27852 {
27853 template<
27854 typename U1 = na, typename U2 = na, typename U3 = na
27855 , typename U4 = na, typename U5 = na
27856 >
27857 struct apply
27858 {
27859 private:
27860 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
27861 typedef typename r0::type a0;
27862 typedef typename r0::next n1;
27863 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
27864
27865 typedef aux::replace_unnamed_arg< T1,n1 > r1;
27866 typedef typename r1::type a1;
27867 typedef typename r1::next n2;
27868 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
27869
27870 typedef aux::replace_unnamed_arg< T2,n2 > r2;
27871 typedef typename r2::type a2;
27872 typedef typename r2::next n3;
27873 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
27874
27875 typedef aux::replace_unnamed_arg< T3,n3 > r3;
27876 typedef typename r3::type a3;
27877 typedef typename r3::next n4;
27878 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
27879
27880 typedef aux::replace_unnamed_arg< T4,n4 > r4;
27881 typedef typename r4::type a4;
27882 typedef typename r4::next n5;
27883 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
27884
27885 public:
27886 typedef typename apply_wrap4<
27887 f_
27888 , typename t1::type, typename t2::type, typename t3::type
27889 , typename t4::type
27890 >::type type;
27891
27892 };
27893 };
27894
27895 namespace aux {
27896
27897 template<
27898 typename F, typename T1, typename T2, typename T3, typename T4
27899 , typename U1, typename U2, typename U3, typename U4, typename U5
27900 >
27901 struct resolve_bind_arg<
27902 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
27903 >
27904 {
27905 typedef bind4< F,T1,T2,T3,T4 > f_;
27906 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27907 };
27908
27909 }
27910
27911
27912 namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< bind4< T1 , T2 , T3 , T4 , T5> > : int_<5> { }; }
27913
27914 template<
27915 typename F, typename T1, typename T2, typename T3, typename T4
27916 >
27917 struct bind< F,T1,T2,T3,T4,na >
27918 : bind4< F,T1,T2,T3,T4 >
27919 {
27920 };
27921
27922 template<
27923 typename F, typename T1, typename T2, typename T3, typename T4
27924 , typename T5
27925 >
27926 struct bind5
27927 {
27928 template<
27929 typename U1 = na, typename U2 = na, typename U3 = na
27930 , typename U4 = na, typename U5 = na
27931 >
27932 struct apply
27933 {
27934 private:
27935 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
27936 typedef typename r0::type a0;
27937 typedef typename r0::next n1;
27938 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
27939
27940 typedef aux::replace_unnamed_arg< T1,n1 > r1;
27941 typedef typename r1::type a1;
27942 typedef typename r1::next n2;
27943 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
27944
27945 typedef aux::replace_unnamed_arg< T2,n2 > r2;
27946 typedef typename r2::type a2;
27947 typedef typename r2::next n3;
27948 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
27949
27950 typedef aux::replace_unnamed_arg< T3,n3 > r3;
27951 typedef typename r3::type a3;
27952 typedef typename r3::next n4;
27953 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
27954
27955 typedef aux::replace_unnamed_arg< T4,n4 > r4;
27956 typedef typename r4::type a4;
27957 typedef typename r4::next n5;
27958 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
27959
27960 typedef aux::replace_unnamed_arg< T5,n5 > r5;
27961 typedef typename r5::type a5;
27962 typedef typename r5::next n6;
27963 typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
27964
27965 public:
27966 typedef typename apply_wrap5<
27967 f_
27968 , typename t1::type, typename t2::type, typename t3::type
27969 , typename t4::type, typename t5::type
27970 >::type type;
27971
27972 };
27973 };
27974
27975 namespace aux {
27976
27977 template<
27978 typename F, typename T1, typename T2, typename T3, typename T4
27979 , typename T5, typename U1, typename U2, typename U3, typename U4
27980 , typename U5
27981 >
27982 struct resolve_bind_arg<
27983 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
27984 >
27985 {
27986 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
27987 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
27988 };
27989
27990 }
27991
27992
27993 namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > struct template_arity< bind5< T1 , T2 , T3 , T4 , T5 , T6> > : int_<6> { }; }
27994
27995
27996
27997 template<
27998 typename F, typename T1, typename T2, typename T3, typename T4
27999 , typename T5
28000 >
28001 struct bind
28002 : bind5< F,T1,T2,T3,T4,T5 >
28003 {
28004 };
28005
28006
28007 template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
28008 struct quote3;
28009
28010 template< typename T1, typename T2, typename T3 > struct if_;
28011
28012 template<
28013 typename Tag, typename T1, typename T2, typename T3
28014 >
28015 struct bind3<
28016 quote3< if_,Tag >
28017 , T1, T2, T3
28018 >
28019 {
28020 template<
28021 typename U1 = na, typename U2 = na, typename U3 = na
28022 , typename U4 = na, typename U5 = na
28023 >
28024 struct apply
28025 {
28026 private:
28027 typedef mpl::arg<1> n1;
28028 typedef aux::replace_unnamed_arg< T1,n1 > r1;
28029 typedef typename r1::type a1;
28030 typedef typename r1::next n2;
28031 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
28032
28033 typedef aux::replace_unnamed_arg< T2,n2 > r2;
28034 typedef typename r2::type a2;
28035 typedef typename r2::next n3;
28036 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
28037
28038 typedef aux::replace_unnamed_arg< T3,n3 > r3;
28039 typedef typename r3::type a3;
28040 typedef typename r3::next n4;
28041 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
28042
28043 typedef typename if_<
28044 typename t1::type
28045 , t2, t3
28046 >::type f_;
28047
28048 public:
28049 typedef typename f_::type type;
28050 };
28051 };
28052
28053 template<
28054 template< typename T1, typename T2, typename T3 > class F, typename Tag
28055 >
28056 struct quote3;
28057
28058 template< typename T1, typename T2, typename T3 > struct eval_if;
28059
28060 template<
28061 typename Tag, typename T1, typename T2, typename T3
28062 >
28063 struct bind3<
28064 quote3< eval_if,Tag >
28065 , T1, T2, T3
28066 >
28067 {
28068 template<
28069 typename U1 = na, typename U2 = na, typename U3 = na
28070 , typename U4 = na, typename U5 = na
28071 >
28072 struct apply
28073 {
28074 private:
28075 typedef mpl::arg<1> n1;
28076 typedef aux::replace_unnamed_arg< T1,n1 > r1;
28077 typedef typename r1::type a1;
28078 typedef typename r1::next n2;
28079 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
28080
28081 typedef aux::replace_unnamed_arg< T2,n2 > r2;
28082 typedef typename r2::type a2;
28083 typedef typename r2::next n3;
28084 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
28085
28086 typedef aux::replace_unnamed_arg< T3,n3 > r3;
28087 typedef typename r3::type a3;
28088 typedef typename r3::next n4;
28089 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
28090
28091 typedef typename eval_if<
28092 typename t1::type
28093 , t2, t3
28094 >::type f_;
28095
28096 public:
28097 typedef typename f_::type type;
28098 };
28099 };
28100
28101 }}
28102 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
28103 # 51 "../boost/mpl/bind.hpp" 2
28104 # 19 "../boost/mpl/lambda.hpp" 2
28105
28106
28107
28108 # 1 "../boost/mpl/aux_/full_lambda.hpp" 1
28109 # 23 "../boost/mpl/aux_/full_lambda.hpp"
28110 # 1 "../boost/mpl/bind_fwd.hpp" 1
28111 # 24 "../boost/mpl/aux_/full_lambda.hpp" 2
28112
28113 # 1 "../boost/mpl/quote.hpp" 1
28114 # 22 "../boost/mpl/quote.hpp"
28115 # 1 "../boost/mpl/void.hpp" 1
28116 # 23 "../boost/mpl/void.hpp"
28117 namespace mpl_ {
28118
28119
28120
28121
28122
28123 struct void_ { typedef void_ type; };
28124
28125 }
28126
28127 namespace boost { namespace mpl {
28128
28129 template< typename T >
28130 struct is_void_
28131 : false_
28132 {
28133
28134
28135
28136 };
28137
28138 template<>
28139 struct is_void_<void_>
28140 : true_
28141 {
28142
28143
28144
28145 };
28146
28147 template< typename T >
28148 struct is_not_void_
28149 : true_
28150 {
28151
28152
28153
28154 };
28155
28156 template<>
28157 struct is_not_void_<void_>
28158 : false_
28159 {
28160
28161
28162
28163 };
28164
28165 template<> struct is_void_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : is_void_< T1 > { }; }; template< typename Tag > struct lambda< is_void_< na > , Tag , int_<-1> > { typedef false_ is_le; typedef is_void_< na > result_; typedef is_void_< na > type; }; namespace aux { template< typename T1 > struct template_arity< is_void_< T1 > > : int_<1> { }; template<> struct template_arity< is_void_< na > > : int_<-1> { }; }
28166 template<> struct is_not_void_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : is_not_void_< T1 > { }; }; template< typename Tag > struct lambda< is_not_void_< na > , Tag , int_<-1> > { typedef false_ is_le; typedef is_not_void_< na > result_; typedef is_not_void_< na > type; }; namespace aux { template< typename T1 > struct template_arity< is_not_void_< T1 > > : int_<1> { }; template<> struct template_arity< is_not_void_< na > > : int_<-1> { }; }
28167
28168 }}
28169 # 23 "../boost/mpl/quote.hpp" 2
28170 # 1 "../boost/mpl/aux_/has_type.hpp" 1
28171 # 19 "../boost/mpl/aux_/has_type.hpp"
28172 namespace boost { namespace mpl { namespace aux {
28173 template< typename T, typename fallback_ = boost::mpl::bool_<true> > struct has_type { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::type>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
28174 }}}
28175 # 24 "../boost/mpl/quote.hpp" 2
28176
28177
28178 # 1 "../boost/mpl/aux_/config/bcc.hpp" 1
28179 # 27 "../boost/mpl/quote.hpp" 2
28180 # 45 "../boost/mpl/quote.hpp"
28181 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
28182 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
28183 # 1 "../boost/mpl/aux_/preprocessed/gcc/quote.hpp" 1
28184 # 12 "../boost/mpl/aux_/preprocessed/gcc/quote.hpp"
28185 namespace boost { namespace mpl {
28186
28187 template< typename T, bool has_type_ >
28188 struct quote_impl
28189 {
28190 typedef typename T::type type;
28191 };
28192
28193 template< typename T >
28194 struct quote_impl< T,false >
28195 {
28196 typedef T type;
28197 };
28198
28199 template<
28200 template< typename P1 > class F
28201 , typename Tag = void_
28202 >
28203 struct quote1
28204 {
28205 template< typename U1 > struct apply
28206
28207 : quote_impl<
28208 F<U1>
28209 , aux::has_type< F<U1> >::value
28210 >
28211
28212 {
28213 };
28214 };
28215
28216 template<
28217 template< typename P1, typename P2 > class F
28218 , typename Tag = void_
28219 >
28220 struct quote2
28221 {
28222 template< typename U1, typename U2 > struct apply
28223
28224 : quote_impl<
28225 F< U1,U2 >
28226 , aux::has_type< F< U1,U2 > >::value
28227 >
28228
28229 {
28230 };
28231 };
28232
28233 template<
28234 template< typename P1, typename P2, typename P3 > class F
28235 , typename Tag = void_
28236 >
28237 struct quote3
28238 {
28239 template< typename U1, typename U2, typename U3 > struct apply
28240
28241 : quote_impl<
28242 F< U1,U2,U3 >
28243 , aux::has_type< F< U1,U2,U3 > >::value
28244 >
28245
28246 {
28247 };
28248 };
28249
28250 template<
28251 template< typename P1, typename P2, typename P3, typename P4 > class F
28252 , typename Tag = void_
28253 >
28254 struct quote4
28255 {
28256 template<
28257 typename U1, typename U2, typename U3, typename U4
28258 >
28259 struct apply
28260
28261 : quote_impl<
28262 F< U1,U2,U3,U4 >
28263 , aux::has_type< F< U1,U2,U3,U4 > >::value
28264 >
28265
28266 {
28267 };
28268 };
28269
28270 template<
28271 template<
28272 typename P1, typename P2, typename P3, typename P4
28273 , typename P5
28274 >
28275 class F
28276 , typename Tag = void_
28277 >
28278 struct quote5
28279 {
28280 template<
28281 typename U1, typename U2, typename U3, typename U4
28282 , typename U5
28283 >
28284 struct apply
28285
28286 : quote_impl<
28287 F< U1,U2,U3,U4,U5 >
28288 , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
28289 >
28290
28291 {
28292 };
28293 };
28294
28295 }}
28296 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
28297 # 46 "../boost/mpl/quote.hpp" 2
28298 # 26 "../boost/mpl/aux_/full_lambda.hpp" 2
28299 # 1 "../boost/mpl/arg.hpp" 1
28300 # 27 "../boost/mpl/aux_/full_lambda.hpp" 2
28301
28302
28303 # 1 "../boost/mpl/aux_/template_arity.hpp" 1
28304 # 43 "../boost/mpl/aux_/template_arity.hpp"
28305 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
28306 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
28307 # 1 "../boost/mpl/aux_/preprocessed/gcc/template_arity.hpp" 1
28308 # 12 "../boost/mpl/aux_/preprocessed/gcc/template_arity.hpp"
28309 namespace boost { namespace mpl { namespace aux {
28310 template< int N > struct arity_tag
28311 {
28312 typedef char (&type)[N + 1];
28313 };
28314
28315 template<
28316 int C1, int C2, int C3, int C4, int C5, int C6
28317 >
28318 struct max_arity
28319 {
28320 static const int value = ( C6 > 0 ? C6 : ( C5 > 0 ? C5 : ( C4 > 0 ? C4 : ( C3 > 0 ? C3 : ( C2 > 0 ? C2 : ( C1 > 0 ? C1 : -1 ) ) ) ) ) )
28321
28322 ;
28323 };
28324
28325 arity_tag<0>::type arity_helper(...);
28326
28327 template<
28328 template< typename P1 > class F
28329 , typename T1
28330 >
28331 typename arity_tag<1>::type
28332 arity_helper(type_wrapper< F<T1> >, arity_tag<1>);
28333
28334 template<
28335 template< typename P1, typename P2 > class F
28336 , typename T1, typename T2
28337 >
28338 typename arity_tag<2>::type
28339 arity_helper(type_wrapper< F< T1,T2 > >, arity_tag<2>);
28340
28341 template<
28342 template< typename P1, typename P2, typename P3 > class F
28343 , typename T1, typename T2, typename T3
28344 >
28345 typename arity_tag<3>::type
28346 arity_helper(type_wrapper< F< T1,T2,T3 > >, arity_tag<3>);
28347
28348 template<
28349 template< typename P1, typename P2, typename P3, typename P4 > class F
28350 , typename T1, typename T2, typename T3, typename T4
28351 >
28352 typename arity_tag<4>::type
28353 arity_helper(type_wrapper< F< T1,T2,T3,T4 > >, arity_tag<4>);
28354
28355 template<
28356 template<
28357 typename P1, typename P2, typename P3, typename P4
28358 , typename P5
28359 >
28360 class F
28361 , typename T1, typename T2, typename T3, typename T4, typename T5
28362 >
28363 typename arity_tag<5>::type
28364 arity_helper(type_wrapper< F< T1,T2,T3,T4,T5 > >, arity_tag<5>);
28365
28366 template<
28367 template<
28368 typename P1, typename P2, typename P3, typename P4
28369 , typename P5, typename P6
28370 >
28371 class F
28372 , typename T1, typename T2, typename T3, typename T4, typename T5
28373 , typename T6
28374 >
28375 typename arity_tag<6>::type
28376 arity_helper(type_wrapper< F< T1,T2,T3,T4,T5,T6 > >, arity_tag<6>);
28377 template< typename F, int N >
28378 struct template_arity_impl
28379 {
28380 static const int value = sizeof(::boost::mpl::aux::arity_helper(type_wrapper<F>(), arity_tag<N>())) - 1
28381
28382 ;
28383 };
28384
28385 template< typename F >
28386 struct template_arity
28387 {
28388 static const int value = ( max_arity< template_arity_impl< F,1 >::value, template_arity_impl< F,2 >::value, template_arity_impl< F,3 >::value, template_arity_impl< F,4 >::value, template_arity_impl< F,5 >::value, template_arity_impl< F,6 >::value >::value )
28389
28390 ;
28391 typedef mpl::int_<value> type;
28392 };
28393
28394 }}}
28395 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
28396 # 44 "../boost/mpl/aux_/template_arity.hpp" 2
28397 # 30 "../boost/mpl/aux_/full_lambda.hpp" 2
28398 # 44 "../boost/mpl/aux_/full_lambda.hpp"
28399 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
28400 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
28401 # 1 "../boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp" 1
28402 # 12 "../boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp"
28403 namespace boost { namespace mpl {
28404
28405 namespace aux {
28406
28407 template<
28408 bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
28409 , bool C5 = false
28410 >
28411 struct lambda_or
28412 : true_
28413 {
28414 };
28415
28416 template<>
28417 struct lambda_or< false,false,false,false,false >
28418 : false_
28419 {
28420 };
28421
28422 }
28423
28424 template<
28425 typename T
28426 , typename Tag
28427 , typename Arity
28428 >
28429 struct lambda
28430 {
28431 typedef false_ is_le;
28432 typedef T result_;
28433 typedef T type;
28434 };
28435
28436 template<
28437 typename T
28438 >
28439 struct is_lambda_expression
28440 : lambda<T>::is_le
28441 {
28442 };
28443
28444 template< int N, typename Tag >
28445 struct lambda< arg<N>,Tag, int_< -1 > >
28446 {
28447 typedef true_ is_le;
28448 typedef mpl::arg<N> result_;
28449 typedef mpl::protect<result_> type;
28450 };
28451
28452 template<
28453 typename F
28454 , typename Tag
28455 >
28456 struct lambda<
28457 bind0<F>
28458 , Tag
28459 , int_<1>
28460 >
28461 {
28462 typedef false_ is_le;
28463 typedef bind0<
28464 F
28465 > result_;
28466
28467 typedef result_ type;
28468 };
28469
28470 namespace aux {
28471
28472 template<
28473 typename IsLE, typename Tag
28474 , template< typename P1 > class F
28475 , typename L1
28476 >
28477 struct le_result1
28478 {
28479 typedef F<
28480 typename L1::type
28481 > result_;
28482
28483 typedef result_ type;
28484 };
28485
28486 template<
28487 typename Tag
28488 , template< typename P1 > class F
28489 , typename L1
28490 >
28491 struct le_result1< true_,Tag,F,L1 >
28492 {
28493 typedef bind1<
28494 quote1< F,Tag >
28495 , typename L1::result_
28496 > result_;
28497
28498 typedef mpl::protect<result_> type;
28499 };
28500
28501 }
28502
28503 template<
28504 template< typename P1 > class F
28505 , typename T1
28506 , typename Tag
28507 >
28508 struct lambda<
28509 F<T1>
28510 , Tag
28511 , int_<1>
28512 >
28513 {
28514 typedef lambda< T1,Tag > l1;
28515 typedef typename l1::is_le is_le1;
28516 typedef typename aux::lambda_or<
28517 is_le1::value
28518 >::type is_le;
28519
28520 typedef aux::le_result1<
28521 is_le, Tag, F, l1
28522 > le_result_;
28523
28524 typedef typename le_result_::result_ result_;
28525 typedef typename le_result_::type type;
28526 };
28527
28528 template<
28529 typename F, typename T1
28530 , typename Tag
28531 >
28532 struct lambda<
28533 bind1< F,T1 >
28534 , Tag
28535 , int_<2>
28536 >
28537 {
28538 typedef false_ is_le;
28539 typedef bind1<
28540 F
28541 , T1
28542 > result_;
28543
28544 typedef result_ type;
28545 };
28546
28547 namespace aux {
28548
28549 template<
28550 typename IsLE, typename Tag
28551 , template< typename P1, typename P2 > class F
28552 , typename L1, typename L2
28553 >
28554 struct le_result2
28555 {
28556 typedef F<
28557 typename L1::type, typename L2::type
28558 > result_;
28559
28560 typedef result_ type;
28561 };
28562
28563 template<
28564 typename Tag
28565 , template< typename P1, typename P2 > class F
28566 , typename L1, typename L2
28567 >
28568 struct le_result2< true_,Tag,F,L1,L2 >
28569 {
28570 typedef bind2<
28571 quote2< F,Tag >
28572 , typename L1::result_, typename L2::result_
28573 > result_;
28574
28575 typedef mpl::protect<result_> type;
28576 };
28577
28578 }
28579
28580 template<
28581 template< typename P1, typename P2 > class F
28582 , typename T1, typename T2
28583 , typename Tag
28584 >
28585 struct lambda<
28586 F< T1,T2 >
28587 , Tag
28588 , int_<2>
28589 >
28590 {
28591 typedef lambda< T1,Tag > l1;
28592 typedef lambda< T2,Tag > l2;
28593
28594 typedef typename l1::is_le is_le1;
28595 typedef typename l2::is_le is_le2;
28596
28597
28598 typedef typename aux::lambda_or<
28599 is_le1::value, is_le2::value
28600 >::type is_le;
28601
28602 typedef aux::le_result2<
28603 is_le, Tag, F, l1, l2
28604 > le_result_;
28605
28606 typedef typename le_result_::result_ result_;
28607 typedef typename le_result_::type type;
28608 };
28609
28610 template<
28611 typename F, typename T1, typename T2
28612 , typename Tag
28613 >
28614 struct lambda<
28615 bind2< F,T1,T2 >
28616 , Tag
28617 , int_<3>
28618 >
28619 {
28620 typedef false_ is_le;
28621 typedef bind2<
28622 F
28623 , T1, T2
28624 > result_;
28625
28626 typedef result_ type;
28627 };
28628
28629 namespace aux {
28630
28631 template<
28632 typename IsLE, typename Tag
28633 , template< typename P1, typename P2, typename P3 > class F
28634 , typename L1, typename L2, typename L3
28635 >
28636 struct le_result3
28637 {
28638 typedef F<
28639 typename L1::type, typename L2::type, typename L3::type
28640 > result_;
28641
28642 typedef result_ type;
28643 };
28644
28645 template<
28646 typename Tag
28647 , template< typename P1, typename P2, typename P3 > class F
28648 , typename L1, typename L2, typename L3
28649 >
28650 struct le_result3< true_,Tag,F,L1,L2,L3 >
28651 {
28652 typedef bind3<
28653 quote3< F,Tag >
28654 , typename L1::result_, typename L2::result_, typename L3::result_
28655 > result_;
28656
28657 typedef mpl::protect<result_> type;
28658 };
28659
28660 }
28661
28662 template<
28663 template< typename P1, typename P2, typename P3 > class F
28664 , typename T1, typename T2, typename T3
28665 , typename Tag
28666 >
28667 struct lambda<
28668 F< T1,T2,T3 >
28669 , Tag
28670 , int_<3>
28671 >
28672 {
28673 typedef lambda< T1,Tag > l1;
28674 typedef lambda< T2,Tag > l2;
28675 typedef lambda< T3,Tag > l3;
28676
28677 typedef typename l1::is_le is_le1;
28678 typedef typename l2::is_le is_le2;
28679 typedef typename l3::is_le is_le3;
28680
28681
28682 typedef typename aux::lambda_or<
28683 is_le1::value, is_le2::value, is_le3::value
28684 >::type is_le;
28685
28686 typedef aux::le_result3<
28687 is_le, Tag, F, l1, l2, l3
28688 > le_result_;
28689
28690 typedef typename le_result_::result_ result_;
28691 typedef typename le_result_::type type;
28692 };
28693
28694 template<
28695 typename F, typename T1, typename T2, typename T3
28696 , typename Tag
28697 >
28698 struct lambda<
28699 bind3< F,T1,T2,T3 >
28700 , Tag
28701 , int_<4>
28702 >
28703 {
28704 typedef false_ is_le;
28705 typedef bind3<
28706 F
28707 , T1, T2, T3
28708 > result_;
28709
28710 typedef result_ type;
28711 };
28712
28713 namespace aux {
28714
28715 template<
28716 typename IsLE, typename Tag
28717 , template< typename P1, typename P2, typename P3, typename P4 > class F
28718 , typename L1, typename L2, typename L3, typename L4
28719 >
28720 struct le_result4
28721 {
28722 typedef F<
28723 typename L1::type, typename L2::type, typename L3::type
28724 , typename L4::type
28725 > result_;
28726
28727 typedef result_ type;
28728 };
28729
28730 template<
28731 typename Tag
28732 , template< typename P1, typename P2, typename P3, typename P4 > class F
28733 , typename L1, typename L2, typename L3, typename L4
28734 >
28735 struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
28736 {
28737 typedef bind4<
28738 quote4< F,Tag >
28739 , typename L1::result_, typename L2::result_, typename L3::result_
28740 , typename L4::result_
28741 > result_;
28742
28743 typedef mpl::protect<result_> type;
28744 };
28745
28746 }
28747
28748 template<
28749 template< typename P1, typename P2, typename P3, typename P4 > class F
28750 , typename T1, typename T2, typename T3, typename T4
28751 , typename Tag
28752 >
28753 struct lambda<
28754 F< T1,T2,T3,T4 >
28755 , Tag
28756 , int_<4>
28757 >
28758 {
28759 typedef lambda< T1,Tag > l1;
28760 typedef lambda< T2,Tag > l2;
28761 typedef lambda< T3,Tag > l3;
28762 typedef lambda< T4,Tag > l4;
28763
28764 typedef typename l1::is_le is_le1;
28765 typedef typename l2::is_le is_le2;
28766 typedef typename l3::is_le is_le3;
28767 typedef typename l4::is_le is_le4;
28768
28769
28770 typedef typename aux::lambda_or<
28771 is_le1::value, is_le2::value, is_le3::value, is_le4::value
28772 >::type is_le;
28773
28774 typedef aux::le_result4<
28775 is_le, Tag, F, l1, l2, l3, l4
28776 > le_result_;
28777
28778 typedef typename le_result_::result_ result_;
28779 typedef typename le_result_::type type;
28780 };
28781
28782 template<
28783 typename F, typename T1, typename T2, typename T3, typename T4
28784 , typename Tag
28785 >
28786 struct lambda<
28787 bind4< F,T1,T2,T3,T4 >
28788 , Tag
28789 , int_<5>
28790 >
28791 {
28792 typedef false_ is_le;
28793 typedef bind4<
28794 F
28795 , T1, T2, T3, T4
28796 > result_;
28797
28798 typedef result_ type;
28799 };
28800
28801 namespace aux {
28802
28803 template<
28804 typename IsLE, typename Tag
28805 , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
28806 , typename L1, typename L2, typename L3, typename L4, typename L5
28807 >
28808 struct le_result5
28809 {
28810 typedef F<
28811 typename L1::type, typename L2::type, typename L3::type
28812 , typename L4::type, typename L5::type
28813 > result_;
28814
28815 typedef result_ type;
28816 };
28817
28818 template<
28819 typename Tag
28820 , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
28821 , typename L1, typename L2, typename L3, typename L4, typename L5
28822 >
28823 struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
28824 {
28825 typedef bind5<
28826 quote5< F,Tag >
28827 , typename L1::result_, typename L2::result_, typename L3::result_
28828 , typename L4::result_, typename L5::result_
28829 > result_;
28830
28831 typedef mpl::protect<result_> type;
28832 };
28833
28834 }
28835
28836 template<
28837 template<
28838 typename P1, typename P2, typename P3, typename P4
28839 , typename P5
28840 >
28841 class F
28842 , typename T1, typename T2, typename T3, typename T4, typename T5
28843 , typename Tag
28844 >
28845 struct lambda<
28846 F< T1,T2,T3,T4,T5 >
28847 , Tag
28848 , int_<5>
28849 >
28850 {
28851 typedef lambda< T1,Tag > l1;
28852 typedef lambda< T2,Tag > l2;
28853 typedef lambda< T3,Tag > l3;
28854 typedef lambda< T4,Tag > l4;
28855 typedef lambda< T5,Tag > l5;
28856
28857 typedef typename l1::is_le is_le1;
28858 typedef typename l2::is_le is_le2;
28859 typedef typename l3::is_le is_le3;
28860 typedef typename l4::is_le is_le4;
28861 typedef typename l5::is_le is_le5;
28862
28863
28864 typedef typename aux::lambda_or<
28865 is_le1::value, is_le2::value, is_le3::value, is_le4::value
28866 , is_le5::value
28867 >::type is_le;
28868
28869 typedef aux::le_result5<
28870 is_le, Tag, F, l1, l2, l3, l4, l5
28871 > le_result_;
28872
28873 typedef typename le_result_::result_ result_;
28874 typedef typename le_result_::type type;
28875 };
28876
28877 template<
28878 typename F, typename T1, typename T2, typename T3, typename T4
28879 , typename T5
28880 , typename Tag
28881 >
28882 struct lambda<
28883 bind5< F,T1,T2,T3,T4,T5 >
28884 , Tag
28885 , int_<6>
28886 >
28887 {
28888 typedef false_ is_le;
28889 typedef bind5<
28890 F
28891 , T1, T2, T3, T4, T5
28892 > result_;
28893
28894 typedef result_ type;
28895 };
28896
28897
28898 template< typename T, typename Tag >
28899 struct lambda< mpl::protect<T>,Tag, int_<1> >
28900 {
28901 typedef false_ is_le;
28902 typedef mpl::protect<T> result_;
28903 typedef result_ type;
28904 };
28905
28906
28907
28908 template<
28909 typename F, typename T1, typename T2, typename T3, typename T4
28910 , typename T5
28911 , typename Tag
28912 >
28913 struct lambda<
28914 bind< F,T1,T2,T3,T4,T5 >
28915 , Tag
28916 , int_<6>
28917 >
28918 {
28919 typedef false_ is_le;
28920 typedef bind< F,T1,T2,T3,T4,T5 > result_;
28921 typedef result_ type;
28922 };
28923
28924 template<
28925 typename F
28926 , typename Tag1
28927 , typename Tag2
28928 , typename Arity
28929 >
28930 struct lambda<
28931 lambda< F,Tag1,Arity >
28932 , Tag2
28933 , int_<3>
28934 >
28935 {
28936 typedef lambda< F,Tag2 > l1;
28937 typedef lambda< Tag1,Tag2 > l2;
28938 typedef typename l1::is_le is_le;
28939 typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
28940 typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
28941 typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
28942 typedef typename le_result_::result_ result_;
28943 typedef typename le_result_::type type;
28944 };
28945
28946 template<> struct lambda< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : lambda< T1 , T2 > { }; }; template< typename Tag > struct lambda< lambda< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef lambda< na , na > result_; typedef lambda< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< lambda< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< lambda< na , na > > : int_<-1> { }; }
28947
28948 }}
28949 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
28950 # 45 "../boost/mpl/aux_/full_lambda.hpp" 2
28951 # 23 "../boost/mpl/lambda.hpp" 2
28952 # 26 "../boost/mpl/apply.hpp" 2
28953 # 36 "../boost/mpl/apply.hpp"
28954 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
28955 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
28956 # 1 "../boost/mpl/aux_/preprocessed/gcc/apply.hpp" 1
28957 # 12 "../boost/mpl/aux_/preprocessed/gcc/apply.hpp"
28958 namespace boost { namespace mpl {
28959
28960 template<
28961 typename F
28962 >
28963 struct apply0
28964
28965 : apply_wrap0<
28966 typename lambda<F>::type
28967
28968 >
28969 {
28970
28971
28972
28973
28974
28975 };
28976
28977 template<
28978 typename F
28979 >
28980 struct apply< F,na,na,na,na,na >
28981 : apply0<F>
28982 {
28983 };
28984
28985 template<
28986 typename F, typename T1
28987 >
28988 struct apply1
28989
28990 : apply_wrap1<
28991 typename lambda<F>::type
28992 , T1
28993 >
28994 {
28995
28996
28997
28998
28999
29000 };
29001
29002 template<
29003 typename F, typename T1
29004 >
29005 struct apply< F,T1,na,na,na,na >
29006 : apply1< F,T1 >
29007 {
29008 };
29009
29010 template<
29011 typename F, typename T1, typename T2
29012 >
29013 struct apply2
29014
29015 : apply_wrap2<
29016 typename lambda<F>::type
29017 , T1, T2
29018 >
29019 {
29020
29021
29022
29023
29024
29025 };
29026
29027 template<
29028 typename F, typename T1, typename T2
29029 >
29030 struct apply< F,T1,T2,na,na,na >
29031 : apply2< F,T1,T2 >
29032 {
29033 };
29034
29035 template<
29036 typename F, typename T1, typename T2, typename T3
29037 >
29038 struct apply3
29039
29040 : apply_wrap3<
29041 typename lambda<F>::type
29042 , T1, T2, T3
29043 >
29044 {
29045
29046
29047
29048
29049
29050 };
29051
29052 template<
29053 typename F, typename T1, typename T2, typename T3
29054 >
29055 struct apply< F,T1,T2,T3,na,na >
29056 : apply3< F,T1,T2,T3 >
29057 {
29058 };
29059
29060 template<
29061 typename F, typename T1, typename T2, typename T3, typename T4
29062 >
29063 struct apply4
29064
29065 : apply_wrap4<
29066 typename lambda<F>::type
29067 , T1, T2, T3, T4
29068 >
29069 {
29070
29071
29072
29073
29074
29075 };
29076
29077 template<
29078 typename F, typename T1, typename T2, typename T3, typename T4
29079 >
29080 struct apply< F,T1,T2,T3,T4,na >
29081 : apply4< F,T1,T2,T3,T4 >
29082 {
29083 };
29084
29085 template<
29086 typename F, typename T1, typename T2, typename T3, typename T4
29087 , typename T5
29088 >
29089 struct apply5
29090
29091 : apply_wrap5<
29092 typename lambda<F>::type
29093 , T1, T2, T3, T4, T5
29094 >
29095 {
29096
29097
29098
29099
29100
29101 };
29102
29103
29104
29105 template<
29106 typename F, typename T1, typename T2, typename T3, typename T4
29107 , typename T5
29108 >
29109 struct apply
29110 : apply5< F,T1,T2,T3,T4,T5 >
29111 {
29112 };
29113
29114 }}
29115 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
29116 # 37 "../boost/mpl/apply.hpp" 2
29117 # 35 "../boost/iterator/iterator_facade.hpp" 2
29118
29119
29120 # 1 "../boost/iterator/detail/config_def.hpp" 1
29121 # 38 "../boost/iterator/iterator_facade.hpp" 2
29122
29123 namespace boost
29124 {
29125
29126
29127 template <class I, class V, class TC, class R, class D> class iterator_facade;
29128
29129 namespace detail
29130 {
29131
29132
29133
29134 struct always_bool2
29135 {
29136 template <class T, class U>
29137 struct apply
29138 {
29139 typedef bool type;
29140 };
29141 };
29142
29143
29144
29145
29146 template <
29147 class Facade1
29148 , class Facade2
29149 , class Return
29150 >
29151 struct enable_if_interoperable
29152 # 80 "../boost/iterator/iterator_facade.hpp"
29153 : ::boost::iterators::enable_if<
29154 mpl::or_<
29155 is_convertible<Facade1, Facade2>
29156 , is_convertible<Facade2, Facade1>
29157 >
29158 , Return
29159 >
29160 {};
29161
29162
29163
29164
29165
29166
29167 template <
29168 class ValueParam
29169 , class CategoryOrTraversal
29170 , class Reference
29171 , class Difference
29172 >
29173 struct iterator_facade_types
29174 {
29175 typedef typename facade_iterator_category<
29176 CategoryOrTraversal, ValueParam, Reference
29177 >::type iterator_category;
29178
29179 typedef typename remove_const<ValueParam>::type value_type;
29180
29181
29182 typedef typename mpl::eval_if<
29183 boost::detail::iterator_writability_disabled<ValueParam,Reference>
29184 , add_pointer<const value_type>
29185 , add_pointer<value_type>
29186 >::type pointer;
29187 # 131 "../boost/iterator/iterator_facade.hpp"
29188 };
29189
29190
29191
29192
29193
29194
29195
29196 template <class Iterator>
29197 class postfix_increment_proxy
29198 {
29199 typedef typename iterator_value<Iterator>::type value_type;
29200 public:
29201 explicit postfix_increment_proxy(Iterator const& x)
29202 : stored_value(*x)
29203 {}
29204
29205
29206
29207
29208
29209 value_type&
29210 operator*() const
29211 {
29212 return this->stored_value;
29213 }
29214 private:
29215 mutable value_type stored_value;
29216 };
29217
29218
29219
29220
29221
29222 template <class Iterator>
29223 class writable_postfix_increment_proxy
29224 {
29225 typedef typename iterator_value<Iterator>::type value_type;
29226 public:
29227 explicit writable_postfix_increment_proxy(Iterator const& x)
29228 : stored_value(*x)
29229 , stored_iterator(x)
29230 {}
29231
29232
29233
29234
29235
29236 writable_postfix_increment_proxy const&
29237 operator*() const
29238 {
29239 return *this;
29240 }
29241
29242
29243 operator value_type&() const
29244 {
29245 return stored_value;
29246 }
29247
29248
29249 template <class T>
29250 T const& operator=(T const& x) const
29251 {
29252 *this->stored_iterator = x;
29253 return x;
29254 }
29255
29256
29257 template <class T>
29258 T& operator=(T& x) const
29259 {
29260 *this->stored_iterator = x;
29261 return x;
29262 }
29263
29264
29265 operator Iterator const&() const
29266 {
29267 return stored_iterator;
29268 }
29269
29270 private:
29271 mutable value_type stored_value;
29272 Iterator stored_iterator;
29273 };
29274 # 245 "../boost/iterator/iterator_facade.hpp"
29275 template <class Reference, class Value>
29276 struct is_non_proxy_reference
29277 : is_convertible<
29278 typename remove_reference<Reference>::type
29279 const volatile*
29280 , Value const volatile*
29281 >
29282 {};
29283 # 270 "../boost/iterator/iterator_facade.hpp"
29284 template <class Iterator, class Value, class Reference, class CategoryOrTraversal>
29285 struct postfix_increment_result
29286 : mpl::eval_if<
29287 mpl::and_<
29288
29289 is_convertible<Reference,Value const&>
29290
29291
29292
29293 , mpl::not_<
29294 is_convertible<
29295 typename iterator_category_to_traversal<CategoryOrTraversal>::type
29296 , forward_traversal_tag
29297 >
29298 >
29299 >
29300 , mpl::if_<
29301 is_non_proxy_reference<Reference,Value>
29302 , postfix_increment_proxy<Iterator>
29303 , writable_postfix_increment_proxy<Iterator>
29304 >
29305 , mpl::identity<Iterator>
29306 >
29307 {};
29308
29309
29310
29311
29312
29313 template <class T>
29314 struct operator_arrow_proxy
29315 {
29316 operator_arrow_proxy(T const* px) : m_value(*px) {}
29317 T* operator->() const { return &m_value; }
29318
29319
29320 operator T*() const { return &m_value; }
29321 mutable T m_value;
29322 };
29323
29324
29325
29326
29327 template <class ValueType, class Reference, class Pointer>
29328 struct operator_arrow_result
29329 {
29330
29331
29332
29333 typedef typename mpl::if_<
29334 is_reference<Reference>
29335 , Pointer
29336 , operator_arrow_proxy<ValueType>
29337 >::type type;
29338
29339 static type make(Reference x)
29340 {
29341 return boost::implicit_cast<type>(&x);
29342 }
29343 };
29344 # 343 "../boost/iterator/iterator_facade.hpp"
29345 template <class Iterator>
29346 class operator_brackets_proxy
29347 {
29348
29349
29350 typedef typename Iterator::reference reference;
29351 typedef typename Iterator::value_type value_type;
29352
29353 public:
29354 operator_brackets_proxy(Iterator const& iter)
29355 : m_iter(iter)
29356 {}
29357
29358 operator reference() const
29359 {
29360 return *m_iter;
29361 }
29362
29363 operator_brackets_proxy& operator=(value_type const& val)
29364 {
29365 *m_iter = val;
29366 return *this;
29367 }
29368
29369 private:
29370 Iterator m_iter;
29371 };
29372
29373
29374
29375 template <class ValueType, class Reference>
29376 struct use_operator_brackets_proxy
29377 : mpl::not_<
29378 mpl::and_<
29379
29380
29381 boost::is_POD<ValueType>
29382 , iterator_writability_disabled<ValueType,Reference>
29383 >
29384 >
29385 {};
29386
29387 template <class Iterator, class Value, class Reference>
29388 struct operator_brackets_result
29389 {
29390 typedef typename mpl::if_<
29391 use_operator_brackets_proxy<Value,Reference>
29392 , operator_brackets_proxy<Iterator>
29393 , Value
29394 >::type type;
29395 };
29396
29397 template <class Iterator>
29398 operator_brackets_proxy<Iterator> make_operator_brackets_result(Iterator const& iter, mpl::true_)
29399 {
29400 return operator_brackets_proxy<Iterator>(iter);
29401 }
29402
29403 template <class Iterator>
29404 typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_)
29405 {
29406 return *iter;
29407 }
29408
29409 struct choose_difference_type
29410 {
29411 template <class I1, class I2>
29412 struct apply
29413 :
29414 # 421 "../boost/iterator/iterator_facade.hpp"
29415 mpl::eval_if<
29416 is_convertible<I2,I1>
29417 , iterator_difference<I1>
29418 , iterator_difference<I2>
29419 >
29420
29421 {};
29422
29423 };
29424 }
29425 # 472 "../boost/iterator/iterator_facade.hpp"
29426 class iterator_core_access
29427 {
29428
29429
29430
29431
29432
29433
29434 template <class I, class V, class TC, class R, class D> friend class iterator_facade;
29435
29436
29437
29438
29439 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator ==( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
29440 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator !=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
29441
29442 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator <( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
29443 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator >( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
29444 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator <=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
29445 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator >=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
29446
29447
29448 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::choose_difference_type,Derived1,Derived2>::type >::type operator -( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
29449
29450 ;
29451
29452 template <class Derived, class V, class TC, class R, class D> friend inline Derived operator+ (iterator_facade<Derived, V, TC, R, D> const& , typename Derived::difference_type)
29453
29454
29455
29456
29457 ;
29458
29459 template <class Derived, class V, class TC, class R, class D> friend inline Derived operator+ (typename Derived::difference_type , iterator_facade<Derived, V, TC, R, D> const&)
29460
29461
29462
29463
29464 ;
29465
29466
29467
29468 template <class Facade>
29469 static typename Facade::reference dereference(Facade const& f)
29470 {
29471 return f.dereference();
29472 }
29473
29474 template <class Facade>
29475 static void increment(Facade& f)
29476 {
29477 f.increment();
29478 }
29479
29480 template <class Facade>
29481 static void decrement(Facade& f)
29482 {
29483 f.decrement();
29484 }
29485
29486 template <class Facade1, class Facade2>
29487 static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_)
29488 {
29489 return f1.equal(f2);
29490 }
29491
29492 template <class Facade1, class Facade2>
29493 static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_)
29494 {
29495 return f2.equal(f1);
29496 }
29497
29498 template <class Facade>
29499 static void advance(Facade& f, typename Facade::difference_type n)
29500 {
29501 f.advance(n);
29502 }
29503
29504 template <class Facade1, class Facade2>
29505 static typename Facade1::difference_type distance_from(
29506 Facade1 const& f1, Facade2 const& f2, mpl::true_)
29507 {
29508 return -f1.distance_to(f2);
29509 }
29510
29511 template <class Facade1, class Facade2>
29512 static typename Facade2::difference_type distance_from(
29513 Facade1 const& f1, Facade2 const& f2, mpl::false_)
29514 {
29515 return f2.distance_to(f1);
29516 }
29517
29518
29519
29520
29521 template <class I, class V, class TC, class R, class D>
29522 static I& derived(iterator_facade<I,V,TC,R,D>& facade)
29523 {
29524 return *static_cast<I*>(&facade);
29525 }
29526
29527 template <class I, class V, class TC, class R, class D>
29528 static I const& derived(iterator_facade<I,V,TC,R,D> const& facade)
29529 {
29530 return *static_cast<I const*>(&facade);
29531 }
29532
29533 private:
29534
29535 iterator_core_access();
29536 };
29537
29538
29539
29540
29541
29542 template <
29543 class Derived
29544 , class Value
29545 , class CategoryOrTraversal
29546 , class Reference = Value&
29547 , class Difference = std::ptrdiff_t
29548 >
29549 class iterator_facade
29550
29551
29552
29553
29554
29555
29556 {
29557 private:
29558
29559
29560
29561 Derived& derived()
29562 {
29563 return *static_cast<Derived*>(this);
29564 }
29565
29566 Derived const& derived() const
29567 {
29568 return *static_cast<Derived const*>(this);
29569 }
29570
29571 typedef boost::detail::iterator_facade_types<
29572 Value, CategoryOrTraversal, Reference, Difference
29573 > associated_types;
29574
29575 typedef boost::detail::operator_arrow_result<
29576 typename associated_types::value_type
29577 , Reference
29578 , typename associated_types::pointer
29579 > pointer_;
29580
29581 protected:
29582
29583 typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
29584
29585 public:
29586
29587 typedef typename associated_types::value_type value_type;
29588 typedef Reference reference;
29589 typedef Difference difference_type;
29590
29591 typedef typename pointer_::type pointer;
29592
29593 typedef typename associated_types::iterator_category iterator_category;
29594
29595 reference operator*() const
29596 {
29597 return iterator_core_access::dereference(this->derived());
29598 }
29599
29600 pointer operator->() const
29601 {
29602 return pointer_::make(*this->derived());
29603 }
29604
29605 typename boost::detail::operator_brackets_result<Derived,Value,reference>::type
29606 operator[](difference_type n) const
29607 {
29608 typedef boost::detail::use_operator_brackets_proxy<Value,Reference> use_proxy;
29609
29610 return boost::detail::make_operator_brackets_result<Derived>(
29611 this->derived() + n
29612 , use_proxy()
29613 );
29614 }
29615
29616 Derived& operator++()
29617 {
29618 iterator_core_access::increment(this->derived());
29619 return this->derived();
29620 }
29621 # 679 "../boost/iterator/iterator_facade.hpp"
29622 Derived& operator--()
29623 {
29624 iterator_core_access::decrement(this->derived());
29625 return this->derived();
29626 }
29627
29628 Derived operator--(int)
29629 {
29630 Derived tmp(this->derived());
29631 --*this;
29632 return tmp;
29633 }
29634
29635 Derived& operator+=(difference_type n)
29636 {
29637 iterator_core_access::advance(this->derived(), n);
29638 return this->derived();
29639 }
29640
29641 Derived& operator-=(difference_type n)
29642 {
29643 iterator_core_access::advance(this->derived(), -n);
29644 return this->derived();
29645 }
29646
29647 Derived operator-(difference_type x) const
29648 {
29649 Derived result(this->derived());
29650 return result -= x;
29651 }
29652 # 721 "../boost/iterator/iterator_facade.hpp"
29653 };
29654
29655
29656 template <class I, class V, class TC, class R, class D>
29657 inline typename boost::detail::postfix_increment_result<I,V,R,TC>::type
29658 operator++(
29659 iterator_facade<I,V,TC,R,D>& i
29660 , int
29661 )
29662 {
29663 typename boost::detail::postfix_increment_result<I,V,R,TC>::type
29664 tmp(*static_cast<I*>(&i));
29665
29666 ++i;
29667
29668 return tmp;
29669 }
29670 # 836 "../boost/iterator/iterator_facade.hpp"
29671 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator ==( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)> boost_static_assert_typedef_836; return iterator_core_access::equal( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29672 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator !=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)> boost_static_assert_typedef_837; return ! iterator_core_access::equal( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29673
29674 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator <( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)> boost_static_assert_typedef_839; return 0 > iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29675 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator >( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)> boost_static_assert_typedef_840; return 0 < iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29676 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator <=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)> boost_static_assert_typedef_841; return 0 >= iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29677 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::always_bool2,Derived1,Derived2>::type >::type operator >=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)> boost_static_assert_typedef_842; return 0 <= iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29678
29679
29680
29681 template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::detail::choose_difference_type,Derived1,Derived2>::type >::type operator -( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( is_interoperable< Derived1, Derived2 >::value )) == 0 ? false : true) >)>
29682
29683
29684
29685
29686 boost_static_assert_typedef_851
29687 # 846 "../boost/iterator/iterator_facade.hpp"
29688 ; return iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
29689 # 862 "../boost/iterator/iterator_facade.hpp"
29690 template <class Derived, class V, class TC, class R, class D> inline Derived operator+ ( iterator_facade<Derived, V, TC, R, D> const& i , typename Derived::difference_type n ) { Derived tmp(static_cast<Derived const&>(i)); return tmp += n; }
29691
29692
29693
29694
29695 template <class Derived, class V, class TC, class R, class D> inline Derived operator+ ( typename Derived::difference_type n , iterator_facade<Derived, V, TC, R, D> const& i ) { Derived tmp(static_cast<Derived const&>(i)); return tmp += n; }
29696
29697
29698
29699
29700
29701
29702 }
29703
29704 # 1 "../boost/iterator/detail/config_undef.hpp" 1
29705 # 877 "../boost/iterator/iterator_facade.hpp" 2
29706 # 24 "../boost/range/iterator_range_core.hpp" 2
29707
29708
29709 # 1 "../boost/range/functions.hpp" 1
29710 # 18 "../boost/range/functions.hpp"
29711 # 1 "../boost/range/begin.hpp" 1
29712 # 18 "../boost/range/begin.hpp"
29713 # 1 "../boost/range/config.hpp" 1
29714 # 19 "../boost/range/begin.hpp" 2
29715
29716
29717
29718
29719
29720 # 1 "../boost/range/iterator.hpp" 1
29721 # 19 "../boost/range/iterator.hpp"
29722 # 1 "../boost/range/mutable_iterator.hpp" 1
29723 # 24 "../boost/range/mutable_iterator.hpp"
29724 # 1 "../boost/range/detail/extract_optional_type.hpp" 1
29725 # 30 "../boost/range/detail/extract_optional_type.hpp"
29726 namespace boost {
29727 namespace range_detail {
29728 template< typename T > struct exists { typedef void type; };
29729 }
29730 }
29731 # 25 "../boost/range/mutable_iterator.hpp" 2
29732
29733 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
29734 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
29735
29736 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
29737
29738
29739 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
29740 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
29741 # 27 "../boost/range/mutable_iterator.hpp" 2
29742
29743
29744 namespace boost
29745 {
29746
29747
29748
29749
29750 namespace range_detail {
29751 template< typename C, typename Enable=void > struct extract_iterator {}; template< typename C > struct extract_iterator< C , typename boost::range_detail::exists< typename C::iterator >::type > { typedef typename C::iterator type; };
29752 }
29753
29754 template< typename C >
29755 struct range_mutable_iterator : range_detail::extract_iterator<C>
29756 {};
29757
29758
29759
29760
29761
29762 template< typename Iterator >
29763 struct range_mutable_iterator< std::pair<Iterator,Iterator> >
29764 {
29765 typedef Iterator type;
29766 };
29767
29768
29769
29770
29771
29772 template< typename T, std::size_t sz >
29773 struct range_mutable_iterator< T[sz] >
29774 {
29775 typedef T* type;
29776 };
29777
29778 }
29779 # 20 "../boost/range/iterator.hpp" 2
29780 # 1 "../boost/range/const_iterator.hpp" 1
29781 # 26 "../boost/range/const_iterator.hpp"
29782 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
29783 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
29784
29785 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
29786
29787
29788 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
29789 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
29790 # 27 "../boost/range/const_iterator.hpp" 2
29791
29792
29793 namespace boost
29794 {
29795
29796
29797
29798
29799 namespace range_detail {
29800 template< typename C, typename Enable=void > struct extract_const_iterator {}; template< typename C > struct extract_const_iterator< C , typename boost::range_detail::exists< typename C::const_iterator >::type > { typedef typename C::const_iterator type; };
29801 }
29802
29803 template< typename C >
29804 struct range_const_iterator : range_detail::extract_const_iterator<C>
29805 {};
29806
29807
29808
29809
29810
29811 template< typename Iterator >
29812 struct range_const_iterator< std::pair<Iterator,Iterator> >
29813 {
29814 typedef Iterator type;
29815 };
29816
29817
29818
29819
29820
29821 template< typename T, std::size_t sz >
29822 struct range_const_iterator< T[sz] >
29823 {
29824 typedef const T* type;
29825 };
29826
29827 }
29828 # 21 "../boost/range/iterator.hpp" 2
29829
29830
29831
29832
29833 namespace boost
29834 {
29835 # 50 "../boost/range/iterator.hpp"
29836 template< typename C >
29837 struct range_iterator
29838 {
29839
29840
29841
29842
29843
29844
29845
29846 typedef typename
29847 mpl::eval_if_c< is_const<C>::value,
29848 range_const_iterator< typename remove_const<C>::type >,
29849 range_mutable_iterator<C> >::type type;
29850
29851
29852 };
29853
29854 }
29855 # 25 "../boost/range/begin.hpp" 2
29856
29857 namespace boost
29858 {
29859
29860
29861
29862
29863 namespace range_detail
29864 {
29865
29866
29867
29868
29869
29870
29871 template< typename C >
29872 inline typename range_iterator<C>::type
29873 range_begin( C& c )
29874 {
29875
29876
29877
29878
29879
29880 return c.begin();
29881 }
29882
29883
29884
29885
29886
29887 template< typename Iterator >
29888 inline Iterator range_begin( const std::pair<Iterator,Iterator>& p )
29889 {
29890 return p.first;
29891 }
29892
29893 template< typename Iterator >
29894 inline Iterator range_begin( std::pair<Iterator,Iterator>& p )
29895 {
29896 return p.first;
29897 }
29898 # 75 "../boost/range/begin.hpp"
29899 template< typename T, std::size_t sz >
29900 inline const T* range_begin( const T (&a)[sz] )
29901 {
29902 return a;
29903 }
29904
29905 template< typename T, std::size_t sz >
29906 inline T* range_begin( T (&a)[sz] )
29907 {
29908 return a;
29909 }
29910
29911
29912
29913
29914
29915 }
29916
29917
29918
29919
29920
29921 namespace range_adl_barrier
29922 {
29923
29924 template< class T >
29925 inline typename range_iterator<T>::type begin( T& r )
29926 {
29927
29928
29929
29930 using namespace range_detail;
29931
29932 return range_begin( r );
29933 }
29934
29935 template< class T >
29936 inline typename range_iterator<const T>::type begin( const T& r )
29937 {
29938
29939
29940
29941 using namespace range_detail;
29942
29943 return range_begin( r );
29944 }
29945
29946 }
29947 }
29948
29949
29950
29951 namespace boost
29952 {
29953 namespace range_adl_barrier
29954 {
29955 template< class T >
29956 inline typename range_iterator<const T>::type
29957 const_begin( const T& r )
29958 {
29959 return boost::range_adl_barrier::begin( r );
29960 }
29961 }
29962
29963 using namespace range_adl_barrier;
29964 }
29965 # 19 "../boost/range/functions.hpp" 2
29966 # 1 "../boost/range/end.hpp" 1
29967 # 24 "../boost/range/end.hpp"
29968 # 1 "../boost/range/detail/implementation_help.hpp" 1
29969 # 15 "../boost/range/detail/implementation_help.hpp"
29970 # 1 "../boost/range/detail/common.hpp" 1
29971 # 19 "../boost/range/detail/common.hpp"
29972 # 1 "../boost/range/detail/sfinae.hpp" 1
29973 # 20 "../boost/range/detail/sfinae.hpp"
29974 namespace boost
29975 {
29976 namespace range_detail
29977 {
29978 using type_traits::yes_type;
29979 using type_traits::no_type;
29980
29981
29982
29983
29984
29985 yes_type is_string_impl( const char* const );
29986 yes_type is_string_impl( const wchar_t* const );
29987 no_type is_string_impl( ... );
29988
29989 template< std::size_t sz >
29990 yes_type is_char_array_impl( char (&boost_range_array)[sz] );
29991 template< std::size_t sz >
29992 yes_type is_char_array_impl( const char (&boost_range_array)[sz] );
29993 no_type is_char_array_impl( ... );
29994
29995 template< std::size_t sz >
29996 yes_type is_wchar_t_array_impl( wchar_t (&boost_range_array)[sz] );
29997 template< std::size_t sz >
29998 yes_type is_wchar_t_array_impl( const wchar_t (&boost_range_array)[sz] );
29999 no_type is_wchar_t_array_impl( ... );
30000
30001 yes_type is_char_ptr_impl( char* const );
30002 no_type is_char_ptr_impl( ... );
30003
30004 yes_type is_const_char_ptr_impl( const char* const );
30005 no_type is_const_char_ptr_impl( ... );
30006
30007 yes_type is_wchar_t_ptr_impl( wchar_t* const );
30008 no_type is_wchar_t_ptr_impl( ... );
30009
30010 yes_type is_const_wchar_t_ptr_impl( const wchar_t* const );
30011 no_type is_const_wchar_t_ptr_impl( ... );
30012
30013
30014
30015
30016
30017 template< typename Iterator >
30018 yes_type is_pair_impl( const std::pair<Iterator,Iterator>* );
30019 no_type is_pair_impl( ... );
30020
30021
30022
30023
30024
30025 struct char_or_wchar_t_array_tag {};
30026
30027 }
30028
30029 }
30030 # 20 "../boost/range/detail/common.hpp" 2
30031
30032
30033
30034
30035 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
30036 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
30037
30038 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
30039
30040
30041 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
30042 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
30043 # 25 "../boost/range/detail/common.hpp" 2
30044
30045
30046
30047
30048
30049 namespace boost
30050 {
30051 namespace range_detail
30052 {
30053 # 47 "../boost/range/detail/common.hpp"
30054 typedef mpl::int_<1>::type std_container_;
30055 typedef mpl::int_<2>::type std_pair_;
30056 typedef mpl::int_<3>::type const_std_pair_;
30057 typedef mpl::int_<4>::type array_;
30058 typedef mpl::int_<5>::type const_array_;
30059 typedef mpl::int_<6>::type char_array_;
30060 typedef mpl::int_<7>::type wchar_t_array_;
30061 typedef mpl::int_<8>::type char_ptr_;
30062 typedef mpl::int_<9>::type const_char_ptr_;
30063 typedef mpl::int_<10>::type wchar_t_ptr_;
30064 typedef mpl::int_<11>::type const_wchar_t_ptr_;
30065 typedef mpl::int_<12>::type string_;
30066
30067 template< typename C >
30068 struct range_helper
30069 {
30070 static C* c;
30071 static C ptr;
30072
30073 static const bool is_pair_ = sizeof( boost::range_detail::is_pair_impl( c ) ) == sizeof( yes_type );
30074 static const bool is_char_ptr_ = sizeof( boost::range_detail::is_char_ptr_impl( ptr ) ) == sizeof( yes_type );
30075 static const bool is_const_char_ptr_ = sizeof( boost::range_detail::is_const_char_ptr_impl( ptr ) ) == sizeof( yes_type );
30076 static const bool is_wchar_t_ptr_ = sizeof( boost::range_detail::is_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type );
30077 static const bool is_const_wchar_t_ptr_ = sizeof( boost::range_detail::is_const_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type );
30078 static const bool is_char_array_ = sizeof( boost::range_detail::is_char_array_impl( ptr ) ) == sizeof( yes_type );
30079 static const bool is_wchar_t_array_ = sizeof( boost::range_detail::is_wchar_t_array_impl( ptr ) ) == sizeof( yes_type );
30080 static const bool is_string_ = (boost::type_traits::ice_or<is_const_char_ptr_, is_const_wchar_t_ptr_>::value );
30081 static const bool is_array_ = boost::is_array<C>::value;
30082
30083 };
30084
30085 template< typename C >
30086 class range
30087 {
30088 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_pair_,
30089 boost::range_detail::std_pair_,
30090 void >::type pair_t;
30091 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_array_,
30092 boost::range_detail::array_,
30093 pair_t >::type array_t;
30094 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_string_,
30095 boost::range_detail::string_,
30096 array_t >::type string_t;
30097 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_char_ptr_,
30098 boost::range_detail::const_char_ptr_,
30099 string_t >::type const_char_ptr_t;
30100 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_ptr_,
30101 boost::range_detail::char_ptr_,
30102 const_char_ptr_t >::type char_ptr_t;
30103 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_wchar_t_ptr_,
30104 boost::range_detail::const_wchar_t_ptr_,
30105 char_ptr_t >::type const_wchar_ptr_t;
30106 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_ptr_,
30107 boost::range_detail::wchar_t_ptr_,
30108 const_wchar_ptr_t >::type wchar_ptr_t;
30109 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_array_,
30110 boost::range_detail::wchar_t_array_,
30111 wchar_ptr_t >::type wchar_array_t;
30112 typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_array_,
30113 boost::range_detail::char_array_,
30114 wchar_array_t >::type char_array_t;
30115 public:
30116 typedef typename boost::mpl::if_c< ::boost::is_void<char_array_t>::value,
30117 boost::range_detail::std_container_,
30118 char_array_t >::type type;
30119 };
30120 }
30121 }
30122 # 16 "../boost/range/detail/implementation_help.hpp" 2
30123
30124 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
30125 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
30126
30127 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
30128
30129
30130 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
30131 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
30132 # 18 "../boost/range/detail/implementation_help.hpp" 2
30133 # 1 "/usr/include/string.h" 1 3 4
30134 # 29 "/usr/include/string.h" 3 4
30135 extern "C" {
30136
30137
30138
30139
30140 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
30141 # 35 "/usr/include/string.h" 2 3 4
30142
30143
30144
30145
30146
30147
30148
30149
30150
30151 extern void *memcpy (void *__restrict __dest,
30152 __const void *__restrict __src, size_t __n)
30153 throw () __attribute__ ((__nonnull__ (1, 2)));
30154
30155
30156 extern void *memmove (void *__dest, __const void *__src, size_t __n)
30157 throw () __attribute__ ((__nonnull__ (1, 2)));
30158
30159
30160
30161
30162
30163
30164 extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
30165 int __c, size_t __n)
30166 throw () __attribute__ ((__nonnull__ (1, 2)));
30167
30168
30169
30170
30171
30172 extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
30173
30174
30175 extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
30176 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30177
30178
30179
30180 extern "C++"
30181 {
30182 extern void *memchr (void *__s, int __c, size_t __n)
30183 throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30184 extern __const void *memchr (__const void *__s, int __c, size_t __n)
30185 throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30186
30187
30188 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
30189 memchr (void *__s, int __c, size_t __n) throw ()
30190 {
30191 return __builtin_memchr (__s, __c, __n);
30192 }
30193
30194 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const void *
30195 memchr (__const void *__s, int __c, size_t __n) throw ()
30196 {
30197 return __builtin_memchr (__s, __c, __n);
30198 }
30199
30200 }
30201
30202
30203
30204
30205
30206
30207
30208
30209
30210
30211 extern "C++" void *rawmemchr (void *__s, int __c)
30212 throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30213 extern "C++" __const void *rawmemchr (__const void *__s, int __c)
30214 throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30215
30216
30217
30218
30219
30220
30221
30222 extern "C++" void *memrchr (void *__s, int __c, size_t __n)
30223 throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30224 extern "C++" __const void *memrchr (__const void *__s, int __c, size_t __n)
30225 throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30226
30227
30228
30229
30230
30231
30232
30233
30234
30235 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
30236 throw () __attribute__ ((__nonnull__ (1, 2)));
30237
30238 extern char *strncpy (char *__restrict __dest,
30239 __const char *__restrict __src, size_t __n)
30240 throw () __attribute__ ((__nonnull__ (1, 2)));
30241
30242
30243 extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
30244 throw () __attribute__ ((__nonnull__ (1, 2)));
30245
30246 extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
30247 size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
30248
30249
30250 extern int strcmp (__const char *__s1, __const char *__s2)
30251 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30252
30253 extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
30254 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30255
30256
30257 extern int strcoll (__const char *__s1, __const char *__s2)
30258 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30259
30260 extern size_t strxfrm (char *__restrict __dest,
30261 __const char *__restrict __src, size_t __n)
30262 throw () __attribute__ ((__nonnull__ (2)));
30263
30264 # 165 "/usr/include/string.h" 3 4
30265 extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
30266 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
30267
30268 extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
30269 __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4)));
30270
30271
30272
30273
30274
30275 extern char *strdup (__const char *__s)
30276 throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
30277
30278
30279
30280
30281
30282
30283 extern char *strndup (__const char *__string, size_t __n)
30284 throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
30285 # 210 "/usr/include/string.h" 3 4
30286
30287
30288
30289 extern "C++"
30290 {
30291 extern char *strchr (char *__s, int __c)
30292 throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30293 extern __const char *strchr (__const char *__s, int __c)
30294 throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30295
30296
30297 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30298 strchr (char *__s, int __c) throw ()
30299 {
30300 return __builtin_strchr (__s, __c);
30301 }
30302
30303 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
30304 strchr (__const char *__s, int __c) throw ()
30305 {
30306 return __builtin_strchr (__s, __c);
30307 }
30308
30309 }
30310
30311
30312
30313
30314
30315
30316 extern "C++"
30317 {
30318 extern char *strrchr (char *__s, int __c)
30319 throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30320 extern __const char *strrchr (__const char *__s, int __c)
30321 throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30322
30323
30324 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30325 strrchr (char *__s, int __c) throw ()
30326 {
30327 return __builtin_strrchr (__s, __c);
30328 }
30329
30330 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
30331 strrchr (__const char *__s, int __c) throw ()
30332 {
30333 return __builtin_strrchr (__s, __c);
30334 }
30335
30336 }
30337
30338
30339
30340
30341
30342
30343
30344
30345
30346
30347 extern "C++" char *strchrnul (char *__s, int __c)
30348 throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30349 extern "C++" __const char *strchrnul (__const char *__s, int __c)
30350 throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30351
30352
30353
30354
30355
30356
30357
30358
30359
30360 extern size_t strcspn (__const char *__s, __const char *__reject)
30361 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30362
30363
30364 extern size_t strspn (__const char *__s, __const char *__accept)
30365 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30366
30367
30368 extern "C++"
30369 {
30370 extern char *strpbrk (char *__s, __const char *__accept)
30371 throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30372 extern __const char *strpbrk (__const char *__s, __const char *__accept)
30373 throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30374
30375
30376 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30377 strpbrk (char *__s, __const char *__accept) throw ()
30378 {
30379 return __builtin_strpbrk (__s, __accept);
30380 }
30381
30382 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
30383 strpbrk (__const char *__s, __const char *__accept) throw ()
30384 {
30385 return __builtin_strpbrk (__s, __accept);
30386 }
30387
30388 }
30389
30390
30391
30392
30393
30394
30395 extern "C++"
30396 {
30397 extern char *strstr (char *__haystack, __const char *__needle)
30398 throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30399 extern __const char *strstr (__const char *__haystack,
30400 __const char *__needle)
30401 throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30402
30403
30404 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30405 strstr (char *__haystack, __const char *__needle) throw ()
30406 {
30407 return __builtin_strstr (__haystack, __needle);
30408 }
30409
30410 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
30411 strstr (__const char *__haystack, __const char *__needle) throw ()
30412 {
30413 return __builtin_strstr (__haystack, __needle);
30414 }
30415
30416 }
30417
30418
30419
30420
30421
30422
30423
30424 extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
30425 throw () __attribute__ ((__nonnull__ (2)));
30426
30427
30428
30429
30430 extern char *__strtok_r (char *__restrict __s,
30431 __const char *__restrict __delim,
30432 char **__restrict __save_ptr)
30433 throw () __attribute__ ((__nonnull__ (2, 3)));
30434
30435 extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
30436 char **__restrict __save_ptr)
30437 throw () __attribute__ ((__nonnull__ (2, 3)));
30438
30439
30440
30441
30442
30443 extern "C++" char *strcasestr (char *__haystack, __const char *__needle)
30444 throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30445 extern "C++" __const char *strcasestr (__const char *__haystack,
30446 __const char *__needle)
30447 throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30448 # 382 "/usr/include/string.h" 3 4
30449 extern void *memmem (__const void *__haystack, size_t __haystacklen,
30450 __const void *__needle, size_t __needlelen)
30451 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
30452
30453
30454
30455 extern void *__mempcpy (void *__restrict __dest,
30456 __const void *__restrict __src, size_t __n)
30457 throw () __attribute__ ((__nonnull__ (1, 2)));
30458 extern void *mempcpy (void *__restrict __dest,
30459 __const void *__restrict __src, size_t __n)
30460 throw () __attribute__ ((__nonnull__ (1, 2)));
30461
30462
30463
30464
30465
30466 extern size_t strlen (__const char *__s)
30467 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30468
30469
30470
30471
30472
30473 extern size_t strnlen (__const char *__string, size_t __maxlen)
30474 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30475
30476
30477
30478
30479
30480 extern char *strerror (int __errnum) throw ();
30481
30482 # 438 "/usr/include/string.h" 3 4
30483 extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
30484 throw () __attribute__ ((__nonnull__ (2)));
30485
30486
30487
30488
30489
30490 extern char *strerror_l (int __errnum, __locale_t __l) throw ();
30491
30492
30493
30494
30495
30496 extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
30497
30498
30499
30500 extern void bcopy (__const void *__src, void *__dest, size_t __n)
30501 throw () __attribute__ ((__nonnull__ (1, 2)));
30502
30503
30504 extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
30505
30506
30507 extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
30508 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30509
30510
30511
30512 extern "C++"
30513 {
30514 extern char *index (char *__s, int __c)
30515 throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30516 extern __const char *index (__const char *__s, int __c)
30517 throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30518
30519
30520 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30521 index (char *__s, int __c) throw ()
30522 {
30523 return __builtin_index (__s, __c);
30524 }
30525
30526 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
30527 index (__const char *__s, int __c) throw ()
30528 {
30529 return __builtin_index (__s, __c);
30530 }
30531
30532 }
30533
30534
30535
30536
30537
30538
30539
30540 extern "C++"
30541 {
30542 extern char *rindex (char *__s, int __c)
30543 throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30544 extern __const char *rindex (__const char *__s, int __c)
30545 throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
30546
30547
30548 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30549 rindex (char *__s, int __c) throw ()
30550 {
30551 return __builtin_rindex (__s, __c);
30552 }
30553
30554 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
30555 rindex (__const char *__s, int __c) throw ()
30556 {
30557 return __builtin_rindex (__s, __c);
30558 }
30559
30560 }
30561
30562
30563
30564
30565
30566
30567
30568 extern int ffs (int __i) throw () __attribute__ ((__const__));
30569
30570
30571
30572
30573 extern int ffsl (long int __l) throw () __attribute__ ((__const__));
30574
30575 __extension__ extern int ffsll (long long int __ll)
30576 throw () __attribute__ ((__const__));
30577
30578
30579
30580
30581 extern int strcasecmp (__const char *__s1, __const char *__s2)
30582 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30583
30584
30585 extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
30586 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30587
30588
30589
30590
30591
30592 extern int strcasecmp_l (__const char *__s1, __const char *__s2,
30593 __locale_t __loc)
30594 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
30595
30596 extern int strncasecmp_l (__const char *__s1, __const char *__s2,
30597 size_t __n, __locale_t __loc)
30598 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
30599
30600
30601
30602
30603
30604 extern char *strsep (char **__restrict __stringp,
30605 __const char *__restrict __delim)
30606 throw () __attribute__ ((__nonnull__ (1, 2)));
30607
30608
30609
30610
30611 extern char *strsignal (int __sig) throw ();
30612
30613
30614 extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
30615 throw () __attribute__ ((__nonnull__ (1, 2)));
30616 extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
30617 throw () __attribute__ ((__nonnull__ (1, 2)));
30618
30619
30620
30621 extern char *__stpncpy (char *__restrict __dest,
30622 __const char *__restrict __src, size_t __n)
30623 throw () __attribute__ ((__nonnull__ (1, 2)));
30624 extern char *stpncpy (char *__restrict __dest,
30625 __const char *__restrict __src, size_t __n)
30626 throw () __attribute__ ((__nonnull__ (1, 2)));
30627
30628
30629
30630
30631 extern int strverscmp (__const char *__s1, __const char *__s2)
30632 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
30633
30634
30635 extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1)));
30636
30637
30638 extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
30639
30640
30641
30642
30643
30644
30645
30646 extern "C++" char *basename (char *__filename)
30647 throw () __asm ("basename") __attribute__ ((__nonnull__ (1)));
30648 extern "C++" __const char *basename (__const char *__filename)
30649 throw () __asm ("basename") __attribute__ ((__nonnull__ (1)));
30650 # 642 "/usr/include/string.h" 3 4
30651 # 1 "/usr/include/bits/string3.h" 1 3 4
30652 # 23 "/usr/include/bits/string3.h" 3 4
30653 extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters")))
30654 ;
30655 # 48 "/usr/include/bits/string3.h" 3 4
30656 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
30657 memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len) throw ()
30658
30659 {
30660 return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
30661 }
30662
30663 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
30664 memmove (void *__dest, __const void *__src, size_t __len) throw ()
30665 {
30666 return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
30667 }
30668
30669
30670 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
30671 mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len) throw ()
30672
30673 {
30674 return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
30675 }
30676 # 76 "/usr/include/bits/string3.h" 3 4
30677 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
30678 memset (void *__dest, int __ch, size_t __len) throw ()
30679 {
30680 if (__builtin_constant_p (__len) && __len == 0
30681 && (!__builtin_constant_p (__ch) || __ch != 0))
30682 {
30683 __warn_memset_zero_len ();
30684 return __dest;
30685 }
30686 return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0));
30687 }
30688
30689
30690 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
30691 bcopy (__const void *__src, void *__dest, size_t __len) throw ()
30692 {
30693 (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
30694 }
30695
30696 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
30697 bzero (void *__dest, size_t __len) throw ()
30698 {
30699 (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0));
30700 }
30701
30702
30703 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30704 strcpy (char *__restrict __dest, __const char *__restrict __src) throw ()
30705 {
30706 return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
30707 }
30708
30709
30710 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30711 stpcpy (char *__restrict __dest, __const char *__restrict __src) throw ()
30712 {
30713 return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
30714 }
30715
30716
30717
30718 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30719 strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __len) throw ()
30720
30721 {
30722 return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
30723 }
30724
30725
30726 extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n,
30727 size_t __destlen) throw ();
30728 extern char *__stpncpy_alias (char *__dest, __const char *__src, size_t __n) throw () __asm__ ("" "stpncpy")
30729
30730 ;
30731
30732 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30733 stpncpy (char *__dest, __const char *__src, size_t __n) throw ()
30734 {
30735 if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1
30736 && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1)))
30737 return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1));
30738 return __stpncpy_alias (__dest, __src, __n);
30739 }
30740
30741
30742 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30743 strcat (char *__restrict __dest, __const char *__restrict __src) throw ()
30744 {
30745 return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
30746 }
30747
30748
30749 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
30750 strncat (char *__restrict __dest, __const char *__restrict __src, size_t __len) throw ()
30751
30752 {
30753 return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
30754 }
30755 # 643 "/usr/include/string.h" 2 3 4
30756
30757
30758
30759 }
30760 # 19 "../boost/range/detail/implementation_help.hpp" 2
30761
30762
30763 # 1 "/usr/include/wchar.h" 1 3 4
30764 # 22 "../boost/range/detail/implementation_help.hpp" 2
30765
30766
30767 namespace boost
30768 {
30769 namespace range_detail
30770 {
30771 template <typename T>
30772 inline void boost_range_silence_warning( const T& ) { }
30773
30774
30775
30776
30777
30778 inline const char* str_end( const char* s, const char* )
30779 {
30780 return s + strlen( s );
30781 }
30782
30783
30784 inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
30785 {
30786 return s + wcslen( s );
30787 }
30788 # 56 "../boost/range/detail/implementation_help.hpp"
30789 template< class Char >
30790 inline Char* str_end( Char* s )
30791 {
30792 return const_cast<Char*>( str_end( s, s ) );
30793 }
30794
30795 template< class T, std::size_t sz >
30796 inline T* array_end( T (&boost_range_array)[sz] )
30797 {
30798 return boost_range_array + sz;
30799 }
30800
30801 template< class T, std::size_t sz >
30802 inline const T* array_end( const T (&boost_range_array)[sz] )
30803 {
30804 return boost_range_array + sz;
30805 }
30806
30807
30808
30809
30810
30811 template< class Char >
30812 inline std::size_t str_size( const Char* const& s )
30813 {
30814 return str_end( s ) - s;
30815 }
30816
30817 template< class T, std::size_t sz >
30818 inline std::size_t array_size( T (&boost_range_array)[sz] )
30819 {
30820 boost_range_silence_warning( boost_range_array );
30821 return sz;
30822 }
30823
30824 template< class T, std::size_t sz >
30825 inline std::size_t array_size( const T (&boost_range_array)[sz] )
30826 {
30827 boost_range_silence_warning( boost_range_array );
30828 return sz;
30829 }
30830
30831 }
30832
30833 }
30834 # 25 "../boost/range/end.hpp" 2
30835
30836
30837
30838 namespace boost
30839 {
30840
30841
30842
30843
30844 namespace range_detail
30845 {
30846
30847
30848
30849
30850
30851 template< typename C >
30852 inline typename range_iterator<C>::type
30853 range_end( C& c )
30854 {
30855
30856
30857
30858
30859
30860 return c.end();
30861 }
30862
30863
30864
30865
30866
30867 template< typename Iterator >
30868 inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
30869 {
30870 return p.second;
30871 }
30872
30873 template< typename Iterator >
30874 inline Iterator range_end( std::pair<Iterator,Iterator>& p )
30875 {
30876 return p.second;
30877 }
30878
30879
30880
30881
30882
30883 template< typename T, std::size_t sz >
30884 inline const T* range_end( const T (&a)[sz] )
30885 {
30886 return range_detail::array_end<T,sz>( a );
30887 }
30888
30889 template< typename T, std::size_t sz >
30890 inline T* range_end( T (&a)[sz] )
30891 {
30892 return range_detail::array_end<T,sz>( a );
30893 }
30894
30895
30896
30897
30898 }
30899
30900
30901 namespace range_adl_barrier
30902 {
30903
30904 template< class T >
30905 inline typename range_iterator<T>::type end( T& r )
30906 {
30907
30908
30909
30910 using namespace range_detail;
30911
30912 return range_end( r );
30913 }
30914
30915 template< class T >
30916 inline typename range_iterator<const T>::type end( const T& r )
30917 {
30918
30919
30920
30921 using namespace range_detail;
30922
30923 return range_end( r );
30924 }
30925
30926 }
30927 }
30928
30929
30930
30931 namespace boost
30932 {
30933 namespace range_adl_barrier
30934 {
30935 template< class T >
30936 inline typename range_iterator<const T>::type
30937 const_end( const T& r )
30938 {
30939 return boost::range_adl_barrier::end( r );
30940 }
30941 }
30942 using namespace range_adl_barrier;
30943 }
30944 # 20 "../boost/range/functions.hpp" 2
30945 # 1 "../boost/range/size.hpp" 1
30946 # 21 "../boost/range/size.hpp"
30947 # 1 "../boost/range/difference_type.hpp" 1
30948 # 22 "../boost/range/difference_type.hpp"
30949 namespace boost
30950 {
30951 template< class T >
30952 struct range_difference : iterator_difference< typename range_iterator<T>::type >
30953 { };
30954 }
30955 # 22 "../boost/range/size.hpp" 2
30956 # 1 "../boost/assert.hpp" 1
30957 # 50 "../boost/assert.hpp"
30958 # 1 "/usr/include/assert.h" 1 3 4
30959 # 51 "../boost/assert.hpp" 2
30960 # 23 "../boost/range/size.hpp" 2
30961
30962 namespace boost
30963 {
30964 namespace range_detail
30965 {
30966 template<class SinglePassRange>
30967 inline typename range_difference<SinglePassRange>::type
30968 range_calculate_size(const SinglePassRange& rng)
30969 {
30970 (static_cast<void> (0))
30971 ;
30972 return boost::end(rng) - boost::begin(rng);
30973 }
30974 }
30975
30976 template<class SinglePassRange>
30977 inline typename range_difference<SinglePassRange>::type
30978 size(const SinglePassRange& rng)
30979 {
30980
30981
30982
30983 using namespace range_detail;
30984
30985 return range_calculate_size(rng);
30986 }
30987
30988 }
30989 # 21 "../boost/range/functions.hpp" 2
30990 # 1 "../boost/range/distance.hpp" 1
30991 # 22 "../boost/range/distance.hpp"
30992 namespace boost
30993 {
30994
30995 template< class T >
30996 inline typename range_difference<T>::type
30997 distance( const T& r )
30998 {
30999 return std::distance( boost::begin( r ), boost::end( r ) );
31000 }
31001
31002 }
31003 # 22 "../boost/range/functions.hpp" 2
31004 # 1 "../boost/range/empty.hpp" 1
31005 # 22 "../boost/range/empty.hpp"
31006 namespace boost
31007 {
31008
31009 template< class T >
31010 inline bool empty( const T& r )
31011 {
31012 return boost::begin( r ) == boost::end( r );
31013 }
31014
31015 }
31016 # 23 "../boost/range/functions.hpp" 2
31017 # 1 "../boost/range/rbegin.hpp" 1
31018 # 19 "../boost/range/rbegin.hpp"
31019 # 1 "../boost/range/reverse_iterator.hpp" 1
31020 # 20 "../boost/range/reverse_iterator.hpp"
31021 # 1 "../boost/iterator/reverse_iterator.hpp" 1
31022 # 11 "../boost/iterator/reverse_iterator.hpp"
31023 # 1 "../boost/utility.hpp" 1
31024 # 12 "../boost/utility.hpp"
31025 # 1 "../boost/utility/addressof.hpp" 1
31026 # 18 "../boost/utility/addressof.hpp"
31027 namespace boost
31028 {
31029
31030 namespace detail
31031 {
31032
31033 template<class T> struct addr_impl_ref
31034 {
31035 T & v_;
31036
31037 inline addr_impl_ref( T & v ): v_( v ) {}
31038 inline operator T& () const { return v_; }
31039
31040 private:
31041 addr_impl_ref & operator=(const addr_impl_ref &);
31042 };
31043
31044 template<class T> struct addressof_impl
31045 {
31046 static inline T * f( T & v, long )
31047 {
31048 return reinterpret_cast<T*>(
31049 &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
31050 }
31051
31052 static inline T * f( T * v, int )
31053 {
31054 return v;
31055 }
31056 };
31057
31058 }
31059
31060 template<class T> T * addressof( T & v )
31061 {
31062
31063
31064
31065
31066
31067
31068 return boost::detail::addressof_impl<T>::f( boost::detail::addr_impl_ref<T>( v ), 0 );
31069
31070
31071 }
31072 # 100 "../boost/utility/addressof.hpp"
31073 }
31074 # 13 "../boost/utility.hpp" 2
31075 # 1 "../boost/utility/base_from_member.hpp" 1
31076 # 14 "../boost/utility/base_from_member.hpp"
31077 # 1 "../boost/preprocessor/repetition/enum_binary_params.hpp" 1
31078 # 15 "../boost/utility/base_from_member.hpp" 2
31079
31080 # 1 "../boost/preprocessor/repetition/repeat_from_to.hpp" 1
31081 # 23 "../boost/preprocessor/repetition/repeat_from_to.hpp"
31082 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
31083 # 24 "../boost/preprocessor/repetition/repeat_from_to.hpp" 2
31084 # 17 "../boost/utility/base_from_member.hpp" 2
31085 # 53 "../boost/utility/base_from_member.hpp"
31086 namespace boost
31087 {
31088 # 65 "../boost/utility/base_from_member.hpp"
31089 template < typename MemberType, int UniqueID = 0 >
31090 class base_from_member
31091 {
31092 protected:
31093 MemberType member;
31094
31095 base_from_member()
31096 : member()
31097 {}
31098
31099
31100 template < typename T0 > explicit base_from_member( T0 x0 ) : member( x0 ) {} template < typename T0 , typename T1 > explicit base_from_member( T0 x0 , T1 x1 ) : member( x0 , x1 ) {} template < typename T0 , typename T1 , typename T2 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 ) : member( x0 , x1 , x2 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 ) : member( x0 , x1 , x2 , x3 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 ) : member( x0 , x1 , x2 , x3 , x4 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 ) : member( x0 , x1 , x2 , x3 , x4 , x5 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 , T7 x7 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 , T7 x7 , T8 x8 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 ) {} template < typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > explicit base_from_member( T0 x0 , T1 x1 , T2 x2 , T3 x3 , T4 x4 , T5 x5 , T6 x6 , T7 x7 , T8 x8 , T9 x9 ) : member( x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 ) {}
31101
31102 };
31103
31104 }
31105 # 14 "../boost/utility.hpp" 2
31106 # 1 "../boost/utility/binary.hpp" 1
31107 # 26 "../boost/utility/binary.hpp"
31108 # 1 "../boost/preprocessor/control/deduce_d.hpp" 1
31109 # 16 "../boost/preprocessor/control/deduce_d.hpp"
31110 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
31111 # 17 "../boost/preprocessor/control/deduce_d.hpp" 2
31112 # 27 "../boost/utility/binary.hpp" 2
31113
31114
31115 # 1 "../boost/preprocessor/seq/cat.hpp" 1
31116 # 18 "../boost/preprocessor/seq/cat.hpp"
31117 # 1 "../boost/preprocessor/seq/fold_left.hpp" 1
31118 # 19 "../boost/preprocessor/seq/fold_left.hpp"
31119 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
31120 # 20 "../boost/preprocessor/seq/fold_left.hpp" 2
31121 # 1 "../boost/preprocessor/seq/seq.hpp" 1
31122 # 16 "../boost/preprocessor/seq/seq.hpp"
31123 # 1 "../boost/preprocessor/seq/elem.hpp" 1
31124 # 17 "../boost/preprocessor/seq/seq.hpp" 2
31125 # 21 "../boost/preprocessor/seq/fold_left.hpp" 2
31126 # 1 "../boost/preprocessor/seq/size.hpp" 1
31127 # 22 "../boost/preprocessor/seq/fold_left.hpp" 2
31128 # 19 "../boost/preprocessor/seq/cat.hpp" 2
31129 # 30 "../boost/utility/binary.hpp" 2
31130 # 1 "../boost/preprocessor/seq/transform.hpp" 1
31131 # 31 "../boost/utility/binary.hpp" 2
31132 # 1 "../boost/preprocessor/arithmetic/mod.hpp" 1
31133 # 17 "../boost/preprocessor/arithmetic/mod.hpp"
31134 # 1 "../boost/preprocessor/arithmetic/detail/div_base.hpp" 1
31135 # 19 "../boost/preprocessor/arithmetic/detail/div_base.hpp"
31136 # 1 "../boost/preprocessor/comparison/less_equal.hpp" 1
31137 # 19 "../boost/preprocessor/comparison/less_equal.hpp"
31138 # 1 "../boost/preprocessor/logical/not.hpp" 1
31139 # 20 "../boost/preprocessor/comparison/less_equal.hpp" 2
31140 # 20 "../boost/preprocessor/arithmetic/detail/div_base.hpp" 2
31141 # 18 "../boost/preprocessor/arithmetic/mod.hpp" 2
31142 # 32 "../boost/utility/binary.hpp" 2
31143 # 15 "../boost/utility.hpp" 2
31144 # 1 "../boost/utility/enable_if.hpp" 1
31145 # 24 "../boost/utility/enable_if.hpp"
31146 namespace boost
31147 {
31148
31149 template <bool B, class T = void>
31150 struct enable_if_c {
31151 typedef T type;
31152 };
31153
31154 template <class T>
31155 struct enable_if_c<false, T> {};
31156
31157 template <class Cond, class T = void>
31158 struct enable_if : public enable_if_c<Cond::value, T> {};
31159
31160 template <bool B, class T>
31161 struct lazy_enable_if_c {
31162 typedef typename T::type type;
31163 };
31164
31165 template <class T>
31166 struct lazy_enable_if_c<false, T> {};
31167
31168 template <class Cond, class T>
31169 struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
31170
31171
31172 template <bool B, class T = void>
31173 struct disable_if_c {
31174 typedef T type;
31175 };
31176
31177 template <class T>
31178 struct disable_if_c<true, T> {};
31179
31180 template <class Cond, class T = void>
31181 struct disable_if : public disable_if_c<Cond::value, T> {};
31182
31183 template <bool B, class T>
31184 struct lazy_disable_if_c {
31185 typedef typename T::type type;
31186 };
31187
31188 template <class T>
31189 struct lazy_disable_if_c<true, T> {};
31190
31191 template <class Cond, class T>
31192 struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
31193
31194 }
31195 # 16 "../boost/utility.hpp" 2
31196
31197 # 1 "../boost/next_prior.hpp" 1
31198 # 17 "../boost/next_prior.hpp"
31199 namespace boost {
31200 # 29 "../boost/next_prior.hpp"
31201 template <class T>
31202 inline T next(T x) { return ++x; }
31203
31204 template <class T, class Distance>
31205 inline T next(T x, Distance n)
31206 {
31207 std::advance(x, n);
31208 return x;
31209 }
31210
31211 template <class T>
31212 inline T prior(T x) { return --x; }
31213
31214 template <class T, class Distance>
31215 inline T prior(T x, Distance n)
31216 {
31217 std::advance(x, -n);
31218 return x;
31219 }
31220
31221 }
31222 # 18 "../boost/utility.hpp" 2
31223 # 1 "../boost/noncopyable.hpp" 1
31224 # 12 "../boost/noncopyable.hpp"
31225 namespace boost {
31226
31227
31228
31229
31230
31231
31232 namespace noncopyable_
31233 {
31234 class noncopyable
31235 {
31236 protected:
31237 noncopyable() {}
31238 ~noncopyable() {}
31239 private:
31240 noncopyable( const noncopyable& );
31241 const noncopyable& operator=( const noncopyable& );
31242 };
31243 }
31244
31245 typedef noncopyable_::noncopyable noncopyable;
31246
31247 }
31248 # 19 "../boost/utility.hpp" 2
31249 # 12 "../boost/iterator/reverse_iterator.hpp" 2
31250 # 1 "../boost/iterator/iterator_adaptor.hpp" 1
31251 # 30 "../boost/iterator/iterator_adaptor.hpp"
31252 # 1 "../boost/iterator/detail/config_def.hpp" 1
31253 # 31 "../boost/iterator/iterator_adaptor.hpp" 2
31254
31255
31256
31257 namespace boost
31258 {
31259
31260
31261
31262 struct use_default;
31263
31264
31265
31266
31267
31268 template<class To>
31269 struct is_convertible<use_default,To>
31270 : mpl::false_ {};
31271
31272
31273 namespace detail
31274 {
31275 # 60 "../boost/iterator/iterator_adaptor.hpp"
31276 struct enable_type;
31277 }
31278 # 142 "../boost/iterator/iterator_adaptor.hpp"
31279 template<typename From, typename To>
31280 struct enable_if_convertible
31281 : iterators::enable_if<
31282 is_convertible<From, To>
31283 , boost::detail::enable_type
31284 >
31285 {};
31286
31287
31288
31289
31290
31291
31292 namespace detail
31293 {
31294
31295
31296 template <class T, class DefaultNullaryFn>
31297 struct ia_dflt_help
31298 : mpl::eval_if<
31299 is_same<T, use_default>
31300 , DefaultNullaryFn
31301 , mpl::identity<T>
31302 >
31303 {
31304 };
31305
31306
31307
31308 template <
31309 class Derived
31310 , class Base
31311 , class Value
31312 , class Traversal
31313 , class Reference
31314 , class Difference
31315 >
31316 struct iterator_adaptor_base
31317 {
31318 typedef iterator_facade<
31319 Derived
31320
31321
31322 , typename boost::detail::ia_dflt_help<
31323 Value
31324 , mpl::eval_if<
31325 is_same<Reference,use_default>
31326 , iterator_value<Base>
31327 , remove_reference<Reference>
31328 >
31329 >::type
31330
31331
31332
31333
31334
31335
31336 , typename boost::detail::ia_dflt_help<
31337 Traversal
31338 , iterator_traversal<Base>
31339 >::type
31340
31341 , typename boost::detail::ia_dflt_help<
31342 Reference
31343 , mpl::eval_if<
31344 is_same<Value,use_default>
31345 , iterator_reference<Base>
31346 , add_reference<Value>
31347 >
31348 >::type
31349
31350 , typename boost::detail::ia_dflt_help<
31351 Difference, iterator_difference<Base>
31352 >::type
31353 >
31354 type;
31355 };
31356
31357
31358 template <class Tr1, class Tr2>
31359 inline void iterator_adaptor_assert_traversal ()
31360 {
31361 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (((is_convertible<Tr1, Tr2>::value)) == 0 ? false : true) >)> boost_static_assert_typedef_224;
31362 }
31363 }
31364 # 253 "../boost/iterator/iterator_adaptor.hpp"
31365 template <
31366 class Derived
31367 , class Base
31368 , class Value = use_default
31369 , class Traversal = use_default
31370 , class Reference = use_default
31371 , class Difference = use_default
31372 >
31373 class iterator_adaptor
31374 : public boost::detail::iterator_adaptor_base<
31375 Derived, Base, Value, Traversal, Reference, Difference
31376 >::type
31377 {
31378 friend class iterator_core_access;
31379
31380 protected:
31381 typedef typename boost::detail::iterator_adaptor_base<
31382 Derived, Base, Value, Traversal, Reference, Difference
31383 >::type super_t;
31384 public:
31385 iterator_adaptor() {}
31386
31387 explicit iterator_adaptor(Base const &iter)
31388 : m_iterator(iter)
31389 {
31390 }
31391
31392 typedef Base base_type;
31393
31394 Base const& base() const
31395 { return m_iterator; }
31396
31397 protected:
31398
31399 typedef iterator_adaptor<Derived,Base,Value,Traversal,Reference,Difference> iterator_adaptor_;
31400
31401
31402
31403
31404 Base const& base_reference() const
31405 { return m_iterator; }
31406
31407 Base& base_reference()
31408 { return m_iterator; }
31409
31410 private:
31411
31412
31413
31414
31415
31416
31417 typename super_t::reference dereference() const
31418 { return *m_iterator; }
31419
31420 template <
31421 class OtherDerived, class OtherIterator, class V, class C, class R, class D
31422 >
31423 bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& x) const
31424 {
31425
31426
31427
31428
31429 return m_iterator == x.base();
31430 }
31431
31432 typedef typename iterator_category_to_traversal<
31433 typename super_t::iterator_category
31434 >::type my_traversal;
31435
31436
31437
31438
31439 void advance(typename super_t::difference_type n)
31440 {
31441 boost::detail::iterator_adaptor_assert_traversal<my_traversal, random_access_traversal_tag>();
31442 m_iterator += n;
31443 }
31444
31445 void increment() { ++m_iterator; }
31446
31447 void decrement()
31448 {
31449 boost::detail::iterator_adaptor_assert_traversal<my_traversal, bidirectional_traversal_tag>();
31450 --m_iterator;
31451 }
31452
31453 template <
31454 class OtherDerived, class OtherIterator, class V, class C, class R, class D
31455 >
31456 typename super_t::difference_type distance_to(
31457 iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& y) const
31458 {
31459 boost::detail::iterator_adaptor_assert_traversal<my_traversal, random_access_traversal_tag>();
31460
31461
31462
31463
31464 return y.base() - m_iterator;
31465 }
31466
31467
31468
31469 private:
31470 Base m_iterator;
31471 };
31472
31473 }
31474
31475 # 1 "../boost/iterator/detail/config_undef.hpp" 1
31476 # 364 "../boost/iterator/iterator_adaptor.hpp" 2
31477 # 13 "../boost/iterator/reverse_iterator.hpp" 2
31478
31479 namespace boost
31480 {
31481
31482
31483
31484
31485 template <class Iterator>
31486 class reverse_iterator
31487 : public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
31488 {
31489 typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
31490
31491 friend class iterator_core_access;
31492
31493 public:
31494 reverse_iterator() {}
31495
31496 explicit reverse_iterator(Iterator x)
31497 : super_t(x) {}
31498
31499 template<class OtherIterator>
31500 reverse_iterator(
31501 reverse_iterator<OtherIterator> const& r
31502 , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
31503 )
31504 : super_t(r.base())
31505 {}
31506
31507 private:
31508 typename super_t::reference dereference() const { return *boost::prior(this->base()); }
31509
31510 void increment() { --this->base_reference(); }
31511 void decrement() { ++this->base_reference(); }
31512
31513 void advance(typename super_t::difference_type n)
31514 {
31515 this->base_reference() += -n;
31516 }
31517
31518 template <class OtherIterator>
31519 typename super_t::difference_type
31520 distance_to(reverse_iterator<OtherIterator> const& y) const
31521 {
31522 return this->base_reference() - y.base();
31523 }
31524 };
31525
31526 template <class BidirectionalIterator>
31527 reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
31528 {
31529 return reverse_iterator<BidirectionalIterator>(x);
31530 }
31531
31532 }
31533 # 21 "../boost/range/reverse_iterator.hpp" 2
31534
31535
31536 namespace boost
31537 {
31538
31539
31540
31541
31542 template< typename C >
31543 struct range_reverse_iterator
31544 {
31545 typedef reverse_iterator<
31546 typename range_iterator<C>::type > type;
31547 };
31548
31549
31550 }
31551 # 20 "../boost/range/rbegin.hpp" 2
31552
31553 namespace boost
31554 {
31555 # 35 "../boost/range/rbegin.hpp"
31556 template< class C >
31557 inline typename range_reverse_iterator<C>::type
31558 rbegin( C& c )
31559 {
31560 typedef typename range_reverse_iterator<C>::type
31561 iter_type;
31562 return iter_type( boost::end( c ) );
31563 }
31564
31565 template< class C >
31566 inline typename range_reverse_iterator<const C>::type
31567 rbegin( const C& c )
31568 {
31569 typedef typename range_reverse_iterator<const C>::type
31570 iter_type;
31571 return iter_type( boost::end( c ) );
31572 }
31573
31574
31575
31576 template< class T >
31577 inline typename range_reverse_iterator<const T>::type
31578 const_rbegin( const T& r )
31579 {
31580 return boost::rbegin( r );
31581 }
31582
31583 }
31584 # 24 "../boost/range/functions.hpp" 2
31585 # 1 "../boost/range/rend.hpp" 1
31586 # 21 "../boost/range/rend.hpp"
31587 namespace boost
31588 {
31589 # 35 "../boost/range/rend.hpp"
31590 template< class C >
31591 inline typename range_reverse_iterator<C>::type
31592 rend( C& c )
31593 {
31594 typedef typename range_reverse_iterator<C>::type
31595 iter_type;
31596 return iter_type( boost::begin( c ) );
31597 }
31598
31599 template< class C >
31600 inline typename range_reverse_iterator<const C>::type
31601 rend( const C& c )
31602 {
31603 typedef typename range_reverse_iterator<const C>::type
31604 iter_type;
31605 return iter_type( boost::begin( c ) );
31606 }
31607
31608
31609
31610 template< class T >
31611 inline typename range_reverse_iterator<const T>::type
31612 const_rend( const T& r )
31613 {
31614 return boost::rend( r );
31615 }
31616
31617 }
31618 # 25 "../boost/range/functions.hpp" 2
31619 # 27 "../boost/range/iterator_range_core.hpp" 2
31620
31621
31622 # 1 "../boost/range/algorithm/equal.hpp" 1
31623 # 14 "../boost/range/algorithm/equal.hpp"
31624 # 1 "../boost/range/concepts.hpp" 1
31625 # 19 "../boost/range/concepts.hpp"
31626 # 1 "../boost/concept_check.hpp" 1
31627 # 20 "../boost/concept_check.hpp"
31628 # 1 "../boost/concept/assert.hpp" 1
31629 # 36 "../boost/concept/assert.hpp"
31630 # 1 "../boost/concept/detail/general.hpp" 1
31631
31632
31633
31634
31635
31636
31637
31638 # 1 "../boost/concept/detail/backward_compatibility.hpp" 1
31639
31640
31641
31642
31643
31644
31645 namespace boost
31646 {
31647 namespace concepts {}
31648
31649
31650
31651
31652 }
31653 # 9 "../boost/concept/detail/general.hpp" 2
31654
31655
31656 # 1 "../boost/concept/detail/has_constraints.hpp" 1
31657 # 11 "../boost/concept/detail/has_constraints.hpp"
31658 namespace boost { namespace concepts {
31659
31660 namespace detail
31661 {
31662
31663
31664
31665 typedef char yes;
31666 typedef char (&no)[2];
31667
31668 template <class Model, void (Model::*)()>
31669 struct wrap_constraints {};
31670 # 31 "../boost/concept/detail/has_constraints.hpp"
31671 template <class Model>
31672 inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
31673 inline no has_constraints_(...);
31674
31675 }
31676
31677
31678
31679 template <class Model>
31680 struct not_satisfied
31681 {
31682 static const bool value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes)
31683
31684 ;
31685 typedef mpl::bool_<value> type;
31686 };
31687
31688 }}
31689 # 12 "../boost/concept/detail/general.hpp" 2
31690
31691
31692
31693
31694
31695 namespace boost { namespace concepts {
31696
31697 template <class ModelFn>
31698 struct requirement_;
31699
31700 namespace detail
31701 {
31702 template <void(*)()> struct instantiate {};
31703 }
31704
31705 template <class Model>
31706 struct requirement
31707 {
31708 static void failed() { ((Model*)0)->~Model(); }
31709 };
31710
31711 struct failed {};
31712
31713 template <class Model>
31714 struct requirement<failed ************ Model::************>
31715 {
31716 static void failed() { ((Model*)0)->~Model(); }
31717 };
31718
31719
31720
31721 template <class Model>
31722 struct constraint
31723 {
31724 static void failed() { ((Model*)0)->constraints(); }
31725 };
31726
31727 template <class Model>
31728 struct requirement_<void(*)(Model)>
31729 : mpl::if_<
31730 concepts::not_satisfied<Model>
31731 , constraint<Model>
31732 , requirement<failed ************ Model::************>
31733 >::type
31734 {};
31735 # 73 "../boost/concept/detail/general.hpp"
31736 }}
31737 # 37 "../boost/concept/assert.hpp" 2
31738 # 21 "../boost/concept_check.hpp" 2
31739
31740
31741 # 1 "../boost/type_traits/conversion_traits.hpp" 1
31742 # 24 "../boost/concept_check.hpp" 2
31743 # 32 "../boost/concept_check.hpp"
31744 # 1 "../boost/concept/usage.hpp" 1
31745 # 11 "../boost/concept/usage.hpp"
31746 namespace boost { namespace concepts {
31747
31748
31749
31750
31751
31752
31753
31754 template <class Model>
31755 struct usage_requirements
31756 {
31757 ~usage_requirements() { ((Model*)0)->~Model(); }
31758 };
31759 # 42 "../boost/concept/usage.hpp"
31760 }}
31761 # 33 "../boost/concept_check.hpp" 2
31762 # 1 "../boost/concept/detail/concept_def.hpp" 1
31763
31764
31765
31766
31767
31768 # 1 "../boost/preprocessor/seq/for_each_i.hpp" 1
31769 # 18 "../boost/preprocessor/seq/for_each_i.hpp"
31770 # 1 "../boost/preprocessor/repetition/for.hpp" 1
31771 # 19 "../boost/preprocessor/repetition/for.hpp"
31772 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
31773 # 20 "../boost/preprocessor/repetition/for.hpp" 2
31774 # 42 "../boost/preprocessor/repetition/for.hpp"
31775 # 1 "../boost/preprocessor/repetition/detail/for.hpp" 1
31776 # 43 "../boost/preprocessor/repetition/for.hpp" 2
31777 # 19 "../boost/preprocessor/seq/for_each_i.hpp" 2
31778 # 7 "../boost/concept/detail/concept_def.hpp" 2
31779 # 1 "../boost/preprocessor/seq/enum.hpp" 1
31780 # 8 "../boost/concept/detail/concept_def.hpp" 2
31781 # 34 "../boost/concept_check.hpp" 2
31782
31783 namespace boost
31784 {
31785
31786
31787
31788
31789
31790 template <class Model>
31791 inline void function_requires(Model* = 0)
31792 {
31793 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Model)>::failed> boost_concept_check45;
31794 }
31795 template <class T> inline void ignore_unused_variable_warning(T const&) {}
31796 # 65 "../boost/concept_check.hpp"
31797 template < typename T > struct Integer; template < typename T > struct IntegerConcept : Integer< T > { }; template < typename T > struct Integer
31798 {
31799 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Integer>)>::failed> boost_concept_check67; ~Integer()
31800 {
31801 x.error_type_must_be_an_integer_type();
31802 }
31803 private:
31804 T x;
31805 };
31806
31807 template <> struct Integer<char> {};
31808 template <> struct Integer<signed char> {};
31809 template <> struct Integer<unsigned char> {};
31810 template <> struct Integer<short> {};
31811 template <> struct Integer<unsigned short> {};
31812 template <> struct Integer<int> {};
31813 template <> struct Integer<unsigned int> {};
31814 template <> struct Integer<long> {};
31815 template <> struct Integer<unsigned long> {};
31816
31817 template <> struct Integer< ::boost::long_long_type> {};
31818 template <> struct Integer< ::boost::ulong_long_type> {};
31819
31820
31821
31822
31823
31824 template < typename T > struct SignedInteger; template < typename T > struct SignedIntegerConcept : SignedInteger< T > { }; template < typename T > struct SignedInteger {
31825 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SignedInteger>)>::failed> boost_concept_check93; ~SignedInteger() {
31826 x.error_type_must_be_a_signed_integer_type();
31827 }
31828 private:
31829 T x;
31830 };
31831 template <> struct SignedInteger<signed char> { };
31832 template <> struct SignedInteger<short> {};
31833 template <> struct SignedInteger<int> {};
31834 template <> struct SignedInteger<long> {};
31835
31836 template <> struct SignedInteger< ::boost::long_long_type> {};
31837
31838
31839
31840
31841 template < typename T > struct UnsignedInteger; template < typename T > struct UnsignedIntegerConcept : UnsignedInteger< T > { }; template < typename T > struct UnsignedInteger {
31842 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UnsignedInteger>)>::failed> boost_concept_check110; ~UnsignedInteger() {
31843 x.error_type_must_be_an_unsigned_integer_type();
31844 }
31845 private:
31846 T x;
31847 };
31848
31849 template <> struct UnsignedInteger<unsigned char> {};
31850 template <> struct UnsignedInteger<unsigned short> {};
31851 template <> struct UnsignedInteger<unsigned int> {};
31852 template <> struct UnsignedInteger<unsigned long> {};
31853
31854 template <> struct UnsignedInteger< ::boost::ulong_long_type> {};
31855
31856
31857
31858
31859
31860
31861
31862 template < typename TT > struct DefaultConstructible; template < typename TT > struct DefaultConstructibleConcept : DefaultConstructible< TT > { }; template < typename TT > struct DefaultConstructible
31863 {
31864 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<DefaultConstructible>)>::failed> boost_concept_check132; ~DefaultConstructible() {
31865 TT a;
31866 ignore_unused_variable_warning(a);
31867 }
31868 };
31869
31870 template < typename TT > struct Assignable; template < typename TT > struct AssignableConcept : Assignable< TT > { }; template < typename TT > struct Assignable
31871 {
31872 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Assignable>)>::failed> boost_concept_check140; ~Assignable() {
31873
31874 a = b;
31875
31876 const_constraints(b);
31877 }
31878 private:
31879 void const_constraints(const TT& x) {
31880
31881 a = x;
31882
31883
31884
31885 }
31886 private:
31887 TT a;
31888 TT b;
31889 };
31890
31891
31892 template < typename TT > struct CopyConstructible; template < typename TT > struct CopyConstructibleConcept : CopyConstructible< TT > { }; template < typename TT > struct CopyConstructible
31893 {
31894 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<CopyConstructible>)>::failed> boost_concept_check162; ~CopyConstructible() {
31895 TT a(b);
31896 TT* ptr = &a;
31897 const_constraints(a);
31898 ignore_unused_variable_warning(ptr);
31899 }
31900 private:
31901 void const_constraints(const TT& a) {
31902 TT c(a);
31903 const TT* ptr = &a;
31904 ignore_unused_variable_warning(c);
31905 ignore_unused_variable_warning(ptr);
31906 }
31907 TT b;
31908 };
31909
31910
31911
31912
31913
31914
31915
31916 template < typename TT > struct SGIAssignable; template < typename TT > struct SGIAssignableConcept : SGIAssignable< TT > { }; template < typename TT > struct SGIAssignable
31917 {
31918 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SGIAssignable>)>::failed> boost_concept_check186; ~SGIAssignable() {
31919 TT c(a);
31920
31921 a = b;
31922
31923 const_constraints(b);
31924 ignore_unused_variable_warning(c);
31925 }
31926 private:
31927 void const_constraints(const TT& x) {
31928 TT c(x);
31929
31930 a = x;
31931
31932 ignore_unused_variable_warning(c);
31933 }
31934 TT a;
31935 TT b;
31936 };
31937
31938
31939
31940
31941 template < typename X , typename Y > struct Convertible; template < typename X , typename Y > struct ConvertibleConcept : Convertible< X, Y > { }; template < typename X , typename Y > struct Convertible
31942 {
31943 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Convertible>)>::failed> boost_concept_check211; ~Convertible() {
31944 Y y = x;
31945 ignore_unused_variable_warning(y);
31946 }
31947 private:
31948 X x;
31949 };
31950 # 228 "../boost/concept_check.hpp"
31951 template <class TT>
31952 void require_boolean_expr(const TT& t) {
31953 bool x = t;
31954 ignore_unused_variable_warning(x);
31955 }
31956
31957 template < typename TT > struct EqualityComparable; template < typename TT > struct EqualityComparableConcept : EqualityComparable< TT > { }; template < typename TT > struct EqualityComparable
31958 {
31959 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<EqualityComparable>)>::failed> boost_concept_check236; ~EqualityComparable() {
31960 require_boolean_expr(a == b);
31961 require_boolean_expr(a != b);
31962 }
31963 private:
31964 TT a, b;
31965 };
31966
31967 template < typename TT > struct LessThanComparable; template < typename TT > struct LessThanComparableConcept : LessThanComparable< TT > { }; template < typename TT > struct LessThanComparable
31968 {
31969 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LessThanComparable>)>::failed> boost_concept_check246; ~LessThanComparable() {
31970 require_boolean_expr(a < b);
31971 }
31972 private:
31973 TT a, b;
31974 };
31975
31976
31977 template < typename TT > struct Comparable; template < typename TT > struct ComparableConcept : Comparable< TT > { }; template < typename TT > struct Comparable
31978 {
31979 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Comparable>)>::failed> boost_concept_check256; ~Comparable() {
31980 require_boolean_expr(a < b);
31981 require_boolean_expr(a > b);
31982 require_boolean_expr(a <= b);
31983 require_boolean_expr(a >= b);
31984 }
31985 private:
31986 TT a, b;
31987 };
31988 # 286 "../boost/concept_check.hpp"
31989 template < typename First , typename Second > struct EqualOp; template < typename First , typename Second > struct EqualOpConcept : EqualOp< First, Second > { }; template < typename First , typename Second > struct EqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<EqualOp>)>::failed> boost_concept_check286; ~EqualOp() { (void)constraints_(); } private: bool constraints_() { return a == b; } First a; Second b; };
31990 template < typename First , typename Second > struct NotEqualOp; template < typename First , typename Second > struct NotEqualOpConcept : NotEqualOp< First, Second > { }; template < typename First , typename Second > struct NotEqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<NotEqualOp>)>::failed> boost_concept_check287; ~NotEqualOp() { (void)constraints_(); } private: bool constraints_() { return a != b; } First a; Second b; };
31991 template < typename First , typename Second > struct LessThanOp; template < typename First , typename Second > struct LessThanOpConcept : LessThanOp< First, Second > { }; template < typename First , typename Second > struct LessThanOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LessThanOp>)>::failed> boost_concept_check288; ~LessThanOp() { (void)constraints_(); } private: bool constraints_() { return a < b; } First a; Second b; };
31992 template < typename First , typename Second > struct LessEqualOp; template < typename First , typename Second > struct LessEqualOpConcept : LessEqualOp< First, Second > { }; template < typename First , typename Second > struct LessEqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LessEqualOp>)>::failed> boost_concept_check289; ~LessEqualOp() { (void)constraints_(); } private: bool constraints_() { return a <= b; } First a; Second b; };
31993 template < typename First , typename Second > struct GreaterThanOp; template < typename First , typename Second > struct GreaterThanOpConcept : GreaterThanOp< First, Second > { }; template < typename First , typename Second > struct GreaterThanOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<GreaterThanOp>)>::failed> boost_concept_check290; ~GreaterThanOp() { (void)constraints_(); } private: bool constraints_() { return a > b; } First a; Second b; };
31994 template < typename First , typename Second > struct GreaterEqualOp; template < typename First , typename Second > struct GreaterEqualOpConcept : GreaterEqualOp< First, Second > { }; template < typename First , typename Second > struct GreaterEqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<GreaterEqualOp>)>::failed> boost_concept_check291; ~GreaterEqualOp() { (void)constraints_(); } private: bool constraints_() { return a >= b; } First a; Second b; };
31995
31996 template < typename Ret , typename First , typename Second > struct PlusOp; template < typename Ret , typename First , typename Second > struct PlusOpConcept : PlusOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct PlusOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<PlusOp>)>::failed> boost_concept_check293; ~PlusOp() { (void)constraints_(); } private: Ret constraints_() { return a + b; } First a; Second b; };
31997 template < typename Ret , typename First , typename Second > struct TimesOp; template < typename Ret , typename First , typename Second > struct TimesOpConcept : TimesOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct TimesOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<TimesOp>)>::failed> boost_concept_check294; ~TimesOp() { (void)constraints_(); } private: Ret constraints_() { return a * b; } First a; Second b; };
31998 template < typename Ret , typename First , typename Second > struct DivideOp; template < typename Ret , typename First , typename Second > struct DivideOpConcept : DivideOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct DivideOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<DivideOp>)>::failed> boost_concept_check295; ~DivideOp() { (void)constraints_(); } private: Ret constraints_() { return a / b; } First a; Second b; };
31999 template < typename Ret , typename First , typename Second > struct SubtractOp; template < typename Ret , typename First , typename Second > struct SubtractOpConcept : SubtractOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct SubtractOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SubtractOp>)>::failed> boost_concept_check296; ~SubtractOp() { (void)constraints_(); } private: Ret constraints_() { return a - b; } First a; Second b; };
32000 template < typename Ret , typename First , typename Second > struct ModOp; template < typename Ret , typename First , typename Second > struct ModOpConcept : ModOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct ModOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ModOp>)>::failed> boost_concept_check297; ~ModOp() { (void)constraints_(); } private: Ret constraints_() { return a % b; } First a; Second b; };
32001
32002
32003
32004
32005 template < typename Func , typename Return > struct Generator; template < typename Func , typename Return > struct GeneratorConcept : Generator< Func, Return > { }; template < typename Func , typename Return > struct Generator
32006 {
32007 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Generator>)>::failed> boost_concept_check304; ~Generator() { test(is_void<Return>()); }
32008
32009 private:
32010 void test(boost::mpl::false_)
32011 {
32012
32013 const Return& r = f();
32014 ignore_unused_variable_warning(r);
32015 }
32016
32017 void test(boost::mpl::true_)
32018 {
32019 f();
32020 }
32021
32022 Func f;
32023 };
32024
32025 template < typename Func , typename Return , typename Arg > struct UnaryFunction; template < typename Func , typename Return , typename Arg > struct UnaryFunctionConcept : UnaryFunction< Func, Return, Arg > { }; template < typename Func , typename Return , typename Arg > struct UnaryFunction
32026 {
32027 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UnaryFunction>)>::failed> boost_concept_check324; ~UnaryFunction() { test(is_void<Return>()); }
32028
32029 private:
32030 void test(boost::mpl::false_)
32031 {
32032 f(arg);
32033 Return r = f(arg);
32034 ignore_unused_variable_warning(r);
32035 }
32036
32037 void test(boost::mpl::true_)
32038 {
32039 f(arg);
32040 }
32041
32042
32043
32044
32045
32046
32047
32048 UnaryFunction();
32049
32050
32051 Func f;
32052 Arg arg;
32053 };
32054
32055 template < typename Func , typename Return , typename First , typename Second > struct BinaryFunction; template < typename Func , typename Return , typename First , typename Second > struct BinaryFunctionConcept : BinaryFunction< Func, Return, First, Second > { }; template < typename Func , typename Return , typename First , typename Second > struct BinaryFunction
32056 {
32057 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BinaryFunction>)>::failed> boost_concept_check354; ~BinaryFunction() { test(is_void<Return>()); }
32058 private:
32059 void test(boost::mpl::false_)
32060 {
32061 f(first,second);
32062 Return r = f(first, second);
32063 (void)r;
32064 }
32065
32066 void test(boost::mpl::true_)
32067 {
32068 f(first,second);
32069 }
32070
32071
32072
32073
32074
32075
32076
32077 BinaryFunction();
32078
32079
32080 Func f;
32081 First first;
32082 Second second;
32083 };
32084
32085 template < typename Func , typename Arg > struct UnaryPredicate; template < typename Func , typename Arg > struct UnaryPredicateConcept : UnaryPredicate< Func, Arg > { }; template < typename Func , typename Arg > struct UnaryPredicate
32086 {
32087 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UnaryPredicate>)>::failed> boost_concept_check384; ~UnaryPredicate() {
32088 require_boolean_expr(f(arg));
32089 }
32090 private:
32091
32092
32093
32094
32095
32096
32097 UnaryPredicate();
32098
32099
32100 Func f;
32101 Arg arg;
32102 };
32103
32104 template < typename Func , typename First , typename Second > struct BinaryPredicate; template < typename Func , typename First , typename Second > struct BinaryPredicateConcept : BinaryPredicate< Func, First, Second > { }; template < typename Func , typename First , typename Second > struct BinaryPredicate
32105 {
32106 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BinaryPredicate>)>::failed> boost_concept_check403; ~BinaryPredicate() {
32107 require_boolean_expr(f(a, b));
32108 }
32109 private:
32110
32111
32112
32113
32114
32115
32116 BinaryPredicate();
32117
32118 Func f;
32119 First a;
32120 Second b;
32121 };
32122
32123
32124 template < typename Func , typename First , typename Second > struct Const_BinaryPredicate; template < typename Func , typename First , typename Second > struct Const_BinaryPredicateConcept : Const_BinaryPredicate< Func, First, Second > { }; template < typename Func , typename First , typename Second > struct Const_BinaryPredicate
32125 : BinaryPredicate<Func, First, Second>
32126 {
32127 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Const_BinaryPredicate>)>::failed> boost_concept_check424; ~Const_BinaryPredicate() {
32128 const_constraints(f);
32129 }
32130 private:
32131 void const_constraints(const Func& fun) {
32132
32133 require_boolean_expr(fun(a, b));
32134 }
32135
32136
32137
32138
32139
32140
32141 Const_BinaryPredicate();
32142
32143
32144 Func f;
32145 First a;
32146 Second b;
32147 };
32148
32149 template < typename Func , typename Return > struct AdaptableGenerator; template < typename Func , typename Return > struct AdaptableGeneratorConcept : AdaptableGenerator< Func, Return > { }; template < typename Func , typename Return > struct AdaptableGenerator
32150 : Generator<Func, typename Func::result_type>
32151 {
32152 typedef typename Func::result_type result_type;
32153
32154 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<AdaptableGenerator>)>::failed> boost_concept_check451; ~AdaptableGenerator()
32155 {
32156 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<result_type, Return>)>::failed> boost_concept_check453;
32157 }
32158 };
32159
32160 template < typename Func , typename Return , typename Arg > struct AdaptableUnaryFunction; template < typename Func , typename Return , typename Arg > struct AdaptableUnaryFunctionConcept : AdaptableUnaryFunction< Func, Return, Arg > { }; template < typename Func , typename Return , typename Arg > struct AdaptableUnaryFunction
32161 : UnaryFunction<Func, typename Func::result_type, typename Func::argument_type>
32162 {
32163 typedef typename Func::argument_type argument_type;
32164 typedef typename Func::result_type result_type;
32165
32166 ~AdaptableUnaryFunction()
32167 {
32168 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<result_type, Return>)>::failed> boost_concept_check465;
32169 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<Arg, argument_type>)>::failed> boost_concept_check466;
32170 }
32171 };
32172
32173 template < typename Func , typename Return , typename First , typename Second > struct AdaptableBinaryFunction; template < typename Func , typename Return , typename First , typename Second > struct AdaptableBinaryFunctionConcept : AdaptableBinaryFunction< Func, Return, First, Second > { }; template < typename Func , typename Return , typename First , typename Second > struct AdaptableBinaryFunction
32174 : BinaryFunction<
32175 Func
32176 , typename Func::result_type
32177 , typename Func::first_argument_type
32178 , typename Func::second_argument_type
32179 >
32180 {
32181 typedef typename Func::first_argument_type first_argument_type;
32182 typedef typename Func::second_argument_type second_argument_type;
32183 typedef typename Func::result_type result_type;
32184
32185 ~AdaptableBinaryFunction()
32186 {
32187 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<result_type, Return>)>::failed> boost_concept_check484;
32188 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<First, first_argument_type>)>::failed> boost_concept_check485;
32189 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<Second, second_argument_type>)>::failed> boost_concept_check486;
32190 }
32191 };
32192
32193 template < typename Func , typename Arg > struct AdaptablePredicate; template < typename Func , typename Arg > struct AdaptablePredicateConcept : AdaptablePredicate< Func, Arg > { }; template < typename Func , typename Arg > struct AdaptablePredicate
32194 : UnaryPredicate<Func, Arg>
32195 , AdaptableUnaryFunction<Func, bool, Arg>
32196 {
32197 };
32198
32199 template < typename Func , typename First , typename Second > struct AdaptableBinaryPredicate; template < typename Func , typename First , typename Second > struct AdaptableBinaryPredicateConcept : AdaptableBinaryPredicate< Func, First, Second > { }; template < typename Func , typename First , typename Second > struct AdaptableBinaryPredicate
32200 : BinaryPredicate<Func, First, Second>
32201 , AdaptableBinaryFunction<Func, bool, First, Second>
32202 {
32203 };
32204
32205
32206
32207
32208 template < typename TT > struct InputIterator; template < typename TT > struct InputIteratorConcept : InputIterator< TT > { }; template < typename TT > struct InputIterator
32209 : Assignable<TT>
32210 , EqualityComparable<TT>
32211 {
32212 typedef typename boost::detail::iterator_traits<TT>::value_type value_type;
32213 typedef typename boost::detail::iterator_traits<TT>::difference_type difference_type;
32214 typedef typename boost::detail::iterator_traits<TT>::reference reference;
32215 typedef typename boost::detail::iterator_traits<TT>::pointer pointer;
32216 typedef typename boost::detail::iterator_traits<TT>::iterator_category iterator_category;
32217
32218 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<InputIterator>)>::failed> boost_concept_check515; ~InputIterator()
32219 {
32220 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SignedInteger<difference_type>)>::failed> boost_concept_check517;
32221 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<iterator_category, std::input_iterator_tag>)>::failed> boost_concept_check518;
32222
32223 TT j(i);
32224 (void)*i;
32225 ++j;
32226 i++;
32227 }
32228 private:
32229 TT i;
32230 };
32231
32232 template < typename TT , typename ValueT > struct OutputIterator; template < typename TT , typename ValueT > struct OutputIteratorConcept : OutputIterator< TT, ValueT > { }; template < typename TT , typename ValueT > struct OutputIterator
32233 : Assignable<TT>
32234 {
32235 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<OutputIterator>)>::failed> boost_concept_check532; ~OutputIterator() {
32236
32237 ++i;
32238 i++;
32239 *i++ = t;
32240 }
32241 private:
32242 TT i, j;
32243 ValueT t;
32244 };
32245
32246 template < typename TT > struct ForwardIterator; template < typename TT > struct ForwardIteratorConcept : ForwardIterator< TT > { }; template < typename TT > struct ForwardIterator
32247 : InputIterator<TT>
32248 {
32249 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ForwardIterator>)>::failed> boost_concept_check546; ~ForwardIterator()
32250 {
32251 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible< typename ForwardIterator::iterator_category , std::forward_iterator_tag >)>::failed>
32252
32253
32254 boost_concept_check551;
32255
32256 typename InputIterator<TT>::reference r = *i;
32257 ignore_unused_variable_warning(r);
32258 }
32259
32260 private:
32261 TT i;
32262 };
32263
32264 template < typename TT > struct Mutable_ForwardIterator; template < typename TT > struct Mutable_ForwardIteratorConcept : Mutable_ForwardIterator< TT > { }; template < typename TT > struct Mutable_ForwardIterator
32265 : ForwardIterator<TT>
32266 {
32267 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_ForwardIterator>)>::failed> boost_concept_check564; ~Mutable_ForwardIterator() {
32268 *i++ = *i;
32269 }
32270 private:
32271 TT i;
32272 };
32273
32274 template < typename TT > struct BidirectionalIterator; template < typename TT > struct BidirectionalIteratorConcept : BidirectionalIterator< TT > { }; template < typename TT > struct BidirectionalIterator
32275 : ForwardIterator<TT>
32276 {
32277 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BidirectionalIterator>)>::failed> boost_concept_check574; ~BidirectionalIterator()
32278 {
32279 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible< typename BidirectionalIterator::iterator_category , std::bidirectional_iterator_tag >)>::failed>
32280
32281
32282 boost_concept_check579;
32283
32284 --i;
32285 i--;
32286 }
32287 private:
32288 TT i;
32289 };
32290
32291 template < typename TT > struct Mutable_BidirectionalIterator; template < typename TT > struct Mutable_BidirectionalIteratorConcept : Mutable_BidirectionalIterator< TT > { }; template < typename TT > struct Mutable_BidirectionalIterator
32292 : BidirectionalIterator<TT>
32293 , Mutable_ForwardIterator<TT>
32294 {
32295 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_BidirectionalIterator>)>::failed> boost_concept_check592; ~Mutable_BidirectionalIterator()
32296 {
32297 *i-- = *i;
32298 }
32299 private:
32300 TT i;
32301 };
32302
32303 template < typename TT > struct RandomAccessIterator; template < typename TT > struct RandomAccessIteratorConcept : RandomAccessIterator< TT > { }; template < typename TT > struct RandomAccessIterator
32304 : BidirectionalIterator<TT>
32305 , Comparable<TT>
32306 {
32307 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessIterator>)>::failed> boost_concept_check604; ~RandomAccessIterator()
32308 {
32309 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible< typename BidirectionalIterator<TT>::iterator_category , std::random_access_iterator_tag >)>::failed>
32310
32311
32312 boost_concept_check609;
32313
32314 i += n;
32315 i = i + n; i = n + i;
32316 i -= n;
32317 i = i - n;
32318 n = i - j;
32319 (void)i[n];
32320 }
32321
32322 private:
32323 TT a, b;
32324 TT i, j;
32325 typename boost::detail::iterator_traits<TT>::difference_type n;
32326 };
32327
32328 template < typename TT > struct Mutable_RandomAccessIterator; template < typename TT > struct Mutable_RandomAccessIteratorConcept : Mutable_RandomAccessIterator< TT > { }; template < typename TT > struct Mutable_RandomAccessIterator
32329 : RandomAccessIterator<TT>
32330 , Mutable_BidirectionalIterator<TT>
32331 {
32332 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_RandomAccessIterator>)>::failed> boost_concept_check629; ~Mutable_RandomAccessIterator()
32333 {
32334 i[n] = *i;
32335 }
32336 private:
32337 TT i;
32338 typename boost::detail::iterator_traits<TT>::difference_type n;
32339 };
32340
32341
32342
32343
32344 template < typename C > struct Container; template < typename C > struct ContainerConcept : Container< C > { }; template < typename C > struct Container
32345 : Assignable<C>
32346 {
32347 typedef typename C::value_type value_type;
32348 typedef typename C::difference_type difference_type;
32349 typedef typename C::size_type size_type;
32350 typedef typename C::const_reference const_reference;
32351 typedef typename C::const_pointer const_pointer;
32352 typedef typename C::const_iterator const_iterator;
32353
32354 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Container>)>::failed> boost_concept_check651; ~Container()
32355 {
32356 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(InputIterator<const_iterator>)>::failed> boost_concept_check653;
32357 const_constraints(c);
32358 }
32359
32360 private:
32361 void const_constraints(const C& cc) {
32362 i = cc.begin();
32363 i = cc.end();
32364 n = cc.size();
32365 n = cc.max_size();
32366 b = cc.empty();
32367 }
32368 C c;
32369 bool b;
32370 const_iterator i;
32371 size_type n;
32372 };
32373
32374 template < typename C > struct Mutable_Container; template < typename C > struct Mutable_ContainerConcept : Mutable_Container< C > { }; template < typename C > struct Mutable_Container
32375 : Container<C>
32376 {
32377 typedef typename C::reference reference;
32378 typedef typename C::iterator iterator;
32379 typedef typename C::pointer pointer;
32380
32381 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_Container>)>::failed> boost_concept_check678; ~Mutable_Container()
32382 {
32383 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Assignable<typename Mutable_Container::value_type>)>::failed>
32384 boost_concept_check681;
32385
32386 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(InputIterator<iterator>)>::failed> boost_concept_check683;
32387
32388 i = c.begin();
32389 i = c.end();
32390 c.swap(c2);
32391 }
32392
32393 private:
32394 iterator i;
32395 C c, c2;
32396 };
32397
32398 template < typename C > struct ForwardContainer; template < typename C > struct ForwardContainerConcept : ForwardContainer< C > { }; template < typename C > struct ForwardContainer
32399 : Container<C>
32400 {
32401 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ForwardContainer>)>::failed> boost_concept_check698; ~ForwardContainer()
32402 {
32403 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardIterator< typename ForwardContainer::const_iterator >)>::failed>
32404
32405
32406 boost_concept_check703;
32407 }
32408 };
32409
32410 template < typename C > struct Mutable_ForwardContainer; template < typename C > struct Mutable_ForwardContainerConcept : Mutable_ForwardContainer< C > { }; template < typename C > struct Mutable_ForwardContainer
32411 : ForwardContainer<C>
32412 , Mutable_Container<C>
32413 {
32414 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_ForwardContainer>)>::failed> boost_concept_check711; ~Mutable_ForwardContainer()
32415 {
32416 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Mutable_ForwardIterator< typename Mutable_ForwardContainer::iterator >)>::failed>
32417
32418
32419 boost_concept_check716;
32420 }
32421 };
32422
32423 template < typename C > struct ReversibleContainer; template < typename C > struct ReversibleContainerConcept : ReversibleContainer< C > { }; template < typename C > struct ReversibleContainer
32424 : ForwardContainer<C>
32425 {
32426 typedef typename
32427 C::const_reverse_iterator
32428 const_reverse_iterator;
32429
32430 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ReversibleContainer>)>::failed> boost_concept_check727; ~ReversibleContainer()
32431 {
32432 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalIterator< typename ReversibleContainer::const_iterator>)>::failed>
32433
32434 boost_concept_check731;
32435
32436 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BidirectionalIterator<const_reverse_iterator>)>::failed> boost_concept_check733;
32437
32438 const_constraints(c);
32439 }
32440 private:
32441 void const_constraints(const C& cc)
32442 {
32443 const_reverse_iterator i = cc.rbegin();
32444 i = cc.rend();
32445 }
32446 C c;
32447 };
32448
32449 template < typename C > struct Mutable_ReversibleContainer; template < typename C > struct Mutable_ReversibleContainerConcept : Mutable_ReversibleContainer< C > { }; template < typename C > struct Mutable_ReversibleContainer
32450 : Mutable_ForwardContainer<C>
32451 , ReversibleContainer<C>
32452 {
32453 typedef typename C::reverse_iterator reverse_iterator;
32454
32455 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_ReversibleContainer>)>::failed> boost_concept_check752; ~Mutable_ReversibleContainer()
32456 {
32457 typedef typename Mutable_ForwardContainer<C>::iterator iterator;
32458 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_BidirectionalIterator<iterator>)>::failed> boost_concept_check755;
32459 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_BidirectionalIterator<reverse_iterator>)>::failed> boost_concept_check756;
32460
32461 reverse_iterator i = c.rbegin();
32462 i = c.rend();
32463 }
32464 private:
32465 C c;
32466 };
32467
32468 template < typename C > struct RandomAccessContainer; template < typename C > struct RandomAccessContainerConcept : RandomAccessContainer< C > { }; template < typename C > struct RandomAccessContainer
32469 : ReversibleContainer<C>
32470 {
32471 typedef typename C::size_type size_type;
32472 typedef typename C::const_reference const_reference;
32473
32474 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessContainer>)>::failed> boost_concept_check771; ~RandomAccessContainer()
32475 {
32476 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessIterator< typename RandomAccessContainer::const_iterator >)>::failed>
32477
32478
32479 boost_concept_check776;
32480
32481 const_constraints(c);
32482 }
32483 private:
32484 void const_constraints(const C& cc)
32485 {
32486 const_reference r = cc[n];
32487 ignore_unused_variable_warning(r);
32488 }
32489
32490 C c;
32491 size_type n;
32492 };
32493
32494 template < typename C > struct Mutable_RandomAccessContainer; template < typename C > struct Mutable_RandomAccessContainerConcept : Mutable_RandomAccessContainer< C > { }; template < typename C > struct Mutable_RandomAccessContainer
32495 : Mutable_ReversibleContainer<C>
32496 , RandomAccessContainer<C>
32497 {
32498 private:
32499 typedef Mutable_RandomAccessContainer self;
32500 public:
32501 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_RandomAccessContainer>)>::failed> boost_concept_check798; ~Mutable_RandomAccessContainer()
32502 {
32503 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_RandomAccessIterator<typename self::iterator>)>::failed> boost_concept_check800;
32504 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_RandomAccessIterator<typename self::reverse_iterator>)>::failed> boost_concept_check801;
32505
32506 typename self::reference r = c[i];
32507 ignore_unused_variable_warning(r);
32508 }
32509
32510 private:
32511 typename Mutable_ReversibleContainer<C>::size_type i;
32512 C c;
32513 };
32514
32515
32516 template < typename S > struct Sequence; template < typename S > struct SequenceConcept : Sequence< S > { }; template < typename S > struct Sequence
32517 : Mutable_ForwardContainer<S>
32518
32519
32520
32521 , DefaultConstructible<S>
32522 {
32523 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Sequence>)>::failed> boost_concept_check820; ~Sequence()
32524 {
32525 S
32526 c(n),
32527 c2(n, t),
32528 c3(first, last);
32529
32530 c.insert(p, t);
32531 c.insert(p, n, t);
32532 c.insert(p, first, last);
32533
32534 c.erase(p);
32535 c.erase(p, q);
32536
32537 typename Sequence::reference r = c.front();
32538
32539 ignore_unused_variable_warning(c);
32540 ignore_unused_variable_warning(c2);
32541 ignore_unused_variable_warning(c3);
32542 ignore_unused_variable_warning(r);
32543 const_constraints(c);
32544 }
32545 private:
32546 void const_constraints(const S& c) {
32547 typename Sequence::const_reference r = c.front();
32548 ignore_unused_variable_warning(r);
32549 }
32550
32551 typename S::value_type t;
32552 typename S::size_type n;
32553 typename S::value_type* first, *last;
32554 typename S::iterator p, q;
32555 };
32556
32557 template < typename S > struct FrontInsertionSequence; template < typename S > struct FrontInsertionSequenceConcept : FrontInsertionSequence< S > { }; template < typename S > struct FrontInsertionSequence
32558 : Sequence<S>
32559 {
32560 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<FrontInsertionSequence>)>::failed> boost_concept_check857; ~FrontInsertionSequence()
32561 {
32562 c.push_front(t);
32563 c.pop_front();
32564 }
32565 private:
32566 S c;
32567 typename S::value_type t;
32568 };
32569
32570 template < typename S > struct BackInsertionSequence; template < typename S > struct BackInsertionSequenceConcept : BackInsertionSequence< S > { }; template < typename S > struct BackInsertionSequence
32571 : Sequence<S>
32572 {
32573 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BackInsertionSequence>)>::failed> boost_concept_check870; ~BackInsertionSequence()
32574 {
32575 c.push_back(t);
32576 c.pop_back();
32577 typename BackInsertionSequence::reference r = c.back();
32578 ignore_unused_variable_warning(r);
32579 const_constraints(c);
32580 }
32581 private:
32582 void const_constraints(const S& cc) {
32583 typename BackInsertionSequence::const_reference
32584 r = cc.back();
32585 ignore_unused_variable_warning(r);
32586 };
32587 S c;
32588 typename S::value_type t;
32589 };
32590
32591 template < typename C > struct AssociativeContainer; template < typename C > struct AssociativeContainerConcept : AssociativeContainer< C > { }; template < typename C > struct AssociativeContainer
32592 : ForwardContainer<C>
32593 , DefaultConstructible<C>
32594 {
32595 typedef typename C::key_type key_type;
32596 typedef typename C::key_compare key_compare;
32597 typedef typename C::value_compare value_compare;
32598 typedef typename C::iterator iterator;
32599
32600 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<AssociativeContainer>)>::failed> boost_concept_check897; ~AssociativeContainer()
32601 {
32602 i = c.find(k);
32603 r = c.equal_range(k);
32604 c.erase(k);
32605 c.erase(i);
32606 c.erase(r.first, r.second);
32607 const_constraints(c);
32608 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicate<key_compare,key_type,key_type>)>::failed> boost_concept_check905;
32609
32610 typedef typename AssociativeContainer::value_type value_type_;
32611 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicate<value_compare,value_type_,value_type_>)>::failed> boost_concept_check908;
32612 }
32613
32614
32615 typedef typename C::const_iterator const_iterator;
32616 private:
32617 void const_constraints(const C& cc)
32618 {
32619 ci = cc.find(k);
32620 n = cc.count(k);
32621 cr = cc.equal_range(k);
32622 }
32623
32624 C c;
32625 iterator i;
32626 std::pair<iterator,iterator> r;
32627 const_iterator ci;
32628 std::pair<const_iterator,const_iterator> cr;
32629 typename C::key_type k;
32630 typename C::size_type n;
32631 };
32632
32633 template < typename C > struct UniqueAssociativeContainer; template < typename C > struct UniqueAssociativeContainerConcept : UniqueAssociativeContainer< C > { }; template < typename C > struct UniqueAssociativeContainer
32634 : AssociativeContainer<C>
32635 {
32636 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UniqueAssociativeContainer>)>::failed> boost_concept_check933; ~UniqueAssociativeContainer()
32637 {
32638 C c(first, last);
32639
32640 pos_flag = c.insert(t);
32641 c.insert(first, last);
32642
32643 ignore_unused_variable_warning(c);
32644 }
32645 private:
32646 std::pair<typename C::iterator, bool> pos_flag;
32647 typename C::value_type t;
32648 typename C::value_type* first, *last;
32649 };
32650
32651 template < typename C > struct MultipleAssociativeContainer; template < typename C > struct MultipleAssociativeContainerConcept : MultipleAssociativeContainer< C > { }; template < typename C > struct MultipleAssociativeContainer
32652 : AssociativeContainer<C>
32653 {
32654 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<MultipleAssociativeContainer>)>::failed> boost_concept_check951; ~MultipleAssociativeContainer()
32655 {
32656 C c(first, last);
32657
32658 pos = c.insert(t);
32659 c.insert(first, last);
32660
32661 ignore_unused_variable_warning(c);
32662 ignore_unused_variable_warning(pos);
32663 }
32664 private:
32665 typename C::iterator pos;
32666 typename C::value_type t;
32667 typename C::value_type* first, *last;
32668 };
32669
32670 template < typename C > struct SimpleAssociativeContainer; template < typename C > struct SimpleAssociativeContainerConcept : SimpleAssociativeContainer< C > { }; template < typename C > struct SimpleAssociativeContainer
32671 : AssociativeContainer<C>
32672 {
32673 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SimpleAssociativeContainer>)>::failed> boost_concept_check970; ~SimpleAssociativeContainer()
32674 {
32675 typedef typename C::key_type key_type;
32676 typedef typename C::value_type value_type;
32677 enum { mpl_assertion_in_line_974 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (boost::is_same<key_type,value_type>))0, 1 ) ) ) };
32678 }
32679 };
32680
32681 template < typename C > struct PairAssociativeContainer; template < typename C > struct PairAssociativeContainerConcept : PairAssociativeContainer< C > { }; template < typename C > struct PairAssociativeContainer
32682 : AssociativeContainer<C>
32683 {
32684 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<PairAssociativeContainer>)>::failed> boost_concept_check981; ~PairAssociativeContainer()
32685 {
32686 typedef typename C::key_type key_type;
32687 typedef typename C::value_type value_type;
32688 typedef typename C::mapped_type mapped_type;
32689 typedef std::pair<const key_type, mapped_type> required_value_type;
32690 enum { mpl_assertion_in_line_987 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (boost::is_same<value_type,required_value_type>))0, 1 ) ) ) };
32691 }
32692 };
32693
32694 template < typename C > struct SortedAssociativeContainer; template < typename C > struct SortedAssociativeContainerConcept : SortedAssociativeContainer< C > { }; template < typename C > struct SortedAssociativeContainer
32695 : AssociativeContainer<C>
32696 , ReversibleContainer<C>
32697 {
32698 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SortedAssociativeContainer>)>::failed> boost_concept_check995; ~SortedAssociativeContainer()
32699 {
32700 C
32701 c(kc),
32702 c2(first, last),
32703 c3(first, last, kc);
32704
32705 p = c.upper_bound(k);
32706 p = c.lower_bound(k);
32707 r = c.equal_range(k);
32708
32709 c.insert(p, t);
32710
32711 ignore_unused_variable_warning(c);
32712 ignore_unused_variable_warning(c2);
32713 ignore_unused_variable_warning(c3);
32714 const_constraints(c);
32715 }
32716
32717 void const_constraints(const C& c)
32718 {
32719 kc = c.key_comp();
32720 vc = c.value_comp();
32721
32722 cp = c.upper_bound(k);
32723 cp = c.lower_bound(k);
32724 cr = c.equal_range(k);
32725 }
32726
32727 private:
32728 typename C::key_compare kc;
32729 typename C::value_compare vc;
32730 typename C::value_type t;
32731 typename C::key_type k;
32732 typedef typename C::iterator iterator;
32733 typedef typename C::const_iterator const_iterator;
32734
32735 typedef SortedAssociativeContainer self;
32736 iterator p;
32737 const_iterator cp;
32738 std::pair<typename self::iterator,typename self::iterator> r;
32739 std::pair<typename self::const_iterator,typename self::const_iterator> cr;
32740 typename C::value_type* first, *last;
32741 };
32742
32743
32744
32745 template < typename C > struct Collection; template < typename C > struct CollectionConcept : Collection< C > { }; template < typename C > struct Collection
32746 {
32747 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Collection>)>::failed> boost_concept_check1044; ~Collection()
32748 {
32749 boost::function_requires<boost::InputIteratorConcept<iterator> >();
32750 boost::function_requires<boost::InputIteratorConcept<const_iterator> >();
32751 boost::function_requires<boost::CopyConstructibleConcept<value_type> >();
32752 const_constraints(c);
32753 i = c.begin();
32754 i = c.end();
32755 c.swap(c);
32756 }
32757
32758 void const_constraints(const C& c) {
32759 ci = c.begin();
32760 ci = c.end();
32761 n = c.size();
32762 b = c.empty();
32763 }
32764
32765 private:
32766 typedef typename C::value_type value_type;
32767 typedef typename C::iterator iterator;
32768 typedef typename C::const_iterator const_iterator;
32769 typedef typename C::reference reference;
32770 typedef typename C::const_reference const_reference;
32771
32772 typedef typename C::difference_type difference_type;
32773 typedef typename C::size_type size_type;
32774
32775 C c;
32776 bool b;
32777 iterator i;
32778 const_iterator ci;
32779 size_type n;
32780 };
32781 }
32782
32783 # 1 "../boost/concept/detail/concept_undef.hpp" 1
32784 # 1081 "../boost/concept_check.hpp" 2
32785 # 20 "../boost/range/concepts.hpp" 2
32786 # 1 "../boost/iterator/iterator_concepts.hpp" 1
32787 # 26 "../boost/iterator/iterator_concepts.hpp"
32788 # 1 "../boost/limits.hpp" 1
32789 # 19 "../boost/limits.hpp"
32790 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 1 3
32791 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32792
32793 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32794 # 148 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32795 namespace std __attribute__ ((__visibility__ ("default")))
32796 {
32797
32798
32799
32800
32801
32802
32803
32804 enum float_round_style
32805 {
32806 round_indeterminate = -1,
32807 round_toward_zero = 0,
32808 round_to_nearest = 1,
32809 round_toward_infinity = 2,
32810 round_toward_neg_infinity = 3
32811 };
32812
32813
32814
32815
32816
32817
32818
32819 enum float_denorm_style
32820 {
32821
32822 denorm_indeterminate = -1,
32823
32824 denorm_absent = 0,
32825
32826 denorm_present = 1
32827 };
32828 # 192 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32829 struct __numeric_limits_base
32830 {
32831
32832
32833 static const bool is_specialized = false;
32834
32835
32836
32837
32838 static const int digits = 0;
32839
32840
32841 static const int digits10 = 0;
32842 # 213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32843 static const bool is_signed = false;
32844
32845
32846
32847 static const bool is_integer = false;
32848
32849
32850
32851
32852
32853 static const bool is_exact = false;
32854
32855
32856
32857 static const int radix = 0;
32858
32859
32860
32861 static const int min_exponent = 0;
32862
32863
32864
32865 static const int min_exponent10 = 0;
32866
32867
32868
32869
32870 static const int max_exponent = 0;
32871
32872
32873
32874 static const int max_exponent10 = 0;
32875
32876
32877 static const bool has_infinity = false;
32878
32879
32880
32881 static const bool has_quiet_NaN = false;
32882
32883
32884
32885 static const bool has_signaling_NaN = false;
32886
32887
32888 static const float_denorm_style has_denorm = denorm_absent;
32889
32890
32891
32892 static const bool has_denorm_loss = false;
32893
32894
32895
32896 static const bool is_iec559 = false;
32897
32898
32899
32900
32901 static const bool is_bounded = false;
32902
32903
32904
32905
32906
32907 static const bool is_modulo = false;
32908
32909
32910 static const bool traps = false;
32911
32912
32913 static const bool tinyness_before = false;
32914
32915
32916
32917
32918 static const float_round_style round_style =
32919 round_toward_zero;
32920 };
32921 # 303 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32922 template<typename _Tp>
32923 struct numeric_limits : public __numeric_limits_base
32924 {
32925
32926
32927 static _Tp
32928 min() throw() { return static_cast<_Tp>(0); }
32929
32930
32931 static _Tp
32932 max() throw() { return static_cast<_Tp>(0); }
32933 # 324 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32934 static _Tp
32935 epsilon() throw() { return static_cast<_Tp>(0); }
32936
32937
32938 static _Tp
32939 round_error() throw() { return static_cast<_Tp>(0); }
32940
32941
32942 static _Tp
32943 infinity() throw() { return static_cast<_Tp>(0); }
32944
32945
32946
32947 static _Tp
32948 quiet_NaN() throw() { return static_cast<_Tp>(0); }
32949
32950
32951
32952 static _Tp
32953 signaling_NaN() throw() { return static_cast<_Tp>(0); }
32954
32955
32956
32957
32958 static _Tp
32959 denorm_min() throw() { return static_cast<_Tp>(0); }
32960 };
32961 # 370 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
32962 template<>
32963 struct numeric_limits<bool>
32964 {
32965 static const bool is_specialized = true;
32966
32967 static bool
32968 min() throw() { return false; }
32969
32970 static bool
32971 max() throw() { return true; }
32972
32973
32974
32975
32976
32977 static const int digits = 1;
32978 static const int digits10 = 0;
32979
32980
32981
32982 static const bool is_signed = false;
32983 static const bool is_integer = true;
32984 static const bool is_exact = true;
32985 static const int radix = 2;
32986
32987 static bool
32988 epsilon() throw() { return false; }
32989
32990 static bool
32991 round_error() throw() { return false; }
32992
32993 static const int min_exponent = 0;
32994 static const int min_exponent10 = 0;
32995 static const int max_exponent = 0;
32996 static const int max_exponent10 = 0;
32997
32998 static const bool has_infinity = false;
32999 static const bool has_quiet_NaN = false;
33000 static const bool has_signaling_NaN = false;
33001 static const float_denorm_style has_denorm
33002 = denorm_absent;
33003 static const bool has_denorm_loss = false;
33004
33005 static bool
33006 infinity() throw() { return false; }
33007
33008 static bool
33009 quiet_NaN() throw() { return false; }
33010
33011 static bool
33012 signaling_NaN() throw() { return false; }
33013
33014 static bool
33015 denorm_min() throw() { return false; }
33016
33017 static const bool is_iec559 = false;
33018 static const bool is_bounded = true;
33019 static const bool is_modulo = false;
33020
33021
33022
33023
33024 static const bool traps = true;
33025 static const bool tinyness_before = false;
33026 static const float_round_style round_style
33027 = round_toward_zero;
33028 };
33029
33030
33031 template<>
33032 struct numeric_limits<char>
33033 {
33034 static const bool is_specialized = true;
33035
33036 static char
33037 min() throw() { return (((char)(-1) < 0) ? (char)1 << (sizeof(char) * 8 - ((char)(-1) < 0)) : (char)0); }
33038
33039 static char
33040 max() throw() { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); }
33041
33042
33043
33044
33045
33046
33047 static const int digits = (sizeof(char) * 8 - ((char)(-1) < 0));
33048 static const int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136);
33049
33050
33051
33052 static const bool is_signed = ((char)(-1) < 0);
33053 static const bool is_integer = true;
33054 static const bool is_exact = true;
33055 static const int radix = 2;
33056
33057 static char
33058 epsilon() throw() { return 0; }
33059
33060 static char
33061 round_error() throw() { return 0; }
33062
33063 static const int min_exponent = 0;
33064 static const int min_exponent10 = 0;
33065 static const int max_exponent = 0;
33066 static const int max_exponent10 = 0;
33067
33068 static const bool has_infinity = false;
33069 static const bool has_quiet_NaN = false;
33070 static const bool has_signaling_NaN = false;
33071 static const float_denorm_style has_denorm
33072 = denorm_absent;
33073 static const bool has_denorm_loss = false;
33074
33075 static
33076 char infinity() throw() { return char(); }
33077
33078 static char
33079 quiet_NaN() throw() { return char(); }
33080
33081 static char
33082 signaling_NaN() throw() { return char(); }
33083
33084 static char
33085 denorm_min() throw() { return static_cast<char>(0); }
33086
33087 static const bool is_iec559 = false;
33088 static const bool is_bounded = true;
33089 static const bool is_modulo = true;
33090
33091 static const bool traps = true;
33092 static const bool tinyness_before = false;
33093 static const float_round_style round_style
33094 = round_toward_zero;
33095 };
33096
33097
33098 template<>
33099 struct numeric_limits<signed char>
33100 {
33101 static const bool is_specialized = true;
33102
33103 static signed char
33104 min() throw() { return -127 - 1; }
33105
33106 static signed char
33107 max() throw() { return 127; }
33108
33109
33110
33111
33112
33113
33114 static const int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0));
33115 static const int digits10
33116 = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136);
33117
33118
33119
33120 static const bool is_signed = true;
33121 static const bool is_integer = true;
33122 static const bool is_exact = true;
33123 static const int radix = 2;
33124
33125 static signed char
33126 epsilon() throw() { return 0; }
33127
33128 static signed char
33129 round_error() throw() { return 0; }
33130
33131 static const int min_exponent = 0;
33132 static const int min_exponent10 = 0;
33133 static const int max_exponent = 0;
33134 static const int max_exponent10 = 0;
33135
33136 static const bool has_infinity = false;
33137 static const bool has_quiet_NaN = false;
33138 static const bool has_signaling_NaN = false;
33139 static const float_denorm_style has_denorm
33140 = denorm_absent;
33141 static const bool has_denorm_loss = false;
33142
33143 static signed char
33144 infinity() throw() { return static_cast<signed char>(0); }
33145
33146 static signed char
33147 quiet_NaN() throw() { return static_cast<signed char>(0); }
33148
33149 static signed char
33150 signaling_NaN() throw() { return static_cast<signed char>(0); }
33151
33152 static signed char
33153 denorm_min() throw() { return static_cast<signed char>(0); }
33154
33155 static const bool is_iec559 = false;
33156 static const bool is_bounded = true;
33157 static const bool is_modulo = true;
33158
33159 static const bool traps = true;
33160 static const bool tinyness_before = false;
33161 static const float_round_style round_style
33162 = round_toward_zero;
33163 };
33164
33165
33166 template<>
33167 struct numeric_limits<unsigned char>
33168 {
33169 static const bool is_specialized = true;
33170
33171 static unsigned char
33172 min() throw() { return 0; }
33173
33174 static unsigned char
33175 max() throw() { return 127 * 2U + 1; }
33176
33177
33178
33179
33180
33181
33182 static const int digits
33183 = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0));
33184 static const int digits10
33185 = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136);
33186
33187
33188
33189 static const bool is_signed = false;
33190 static const bool is_integer = true;
33191 static const bool is_exact = true;
33192 static const int radix = 2;
33193
33194 static unsigned char
33195 epsilon() throw() { return 0; }
33196
33197 static unsigned char
33198 round_error() throw() { return 0; }
33199
33200 static const int min_exponent = 0;
33201 static const int min_exponent10 = 0;
33202 static const int max_exponent = 0;
33203 static const int max_exponent10 = 0;
33204
33205 static const bool has_infinity = false;
33206 static const bool has_quiet_NaN = false;
33207 static const bool has_signaling_NaN = false;
33208 static const float_denorm_style has_denorm
33209 = denorm_absent;
33210 static const bool has_denorm_loss = false;
33211
33212 static unsigned char
33213 infinity() throw() { return static_cast<unsigned char>(0); }
33214
33215 static unsigned char
33216 quiet_NaN() throw() { return static_cast<unsigned char>(0); }
33217
33218 static unsigned char
33219 signaling_NaN() throw() { return static_cast<unsigned char>(0); }
33220
33221 static unsigned char
33222 denorm_min() throw() { return static_cast<unsigned char>(0); }
33223
33224 static const bool is_iec559 = false;
33225 static const bool is_bounded = true;
33226 static const bool is_modulo = true;
33227
33228 static const bool traps = true;
33229 static const bool tinyness_before = false;
33230 static const float_round_style round_style
33231 = round_toward_zero;
33232 };
33233
33234
33235 template<>
33236 struct numeric_limits<wchar_t>
33237 {
33238 static const bool is_specialized = true;
33239
33240 static wchar_t
33241 min() throw() { return (((wchar_t)(-1) < 0) ? (wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) : (wchar_t)0); }
33242
33243 static wchar_t
33244 max() throw() { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); }
33245
33246
33247
33248
33249
33250
33251 static const int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0));
33252 static const int digits10
33253 = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136);
33254
33255
33256
33257 static const bool is_signed = ((wchar_t)(-1) < 0);
33258 static const bool is_integer = true;
33259 static const bool is_exact = true;
33260 static const int radix = 2;
33261
33262 static wchar_t
33263 epsilon() throw() { return 0; }
33264
33265 static wchar_t
33266 round_error() throw() { return 0; }
33267
33268 static const int min_exponent = 0;
33269 static const int min_exponent10 = 0;
33270 static const int max_exponent = 0;
33271 static const int max_exponent10 = 0;
33272
33273 static const bool has_infinity = false;
33274 static const bool has_quiet_NaN = false;
33275 static const bool has_signaling_NaN = false;
33276 static const float_denorm_style has_denorm
33277 = denorm_absent;
33278 static const bool has_denorm_loss = false;
33279
33280 static wchar_t
33281 infinity() throw() { return wchar_t(); }
33282
33283 static wchar_t
33284 quiet_NaN() throw() { return wchar_t(); }
33285
33286 static wchar_t
33287 signaling_NaN() throw() { return wchar_t(); }
33288
33289 static wchar_t
33290 denorm_min() throw() { return wchar_t(); }
33291
33292 static const bool is_iec559 = false;
33293 static const bool is_bounded = true;
33294 static const bool is_modulo = true;
33295
33296 static const bool traps = true;
33297 static const bool tinyness_before = false;
33298 static const float_round_style round_style
33299 = round_toward_zero;
33300 };
33301 # 852 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/limits" 3
33302 template<>
33303 struct numeric_limits<short>
33304 {
33305 static const bool is_specialized = true;
33306
33307 static short
33308 min() throw() { return -32767 - 1; }
33309
33310 static short
33311 max() throw() { return 32767; }
33312
33313
33314
33315
33316
33317
33318 static const int digits = (sizeof(short) * 8 - ((short)(-1) < 0));
33319 static const int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136);
33320
33321
33322
33323 static const bool is_signed = true;
33324 static const bool is_integer = true;
33325 static const bool is_exact = true;
33326 static const int radix = 2;
33327
33328 static short
33329 epsilon() throw() { return 0; }
33330
33331 static short
33332 round_error() throw() { return 0; }
33333
33334 static const int min_exponent = 0;
33335 static const int min_exponent10 = 0;
33336 static const int max_exponent = 0;
33337 static const int max_exponent10 = 0;
33338
33339 static const bool has_infinity = false;
33340 static const bool has_quiet_NaN = false;
33341 static const bool has_signaling_NaN = false;
33342 static const float_denorm_style has_denorm
33343 = denorm_absent;
33344 static const bool has_denorm_loss = false;
33345
33346 static short
33347 infinity() throw() { return short(); }
33348
33349 static short
33350 quiet_NaN() throw() { return short(); }
33351
33352 static short
33353 signaling_NaN() throw() { return short(); }
33354
33355 static short
33356 denorm_min() throw() { return short(); }
33357
33358 static const bool is_iec559 = false;
33359 static const bool is_bounded = true;
33360 static const bool is_modulo = true;
33361
33362 static const bool traps = true;
33363 static const bool tinyness_before = false;
33364 static const float_round_style round_style
33365 = round_toward_zero;
33366 };
33367
33368
33369 template<>
33370 struct numeric_limits<unsigned short>
33371 {
33372 static const bool is_specialized = true;
33373
33374 static unsigned short
33375 min() throw() { return 0; }
33376
33377 static unsigned short
33378 max() throw() { return 32767 * 2U + 1; }
33379
33380
33381
33382
33383
33384
33385 static const int digits
33386 = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0));
33387 static const int digits10
33388 = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136);
33389
33390
33391
33392 static const bool is_signed = false;
33393 static const bool is_integer = true;
33394 static const bool is_exact = true;
33395 static const int radix = 2;
33396
33397 static unsigned short
33398 epsilon() throw() { return 0; }
33399
33400 static unsigned short
33401 round_error() throw() { return 0; }
33402
33403 static const int min_exponent = 0;
33404 static const int min_exponent10 = 0;
33405 static const int max_exponent = 0;
33406 static const int max_exponent10 = 0;
33407
33408 static const bool has_infinity = false;
33409 static const bool has_quiet_NaN = false;
33410 static const bool has_signaling_NaN = false;
33411 static const float_denorm_style has_denorm
33412 = denorm_absent;
33413 static const bool has_denorm_loss = false;
33414
33415 static unsigned short
33416 infinity() throw() { return static_cast<unsigned short>(0); }
33417
33418 static unsigned short
33419 quiet_NaN() throw() { return static_cast<unsigned short>(0); }
33420
33421 static unsigned short
33422 signaling_NaN() throw() { return static_cast<unsigned short>(0); }
33423
33424 static unsigned short
33425 denorm_min() throw() { return static_cast<unsigned short>(0); }
33426
33427 static const bool is_iec559 = false;
33428 static const bool is_bounded = true;
33429 static const bool is_modulo = true;
33430
33431 static const bool traps = true;
33432 static const bool tinyness_before = false;
33433 static const float_round_style round_style
33434 = round_toward_zero;
33435 };
33436
33437
33438 template<>
33439 struct numeric_limits<int>
33440 {
33441 static const bool is_specialized = true;
33442
33443 static int
33444 min() throw() { return -2147483647 - 1; }
33445
33446 static int
33447 max() throw() { return 2147483647; }
33448
33449
33450
33451
33452
33453
33454 static const int digits = (sizeof(int) * 8 - ((int)(-1) < 0));
33455 static const int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136);
33456
33457
33458
33459 static const bool is_signed = true;
33460 static const bool is_integer = true;
33461 static const bool is_exact = true;
33462 static const int radix = 2;
33463
33464 static int
33465 epsilon() throw() { return 0; }
33466
33467 static int
33468 round_error() throw() { return 0; }
33469
33470 static const int min_exponent = 0;
33471 static const int min_exponent10 = 0;
33472 static const int max_exponent = 0;
33473 static const int max_exponent10 = 0;
33474
33475 static const bool has_infinity = false;
33476 static const bool has_quiet_NaN = false;
33477 static const bool has_signaling_NaN = false;
33478 static const float_denorm_style has_denorm
33479 = denorm_absent;
33480 static const bool has_denorm_loss = false;
33481
33482 static int
33483 infinity() throw() { return static_cast<int>(0); }
33484
33485 static int
33486 quiet_NaN() throw() { return static_cast<int>(0); }
33487
33488 static int
33489 signaling_NaN() throw() { return static_cast<int>(0); }
33490
33491 static int
33492 denorm_min() throw() { return static_cast<int>(0); }
33493
33494 static const bool is_iec559 = false;
33495 static const bool is_bounded = true;
33496 static const bool is_modulo = true;
33497
33498 static const bool traps = true;
33499 static const bool tinyness_before = false;
33500 static const float_round_style round_style
33501 = round_toward_zero;
33502 };
33503
33504
33505 template<>
33506 struct numeric_limits<unsigned int>
33507 {
33508 static const bool is_specialized = true;
33509
33510 static unsigned int
33511 min() throw() { return 0; }
33512
33513 static unsigned int
33514 max() throw() { return 2147483647 * 2U + 1; }
33515
33516
33517
33518
33519
33520
33521 static const int digits
33522 = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0));
33523 static const int digits10
33524 = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136);
33525
33526
33527
33528 static const bool is_signed = false;
33529 static const bool is_integer = true;
33530 static const bool is_exact = true;
33531 static const int radix = 2;
33532
33533 static unsigned int
33534 epsilon() throw() { return 0; }
33535
33536 static unsigned int
33537 round_error() throw() { return 0; }
33538
33539 static const int min_exponent = 0;
33540 static const int min_exponent10 = 0;
33541 static const int max_exponent = 0;
33542 static const int max_exponent10 = 0;
33543
33544 static const bool has_infinity = false;
33545 static const bool has_quiet_NaN = false;
33546 static const bool has_signaling_NaN = false;
33547 static const float_denorm_style has_denorm
33548 = denorm_absent;
33549 static const bool has_denorm_loss = false;
33550
33551 static unsigned int
33552 infinity() throw() { return static_cast<unsigned int>(0); }
33553
33554 static unsigned int
33555 quiet_NaN() throw() { return static_cast<unsigned int>(0); }
33556
33557 static unsigned int
33558 signaling_NaN() throw() { return static_cast<unsigned int>(0); }
33559
33560 static unsigned int
33561 denorm_min() throw() { return static_cast<unsigned int>(0); }
33562
33563 static const bool is_iec559 = false;
33564 static const bool is_bounded = true;
33565 static const bool is_modulo = true;
33566
33567 static const bool traps = true;
33568 static const bool tinyness_before = false;
33569 static const float_round_style round_style
33570 = round_toward_zero;
33571 };
33572
33573
33574 template<>
33575 struct numeric_limits<long>
33576 {
33577 static const bool is_specialized = true;
33578
33579 static long
33580 min() throw() { return -9223372036854775807L - 1; }
33581
33582 static long
33583 max() throw() { return 9223372036854775807L; }
33584
33585
33586
33587
33588
33589
33590 static const int digits = (sizeof(long) * 8 - ((long)(-1) < 0));
33591 static const int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136);
33592
33593
33594
33595 static const bool is_signed = true;
33596 static const bool is_integer = true;
33597 static const bool is_exact = true;
33598 static const int radix = 2;
33599
33600 static long
33601 epsilon() throw() { return 0; }
33602
33603 static long
33604 round_error() throw() { return 0; }
33605
33606 static const int min_exponent = 0;
33607 static const int min_exponent10 = 0;
33608 static const int max_exponent = 0;
33609 static const int max_exponent10 = 0;
33610
33611 static const bool has_infinity = false;
33612 static const bool has_quiet_NaN = false;
33613 static const bool has_signaling_NaN = false;
33614 static const float_denorm_style has_denorm
33615 = denorm_absent;
33616 static const bool has_denorm_loss = false;
33617
33618 static long
33619 infinity() throw() { return static_cast<long>(0); }
33620
33621 static long
33622 quiet_NaN() throw() { return static_cast<long>(0); }
33623
33624 static long
33625 signaling_NaN() throw() { return static_cast<long>(0); }
33626
33627 static long
33628 denorm_min() throw() { return static_cast<long>(0); }
33629
33630 static const bool is_iec559 = false;
33631 static const bool is_bounded = true;
33632 static const bool is_modulo = true;
33633
33634 static const bool traps = true;
33635 static const bool tinyness_before = false;
33636 static const float_round_style round_style
33637 = round_toward_zero;
33638 };
33639
33640
33641 template<>
33642 struct numeric_limits<unsigned long>
33643 {
33644 static const bool is_specialized = true;
33645
33646 static unsigned long
33647 min() throw() { return 0; }
33648
33649 static unsigned long
33650 max() throw() { return 9223372036854775807L * 2UL + 1; }
33651
33652
33653
33654
33655
33656
33657 static const int digits
33658 = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0));
33659 static const int digits10
33660 = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136);
33661
33662
33663
33664 static const bool is_signed = false;
33665 static const bool is_integer = true;
33666 static const bool is_exact = true;
33667 static const int radix = 2;
33668
33669 static unsigned long
33670 epsilon() throw() { return 0; }
33671
33672 static unsigned long
33673 round_error() throw() { return 0; }
33674
33675 static const int min_exponent = 0;
33676 static const int min_exponent10 = 0;
33677 static const int max_exponent = 0;
33678 static const int max_exponent10 = 0;
33679
33680 static const bool has_infinity = false;
33681 static const bool has_quiet_NaN = false;
33682 static const bool has_signaling_NaN = false;
33683 static const float_denorm_style has_denorm
33684 = denorm_absent;
33685 static const bool has_denorm_loss = false;
33686
33687 static unsigned long
33688 infinity() throw() { return static_cast<unsigned long>(0); }
33689
33690 static unsigned long
33691 quiet_NaN() throw() { return static_cast<unsigned long>(0); }
33692
33693 static unsigned long
33694 signaling_NaN() throw() { return static_cast<unsigned long>(0); }
33695
33696 static unsigned long
33697 denorm_min() throw() { return static_cast<unsigned long>(0); }
33698
33699 static const bool is_iec559 = false;
33700 static const bool is_bounded = true;
33701 static const bool is_modulo = true;
33702
33703 static const bool traps = true;
33704 static const bool tinyness_before = false;
33705 static const float_round_style round_style
33706 = round_toward_zero;
33707 };
33708
33709
33710 template<>
33711 struct numeric_limits<long long>
33712 {
33713 static const bool is_specialized = true;
33714
33715 static long long
33716 min() throw() { return -9223372036854775807LL - 1; }
33717
33718 static long long
33719 max() throw() { return 9223372036854775807LL; }
33720
33721
33722
33723
33724
33725
33726 static const int digits
33727 = (sizeof(long long) * 8 - ((long long)(-1) < 0));
33728 static const int digits10
33729 = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136);
33730
33731
33732
33733 static const bool is_signed = true;
33734 static const bool is_integer = true;
33735 static const bool is_exact = true;
33736 static const int radix = 2;
33737
33738 static long long
33739 epsilon() throw() { return 0; }
33740
33741 static long long
33742 round_error() throw() { return 0; }
33743
33744 static const int min_exponent = 0;
33745 static const int min_exponent10 = 0;
33746 static const int max_exponent = 0;
33747 static const int max_exponent10 = 0;
33748
33749 static const bool has_infinity = false;
33750 static const bool has_quiet_NaN = false;
33751 static const bool has_signaling_NaN = false;
33752 static const float_denorm_style has_denorm
33753 = denorm_absent;
33754 static const bool has_denorm_loss = false;
33755
33756 static long long
33757 infinity() throw() { return static_cast<long long>(0); }
33758
33759 static long long
33760 quiet_NaN() throw() { return static_cast<long long>(0); }
33761
33762 static long long
33763 signaling_NaN() throw() { return static_cast<long long>(0); }
33764
33765 static long long
33766 denorm_min() throw() { return static_cast<long long>(0); }
33767
33768 static const bool is_iec559 = false;
33769 static const bool is_bounded = true;
33770 static const bool is_modulo = true;
33771
33772 static const bool traps = true;
33773 static const bool tinyness_before = false;
33774 static const float_round_style round_style
33775 = round_toward_zero;
33776 };
33777
33778
33779 template<>
33780 struct numeric_limits<unsigned long long>
33781 {
33782 static const bool is_specialized = true;
33783
33784 static unsigned long long
33785 min() throw() { return 0; }
33786
33787 static unsigned long long
33788 max() throw() { return 9223372036854775807LL * 2ULL + 1; }
33789
33790
33791
33792
33793
33794
33795 static const int digits
33796 = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0));
33797 static const int digits10
33798 = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136);
33799
33800
33801
33802 static const bool is_signed = false;
33803 static const bool is_integer = true;
33804 static const bool is_exact = true;
33805 static const int radix = 2;
33806
33807 static unsigned long long
33808 epsilon() throw() { return 0; }
33809
33810 static unsigned long long
33811 round_error() throw() { return 0; }
33812
33813 static const int min_exponent = 0;
33814 static const int min_exponent10 = 0;
33815 static const int max_exponent = 0;
33816 static const int max_exponent10 = 0;
33817
33818 static const bool has_infinity = false;
33819 static const bool has_quiet_NaN = false;
33820 static const bool has_signaling_NaN = false;
33821 static const float_denorm_style has_denorm
33822 = denorm_absent;
33823 static const bool has_denorm_loss = false;
33824
33825 static unsigned long long
33826 infinity() throw() { return static_cast<unsigned long long>(0); }
33827
33828 static unsigned long long
33829 quiet_NaN() throw() { return static_cast<unsigned long long>(0); }
33830
33831 static unsigned long long
33832 signaling_NaN() throw() { return static_cast<unsigned long long>(0); }
33833
33834 static unsigned long long
33835 denorm_min() throw() { return static_cast<unsigned long long>(0); }
33836
33837 static const bool is_iec559 = false;
33838 static const bool is_bounded = true;
33839 static const bool is_modulo = true;
33840
33841 static const bool traps = true;
33842 static const bool tinyness_before = false;
33843 static const float_round_style round_style
33844 = round_toward_zero;
33845 };
33846
33847
33848 template<>
33849 struct numeric_limits<float>
33850 {
33851 static const bool is_specialized = true;
33852
33853 static float
33854 min() throw() { return 1.17549435082228750797e-38F; }
33855
33856 static float
33857 max() throw() { return 3.40282346638528859812e+38F; }
33858
33859
33860
33861
33862
33863
33864 static const int digits = 24;
33865 static const int digits10 = 6;
33866
33867
33868
33869
33870 static const bool is_signed = true;
33871 static const bool is_integer = false;
33872 static const bool is_exact = false;
33873 static const int radix = 2;
33874
33875 static float
33876 epsilon() throw() { return 1.19209289550781250000e-7F; }
33877
33878 static float
33879 round_error() throw() { return 0.5F; }
33880
33881 static const int min_exponent = (-125);
33882 static const int min_exponent10 = (-37);
33883 static const int max_exponent = 128;
33884 static const int max_exponent10 = 38;
33885
33886 static const bool has_infinity = 1;
33887 static const bool has_quiet_NaN = 1;
33888 static const bool has_signaling_NaN = has_quiet_NaN;
33889 static const float_denorm_style has_denorm
33890 = bool(1) ? denorm_present : denorm_absent;
33891 static const bool has_denorm_loss
33892 = false;
33893
33894 static float
33895 infinity() throw() { return __builtin_huge_valf (); }
33896
33897 static float
33898 quiet_NaN() throw() { return __builtin_nanf (""); }
33899
33900 static float
33901 signaling_NaN() throw() { return __builtin_nansf (""); }
33902
33903 static float
33904 denorm_min() throw() { return 1.40129846432481707092e-45F; }
33905
33906 static const bool is_iec559
33907 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
33908 static const bool is_bounded = true;
33909 static const bool is_modulo = false;
33910
33911 static const bool traps = false;
33912 static const bool tinyness_before
33913 = false;
33914 static const float_round_style round_style
33915 = round_to_nearest;
33916 };
33917
33918
33919
33920
33921
33922
33923 template<>
33924 struct numeric_limits<double>
33925 {
33926 static const bool is_specialized = true;
33927
33928 static double
33929 min() throw() { return double(2.22507385850720138309e-308L); }
33930
33931 static double
33932 max() throw() { return double(1.79769313486231570815e+308L); }
33933
33934
33935
33936
33937
33938
33939 static const int digits = 53;
33940 static const int digits10 = 15;
33941
33942
33943
33944
33945 static const bool is_signed = true;
33946 static const bool is_integer = false;
33947 static const bool is_exact = false;
33948 static const int radix = 2;
33949
33950 static double
33951 epsilon() throw() { return double(2.22044604925031308085e-16L); }
33952
33953 static double
33954 round_error() throw() { return 0.5; }
33955
33956 static const int min_exponent = (-1021);
33957 static const int min_exponent10 = (-307);
33958 static const int max_exponent = 1024;
33959 static const int max_exponent10 = 308;
33960
33961 static const bool has_infinity = 1;
33962 static const bool has_quiet_NaN = 1;
33963 static const bool has_signaling_NaN = has_quiet_NaN;
33964 static const float_denorm_style has_denorm
33965 = bool(1) ? denorm_present : denorm_absent;
33966 static const bool has_denorm_loss
33967 = false;
33968
33969 static double
33970 infinity() throw() { return __builtin_huge_val(); }
33971
33972 static double
33973 quiet_NaN() throw() { return __builtin_nan (""); }
33974
33975 static double
33976 signaling_NaN() throw() { return __builtin_nans (""); }
33977
33978 static double
33979 denorm_min() throw() { return double(4.94065645841246544177e-324L); }
33980
33981 static const bool is_iec559
33982 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
33983 static const bool is_bounded = true;
33984 static const bool is_modulo = false;
33985
33986 static const bool traps = false;
33987 static const bool tinyness_before
33988 = false;
33989 static const float_round_style round_style
33990 = round_to_nearest;
33991 };
33992
33993
33994
33995
33996
33997
33998 template<>
33999 struct numeric_limits<long double>
34000 {
34001 static const bool is_specialized = true;
34002
34003 static long double
34004 min() throw() { return 3.36210314311209350626e-4932L; }
34005
34006 static long double
34007 max() throw() { return 1.18973149535723176502e+4932L; }
34008
34009
34010
34011
34012
34013
34014 static const int digits = 64;
34015 static const int digits10 = 18;
34016
34017
34018
34019
34020 static const bool is_signed = true;
34021 static const bool is_integer = false;
34022 static const bool is_exact = false;
34023 static const int radix = 2;
34024
34025 static long double
34026 epsilon() throw() { return 1.08420217248550443401e-19L; }
34027
34028 static long double
34029 round_error() throw() { return 0.5L; }
34030
34031 static const int min_exponent = (-16381);
34032 static const int min_exponent10 = (-4931);
34033 static const int max_exponent = 16384;
34034 static const int max_exponent10 = 4932;
34035
34036 static const bool has_infinity = 1;
34037 static const bool has_quiet_NaN = 1;
34038 static const bool has_signaling_NaN = has_quiet_NaN;
34039 static const float_denorm_style has_denorm
34040 = bool(1) ? denorm_present : denorm_absent;
34041 static const bool has_denorm_loss
34042 = false;
34043
34044 static long double
34045 infinity() throw() { return __builtin_huge_vall (); }
34046
34047 static long double
34048 quiet_NaN() throw() { return __builtin_nanl (""); }
34049
34050 static long double
34051 signaling_NaN() throw() { return __builtin_nansl (""); }
34052
34053 static long double
34054 denorm_min() throw() { return 3.64519953188247460253e-4951L; }
34055
34056 static const bool is_iec559
34057 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
34058 static const bool is_bounded = true;
34059 static const bool is_modulo = false;
34060
34061 static const bool traps = false;
34062 static const bool tinyness_before =
34063 false;
34064 static const float_round_style round_style =
34065 round_to_nearest;
34066 };
34067
34068
34069
34070
34071
34072
34073 }
34074 # 20 "../boost/limits.hpp" 2
34075 # 27 "../boost/iterator/iterator_concepts.hpp" 2
34076
34077
34078 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/algorithm" 1 3
34079 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/algorithm" 3
34080
34081 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/algorithm" 3
34082
34083
34084
34085 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 1 3
34086 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
34087 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 1 3
34088 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
34089
34090 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdlib" 3
34091 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 2 3
34092 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 1 3
34093 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34094
34095 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34096
34097
34098
34099
34100
34101
34102 namespace std __attribute__ ((__visibility__ ("default")))
34103 {
34104
34105 # 201 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34106 template<typename _FIter, typename _Tp>
34107 bool
34108 binary_search(_FIter, _FIter, const _Tp&);
34109
34110 template<typename _FIter, typename _Tp, typename _Compare>
34111 bool
34112 binary_search(_FIter, _FIter, const _Tp&, _Compare);
34113
34114 template<typename _IIter, typename _OIter>
34115 _OIter
34116 copy(_IIter, _IIter, _OIter);
34117
34118 template<typename _BIter1, typename _BIter2>
34119 _BIter2
34120 copy_backward(_BIter1, _BIter1, _BIter2);
34121 # 230 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34122 template<typename _FIter, typename _Tp>
34123 pair<_FIter, _FIter>
34124 equal_range(_FIter, _FIter, const _Tp&);
34125
34126 template<typename _FIter, typename _Tp, typename _Compare>
34127 pair<_FIter, _FIter>
34128 equal_range(_FIter, _FIter, const _Tp&, _Compare);
34129
34130 template<typename _FIter, typename _Tp>
34131 void
34132 fill(_FIter, _FIter, const _Tp&);
34133
34134 template<typename _OIter, typename _Size, typename _Tp>
34135 _OIter
34136 fill_n(_OIter, _Size, const _Tp&);
34137
34138
34139
34140 template<typename _FIter1, typename _FIter2>
34141 _FIter1
34142 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
34143
34144 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
34145 _FIter1
34146 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
34147 # 269 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34148 template<typename _IIter1, typename _IIter2>
34149 bool
34150 includes(_IIter1, _IIter1, _IIter2, _IIter2);
34151
34152 template<typename _IIter1, typename _IIter2, typename _Compare>
34153 bool
34154 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
34155
34156 template<typename _BIter>
34157 void
34158 inplace_merge(_BIter, _BIter, _BIter);
34159
34160 template<typename _BIter, typename _Compare>
34161 void
34162 inplace_merge(_BIter, _BIter, _BIter, _Compare);
34163 # 332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34164 template<typename _FIter1, typename _FIter2>
34165 void
34166 iter_swap(_FIter1, _FIter2);
34167
34168 template<typename _FIter, typename _Tp>
34169 _FIter
34170 lower_bound(_FIter, _FIter, const _Tp&);
34171
34172 template<typename _FIter, typename _Tp, typename _Compare>
34173 _FIter
34174 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
34175
34176 template<typename _RAIter>
34177 void
34178 make_heap(_RAIter, _RAIter);
34179
34180 template<typename _RAIter, typename _Compare>
34181 void
34182 make_heap(_RAIter, _RAIter, _Compare);
34183
34184 template<typename _Tp>
34185 const _Tp&
34186 max(const _Tp&, const _Tp&);
34187
34188 template<typename _Tp, typename _Compare>
34189 const _Tp&
34190 max(const _Tp&, const _Tp&, _Compare);
34191
34192
34193
34194
34195 template<typename _Tp>
34196 const _Tp&
34197 min(const _Tp&, const _Tp&);
34198
34199 template<typename _Tp, typename _Compare>
34200 const _Tp&
34201 min(const _Tp&, const _Tp&, _Compare);
34202 # 417 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34203 template<typename _BIter>
34204 bool
34205 next_permutation(_BIter, _BIter);
34206
34207 template<typename _BIter, typename _Compare>
34208 bool
34209 next_permutation(_BIter, _BIter, _Compare);
34210 # 434 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34211 template<typename _IIter, typename _RAIter>
34212 _RAIter
34213 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
34214
34215 template<typename _IIter, typename _RAIter, typename _Compare>
34216 _RAIter
34217 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
34218 # 455 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34219 template<typename _RAIter>
34220 void
34221 pop_heap(_RAIter, _RAIter);
34222
34223 template<typename _RAIter, typename _Compare>
34224 void
34225 pop_heap(_RAIter, _RAIter, _Compare);
34226
34227 template<typename _BIter>
34228 bool
34229 prev_permutation(_BIter, _BIter);
34230
34231 template<typename _BIter, typename _Compare>
34232 bool
34233 prev_permutation(_BIter, _BIter, _Compare);
34234
34235 template<typename _RAIter>
34236 void
34237 push_heap(_RAIter, _RAIter);
34238
34239 template<typename _RAIter, typename _Compare>
34240 void
34241 push_heap(_RAIter, _RAIter, _Compare);
34242
34243
34244
34245 template<typename _FIter, typename _Tp>
34246 _FIter
34247 remove(_FIter, _FIter, const _Tp&);
34248
34249 template<typename _FIter, typename _Predicate>
34250 _FIter
34251 remove_if(_FIter, _FIter, _Predicate);
34252
34253 template<typename _IIter, typename _OIter, typename _Tp>
34254 _OIter
34255 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
34256
34257 template<typename _IIter, typename _OIter, typename _Predicate>
34258 _OIter
34259 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
34260
34261
34262
34263 template<typename _IIter, typename _OIter, typename _Tp>
34264 _OIter
34265 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
34266
34267 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
34268 _OIter
34269 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
34270
34271
34272
34273 template<typename _BIter>
34274 void
34275 reverse(_BIter, _BIter);
34276
34277 template<typename _BIter, typename _OIter>
34278 _OIter
34279 reverse_copy(_BIter, _BIter, _OIter);
34280
34281 template<typename _FIter>
34282 void
34283 rotate(_FIter, _FIter, _FIter);
34284
34285 template<typename _FIter, typename _OIter>
34286 _OIter
34287 rotate_copy(_FIter, _FIter, _FIter, _OIter);
34288 # 538 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/algorithmfwd.h" 3
34289 template<typename _RAIter>
34290 void
34291 sort_heap(_RAIter, _RAIter);
34292
34293 template<typename _RAIter, typename _Compare>
34294 void
34295 sort_heap(_RAIter, _RAIter, _Compare);
34296
34297 template<typename _BIter, typename _Predicate>
34298 _BIter
34299 stable_partition(_BIter, _BIter, _Predicate);
34300
34301 template<typename _Tp>
34302 void
34303 swap(_Tp&, _Tp&);
34304
34305 template<typename _Tp, size_t _Nm>
34306 void
34307 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
34308
34309 template<typename _FIter1, typename _FIter2>
34310 _FIter2
34311 swap_ranges(_FIter1, _FIter1, _FIter2);
34312
34313
34314
34315 template<typename _FIter>
34316 _FIter
34317 unique(_FIter, _FIter);
34318
34319 template<typename _FIter, typename _BinaryPredicate>
34320 _FIter
34321 unique(_FIter, _FIter, _BinaryPredicate);
34322
34323
34324
34325 template<typename _FIter, typename _Tp>
34326 _FIter
34327 upper_bound(_FIter, _FIter, const _Tp&);
34328
34329 template<typename _FIter, typename _Tp, typename _Compare>
34330 _FIter
34331 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
34332
34333
34334
34335
34336
34337 template<typename _FIter>
34338 _FIter
34339 adjacent_find(_FIter, _FIter);
34340
34341 template<typename _FIter, typename _BinaryPredicate>
34342 _FIter
34343 adjacent_find(_FIter, _FIter, _BinaryPredicate);
34344
34345 template<typename _IIter, typename _Tp>
34346 typename iterator_traits<_IIter>::difference_type
34347 count(_IIter, _IIter, const _Tp&);
34348
34349 template<typename _IIter, typename _Predicate>
34350 typename iterator_traits<_IIter>::difference_type
34351 count_if(_IIter, _IIter, _Predicate);
34352
34353 template<typename _IIter1, typename _IIter2>
34354 bool
34355 equal(_IIter1, _IIter1, _IIter2);
34356
34357 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
34358 bool
34359 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
34360
34361 template<typename _IIter, typename _Tp>
34362 _IIter
34363 find(_IIter, _IIter, const _Tp&);
34364
34365 template<typename _FIter1, typename _FIter2>
34366 _FIter1
34367 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
34368
34369 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
34370 _FIter1
34371 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
34372
34373 template<typename _IIter, typename _Predicate>
34374 _IIter
34375 find_if(_IIter, _IIter, _Predicate);
34376
34377 template<typename _IIter, typename _Funct>
34378 _Funct
34379 for_each(_IIter, _IIter, _Funct);
34380
34381 template<typename _FIter, typename _Generator>
34382 void
34383 generate(_FIter, _FIter, _Generator);
34384
34385 template<typename _OIter, typename _Size, typename _Generator>
34386 _OIter
34387 generate_n(_OIter, _Size, _Generator);
34388
34389 template<typename _IIter1, typename _IIter2>
34390 bool
34391 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
34392
34393 template<typename _IIter1, typename _IIter2, typename _Compare>
34394 bool
34395 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
34396
34397 template<typename _FIter>
34398 _FIter
34399 max_element(_FIter, _FIter);
34400
34401 template<typename _FIter, typename _Compare>
34402 _FIter
34403 max_element(_FIter, _FIter, _Compare);
34404
34405 template<typename _IIter1, typename _IIter2, typename _OIter>
34406 _OIter
34407 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
34408
34409 template<typename _IIter1, typename _IIter2, typename _OIter,
34410 typename _Compare>
34411 _OIter
34412 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
34413
34414 template<typename _FIter>
34415 _FIter
34416 min_element(_FIter, _FIter);
34417
34418 template<typename _FIter, typename _Compare>
34419 _FIter
34420 min_element(_FIter, _FIter, _Compare);
34421
34422 template<typename _IIter1, typename _IIter2>
34423 pair<_IIter1, _IIter2>
34424 mismatch(_IIter1, _IIter1, _IIter2);
34425
34426 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
34427 pair<_IIter1, _IIter2>
34428 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
34429
34430 template<typename _RAIter>
34431 void
34432 nth_element(_RAIter, _RAIter, _RAIter);
34433
34434 template<typename _RAIter, typename _Compare>
34435 void
34436 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
34437
34438 template<typename _RAIter>
34439 void
34440 partial_sort(_RAIter, _RAIter, _RAIter);
34441
34442 template<typename _RAIter, typename _Compare>
34443 void
34444 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
34445
34446 template<typename _BIter, typename _Predicate>
34447 _BIter
34448 partition(_BIter, _BIter, _Predicate);
34449
34450 template<typename _RAIter>
34451 void
34452 random_shuffle(_RAIter, _RAIter);
34453
34454 template<typename _RAIter, typename _Generator>
34455 void
34456 random_shuffle(_RAIter, _RAIter,
34457
34458
34459
34460 _Generator&);
34461
34462
34463 template<typename _FIter, typename _Tp>
34464 void
34465 replace(_FIter, _FIter, const _Tp&, const _Tp&);
34466
34467 template<typename _FIter, typename _Predicate, typename _Tp>
34468 void
34469 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
34470
34471 template<typename _FIter1, typename _FIter2>
34472 _FIter1
34473 search(_FIter1, _FIter1, _FIter2, _FIter2);
34474
34475 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
34476 _FIter1
34477 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
34478
34479 template<typename _FIter, typename _Size, typename _Tp>
34480 _FIter
34481 search_n(_FIter, _FIter, _Size, const _Tp&);
34482
34483 template<typename _FIter, typename _Size, typename _Tp,
34484 typename _BinaryPredicate>
34485 _FIter
34486 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
34487
34488 template<typename _IIter1, typename _IIter2, typename _OIter>
34489 _OIter
34490 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
34491
34492 template<typename _IIter1, typename _IIter2, typename _OIter,
34493 typename _Compare>
34494 _OIter
34495 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
34496
34497 template<typename _IIter1, typename _IIter2, typename _OIter>
34498 _OIter
34499 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
34500
34501 template<typename _IIter1, typename _IIter2, typename _OIter,
34502 typename _Compare>
34503 _OIter
34504 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
34505
34506 template<typename _IIter1, typename _IIter2, typename _OIter>
34507 _OIter
34508 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
34509
34510 template<typename _IIter1, typename _IIter2, typename _OIter,
34511 typename _Compare>
34512 _OIter
34513 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
34514 _OIter, _Compare);
34515
34516 template<typename _IIter1, typename _IIter2, typename _OIter>
34517 _OIter
34518 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
34519
34520 template<typename _IIter1, typename _IIter2, typename _OIter,
34521 typename _Compare>
34522 _OIter
34523 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
34524
34525 template<typename _RAIter>
34526 void
34527 sort(_RAIter, _RAIter);
34528
34529 template<typename _RAIter, typename _Compare>
34530 void
34531 sort(_RAIter, _RAIter, _Compare);
34532
34533 template<typename _RAIter>
34534 void
34535 stable_sort(_RAIter, _RAIter);
34536
34537 template<typename _RAIter, typename _Compare>
34538 void
34539 stable_sort(_RAIter, _RAIter, _Compare);
34540
34541 template<typename _IIter, typename _OIter, typename _UnaryOperation>
34542 _OIter
34543 transform(_IIter, _IIter, _OIter, _UnaryOperation);
34544
34545 template<typename _IIter1, typename _IIter2, typename _OIter,
34546 typename _BinaryOperation>
34547 _OIter
34548 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
34549
34550 template<typename _IIter, typename _OIter>
34551 _OIter
34552 unique_copy(_IIter, _IIter, _OIter);
34553
34554 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
34555 _OIter
34556 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
34557
34558
34559 }
34560 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 2 3
34561 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 1 3
34562 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34563 namespace std __attribute__ ((__visibility__ ("default")))
34564 {
34565
34566
34567
34568
34569
34570
34571
34572 template<typename _RandomAccessIterator, typename _Distance>
34573 _Distance
34574 __is_heap_until(_RandomAccessIterator __first, _Distance __n)
34575 {
34576 _Distance __parent = 0;
34577 for (_Distance __child = 1; __child < __n; ++__child)
34578 {
34579 if (__first[__parent] < __first[__child])
34580 return __child;
34581 if ((__child & 1) == 0)
34582 ++__parent;
34583 }
34584 return __n;
34585 }
34586
34587 template<typename _RandomAccessIterator, typename _Distance,
34588 typename _Compare>
34589 _Distance
34590 __is_heap_until(_RandomAccessIterator __first, _Distance __n,
34591 _Compare __comp)
34592 {
34593 _Distance __parent = 0;
34594 for (_Distance __child = 1; __child < __n; ++__child)
34595 {
34596 if (__comp(__first[__parent], __first[__child]))
34597 return __child;
34598 if ((__child & 1) == 0)
34599 ++__parent;
34600 }
34601 return __n;
34602 }
34603
34604
34605
34606 template<typename _RandomAccessIterator, typename _Distance>
34607 inline bool
34608 __is_heap(_RandomAccessIterator __first, _Distance __n)
34609 { return std::__is_heap_until(__first, __n) == __n; }
34610
34611 template<typename _RandomAccessIterator, typename _Compare,
34612 typename _Distance>
34613 inline bool
34614 __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
34615 { return std::__is_heap_until(__first, __n, __comp) == __n; }
34616
34617 template<typename _RandomAccessIterator>
34618 inline bool
34619 __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
34620 { return std::__is_heap(__first, std::distance(__first, __last)); }
34621
34622 template<typename _RandomAccessIterator, typename _Compare>
34623 inline bool
34624 __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
34625 _Compare __comp)
34626 { return std::__is_heap(__first, __comp, std::distance(__first, __last)); }
34627
34628
34629
34630
34631 template<typename _RandomAccessIterator, typename _Distance, typename _Tp>
34632 void
34633 __push_heap(_RandomAccessIterator __first,
34634 _Distance __holeIndex, _Distance __topIndex, _Tp __value)
34635 {
34636 _Distance __parent = (__holeIndex - 1) / 2;
34637 while (__holeIndex > __topIndex && *(__first + __parent) < __value)
34638 {
34639 *(__first + __holeIndex) = (*(__first + __parent));
34640 __holeIndex = __parent;
34641 __parent = (__holeIndex - 1) / 2;
34642 }
34643 *(__first + __holeIndex) = (__value);
34644 }
34645 # 154 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34646 template<typename _RandomAccessIterator>
34647 inline void
34648 push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
34649 {
34650 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34651 _ValueType;
34652 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
34653 _DistanceType;
34654
34655
34656
34657
34658
34659 ;
34660 ;
34661
34662 _ValueType __value = (*(__last - 1));
34663 std::__push_heap(__first, _DistanceType((__last - __first) - 1),
34664 _DistanceType(0), (__value));
34665 }
34666
34667 template<typename _RandomAccessIterator, typename _Distance, typename _Tp,
34668 typename _Compare>
34669 void
34670 __push_heap(_RandomAccessIterator __first, _Distance __holeIndex,
34671 _Distance __topIndex, _Tp __value, _Compare __comp)
34672 {
34673 _Distance __parent = (__holeIndex - 1) / 2;
34674 while (__holeIndex > __topIndex
34675 && __comp(*(__first + __parent), __value))
34676 {
34677 *(__first + __holeIndex) = (*(__first + __parent));
34678 __holeIndex = __parent;
34679 __parent = (__holeIndex - 1) / 2;
34680 }
34681 *(__first + __holeIndex) = (__value);
34682 }
34683 # 203 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34684 template<typename _RandomAccessIterator, typename _Compare>
34685 inline void
34686 push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
34687 _Compare __comp)
34688 {
34689 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34690 _ValueType;
34691 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
34692 _DistanceType;
34693
34694
34695
34696
34697 ;
34698 ;
34699
34700 _ValueType __value = (*(__last - 1));
34701 std::__push_heap(__first, _DistanceType((__last - __first) - 1),
34702 _DistanceType(0), (__value), __comp);
34703 }
34704
34705 template<typename _RandomAccessIterator, typename _Distance, typename _Tp>
34706 void
34707 __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
34708 _Distance __len, _Tp __value)
34709 {
34710 const _Distance __topIndex = __holeIndex;
34711 _Distance __secondChild = __holeIndex;
34712 while (__secondChild < (__len - 1) / 2)
34713 {
34714 __secondChild = 2 * (__secondChild + 1);
34715 if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))
34716 __secondChild--;
34717 *(__first + __holeIndex) = (*(__first + __secondChild));
34718 __holeIndex = __secondChild;
34719 }
34720 if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2)
34721 {
34722 __secondChild = 2 * (__secondChild + 1);
34723 *(__first + __holeIndex) = (*(__first + (__secondChild - 1)))
34724 ;
34725 __holeIndex = __secondChild - 1;
34726 }
34727 std::__push_heap(__first, __holeIndex, __topIndex,
34728 (__value));
34729 }
34730
34731 template<typename _RandomAccessIterator>
34732 inline void
34733 __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
34734 _RandomAccessIterator __result)
34735 {
34736 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34737 _ValueType;
34738 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
34739 _DistanceType;
34740
34741 _ValueType __value = (*__result);
34742 *__result = (*__first);
34743 std::__adjust_heap(__first, _DistanceType(0),
34744 _DistanceType(__last - __first),
34745 (__value));
34746 }
34747 # 276 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34748 template<typename _RandomAccessIterator>
34749 inline void
34750 pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
34751 {
34752 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34753 _ValueType;
34754
34755
34756
34757
34758
34759 ;
34760 ;
34761
34762 --__last;
34763 std::__pop_heap(__first, __last, __last);
34764 }
34765
34766 template<typename _RandomAccessIterator, typename _Distance,
34767 typename _Tp, typename _Compare>
34768 void
34769 __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
34770 _Distance __len, _Tp __value, _Compare __comp)
34771 {
34772 const _Distance __topIndex = __holeIndex;
34773 _Distance __secondChild = __holeIndex;
34774 while (__secondChild < (__len - 1) / 2)
34775 {
34776 __secondChild = 2 * (__secondChild + 1);
34777 if (__comp(*(__first + __secondChild),
34778 *(__first + (__secondChild - 1))))
34779 __secondChild--;
34780 *(__first + __holeIndex) = (*(__first + __secondChild));
34781 __holeIndex = __secondChild;
34782 }
34783 if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2)
34784 {
34785 __secondChild = 2 * (__secondChild + 1);
34786 *(__first + __holeIndex) = (*(__first + (__secondChild - 1)))
34787 ;
34788 __holeIndex = __secondChild - 1;
34789 }
34790 std::__push_heap(__first, __holeIndex, __topIndex,
34791 (__value), __comp);
34792 }
34793
34794 template<typename _RandomAccessIterator, typename _Compare>
34795 inline void
34796 __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
34797 _RandomAccessIterator __result, _Compare __comp)
34798 {
34799 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34800 _ValueType;
34801 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
34802 _DistanceType;
34803
34804 _ValueType __value = (*__result);
34805 *__result = (*__first);
34806 std::__adjust_heap(__first, _DistanceType(0),
34807 _DistanceType(__last - __first),
34808 (__value), __comp);
34809 }
34810 # 350 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34811 template<typename _RandomAccessIterator, typename _Compare>
34812 inline void
34813 pop_heap(_RandomAccessIterator __first,
34814 _RandomAccessIterator __last, _Compare __comp)
34815 {
34816
34817
34818
34819 ;
34820 ;
34821
34822 --__last;
34823 std::__pop_heap(__first, __last, __last, __comp);
34824 }
34825 # 373 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34826 template<typename _RandomAccessIterator>
34827 void
34828 make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
34829 {
34830 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34831 _ValueType;
34832 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
34833 _DistanceType;
34834
34835
34836
34837
34838
34839 ;
34840
34841 if (__last - __first < 2)
34842 return;
34843
34844 const _DistanceType __len = __last - __first;
34845 _DistanceType __parent = (__len - 2) / 2;
34846 while (true)
34847 {
34848 _ValueType __value = (*(__first + __parent));
34849 std::__adjust_heap(__first, __parent, __len, (__value));
34850 if (__parent == 0)
34851 return;
34852 __parent--;
34853 }
34854 }
34855 # 413 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34856 template<typename _RandomAccessIterator, typename _Compare>
34857 void
34858 make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
34859 _Compare __comp)
34860 {
34861 typedef typename iterator_traits<_RandomAccessIterator>::value_type
34862 _ValueType;
34863 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
34864 _DistanceType;
34865
34866
34867
34868
34869 ;
34870
34871 if (__last - __first < 2)
34872 return;
34873
34874 const _DistanceType __len = __last - __first;
34875 _DistanceType __parent = (__len - 2) / 2;
34876 while (true)
34877 {
34878 _ValueType __value = (*(__first + __parent));
34879 std::__adjust_heap(__first, __parent, __len, (__value),
34880 __comp);
34881 if (__parent == 0)
34882 return;
34883 __parent--;
34884 }
34885 }
34886 # 452 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34887 template<typename _RandomAccessIterator>
34888 void
34889 sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
34890 {
34891
34892
34893
34894
34895
34896 ;
34897 ;
34898
34899 while (__last - __first > 1)
34900 {
34901 --__last;
34902 std::__pop_heap(__first, __last, __last);
34903 }
34904 }
34905 # 481 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34906 template<typename _RandomAccessIterator, typename _Compare>
34907 void
34908 sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
34909 _Compare __comp)
34910 {
34911
34912
34913
34914 ;
34915 ;
34916
34917 while (__last - __first > 1)
34918 {
34919 --__last;
34920 std::__pop_heap(__first, __last, __last, __comp);
34921 }
34922 }
34923 # 578 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_heap.h" 3
34924
34925 }
34926 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 2 3
34927 # 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
34928 namespace std __attribute__ ((__visibility__ ("default")))
34929 {
34930
34931
34932
34933 template<typename _Iterator>
34934 void
34935 __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c)
34936 {
34937
34938
34939
34940
34941 if (*__a < *__b)
34942 {
34943 if (*__b < *__c)
34944 std::iter_swap(__a, __b);
34945 else if (*__a < *__c)
34946 std::iter_swap(__a, __c);
34947 }
34948 else if (*__a < *__c)
34949 return;
34950 else if (*__b < *__c)
34951 std::iter_swap(__a, __c);
34952 else
34953 std::iter_swap(__a, __b);
34954 }
34955
34956
34957 template<typename _Iterator, typename _Compare>
34958 void
34959 __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c,
34960 _Compare __comp)
34961 {
34962
34963
34964
34965
34966
34967 if (__comp(*__a, *__b))
34968 {
34969 if (__comp(*__b, *__c))
34970 std::iter_swap(__a, __b);
34971 else if (__comp(*__a, *__c))
34972 std::iter_swap(__a, __c);
34973 }
34974 else if (__comp(*__a, *__c))
34975 return;
34976 else if (__comp(*__b, *__c))
34977 std::iter_swap(__a, __c);
34978 else
34979 std::iter_swap(__a, __b);
34980 }
34981
34982
34983
34984
34985 template<typename _InputIterator, typename _Tp>
34986 inline _InputIterator
34987 __find(_InputIterator __first, _InputIterator __last,
34988 const _Tp& __val, input_iterator_tag)
34989 {
34990 while (__first != __last && !(*__first == __val))
34991 ++__first;
34992 return __first;
34993 }
34994
34995
34996 template<typename _InputIterator, typename _Predicate>
34997 inline _InputIterator
34998 __find_if(_InputIterator __first, _InputIterator __last,
34999 _Predicate __pred, input_iterator_tag)
35000 {
35001 while (__first != __last && !bool(__pred(*__first)))
35002 ++__first;
35003 return __first;
35004 }
35005
35006
35007 template<typename _RandomAccessIterator, typename _Tp>
35008 _RandomAccessIterator
35009 __find(_RandomAccessIterator __first, _RandomAccessIterator __last,
35010 const _Tp& __val, random_access_iterator_tag)
35011 {
35012 typename iterator_traits<_RandomAccessIterator>::difference_type
35013 __trip_count = (__last - __first) >> 2;
35014
35015 for (; __trip_count > 0; --__trip_count)
35016 {
35017 if (*__first == __val)
35018 return __first;
35019 ++__first;
35020
35021 if (*__first == __val)
35022 return __first;
35023 ++__first;
35024
35025 if (*__first == __val)
35026 return __first;
35027 ++__first;
35028
35029 if (*__first == __val)
35030 return __first;
35031 ++__first;
35032 }
35033
35034 switch (__last - __first)
35035 {
35036 case 3:
35037 if (*__first == __val)
35038 return __first;
35039 ++__first;
35040 case 2:
35041 if (*__first == __val)
35042 return __first;
35043 ++__first;
35044 case 1:
35045 if (*__first == __val)
35046 return __first;
35047 ++__first;
35048 case 0:
35049 default:
35050 return __last;
35051 }
35052 }
35053
35054
35055 template<typename _RandomAccessIterator, typename _Predicate>
35056 _RandomAccessIterator
35057 __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last,
35058 _Predicate __pred, random_access_iterator_tag)
35059 {
35060 typename iterator_traits<_RandomAccessIterator>::difference_type
35061 __trip_count = (__last - __first) >> 2;
35062
35063 for (; __trip_count > 0; --__trip_count)
35064 {
35065 if (__pred(*__first))
35066 return __first;
35067 ++__first;
35068
35069 if (__pred(*__first))
35070 return __first;
35071 ++__first;
35072
35073 if (__pred(*__first))
35074 return __first;
35075 ++__first;
35076
35077 if (__pred(*__first))
35078 return __first;
35079 ++__first;
35080 }
35081
35082 switch (__last - __first)
35083 {
35084 case 3:
35085 if (__pred(*__first))
35086 return __first;
35087 ++__first;
35088 case 2:
35089 if (__pred(*__first))
35090 return __first;
35091 ++__first;
35092 case 1:
35093 if (__pred(*__first))
35094 return __first;
35095 ++__first;
35096 case 0:
35097 default:
35098 return __last;
35099 }
35100 }
35101 # 326 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35102 template<typename _ForwardIterator, typename _Integer, typename _Tp>
35103 _ForwardIterator
35104 __search_n(_ForwardIterator __first, _ForwardIterator __last,
35105 _Integer __count, const _Tp& __val,
35106 std::forward_iterator_tag)
35107 {
35108 __first = std::find(__first, __last, __val);
35109 while (__first != __last)
35110 {
35111 typename iterator_traits<_ForwardIterator>::difference_type
35112 __n = __count;
35113 _ForwardIterator __i = __first;
35114 ++__i;
35115 while (__i != __last && __n != 1 && *__i == __val)
35116 {
35117 ++__i;
35118 --__n;
35119 }
35120 if (__n == 1)
35121 return __first;
35122 if (__i == __last)
35123 return __last;
35124 __first = std::find(++__i, __last, __val);
35125 }
35126 return __last;
35127 }
35128
35129
35130
35131
35132
35133
35134 template<typename _RandomAccessIter, typename _Integer, typename _Tp>
35135 _RandomAccessIter
35136 __search_n(_RandomAccessIter __first, _RandomAccessIter __last,
35137 _Integer __count, const _Tp& __val,
35138 std::random_access_iterator_tag)
35139 {
35140
35141 typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
35142 _DistanceType;
35143
35144 _DistanceType __tailSize = __last - __first;
35145 const _DistanceType __pattSize = __count;
35146
35147 if (__tailSize < __pattSize)
35148 return __last;
35149
35150 const _DistanceType __skipOffset = __pattSize - 1;
35151 _RandomAccessIter __lookAhead = __first + __skipOffset;
35152 __tailSize -= __pattSize;
35153
35154 while (1)
35155 {
35156
35157
35158 while (!(*__lookAhead == __val))
35159 {
35160 if (__tailSize < __pattSize)
35161 return __last;
35162 __lookAhead += __pattSize;
35163 __tailSize -= __pattSize;
35164 }
35165 _DistanceType __remainder = __skipOffset;
35166 for (_RandomAccessIter __backTrack = __lookAhead - 1;
35167 *__backTrack == __val; --__backTrack)
35168 {
35169 if (--__remainder == 0)
35170 return (__lookAhead - __skipOffset);
35171 }
35172 if (__remainder > __tailSize)
35173 return __last;
35174 __lookAhead += __remainder;
35175 __tailSize -= __remainder;
35176 }
35177 }
35178 # 411 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35179 template<typename _ForwardIterator, typename _Integer, typename _Tp,
35180 typename _BinaryPredicate>
35181 _ForwardIterator
35182 __search_n(_ForwardIterator __first, _ForwardIterator __last,
35183 _Integer __count, const _Tp& __val,
35184 _BinaryPredicate __binary_pred, std::forward_iterator_tag)
35185 {
35186 while (__first != __last && !bool(__binary_pred(*__first, __val)))
35187 ++__first;
35188
35189 while (__first != __last)
35190 {
35191 typename iterator_traits<_ForwardIterator>::difference_type
35192 __n = __count;
35193 _ForwardIterator __i = __first;
35194 ++__i;
35195 while (__i != __last && __n != 1 && bool(__binary_pred(*__i, __val)))
35196 {
35197 ++__i;
35198 --__n;
35199 }
35200 if (__n == 1)
35201 return __first;
35202 if (__i == __last)
35203 return __last;
35204 __first = ++__i;
35205 while (__first != __last
35206 && !bool(__binary_pred(*__first, __val)))
35207 ++__first;
35208 }
35209 return __last;
35210 }
35211
35212
35213
35214
35215
35216
35217
35218 template<typename _RandomAccessIter, typename _Integer, typename _Tp,
35219 typename _BinaryPredicate>
35220 _RandomAccessIter
35221 __search_n(_RandomAccessIter __first, _RandomAccessIter __last,
35222 _Integer __count, const _Tp& __val,
35223 _BinaryPredicate __binary_pred, std::random_access_iterator_tag)
35224 {
35225
35226 typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
35227 _DistanceType;
35228
35229 _DistanceType __tailSize = __last - __first;
35230 const _DistanceType __pattSize = __count;
35231
35232 if (__tailSize < __pattSize)
35233 return __last;
35234
35235 const _DistanceType __skipOffset = __pattSize - 1;
35236 _RandomAccessIter __lookAhead = __first + __skipOffset;
35237 __tailSize -= __pattSize;
35238
35239 while (1)
35240 {
35241
35242
35243 while (!bool(__binary_pred(*__lookAhead, __val)))
35244 {
35245 if (__tailSize < __pattSize)
35246 return __last;
35247 __lookAhead += __pattSize;
35248 __tailSize -= __pattSize;
35249 }
35250 _DistanceType __remainder = __skipOffset;
35251 for (_RandomAccessIter __backTrack = __lookAhead - 1;
35252 __binary_pred(*__backTrack, __val); --__backTrack)
35253 {
35254 if (--__remainder == 0)
35255 return (__lookAhead - __skipOffset);
35256 }
35257 if (__remainder > __tailSize)
35258 return __last;
35259 __lookAhead += __remainder;
35260 __tailSize -= __remainder;
35261 }
35262 }
35263
35264
35265 template<typename _ForwardIterator1, typename _ForwardIterator2>
35266 _ForwardIterator1
35267 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
35268 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
35269 forward_iterator_tag, forward_iterator_tag)
35270 {
35271 if (__first2 == __last2)
35272 return __last1;
35273 else
35274 {
35275 _ForwardIterator1 __result = __last1;
35276 while (1)
35277 {
35278 _ForwardIterator1 __new_result
35279 = std::search(__first1, __last1, __first2, __last2);
35280 if (__new_result == __last1)
35281 return __result;
35282 else
35283 {
35284 __result = __new_result;
35285 __first1 = __new_result;
35286 ++__first1;
35287 }
35288 }
35289 }
35290 }
35291
35292 template<typename _ForwardIterator1, typename _ForwardIterator2,
35293 typename _BinaryPredicate>
35294 _ForwardIterator1
35295 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
35296 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
35297 forward_iterator_tag, forward_iterator_tag,
35298 _BinaryPredicate __comp)
35299 {
35300 if (__first2 == __last2)
35301 return __last1;
35302 else
35303 {
35304 _ForwardIterator1 __result = __last1;
35305 while (1)
35306 {
35307 _ForwardIterator1 __new_result
35308 = std::search(__first1, __last1, __first2,
35309 __last2, __comp);
35310 if (__new_result == __last1)
35311 return __result;
35312 else
35313 {
35314 __result = __new_result;
35315 __first1 = __new_result;
35316 ++__first1;
35317 }
35318 }
35319 }
35320 }
35321
35322
35323 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2>
35324 _BidirectionalIterator1
35325 __find_end(_BidirectionalIterator1 __first1,
35326 _BidirectionalIterator1 __last1,
35327 _BidirectionalIterator2 __first2,
35328 _BidirectionalIterator2 __last2,
35329 bidirectional_iterator_tag, bidirectional_iterator_tag)
35330 {
35331
35332
35333
35334
35335
35336
35337 typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
35338 typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
35339
35340 _RevIterator1 __rlast1(__first1);
35341 _RevIterator2 __rlast2(__first2);
35342 _RevIterator1 __rresult = std::search(_RevIterator1(__last1),
35343 __rlast1,
35344 _RevIterator2(__last2),
35345 __rlast2);
35346
35347 if (__rresult == __rlast1)
35348 return __last1;
35349 else
35350 {
35351 _BidirectionalIterator1 __result = __rresult.base();
35352 std::advance(__result, -std::distance(__first2, __last2));
35353 return __result;
35354 }
35355 }
35356
35357 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
35358 typename _BinaryPredicate>
35359 _BidirectionalIterator1
35360 __find_end(_BidirectionalIterator1 __first1,
35361 _BidirectionalIterator1 __last1,
35362 _BidirectionalIterator2 __first2,
35363 _BidirectionalIterator2 __last2,
35364 bidirectional_iterator_tag, bidirectional_iterator_tag,
35365 _BinaryPredicate __comp)
35366 {
35367
35368
35369
35370
35371
35372
35373 typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
35374 typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
35375
35376 _RevIterator1 __rlast1(__first1);
35377 _RevIterator2 __rlast2(__first2);
35378 _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1,
35379 _RevIterator2(__last2), __rlast2,
35380 __comp);
35381
35382 if (__rresult == __rlast1)
35383 return __last1;
35384 else
35385 {
35386 _BidirectionalIterator1 __result = __rresult.base();
35387 std::advance(__result, -std::distance(__first2, __last2));
35388 return __result;
35389 }
35390 }
35391 # 649 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35392 template<typename _ForwardIterator1, typename _ForwardIterator2>
35393 inline _ForwardIterator1
35394 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
35395 _ForwardIterator2 __first2, _ForwardIterator2 __last2)
35396 {
35397
35398
35399
35400
35401
35402
35403 ;
35404 ;
35405
35406 return std::__find_end(__first1, __last1, __first2, __last2,
35407 std::__iterator_category(__first1),
35408 std::__iterator_category(__first2));
35409 }
35410 # 695 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35411 template<typename _ForwardIterator1, typename _ForwardIterator2,
35412 typename _BinaryPredicate>
35413 inline _ForwardIterator1
35414 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
35415 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
35416 _BinaryPredicate __comp)
35417 {
35418
35419
35420
35421
35422
35423
35424 ;
35425 ;
35426
35427 return std::__find_end(__first1, __last1, __first2, __last2,
35428 std::__iterator_category(__first1),
35429 std::__iterator_category(__first2),
35430 __comp);
35431 }
35432 # 874 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35433 template<typename _InputIterator, typename _OutputIterator, typename _Tp>
35434 _OutputIterator
35435 remove_copy(_InputIterator __first, _InputIterator __last,
35436 _OutputIterator __result, const _Tp& __value)
35437 {
35438
35439
35440
35441
35442
35443
35444 ;
35445
35446 for (; __first != __last; ++__first)
35447 if (!(*__first == __value))
35448 {
35449 *__result = *__first;
35450 ++__result;
35451 }
35452 return __result;
35453 }
35454 # 911 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35455 template<typename _InputIterator, typename _OutputIterator,
35456 typename _Predicate>
35457 _OutputIterator
35458 remove_copy_if(_InputIterator __first, _InputIterator __last,
35459 _OutputIterator __result, _Predicate __pred)
35460 {
35461
35462
35463
35464
35465
35466
35467 ;
35468
35469 for (; __first != __last; ++__first)
35470 if (!bool(__pred(*__first)))
35471 {
35472 *__result = *__first;
35473 ++__result;
35474 }
35475 return __result;
35476 }
35477 # 1086 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35478 template<typename _ForwardIterator, typename _Tp>
35479 _ForwardIterator
35480 remove(_ForwardIterator __first, _ForwardIterator __last,
35481 const _Tp& __value)
35482 {
35483
35484
35485
35486
35487
35488 ;
35489
35490 __first = std::find(__first, __last, __value);
35491 if(__first == __last)
35492 return __first;
35493 _ForwardIterator __result = __first;
35494 ++__first;
35495 for(; __first != __last; ++__first)
35496 if(!(*__first == __value))
35497 {
35498 *__result = (*__first);
35499 ++__result;
35500 }
35501 return __result;
35502 }
35503 # 1129 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35504 template<typename _ForwardIterator, typename _Predicate>
35505 _ForwardIterator
35506 remove_if(_ForwardIterator __first, _ForwardIterator __last,
35507 _Predicate __pred)
35508 {
35509
35510
35511
35512
35513
35514 ;
35515
35516 __first = std::find_if(__first, __last, __pred);
35517 if(__first == __last)
35518 return __first;
35519 _ForwardIterator __result = __first;
35520 ++__first;
35521 for(; __first != __last; ++__first)
35522 if(!bool(__pred(*__first)))
35523 {
35524 *__result = (*__first);
35525 ++__result;
35526 }
35527 return __result;
35528 }
35529 # 1169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35530 template<typename _ForwardIterator>
35531 _ForwardIterator
35532 unique(_ForwardIterator __first, _ForwardIterator __last)
35533 {
35534
35535
35536
35537
35538
35539 ;
35540
35541
35542 __first = std::adjacent_find(__first, __last);
35543 if (__first == __last)
35544 return __last;
35545
35546
35547 _ForwardIterator __dest = __first;
35548 ++__first;
35549 while (++__first != __last)
35550 if (!(*__dest == *__first))
35551 *++__dest = (*__first);
35552 return ++__dest;
35553 }
35554 # 1209 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35555 template<typename _ForwardIterator, typename _BinaryPredicate>
35556 _ForwardIterator
35557 unique(_ForwardIterator __first, _ForwardIterator __last,
35558 _BinaryPredicate __binary_pred)
35559 {
35560
35561
35562
35563
35564
35565
35566 ;
35567
35568
35569 __first = std::adjacent_find(__first, __last, __binary_pred);
35570 if (__first == __last)
35571 return __last;
35572
35573
35574 _ForwardIterator __dest = __first;
35575 ++__first;
35576 while (++__first != __last)
35577 if (!bool(__binary_pred(*__dest, *__first)))
35578 *++__dest = (*__first);
35579 return ++__dest;
35580 }
35581
35582
35583
35584
35585
35586
35587 template<typename _ForwardIterator, typename _OutputIterator>
35588 _OutputIterator
35589 __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
35590 _OutputIterator __result,
35591 forward_iterator_tag, output_iterator_tag)
35592 {
35593
35594 _ForwardIterator __next = __first;
35595 *__result = *__first;
35596 while (++__next != __last)
35597 if (!(*__first == *__next))
35598 {
35599 __first = __next;
35600 *++__result = *__first;
35601 }
35602 return ++__result;
35603 }
35604
35605
35606
35607
35608
35609
35610 template<typename _InputIterator, typename _OutputIterator>
35611 _OutputIterator
35612 __unique_copy(_InputIterator __first, _InputIterator __last,
35613 _OutputIterator __result,
35614 input_iterator_tag, output_iterator_tag)
35615 {
35616
35617 typename iterator_traits<_InputIterator>::value_type __value = *__first;
35618 *__result = __value;
35619 while (++__first != __last)
35620 if (!(__value == *__first))
35621 {
35622 __value = *__first;
35623 *++__result = __value;
35624 }
35625 return ++__result;
35626 }
35627
35628
35629
35630
35631
35632
35633 template<typename _InputIterator, typename _ForwardIterator>
35634 _ForwardIterator
35635 __unique_copy(_InputIterator __first, _InputIterator __last,
35636 _ForwardIterator __result,
35637 input_iterator_tag, forward_iterator_tag)
35638 {
35639
35640 *__result = *__first;
35641 while (++__first != __last)
35642 if (!(*__result == *__first))
35643 *++__result = *__first;
35644 return ++__result;
35645 }
35646
35647
35648
35649
35650
35651
35652
35653 template<typename _ForwardIterator, typename _OutputIterator,
35654 typename _BinaryPredicate>
35655 _OutputIterator
35656 __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
35657 _OutputIterator __result, _BinaryPredicate __binary_pred,
35658 forward_iterator_tag, output_iterator_tag)
35659 {
35660
35661
35662
35663
35664
35665 _ForwardIterator __next = __first;
35666 *__result = *__first;
35667 while (++__next != __last)
35668 if (!bool(__binary_pred(*__first, *__next)))
35669 {
35670 __first = __next;
35671 *++__result = *__first;
35672 }
35673 return ++__result;
35674 }
35675
35676
35677
35678
35679
35680
35681
35682 template<typename _InputIterator, typename _OutputIterator,
35683 typename _BinaryPredicate>
35684 _OutputIterator
35685 __unique_copy(_InputIterator __first, _InputIterator __last,
35686 _OutputIterator __result, _BinaryPredicate __binary_pred,
35687 input_iterator_tag, output_iterator_tag)
35688 {
35689
35690
35691
35692
35693
35694 typename iterator_traits<_InputIterator>::value_type __value = *__first;
35695 *__result = __value;
35696 while (++__first != __last)
35697 if (!bool(__binary_pred(__value, *__first)))
35698 {
35699 __value = *__first;
35700 *++__result = __value;
35701 }
35702 return ++__result;
35703 }
35704
35705
35706
35707
35708
35709
35710
35711 template<typename _InputIterator, typename _ForwardIterator,
35712 typename _BinaryPredicate>
35713 _ForwardIterator
35714 __unique_copy(_InputIterator __first, _InputIterator __last,
35715 _ForwardIterator __result, _BinaryPredicate __binary_pred,
35716 input_iterator_tag, forward_iterator_tag)
35717 {
35718
35719
35720
35721
35722
35723 *__result = *__first;
35724 while (++__first != __last)
35725 if (!bool(__binary_pred(*__result, *__first)))
35726 *++__result = *__first;
35727 return ++__result;
35728 }
35729
35730
35731
35732
35733
35734
35735 template<typename _BidirectionalIterator>
35736 void
35737 __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
35738 bidirectional_iterator_tag)
35739 {
35740 while (true)
35741 if (__first == __last || __first == --__last)
35742 return;
35743 else
35744 {
35745 std::iter_swap(__first, __last);
35746 ++__first;
35747 }
35748 }
35749
35750
35751
35752
35753
35754
35755 template<typename _RandomAccessIterator>
35756 void
35757 __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last,
35758 random_access_iterator_tag)
35759 {
35760 if (__first == __last)
35761 return;
35762 --__last;
35763 while (__first < __last)
35764 {
35765 std::iter_swap(__first, __last);
35766 ++__first;
35767 --__last;
35768 }
35769 }
35770 # 1437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35771 template<typename _BidirectionalIterator>
35772 inline void
35773 reverse(_BidirectionalIterator __first, _BidirectionalIterator __last)
35774 {
35775
35776
35777
35778 ;
35779 std::__reverse(__first, __last, std::__iterator_category(__first));
35780 }
35781 # 1464 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35782 template<typename _BidirectionalIterator, typename _OutputIterator>
35783 _OutputIterator
35784 reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last,
35785 _OutputIterator __result)
35786 {
35787
35788
35789
35790
35791
35792 ;
35793
35794 while (__first != __last)
35795 {
35796 --__last;
35797 *__result = *__last;
35798 ++__result;
35799 }
35800 return __result;
35801 }
35802
35803
35804
35805
35806
35807 template<typename _EuclideanRingElement>
35808 _EuclideanRingElement
35809 __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
35810 {
35811 while (__n != 0)
35812 {
35813 _EuclideanRingElement __t = __m % __n;
35814 __m = __n;
35815 __n = __t;
35816 }
35817 return __m;
35818 }
35819
35820
35821 template<typename _ForwardIterator>
35822 void
35823 __rotate(_ForwardIterator __first,
35824 _ForwardIterator __middle,
35825 _ForwardIterator __last,
35826 forward_iterator_tag)
35827 {
35828 if (__first == __middle || __last == __middle)
35829 return;
35830
35831 _ForwardIterator __first2 = __middle;
35832 do
35833 {
35834 std::iter_swap(__first, __first2);
35835 ++__first;
35836 ++__first2;
35837 if (__first == __middle)
35838 __middle = __first2;
35839 }
35840 while (__first2 != __last);
35841
35842 __first2 = __middle;
35843
35844 while (__first2 != __last)
35845 {
35846 std::iter_swap(__first, __first2);
35847 ++__first;
35848 ++__first2;
35849 if (__first == __middle)
35850 __middle = __first2;
35851 else if (__first2 == __last)
35852 __first2 = __middle;
35853 }
35854 }
35855
35856
35857 template<typename _BidirectionalIterator>
35858 void
35859 __rotate(_BidirectionalIterator __first,
35860 _BidirectionalIterator __middle,
35861 _BidirectionalIterator __last,
35862 bidirectional_iterator_tag)
35863 {
35864
35865
35866
35867
35868 if (__first == __middle || __last == __middle)
35869 return;
35870
35871 std::__reverse(__first, __middle, bidirectional_iterator_tag());
35872 std::__reverse(__middle, __last, bidirectional_iterator_tag());
35873
35874 while (__first != __middle && __middle != __last)
35875 {
35876 std::iter_swap(__first, --__last);
35877 ++__first;
35878 }
35879
35880 if (__first == __middle)
35881 std::__reverse(__middle, __last, bidirectional_iterator_tag());
35882 else
35883 std::__reverse(__first, __middle, bidirectional_iterator_tag());
35884 }
35885
35886
35887 template<typename _RandomAccessIterator>
35888 void
35889 __rotate(_RandomAccessIterator __first,
35890 _RandomAccessIterator __middle,
35891 _RandomAccessIterator __last,
35892 random_access_iterator_tag)
35893 {
35894
35895
35896
35897
35898 if (__first == __middle || __last == __middle)
35899 return;
35900
35901 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
35902 _Distance;
35903 typedef typename iterator_traits<_RandomAccessIterator>::value_type
35904 _ValueType;
35905
35906 _Distance __n = __last - __first;
35907 _Distance __k = __middle - __first;
35908
35909 if (__k == __n - __k)
35910 {
35911 std::swap_ranges(__first, __middle, __middle);
35912 return;
35913 }
35914
35915 _RandomAccessIterator __p = __first;
35916
35917 for (;;)
35918 {
35919 if (__k < __n - __k)
35920 {
35921 if (__is_pod(_ValueType) && __k == 1)
35922 {
35923 _ValueType __t = (*__p);
35924 std::copy(__p + 1, __p + __n, __p);
35925 *(__p + __n - 1) = (__t);
35926 return;
35927 }
35928 _RandomAccessIterator __q = __p + __k;
35929 for (_Distance __i = 0; __i < __n - __k; ++ __i)
35930 {
35931 std::iter_swap(__p, __q);
35932 ++__p;
35933 ++__q;
35934 }
35935 __n %= __k;
35936 if (__n == 0)
35937 return;
35938 std::swap(__n, __k);
35939 __k = __n - __k;
35940 }
35941 else
35942 {
35943 __k = __n - __k;
35944 if (__is_pod(_ValueType) && __k == 1)
35945 {
35946 _ValueType __t = (*(__p + __n - 1));
35947 std::copy_backward(__p, __p + __n - 1, __p + __n);
35948 *__p = (__t);
35949 return;
35950 }
35951 _RandomAccessIterator __q = __p + __n;
35952 __p = __q - __k;
35953 for (_Distance __i = 0; __i < __n - __k; ++ __i)
35954 {
35955 --__p;
35956 --__q;
35957 std::iter_swap(__p, __q);
35958 }
35959 __n %= __k;
35960 if (__n == 0)
35961 return;
35962 std::swap(__n, __k);
35963 }
35964 }
35965 }
35966 # 1668 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35967 template<typename _ForwardIterator>
35968 inline void
35969 rotate(_ForwardIterator __first, _ForwardIterator __middle,
35970 _ForwardIterator __last)
35971 {
35972
35973
35974
35975 ;
35976 ;
35977
35978 typedef typename iterator_traits<_ForwardIterator>::iterator_category
35979 _IterType;
35980 std::__rotate(__first, __middle, __last, _IterType());
35981 }
35982 # 1702 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
35983 template<typename _ForwardIterator, typename _OutputIterator>
35984 _OutputIterator
35985 rotate_copy(_ForwardIterator __first, _ForwardIterator __middle,
35986 _ForwardIterator __last, _OutputIterator __result)
35987 {
35988
35989
35990
35991
35992 ;
35993 ;
35994
35995 return std::copy(__first, __middle,
35996 std::copy(__middle, __last, __result));
35997 }
35998
35999
36000 template<typename _ForwardIterator, typename _Predicate>
36001 _ForwardIterator
36002 __partition(_ForwardIterator __first, _ForwardIterator __last,
36003 _Predicate __pred, forward_iterator_tag)
36004 {
36005 if (__first == __last)
36006 return __first;
36007
36008 while (__pred(*__first))
36009 if (++__first == __last)
36010 return __first;
36011
36012 _ForwardIterator __next = __first;
36013
36014 while (++__next != __last)
36015 if (__pred(*__next))
36016 {
36017 std::iter_swap(__first, __next);
36018 ++__first;
36019 }
36020
36021 return __first;
36022 }
36023
36024
36025 template<typename _BidirectionalIterator, typename _Predicate>
36026 _BidirectionalIterator
36027 __partition(_BidirectionalIterator __first, _BidirectionalIterator __last,
36028 _Predicate __pred, bidirectional_iterator_tag)
36029 {
36030 while (true)
36031 {
36032 while (true)
36033 if (__first == __last)
36034 return __first;
36035 else if (__pred(*__first))
36036 ++__first;
36037 else
36038 break;
36039 --__last;
36040 while (true)
36041 if (__first == __last)
36042 return __first;
36043 else if (!bool(__pred(*__last)))
36044 --__last;
36045 else
36046 break;
36047 std::iter_swap(__first, __last);
36048 ++__first;
36049 }
36050 }
36051
36052
36053
36054
36055 template<typename _ForwardIterator, typename _Predicate, typename _Distance>
36056 _ForwardIterator
36057 __inplace_stable_partition(_ForwardIterator __first,
36058 _ForwardIterator __last,
36059 _Predicate __pred, _Distance __len)
36060 {
36061 if (__len == 1)
36062 return __pred(*__first) ? __last : __first;
36063 _ForwardIterator __middle = __first;
36064 std::advance(__middle, __len / 2);
36065 _ForwardIterator __begin = std::__inplace_stable_partition(__first,
36066 __middle,
36067 __pred,
36068 __len / 2);
36069 _ForwardIterator __end = std::__inplace_stable_partition(__middle, __last,
36070 __pred,
36071 __len
36072 - __len / 2);
36073 std::rotate(__begin, __middle, __end);
36074 std::advance(__begin, std::distance(__middle, __end));
36075 return __begin;
36076 }
36077
36078
36079 template<typename _ForwardIterator, typename _Pointer, typename _Predicate,
36080 typename _Distance>
36081 _ForwardIterator
36082 __stable_partition_adaptive(_ForwardIterator __first,
36083 _ForwardIterator __last,
36084 _Predicate __pred, _Distance __len,
36085 _Pointer __buffer,
36086 _Distance __buffer_size)
36087 {
36088 if (__len <= __buffer_size)
36089 {
36090 _ForwardIterator __result1 = __first;
36091 _Pointer __result2 = __buffer;
36092 for (; __first != __last; ++__first)
36093 if (__pred(*__first))
36094 {
36095 *__result1 = (*__first);
36096 ++__result1;
36097 }
36098 else
36099 {
36100 *__result2 = (*__first);
36101 ++__result2;
36102 }
36103 std::copy(__buffer, __result2, __result1);
36104 return __result1;
36105 }
36106 else
36107 {
36108 _ForwardIterator __middle = __first;
36109 std::advance(__middle, __len / 2);
36110 _ForwardIterator __begin =
36111 std::__stable_partition_adaptive(__first, __middle, __pred,
36112 __len / 2, __buffer,
36113 __buffer_size);
36114 _ForwardIterator __end =
36115 std::__stable_partition_adaptive(__middle, __last, __pred,
36116 __len - __len / 2,
36117 __buffer, __buffer_size);
36118 std::rotate(__begin, __middle, __end);
36119 std::advance(__begin, std::distance(__middle, __end));
36120 return __begin;
36121 }
36122 }
36123 # 1860 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36124 template<typename _ForwardIterator, typename _Predicate>
36125 _ForwardIterator
36126 stable_partition(_ForwardIterator __first, _ForwardIterator __last,
36127 _Predicate __pred)
36128 {
36129
36130
36131
36132
36133
36134 ;
36135
36136 if (__first == __last)
36137 return __first;
36138 else
36139 {
36140 typedef typename iterator_traits<_ForwardIterator>::value_type
36141 _ValueType;
36142 typedef typename iterator_traits<_ForwardIterator>::difference_type
36143 _DistanceType;
36144
36145 _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first,
36146 __last);
36147 if (__buf.size() > 0)
36148 return
36149 std::__stable_partition_adaptive(__first, __last, __pred,
36150 _DistanceType(__buf.requested_size()),
36151 __buf.begin(),
36152 _DistanceType(__buf.size()));
36153 else
36154 return
36155 std::__inplace_stable_partition(__first, __last, __pred,
36156 _DistanceType(__buf.requested_size()));
36157 }
36158 }
36159
36160
36161 template<typename _RandomAccessIterator>
36162 void
36163 __heap_select(_RandomAccessIterator __first,
36164 _RandomAccessIterator __middle,
36165 _RandomAccessIterator __last)
36166 {
36167 std::make_heap(__first, __middle);
36168 for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
36169 if (*__i < *__first)
36170 std::__pop_heap(__first, __middle, __i);
36171 }
36172
36173
36174 template<typename _RandomAccessIterator, typename _Compare>
36175 void
36176 __heap_select(_RandomAccessIterator __first,
36177 _RandomAccessIterator __middle,
36178 _RandomAccessIterator __last, _Compare __comp)
36179 {
36180 std::make_heap(__first, __middle, __comp);
36181 for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
36182 if (__comp(*__i, *__first))
36183 std::__pop_heap(__first, __middle, __i, __comp);
36184 }
36185 # 1942 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36186 template<typename _InputIterator, typename _RandomAccessIterator>
36187 _RandomAccessIterator
36188 partial_sort_copy(_InputIterator __first, _InputIterator __last,
36189 _RandomAccessIterator __result_first,
36190 _RandomAccessIterator __result_last)
36191 {
36192 typedef typename iterator_traits<_InputIterator>::value_type
36193 _InputValueType;
36194 typedef typename iterator_traits<_RandomAccessIterator>::value_type
36195 _OutputValueType;
36196 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
36197 _DistanceType;
36198
36199
36200
36201
36202
36203
36204
36205
36206 ;
36207 ;
36208
36209 if (__result_first == __result_last)
36210 return __result_last;
36211 _RandomAccessIterator __result_real_last = __result_first;
36212 while(__first != __last && __result_real_last != __result_last)
36213 {
36214 *__result_real_last = *__first;
36215 ++__result_real_last;
36216 ++__first;
36217 }
36218 std::make_heap(__result_first, __result_real_last);
36219 while (__first != __last)
36220 {
36221 if (*__first < *__result_first)
36222 std::__adjust_heap(__result_first, _DistanceType(0),
36223 _DistanceType(__result_real_last
36224 - __result_first),
36225 _InputValueType(*__first));
36226 ++__first;
36227 }
36228 std::sort_heap(__result_first, __result_real_last);
36229 return __result_real_last;
36230 }
36231 # 2008 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36232 template<typename _InputIterator, typename _RandomAccessIterator, typename _Compare>
36233 _RandomAccessIterator
36234 partial_sort_copy(_InputIterator __first, _InputIterator __last,
36235 _RandomAccessIterator __result_first,
36236 _RandomAccessIterator __result_last,
36237 _Compare __comp)
36238 {
36239 typedef typename iterator_traits<_InputIterator>::value_type
36240 _InputValueType;
36241 typedef typename iterator_traits<_RandomAccessIterator>::value_type
36242 _OutputValueType;
36243 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
36244 _DistanceType;
36245
36246
36247
36248
36249
36250
36251
36252
36253
36254
36255
36256 ;
36257 ;
36258
36259 if (__result_first == __result_last)
36260 return __result_last;
36261 _RandomAccessIterator __result_real_last = __result_first;
36262 while(__first != __last && __result_real_last != __result_last)
36263 {
36264 *__result_real_last = *__first;
36265 ++__result_real_last;
36266 ++__first;
36267 }
36268 std::make_heap(__result_first, __result_real_last, __comp);
36269 while (__first != __last)
36270 {
36271 if (__comp(*__first, *__result_first))
36272 std::__adjust_heap(__result_first, _DistanceType(0),
36273 _DistanceType(__result_real_last
36274 - __result_first),
36275 _InputValueType(*__first),
36276 __comp);
36277 ++__first;
36278 }
36279 std::sort_heap(__result_first, __result_real_last, __comp);
36280 return __result_real_last;
36281 }
36282
36283
36284 template<typename _RandomAccessIterator>
36285 void
36286 __unguarded_linear_insert(_RandomAccessIterator __last)
36287 {
36288 typename iterator_traits<_RandomAccessIterator>::value_type
36289 __val = (*__last);
36290 _RandomAccessIterator __next = __last;
36291 --__next;
36292 while (__val < *__next)
36293 {
36294 *__last = (*__next);
36295 __last = __next;
36296 --__next;
36297 }
36298 *__last = (__val);
36299 }
36300
36301
36302 template<typename _RandomAccessIterator, typename _Compare>
36303 void
36304 __unguarded_linear_insert(_RandomAccessIterator __last,
36305 _Compare __comp)
36306 {
36307 typename iterator_traits<_RandomAccessIterator>::value_type
36308 __val = (*__last);
36309 _RandomAccessIterator __next = __last;
36310 --__next;
36311 while (__comp(__val, *__next))
36312 {
36313 *__last = (*__next);
36314 __last = __next;
36315 --__next;
36316 }
36317 *__last = (__val);
36318 }
36319
36320
36321 template<typename _RandomAccessIterator>
36322 void
36323 __insertion_sort(_RandomAccessIterator __first,
36324 _RandomAccessIterator __last)
36325 {
36326 if (__first == __last)
36327 return;
36328
36329 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
36330 {
36331 if (*__i < *__first)
36332 {
36333 typename iterator_traits<_RandomAccessIterator>::value_type
36334 __val = (*__i);
36335 std::copy_backward(__first, __i, __i + 1);
36336 *__first = (__val);
36337 }
36338 else
36339 std::__unguarded_linear_insert(__i);
36340 }
36341 }
36342
36343
36344 template<typename _RandomAccessIterator, typename _Compare>
36345 void
36346 __insertion_sort(_RandomAccessIterator __first,
36347 _RandomAccessIterator __last, _Compare __comp)
36348 {
36349 if (__first == __last) return;
36350
36351 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
36352 {
36353 if (__comp(*__i, *__first))
36354 {
36355 typename iterator_traits<_RandomAccessIterator>::value_type
36356 __val = (*__i);
36357 std::copy_backward(__first, __i, __i + 1);
36358 *__first = (__val);
36359 }
36360 else
36361 std::__unguarded_linear_insert(__i, __comp);
36362 }
36363 }
36364
36365
36366 template<typename _RandomAccessIterator>
36367 inline void
36368 __unguarded_insertion_sort(_RandomAccessIterator __first,
36369 _RandomAccessIterator __last)
36370 {
36371 typedef typename iterator_traits<_RandomAccessIterator>::value_type
36372 _ValueType;
36373
36374 for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
36375 std::__unguarded_linear_insert(__i);
36376 }
36377
36378
36379 template<typename _RandomAccessIterator, typename _Compare>
36380 inline void
36381 __unguarded_insertion_sort(_RandomAccessIterator __first,
36382 _RandomAccessIterator __last, _Compare __comp)
36383 {
36384 typedef typename iterator_traits<_RandomAccessIterator>::value_type
36385 _ValueType;
36386
36387 for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
36388 std::__unguarded_linear_insert(__i, __comp);
36389 }
36390
36391
36392
36393
36394
36395 enum { _S_threshold = 16 };
36396
36397
36398 template<typename _RandomAccessIterator>
36399 void
36400 __final_insertion_sort(_RandomAccessIterator __first,
36401 _RandomAccessIterator __last)
36402 {
36403 if (__last - __first > int(_S_threshold))
36404 {
36405 std::__insertion_sort(__first, __first + int(_S_threshold));
36406 std::__unguarded_insertion_sort(__first + int(_S_threshold), __last);
36407 }
36408 else
36409 std::__insertion_sort(__first, __last);
36410 }
36411
36412
36413 template<typename _RandomAccessIterator, typename _Compare>
36414 void
36415 __final_insertion_sort(_RandomAccessIterator __first,
36416 _RandomAccessIterator __last, _Compare __comp)
36417 {
36418 if (__last - __first > int(_S_threshold))
36419 {
36420 std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
36421 std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
36422 __comp);
36423 }
36424 else
36425 std::__insertion_sort(__first, __last, __comp);
36426 }
36427
36428
36429 template<typename _RandomAccessIterator, typename _Tp>
36430 _RandomAccessIterator
36431 __unguarded_partition(_RandomAccessIterator __first,
36432 _RandomAccessIterator __last, const _Tp& __pivot)
36433 {
36434 while (true)
36435 {
36436 while (*__first < __pivot)
36437 ++__first;
36438 --__last;
36439 while (__pivot < *__last)
36440 --__last;
36441 if (!(__first < __last))
36442 return __first;
36443 std::iter_swap(__first, __last);
36444 ++__first;
36445 }
36446 }
36447
36448
36449 template<typename _RandomAccessIterator, typename _Tp, typename _Compare>
36450 _RandomAccessIterator
36451 __unguarded_partition(_RandomAccessIterator __first,
36452 _RandomAccessIterator __last,
36453 const _Tp& __pivot, _Compare __comp)
36454 {
36455 while (true)
36456 {
36457 while (__comp(*__first, __pivot))
36458 ++__first;
36459 --__last;
36460 while (__comp(__pivot, *__last))
36461 --__last;
36462 if (!(__first < __last))
36463 return __first;
36464 std::iter_swap(__first, __last);
36465 ++__first;
36466 }
36467 }
36468
36469
36470 template<typename _RandomAccessIterator>
36471 inline _RandomAccessIterator
36472 __unguarded_partition_pivot(_RandomAccessIterator __first,
36473 _RandomAccessIterator __last)
36474 {
36475 _RandomAccessIterator __mid = __first + (__last - __first) / 2;
36476 std::__move_median_first(__first, __mid, (__last - 1));
36477 return std::__unguarded_partition(__first + 1, __last, *__first);
36478 }
36479
36480
36481
36482 template<typename _RandomAccessIterator, typename _Compare>
36483 inline _RandomAccessIterator
36484 __unguarded_partition_pivot(_RandomAccessIterator __first,
36485 _RandomAccessIterator __last, _Compare __comp)
36486 {
36487 _RandomAccessIterator __mid = __first + (__last - __first) / 2;
36488 std::__move_median_first(__first, __mid, (__last - 1), __comp);
36489 return std::__unguarded_partition(__first + 1, __last, *__first, __comp);
36490 }
36491
36492
36493 template<typename _RandomAccessIterator, typename _Size>
36494 void
36495 __introsort_loop(_RandomAccessIterator __first,
36496 _RandomAccessIterator __last,
36497 _Size __depth_limit)
36498 {
36499 while (__last - __first > int(_S_threshold))
36500 {
36501 if (__depth_limit == 0)
36502 {
36503 std::partial_sort(__first, __last, __last);
36504 return;
36505 }
36506 --__depth_limit;
36507 _RandomAccessIterator __cut =
36508 std::__unguarded_partition_pivot(__first, __last);
36509 std::__introsort_loop(__cut, __last, __depth_limit);
36510 __last = __cut;
36511 }
36512 }
36513
36514
36515 template<typename _RandomAccessIterator, typename _Size, typename _Compare>
36516 void
36517 __introsort_loop(_RandomAccessIterator __first,
36518 _RandomAccessIterator __last,
36519 _Size __depth_limit, _Compare __comp)
36520 {
36521 while (__last - __first > int(_S_threshold))
36522 {
36523 if (__depth_limit == 0)
36524 {
36525 std::partial_sort(__first, __last, __last, __comp);
36526 return;
36527 }
36528 --__depth_limit;
36529 _RandomAccessIterator __cut =
36530 std::__unguarded_partition_pivot(__first, __last, __comp);
36531 std::__introsort_loop(__cut, __last, __depth_limit, __comp);
36532 __last = __cut;
36533 }
36534 }
36535
36536
36537
36538 template<typename _RandomAccessIterator, typename _Size>
36539 void
36540 __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
36541 _RandomAccessIterator __last, _Size __depth_limit)
36542 {
36543 typedef typename iterator_traits<_RandomAccessIterator>::value_type
36544 _ValueType;
36545
36546 while (__last - __first > 3)
36547 {
36548 if (__depth_limit == 0)
36549 {
36550 std::__heap_select(__first, __nth + 1, __last);
36551
36552
36553 std::iter_swap(__first, __nth);
36554 return;
36555 }
36556 --__depth_limit;
36557 _RandomAccessIterator __cut =
36558 std::__unguarded_partition_pivot(__first, __last);
36559 if (__cut <= __nth)
36560 __first = __cut;
36561 else
36562 __last = __cut;
36563 }
36564 std::__insertion_sort(__first, __last);
36565 }
36566
36567 template<typename _RandomAccessIterator, typename _Size, typename _Compare>
36568 void
36569 __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
36570 _RandomAccessIterator __last, _Size __depth_limit,
36571 _Compare __comp)
36572 {
36573 typedef typename iterator_traits<_RandomAccessIterator>::value_type
36574 _ValueType;
36575
36576 while (__last - __first > 3)
36577 {
36578 if (__depth_limit == 0)
36579 {
36580 std::__heap_select(__first, __nth + 1, __last, __comp);
36581
36582 std::iter_swap(__first, __nth);
36583 return;
36584 }
36585 --__depth_limit;
36586 _RandomAccessIterator __cut =
36587 std::__unguarded_partition_pivot(__first, __last, __comp);
36588 if (__cut <= __nth)
36589 __first = __cut;
36590 else
36591 __last = __cut;
36592 }
36593 std::__insertion_sort(__first, __last, __comp);
36594 }
36595 # 2392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36596 template<typename _ForwardIterator, typename _Tp, typename _Compare>
36597 _ForwardIterator
36598 lower_bound(_ForwardIterator __first, _ForwardIterator __last,
36599 const _Tp& __val, _Compare __comp)
36600 {
36601 typedef typename iterator_traits<_ForwardIterator>::value_type
36602 _ValueType;
36603 typedef typename iterator_traits<_ForwardIterator>::difference_type
36604 _DistanceType;
36605
36606
36607
36608
36609
36610
36611 ;
36612
36613 _DistanceType __len = std::distance(__first, __last);
36614
36615 while (__len > 0)
36616 {
36617 _DistanceType __half = __len >> 1;
36618 _ForwardIterator __middle = __first;
36619 std::advance(__middle, __half);
36620 if (__comp(*__middle, __val))
36621 {
36622 __first = __middle;
36623 ++__first;
36624 __len = __len - __half - 1;
36625 }
36626 else
36627 __len = __half;
36628 }
36629 return __first;
36630 }
36631 # 2439 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36632 template<typename _ForwardIterator, typename _Tp>
36633 _ForwardIterator
36634 upper_bound(_ForwardIterator __first, _ForwardIterator __last,
36635 const _Tp& __val)
36636 {
36637 typedef typename iterator_traits<_ForwardIterator>::value_type
36638 _ValueType;
36639 typedef typename iterator_traits<_ForwardIterator>::difference_type
36640 _DistanceType;
36641
36642
36643
36644
36645 ;
36646
36647 _DistanceType __len = std::distance(__first, __last);
36648
36649 while (__len > 0)
36650 {
36651 _DistanceType __half = __len >> 1;
36652 _ForwardIterator __middle = __first;
36653 std::advance(__middle, __half);
36654 if (__val < *__middle)
36655 __len = __half;
36656 else
36657 {
36658 __first = __middle;
36659 ++__first;
36660 __len = __len - __half - 1;
36661 }
36662 }
36663 return __first;
36664 }
36665 # 2488 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36666 template<typename _ForwardIterator, typename _Tp, typename _Compare>
36667 _ForwardIterator
36668 upper_bound(_ForwardIterator __first, _ForwardIterator __last,
36669 const _Tp& __val, _Compare __comp)
36670 {
36671 typedef typename iterator_traits<_ForwardIterator>::value_type
36672 _ValueType;
36673 typedef typename iterator_traits<_ForwardIterator>::difference_type
36674 _DistanceType;
36675
36676
36677
36678
36679
36680
36681 ;
36682
36683 _DistanceType __len = std::distance(__first, __last);
36684
36685 while (__len > 0)
36686 {
36687 _DistanceType __half = __len >> 1;
36688 _ForwardIterator __middle = __first;
36689 std::advance(__middle, __half);
36690 if (__comp(__val, *__middle))
36691 __len = __half;
36692 else
36693 {
36694 __first = __middle;
36695 ++__first;
36696 __len = __len - __half - 1;
36697 }
36698 }
36699 return __first;
36700 }
36701 # 2541 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36702 template<typename _ForwardIterator, typename _Tp>
36703 pair<_ForwardIterator, _ForwardIterator>
36704 equal_range(_ForwardIterator __first, _ForwardIterator __last,
36705 const _Tp& __val)
36706 {
36707 typedef typename iterator_traits<_ForwardIterator>::value_type
36708 _ValueType;
36709 typedef typename iterator_traits<_ForwardIterator>::difference_type
36710 _DistanceType;
36711
36712
36713
36714
36715
36716 ;
36717 ;
36718
36719 _DistanceType __len = std::distance(__first, __last);
36720
36721 while (__len > 0)
36722 {
36723 _DistanceType __half = __len >> 1;
36724 _ForwardIterator __middle = __first;
36725 std::advance(__middle, __half);
36726 if (*__middle < __val)
36727 {
36728 __first = __middle;
36729 ++__first;
36730 __len = __len - __half - 1;
36731 }
36732 else if (__val < *__middle)
36733 __len = __half;
36734 else
36735 {
36736 _ForwardIterator __left = std::lower_bound(__first, __middle,
36737 __val);
36738 std::advance(__first, __len);
36739 _ForwardIterator __right = std::upper_bound(++__middle, __first,
36740 __val);
36741 return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
36742 }
36743 }
36744 return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
36745 }
36746 # 2603 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36747 template<typename _ForwardIterator, typename _Tp, typename _Compare>
36748 pair<_ForwardIterator, _ForwardIterator>
36749 equal_range(_ForwardIterator __first, _ForwardIterator __last,
36750 const _Tp& __val, _Compare __comp)
36751 {
36752 typedef typename iterator_traits<_ForwardIterator>::value_type
36753 _ValueType;
36754 typedef typename iterator_traits<_ForwardIterator>::difference_type
36755 _DistanceType;
36756
36757
36758
36759
36760
36761
36762
36763
36764 ;
36765
36766 ;
36767
36768 _DistanceType __len = std::distance(__first, __last);
36769
36770 while (__len > 0)
36771 {
36772 _DistanceType __half = __len >> 1;
36773 _ForwardIterator __middle = __first;
36774 std::advance(__middle, __half);
36775 if (__comp(*__middle, __val))
36776 {
36777 __first = __middle;
36778 ++__first;
36779 __len = __len - __half - 1;
36780 }
36781 else if (__comp(__val, *__middle))
36782 __len = __half;
36783 else
36784 {
36785 _ForwardIterator __left = std::lower_bound(__first, __middle,
36786 __val, __comp);
36787 std::advance(__first, __len);
36788 _ForwardIterator __right = std::upper_bound(++__middle, __first,
36789 __val, __comp);
36790 return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
36791 }
36792 }
36793 return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
36794 }
36795 # 2663 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36796 template<typename _ForwardIterator, typename _Tp>
36797 bool
36798 binary_search(_ForwardIterator __first, _ForwardIterator __last,
36799 const _Tp& __val)
36800 {
36801 typedef typename iterator_traits<_ForwardIterator>::value_type
36802 _ValueType;
36803
36804
36805
36806
36807 ;
36808 ;
36809
36810 _ForwardIterator __i = std::lower_bound(__first, __last, __val);
36811 return __i != __last && !(__val < *__i);
36812 }
36813 # 2696 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
36814 template<typename _ForwardIterator, typename _Tp, typename _Compare>
36815 bool
36816 binary_search(_ForwardIterator __first, _ForwardIterator __last,
36817 const _Tp& __val, _Compare __comp)
36818 {
36819 typedef typename iterator_traits<_ForwardIterator>::value_type
36820 _ValueType;
36821
36822
36823
36824
36825
36826
36827 ;
36828
36829 ;
36830
36831 _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp);
36832 return __i != __last && !bool(__comp(__val, *__i));
36833 }
36834
36835
36836
36837
36838 template<typename _InputIterator1, typename _InputIterator2,
36839 typename _OutputIterator>
36840 void
36841 __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1,
36842 _InputIterator2 __first2, _InputIterator2 __last2,
36843 _OutputIterator __result)
36844 {
36845 while (__first1 != __last1 && __first2 != __last2)
36846 {
36847 if (*__first2 < *__first1)
36848 {
36849 *__result = (*__first2);
36850 ++__first2;
36851 }
36852 else
36853 {
36854 *__result = (*__first1);
36855 ++__first1;
36856 }
36857 ++__result;
36858 }
36859 if (__first1 != __last1)
36860 std::copy(__first1, __last1, __result);
36861 }
36862
36863
36864 template<typename _InputIterator1, typename _InputIterator2,
36865 typename _OutputIterator, typename _Compare>
36866 void
36867 __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1,
36868 _InputIterator2 __first2, _InputIterator2 __last2,
36869 _OutputIterator __result, _Compare __comp)
36870 {
36871 while (__first1 != __last1 && __first2 != __last2)
36872 {
36873 if (__comp(*__first2, *__first1))
36874 {
36875 *__result = (*__first2);
36876 ++__first2;
36877 }
36878 else
36879 {
36880 *__result = (*__first1);
36881 ++__first1;
36882 }
36883 ++__result;
36884 }
36885 if (__first1 != __last1)
36886 std::copy(__first1, __last1, __result);
36887 }
36888
36889
36890 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
36891 typename _BidirectionalIterator3>
36892 void
36893 __move_merge_adaptive_backward(_BidirectionalIterator1 __first1,
36894 _BidirectionalIterator1 __last1,
36895 _BidirectionalIterator2 __first2,
36896 _BidirectionalIterator2 __last2,
36897 _BidirectionalIterator3 __result)
36898 {
36899 if (__first1 == __last1)
36900 {
36901 std::copy_backward(__first2, __last2, __result);
36902 return;
36903 }
36904 else if (__first2 == __last2)
36905 return;
36906
36907 --__last1;
36908 --__last2;
36909 while (true)
36910 {
36911 if (*__last2 < *__last1)
36912 {
36913 *--__result = (*__last1);
36914 if (__first1 == __last1)
36915 {
36916 std::copy_backward(__first2, ++__last2, __result);
36917 return;
36918 }
36919 --__last1;
36920 }
36921 else
36922 {
36923 *--__result = (*__last2);
36924 if (__first2 == __last2)
36925 return;
36926 --__last2;
36927 }
36928 }
36929 }
36930
36931
36932 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
36933 typename _BidirectionalIterator3, typename _Compare>
36934 void
36935 __move_merge_adaptive_backward(_BidirectionalIterator1 __first1,
36936 _BidirectionalIterator1 __last1,
36937 _BidirectionalIterator2 __first2,
36938 _BidirectionalIterator2 __last2,
36939 _BidirectionalIterator3 __result,
36940 _Compare __comp)
36941 {
36942 if (__first1 == __last1)
36943 {
36944 std::copy_backward(__first2, __last2, __result);
36945 return;
36946 }
36947 else if (__first2 == __last2)
36948 return;
36949
36950 --__last1;
36951 --__last2;
36952 while (true)
36953 {
36954 if (__comp(*__last2, *__last1))
36955 {
36956 *--__result = (*__last1);
36957 if (__first1 == __last1)
36958 {
36959 std::copy_backward(__first2, ++__last2, __result);
36960 return;
36961 }
36962 --__last1;
36963 }
36964 else
36965 {
36966 *--__result = (*__last2);
36967 if (__first2 == __last2)
36968 return;
36969 --__last2;
36970 }
36971 }
36972 }
36973
36974
36975 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
36976 typename _Distance>
36977 _BidirectionalIterator1
36978 __rotate_adaptive(_BidirectionalIterator1 __first,
36979 _BidirectionalIterator1 __middle,
36980 _BidirectionalIterator1 __last,
36981 _Distance __len1, _Distance __len2,
36982 _BidirectionalIterator2 __buffer,
36983 _Distance __buffer_size)
36984 {
36985 _BidirectionalIterator2 __buffer_end;
36986 if (__len1 > __len2 && __len2 <= __buffer_size)
36987 {
36988 if (__len2)
36989 {
36990 __buffer_end = std::copy(__middle, __last, __buffer);
36991 std::copy_backward(__first, __middle, __last);
36992 return std::copy(__buffer, __buffer_end, __first);
36993 }
36994 else
36995 return __first;
36996 }
36997 else if (__len1 <= __buffer_size)
36998 {
36999 if (__len1)
37000 {
37001 __buffer_end = std::copy(__first, __middle, __buffer);
37002 std::copy(__middle, __last, __first);
37003 return std::copy_backward(__buffer, __buffer_end, __last);
37004 }
37005 else
37006 return __last;
37007 }
37008 else
37009 {
37010 std::rotate(__first, __middle, __last);
37011 std::advance(__first, std::distance(__middle, __last));
37012 return __first;
37013 }
37014 }
37015
37016
37017 template<typename _BidirectionalIterator, typename _Distance,
37018 typename _Pointer>
37019 void
37020 __merge_adaptive(_BidirectionalIterator __first,
37021 _BidirectionalIterator __middle,
37022 _BidirectionalIterator __last,
37023 _Distance __len1, _Distance __len2,
37024 _Pointer __buffer, _Distance __buffer_size)
37025 {
37026 if (__len1 <= __len2 && __len1 <= __buffer_size)
37027 {
37028 _Pointer __buffer_end = std::copy(__first, __middle, __buffer);
37029 std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last,
37030 __first);
37031 }
37032 else if (__len2 <= __buffer_size)
37033 {
37034 _Pointer __buffer_end = std::copy(__middle, __last, __buffer);
37035 std::__move_merge_adaptive_backward(__first, __middle, __buffer,
37036 __buffer_end, __last);
37037 }
37038 else
37039 {
37040 _BidirectionalIterator __first_cut = __first;
37041 _BidirectionalIterator __second_cut = __middle;
37042 _Distance __len11 = 0;
37043 _Distance __len22 = 0;
37044 if (__len1 > __len2)
37045 {
37046 __len11 = __len1 / 2;
37047 std::advance(__first_cut, __len11);
37048 __second_cut = std::lower_bound(__middle, __last,
37049 *__first_cut);
37050 __len22 = std::distance(__middle, __second_cut);
37051 }
37052 else
37053 {
37054 __len22 = __len2 / 2;
37055 std::advance(__second_cut, __len22);
37056 __first_cut = std::upper_bound(__first, __middle,
37057 *__second_cut);
37058 __len11 = std::distance(__first, __first_cut);
37059 }
37060 _BidirectionalIterator __new_middle =
37061 std::__rotate_adaptive(__first_cut, __middle, __second_cut,
37062 __len1 - __len11, __len22, __buffer,
37063 __buffer_size);
37064 std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
37065 __len22, __buffer, __buffer_size);
37066 std::__merge_adaptive(__new_middle, __second_cut, __last,
37067 __len1 - __len11,
37068 __len2 - __len22, __buffer, __buffer_size);
37069 }
37070 }
37071
37072
37073 template<typename _BidirectionalIterator, typename _Distance,
37074 typename _Pointer, typename _Compare>
37075 void
37076 __merge_adaptive(_BidirectionalIterator __first,
37077 _BidirectionalIterator __middle,
37078 _BidirectionalIterator __last,
37079 _Distance __len1, _Distance __len2,
37080 _Pointer __buffer, _Distance __buffer_size,
37081 _Compare __comp)
37082 {
37083 if (__len1 <= __len2 && __len1 <= __buffer_size)
37084 {
37085 _Pointer __buffer_end = std::copy(__first, __middle, __buffer);
37086 std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last,
37087 __first, __comp);
37088 }
37089 else if (__len2 <= __buffer_size)
37090 {
37091 _Pointer __buffer_end = std::copy(__middle, __last, __buffer);
37092 std::__move_merge_adaptive_backward(__first, __middle, __buffer,
37093 __buffer_end, __last, __comp);
37094 }
37095 else
37096 {
37097 _BidirectionalIterator __first_cut = __first;
37098 _BidirectionalIterator __second_cut = __middle;
37099 _Distance __len11 = 0;
37100 _Distance __len22 = 0;
37101 if (__len1 > __len2)
37102 {
37103 __len11 = __len1 / 2;
37104 std::advance(__first_cut, __len11);
37105 __second_cut = std::lower_bound(__middle, __last, *__first_cut,
37106 __comp);
37107 __len22 = std::distance(__middle, __second_cut);
37108 }
37109 else
37110 {
37111 __len22 = __len2 / 2;
37112 std::advance(__second_cut, __len22);
37113 __first_cut = std::upper_bound(__first, __middle, *__second_cut,
37114 __comp);
37115 __len11 = std::distance(__first, __first_cut);
37116 }
37117 _BidirectionalIterator __new_middle =
37118 std::__rotate_adaptive(__first_cut, __middle, __second_cut,
37119 __len1 - __len11, __len22, __buffer,
37120 __buffer_size);
37121 std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
37122 __len22, __buffer, __buffer_size, __comp);
37123 std::__merge_adaptive(__new_middle, __second_cut, __last,
37124 __len1 - __len11,
37125 __len2 - __len22, __buffer,
37126 __buffer_size, __comp);
37127 }
37128 }
37129
37130
37131 template<typename _BidirectionalIterator, typename _Distance>
37132 void
37133 __merge_without_buffer(_BidirectionalIterator __first,
37134 _BidirectionalIterator __middle,
37135 _BidirectionalIterator __last,
37136 _Distance __len1, _Distance __len2)
37137 {
37138 if (__len1 == 0 || __len2 == 0)
37139 return;
37140 if (__len1 + __len2 == 2)
37141 {
37142 if (*__middle < *__first)
37143 std::iter_swap(__first, __middle);
37144 return;
37145 }
37146 _BidirectionalIterator __first_cut = __first;
37147 _BidirectionalIterator __second_cut = __middle;
37148 _Distance __len11 = 0;
37149 _Distance __len22 = 0;
37150 if (__len1 > __len2)
37151 {
37152 __len11 = __len1 / 2;
37153 std::advance(__first_cut, __len11);
37154 __second_cut = std::lower_bound(__middle, __last, *__first_cut);
37155 __len22 = std::distance(__middle, __second_cut);
37156 }
37157 else
37158 {
37159 __len22 = __len2 / 2;
37160 std::advance(__second_cut, __len22);
37161 __first_cut = std::upper_bound(__first, __middle, *__second_cut);
37162 __len11 = std::distance(__first, __first_cut);
37163 }
37164 std::rotate(__first_cut, __middle, __second_cut);
37165 _BidirectionalIterator __new_middle = __first_cut;
37166 std::advance(__new_middle, std::distance(__middle, __second_cut));
37167 std::__merge_without_buffer(__first, __first_cut, __new_middle,
37168 __len11, __len22);
37169 std::__merge_without_buffer(__new_middle, __second_cut, __last,
37170 __len1 - __len11, __len2 - __len22);
37171 }
37172
37173
37174 template<typename _BidirectionalIterator, typename _Distance,
37175 typename _Compare>
37176 void
37177 __merge_without_buffer(_BidirectionalIterator __first,
37178 _BidirectionalIterator __middle,
37179 _BidirectionalIterator __last,
37180 _Distance __len1, _Distance __len2,
37181 _Compare __comp)
37182 {
37183 if (__len1 == 0 || __len2 == 0)
37184 return;
37185 if (__len1 + __len2 == 2)
37186 {
37187 if (__comp(*__middle, *__first))
37188 std::iter_swap(__first, __middle);
37189 return;
37190 }
37191 _BidirectionalIterator __first_cut = __first;
37192 _BidirectionalIterator __second_cut = __middle;
37193 _Distance __len11 = 0;
37194 _Distance __len22 = 0;
37195 if (__len1 > __len2)
37196 {
37197 __len11 = __len1 / 2;
37198 std::advance(__first_cut, __len11);
37199 __second_cut = std::lower_bound(__middle, __last, *__first_cut,
37200 __comp);
37201 __len22 = std::distance(__middle, __second_cut);
37202 }
37203 else
37204 {
37205 __len22 = __len2 / 2;
37206 std::advance(__second_cut, __len22);
37207 __first_cut = std::upper_bound(__first, __middle, *__second_cut,
37208 __comp);
37209 __len11 = std::distance(__first, __first_cut);
37210 }
37211 std::rotate(__first_cut, __middle, __second_cut);
37212 _BidirectionalIterator __new_middle = __first_cut;
37213 std::advance(__new_middle, std::distance(__middle, __second_cut));
37214 std::__merge_without_buffer(__first, __first_cut, __new_middle,
37215 __len11, __len22, __comp);
37216 std::__merge_without_buffer(__new_middle, __second_cut, __last,
37217 __len1 - __len11, __len2 - __len22, __comp);
37218 }
37219 # 3120 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37220 template<typename _BidirectionalIterator>
37221 void
37222 inplace_merge(_BidirectionalIterator __first,
37223 _BidirectionalIterator __middle,
37224 _BidirectionalIterator __last)
37225 {
37226 typedef typename iterator_traits<_BidirectionalIterator>::value_type
37227 _ValueType;
37228 typedef typename iterator_traits<_BidirectionalIterator>::difference_type
37229 _DistanceType;
37230
37231
37232
37233
37234
37235 ;
37236 ;
37237
37238 if (__first == __middle || __middle == __last)
37239 return;
37240
37241 _DistanceType __len1 = std::distance(__first, __middle);
37242 _DistanceType __len2 = std::distance(__middle, __last);
37243
37244 _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first,
37245 __last);
37246 if (__buf.begin() == 0)
37247 std::__merge_without_buffer(__first, __middle, __last, __len1, __len2);
37248 else
37249 std::__merge_adaptive(__first, __middle, __last, __len1, __len2,
37250 __buf.begin(), _DistanceType(__buf.size()));
37251 }
37252 # 3175 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37253 template<typename _BidirectionalIterator, typename _Compare>
37254 void
37255 inplace_merge(_BidirectionalIterator __first,
37256 _BidirectionalIterator __middle,
37257 _BidirectionalIterator __last,
37258 _Compare __comp)
37259 {
37260 typedef typename iterator_traits<_BidirectionalIterator>::value_type
37261 _ValueType;
37262 typedef typename iterator_traits<_BidirectionalIterator>::difference_type
37263 _DistanceType;
37264
37265
37266
37267
37268
37269
37270 ;
37271 ;
37272
37273 if (__first == __middle || __middle == __last)
37274 return;
37275
37276 const _DistanceType __len1 = std::distance(__first, __middle);
37277 const _DistanceType __len2 = std::distance(__middle, __last);
37278
37279 _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first,
37280 __last);
37281 if (__buf.begin() == 0)
37282 std::__merge_without_buffer(__first, __middle, __last, __len1,
37283 __len2, __comp);
37284 else
37285 std::__merge_adaptive(__first, __middle, __last, __len1, __len2,
37286 __buf.begin(), _DistanceType(__buf.size()),
37287 __comp);
37288 }
37289
37290
37291
37292 template<typename _InputIterator1, typename _InputIterator2,
37293 typename _OutputIterator>
37294 _OutputIterator
37295 __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
37296 _InputIterator2 __first2, _InputIterator2 __last2,
37297 _OutputIterator __result)
37298 {
37299 while (__first1 != __last1 && __first2 != __last2)
37300 {
37301 if (*__first2 < *__first1)
37302 {
37303 *__result = (*__first2);
37304 ++__first2;
37305 }
37306 else
37307 {
37308 *__result = (*__first1);
37309 ++__first1;
37310 }
37311 ++__result;
37312 }
37313 return std::copy(__first2, __last2, std::copy(__first1, __last1, __result))
37314
37315 ;
37316 }
37317
37318
37319 template<typename _InputIterator1, typename _InputIterator2,
37320 typename _OutputIterator, typename _Compare>
37321 _OutputIterator
37322 __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
37323 _InputIterator2 __first2, _InputIterator2 __last2,
37324 _OutputIterator __result, _Compare __comp)
37325 {
37326 while (__first1 != __last1 && __first2 != __last2)
37327 {
37328 if (__comp(*__first2, *__first1))
37329 {
37330 *__result = (*__first2);
37331 ++__first2;
37332 }
37333 else
37334 {
37335 *__result = (*__first1);
37336 ++__first1;
37337 }
37338 ++__result;
37339 }
37340 return std::copy(__first2, __last2, std::copy(__first1, __last1, __result))
37341
37342 ;
37343 }
37344
37345 template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
37346 typename _Distance>
37347 void
37348 __merge_sort_loop(_RandomAccessIterator1 __first,
37349 _RandomAccessIterator1 __last,
37350 _RandomAccessIterator2 __result,
37351 _Distance __step_size)
37352 {
37353 const _Distance __two_step = 2 * __step_size;
37354
37355 while (__last - __first >= __two_step)
37356 {
37357 __result = std::__move_merge(__first, __first + __step_size,
37358 __first + __step_size,
37359 __first + __two_step, __result);
37360 __first += __two_step;
37361 }
37362
37363 __step_size = std::min(_Distance(__last - __first), __step_size);
37364 std::__move_merge(__first, __first + __step_size,
37365 __first + __step_size, __last, __result);
37366 }
37367
37368 template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
37369 typename _Distance, typename _Compare>
37370 void
37371 __merge_sort_loop(_RandomAccessIterator1 __first,
37372 _RandomAccessIterator1 __last,
37373 _RandomAccessIterator2 __result, _Distance __step_size,
37374 _Compare __comp)
37375 {
37376 const _Distance __two_step = 2 * __step_size;
37377
37378 while (__last - __first >= __two_step)
37379 {
37380 __result = std::__move_merge(__first, __first + __step_size,
37381 __first + __step_size,
37382 __first + __two_step,
37383 __result, __comp);
37384 __first += __two_step;
37385 }
37386 __step_size = std::min(_Distance(__last - __first), __step_size);
37387
37388 std::__move_merge(__first,__first + __step_size,
37389 __first + __step_size, __last, __result, __comp);
37390 }
37391
37392 template<typename _RandomAccessIterator, typename _Distance>
37393 void
37394 __chunk_insertion_sort(_RandomAccessIterator __first,
37395 _RandomAccessIterator __last,
37396 _Distance __chunk_size)
37397 {
37398 while (__last - __first >= __chunk_size)
37399 {
37400 std::__insertion_sort(__first, __first + __chunk_size);
37401 __first += __chunk_size;
37402 }
37403 std::__insertion_sort(__first, __last);
37404 }
37405
37406 template<typename _RandomAccessIterator, typename _Distance,
37407 typename _Compare>
37408 void
37409 __chunk_insertion_sort(_RandomAccessIterator __first,
37410 _RandomAccessIterator __last,
37411 _Distance __chunk_size, _Compare __comp)
37412 {
37413 while (__last - __first >= __chunk_size)
37414 {
37415 std::__insertion_sort(__first, __first + __chunk_size, __comp);
37416 __first += __chunk_size;
37417 }
37418 std::__insertion_sort(__first, __last, __comp);
37419 }
37420
37421 enum { _S_chunk_size = 7 };
37422
37423 template<typename _RandomAccessIterator, typename _Pointer>
37424 void
37425 __merge_sort_with_buffer(_RandomAccessIterator __first,
37426 _RandomAccessIterator __last,
37427 _Pointer __buffer)
37428 {
37429 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
37430 _Distance;
37431
37432 const _Distance __len = __last - __first;
37433 const _Pointer __buffer_last = __buffer + __len;
37434
37435 _Distance __step_size = _S_chunk_size;
37436 std::__chunk_insertion_sort(__first, __last, __step_size);
37437
37438 while (__step_size < __len)
37439 {
37440 std::__merge_sort_loop(__first, __last, __buffer, __step_size);
37441 __step_size *= 2;
37442 std::__merge_sort_loop(__buffer, __buffer_last, __first, __step_size);
37443 __step_size *= 2;
37444 }
37445 }
37446
37447 template<typename _RandomAccessIterator, typename _Pointer, typename _Compare>
37448 void
37449 __merge_sort_with_buffer(_RandomAccessIterator __first,
37450 _RandomAccessIterator __last,
37451 _Pointer __buffer, _Compare __comp)
37452 {
37453 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
37454 _Distance;
37455
37456 const _Distance __len = __last - __first;
37457 const _Pointer __buffer_last = __buffer + __len;
37458
37459 _Distance __step_size = _S_chunk_size;
37460 std::__chunk_insertion_sort(__first, __last, __step_size, __comp);
37461
37462 while (__step_size < __len)
37463 {
37464 std::__merge_sort_loop(__first, __last, __buffer,
37465 __step_size, __comp);
37466 __step_size *= 2;
37467 std::__merge_sort_loop(__buffer, __buffer_last, __first,
37468 __step_size, __comp);
37469 __step_size *= 2;
37470 }
37471 }
37472
37473 template<typename _RandomAccessIterator, typename _Pointer,
37474 typename _Distance>
37475 void
37476 __stable_sort_adaptive(_RandomAccessIterator __first,
37477 _RandomAccessIterator __last,
37478 _Pointer __buffer, _Distance __buffer_size)
37479 {
37480 const _Distance __len = (__last - __first + 1) / 2;
37481 const _RandomAccessIterator __middle = __first + __len;
37482 if (__len > __buffer_size)
37483 {
37484 std::__stable_sort_adaptive(__first, __middle,
37485 __buffer, __buffer_size);
37486 std::__stable_sort_adaptive(__middle, __last,
37487 __buffer, __buffer_size);
37488 }
37489 else
37490 {
37491 std::__merge_sort_with_buffer(__first, __middle, __buffer);
37492 std::__merge_sort_with_buffer(__middle, __last, __buffer);
37493 }
37494 std::__merge_adaptive(__first, __middle, __last,
37495 _Distance(__middle - __first),
37496 _Distance(__last - __middle),
37497 __buffer, __buffer_size);
37498 }
37499
37500 template<typename _RandomAccessIterator, typename _Pointer,
37501 typename _Distance, typename _Compare>
37502 void
37503 __stable_sort_adaptive(_RandomAccessIterator __first,
37504 _RandomAccessIterator __last,
37505 _Pointer __buffer, _Distance __buffer_size,
37506 _Compare __comp)
37507 {
37508 const _Distance __len = (__last - __first + 1) / 2;
37509 const _RandomAccessIterator __middle = __first + __len;
37510 if (__len > __buffer_size)
37511 {
37512 std::__stable_sort_adaptive(__first, __middle, __buffer,
37513 __buffer_size, __comp);
37514 std::__stable_sort_adaptive(__middle, __last, __buffer,
37515 __buffer_size, __comp);
37516 }
37517 else
37518 {
37519 std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp);
37520 std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp);
37521 }
37522 std::__merge_adaptive(__first, __middle, __last,
37523 _Distance(__middle - __first),
37524 _Distance(__last - __middle),
37525 __buffer, __buffer_size,
37526 __comp);
37527 }
37528
37529
37530 template<typename _RandomAccessIterator>
37531 void
37532 __inplace_stable_sort(_RandomAccessIterator __first,
37533 _RandomAccessIterator __last)
37534 {
37535 if (__last - __first < 15)
37536 {
37537 std::__insertion_sort(__first, __last);
37538 return;
37539 }
37540 _RandomAccessIterator __middle = __first + (__last - __first) / 2;
37541 std::__inplace_stable_sort(__first, __middle);
37542 std::__inplace_stable_sort(__middle, __last);
37543 std::__merge_without_buffer(__first, __middle, __last,
37544 __middle - __first,
37545 __last - __middle);
37546 }
37547
37548
37549 template<typename _RandomAccessIterator, typename _Compare>
37550 void
37551 __inplace_stable_sort(_RandomAccessIterator __first,
37552 _RandomAccessIterator __last, _Compare __comp)
37553 {
37554 if (__last - __first < 15)
37555 {
37556 std::__insertion_sort(__first, __last, __comp);
37557 return;
37558 }
37559 _RandomAccessIterator __middle = __first + (__last - __first) / 2;
37560 std::__inplace_stable_sort(__first, __middle, __comp);
37561 std::__inplace_stable_sort(__middle, __last, __comp);
37562 std::__merge_without_buffer(__first, __middle, __last,
37563 __middle - __first,
37564 __last - __middle,
37565 __comp);
37566 }
37567 # 3513 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37568 template<typename _InputIterator1, typename _InputIterator2>
37569 bool
37570 includes(_InputIterator1 __first1, _InputIterator1 __last1,
37571 _InputIterator2 __first2, _InputIterator2 __last2)
37572 {
37573 typedef typename iterator_traits<_InputIterator1>::value_type
37574 _ValueType1;
37575 typedef typename iterator_traits<_InputIterator2>::value_type
37576 _ValueType2;
37577
37578
37579
37580
37581
37582
37583 ;
37584 ;
37585
37586 while (__first1 != __last1 && __first2 != __last2)
37587 if (*__first2 < *__first1)
37588 return false;
37589 else if(*__first1 < *__first2)
37590 ++__first1;
37591 else
37592 ++__first1, ++__first2;
37593
37594 return __first2 == __last2;
37595 }
37596 # 3562 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37597 template<typename _InputIterator1, typename _InputIterator2,
37598 typename _Compare>
37599 bool
37600 includes(_InputIterator1 __first1, _InputIterator1 __last1,
37601 _InputIterator2 __first2, _InputIterator2 __last2,
37602 _Compare __comp)
37603 {
37604 typedef typename iterator_traits<_InputIterator1>::value_type
37605 _ValueType1;
37606 typedef typename iterator_traits<_InputIterator2>::value_type
37607 _ValueType2;
37608
37609
37610
37611
37612
37613
37614
37615
37616 ;
37617 ;
37618
37619 while (__first1 != __last1 && __first2 != __last2)
37620 if (__comp(*__first2, *__first1))
37621 return false;
37622 else if(__comp(*__first1, *__first2))
37623 ++__first1;
37624 else
37625 ++__first1, ++__first2;
37626
37627 return __first2 == __last2;
37628 }
37629 # 3617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37630 template<typename _BidirectionalIterator>
37631 bool
37632 next_permutation(_BidirectionalIterator __first,
37633 _BidirectionalIterator __last)
37634 {
37635
37636
37637
37638
37639
37640 ;
37641
37642 if (__first == __last)
37643 return false;
37644 _BidirectionalIterator __i = __first;
37645 ++__i;
37646 if (__i == __last)
37647 return false;
37648 __i = __last;
37649 --__i;
37650
37651 for(;;)
37652 {
37653 _BidirectionalIterator __ii = __i;
37654 --__i;
37655 if (*__i < *__ii)
37656 {
37657 _BidirectionalIterator __j = __last;
37658 while (!(*__i < *--__j))
37659 {}
37660 std::iter_swap(__i, __j);
37661 std::reverse(__ii, __last);
37662 return true;
37663 }
37664 if (__i == __first)
37665 {
37666 std::reverse(__first, __last);
37667 return false;
37668 }
37669 }
37670 }
37671 # 3674 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37672 template<typename _BidirectionalIterator, typename _Compare>
37673 bool
37674 next_permutation(_BidirectionalIterator __first,
37675 _BidirectionalIterator __last, _Compare __comp)
37676 {
37677
37678
37679
37680
37681
37682
37683 ;
37684
37685 if (__first == __last)
37686 return false;
37687 _BidirectionalIterator __i = __first;
37688 ++__i;
37689 if (__i == __last)
37690 return false;
37691 __i = __last;
37692 --__i;
37693
37694 for(;;)
37695 {
37696 _BidirectionalIterator __ii = __i;
37697 --__i;
37698 if (__comp(*__i, *__ii))
37699 {
37700 _BidirectionalIterator __j = __last;
37701 while (!bool(__comp(*__i, *--__j)))
37702 {}
37703 std::iter_swap(__i, __j);
37704 std::reverse(__ii, __last);
37705 return true;
37706 }
37707 if (__i == __first)
37708 {
37709 std::reverse(__first, __last);
37710 return false;
37711 }
37712 }
37713 }
37714 # 3730 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37715 template<typename _BidirectionalIterator>
37716 bool
37717 prev_permutation(_BidirectionalIterator __first,
37718 _BidirectionalIterator __last)
37719 {
37720
37721
37722
37723
37724
37725 ;
37726
37727 if (__first == __last)
37728 return false;
37729 _BidirectionalIterator __i = __first;
37730 ++__i;
37731 if (__i == __last)
37732 return false;
37733 __i = __last;
37734 --__i;
37735
37736 for(;;)
37737 {
37738 _BidirectionalIterator __ii = __i;
37739 --__i;
37740 if (*__ii < *__i)
37741 {
37742 _BidirectionalIterator __j = __last;
37743 while (!(*--__j < *__i))
37744 {}
37745 std::iter_swap(__i, __j);
37746 std::reverse(__ii, __last);
37747 return true;
37748 }
37749 if (__i == __first)
37750 {
37751 std::reverse(__first, __last);
37752 return false;
37753 }
37754 }
37755 }
37756 # 3787 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37757 template<typename _BidirectionalIterator, typename _Compare>
37758 bool
37759 prev_permutation(_BidirectionalIterator __first,
37760 _BidirectionalIterator __last, _Compare __comp)
37761 {
37762
37763
37764
37765
37766
37767
37768 ;
37769
37770 if (__first == __last)
37771 return false;
37772 _BidirectionalIterator __i = __first;
37773 ++__i;
37774 if (__i == __last)
37775 return false;
37776 __i = __last;
37777 --__i;
37778
37779 for(;;)
37780 {
37781 _BidirectionalIterator __ii = __i;
37782 --__i;
37783 if (__comp(*__ii, *__i))
37784 {
37785 _BidirectionalIterator __j = __last;
37786 while (!bool(__comp(*--__j, *__i)))
37787 {}
37788 std::iter_swap(__i, __j);
37789 std::reverse(__ii, __last);
37790 return true;
37791 }
37792 if (__i == __first)
37793 {
37794 std::reverse(__first, __last);
37795 return false;
37796 }
37797 }
37798 }
37799 # 3847 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37800 template<typename _InputIterator, typename _OutputIterator, typename _Tp>
37801 _OutputIterator
37802 replace_copy(_InputIterator __first, _InputIterator __last,
37803 _OutputIterator __result,
37804 const _Tp& __old_value, const _Tp& __new_value)
37805 {
37806
37807
37808
37809
37810
37811
37812 ;
37813
37814 for (; __first != __last; ++__first, ++__result)
37815 if (*__first == __old_value)
37816 *__result = __new_value;
37817 else
37818 *__result = *__first;
37819 return __result;
37820 }
37821 # 3884 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37822 template<typename _InputIterator, typename _OutputIterator,
37823 typename _Predicate, typename _Tp>
37824 _OutputIterator
37825 replace_copy_if(_InputIterator __first, _InputIterator __last,
37826 _OutputIterator __result,
37827 _Predicate __pred, const _Tp& __new_value)
37828 {
37829
37830
37831
37832
37833
37834
37835 ;
37836
37837 for (; __first != __last; ++__first, ++__result)
37838 if (__pred(*__first))
37839 *__result = __new_value;
37840 else
37841 *__result = *__first;
37842 return __result;
37843 }
37844 # 4355 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37845
37846
37847
37848 # 4371 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37849 template<typename _InputIterator, typename _Function>
37850 _Function
37851 for_each(_InputIterator __first, _InputIterator __last, _Function __f)
37852 {
37853
37854
37855 ;
37856 for (; __first != __last; ++__first)
37857 __f(*__first);
37858 return (__f);
37859 }
37860 # 4392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37861 template<typename _InputIterator, typename _Tp>
37862 inline _InputIterator
37863 find(_InputIterator __first, _InputIterator __last,
37864 const _Tp& __val)
37865 {
37866
37867
37868
37869
37870 ;
37871 return std::__find(__first, __last, __val,
37872 std::__iterator_category(__first));
37873 }
37874 # 4416 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37875 template<typename _InputIterator, typename _Predicate>
37876 inline _InputIterator
37877 find_if(_InputIterator __first, _InputIterator __last,
37878 _Predicate __pred)
37879 {
37880
37881
37882
37883
37884 ;
37885 return std::__find_if(__first, __last, __pred,
37886 std::__iterator_category(__first));
37887 }
37888 # 4445 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37889 template<typename _InputIterator, typename _ForwardIterator>
37890 _InputIterator
37891 find_first_of(_InputIterator __first1, _InputIterator __last1,
37892 _ForwardIterator __first2, _ForwardIterator __last2)
37893 {
37894
37895
37896
37897
37898
37899
37900 ;
37901 ;
37902
37903 for (; __first1 != __last1; ++__first1)
37904 for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
37905 if (*__first1 == *__iter)
37906 return __first1;
37907 return __last1;
37908 }
37909 # 4484 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37910 template<typename _InputIterator, typename _ForwardIterator,
37911 typename _BinaryPredicate>
37912 _InputIterator
37913 find_first_of(_InputIterator __first1, _InputIterator __last1,
37914 _ForwardIterator __first2, _ForwardIterator __last2,
37915 _BinaryPredicate __comp)
37916 {
37917
37918
37919
37920
37921
37922
37923 ;
37924 ;
37925
37926 for (; __first1 != __last1; ++__first1)
37927 for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
37928 if (__comp(*__first1, *__iter))
37929 return __first1;
37930 return __last1;
37931 }
37932 # 4516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37933 template<typename _ForwardIterator>
37934 _ForwardIterator
37935 adjacent_find(_ForwardIterator __first, _ForwardIterator __last)
37936 {
37937
37938
37939
37940
37941 ;
37942 if (__first == __last)
37943 return __last;
37944 _ForwardIterator __next = __first;
37945 while(++__next != __last)
37946 {
37947 if (*__first == *__next)
37948 return __first;
37949 __first = __next;
37950 }
37951 return __last;
37952 }
37953 # 4548 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37954 template<typename _ForwardIterator, typename _BinaryPredicate>
37955 _ForwardIterator
37956 adjacent_find(_ForwardIterator __first, _ForwardIterator __last,
37957 _BinaryPredicate __binary_pred)
37958 {
37959
37960
37961
37962
37963
37964 ;
37965 if (__first == __last)
37966 return __last;
37967 _ForwardIterator __next = __first;
37968 while(++__next != __last)
37969 {
37970 if (__binary_pred(*__first, *__next))
37971 return __first;
37972 __first = __next;
37973 }
37974 return __last;
37975 }
37976 # 4580 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37977 template<typename _InputIterator, typename _Tp>
37978 typename iterator_traits<_InputIterator>::difference_type
37979 count(_InputIterator __first, _InputIterator __last, const _Tp& __value)
37980 {
37981
37982
37983
37984
37985 ;
37986 typename iterator_traits<_InputIterator>::difference_type __n = 0;
37987 for (; __first != __last; ++__first)
37988 if (*__first == __value)
37989 ++__n;
37990 return __n;
37991 }
37992 # 4605 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
37993 template<typename _InputIterator, typename _Predicate>
37994 typename iterator_traits<_InputIterator>::difference_type
37995 count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred)
37996 {
37997
37998
37999
38000
38001 ;
38002 typename iterator_traits<_InputIterator>::difference_type __n = 0;
38003 for (; __first != __last; ++__first)
38004 if (__pred(*__first))
38005 ++__n;
38006 return __n;
38007 }
38008 # 4645 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38009 template<typename _ForwardIterator1, typename _ForwardIterator2>
38010 _ForwardIterator1
38011 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
38012 _ForwardIterator2 __first2, _ForwardIterator2 __last2)
38013 {
38014
38015
38016
38017
38018
38019
38020 ;
38021 ;
38022
38023
38024 if (__first1 == __last1 || __first2 == __last2)
38025 return __first1;
38026
38027
38028 _ForwardIterator2 __p1(__first2);
38029 if (++__p1 == __last2)
38030 return std::find(__first1, __last1, *__first2);
38031
38032
38033 _ForwardIterator2 __p;
38034 _ForwardIterator1 __current = __first1;
38035
38036 for (;;)
38037 {
38038 __first1 = std::find(__first1, __last1, *__first2);
38039 if (__first1 == __last1)
38040 return __last1;
38041
38042 __p = __p1;
38043 __current = __first1;
38044 if (++__current == __last1)
38045 return __last1;
38046
38047 while (*__current == *__p)
38048 {
38049 if (++__p == __last2)
38050 return __first1;
38051 if (++__current == __last1)
38052 return __last1;
38053 }
38054 ++__first1;
38055 }
38056 return __first1;
38057 }
38058 # 4716 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38059 template<typename _ForwardIterator1, typename _ForwardIterator2,
38060 typename _BinaryPredicate>
38061 _ForwardIterator1
38062 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
38063 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
38064 _BinaryPredicate __predicate)
38065 {
38066
38067
38068
38069
38070
38071
38072 ;
38073 ;
38074
38075
38076 if (__first1 == __last1 || __first2 == __last2)
38077 return __first1;
38078
38079
38080 _ForwardIterator2 __p1(__first2);
38081 if (++__p1 == __last2)
38082 {
38083 while (__first1 != __last1
38084 && !bool(__predicate(*__first1, *__first2)))
38085 ++__first1;
38086 return __first1;
38087 }
38088
38089
38090 _ForwardIterator2 __p;
38091 _ForwardIterator1 __current = __first1;
38092
38093 for (;;)
38094 {
38095 while (__first1 != __last1
38096 && !bool(__predicate(*__first1, *__first2)))
38097 ++__first1;
38098 if (__first1 == __last1)
38099 return __last1;
38100
38101 __p = __p1;
38102 __current = __first1;
38103 if (++__current == __last1)
38104 return __last1;
38105
38106 while (__predicate(*__current, *__p))
38107 {
38108 if (++__p == __last2)
38109 return __first1;
38110 if (++__current == __last1)
38111 return __last1;
38112 }
38113 ++__first1;
38114 }
38115 return __first1;
38116 }
38117 # 4790 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38118 template<typename _ForwardIterator, typename _Integer, typename _Tp>
38119 _ForwardIterator
38120 search_n(_ForwardIterator __first, _ForwardIterator __last,
38121 _Integer __count, const _Tp& __val)
38122 {
38123
38124
38125
38126
38127 ;
38128
38129 if (__count <= 0)
38130 return __first;
38131 if (__count == 1)
38132 return std::find(__first, __last, __val);
38133 return std::__search_n(__first, __last, __count, __val,
38134 std::__iterator_category(__first));
38135 }
38136 # 4826 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38137 template<typename _ForwardIterator, typename _Integer, typename _Tp,
38138 typename _BinaryPredicate>
38139 _ForwardIterator
38140 search_n(_ForwardIterator __first, _ForwardIterator __last,
38141 _Integer __count, const _Tp& __val,
38142 _BinaryPredicate __binary_pred)
38143 {
38144
38145
38146
38147
38148 ;
38149
38150 if (__count <= 0)
38151 return __first;
38152 if (__count == 1)
38153 {
38154 while (__first != __last && !bool(__binary_pred(*__first, __val)))
38155 ++__first;
38156 return __first;
38157 }
38158 return std::__search_n(__first, __last, __count, __val, __binary_pred,
38159 std::__iterator_category(__first));
38160 }
38161 # 4868 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38162 template<typename _InputIterator, typename _OutputIterator,
38163 typename _UnaryOperation>
38164 _OutputIterator
38165 transform(_InputIterator __first, _InputIterator __last,
38166 _OutputIterator __result, _UnaryOperation __unary_op)
38167 {
38168
38169
38170
38171
38172
38173 ;
38174
38175 for (; __first != __last; ++__first, ++__result)
38176 *__result = __unary_op(*__first);
38177 return __result;
38178 }
38179 # 4904 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38180 template<typename _InputIterator1, typename _InputIterator2,
38181 typename _OutputIterator, typename _BinaryOperation>
38182 _OutputIterator
38183 transform(_InputIterator1 __first1, _InputIterator1 __last1,
38184 _InputIterator2 __first2, _OutputIterator __result,
38185 _BinaryOperation __binary_op)
38186 {
38187
38188
38189
38190
38191
38192
38193 ;
38194
38195 for (; __first1 != __last1; ++__first1, ++__first2, ++__result)
38196 *__result = __binary_op(*__first1, *__first2);
38197 return __result;
38198 }
38199 # 4937 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38200 template<typename _ForwardIterator, typename _Tp>
38201 void
38202 replace(_ForwardIterator __first, _ForwardIterator __last,
38203 const _Tp& __old_value, const _Tp& __new_value)
38204 {
38205
38206
38207
38208
38209
38210
38211
38212 ;
38213
38214 for (; __first != __last; ++__first)
38215 if (*__first == __old_value)
38216 *__first = __new_value;
38217 }
38218 # 4969 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38219 template<typename _ForwardIterator, typename _Predicate, typename _Tp>
38220 void
38221 replace_if(_ForwardIterator __first, _ForwardIterator __last,
38222 _Predicate __pred, const _Tp& __new_value)
38223 {
38224
38225
38226
38227
38228
38229
38230
38231 ;
38232
38233 for (; __first != __last; ++__first)
38234 if (__pred(*__first))
38235 *__first = __new_value;
38236 }
38237 # 5001 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38238 template<typename _ForwardIterator, typename _Generator>
38239 void
38240 generate(_ForwardIterator __first, _ForwardIterator __last,
38241 _Generator __gen)
38242 {
38243
38244
38245
38246
38247 ;
38248
38249 for (; __first != __last; ++__first)
38250 *__first = __gen();
38251 }
38252 # 5032 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38253 template<typename _OutputIterator, typename _Size, typename _Generator>
38254 _OutputIterator
38255 generate_n(_OutputIterator __first, _Size __n, _Generator __gen)
38256 {
38257
38258
38259
38260
38261
38262 for (__decltype(__n + 0) __niter = __n;
38263 __niter > 0; --__niter, ++__first)
38264 *__first = __gen();
38265 return __first;
38266 }
38267 # 5069 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38268 template<typename _InputIterator, typename _OutputIterator>
38269 inline _OutputIterator
38270 unique_copy(_InputIterator __first, _InputIterator __last,
38271 _OutputIterator __result)
38272 {
38273
38274
38275
38276
38277
38278
38279 ;
38280
38281 if (__first == __last)
38282 return __result;
38283 return std::__unique_copy(__first, __last, __result,
38284 std::__iterator_category(__first),
38285 std::__iterator_category(__result));
38286 }
38287 # 5108 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38288 template<typename _InputIterator, typename _OutputIterator,
38289 typename _BinaryPredicate>
38290 inline _OutputIterator
38291 unique_copy(_InputIterator __first, _InputIterator __last,
38292 _OutputIterator __result,
38293 _BinaryPredicate __binary_pred)
38294 {
38295
38296
38297
38298
38299 ;
38300
38301 if (__first == __last)
38302 return __result;
38303 return std::__unique_copy(__first, __last, __result, __binary_pred,
38304 std::__iterator_category(__first),
38305 std::__iterator_category(__result));
38306 }
38307 # 5140 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38308 template<typename _RandomAccessIterator>
38309 inline void
38310 random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
38311 {
38312
38313
38314
38315 ;
38316
38317 if (__first != __last)
38318 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
38319 std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1)));
38320 }
38321 # 5168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38322 template<typename _RandomAccessIterator, typename _RandomNumberGenerator>
38323 void
38324 random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
38325
38326
38327
38328 _RandomNumberGenerator& __rand)
38329
38330 {
38331
38332
38333
38334 ;
38335
38336 if (__first == __last)
38337 return;
38338 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
38339 std::iter_swap(__i, __first + __rand((__i - __first) + 1));
38340 }
38341 # 5204 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38342 template<typename _ForwardIterator, typename _Predicate>
38343 inline _ForwardIterator
38344 partition(_ForwardIterator __first, _ForwardIterator __last,
38345 _Predicate __pred)
38346 {
38347
38348
38349
38350
38351
38352 ;
38353
38354 return std::__partition(__first, __last, __pred,
38355 std::__iterator_category(__first));
38356 }
38357 # 5238 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38358 template<typename _RandomAccessIterator>
38359 inline void
38360 partial_sort(_RandomAccessIterator __first,
38361 _RandomAccessIterator __middle,
38362 _RandomAccessIterator __last)
38363 {
38364 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38365 _ValueType;
38366
38367
38368
38369
38370
38371 ;
38372 ;
38373
38374 std::__heap_select(__first, __middle, __last);
38375 std::sort_heap(__first, __middle);
38376 }
38377 # 5277 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38378 template<typename _RandomAccessIterator, typename _Compare>
38379 inline void
38380 partial_sort(_RandomAccessIterator __first,
38381 _RandomAccessIterator __middle,
38382 _RandomAccessIterator __last,
38383 _Compare __comp)
38384 {
38385 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38386 _ValueType;
38387
38388
38389
38390
38391
38392
38393 ;
38394 ;
38395
38396 std::__heap_select(__first, __middle, __last, __comp);
38397 std::sort_heap(__first, __middle, __comp);
38398 }
38399 # 5315 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38400 template<typename _RandomAccessIterator>
38401 inline void
38402 nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
38403 _RandomAccessIterator __last)
38404 {
38405 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38406 _ValueType;
38407
38408
38409
38410
38411
38412 ;
38413 ;
38414
38415 if (__first == __last || __nth == __last)
38416 return;
38417
38418 std::__introselect(__first, __nth, __last,
38419 std::__lg(__last - __first) * 2);
38420 }
38421 # 5354 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38422 template<typename _RandomAccessIterator, typename _Compare>
38423 inline void
38424 nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
38425 _RandomAccessIterator __last, _Compare __comp)
38426 {
38427 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38428 _ValueType;
38429
38430
38431
38432
38433
38434
38435 ;
38436 ;
38437
38438 if (__first == __last || __nth == __last)
38439 return;
38440
38441 std::__introselect(__first, __nth, __last,
38442 std::__lg(__last - __first) * 2, __comp);
38443 }
38444 # 5392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38445 template<typename _RandomAccessIterator>
38446 inline void
38447 sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
38448 {
38449 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38450 _ValueType;
38451
38452
38453
38454
38455
38456 ;
38457
38458 if (__first != __last)
38459 {
38460 std::__introsort_loop(__first, __last,
38461 std::__lg(__last - __first) * 2);
38462 std::__final_insertion_sort(__first, __last);
38463 }
38464 }
38465 # 5428 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38466 template<typename _RandomAccessIterator, typename _Compare>
38467 inline void
38468 sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
38469 _Compare __comp)
38470 {
38471 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38472 _ValueType;
38473
38474
38475
38476
38477
38478
38479 ;
38480
38481 if (__first != __last)
38482 {
38483 std::__introsort_loop(__first, __last,
38484 std::__lg(__last - __first) * 2, __comp);
38485 std::__final_insertion_sort(__first, __last, __comp);
38486 }
38487 }
38488 # 5469 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38489 template<typename _InputIterator1, typename _InputIterator2,
38490 typename _OutputIterator>
38491 _OutputIterator
38492 merge(_InputIterator1 __first1, _InputIterator1 __last1,
38493 _InputIterator2 __first2, _InputIterator2 __last2,
38494 _OutputIterator __result)
38495 {
38496 typedef typename iterator_traits<_InputIterator1>::value_type
38497 _ValueType1;
38498 typedef typename iterator_traits<_InputIterator2>::value_type
38499 _ValueType2;
38500
38501
38502
38503
38504
38505
38506
38507
38508
38509 ;
38510 ;
38511
38512 while (__first1 != __last1 && __first2 != __last2)
38513 {
38514 if (*__first2 < *__first1)
38515 {
38516 *__result = *__first2;
38517 ++__first2;
38518 }
38519 else
38520 {
38521 *__result = *__first1;
38522 ++__first1;
38523 }
38524 ++__result;
38525 }
38526 return std::copy(__first2, __last2, std::copy(__first1, __last1,
38527 __result));
38528 }
38529 # 5532 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38530 template<typename _InputIterator1, typename _InputIterator2,
38531 typename _OutputIterator, typename _Compare>
38532 _OutputIterator
38533 merge(_InputIterator1 __first1, _InputIterator1 __last1,
38534 _InputIterator2 __first2, _InputIterator2 __last2,
38535 _OutputIterator __result, _Compare __comp)
38536 {
38537 typedef typename iterator_traits<_InputIterator1>::value_type
38538 _ValueType1;
38539 typedef typename iterator_traits<_InputIterator2>::value_type
38540 _ValueType2;
38541
38542
38543
38544
38545
38546
38547
38548
38549
38550
38551 ;
38552 ;
38553
38554 while (__first1 != __last1 && __first2 != __last2)
38555 {
38556 if (__comp(*__first2, *__first1))
38557 {
38558 *__result = *__first2;
38559 ++__first2;
38560 }
38561 else
38562 {
38563 *__result = *__first1;
38564 ++__first1;
38565 }
38566 ++__result;
38567 }
38568 return std::copy(__first2, __last2, std::copy(__first1, __last1,
38569 __result));
38570 }
38571 # 5592 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38572 template<typename _RandomAccessIterator>
38573 inline void
38574 stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
38575 {
38576 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38577 _ValueType;
38578 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
38579 _DistanceType;
38580
38581
38582
38583
38584
38585 ;
38586
38587 _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first,
38588 __last);
38589 if (__buf.begin() == 0)
38590 std::__inplace_stable_sort(__first, __last);
38591 else
38592 std::__stable_sort_adaptive(__first, __last, __buf.begin(),
38593 _DistanceType(__buf.size()));
38594 }
38595 # 5634 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38596 template<typename _RandomAccessIterator, typename _Compare>
38597 inline void
38598 stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
38599 _Compare __comp)
38600 {
38601 typedef typename iterator_traits<_RandomAccessIterator>::value_type
38602 _ValueType;
38603 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
38604 _DistanceType;
38605
38606
38607
38608
38609
38610
38611
38612 ;
38613
38614 _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first,
38615 __last);
38616 if (__buf.begin() == 0)
38617 std::__inplace_stable_sort(__first, __last, __comp);
38618 else
38619 std::__stable_sort_adaptive(__first, __last, __buf.begin(),
38620 _DistanceType(__buf.size()), __comp);
38621 }
38622 # 5680 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38623 template<typename _InputIterator1, typename _InputIterator2,
38624 typename _OutputIterator>
38625 _OutputIterator
38626 set_union(_InputIterator1 __first1, _InputIterator1 __last1,
38627 _InputIterator2 __first2, _InputIterator2 __last2,
38628 _OutputIterator __result)
38629 {
38630 typedef typename iterator_traits<_InputIterator1>::value_type
38631 _ValueType1;
38632 typedef typename iterator_traits<_InputIterator2>::value_type
38633 _ValueType2;
38634
38635
38636
38637
38638
38639
38640
38641
38642
38643
38644 ;
38645 ;
38646
38647 while (__first1 != __last1 && __first2 != __last2)
38648 {
38649 if (*__first1 < *__first2)
38650 {
38651 *__result = *__first1;
38652 ++__first1;
38653 }
38654 else if (*__first2 < *__first1)
38655 {
38656 *__result = *__first2;
38657 ++__first2;
38658 }
38659 else
38660 {
38661 *__result = *__first1;
38662 ++__first1;
38663 ++__first2;
38664 }
38665 ++__result;
38666 }
38667 return std::copy(__first2, __last2, std::copy(__first1, __last1,
38668 __result));
38669 }
38670 # 5747 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38671 template<typename _InputIterator1, typename _InputIterator2,
38672 typename _OutputIterator, typename _Compare>
38673 _OutputIterator
38674 set_union(_InputIterator1 __first1, _InputIterator1 __last1,
38675 _InputIterator2 __first2, _InputIterator2 __last2,
38676 _OutputIterator __result, _Compare __comp)
38677 {
38678 typedef typename iterator_traits<_InputIterator1>::value_type
38679 _ValueType1;
38680 typedef typename iterator_traits<_InputIterator2>::value_type
38681 _ValueType2;
38682
38683
38684
38685
38686
38687
38688
38689
38690
38691
38692
38693
38694 ;
38695 ;
38696
38697 while (__first1 != __last1 && __first2 != __last2)
38698 {
38699 if (__comp(*__first1, *__first2))
38700 {
38701 *__result = *__first1;
38702 ++__first1;
38703 }
38704 else if (__comp(*__first2, *__first1))
38705 {
38706 *__result = *__first2;
38707 ++__first2;
38708 }
38709 else
38710 {
38711 *__result = *__first1;
38712 ++__first1;
38713 ++__first2;
38714 }
38715 ++__result;
38716 }
38717 return std::copy(__first2, __last2, std::copy(__first1, __last1,
38718 __result));
38719 }
38720 # 5814 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38721 template<typename _InputIterator1, typename _InputIterator2,
38722 typename _OutputIterator>
38723 _OutputIterator
38724 set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
38725 _InputIterator2 __first2, _InputIterator2 __last2,
38726 _OutputIterator __result)
38727 {
38728 typedef typename iterator_traits<_InputIterator1>::value_type
38729 _ValueType1;
38730 typedef typename iterator_traits<_InputIterator2>::value_type
38731 _ValueType2;
38732
38733
38734
38735
38736
38737
38738
38739
38740 ;
38741 ;
38742
38743 while (__first1 != __last1 && __first2 != __last2)
38744 if (*__first1 < *__first2)
38745 ++__first1;
38746 else if (*__first2 < *__first1)
38747 ++__first2;
38748 else
38749 {
38750 *__result = *__first1;
38751 ++__first1;
38752 ++__first2;
38753 ++__result;
38754 }
38755 return __result;
38756 }
38757 # 5871 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38758 template<typename _InputIterator1, typename _InputIterator2,
38759 typename _OutputIterator, typename _Compare>
38760 _OutputIterator
38761 set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
38762 _InputIterator2 __first2, _InputIterator2 __last2,
38763 _OutputIterator __result, _Compare __comp)
38764 {
38765 typedef typename iterator_traits<_InputIterator1>::value_type
38766 _ValueType1;
38767 typedef typename iterator_traits<_InputIterator2>::value_type
38768 _ValueType2;
38769
38770
38771
38772
38773
38774
38775
38776
38777
38778
38779 ;
38780 ;
38781
38782 while (__first1 != __last1 && __first2 != __last2)
38783 if (__comp(*__first1, *__first2))
38784 ++__first1;
38785 else if (__comp(*__first2, *__first1))
38786 ++__first2;
38787 else
38788 {
38789 *__result = *__first1;
38790 ++__first1;
38791 ++__first2;
38792 ++__result;
38793 }
38794 return __result;
38795 }
38796 # 5929 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38797 template<typename _InputIterator1, typename _InputIterator2,
38798 typename _OutputIterator>
38799 _OutputIterator
38800 set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
38801 _InputIterator2 __first2, _InputIterator2 __last2,
38802 _OutputIterator __result)
38803 {
38804 typedef typename iterator_traits<_InputIterator1>::value_type
38805 _ValueType1;
38806 typedef typename iterator_traits<_InputIterator2>::value_type
38807 _ValueType2;
38808
38809
38810
38811
38812
38813
38814
38815
38816 ;
38817 ;
38818
38819 while (__first1 != __last1 && __first2 != __last2)
38820 if (*__first1 < *__first2)
38821 {
38822 *__result = *__first1;
38823 ++__first1;
38824 ++__result;
38825 }
38826 else if (*__first2 < *__first1)
38827 ++__first2;
38828 else
38829 {
38830 ++__first1;
38831 ++__first2;
38832 }
38833 return std::copy(__first1, __last1, __result);
38834 }
38835 # 5990 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38836 template<typename _InputIterator1, typename _InputIterator2,
38837 typename _OutputIterator, typename _Compare>
38838 _OutputIterator
38839 set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
38840 _InputIterator2 __first2, _InputIterator2 __last2,
38841 _OutputIterator __result, _Compare __comp)
38842 {
38843 typedef typename iterator_traits<_InputIterator1>::value_type
38844 _ValueType1;
38845 typedef typename iterator_traits<_InputIterator2>::value_type
38846 _ValueType2;
38847
38848
38849
38850
38851
38852
38853
38854
38855
38856
38857 ;
38858 ;
38859
38860 while (__first1 != __last1 && __first2 != __last2)
38861 if (__comp(*__first1, *__first2))
38862 {
38863 *__result = *__first1;
38864 ++__first1;
38865 ++__result;
38866 }
38867 else if (__comp(*__first2, *__first1))
38868 ++__first2;
38869 else
38870 {
38871 ++__first1;
38872 ++__first2;
38873 }
38874 return std::copy(__first1, __last1, __result);
38875 }
38876 # 6048 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38877 template<typename _InputIterator1, typename _InputIterator2,
38878 typename _OutputIterator>
38879 _OutputIterator
38880 set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
38881 _InputIterator2 __first2, _InputIterator2 __last2,
38882 _OutputIterator __result)
38883 {
38884 typedef typename iterator_traits<_InputIterator1>::value_type
38885 _ValueType1;
38886 typedef typename iterator_traits<_InputIterator2>::value_type
38887 _ValueType2;
38888
38889
38890
38891
38892
38893
38894
38895
38896
38897
38898 ;
38899 ;
38900
38901 while (__first1 != __last1 && __first2 != __last2)
38902 if (*__first1 < *__first2)
38903 {
38904 *__result = *__first1;
38905 ++__first1;
38906 ++__result;
38907 }
38908 else if (*__first2 < *__first1)
38909 {
38910 *__result = *__first2;
38911 ++__first2;
38912 ++__result;
38913 }
38914 else
38915 {
38916 ++__first1;
38917 ++__first2;
38918 }
38919 return std::copy(__first2, __last2, std::copy(__first1,
38920 __last1, __result));
38921 }
38922 # 6114 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38923 template<typename _InputIterator1, typename _InputIterator2,
38924 typename _OutputIterator, typename _Compare>
38925 _OutputIterator
38926 set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
38927 _InputIterator2 __first2, _InputIterator2 __last2,
38928 _OutputIterator __result,
38929 _Compare __comp)
38930 {
38931 typedef typename iterator_traits<_InputIterator1>::value_type
38932 _ValueType1;
38933 typedef typename iterator_traits<_InputIterator2>::value_type
38934 _ValueType2;
38935
38936
38937
38938
38939
38940
38941
38942
38943
38944
38945
38946
38947 ;
38948 ;
38949
38950 while (__first1 != __last1 && __first2 != __last2)
38951 if (__comp(*__first1, *__first2))
38952 {
38953 *__result = *__first1;
38954 ++__first1;
38955 ++__result;
38956 }
38957 else if (__comp(*__first2, *__first1))
38958 {
38959 *__result = *__first2;
38960 ++__first2;
38961 ++__result;
38962 }
38963 else
38964 {
38965 ++__first1;
38966 ++__first2;
38967 }
38968 return std::copy(__first2, __last2,
38969 std::copy(__first1, __last1, __result));
38970 }
38971 # 6171 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38972 template<typename _ForwardIterator>
38973 _ForwardIterator
38974 min_element(_ForwardIterator __first, _ForwardIterator __last)
38975 {
38976
38977
38978
38979
38980 ;
38981
38982 if (__first == __last)
38983 return __first;
38984 _ForwardIterator __result = __first;
38985 while (++__first != __last)
38986 if (*__first < *__result)
38987 __result = __first;
38988 return __result;
38989 }
38990 # 6199 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
38991 template<typename _ForwardIterator, typename _Compare>
38992 _ForwardIterator
38993 min_element(_ForwardIterator __first, _ForwardIterator __last,
38994 _Compare __comp)
38995 {
38996
38997
38998
38999
39000
39001 ;
39002
39003 if (__first == __last)
39004 return __first;
39005 _ForwardIterator __result = __first;
39006 while (++__first != __last)
39007 if (__comp(*__first, *__result))
39008 __result = __first;
39009 return __result;
39010 }
39011 # 6227 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
39012 template<typename _ForwardIterator>
39013 _ForwardIterator
39014 max_element(_ForwardIterator __first, _ForwardIterator __last)
39015 {
39016
39017
39018
39019
39020 ;
39021
39022 if (__first == __last)
39023 return __first;
39024 _ForwardIterator __result = __first;
39025 while (++__first != __last)
39026 if (*__result < *__first)
39027 __result = __first;
39028 return __result;
39029 }
39030 # 6255 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_algo.h" 3
39031 template<typename _ForwardIterator, typename _Compare>
39032 _ForwardIterator
39033 max_element(_ForwardIterator __first, _ForwardIterator __last,
39034 _Compare __comp)
39035 {
39036
39037
39038
39039
39040
39041 ;
39042
39043 if (__first == __last) return __first;
39044 _ForwardIterator __result = __first;
39045 while (++__first != __last)
39046 if (__comp(*__result, *__first))
39047 __result = __first;
39048 return __result;
39049 }
39050
39051
39052 }
39053 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/algorithm" 2 3
39054 # 30 "../boost/iterator/iterator_concepts.hpp" 2
39055
39056 # 1 "../boost/concept/detail/concept_def.hpp" 1
39057 # 32 "../boost/iterator/iterator_concepts.hpp" 2
39058
39059 namespace boost_concepts
39060 {
39061
39062
39063
39064
39065
39066
39067
39068 template < typename Iterator > struct ReadableIterator; template < typename Iterator > struct ReadableIteratorConcept : ReadableIterator< Iterator > { }; template < typename Iterator > struct ReadableIterator
39069 : boost::Assignable<Iterator>
39070 , boost::CopyConstructible<Iterator>
39071
39072 {
39073 typedef typename boost::detail::iterator_traits<Iterator>::value_type value_type;
39074 typedef typename boost::detail::iterator_traits<Iterator>::reference reference;
39075
39076 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ReadableIterator>)>::failed> boost_concept_check50; ~ReadableIterator()
39077 {
39078
39079 value_type v = *i;
39080 boost::ignore_unused_variable_warning(v);
39081 }
39082 private:
39083 Iterator i;
39084 };
39085
39086 template <
39087 typename Iterator
39088 , typename ValueType = typename boost::detail::iterator_traits<Iterator>::value_type
39089 >
39090 struct WritableIterator
39091 : boost::CopyConstructible<Iterator>
39092 {
39093 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<WritableIterator>)>::failed> boost_concept_check67; ~WritableIterator()
39094 {
39095 *i = v;
39096 }
39097 private:
39098 ValueType v;
39099 Iterator i;
39100 };
39101
39102 template <
39103 typename Iterator
39104 , typename ValueType = typename boost::detail::iterator_traits<Iterator>::value_type
39105 >
39106 struct WritableIteratorConcept : WritableIterator<Iterator,ValueType> {};
39107
39108 template < typename Iterator > struct SwappableIterator; template < typename Iterator > struct SwappableIteratorConcept : SwappableIterator< Iterator > { }; template < typename Iterator > struct SwappableIterator
39109 {
39110 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SwappableIterator>)>::failed> boost_concept_check84; ~SwappableIterator()
39111 {
39112 std::iter_swap(i1, i2);
39113 }
39114 private:
39115 Iterator i1;
39116 Iterator i2;
39117 };
39118
39119 template < typename Iterator > struct LvalueIterator; template < typename Iterator > struct LvalueIteratorConcept : LvalueIterator< Iterator > { }; template < typename Iterator > struct LvalueIterator
39120 {
39121 typedef typename boost::detail::iterator_traits<Iterator>::value_type value_type;
39122
39123 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LvalueIterator>)>::failed> boost_concept_check97; ~LvalueIterator()
39124 {
39125 value_type& r = const_cast<value_type&>(*i);
39126 boost::ignore_unused_variable_warning(r);
39127 }
39128 private:
39129 Iterator i;
39130 };
39131
39132
39133
39134
39135
39136 template < typename Iterator > struct IncrementableIterator; template < typename Iterator > struct IncrementableIteratorConcept : IncrementableIterator< Iterator > { }; template < typename Iterator > struct IncrementableIterator
39137 : boost::Assignable<Iterator>
39138 , boost::CopyConstructible<Iterator>
39139 {
39140 typedef typename boost::iterator_traversal<Iterator>::type traversal_category;
39141
39142 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< traversal_category , boost::incrementable_traversal_tag >)>::failed>
39143
39144
39145
39146 boost_concept_check120;
39147
39148 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<IncrementableIterator>)>::failed> boost_concept_check122; ~IncrementableIterator()
39149 {
39150 ++i;
39151 (void)i++;
39152 }
39153 private:
39154 Iterator i;
39155 };
39156
39157 template < typename Iterator > struct SinglePassIterator; template < typename Iterator > struct SinglePassIteratorConcept : SinglePassIterator< Iterator > { }; template < typename Iterator > struct SinglePassIterator
39158 : IncrementableIterator<Iterator>
39159 , boost::EqualityComparable<Iterator>
39160
39161 {
39162 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename SinglePassIterator::traversal_category , boost::single_pass_traversal_tag > )>::failed>
39163
39164
39165
39166 boost_concept_check140;
39167 };
39168
39169 template < typename Iterator > struct ForwardTraversal; template < typename Iterator > struct ForwardTraversalConcept : ForwardTraversal< Iterator > { }; template < typename Iterator > struct ForwardTraversal
39170 : SinglePassIterator<Iterator>
39171 , boost::DefaultConstructible<Iterator>
39172 {
39173 typedef typename boost::detail::iterator_traits<Iterator>::difference_type difference_type;
39174
39175 enum { mpl_assertion_in_line_149 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (boost::is_integral<difference_type>))0, 1 ) ) ) };
39176 enum { mpl_assert_rel_value150 = (std::numeric_limits<difference_type>::is_signed == true) }; enum { mpl_assertion_in_line_150 = sizeof( boost::mpl::assertion_failed<mpl_assert_rel_value150>( (boost::mpl::failed ************ ( boost::mpl::assert_relation< boost::mpl::assert_::relations( sizeof( boost::mpl::assert_::arg == boost::mpl::assert_::arg ) ) , std::numeric_limits<difference_type>::is_signed , true >::************)) 0 ) ) };
39177
39178 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename ForwardTraversal::traversal_category , boost::forward_traversal_tag > )>::failed>
39179
39180
39181
39182 boost_concept_check156;
39183 };
39184
39185 template < typename Iterator > struct BidirectionalTraversal; template < typename Iterator > struct BidirectionalTraversalConcept : BidirectionalTraversal< Iterator > { }; template < typename Iterator > struct BidirectionalTraversal
39186 : ForwardTraversal<Iterator>
39187 {
39188 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename BidirectionalTraversal::traversal_category , boost::bidirectional_traversal_tag > )>::failed>
39189
39190
39191
39192 boost_concept_check166;
39193
39194 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BidirectionalTraversal>)>::failed> boost_concept_check168; ~BidirectionalTraversal()
39195 {
39196 --i;
39197 (void)i--;
39198 }
39199 private:
39200 Iterator i;
39201 };
39202
39203 template < typename Iterator > struct RandomAccessTraversal; template < typename Iterator > struct RandomAccessTraversalConcept : RandomAccessTraversal< Iterator > { }; template < typename Iterator > struct RandomAccessTraversal
39204 : BidirectionalTraversal<Iterator>
39205 {
39206 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename RandomAccessTraversal::traversal_category , boost::random_access_traversal_tag > )>::failed>
39207
39208
39209
39210 boost_concept_check184;
39211
39212 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessTraversal>)>::failed> boost_concept_check186; ~RandomAccessTraversal()
39213 {
39214 i += n;
39215 i = i + n;
39216 i = n + i;
39217 i -= n;
39218 i = i - n;
39219 n = i - j;
39220 }
39221
39222 private:
39223 typename BidirectionalTraversal<Iterator>::difference_type n;
39224 Iterator i, j;
39225 };
39226
39227
39228
39229
39230 namespace detail
39231 {
39232 template <typename Iterator1, typename Iterator2>
39233 void interop_single_pass_constraints(Iterator1 const& i1, Iterator2 const& i2)
39234 {
39235 bool b;
39236 b = i1 == i2;
39237 b = i1 != i2;
39238
39239 b = i2 == i1;
39240 b = i2 != i1;
39241 boost::ignore_unused_variable_warning(b);
39242 }
39243
39244 template <typename Iterator1, typename Iterator2>
39245 void interop_rand_access_constraints(
39246 Iterator1 const& i1, Iterator2 const& i2,
39247 boost::random_access_traversal_tag, boost::random_access_traversal_tag)
39248 {
39249 bool b;
39250 typename boost::detail::iterator_traits<Iterator2>::difference_type n;
39251 b = i1 < i2;
39252 b = i1 <= i2;
39253 b = i1 > i2;
39254 b = i1 >= i2;
39255 n = i1 - i2;
39256
39257 b = i2 < i1;
39258 b = i2 <= i1;
39259 b = i2 > i1;
39260 b = i2 >= i1;
39261 n = i2 - i1;
39262 boost::ignore_unused_variable_warning(b);
39263 boost::ignore_unused_variable_warning(n);
39264 }
39265
39266 template <typename Iterator1, typename Iterator2>
39267 void interop_rand_access_constraints(
39268 Iterator1 const&, Iterator2 const&,
39269 boost::single_pass_traversal_tag, boost::single_pass_traversal_tag)
39270 { }
39271
39272 }
39273
39274 template < typename Iterator , typename ConstIterator > struct InteroperableIterator; template < typename Iterator , typename ConstIterator > struct InteroperableIteratorConcept : InteroperableIterator< Iterator, ConstIterator > { }; template < typename Iterator , typename ConstIterator > struct InteroperableIterator
39275 {
39276 private:
39277 typedef typename boost::detail::pure_traversal_tag<
39278 typename boost::iterator_traversal<
39279 Iterator
39280 >::type
39281 >::type traversal_category;
39282
39283 typedef typename boost::detail::pure_traversal_tag<
39284 typename boost::iterator_traversal<
39285 ConstIterator
39286 >::type
39287 >::type const_traversal_category;
39288
39289 public:
39290 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassIterator<Iterator>)>::failed> boost_concept_check264;
39291 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassIterator<ConstIterator>)>::failed> boost_concept_check265;
39292
39293 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<InteroperableIterator>)>::failed> boost_concept_check267; ~InteroperableIterator()
39294 {
39295 detail::interop_single_pass_constraints(i, ci);
39296 detail::interop_rand_access_constraints(i, ci, traversal_category(), const_traversal_category());
39297
39298 ci = i;
39299 }
39300
39301 private:
39302 Iterator i;
39303 ConstIterator ci;
39304 };
39305
39306 }
39307
39308 # 1 "../boost/concept/detail/concept_undef.hpp" 1
39309 # 283 "../boost/iterator/iterator_concepts.hpp" 2
39310 # 21 "../boost/range/concepts.hpp" 2
39311
39312
39313
39314 # 1 "../boost/range/value_type.hpp" 1
39315 # 27 "../boost/range/value_type.hpp"
39316 namespace boost
39317 {
39318 template< class T >
39319 struct range_value : iterator_value< typename range_iterator<T>::type >
39320 { };
39321 }
39322 # 25 "../boost/range/concepts.hpp" 2
39323 # 1 "../boost/range/detail/misc_concept.hpp" 1
39324 # 13 "../boost/range/detail/misc_concept.hpp"
39325 namespace boost
39326 {
39327 namespace range_detail
39328 {
39329 template<typename T1, typename T2>
39330 class SameTypeConcept
39331 {
39332 public:
39333 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SameTypeConcept>)>::failed> boost_concept_check21; ~SameTypeConcept()
39334 {
39335 same_type(a,b);
39336 }
39337 private:
39338 template<typename T> void same_type(T,T) {}
39339 T1 a;
39340 T2 b;
39341 };
39342 }
39343 }
39344 # 26 "../boost/range/concepts.hpp" 2
39345 # 59 "../boost/range/concepts.hpp"
39346 namespace boost {
39347
39348 namespace range_detail {
39349 # 112 "../boost/range/concepts.hpp"
39350 template<class Iterator>
39351 struct IncrementableIteratorConcept : CopyConstructible<Iterator>
39352 {
39353
39354 typedef typename iterator_traversal<Iterator>::type traversal_category;
39355
39356 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< traversal_category, incrementable_traversal_tag >)>::failed>
39357
39358
39359
39360 boost_concept_check122;
39361
39362 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<IncrementableIteratorConcept>)>::failed> boost_concept_check124; ~IncrementableIteratorConcept()
39363 {
39364 ++i;
39365 (void)i++;
39366 }
39367 private:
39368 Iterator i;
39369
39370 };
39371
39372 template<class Iterator>
39373 struct SinglePassIteratorConcept
39374 : IncrementableIteratorConcept<Iterator>
39375 , EqualityComparable<Iterator>
39376 {
39377
39378 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename SinglePassIteratorConcept::traversal_category, single_pass_traversal_tag >)>::failed>
39379
39380
39381
39382 boost_concept_check144;
39383
39384 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SinglePassIteratorConcept>)>::failed> boost_concept_check146; ~SinglePassIteratorConcept()
39385 {
39386 Iterator i2(++i);
39387 boost::ignore_unused_variable_warning(i2);
39388
39389
39390
39391
39392
39393 (void)(i++);
39394
39395 typename boost::detail::iterator_traits<Iterator>::reference r1(*i);
39396 boost::ignore_unused_variable_warning(r1);
39397
39398 typename boost::detail::iterator_traits<Iterator>::reference r2(*(++i));
39399 boost::ignore_unused_variable_warning(r2);
39400 }
39401 private:
39402 Iterator i;
39403
39404 };
39405
39406 template<class Iterator>
39407 struct ForwardIteratorConcept
39408 : SinglePassIteratorConcept<Iterator>
39409 , DefaultConstructible<Iterator>
39410 {
39411
39412 typedef typename boost::detail::iterator_traits<Iterator>::difference_type difference_type;
39413
39414 enum { mpl_assertion_in_line_176 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (is_integral<difference_type>))0, 1 ) ) ) };
39415 enum { mpl_assert_rel_value177 = (std::numeric_limits<difference_type>::is_signed == true) }; enum { mpl_assertion_in_line_177 = sizeof( boost::mpl::assertion_failed<mpl_assert_rel_value177>( (boost::mpl::failed ************ ( boost::mpl::assert_relation< boost::mpl::assert_::relations( sizeof( boost::mpl::assert_::arg == boost::mpl::assert_::arg ) ) , std::numeric_limits<difference_type>::is_signed , true >::************)) 0 ) ) };
39416
39417 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename ForwardIteratorConcept::traversal_category, forward_traversal_tag >)>::failed>
39418
39419
39420
39421 boost_concept_check183;
39422
39423 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ForwardIteratorConcept>)>::failed> boost_concept_check185; ~ForwardIteratorConcept()
39424 {
39425
39426
39427
39428
39429 Iterator i2(i++);
39430 boost::ignore_unused_variable_warning(i2);
39431 typename boost::detail::iterator_traits<Iterator>::reference r(*(i++));
39432 boost::ignore_unused_variable_warning(r);
39433 }
39434 private:
39435 Iterator i;
39436
39437 };
39438
39439 template<class Iterator>
39440 struct BidirectionalIteratorConcept
39441 : ForwardIteratorConcept<Iterator>
39442 {
39443
39444 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename BidirectionalIteratorConcept::traversal_category, bidirectional_traversal_tag >)>::failed>
39445
39446
39447
39448 boost_concept_check210;
39449
39450 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BidirectionalIteratorConcept>)>::failed> boost_concept_check212; ~BidirectionalIteratorConcept()
39451 {
39452 --i;
39453 (void)i--;
39454 }
39455 private:
39456 Iterator i;
39457
39458 };
39459
39460 template<class Iterator>
39461 struct RandomAccessIteratorConcept
39462 : BidirectionalIteratorConcept<Iterator>
39463 {
39464
39465 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename RandomAccessIteratorConcept::traversal_category, random_access_traversal_tag >)>::failed>
39466
39467
39468
39469 boost_concept_check231;
39470
39471 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessIteratorConcept>)>::failed> boost_concept_check233; ~RandomAccessIteratorConcept()
39472 {
39473 i += n;
39474 i = i + n;
39475 i = n + i;
39476 i -= n;
39477 i = i - n;
39478 n = i - j;
39479 }
39480 private:
39481 typename RandomAccessIteratorConcept::difference_type n;
39482 Iterator i;
39483 Iterator j;
39484
39485 };
39486
39487 }
39488
39489
39490 template<class T>
39491 struct SinglePassRangeConcept
39492 {
39493
39494 typedef typename range_iterator<T const>::type const_iterator;
39495 typedef typename range_iterator<T>::type iterator;
39496
39497 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::SinglePassIteratorConcept<iterator>)>::failed> boost_concept_check259;
39498 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::SinglePassIteratorConcept<const_iterator>)>::failed> boost_concept_check260;
39499
39500 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SinglePassRangeConcept>)>::failed> boost_concept_check262; ~SinglePassRangeConcept()
39501 {
39502
39503
39504
39505 iterator i1 = boost::begin(*m_range);
39506 iterator i2 = boost::end(*m_range);
39507
39508 ignore_unused_variable_warning(i1);
39509 ignore_unused_variable_warning(i2);
39510
39511 const_constraints(*m_range);
39512 }
39513
39514 private:
39515 void const_constraints(const T& const_range)
39516 {
39517 const_iterator ci1 = boost::begin(const_range);
39518 const_iterator ci2 = boost::end(const_range);
39519
39520 ignore_unused_variable_warning(ci1);
39521 ignore_unused_variable_warning(ci2);
39522 }
39523
39524
39525
39526
39527
39528 T* m_range;
39529
39530 };
39531
39532
39533 template<class T>
39534 struct ForwardRangeConcept : SinglePassRangeConcept<T>
39535 {
39536
39537 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::ForwardIteratorConcept<typename ForwardRangeConcept::iterator>)>::failed> boost_concept_check299;
39538 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::ForwardIteratorConcept<typename ForwardRangeConcept::const_iterator>)>::failed> boost_concept_check300;
39539
39540 };
39541
39542 template<class Range>
39543 struct WriteableRangeConcept
39544 {
39545
39546 typedef typename range_iterator<Range>::type iterator;
39547
39548 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<WriteableRangeConcept>)>::failed> boost_concept_check310; ~WriteableRangeConcept()
39549 {
39550 *i = v;
39551 }
39552 private:
39553 iterator i;
39554 typename range_value<Range>::type v;
39555
39556 };
39557
39558
39559 template<class T>
39560 struct WriteableForwardRangeConcept
39561 : ForwardRangeConcept<T>
39562 , WriteableRangeConcept<T>
39563 {
39564 };
39565
39566
39567 template<class T>
39568 struct BidirectionalRangeConcept : ForwardRangeConcept<T>
39569 {
39570
39571 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BidirectionalIteratorConcept<typename BidirectionalRangeConcept::iterator>)>::failed> boost_concept_check333;
39572 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BidirectionalIteratorConcept<typename BidirectionalRangeConcept::const_iterator>)>::failed> boost_concept_check334;
39573
39574 };
39575
39576
39577 template<class T>
39578 struct WriteableBidirectionalRangeConcept
39579 : BidirectionalRangeConcept<T>
39580 , WriteableRangeConcept<T>
39581 {
39582 };
39583
39584
39585 template<class T>
39586 struct RandomAccessRangeConcept : BidirectionalRangeConcept<T>
39587 {
39588
39589 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(RandomAccessIteratorConcept<typename RandomAccessRangeConcept::iterator>)>::failed> boost_concept_check351;
39590 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(RandomAccessIteratorConcept<typename RandomAccessRangeConcept::const_iterator>)>::failed> boost_concept_check352;
39591
39592 };
39593
39594
39595 template<class T>
39596 struct WriteableRandomAccessRangeConcept
39597 : RandomAccessRangeConcept<T>
39598 , WriteableRangeConcept<T>
39599 {
39600 };
39601
39602 }
39603 # 15 "../boost/range/algorithm/equal.hpp" 2
39604
39605
39606 namespace boost
39607 {
39608 namespace range_detail
39609 {
39610
39611
39612 template< class SinglePassTraversalReadableIterator1,
39613 class SinglePassTraversalReadableIterator2,
39614 class IteratorCategoryTag1,
39615 class IteratorCategoryTag2 >
39616 inline bool equal_impl( SinglePassTraversalReadableIterator1 first1,
39617 SinglePassTraversalReadableIterator1 last1,
39618 SinglePassTraversalReadableIterator2 first2,
39619 SinglePassTraversalReadableIterator2 last2,
39620 IteratorCategoryTag1,
39621 IteratorCategoryTag2 )
39622 {
39623 do
39624 {
39625
39626
39627
39628 if (first1 == last1)
39629 return first2 == last2;
39630
39631
39632
39633
39634 if (first2 == last2)
39635 return false;
39636
39637
39638 } while(*first1++ == *first2++);
39639
39640
39641
39642 return false;
39643 }
39644
39645 template< class SinglePassTraversalReadableIterator1,
39646 class SinglePassTraversalReadableIterator2,
39647 class IteratorCategoryTag1,
39648 class IteratorCategoryTag2,
39649 class BinaryPredicate >
39650 inline bool equal_impl( SinglePassTraversalReadableIterator1 first1,
39651 SinglePassTraversalReadableIterator1 last1,
39652 SinglePassTraversalReadableIterator2 first2,
39653 SinglePassTraversalReadableIterator2 last2,
39654 BinaryPredicate pred,
39655 IteratorCategoryTag1,
39656 IteratorCategoryTag2 )
39657 {
39658 do
39659 {
39660
39661
39662
39663 if (first1 == last1)
39664 return first2 == last2;
39665
39666
39667
39668
39669 if (first2 == last2)
39670 return false;
39671
39672
39673 } while(pred(*first1++, *first2++));
39674
39675
39676
39677 return false;
39678 }
39679
39680
39681
39682 template< class RandomAccessTraversalReadableIterator1,
39683 class RandomAccessTraversalReadableIterator2 >
39684 inline bool equal_impl( RandomAccessTraversalReadableIterator1 first1,
39685 RandomAccessTraversalReadableIterator1 last1,
39686 RandomAccessTraversalReadableIterator2 first2,
39687 RandomAccessTraversalReadableIterator2 last2,
39688 std::random_access_iterator_tag,
39689 std::random_access_iterator_tag )
39690 {
39691 return ((last1 - first1) == (last2 - first2))
39692 && std::equal(first1, last1, first2);
39693 }
39694
39695 template< class RandomAccessTraversalReadableIterator1,
39696 class RandomAccessTraversalReadableIterator2,
39697 class BinaryPredicate >
39698 inline bool equal_impl( RandomAccessTraversalReadableIterator1 first1,
39699 RandomAccessTraversalReadableIterator1 last1,
39700 RandomAccessTraversalReadableIterator2 first2,
39701 RandomAccessTraversalReadableIterator2 last2,
39702 BinaryPredicate pred )
39703 {
39704 return ((last1 - first1) == (last2 - first2))
39705 && std::equal(first1, last1, first2, pred);
39706 }
39707
39708 template< class SinglePassTraversalReadableIterator1,
39709 class SinglePassTraversalReadableIterator2 >
39710 inline bool equal( SinglePassTraversalReadableIterator1 first1,
39711 SinglePassTraversalReadableIterator1 last1,
39712 SinglePassTraversalReadableIterator2 first2,
39713 SinglePassTraversalReadableIterator2 last2 )
39714 {
39715 typename std::iterator_traits< SinglePassTraversalReadableIterator1 >::iterator_category tag1;
39716 typename std::iterator_traits< SinglePassTraversalReadableIterator2 >::iterator_category tag2;
39717
39718 return equal_impl(first1, last1, first2, last2, tag1, tag2);
39719 }
39720
39721 template< class SinglePassTraversalReadableIterator1,
39722 class SinglePassTraversalReadableIterator2,
39723 class BinaryPredicate >
39724 inline bool equal( SinglePassTraversalReadableIterator1 first1,
39725 SinglePassTraversalReadableIterator1 last1,
39726 SinglePassTraversalReadableIterator2 first2,
39727 SinglePassTraversalReadableIterator2 last2,
39728 BinaryPredicate pred )
39729 {
39730 typename std::iterator_traits< SinglePassTraversalReadableIterator1 >::iterator_category tag1;
39731 typename std::iterator_traits< SinglePassTraversalReadableIterator2 >::iterator_category tag2;
39732
39733 return equal_impl(first1, last1, first2, last2, pred, tag1, tag2);
39734 }
39735
39736 }
39737
39738 namespace range
39739 {
39740 # 159 "../boost/range/algorithm/equal.hpp"
39741 template< class SinglePassRange1, class SinglePassRange2 >
39742 inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2 )
39743 {
39744 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check162;
39745 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check163;
39746
39747 return ::boost::range_detail::equal(
39748 ::boost::begin(rng1), ::boost::end(rng1),
39749 ::boost::begin(rng2), ::boost::end(rng2) );
39750 }
39751
39752
39753 template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
39754 inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2,
39755 BinaryPredicate pred )
39756 {
39757 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check175;
39758 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check176;
39759
39760 return ::boost::range_detail::equal(
39761 ::boost::begin(rng1), ::boost::end(rng1),
39762 ::boost::begin(rng2), ::boost::end(rng2),
39763 pred);
39764 }
39765
39766 }
39767 using range::equal;
39768 }
39769 # 30 "../boost/range/iterator_range_core.hpp" 2
39770 # 1 "../boost/range/detail/safe_bool.hpp" 1
39771 # 16 "../boost/range/detail/safe_bool.hpp"
39772 namespace boost
39773 {
39774 namespace range_detail
39775 {
39776
39777 template<class DataMemberPtr>
39778 class safe_bool
39779 {
39780 public:
39781 typedef safe_bool this_type;
39782 # 56 "../boost/range/detail/safe_bool.hpp"
39783 typedef DataMemberPtr unspecified_bool_type;
39784 static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr p)
39785 {
39786 return x ? p : 0;
39787 }
39788
39789 private:
39790 safe_bool();
39791 safe_bool(const safe_bool&);
39792 void operator=(const safe_bool&);
39793 ~safe_bool();
39794 };
39795
39796 }
39797 }
39798 # 31 "../boost/range/iterator_range_core.hpp" 2
39799
39800
39801
39802 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
39803 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
39804
39805 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
39806
39807
39808 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
39809 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
39810 # 35 "../boost/range/iterator_range_core.hpp" 2
39811 # 43 "../boost/range/iterator_range_core.hpp"
39812 namespace boost
39813 {
39814 namespace iterator_range_detail
39815 {
39816
39817
39818
39819
39820 template<class IteratorT>
39821 struct iterator_range_impl {
39822 template< class ForwardRange >
39823 static IteratorT adl_begin( ForwardRange& r )
39824 {
39825 return static_cast<IteratorT>( boost::begin( r ) );
39826 }
39827
39828 template< class ForwardRange >
39829 static IteratorT adl_end( ForwardRange& r )
39830 {
39831 return static_cast<IteratorT>( boost::end( r ) );
39832 }
39833 };
39834
39835 template< class Left, class Right >
39836 inline bool less_than( const Left& l, const Right& r )
39837 {
39838 return std::lexicographical_compare( boost::begin(l),
39839 boost::end(l),
39840 boost::begin(r),
39841 boost::end(r) );
39842 }
39843
39844 template< class Left, class Right >
39845 inline bool greater_than( const Left& l, const Right& r )
39846 {
39847 return less_than(r,l);
39848 }
39849
39850 template< class Left, class Right >
39851 inline bool less_or_equal_than( const Left& l, const Right& r )
39852 {
39853 return !iterator_range_detail::less_than(r,l);
39854 }
39855
39856 template< class Left, class Right >
39857 inline bool greater_or_equal_than( const Left& l, const Right& r )
39858 {
39859 return !iterator_range_detail::less_than(l,r);
39860 }
39861
39862
39863
39864 template< class Left, class Right >
39865 inline bool equal(const Left& l, const Right& r)
39866 {
39867 return boost::equal(l, r);
39868 }
39869
39870 struct range_tag { };
39871 struct const_range_tag { };
39872 }
39873 # 124 "../boost/range/iterator_range_core.hpp"
39874 template<class IteratorT>
39875 class iterator_range
39876 {
39877 typedef range_detail::safe_bool< IteratorT iterator_range<IteratorT>::* > safe_bool_t;
39878 protected:
39879
39880 typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
39881 public:
39882
39883 typedef iterator_range<IteratorT> type;
39884 typedef typename safe_bool_t::unspecified_bool_type unspecified_bool_type;
39885
39886
39887
39888 typedef typename
39889 iterator_value<IteratorT>::type value_type;
39890
39891
39892 typedef typename
39893 iterator_difference<IteratorT>::type difference_type;
39894
39895
39896 typedef std::size_t size_type;
39897
39898
39899 typedef iterator_range<IteratorT> this_type;
39900
39901
39902
39903
39904
39905
39906 typedef typename
39907 iterator_reference<IteratorT>::type reference;
39908
39909
39910
39911
39912
39913
39914 typedef IteratorT const_iterator;
39915
39916 typedef IteratorT iterator;
39917
39918 private:
39919 typedef typename
39920 boost::mpl::if_< boost::is_abstract<value_type>,
39921 reference, value_type >::type abstract_value_type;
39922
39923 public:
39924 iterator_range() : m_Begin( iterator() ), m_End( iterator() )
39925 { }
39926
39927
39928 template< class Iterator >
39929 iterator_range( Iterator Begin, Iterator End ) :
39930 m_Begin(Begin), m_End(End)
39931 {}
39932
39933
39934 template< class Range >
39935 iterator_range( const Range& r ) :
39936 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
39937 {}
39938
39939
39940 template< class Range >
39941 iterator_range( Range& r ) :
39942 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
39943 {}
39944
39945
39946 template< class Range >
39947 iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
39948 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
39949 {}
39950
39951
39952 template< class Range >
39953 iterator_range( Range& r, iterator_range_detail::range_tag ) :
39954 m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
39955 {}
39956
39957
39958 this_type& operator=( const this_type& r )
39959 {
39960 m_Begin = r.begin();
39961 m_End = r.end();
39962 return *this;
39963 }
39964
39965
39966 template< class Iterator >
39967 iterator_range& operator=( const iterator_range<Iterator>& r )
39968 {
39969 m_Begin = r.begin();
39970 m_End = r.end();
39971 return *this;
39972 }
39973
39974 template< class ForwardRange >
39975 iterator_range& operator=( ForwardRange& r )
39976 {
39977 m_Begin = impl::adl_begin( r );
39978 m_End = impl::adl_end( r );
39979 return *this;
39980 }
39981
39982 template< class ForwardRange >
39983 iterator_range& operator=( const ForwardRange& r )
39984 {
39985 m_Begin = impl::adl_begin( r );
39986 m_End = impl::adl_end( r );
39987 return *this;
39988 }
39989
39990 IteratorT begin() const
39991 {
39992 return m_Begin;
39993 }
39994
39995 IteratorT end() const
39996 {
39997 return m_End;
39998 }
39999
40000 difference_type size() const
40001 {
40002 return m_End - m_Begin;
40003 }
40004
40005 bool empty() const
40006 {
40007 return m_Begin == m_End;
40008 }
40009
40010 operator unspecified_bool_type() const
40011 {
40012 return safe_bool_t::to_unspecified_bool(m_Begin != m_End, &iterator_range::m_Begin);
40013 }
40014
40015 bool operator!() const
40016 {
40017 return empty();
40018 }
40019
40020 bool equal( const iterator_range& r ) const
40021 {
40022 return m_Begin == r.m_Begin && m_End == r.m_End;
40023 }
40024 # 310 "../boost/range/iterator_range_core.hpp"
40025 public:
40026 reference front() const
40027 {
40028 (static_cast<void> (0));
40029 return *m_Begin;
40030 }
40031
40032 reference back() const
40033 {
40034 (static_cast<void> (0));
40035 IteratorT last( m_End );
40036 return *--last;
40037 }
40038
40039
40040 void pop_front()
40041 {
40042 (static_cast<void> (0));
40043 ++m_Begin;
40044 }
40045
40046
40047 void pop_back()
40048 {
40049 (static_cast<void> (0));
40050 --m_End;
40051 }
40052
40053 reference operator[]( difference_type at ) const
40054 {
40055 (static_cast<void> (0));
40056 return m_Begin[at];
40057 }
40058
40059
40060
40061
40062
40063
40064 abstract_value_type operator()( difference_type at ) const
40065 {
40066 (static_cast<void> (0));
40067 return m_Begin[at];
40068 }
40069
40070 iterator_range& advance_begin( difference_type n )
40071 {
40072 std::advance( m_Begin, n );
40073 return *this;
40074 }
40075
40076 iterator_range& advance_end( difference_type n )
40077 {
40078 std::advance( m_End, n );
40079 return *this;
40080 }
40081
40082 private:
40083
40084 IteratorT m_Begin;
40085 IteratorT m_End;
40086
40087 protected:
40088
40089
40090
40091
40092 typedef iterator_range iterator_range_;
40093 };
40094
40095
40096
40097
40098
40099
40100
40101 template< class IteratorT, class ForwardRange >
40102 inline bool operator==( const ForwardRange& l,
40103 const iterator_range<IteratorT>& r )
40104 {
40105 return boost::equal( l, r );
40106 }
40107
40108 template< class IteratorT, class ForwardRange >
40109 inline bool operator!=( const ForwardRange& l,
40110 const iterator_range<IteratorT>& r )
40111 {
40112 return !boost::equal( l, r );
40113 }
40114
40115 template< class IteratorT, class ForwardRange >
40116 inline bool operator<( const ForwardRange& l,
40117 const iterator_range<IteratorT>& r )
40118 {
40119 return iterator_range_detail::less_than( l, r );
40120 }
40121
40122 template< class IteratorT, class ForwardRange >
40123 inline bool operator<=( const ForwardRange& l,
40124 const iterator_range<IteratorT>& r )
40125 {
40126 return iterator_range_detail::less_or_equal_than( l, r );
40127 }
40128
40129 template< class IteratorT, class ForwardRange >
40130 inline bool operator>( const ForwardRange& l,
40131 const iterator_range<IteratorT>& r )
40132 {
40133 return iterator_range_detail::greater_than( l, r );
40134 }
40135
40136 template< class IteratorT, class ForwardRange >
40137 inline bool operator>=( const ForwardRange& l,
40138 const iterator_range<IteratorT>& r )
40139 {
40140 return iterator_range_detail::greater_or_equal_than( l, r );
40141 }
40142
40143
40144
40145 template< class Iterator1T, class Iterator2T >
40146 inline bool operator==( const iterator_range<Iterator1T>& l,
40147 const iterator_range<Iterator2T>& r )
40148 {
40149 return boost::equal( l, r );
40150 }
40151
40152 template< class IteratorT, class ForwardRange >
40153 inline bool operator==( const iterator_range<IteratorT>& l,
40154 const ForwardRange& r )
40155 {
40156 return boost::equal( l, r );
40157 }
40158
40159
40160 template< class Iterator1T, class Iterator2T >
40161 inline bool operator!=( const iterator_range<Iterator1T>& l,
40162 const iterator_range<Iterator2T>& r )
40163 {
40164 return !boost::equal( l, r );
40165 }
40166
40167 template< class IteratorT, class ForwardRange >
40168 inline bool operator!=( const iterator_range<IteratorT>& l,
40169 const ForwardRange& r )
40170 {
40171 return !boost::equal( l, r );
40172 }
40173
40174
40175 template< class Iterator1T, class Iterator2T >
40176 inline bool operator<( const iterator_range<Iterator1T>& l,
40177 const iterator_range<Iterator2T>& r )
40178 {
40179 return iterator_range_detail::less_than( l, r );
40180 }
40181
40182 template< class IteratorT, class ForwardRange >
40183 inline bool operator<( const iterator_range<IteratorT>& l,
40184 const ForwardRange& r )
40185 {
40186 return iterator_range_detail::less_than( l, r );
40187 }
40188
40189 template< class Iterator1T, class Iterator2T >
40190 inline bool operator<=( const iterator_range<Iterator1T>& l,
40191 const iterator_range<Iterator2T>& r )
40192 {
40193 return iterator_range_detail::less_or_equal_than( l, r );
40194 }
40195
40196 template< class IteratorT, class ForwardRange >
40197 inline bool operator<=( const iterator_range<IteratorT>& l,
40198 const ForwardRange& r )
40199 {
40200 return iterator_range_detail::less_or_equal_than( l, r );
40201 }
40202
40203 template< class Iterator1T, class Iterator2T >
40204 inline bool operator>( const iterator_range<Iterator1T>& l,
40205 const iterator_range<Iterator2T>& r )
40206 {
40207 return iterator_range_detail::greater_than( l, r );
40208 }
40209
40210 template< class IteratorT, class ForwardRange >
40211 inline bool operator>( const iterator_range<IteratorT>& l,
40212 const ForwardRange& r )
40213 {
40214 return iterator_range_detail::greater_than( l, r );
40215 }
40216
40217 template< class Iterator1T, class Iterator2T >
40218 inline bool operator>=( const iterator_range<Iterator1T>& l,
40219 const iterator_range<Iterator2T>& r )
40220 {
40221 return iterator_range_detail::greater_or_equal_than( l, r );
40222 }
40223
40224 template< class IteratorT, class ForwardRange >
40225 inline bool operator>=( const iterator_range<IteratorT>& l,
40226 const ForwardRange& r )
40227 {
40228 return iterator_range_detail::greater_or_equal_than( l, r );
40229 }
40230 # 528 "../boost/range/iterator_range_core.hpp"
40231 template< typename IteratorT >
40232 inline iterator_range< IteratorT >
40233 make_iterator_range( IteratorT Begin, IteratorT End )
40234 {
40235 return iterator_range<IteratorT>( Begin, End );
40236 }
40237 # 551 "../boost/range/iterator_range_core.hpp"
40238 template< class ForwardRange >
40239 inline iterator_range< typename range_iterator<ForwardRange>::type >
40240 make_iterator_range( ForwardRange& r )
40241 {
40242 return iterator_range< typename range_iterator<ForwardRange>::type >
40243 ( r, iterator_range_detail::range_tag() );
40244 }
40245
40246 template< class ForwardRange >
40247 inline iterator_range< typename range_iterator<const ForwardRange>::type >
40248 make_iterator_range( const ForwardRange& r )
40249 {
40250 return iterator_range< typename range_iterator<const ForwardRange>::type >
40251 ( r, iterator_range_detail::const_range_tag() );
40252 }
40253
40254
40255
40256 namespace iterator_range_detail
40257 {
40258 template< class Range >
40259 inline iterator_range< typename range_iterator<Range>::type >
40260 make_range_impl( Range& r,
40261 typename range_difference<Range>::type advance_begin,
40262 typename range_difference<Range>::type advance_end )
40263 {
40264
40265
40266
40267
40268
40269
40270
40271 typename range_iterator<Range>::type
40272 new_begin = boost::begin( r ),
40273 new_end = boost::end( r );
40274 std::advance( new_begin, advance_begin );
40275 std::advance( new_end, advance_end );
40276 return make_iterator_range( new_begin, new_end );
40277 }
40278 }
40279 # 607 "../boost/range/iterator_range_core.hpp"
40280 template< class Range >
40281 inline iterator_range< typename range_iterator<Range>::type >
40282 make_iterator_range( Range& r,
40283 typename range_difference<Range>::type advance_begin,
40284 typename range_difference<Range>::type advance_end )
40285 {
40286
40287 return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
40288 }
40289
40290 template< class Range >
40291 inline iterator_range< typename range_iterator<const Range>::type >
40292 make_iterator_range( const Range& r,
40293 typename range_difference<Range>::type advance_begin,
40294 typename range_difference<Range>::type advance_end )
40295 {
40296
40297 return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
40298 }
40299 # 637 "../boost/range/iterator_range_core.hpp"
40300 template< typename SeqT, typename Range >
40301 inline SeqT copy_range( const Range& r )
40302 {
40303 return SeqT( boost::begin( r ), boost::end( r ) );
40304 }
40305
40306 }
40307 # 14 "../boost/range/iterator_range.hpp" 2
40308 # 1 "../boost/range/iterator_range_io.hpp" 1
40309 # 41 "../boost/range/iterator_range_io.hpp"
40310 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
40311 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
40312
40313 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
40314
40315
40316 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
40317 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
40318 # 42 "../boost/range/iterator_range_io.hpp" 2
40319
40320 namespace boost
40321 {
40322 # 54 "../boost/range/iterator_range_io.hpp"
40323 template< typename IteratorT, typename Elem, typename Traits >
40324 inline std::basic_ostream<Elem,Traits>& operator<<(
40325 std::basic_ostream<Elem, Traits>& Os,
40326 const iterator_range<IteratorT>& r )
40327 {
40328 std::copy( r.begin(), r.end(),
40329 std::ostream_iterator< typename
40330 iterator_value<IteratorT>::type,
40331 Elem, Traits>(Os) );
40332 return Os;
40333 }
40334 # 85 "../boost/range/iterator_range_io.hpp"
40335 }
40336 # 15 "../boost/range/iterator_range.hpp" 2
40337 # 15 "quickbook/src/iterator.hpp" 2
40338
40339
40340 namespace quickbook
40341 {
40342 template <typename Iterator>
40343 struct lookback_iterator
40344 : boost::forward_iterator_helper<
40345 lookback_iterator<Iterator>,
40346 typename boost::iterator_value<Iterator>::type,
40347 typename boost::iterator_difference<Iterator>::type,
40348 typename boost::iterator_pointer<Iterator>::type,
40349 typename boost::iterator_reference<Iterator>::type
40350 >
40351 {
40352 lookback_iterator() {}
40353 explicit lookback_iterator(Iterator base)
40354 : original_(base), base_(base) {}
40355
40356 friend bool operator==(
40357 lookback_iterator const& x,
40358 lookback_iterator const& y)
40359 {
40360 return x.base_ == y.base_;
40361 }
40362
40363 lookback_iterator& operator++()
40364 {
40365 ++base_;
40366 return *this;
40367 }
40368
40369 typename boost::iterator_reference<Iterator>::type operator*() const
40370 {
40371 return *base_;
40372 }
40373
40374 Iterator base() const {
40375 return base_;
40376 }
40377
40378 typedef boost::iterator_range<std::reverse_iterator<Iterator> >
40379 lookback_range;
40380
40381 lookback_range lookback() const
40382 {
40383 return lookback_range(base_, original_);
40384 }
40385
40386 private:
40387 Iterator original_;
40388 Iterator base_;
40389 };
40390 }
40391 # 15 "quickbook/src/fwd.hpp" 2
40392 # 1 "../boost/intrusive_ptr.hpp" 1
40393 # 16 "../boost/intrusive_ptr.hpp"
40394 # 1 "../boost/smart_ptr/intrusive_ptr.hpp" 1
40395 # 18 "../boost/smart_ptr/intrusive_ptr.hpp"
40396 # 1 "../boost/assert.hpp" 1
40397 # 50 "../boost/assert.hpp"
40398 # 1 "/usr/include/assert.h" 1 3 4
40399 # 51 "../boost/assert.hpp" 2
40400 # 19 "../boost/smart_ptr/intrusive_ptr.hpp" 2
40401
40402 # 1 "../boost/smart_ptr/detail/sp_convertible.hpp" 1
40403 # 34 "../boost/smart_ptr/detail/sp_convertible.hpp"
40404 namespace boost
40405 {
40406
40407 namespace detail
40408 {
40409
40410 template< class Y, class T > struct sp_convertible
40411 {
40412 typedef char (&yes) [1];
40413 typedef char (&no) [2];
40414
40415 static yes f( T* );
40416 static no f( ... );
40417
40418 enum _vt { value = sizeof( (f)( static_cast<Y*>(0) ) ) == sizeof(yes) };
40419 };
40420
40421 struct sp_empty
40422 {
40423 };
40424
40425 template< bool > struct sp_enable_if_convertible_impl;
40426
40427 template<> struct sp_enable_if_convertible_impl<true>
40428 {
40429 typedef sp_empty type;
40430 };
40431
40432 template<> struct sp_enable_if_convertible_impl<false>
40433 {
40434 };
40435
40436 template< class Y, class T > struct sp_enable_if_convertible: public sp_enable_if_convertible_impl< sp_convertible< Y, T >::value >
40437 {
40438 };
40439
40440 }
40441
40442 }
40443 # 21 "../boost/smart_ptr/intrusive_ptr.hpp" 2
40444
40445 # 1 "../boost/config/no_tr1/functional.hpp" 1
40446 # 21 "../boost/config/no_tr1/functional.hpp"
40447 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/functional" 1 3
40448 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/functional" 3
40449
40450 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/functional" 3
40451 # 22 "../boost/config/no_tr1/functional.hpp" 2
40452 # 23 "../boost/smart_ptr/intrusive_ptr.hpp" 2
40453 # 33 "../boost/smart_ptr/intrusive_ptr.hpp"
40454 namespace boost
40455 {
40456 # 51 "../boost/smart_ptr/intrusive_ptr.hpp"
40457 template<class T> class intrusive_ptr
40458 {
40459 private:
40460
40461 typedef intrusive_ptr this_type;
40462
40463 public:
40464
40465 typedef T element_type;
40466
40467 intrusive_ptr(): px( 0 )
40468 {
40469 }
40470
40471 intrusive_ptr( T * p, bool add_ref = true ): px( p )
40472 {
40473 if( px != 0 && add_ref ) intrusive_ptr_add_ref( px );
40474 }
40475
40476
40477
40478 template<class U>
40479
40480
40481 intrusive_ptr( intrusive_ptr<U> const & rhs, typename boost::detail::sp_enable_if_convertible<U,T>::type = boost::detail::sp_empty() )
40482
40483
40484
40485
40486
40487
40488 : px( rhs.get() )
40489 {
40490 if( px != 0 ) intrusive_ptr_add_ref( px );
40491 }
40492
40493
40494
40495 intrusive_ptr(intrusive_ptr const & rhs): px( rhs.px )
40496 {
40497 if( px != 0 ) intrusive_ptr_add_ref( px );
40498 }
40499
40500 ~intrusive_ptr()
40501 {
40502 if( px != 0 ) intrusive_ptr_release( px );
40503 }
40504
40505
40506
40507 template<class U> intrusive_ptr & operator=(intrusive_ptr<U> const & rhs)
40508 {
40509 this_type(rhs).swap(*this);
40510 return *this;
40511 }
40512 # 126 "../boost/smart_ptr/intrusive_ptr.hpp"
40513 intrusive_ptr & operator=(intrusive_ptr const & rhs)
40514 {
40515 this_type(rhs).swap(*this);
40516 return *this;
40517 }
40518
40519 intrusive_ptr & operator=(T * rhs)
40520 {
40521 this_type(rhs).swap(*this);
40522 return *this;
40523 }
40524
40525 void reset()
40526 {
40527 this_type().swap( *this );
40528 }
40529
40530 void reset( T * rhs )
40531 {
40532 this_type( rhs ).swap( *this );
40533 }
40534
40535 T * get() const
40536 {
40537 return px;
40538 }
40539
40540 T & operator*() const
40541 {
40542 (static_cast<void> (0));
40543 return *px;
40544 }
40545
40546 T * operator->() const
40547 {
40548 (static_cast<void> (0));
40549 return px;
40550 }
40551
40552
40553 # 1 "../boost/smart_ptr/detail/operator_bool.hpp" 1
40554 # 43 "../boost/smart_ptr/detail/operator_bool.hpp"
40555 typedef T * this_type::*unspecified_bool_type;
40556
40557 operator unspecified_bool_type() const
40558 {
40559 return px == 0? 0: &this_type::px;
40560 }
40561
40562
40563
40564
40565 bool operator! () const
40566 {
40567 return px == 0;
40568 }
40569 # 167 "../boost/smart_ptr/intrusive_ptr.hpp" 2
40570
40571 void swap(intrusive_ptr & rhs)
40572 {
40573 T * tmp = px;
40574 px = rhs.px;
40575 rhs.px = tmp;
40576 }
40577
40578 private:
40579
40580 T * px;
40581 };
40582
40583 template<class T, class U> inline bool operator==(intrusive_ptr<T> const & a, intrusive_ptr<U> const & b)
40584 {
40585 return a.get() == b.get();
40586 }
40587
40588 template<class T, class U> inline bool operator!=(intrusive_ptr<T> const & a, intrusive_ptr<U> const & b)
40589 {
40590 return a.get() != b.get();
40591 }
40592
40593 template<class T, class U> inline bool operator==(intrusive_ptr<T> const & a, U * b)
40594 {
40595 return a.get() == b;
40596 }
40597
40598 template<class T, class U> inline bool operator!=(intrusive_ptr<T> const & a, U * b)
40599 {
40600 return a.get() != b;
40601 }
40602
40603 template<class T, class U> inline bool operator==(T * a, intrusive_ptr<U> const & b)
40604 {
40605 return a == b.get();
40606 }
40607
40608 template<class T, class U> inline bool operator!=(T * a, intrusive_ptr<U> const & b)
40609 {
40610 return a != b.get();
40611 }
40612 # 221 "../boost/smart_ptr/intrusive_ptr.hpp"
40613 template<class T> inline bool operator<(intrusive_ptr<T> const & a, intrusive_ptr<T> const & b)
40614 {
40615 return std::less<T *>()(a.get(), b.get());
40616 }
40617
40618 template<class T> void swap(intrusive_ptr<T> & lhs, intrusive_ptr<T> & rhs)
40619 {
40620 lhs.swap(rhs);
40621 }
40622
40623
40624
40625 template<class T> T * get_pointer(intrusive_ptr<T> const & p)
40626 {
40627 return p.get();
40628 }
40629
40630 template<class T, class U> intrusive_ptr<T> static_pointer_cast(intrusive_ptr<U> const & p)
40631 {
40632 return static_cast<T *>(p.get());
40633 }
40634
40635 template<class T, class U> intrusive_ptr<T> const_pointer_cast(intrusive_ptr<U> const & p)
40636 {
40637 return const_cast<T *>(p.get());
40638 }
40639
40640 template<class T, class U> intrusive_ptr<T> dynamic_pointer_cast(intrusive_ptr<U> const & p)
40641 {
40642 return dynamic_cast<T *>(p.get());
40643 }
40644 # 275 "../boost/smart_ptr/intrusive_ptr.hpp"
40645 template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, intrusive_ptr<Y> const & p)
40646
40647 {
40648 os << p.get();
40649 return os;
40650 }
40651 # 290 "../boost/smart_ptr/intrusive_ptr.hpp"
40652 template< class T > struct hash;
40653
40654 template< class T > std::size_t hash_value( boost::intrusive_ptr<T> const & p )
40655 {
40656 return boost::hash< T* >()( p.get() );
40657 }
40658
40659 }
40660 # 17 "../boost/intrusive_ptr.hpp" 2
40661 # 16 "quickbook/src/fwd.hpp" 2
40662
40663 namespace quickbook
40664 {
40665 struct actions;
40666 struct quickbook_grammar;
40667 struct collector;
40668 struct id_manager;
40669 struct section_info;
40670 struct file;
40671 typedef boost::intrusive_ptr<file> file_ptr;
40672
40673 typedef std::string::const_iterator string_iterator;
40674 typedef lookback_iterator<string_iterator> parse_iterator;
40675
40676 inline void ignore_variable(void const*) {}
40677 }
40678 # 21 "quickbook/src/values.hpp" 2
40679 # 1 "quickbook/src/string_ref.hpp" 1
40680 # 16 "quickbook/src/string_ref.hpp"
40681 namespace quickbook
40682 {
40683 struct string_ref
40684 : boost::less_than_comparable<string_ref,
40685 boost::less_than_comparable<string_ref, std::string,
40686 boost::equality_comparable<string_ref,
40687 boost::equality_comparable<string_ref, std::string> > > >
40688 {
40689 public:
40690 typedef std::string::const_iterator iterator;
40691 typedef std::string::const_iterator const_iterator;
40692
40693 private:
40694 iterator begin_, end_;
40695
40696 public:
40697 string_ref() : begin_(), end_() {}
40698
40699 explicit string_ref(iterator b, iterator e)
40700 : begin_(b), end_(e) {}
40701
40702 explicit string_ref(std::string const& x)
40703 : begin_(x.begin()), end_(x.end()) {}
40704
40705 operator std::string() const {
40706 return std::string(begin_, end_);
40707 }
40708
40709 iterator begin() const { return begin_; }
40710 iterator end() const { return end_; }
40711
40712 std::size_t size() const
40713 {
40714 return static_cast<std::size_t>(end_ - begin_);
40715 }
40716
40717 bool empty() const
40718 {
40719 return begin_ == end_;
40720 }
40721 };
40722
40723 bool operator==(string_ref const& x, string_ref const& y);
40724 bool operator<(string_ref const& x, string_ref const& y);
40725 std::ostream& operator<<(std::ostream&, string_ref const& x);
40726
40727 inline bool operator==(string_ref const& x, std::string const& y)
40728 {
40729 return x == string_ref(y);
40730 }
40731
40732 inline bool operator<(string_ref const& x, std::string const& y)
40733 {
40734 return x < string_ref(y);
40735 }
40736
40737 inline bool operator>(string_ref const& x, std::string const& y)
40738 {
40739 return x > string_ref(y);
40740 }
40741 }
40742 # 22 "quickbook/src/values.hpp" 2
40743 # 1 "quickbook/src/files.hpp" 1
40744 # 15 "quickbook/src/files.hpp"
40745 # 1 "../boost/filesystem/v3/path.hpp" 1
40746 # 24 "../boost/filesystem/v3/path.hpp"
40747 # 1 "../boost/filesystem/v3/config.hpp" 1
40748 # 29 "../boost/filesystem/v3/config.hpp"
40749 # 1 "../boost/system/api_config.hpp" 1
40750 # 30 "../boost/filesystem/v3/config.hpp" 2
40751 # 25 "../boost/filesystem/v3/path.hpp" 2
40752 # 1 "../boost/filesystem/v3/path_traits.hpp" 1
40753 # 22 "../boost/filesystem/v3/path_traits.hpp"
40754 # 1 "../boost/type_traits/decay.hpp" 1
40755 # 15 "../boost/type_traits/decay.hpp"
40756 # 1 "../boost/type_traits/remove_bounds.hpp" 1
40757 # 13 "../boost/type_traits/remove_bounds.hpp"
40758 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
40759 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
40760
40761 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
40762
40763
40764 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
40765 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
40766 # 14 "../boost/type_traits/remove_bounds.hpp" 2
40767
40768
40769
40770
40771
40772
40773
40774 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
40775 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
40776 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
40777 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
40778 # 22 "../boost/type_traits/remove_bounds.hpp" 2
40779
40780
40781
40782 namespace boost {
40783
40784 template< typename T > struct remove_bounds { public: typedef T type; };
40785
40786
40787 template< typename T, std::size_t N > struct remove_bounds<T[N]> { public: typedef T type; };
40788 template< typename T, std::size_t N > struct remove_bounds<T const[N]> { public: typedef T const type; };
40789 template< typename T, std::size_t N > struct remove_bounds<T volatile[N]> { public: typedef T volatile type; };
40790 template< typename T, std::size_t N > struct remove_bounds<T const volatile[N]> { public: typedef T const volatile type; };
40791
40792 template< typename T > struct remove_bounds<T[]> { public: typedef T type; };
40793 template< typename T > struct remove_bounds<T const[]> { public: typedef T const type; };
40794 template< typename T > struct remove_bounds<T volatile[]> { public: typedef T volatile type; };
40795 template< typename T > struct remove_bounds<T const volatile[]> { public: typedef T const volatile type; };
40796
40797
40798
40799 }
40800
40801
40802
40803 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
40804 # 47 "../boost/type_traits/remove_bounds.hpp" 2
40805 # 16 "../boost/type_traits/decay.hpp" 2
40806
40807
40808
40809
40810
40811 namespace boost
40812 {
40813
40814 template< class T >
40815 struct decay
40816 {
40817 private:
40818 typedef typename remove_reference<T>::type Ty;
40819 public:
40820 typedef typename mpl::eval_if<
40821 is_array<Ty>,
40822 mpl::identity<typename remove_bounds<Ty>::type*>,
40823 typename mpl::eval_if<
40824 is_function<Ty>,
40825 add_pointer<Ty>,
40826 mpl::identity<Ty>
40827 >
40828 >::type type;
40829 };
40830
40831 }
40832 # 23 "../boost/filesystem/v3/path_traits.hpp" 2
40833 # 1 "../boost/system/error_code.hpp" 1
40834 # 14 "../boost/system/error_code.hpp"
40835 # 1 "../boost/system/config.hpp" 1
40836 # 15 "../boost/system/error_code.hpp" 2
40837 # 1 "../boost/cstdint.hpp" 1
40838 # 57 "../boost/cstdint.hpp"
40839 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stdint.h" 1 3 4
40840
40841
40842 # 1 "/usr/include/stdint.h" 1 3 4
40843 # 28 "/usr/include/stdint.h" 3 4
40844 # 1 "/usr/include/bits/wordsize.h" 1 3 4
40845 # 29 "/usr/include/stdint.h" 2 3 4
40846 # 49 "/usr/include/stdint.h" 3 4
40847 typedef unsigned char uint8_t;
40848 typedef unsigned short int uint16_t;
40849
40850 typedef unsigned int uint32_t;
40851
40852
40853
40854 typedef unsigned long int uint64_t;
40855 # 66 "/usr/include/stdint.h" 3 4
40856 typedef signed char int_least8_t;
40857 typedef short int int_least16_t;
40858 typedef int int_least32_t;
40859
40860 typedef long int int_least64_t;
40861
40862
40863
40864
40865
40866
40867 typedef unsigned char uint_least8_t;
40868 typedef unsigned short int uint_least16_t;
40869 typedef unsigned int uint_least32_t;
40870
40871 typedef unsigned long int uint_least64_t;
40872 # 91 "/usr/include/stdint.h" 3 4
40873 typedef signed char int_fast8_t;
40874
40875 typedef long int int_fast16_t;
40876 typedef long int int_fast32_t;
40877 typedef long int int_fast64_t;
40878 # 104 "/usr/include/stdint.h" 3 4
40879 typedef unsigned char uint_fast8_t;
40880
40881 typedef unsigned long int uint_fast16_t;
40882 typedef unsigned long int uint_fast32_t;
40883 typedef unsigned long int uint_fast64_t;
40884 # 123 "/usr/include/stdint.h" 3 4
40885 typedef unsigned long int uintptr_t;
40886 # 135 "/usr/include/stdint.h" 3 4
40887 typedef long int intmax_t;
40888 typedef unsigned long int uintmax_t;
40889 # 4 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stdint.h" 2 3 4
40890 # 58 "../boost/cstdint.hpp" 2
40891 # 100 "../boost/cstdint.hpp"
40892 namespace boost
40893 {
40894
40895 using ::int8_t;
40896 using ::int_least8_t;
40897 using ::int_fast8_t;
40898 using ::uint8_t;
40899 using ::uint_least8_t;
40900 using ::uint_fast8_t;
40901
40902 using ::int16_t;
40903 using ::int_least16_t;
40904 using ::int_fast16_t;
40905 using ::uint16_t;
40906 using ::uint_least16_t;
40907 using ::uint_fast16_t;
40908
40909 using ::int32_t;
40910 using ::int_least32_t;
40911 using ::int_fast32_t;
40912 using ::uint32_t;
40913 using ::uint_least32_t;
40914 using ::uint_fast32_t;
40915
40916
40917
40918 using ::int64_t;
40919 using ::int_least64_t;
40920 using ::int_fast64_t;
40921 using ::uint64_t;
40922 using ::uint_least64_t;
40923 using ::uint_fast64_t;
40924
40925
40926
40927 using ::intmax_t;
40928 using ::uintmax_t;
40929
40930 }
40931 # 16 "../boost/system/error_code.hpp" 2
40932 # 1 "../boost/assert.hpp" 1
40933 # 50 "../boost/assert.hpp"
40934 # 1 "/usr/include/assert.h" 1 3 4
40935 # 51 "../boost/assert.hpp" 2
40936 # 17 "../boost/system/error_code.hpp" 2
40937 # 26 "../boost/system/error_code.hpp"
40938 # 1 "../boost/cerrno.hpp" 1
40939 # 13 "../boost/cerrno.hpp"
40940 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cerrno" 1 3
40941 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cerrno" 3
40942
40943 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cerrno" 3
40944
40945 # 1 "/usr/include/errno.h" 1 3 4
40946 # 32 "/usr/include/errno.h" 3 4
40947 extern "C" {
40948
40949
40950
40951 # 1 "/usr/include/bits/errno.h" 1 3 4
40952 # 25 "/usr/include/bits/errno.h" 3 4
40953 # 1 "/usr/include/linux/errno.h" 1 3 4
40954
40955
40956
40957 # 1 "/usr/include/asm/errno.h" 1 3 4
40958 # 1 "/usr/include/asm-generic/errno.h" 1 3 4
40959
40960
40961
40962 # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
40963 # 5 "/usr/include/asm-generic/errno.h" 2 3 4
40964 # 1 "/usr/include/asm/errno.h" 2 3 4
40965 # 5 "/usr/include/linux/errno.h" 2 3 4
40966 # 26 "/usr/include/bits/errno.h" 2 3 4
40967 # 47 "/usr/include/bits/errno.h" 3 4
40968 extern int *__errno_location (void) throw () __attribute__ ((__const__));
40969 # 37 "/usr/include/errno.h" 2 3 4
40970 # 55 "/usr/include/errno.h" 3 4
40971 extern char *program_invocation_name, *program_invocation_short_name;
40972
40973
40974
40975 }
40976 # 69 "/usr/include/errno.h" 3 4
40977 typedef int error_t;
40978 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cerrno" 2 3
40979 # 14 "../boost/cerrno.hpp" 2
40980 # 27 "../boost/system/error_code.hpp" 2
40981
40982
40983
40984
40985
40986 # 1 "../boost/config/abi_prefix.hpp" 1
40987 # 33 "../boost/system/error_code.hpp" 2
40988
40989 namespace boost
40990 {
40991 namespace system
40992 {
40993
40994 class error_code;
40995 class error_condition;
40996
40997
40998
40999 template< class T >
41000 struct is_error_code_enum { static const bool value = false; };
41001
41002 template< class T >
41003 struct is_error_condition_enum { static const bool value = false; };
41004
41005
41006
41007 namespace errc
41008 {
41009 enum errc_t
41010 {
41011 success = 0,
41012 address_family_not_supported = 97,
41013 address_in_use = 98,
41014 address_not_available = 99,
41015 already_connected = 106,
41016 argument_list_too_long = 7,
41017 argument_out_of_domain = 33,
41018 bad_address = 14,
41019 bad_file_descriptor = 9,
41020 bad_message = 74,
41021 broken_pipe = 32,
41022 connection_aborted = 103,
41023 connection_already_in_progress = 114,
41024 connection_refused = 111,
41025 connection_reset = 104,
41026 cross_device_link = 18,
41027 destination_address_required = 89,
41028 device_or_resource_busy = 16,
41029 directory_not_empty = 39,
41030 executable_format_error = 8,
41031 file_exists = 17,
41032 file_too_large = 27,
41033 filename_too_long = 36,
41034 function_not_supported = 38,
41035 host_unreachable = 113,
41036 identifier_removed = 43,
41037 illegal_byte_sequence = 84,
41038 inappropriate_io_control_operation = 25,
41039 interrupted = 4,
41040 invalid_argument = 22,
41041 invalid_seek = 29,
41042 io_error = 5,
41043 is_a_directory = 21,
41044 message_size = 90,
41045 network_down = 100,
41046 network_reset = 102,
41047 network_unreachable = 101,
41048 no_buffer_space = 105,
41049 no_child_process = 10,
41050 no_link = 67,
41051 no_lock_available = 37,
41052 no_message_available = 61,
41053 no_message = 42,
41054 no_protocol_option = 92,
41055 no_space_on_device = 28,
41056 no_stream_resources = 63,
41057 no_such_device_or_address = 6,
41058 no_such_device = 19,
41059 no_such_file_or_directory = 2,
41060 no_such_process = 3,
41061 not_a_directory = 20,
41062 not_a_socket = 88,
41063 not_a_stream = 60,
41064 not_connected = 107,
41065 not_enough_memory = 12,
41066 not_supported = 95,
41067 operation_canceled = 125,
41068 operation_in_progress = 115,
41069 operation_not_permitted = 1,
41070 operation_not_supported = 95,
41071 operation_would_block = 11,
41072 owner_dead = 130,
41073 permission_denied = 13,
41074 protocol_error = 71,
41075 protocol_not_supported = 93,
41076 read_only_file_system = 30,
41077 resource_deadlock_would_occur = 35,
41078 resource_unavailable_try_again = 11,
41079 result_out_of_range = 34,
41080 state_not_recoverable = 131,
41081 stream_timeout = 62,
41082 text_file_busy = 26,
41083 timed_out = 110,
41084 too_many_files_open_in_system = 23,
41085 too_many_files_open = 24,
41086 too_many_links = 31,
41087 too_many_symbolic_link_levels = 40,
41088 value_too_large = 75,
41089 wrong_protocol_type = 91
41090 };
41091
41092 }
41093
41094
41095 namespace posix = errc;
41096 namespace posix_error = errc;
41097
41098
41099 template<> struct is_error_condition_enum<errc::errc_t>
41100 { static const bool value = true; };
41101 # 182 "../boost/system/error_code.hpp"
41102 class error_category : public noncopyable
41103 {
41104 public:
41105 virtual ~error_category(){}
41106
41107 virtual const char * name() const = 0;
41108 virtual std::string message( int ev ) const = 0;
41109 virtual error_condition default_error_condition( int ev ) const;
41110 virtual bool equivalent( int code,
41111 const error_condition & condition ) const;
41112 virtual bool equivalent( const error_code & code,
41113 int condition ) const;
41114
41115 bool operator==(const error_category & rhs) const { return this == &rhs; }
41116 bool operator!=(const error_category & rhs) const { return this != &rhs; }
41117 bool operator<( const error_category & rhs ) const
41118 {
41119 return std::less<const error_category*>()( this, &rhs );
41120 }
41121 };
41122
41123
41124
41125 const error_category & system_category();
41126 const error_category & generic_category();
41127
41128
41129
41130
41131 inline const error_category & get_system_category() { return system_category(); }
41132 inline const error_category & get_generic_category() { return generic_category(); }
41133 inline const error_category & get_posix_category() { return generic_category(); }
41134 static const error_category & posix_category = generic_category();
41135 static const error_category & errno_ecat = generic_category();
41136 static const error_category & native_ecat = system_category();
41137
41138
41139
41140
41141
41142
41143 class error_condition
41144 {
41145 public:
41146
41147
41148 error_condition() : m_val(0), m_cat(&generic_category()) {}
41149 error_condition( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
41150
41151 template <class ErrorConditionEnum>
41152 error_condition(ErrorConditionEnum e,
41153 typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum> >::type* = 0)
41154 {
41155 *this = make_error_condition(e);
41156 }
41157
41158
41159
41160 void assign( int val, const error_category & cat )
41161 {
41162 m_val = val;
41163 m_cat = &cat;
41164 }
41165
41166 template<typename ErrorConditionEnum>
41167 typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum>, error_condition>::type &
41168 operator=( ErrorConditionEnum val )
41169 {
41170 *this = make_error_condition(val);
41171 return *this;
41172 }
41173
41174 void clear()
41175 {
41176 m_val = 0;
41177 m_cat = &generic_category();
41178 }
41179
41180
41181 int value() const { return m_val; }
41182 const error_category & category() const { return *m_cat; }
41183 std::string message() const { return m_cat->message(value()); }
41184
41185 typedef void (*unspecified_bool_type)();
41186 static void unspecified_bool_true() {}
41187
41188 operator unspecified_bool_type() const
41189 {
41190 return m_val == 0 ? 0 : unspecified_bool_true;
41191 }
41192
41193 bool operator!() const
41194 {
41195 return m_val == 0;
41196 }
41197
41198
41199
41200
41201 inline friend bool operator==( const error_condition & lhs,
41202 const error_condition & rhs )
41203 {
41204 return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
41205 }
41206
41207 inline friend bool operator<( const error_condition & lhs,
41208 const error_condition & rhs )
41209
41210
41211 {
41212 return lhs.m_cat < rhs.m_cat
41213 || (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
41214 }
41215
41216 private:
41217 int m_val;
41218 const error_category * m_cat;
41219
41220 };
41221 # 310 "../boost/system/error_code.hpp"
41222 class error_code
41223 {
41224 public:
41225
41226
41227 error_code() : m_val(0), m_cat(&system_category()) {}
41228 error_code( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
41229
41230 template <class ErrorCodeEnum>
41231 error_code(ErrorCodeEnum e,
41232 typename boost::enable_if<is_error_code_enum<ErrorCodeEnum> >::type* = 0)
41233 {
41234 *this = make_error_code(e);
41235 }
41236
41237
41238 void assign( int val, const error_category & cat )
41239 {
41240 m_val = val;
41241 m_cat = &cat;
41242 }
41243
41244 template<typename ErrorCodeEnum>
41245 typename boost::enable_if<is_error_code_enum<ErrorCodeEnum>, error_code>::type &
41246 operator=( ErrorCodeEnum val )
41247 {
41248 *this = make_error_code(val);
41249 return *this;
41250 }
41251
41252 void clear()
41253 {
41254 m_val = 0;
41255 m_cat = &system_category();
41256 }
41257
41258
41259 int value() const { return m_val; }
41260 const error_category & category() const { return *m_cat; }
41261 error_condition default_error_condition() const { return m_cat->default_error_condition(value()); }
41262 std::string message() const { return m_cat->message(value()); }
41263
41264 typedef void (*unspecified_bool_type)();
41265 static void unspecified_bool_true() {}
41266
41267 operator unspecified_bool_type() const
41268 {
41269 return m_val == 0 ? 0 : unspecified_bool_true;
41270 }
41271
41272 bool operator!() const
41273 {
41274 return m_val == 0;
41275 }
41276
41277
41278 inline friend bool operator==( const error_code & lhs,
41279 const error_code & rhs )
41280
41281
41282 {
41283 return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
41284 }
41285
41286 inline friend bool operator<( const error_code & lhs,
41287 const error_code & rhs )
41288
41289
41290 {
41291 return lhs.m_cat < rhs.m_cat
41292 || (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
41293 }
41294
41295 private:
41296 int m_val;
41297 const error_category * m_cat;
41298
41299 };
41300
41301
41302
41303 extern error_code throws;
41304
41305
41306
41307
41308
41309
41310 }
41311
41312 namespace detail { inline system::error_code * throws() { return 0; } }
41313 # 409 "../boost/system/error_code.hpp"
41314 inline system::error_code & throws()
41315 { return *detail::throws(); }
41316
41317 namespace system
41318 {
41319
41320
41321 inline bool operator!=( const error_code & lhs,
41322 const error_code & rhs )
41323 {
41324 return !(lhs == rhs);
41325 }
41326
41327 inline bool operator!=( const error_condition & lhs,
41328 const error_condition & rhs )
41329 {
41330 return !(lhs == rhs);
41331 }
41332
41333 inline bool operator==( const error_code & code,
41334 const error_condition & condition )
41335 {
41336 return code.category().equivalent( code.value(), condition )
41337 || condition.category().equivalent( code, condition.value() );
41338 }
41339
41340 inline bool operator!=( const error_code & lhs,
41341 const error_condition & rhs )
41342 {
41343 return !(lhs == rhs);
41344 }
41345
41346 inline bool operator==( const error_condition & condition,
41347 const error_code & code )
41348 {
41349 return condition.category().equivalent( code, condition.value() )
41350 || code.category().equivalent( code.value(), condition );
41351 }
41352
41353 inline bool operator!=( const error_condition & lhs,
41354 const error_code & rhs )
41355 {
41356 return !(lhs == rhs);
41357 }
41358
41359
41360
41361 template <class charT, class traits>
41362 inline std::basic_ostream<charT,traits>&
41363 operator<< (std::basic_ostream<charT,traits>& os, error_code ec)
41364 {
41365 os << ec.category().name() << ':' << ec.value();
41366 return os;
41367 }
41368
41369 inline std::size_t hash_value( const error_code & ec )
41370 {
41371 return static_cast<std::size_t>(ec.value())
41372 + reinterpret_cast<std::size_t>(&ec.category());
41373 }
41374
41375
41376
41377 namespace errc
41378 {
41379
41380 inline error_code make_error_code( errc_t e )
41381 { return error_code( e, generic_category() ); }
41382
41383
41384 inline error_condition make_error_condition( errc_t e )
41385 { return error_condition( e, generic_category() ); }
41386 }
41387
41388
41389
41390 inline error_condition error_category::default_error_condition( int ev ) const
41391 {
41392 return error_condition( ev, *this );
41393 }
41394
41395 inline bool error_category::equivalent( int code,
41396 const error_condition & condition ) const
41397 {
41398 return default_error_condition( code ) == condition;
41399 }
41400
41401 inline bool error_category::equivalent( const error_code & code,
41402 int condition ) const
41403 {
41404 return *this == code.category() && code.value() == condition;
41405 }
41406
41407 }
41408 }
41409
41410 # 1 "../boost/config/abi_suffix.hpp" 1
41411 # 506 "../boost/system/error_code.hpp" 2
41412 # 24 "../boost/filesystem/v3/path_traits.hpp" 2
41413 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 1 3
41414 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
41415
41416 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
41417
41418
41419
41420
41421 # 1 "/usr/include/wchar.h" 1 3 4
41422 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 2 3
41423 # 25 "../boost/filesystem/v3/path_traits.hpp" 2
41424
41425 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/vector" 1 3
41426 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/vector" 3
41427
41428 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/vector" 3
41429
41430
41431
41432
41433
41434 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 1 3
41435 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41436 namespace std __attribute__ ((__visibility__ ("default")))
41437 {
41438
41439
41440
41441 template<typename _Tp, typename _Alloc>
41442 struct _Vector_base
41443 {
41444 typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
41445
41446 struct _Vector_impl
41447 : public _Tp_alloc_type
41448 {
41449 typename _Tp_alloc_type::pointer _M_start;
41450 typename _Tp_alloc_type::pointer _M_finish;
41451 typename _Tp_alloc_type::pointer _M_end_of_storage;
41452
41453 _Vector_impl()
41454 : _Tp_alloc_type(), _M_start(0), _M_finish(0), _M_end_of_storage(0)
41455 { }
41456
41457 _Vector_impl(_Tp_alloc_type const& __a)
41458 : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
41459 { }
41460 };
41461
41462 public:
41463 typedef _Alloc allocator_type;
41464
41465 _Tp_alloc_type&
41466 _M_get_Tp_allocator()
41467 { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
41468
41469 const _Tp_alloc_type&
41470 _M_get_Tp_allocator() const
41471 { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
41472
41473 allocator_type
41474 get_allocator() const
41475 { return allocator_type(_M_get_Tp_allocator()); }
41476
41477 _Vector_base()
41478 : _M_impl() { }
41479
41480 _Vector_base(const allocator_type& __a)
41481 : _M_impl(__a) { }
41482
41483 _Vector_base(size_t __n)
41484 : _M_impl()
41485 {
41486 this->_M_impl._M_start = this->_M_allocate(__n);
41487 this->_M_impl._M_finish = this->_M_impl._M_start;
41488 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
41489 }
41490
41491 _Vector_base(size_t __n, const allocator_type& __a)
41492 : _M_impl(__a)
41493 {
41494 this->_M_impl._M_start = this->_M_allocate(__n);
41495 this->_M_impl._M_finish = this->_M_impl._M_start;
41496 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
41497 }
41498 # 141 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41499 ~_Vector_base()
41500 { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage
41501 - this->_M_impl._M_start); }
41502
41503 public:
41504 _Vector_impl _M_impl;
41505
41506 typename _Tp_alloc_type::pointer
41507 _M_allocate(size_t __n)
41508 { return __n != 0 ? _M_impl.allocate(__n) : 0; }
41509
41510 void
41511 _M_deallocate(typename _Tp_alloc_type::pointer __p, size_t __n)
41512 {
41513 if (__p)
41514 _M_impl.deallocate(__p, __n);
41515 }
41516 };
41517 # 179 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41518 template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
41519 class vector : protected _Vector_base<_Tp, _Alloc>
41520 {
41521
41522 typedef typename _Alloc::value_type _Alloc_value_type;
41523
41524
41525
41526 typedef _Vector_base<_Tp, _Alloc> _Base;
41527 typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
41528
41529 public:
41530 typedef _Tp value_type;
41531 typedef typename _Tp_alloc_type::pointer pointer;
41532 typedef typename _Tp_alloc_type::const_pointer const_pointer;
41533 typedef typename _Tp_alloc_type::reference reference;
41534 typedef typename _Tp_alloc_type::const_reference const_reference;
41535 typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
41536 typedef __gnu_cxx::__normal_iterator<const_pointer, vector>
41537 const_iterator;
41538 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
41539 typedef std::reverse_iterator<iterator> reverse_iterator;
41540 typedef size_t size_type;
41541 typedef ptrdiff_t difference_type;
41542 typedef _Alloc allocator_type;
41543
41544 protected:
41545 using _Base::_M_allocate;
41546 using _Base::_M_deallocate;
41547 using _Base::_M_impl;
41548 using _Base::_M_get_Tp_allocator;
41549
41550 public:
41551
41552
41553
41554
41555
41556 vector()
41557 : _Base() { }
41558
41559
41560
41561
41562
41563 explicit
41564 vector(const allocator_type& __a)
41565 : _Base(__a) { }
41566 # 262 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41567 explicit
41568 vector(size_type __n, const value_type& __value = value_type(),
41569 const allocator_type& __a = allocator_type())
41570 : _Base(__n, __a)
41571 { _M_fill_initialize(__n, __value); }
41572 # 278 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41573 vector(const vector& __x)
41574 : _Base(__x.size(), __x._M_get_Tp_allocator())
41575 { this->_M_impl._M_finish =
41576 std::__uninitialized_copy_a(__x.begin(), __x.end(),
41577 this->_M_impl._M_start,
41578 _M_get_Tp_allocator());
41579 }
41580 # 333 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41581 template<typename _InputIterator>
41582 vector(_InputIterator __first, _InputIterator __last,
41583 const allocator_type& __a = allocator_type())
41584 : _Base(__a)
41585 {
41586
41587 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
41588 _M_initialize_dispatch(__first, __last, _Integral());
41589 }
41590
41591
41592
41593
41594
41595
41596
41597 ~vector()
41598 { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
41599 _M_get_Tp_allocator()); }
41600 # 361 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41601 vector&
41602 operator=(const vector& __x);
41603 # 411 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41604 void
41605 assign(size_type __n, const value_type& __val)
41606 { _M_fill_assign(__n, __val); }
41607 # 427 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41608 template<typename _InputIterator>
41609 void
41610 assign(_InputIterator __first, _InputIterator __last)
41611 {
41612
41613 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
41614 _M_assign_dispatch(__first, __last, _Integral());
41615 }
41616 # 454 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41617 using _Base::get_allocator;
41618
41619
41620
41621
41622
41623
41624
41625 iterator
41626 begin()
41627 { return iterator(this->_M_impl._M_start); }
41628
41629
41630
41631
41632
41633
41634 const_iterator
41635 begin() const
41636 { return const_iterator(this->_M_impl._M_start); }
41637
41638
41639
41640
41641
41642
41643 iterator
41644 end()
41645 { return iterator(this->_M_impl._M_finish); }
41646
41647
41648
41649
41650
41651
41652 const_iterator
41653 end() const
41654 { return const_iterator(this->_M_impl._M_finish); }
41655
41656
41657
41658
41659
41660
41661 reverse_iterator
41662 rbegin()
41663 { return reverse_iterator(end()); }
41664
41665
41666
41667
41668
41669
41670 const_reverse_iterator
41671 rbegin() const
41672 { return const_reverse_iterator(end()); }
41673
41674
41675
41676
41677
41678
41679 reverse_iterator
41680 rend()
41681 { return reverse_iterator(begin()); }
41682
41683
41684
41685
41686
41687
41688 const_reverse_iterator
41689 rend() const
41690 { return const_reverse_iterator(begin()); }
41691 # 569 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41692 size_type
41693 size() const
41694 { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
41695
41696
41697 size_type
41698 max_size() const
41699 { return _M_get_Tp_allocator().max_size(); }
41700 # 628 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41701 void
41702 resize(size_type __new_size, value_type __x = value_type())
41703 {
41704 if (__new_size > size())
41705 insert(end(), __new_size - size(), __x);
41706 else if (__new_size < size())
41707 _M_erase_at_end(this->_M_impl._M_start + __new_size);
41708 }
41709 # 649 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41710 size_type
41711 capacity() const
41712 { return size_type(this->_M_impl._M_end_of_storage
41713 - this->_M_impl._M_start); }
41714
41715
41716
41717
41718
41719 bool
41720 empty() const
41721 { return begin() == end(); }
41722 # 679 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41723 void
41724 reserve(size_type __n);
41725 # 694 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41726 reference
41727 operator[](size_type __n)
41728 { return *(this->_M_impl._M_start + __n); }
41729 # 709 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41730 const_reference
41731 operator[](size_type __n) const
41732 { return *(this->_M_impl._M_start + __n); }
41733
41734 protected:
41735
41736 void
41737 _M_range_check(size_type __n) const
41738 {
41739 if (__n >= this->size())
41740 __throw_out_of_range(("vector::_M_range_check"));
41741 }
41742
41743 public:
41744 # 734 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41745 reference
41746 at(size_type __n)
41747 {
41748 _M_range_check(__n);
41749 return (*this)[__n];
41750 }
41751 # 752 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41752 const_reference
41753 at(size_type __n) const
41754 {
41755 _M_range_check(__n);
41756 return (*this)[__n];
41757 }
41758
41759
41760
41761
41762
41763 reference
41764 front()
41765 { return *begin(); }
41766
41767
41768
41769
41770
41771 const_reference
41772 front() const
41773 { return *begin(); }
41774
41775
41776
41777
41778
41779 reference
41780 back()
41781 { return *(end() - 1); }
41782
41783
41784
41785
41786
41787 const_reference
41788 back() const
41789 { return *(end() - 1); }
41790 # 801 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41791 pointer
41792
41793 data()
41794 { return std::__addressof(front()); }
41795
41796
41797
41798
41799 const_pointer
41800
41801 data() const
41802 { return std::__addressof(front()); }
41803 # 825 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41804 void
41805 push_back(const value_type& __x)
41806 {
41807 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
41808 {
41809 this->_M_impl.construct(this->_M_impl._M_finish, __x);
41810 ++this->_M_impl._M_finish;
41811 }
41812 else
41813 _M_insert_aux(end(), __x);
41814 }
41815 # 856 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41816 void
41817 pop_back()
41818 {
41819 --this->_M_impl._M_finish;
41820 this->_M_impl.destroy(this->_M_impl._M_finish);
41821 }
41822 # 892 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41823 iterator
41824 insert(iterator __position, const value_type& __x);
41825 # 942 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41826 void
41827 insert(iterator __position, size_type __n, const value_type& __x)
41828 { _M_fill_insert(__position, __n, __x); }
41829 # 960 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41830 template<typename _InputIterator>
41831 void
41832 insert(iterator __position, _InputIterator __first,
41833 _InputIterator __last)
41834 {
41835
41836 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
41837 _M_insert_dispatch(__position, __first, __last, _Integral());
41838 }
41839 # 985 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41840 iterator
41841 erase(iterator __position);
41842 # 1006 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41843 iterator
41844 erase(iterator __first, iterator __last);
41845 # 1018 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41846 void
41847 swap(vector& __x)
41848 {
41849 std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
41850 std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
41851 std::swap(this->_M_impl._M_end_of_storage,
41852 __x._M_impl._M_end_of_storage);
41853
41854
41855
41856 std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
41857 __x._M_get_Tp_allocator());
41858 }
41859
41860
41861
41862
41863
41864
41865
41866 void
41867 clear()
41868 { _M_erase_at_end(this->_M_impl._M_start); }
41869
41870 protected:
41871
41872
41873
41874
41875 template<typename _ForwardIterator>
41876 pointer
41877 _M_allocate_and_copy(size_type __n,
41878 _ForwardIterator __first, _ForwardIterator __last)
41879 {
41880 pointer __result = this->_M_allocate(__n);
41881 try
41882 {
41883 std::__uninitialized_copy_a(__first, __last, __result,
41884 _M_get_Tp_allocator());
41885 return __result;
41886 }
41887 catch(...)
41888 {
41889 _M_deallocate(__result, __n);
41890 throw;
41891 }
41892 }
41893 # 1073 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41894 template<typename _Integer>
41895 void
41896 _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
41897 {
41898 this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n));
41899 this->_M_impl._M_end_of_storage =
41900 this->_M_impl._M_start + static_cast<size_type>(__n);
41901 _M_fill_initialize(static_cast<size_type>(__n), __value);
41902 }
41903
41904
41905 template<typename _InputIterator>
41906 void
41907 _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
41908 __false_type)
41909 {
41910 typedef typename std::iterator_traits<_InputIterator>::
41911 iterator_category _IterCategory;
41912 _M_range_initialize(__first, __last, _IterCategory());
41913 }
41914
41915
41916 template<typename _InputIterator>
41917 void
41918 _M_range_initialize(_InputIterator __first,
41919 _InputIterator __last, std::input_iterator_tag)
41920 {
41921 for (; __first != __last; ++__first)
41922 push_back(*__first);
41923 }
41924
41925
41926 template<typename _ForwardIterator>
41927 void
41928 _M_range_initialize(_ForwardIterator __first,
41929 _ForwardIterator __last, std::forward_iterator_tag)
41930 {
41931 const size_type __n = std::distance(__first, __last);
41932 this->_M_impl._M_start = this->_M_allocate(__n);
41933 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
41934 this->_M_impl._M_finish =
41935 std::__uninitialized_copy_a(__first, __last,
41936 this->_M_impl._M_start,
41937 _M_get_Tp_allocator());
41938 }
41939
41940
41941
41942 void
41943 _M_fill_initialize(size_type __n, const value_type& __value)
41944 {
41945 std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
41946 _M_get_Tp_allocator());
41947 this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
41948 }
41949 # 1147 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41950 template<typename _Integer>
41951 void
41952 _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
41953 { _M_fill_assign(__n, __val); }
41954
41955
41956 template<typename _InputIterator>
41957 void
41958 _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
41959 __false_type)
41960 {
41961 typedef typename std::iterator_traits<_InputIterator>::
41962 iterator_category _IterCategory;
41963 _M_assign_aux(__first, __last, _IterCategory());
41964 }
41965
41966
41967 template<typename _InputIterator>
41968 void
41969 _M_assign_aux(_InputIterator __first, _InputIterator __last,
41970 std::input_iterator_tag);
41971
41972
41973 template<typename _ForwardIterator>
41974 void
41975 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
41976 std::forward_iterator_tag);
41977
41978
41979
41980 void
41981 _M_fill_assign(size_type __n, const value_type& __val);
41982 # 1187 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
41983 template<typename _Integer>
41984 void
41985 _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
41986 __true_type)
41987 { _M_fill_insert(__pos, __n, __val); }
41988
41989
41990 template<typename _InputIterator>
41991 void
41992 _M_insert_dispatch(iterator __pos, _InputIterator __first,
41993 _InputIterator __last, __false_type)
41994 {
41995 typedef typename std::iterator_traits<_InputIterator>::
41996 iterator_category _IterCategory;
41997 _M_range_insert(__pos, __first, __last, _IterCategory());
41998 }
41999
42000
42001 template<typename _InputIterator>
42002 void
42003 _M_range_insert(iterator __pos, _InputIterator __first,
42004 _InputIterator __last, std::input_iterator_tag);
42005
42006
42007 template<typename _ForwardIterator>
42008 void
42009 _M_range_insert(iterator __pos, _ForwardIterator __first,
42010 _ForwardIterator __last, std::forward_iterator_tag);
42011
42012
42013
42014 void
42015 _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
42016 # 1229 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
42017 void
42018 _M_insert_aux(iterator __position, const value_type& __x);
42019
42020
42021
42022
42023
42024
42025
42026 size_type
42027 _M_check_len(size_type __n, const char* __s) const
42028 {
42029 if (max_size() - size() < __n)
42030 __throw_length_error((__s));
42031
42032 const size_type __len = size() + std::max(size(), __n);
42033 return (__len < size() || __len > max_size()) ? max_size() : __len;
42034 }
42035
42036
42037
42038
42039
42040 void
42041 _M_erase_at_end(pointer __pos)
42042 {
42043 std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());
42044 this->_M_impl._M_finish = __pos;
42045 }
42046 };
42047 # 1271 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
42048 template<typename _Tp, typename _Alloc>
42049 inline bool
42050 operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
42051 { return (__x.size() == __y.size()
42052 && std::equal(__x.begin(), __x.end(), __y.begin())); }
42053 # 1288 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_vector.h" 3
42054 template<typename _Tp, typename _Alloc>
42055 inline bool
42056 operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
42057 { return std::lexicographical_compare(__x.begin(), __x.end(),
42058 __y.begin(), __y.end()); }
42059
42060
42061 template<typename _Tp, typename _Alloc>
42062 inline bool
42063 operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
42064 { return !(__x == __y); }
42065
42066
42067 template<typename _Tp, typename _Alloc>
42068 inline bool
42069 operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
42070 { return __y < __x; }
42071
42072
42073 template<typename _Tp, typename _Alloc>
42074 inline bool
42075 operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
42076 { return !(__y < __x); }
42077
42078
42079 template<typename _Tp, typename _Alloc>
42080 inline bool
42081 operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
42082 { return !(__x < __y); }
42083
42084
42085 template<typename _Tp, typename _Alloc>
42086 inline void
42087 swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
42088 { __x.swap(__y); }
42089
42090
42091 }
42092 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/vector" 2 3
42093 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 1 3
42094 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 3
42095 namespace std __attribute__ ((__visibility__ ("default")))
42096 {
42097
42098
42099 typedef unsigned long _Bit_type;
42100 enum { _S_word_bit = int(8 * sizeof(_Bit_type)) };
42101
42102 struct _Bit_reference
42103 {
42104 _Bit_type * _M_p;
42105 _Bit_type _M_mask;
42106
42107 _Bit_reference(_Bit_type * __x, _Bit_type __y)
42108 : _M_p(__x), _M_mask(__y) { }
42109
42110 _Bit_reference() : _M_p(0), _M_mask(0) { }
42111
42112 operator bool() const
42113 { return !!(*_M_p & _M_mask); }
42114
42115 _Bit_reference&
42116 operator=(bool __x)
42117 {
42118 if (__x)
42119 *_M_p |= _M_mask;
42120 else
42121 *_M_p &= ~_M_mask;
42122 return *this;
42123 }
42124
42125 _Bit_reference&
42126 operator=(const _Bit_reference& __x)
42127 { return *this = bool(__x); }
42128
42129 bool
42130 operator==(const _Bit_reference& __x) const
42131 { return bool(*this) == bool(__x); }
42132
42133 bool
42134 operator<(const _Bit_reference& __x) const
42135 { return !bool(*this) && bool(__x); }
42136
42137 void
42138 flip()
42139 { *_M_p ^= _M_mask; }
42140 };
42141
42142 struct _Bit_iterator_base
42143 : public std::iterator<std::random_access_iterator_tag, bool>
42144 {
42145 _Bit_type * _M_p;
42146 unsigned int _M_offset;
42147
42148 _Bit_iterator_base(_Bit_type * __x, unsigned int __y)
42149 : _M_p(__x), _M_offset(__y) { }
42150
42151 void
42152 _M_bump_up()
42153 {
42154 if (_M_offset++ == int(_S_word_bit) - 1)
42155 {
42156 _M_offset = 0;
42157 ++_M_p;
42158 }
42159 }
42160
42161 void
42162 _M_bump_down()
42163 {
42164 if (_M_offset-- == 0)
42165 {
42166 _M_offset = int(_S_word_bit) - 1;
42167 --_M_p;
42168 }
42169 }
42170
42171 void
42172 _M_incr(ptrdiff_t __i)
42173 {
42174 difference_type __n = __i + _M_offset;
42175 _M_p += __n / int(_S_word_bit);
42176 __n = __n % int(_S_word_bit);
42177 if (__n < 0)
42178 {
42179 __n += int(_S_word_bit);
42180 --_M_p;
42181 }
42182 _M_offset = static_cast<unsigned int>(__n);
42183 }
42184
42185 bool
42186 operator==(const _Bit_iterator_base& __i) const
42187 { return _M_p == __i._M_p && _M_offset == __i._M_offset; }
42188
42189 bool
42190 operator<(const _Bit_iterator_base& __i) const
42191 {
42192 return _M_p < __i._M_p
42193 || (_M_p == __i._M_p && _M_offset < __i._M_offset);
42194 }
42195
42196 bool
42197 operator!=(const _Bit_iterator_base& __i) const
42198 { return !(*this == __i); }
42199
42200 bool
42201 operator>(const _Bit_iterator_base& __i) const
42202 { return __i < *this; }
42203
42204 bool
42205 operator<=(const _Bit_iterator_base& __i) const
42206 { return !(__i < *this); }
42207
42208 bool
42209 operator>=(const _Bit_iterator_base& __i) const
42210 { return !(*this < __i); }
42211 };
42212
42213 inline ptrdiff_t
42214 operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
42215 {
42216 return (int(_S_word_bit) * (__x._M_p - __y._M_p)
42217 + __x._M_offset - __y._M_offset);
42218 }
42219
42220 struct _Bit_iterator : public _Bit_iterator_base
42221 {
42222 typedef _Bit_reference reference;
42223 typedef _Bit_reference* pointer;
42224 typedef _Bit_iterator iterator;
42225
42226 _Bit_iterator() : _Bit_iterator_base(0, 0) { }
42227
42228 _Bit_iterator(_Bit_type * __x, unsigned int __y)
42229 : _Bit_iterator_base(__x, __y) { }
42230
42231 reference
42232 operator*() const
42233 { return reference(_M_p, 1UL << _M_offset); }
42234
42235 iterator&
42236 operator++()
42237 {
42238 _M_bump_up();
42239 return *this;
42240 }
42241
42242 iterator
42243 operator++(int)
42244 {
42245 iterator __tmp = *this;
42246 _M_bump_up();
42247 return __tmp;
42248 }
42249
42250 iterator&
42251 operator--()
42252 {
42253 _M_bump_down();
42254 return *this;
42255 }
42256
42257 iterator
42258 operator--(int)
42259 {
42260 iterator __tmp = *this;
42261 _M_bump_down();
42262 return __tmp;
42263 }
42264
42265 iterator&
42266 operator+=(difference_type __i)
42267 {
42268 _M_incr(__i);
42269 return *this;
42270 }
42271
42272 iterator&
42273 operator-=(difference_type __i)
42274 {
42275 *this += -__i;
42276 return *this;
42277 }
42278
42279 iterator
42280 operator+(difference_type __i) const
42281 {
42282 iterator __tmp = *this;
42283 return __tmp += __i;
42284 }
42285
42286 iterator
42287 operator-(difference_type __i) const
42288 {
42289 iterator __tmp = *this;
42290 return __tmp -= __i;
42291 }
42292
42293 reference
42294 operator[](difference_type __i) const
42295 { return *(*this + __i); }
42296 };
42297
42298 inline _Bit_iterator
42299 operator+(ptrdiff_t __n, const _Bit_iterator& __x)
42300 { return __x + __n; }
42301
42302 struct _Bit_const_iterator : public _Bit_iterator_base
42303 {
42304 typedef bool reference;
42305 typedef bool const_reference;
42306 typedef const bool* pointer;
42307 typedef _Bit_const_iterator const_iterator;
42308
42309 _Bit_const_iterator() : _Bit_iterator_base(0, 0) { }
42310
42311 _Bit_const_iterator(_Bit_type * __x, unsigned int __y)
42312 : _Bit_iterator_base(__x, __y) { }
42313
42314 _Bit_const_iterator(const _Bit_iterator& __x)
42315 : _Bit_iterator_base(__x._M_p, __x._M_offset) { }
42316
42317 const_reference
42318 operator*() const
42319 { return _Bit_reference(_M_p, 1UL << _M_offset); }
42320
42321 const_iterator&
42322 operator++()
42323 {
42324 _M_bump_up();
42325 return *this;
42326 }
42327
42328 const_iterator
42329 operator++(int)
42330 {
42331 const_iterator __tmp = *this;
42332 _M_bump_up();
42333 return __tmp;
42334 }
42335
42336 const_iterator&
42337 operator--()
42338 {
42339 _M_bump_down();
42340 return *this;
42341 }
42342
42343 const_iterator
42344 operator--(int)
42345 {
42346 const_iterator __tmp = *this;
42347 _M_bump_down();
42348 return __tmp;
42349 }
42350
42351 const_iterator&
42352 operator+=(difference_type __i)
42353 {
42354 _M_incr(__i);
42355 return *this;
42356 }
42357
42358 const_iterator&
42359 operator-=(difference_type __i)
42360 {
42361 *this += -__i;
42362 return *this;
42363 }
42364
42365 const_iterator
42366 operator+(difference_type __i) const
42367 {
42368 const_iterator __tmp = *this;
42369 return __tmp += __i;
42370 }
42371
42372 const_iterator
42373 operator-(difference_type __i) const
42374 {
42375 const_iterator __tmp = *this;
42376 return __tmp -= __i;
42377 }
42378
42379 const_reference
42380 operator[](difference_type __i) const
42381 { return *(*this + __i); }
42382 };
42383
42384 inline _Bit_const_iterator
42385 operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
42386 { return __x + __n; }
42387
42388 inline void
42389 __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x)
42390 {
42391 for (; __first != __last; ++__first)
42392 *__first = __x;
42393 }
42394
42395 inline void
42396 fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
42397 {
42398 if (__first._M_p != __last._M_p)
42399 {
42400 std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0);
42401 __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x);
42402 __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x);
42403 }
42404 else
42405 __fill_bvector(__first, __last, __x);
42406 }
42407
42408 template<typename _Alloc>
42409 struct _Bvector_base
42410 {
42411 typedef typename _Alloc::template rebind<_Bit_type>::other
42412 _Bit_alloc_type;
42413
42414 struct _Bvector_impl
42415 : public _Bit_alloc_type
42416 {
42417 _Bit_iterator _M_start;
42418 _Bit_iterator _M_finish;
42419 _Bit_type* _M_end_of_storage;
42420
42421 _Bvector_impl()
42422 : _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0)
42423 { }
42424
42425 _Bvector_impl(const _Bit_alloc_type& __a)
42426 : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0)
42427 { }
42428 };
42429
42430 public:
42431 typedef _Alloc allocator_type;
42432
42433 _Bit_alloc_type&
42434 _M_get_Bit_allocator()
42435 { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); }
42436
42437 const _Bit_alloc_type&
42438 _M_get_Bit_allocator() const
42439 { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); }
42440
42441 allocator_type
42442 get_allocator() const
42443 { return allocator_type(_M_get_Bit_allocator()); }
42444
42445 _Bvector_base()
42446 : _M_impl() { }
42447
42448 _Bvector_base(const allocator_type& __a)
42449 : _M_impl(__a) { }
42450 # 431 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 3
42451 ~_Bvector_base()
42452 { this->_M_deallocate(); }
42453
42454 protected:
42455 _Bvector_impl _M_impl;
42456
42457 _Bit_type*
42458 _M_allocate(size_t __n)
42459 { return _M_impl.allocate((__n + int(_S_word_bit) - 1)
42460 / int(_S_word_bit)); }
42461
42462 void
42463 _M_deallocate()
42464 {
42465 if (_M_impl._M_start._M_p)
42466 _M_impl.deallocate(_M_impl._M_start._M_p,
42467 _M_impl._M_end_of_storage - _M_impl._M_start._M_p);
42468 }
42469 };
42470
42471
42472 }
42473
42474
42475
42476
42477 namespace std __attribute__ ((__visibility__ ("default")))
42478 {
42479
42480 # 478 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 3
42481 template<typename _Alloc>
42482 class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
42483 {
42484 typedef _Bvector_base<_Alloc> _Base;
42485
42486
42487
42488
42489
42490 public:
42491 typedef bool value_type;
42492 typedef size_t size_type;
42493 typedef ptrdiff_t difference_type;
42494 typedef _Bit_reference reference;
42495 typedef bool const_reference;
42496 typedef _Bit_reference* pointer;
42497 typedef const bool* const_pointer;
42498 typedef _Bit_iterator iterator;
42499 typedef _Bit_const_iterator const_iterator;
42500 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
42501 typedef std::reverse_iterator<iterator> reverse_iterator;
42502 typedef _Alloc allocator_type;
42503
42504 allocator_type get_allocator() const
42505 { return _Base::get_allocator(); }
42506
42507 protected:
42508 using _Base::_M_allocate;
42509 using _Base::_M_deallocate;
42510 using _Base::_M_get_Bit_allocator;
42511
42512 public:
42513 vector()
42514 : _Base() { }
42515
42516 explicit
42517 vector(const allocator_type& __a)
42518 : _Base(__a) { }
42519
42520 explicit
42521 vector(size_type __n, const bool& __value = bool(),
42522 const allocator_type& __a = allocator_type())
42523 : _Base(__a)
42524 {
42525 _M_initialize(__n);
42526 std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage,
42527 __value ? ~0 : 0);
42528 }
42529
42530 vector(const vector& __x)
42531 : _Base(__x._M_get_Bit_allocator())
42532 {
42533 _M_initialize(__x.size());
42534 _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
42535 }
42536 # 547 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 3
42537 template<typename _InputIterator>
42538 vector(_InputIterator __first, _InputIterator __last,
42539 const allocator_type& __a = allocator_type())
42540 : _Base(__a)
42541 {
42542 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
42543 _M_initialize_dispatch(__first, __last, _Integral());
42544 }
42545
42546 ~vector() { }
42547
42548 vector&
42549 operator=(const vector& __x)
42550 {
42551 if (&__x == this)
42552 return *this;
42553 if (__x.size() > capacity())
42554 {
42555 this->_M_deallocate();
42556 _M_initialize(__x.size());
42557 }
42558 this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
42559 begin());
42560 return *this;
42561 }
42562 # 596 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 3
42563 void
42564 assign(size_type __n, const bool& __x)
42565 { _M_fill_assign(__n, __x); }
42566
42567 template<typename _InputIterator>
42568 void
42569 assign(_InputIterator __first, _InputIterator __last)
42570 {
42571 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
42572 _M_assign_dispatch(__first, __last, _Integral());
42573 }
42574
42575
42576
42577
42578
42579
42580
42581 iterator
42582 begin()
42583 { return this->_M_impl._M_start; }
42584
42585 const_iterator
42586 begin() const
42587 { return this->_M_impl._M_start; }
42588
42589 iterator
42590 end()
42591 { return this->_M_impl._M_finish; }
42592
42593 const_iterator
42594 end() const
42595 { return this->_M_impl._M_finish; }
42596
42597 reverse_iterator
42598 rbegin()
42599 { return reverse_iterator(end()); }
42600
42601 const_reverse_iterator
42602 rbegin() const
42603 { return const_reverse_iterator(end()); }
42604
42605 reverse_iterator
42606 rend()
42607 { return reverse_iterator(begin()); }
42608
42609 const_reverse_iterator
42610 rend() const
42611 { return const_reverse_iterator(begin()); }
42612 # 664 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_bvector.h" 3
42613 size_type
42614 size() const
42615 { return size_type(end() - begin()); }
42616
42617 size_type
42618 max_size() const
42619 {
42620 const size_type __isize =
42621 __gnu_cxx::__numeric_traits<difference_type>::__max
42622 - int(_S_word_bit) + 1;
42623 const size_type __asize = _M_get_Bit_allocator().max_size();
42624 return (__asize <= __isize / int(_S_word_bit)
42625 ? __asize * int(_S_word_bit) : __isize);
42626 }
42627
42628 size_type
42629 capacity() const
42630 { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0)
42631 - begin()); }
42632
42633 bool
42634 empty() const
42635 { return begin() == end(); }
42636
42637 reference
42638 operator[](size_type __n)
42639 {
42640 return *iterator(this->_M_impl._M_start._M_p
42641 + __n / int(_S_word_bit), __n % int(_S_word_bit));
42642 }
42643
42644 const_reference
42645 operator[](size_type __n) const
42646 {
42647 return *const_iterator(this->_M_impl._M_start._M_p
42648 + __n / int(_S_word_bit), __n % int(_S_word_bit));
42649 }
42650
42651 protected:
42652 void
42653 _M_range_check(size_type __n) const
42654 {
42655 if (__n >= this->size())
42656 __throw_out_of_range(("vector<bool>::_M_range_check"));
42657 }
42658
42659 public:
42660 reference
42661 at(size_type __n)
42662 { _M_range_check(__n); return (*this)[__n]; }
42663
42664 const_reference
42665 at(size_type __n) const
42666 { _M_range_check(__n); return (*this)[__n]; }
42667
42668 void
42669 reserve(size_type __n);
42670
42671 reference
42672 front()
42673 { return *begin(); }
42674
42675 const_reference
42676 front() const
42677 { return *begin(); }
42678
42679 reference
42680 back()
42681 { return *(end() - 1); }
42682
42683 const_reference
42684 back() const
42685 { return *(end() - 1); }
42686
42687
42688
42689
42690
42691
42692 void
42693 data() { }
42694
42695 void
42696 push_back(bool __x)
42697 {
42698 if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
42699 *this->_M_impl._M_finish++ = __x;
42700 else
42701 _M_insert_aux(end(), __x);
42702 }
42703
42704 void
42705 swap(vector& __x)
42706 {
42707 std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
42708 std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
42709 std::swap(this->_M_impl._M_end_of_storage,
42710 __x._M_impl._M_end_of_storage);
42711
42712
42713
42714 std::__alloc_swap<typename _Base::_Bit_alloc_type>::
42715 _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator());
42716 }
42717
42718
42719 static void
42720 swap(reference __x, reference __y)
42721 {
42722 bool __tmp = __x;
42723 __x = __y;
42724 __y = __tmp;
42725 }
42726
42727 iterator
42728 insert(iterator __position, const bool& __x = bool())
42729 {
42730 const difference_type __n = __position - begin();
42731 if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage
42732 && __position == end())
42733 *this->_M_impl._M_finish++ = __x;
42734 else
42735 _M_insert_aux(__position, __x);
42736 return begin() + __n;
42737 }
42738
42739 template<typename _InputIterator>
42740 void
42741 insert(iterator __position,
42742 _InputIterator __first, _InputIterator __last)
42743 {
42744 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
42745 _M_insert_dispatch(__position, __first, __last, _Integral());
42746 }
42747
42748 void
42749 insert(iterator __position, size_type __n, const bool& __x)
42750 { _M_fill_insert(__position, __n, __x); }
42751
42752
42753
42754
42755
42756
42757 void
42758 pop_back()
42759 { --this->_M_impl._M_finish; }
42760
42761 iterator
42762 erase(iterator __position)
42763 {
42764 if (__position + 1 != end())
42765 std::copy(__position + 1, end(), __position);
42766 --this->_M_impl._M_finish;
42767 return __position;
42768 }
42769
42770 iterator
42771 erase(iterator __first, iterator __last)
42772 {
42773 if (__first != __last)
42774 _M_erase_at_end(std::copy(__last, end(), __first));
42775 return __first;
42776 }
42777
42778 void
42779 resize(size_type __new_size, bool __x = bool())
42780 {
42781 if (__new_size < size())
42782 _M_erase_at_end(begin() + difference_type(__new_size));
42783 else
42784 insert(end(), __new_size - size(), __x);
42785 }
42786
42787
42788
42789
42790
42791
42792
42793 void
42794 flip()
42795 {
42796 for (_Bit_type * __p = this->_M_impl._M_start._M_p;
42797 __p != this->_M_impl._M_end_of_storage; ++__p)
42798 *__p = ~*__p;
42799 }
42800
42801 void
42802 clear()
42803 { _M_erase_at_end(begin()); }
42804
42805
42806 protected:
42807
42808 iterator
42809 _M_copy_aligned(const_iterator __first, const_iterator __last,
42810 iterator __result)
42811 {
42812 _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p);
42813 return std::copy(const_iterator(__last._M_p, 0), __last,
42814 iterator(__q, 0));
42815 }
42816
42817 void
42818 _M_initialize(size_type __n)
42819 {
42820 _Bit_type* __q = this->_M_allocate(__n);
42821 this->_M_impl._M_end_of_storage = (__q
42822 + ((__n + int(_S_word_bit) - 1)
42823 / int(_S_word_bit)));
42824 this->_M_impl._M_start = iterator(__q, 0);
42825 this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
42826 }
42827
42828
42829
42830
42831
42832 template<typename _Integer>
42833 void
42834 _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
42835 {
42836 _M_initialize(static_cast<size_type>(__n));
42837 std::fill(this->_M_impl._M_start._M_p,
42838 this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
42839 }
42840
42841 template<typename _InputIterator>
42842 void
42843 _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
42844 __false_type)
42845 { _M_initialize_range(__first, __last,
42846 std::__iterator_category(__first)); }
42847
42848 template<typename _InputIterator>
42849 void
42850 _M_initialize_range(_InputIterator __first, _InputIterator __last,
42851 std::input_iterator_tag)
42852 {
42853 for (; __first != __last; ++__first)
42854 push_back(*__first);
42855 }
42856
42857 template<typename _ForwardIterator>
42858 void
42859 _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
42860 std::forward_iterator_tag)
42861 {
42862 const size_type __n = std::distance(__first, __last);
42863 _M_initialize(__n);
42864 std::copy(__first, __last, this->_M_impl._M_start);
42865 }
42866
42867
42868
42869 template<typename _Integer>
42870 void
42871 _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
42872 { _M_fill_assign(__n, __val); }
42873
42874 template<class _InputIterator>
42875 void
42876 _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
42877 __false_type)
42878 { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
42879
42880 void
42881 _M_fill_assign(size_t __n, bool __x)
42882 {
42883 if (__n > size())
42884 {
42885 std::fill(this->_M_impl._M_start._M_p,
42886 this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
42887 insert(end(), __n - size(), __x);
42888 }
42889 else
42890 {
42891 _M_erase_at_end(begin() + __n);
42892 std::fill(this->_M_impl._M_start._M_p,
42893 this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
42894 }
42895 }
42896
42897 template<typename _InputIterator>
42898 void
42899 _M_assign_aux(_InputIterator __first, _InputIterator __last,
42900 std::input_iterator_tag)
42901 {
42902 iterator __cur = begin();
42903 for (; __first != __last && __cur != end(); ++__cur, ++__first)
42904 *__cur = *__first;
42905 if (__first == __last)
42906 _M_erase_at_end(__cur);
42907 else
42908 insert(end(), __first, __last);
42909 }
42910
42911 template<typename _ForwardIterator>
42912 void
42913 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
42914 std::forward_iterator_tag)
42915 {
42916 const size_type __len = std::distance(__first, __last);
42917 if (__len < size())
42918 _M_erase_at_end(std::copy(__first, __last, begin()));
42919 else
42920 {
42921 _ForwardIterator __mid = __first;
42922 std::advance(__mid, size());
42923 std::copy(__first, __mid, begin());
42924 insert(end(), __mid, __last);
42925 }
42926 }
42927
42928
42929
42930
42931
42932 template<typename _Integer>
42933 void
42934 _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
42935 __true_type)
42936 { _M_fill_insert(__pos, __n, __x); }
42937
42938 template<typename _InputIterator>
42939 void
42940 _M_insert_dispatch(iterator __pos,
42941 _InputIterator __first, _InputIterator __last,
42942 __false_type)
42943 { _M_insert_range(__pos, __first, __last,
42944 std::__iterator_category(__first)); }
42945
42946 void
42947 _M_fill_insert(iterator __position, size_type __n, bool __x);
42948
42949 template<typename _InputIterator>
42950 void
42951 _M_insert_range(iterator __pos, _InputIterator __first,
42952 _InputIterator __last, std::input_iterator_tag)
42953 {
42954 for (; __first != __last; ++__first)
42955 {
42956 __pos = insert(__pos, *__first);
42957 ++__pos;
42958 }
42959 }
42960
42961 template<typename _ForwardIterator>
42962 void
42963 _M_insert_range(iterator __position, _ForwardIterator __first,
42964 _ForwardIterator __last, std::forward_iterator_tag);
42965
42966 void
42967 _M_insert_aux(iterator __position, bool __x);
42968
42969 size_type
42970 _M_check_len(size_type __n, const char* __s) const
42971 {
42972 if (max_size() - size() < __n)
42973 __throw_length_error((__s));
42974
42975 const size_type __len = size() + std::max(size(), __n);
42976 return (__len < size() || __len > max_size()) ? max_size() : __len;
42977 }
42978
42979 void
42980 _M_erase_at_end(iterator __pos)
42981 { this->_M_impl._M_finish = __pos; }
42982 };
42983
42984
42985 }
42986 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/vector" 2 3
42987
42988
42989
42990 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/vector.tcc" 1 3
42991 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/vector.tcc" 3
42992 namespace std __attribute__ ((__visibility__ ("default")))
42993 {
42994
42995
42996 template<typename _Tp, typename _Alloc>
42997 void
42998 vector<_Tp, _Alloc>::
42999 reserve(size_type __n)
43000 {
43001 if (__n > this->max_size())
43002 __throw_length_error(("vector::reserve"));
43003 if (this->capacity() < __n)
43004 {
43005 const size_type __old_size = size();
43006 pointer __tmp = _M_allocate_and_copy(__n,
43007 (this->_M_impl._M_start),
43008 (this->_M_impl._M_finish));
43009 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
43010 _M_get_Tp_allocator());
43011 _M_deallocate(this->_M_impl._M_start,
43012 this->_M_impl._M_end_of_storage
43013 - this->_M_impl._M_start);
43014 this->_M_impl._M_start = __tmp;
43015 this->_M_impl._M_finish = __tmp + __old_size;
43016 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
43017 }
43018 }
43019 # 106 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/vector.tcc" 3
43020 template<typename _Tp, typename _Alloc>
43021 typename vector<_Tp, _Alloc>::iterator
43022 vector<_Tp, _Alloc>::
43023 insert(iterator __position, const value_type& __x)
43024 {
43025 const size_type __n = __position - begin();
43026 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
43027 && __position == end())
43028 {
43029 this->_M_impl.construct(this->_M_impl._M_finish, __x);
43030 ++this->_M_impl._M_finish;
43031 }
43032 else
43033 {
43034 # 128 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/vector.tcc" 3
43035 _M_insert_aux(__position, __x);
43036 }
43037 return iterator(this->_M_impl._M_start + __n);
43038 }
43039
43040 template<typename _Tp, typename _Alloc>
43041 typename vector<_Tp, _Alloc>::iterator
43042 vector<_Tp, _Alloc>::
43043 erase(iterator __position)
43044 {
43045 if (__position + 1 != end())
43046 std::copy(__position + 1, end(), __position);
43047 --this->_M_impl._M_finish;
43048 this->_M_impl.destroy(this->_M_impl._M_finish);
43049 return __position;
43050 }
43051
43052 template<typename _Tp, typename _Alloc>
43053 typename vector<_Tp, _Alloc>::iterator
43054 vector<_Tp, _Alloc>::
43055 erase(iterator __first, iterator __last)
43056 {
43057 if (__first != __last)
43058 {
43059 if (__last != end())
43060 std::copy(__last, end(), __first);
43061 _M_erase_at_end(__first.base() + (end() - __last));
43062 }
43063 return __first;
43064 }
43065
43066 template<typename _Tp, typename _Alloc>
43067 vector<_Tp, _Alloc>&
43068 vector<_Tp, _Alloc>::
43069 operator=(const vector<_Tp, _Alloc>& __x)
43070 {
43071 if (&__x != this)
43072 {
43073 const size_type __xlen = __x.size();
43074 if (__xlen > capacity())
43075 {
43076 pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
43077 __x.end());
43078 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
43079 _M_get_Tp_allocator());
43080 _M_deallocate(this->_M_impl._M_start,
43081 this->_M_impl._M_end_of_storage
43082 - this->_M_impl._M_start);
43083 this->_M_impl._M_start = __tmp;
43084 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
43085 }
43086 else if (size() >= __xlen)
43087 {
43088 std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
43089 end(), _M_get_Tp_allocator());
43090 }
43091 else
43092 {
43093 std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
43094 this->_M_impl._M_start);
43095 std::__uninitialized_copy_a(__x._M_impl._M_start + size(),
43096 __x._M_impl._M_finish,
43097 this->_M_impl._M_finish,
43098 _M_get_Tp_allocator());
43099 }
43100 this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
43101 }
43102 return *this;
43103 }
43104
43105 template<typename _Tp, typename _Alloc>
43106 void
43107 vector<_Tp, _Alloc>::
43108 _M_fill_assign(size_t __n, const value_type& __val)
43109 {
43110 if (__n > capacity())
43111 {
43112 vector __tmp(__n, __val, _M_get_Tp_allocator());
43113 __tmp.swap(*this);
43114 }
43115 else if (__n > size())
43116 {
43117 std::fill(begin(), end(), __val);
43118 std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
43119 __n - size(), __val,
43120 _M_get_Tp_allocator());
43121 this->_M_impl._M_finish += __n - size();
43122 }
43123 else
43124 _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
43125 }
43126
43127 template<typename _Tp, typename _Alloc>
43128 template<typename _InputIterator>
43129 void
43130 vector<_Tp, _Alloc>::
43131 _M_assign_aux(_InputIterator __first, _InputIterator __last,
43132 std::input_iterator_tag)
43133 {
43134 pointer __cur(this->_M_impl._M_start);
43135 for (; __first != __last && __cur != this->_M_impl._M_finish;
43136 ++__cur, ++__first)
43137 *__cur = *__first;
43138 if (__first == __last)
43139 _M_erase_at_end(__cur);
43140 else
43141 insert(end(), __first, __last);
43142 }
43143
43144 template<typename _Tp, typename _Alloc>
43145 template<typename _ForwardIterator>
43146 void
43147 vector<_Tp, _Alloc>::
43148 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
43149 std::forward_iterator_tag)
43150 {
43151 const size_type __len = std::distance(__first, __last);
43152
43153 if (__len > capacity())
43154 {
43155 pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
43156 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
43157 _M_get_Tp_allocator());
43158 _M_deallocate(this->_M_impl._M_start,
43159 this->_M_impl._M_end_of_storage
43160 - this->_M_impl._M_start);
43161 this->_M_impl._M_start = __tmp;
43162 this->_M_impl._M_finish = this->_M_impl._M_start + __len;
43163 this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
43164 }
43165 else if (size() >= __len)
43166 _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
43167 else
43168 {
43169 _ForwardIterator __mid = __first;
43170 std::advance(__mid, size());
43171 std::copy(__first, __mid, this->_M_impl._M_start);
43172 this->_M_impl._M_finish =
43173 std::__uninitialized_copy_a(__mid, __last,
43174 this->_M_impl._M_finish,
43175 _M_get_Tp_allocator());
43176 }
43177 }
43178 # 298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/vector.tcc" 3
43179 template<typename _Tp, typename _Alloc>
43180 void
43181 vector<_Tp, _Alloc>::
43182 _M_insert_aux(iterator __position, const _Tp& __x)
43183
43184 {
43185 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
43186 {
43187 this->_M_impl.construct(this->_M_impl._M_finish,
43188 (*(this->_M_impl._M_finish - 1))
43189 );
43190 ++this->_M_impl._M_finish;
43191
43192 _Tp __x_copy = __x;
43193
43194 std::copy_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1)
43195
43196 ;
43197
43198 *__position = __x_copy;
43199
43200
43201
43202 }
43203 else
43204 {
43205 const size_type __len =
43206 _M_check_len(size_type(1), "vector::_M_insert_aux");
43207 const size_type __elems_before = __position - begin();
43208 pointer __new_start(this->_M_allocate(__len));
43209 pointer __new_finish(__new_start);
43210 try
43211 {
43212
43213
43214
43215
43216 this->_M_impl.construct(__new_start + __elems_before,
43217
43218
43219
43220 __x);
43221
43222 __new_finish = 0;
43223
43224 __new_finish =
43225 std::__uninitialized_move_a(this->_M_impl._M_start,
43226 __position.base(), __new_start,
43227 _M_get_Tp_allocator());
43228 ++__new_finish;
43229
43230 __new_finish =
43231 std::__uninitialized_move_a(__position.base(),
43232 this->_M_impl._M_finish,
43233 __new_finish,
43234 _M_get_Tp_allocator());
43235 }
43236 catch(...)
43237 {
43238 if (!__new_finish)
43239 this->_M_impl.destroy(__new_start + __elems_before);
43240 else
43241 std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator());
43242 _M_deallocate(__new_start, __len);
43243 throw;
43244 }
43245 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
43246 _M_get_Tp_allocator());
43247 _M_deallocate(this->_M_impl._M_start,
43248 this->_M_impl._M_end_of_storage
43249 - this->_M_impl._M_start);
43250 this->_M_impl._M_start = __new_start;
43251 this->_M_impl._M_finish = __new_finish;
43252 this->_M_impl._M_end_of_storage = __new_start + __len;
43253 }
43254 }
43255
43256 template<typename _Tp, typename _Alloc>
43257 void
43258 vector<_Tp, _Alloc>::
43259 _M_fill_insert(iterator __position, size_type __n, const value_type& __x)
43260 {
43261 if (__n != 0)
43262 {
43263 if (size_type(this->_M_impl._M_end_of_storage
43264 - this->_M_impl._M_finish) >= __n)
43265 {
43266 value_type __x_copy = __x;
43267 const size_type __elems_after = end() - __position;
43268 pointer __old_finish(this->_M_impl._M_finish);
43269 if (__elems_after > __n)
43270 {
43271 std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
43272 this->_M_impl._M_finish,
43273 this->_M_impl._M_finish,
43274 _M_get_Tp_allocator());
43275 this->_M_impl._M_finish += __n;
43276 std::copy_backward(__position.base(), __old_finish - __n, __old_finish)
43277 ;
43278 std::fill(__position.base(), __position.base() + __n,
43279 __x_copy);
43280 }
43281 else
43282 {
43283 std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
43284 __n - __elems_after,
43285 __x_copy,
43286 _M_get_Tp_allocator());
43287 this->_M_impl._M_finish += __n - __elems_after;
43288 std::__uninitialized_move_a(__position.base(), __old_finish,
43289 this->_M_impl._M_finish,
43290 _M_get_Tp_allocator());
43291 this->_M_impl._M_finish += __elems_after;
43292 std::fill(__position.base(), __old_finish, __x_copy);
43293 }
43294 }
43295 else
43296 {
43297 const size_type __len =
43298 _M_check_len(__n, "vector::_M_fill_insert");
43299 const size_type __elems_before = __position - begin();
43300 pointer __new_start(this->_M_allocate(__len));
43301 pointer __new_finish(__new_start);
43302 try
43303 {
43304
43305 std::__uninitialized_fill_n_a(__new_start + __elems_before,
43306 __n, __x,
43307 _M_get_Tp_allocator());
43308 __new_finish = 0;
43309
43310 __new_finish =
43311 std::__uninitialized_move_a(this->_M_impl._M_start,
43312 __position.base(),
43313 __new_start,
43314 _M_get_Tp_allocator());
43315 __new_finish += __n;
43316
43317 __new_finish =
43318 std::__uninitialized_move_a(__position.base(),
43319 this->_M_impl._M_finish,
43320 __new_finish,
43321 _M_get_Tp_allocator());
43322 }
43323 catch(...)
43324 {
43325 if (!__new_finish)
43326 std::_Destroy(__new_start + __elems_before,
43327 __new_start + __elems_before + __n,
43328 _M_get_Tp_allocator());
43329 else
43330 std::_Destroy(__new_start, __new_finish,
43331 _M_get_Tp_allocator());
43332 _M_deallocate(__new_start, __len);
43333 throw;
43334 }
43335 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
43336 _M_get_Tp_allocator());
43337 _M_deallocate(this->_M_impl._M_start,
43338 this->_M_impl._M_end_of_storage
43339 - this->_M_impl._M_start);
43340 this->_M_impl._M_start = __new_start;
43341 this->_M_impl._M_finish = __new_finish;
43342 this->_M_impl._M_end_of_storage = __new_start + __len;
43343 }
43344 }
43345 }
43346 # 519 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/vector.tcc" 3
43347 template<typename _Tp, typename _Alloc>
43348 template<typename _InputIterator>
43349 void
43350 vector<_Tp, _Alloc>::
43351 _M_range_insert(iterator __pos, _InputIterator __first,
43352 _InputIterator __last, std::input_iterator_tag)
43353 {
43354 for (; __first != __last; ++__first)
43355 {
43356 __pos = insert(__pos, *__first);
43357 ++__pos;
43358 }
43359 }
43360
43361 template<typename _Tp, typename _Alloc>
43362 template<typename _ForwardIterator>
43363 void
43364 vector<_Tp, _Alloc>::
43365 _M_range_insert(iterator __position, _ForwardIterator __first,
43366 _ForwardIterator __last, std::forward_iterator_tag)
43367 {
43368 if (__first != __last)
43369 {
43370 const size_type __n = std::distance(__first, __last);
43371 if (size_type(this->_M_impl._M_end_of_storage
43372 - this->_M_impl._M_finish) >= __n)
43373 {
43374 const size_type __elems_after = end() - __position;
43375 pointer __old_finish(this->_M_impl._M_finish);
43376 if (__elems_after > __n)
43377 {
43378 std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
43379 this->_M_impl._M_finish,
43380 this->_M_impl._M_finish,
43381 _M_get_Tp_allocator());
43382 this->_M_impl._M_finish += __n;
43383 std::copy_backward(__position.base(), __old_finish - __n, __old_finish)
43384 ;
43385 std::copy(__first, __last, __position);
43386 }
43387 else
43388 {
43389 _ForwardIterator __mid = __first;
43390 std::advance(__mid, __elems_after);
43391 std::__uninitialized_copy_a(__mid, __last,
43392 this->_M_impl._M_finish,
43393 _M_get_Tp_allocator());
43394 this->_M_impl._M_finish += __n - __elems_after;
43395 std::__uninitialized_move_a(__position.base(),
43396 __old_finish,
43397 this->_M_impl._M_finish,
43398 _M_get_Tp_allocator());
43399 this->_M_impl._M_finish += __elems_after;
43400 std::copy(__first, __mid, __position);
43401 }
43402 }
43403 else
43404 {
43405 const size_type __len =
43406 _M_check_len(__n, "vector::_M_range_insert");
43407 pointer __new_start(this->_M_allocate(__len));
43408 pointer __new_finish(__new_start);
43409 try
43410 {
43411 __new_finish =
43412 std::__uninitialized_move_a(this->_M_impl._M_start,
43413 __position.base(),
43414 __new_start,
43415 _M_get_Tp_allocator());
43416 __new_finish =
43417 std::__uninitialized_copy_a(__first, __last,
43418 __new_finish,
43419 _M_get_Tp_allocator());
43420 __new_finish =
43421 std::__uninitialized_move_a(__position.base(),
43422 this->_M_impl._M_finish,
43423 __new_finish,
43424 _M_get_Tp_allocator());
43425 }
43426 catch(...)
43427 {
43428 std::_Destroy(__new_start, __new_finish,
43429 _M_get_Tp_allocator());
43430 _M_deallocate(__new_start, __len);
43431 throw;
43432 }
43433 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
43434 _M_get_Tp_allocator());
43435 _M_deallocate(this->_M_impl._M_start,
43436 this->_M_impl._M_end_of_storage
43437 - this->_M_impl._M_start);
43438 this->_M_impl._M_start = __new_start;
43439 this->_M_impl._M_finish = __new_finish;
43440 this->_M_impl._M_end_of_storage = __new_start + __len;
43441 }
43442 }
43443 }
43444
43445
43446
43447
43448 template<typename _Alloc>
43449 void
43450 vector<bool, _Alloc>::
43451 reserve(size_type __n)
43452 {
43453 if (__n > this->max_size())
43454 __throw_length_error(("vector::reserve"));
43455 if (this->capacity() < __n)
43456 {
43457 _Bit_type* __q = this->_M_allocate(__n);
43458 this->_M_impl._M_finish = _M_copy_aligned(begin(), end(),
43459 iterator(__q, 0));
43460 this->_M_deallocate();
43461 this->_M_impl._M_start = iterator(__q, 0);
43462 this->_M_impl._M_end_of_storage = (__q + (__n + int(_S_word_bit) - 1)
43463 / int(_S_word_bit));
43464 }
43465 }
43466
43467 template<typename _Alloc>
43468 void
43469 vector<bool, _Alloc>::
43470 _M_fill_insert(iterator __position, size_type __n, bool __x)
43471 {
43472 if (__n == 0)
43473 return;
43474 if (capacity() - size() >= __n)
43475 {
43476 std::copy_backward(__position, end(),
43477 this->_M_impl._M_finish + difference_type(__n));
43478 std::fill(__position, __position + difference_type(__n), __x);
43479 this->_M_impl._M_finish += difference_type(__n);
43480 }
43481 else
43482 {
43483 const size_type __len =
43484 _M_check_len(__n, "vector<bool>::_M_fill_insert");
43485 _Bit_type * __q = this->_M_allocate(__len);
43486 iterator __i = _M_copy_aligned(begin(), __position,
43487 iterator(__q, 0));
43488 std::fill(__i, __i + difference_type(__n), __x);
43489 this->_M_impl._M_finish = std::copy(__position, end(),
43490 __i + difference_type(__n));
43491 this->_M_deallocate();
43492 this->_M_impl._M_end_of_storage = (__q + ((__len
43493 + int(_S_word_bit) - 1)
43494 / int(_S_word_bit)));
43495 this->_M_impl._M_start = iterator(__q, 0);
43496 }
43497 }
43498
43499 template<typename _Alloc>
43500 template<typename _ForwardIterator>
43501 void
43502 vector<bool, _Alloc>::
43503 _M_insert_range(iterator __position, _ForwardIterator __first,
43504 _ForwardIterator __last, std::forward_iterator_tag)
43505 {
43506 if (__first != __last)
43507 {
43508 size_type __n = std::distance(__first, __last);
43509 if (capacity() - size() >= __n)
43510 {
43511 std::copy_backward(__position, end(),
43512 this->_M_impl._M_finish
43513 + difference_type(__n));
43514 std::copy(__first, __last, __position);
43515 this->_M_impl._M_finish += difference_type(__n);
43516 }
43517 else
43518 {
43519 const size_type __len =
43520 _M_check_len(__n, "vector<bool>::_M_insert_range");
43521 _Bit_type * __q = this->_M_allocate(__len);
43522 iterator __i = _M_copy_aligned(begin(), __position,
43523 iterator(__q, 0));
43524 __i = std::copy(__first, __last, __i);
43525 this->_M_impl._M_finish = std::copy(__position, end(), __i);
43526 this->_M_deallocate();
43527 this->_M_impl._M_end_of_storage = (__q
43528 + ((__len
43529 + int(_S_word_bit) - 1)
43530 / int(_S_word_bit)));
43531 this->_M_impl._M_start = iterator(__q, 0);
43532 }
43533 }
43534 }
43535
43536 template<typename _Alloc>
43537 void
43538 vector<bool, _Alloc>::
43539 _M_insert_aux(iterator __position, bool __x)
43540 {
43541 if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
43542 {
43543 std::copy_backward(__position, this->_M_impl._M_finish,
43544 this->_M_impl._M_finish + 1);
43545 *__position = __x;
43546 ++this->_M_impl._M_finish;
43547 }
43548 else
43549 {
43550 const size_type __len =
43551 _M_check_len(size_type(1), "vector<bool>::_M_insert_aux");
43552 _Bit_type * __q = this->_M_allocate(__len);
43553 iterator __i = _M_copy_aligned(begin(), __position,
43554 iterator(__q, 0));
43555 *__i++ = __x;
43556 this->_M_impl._M_finish = std::copy(__position, end(), __i);
43557 this->_M_deallocate();
43558 this->_M_impl._M_end_of_storage = (__q + ((__len
43559 + int(_S_word_bit) - 1)
43560 / int(_S_word_bit)));
43561 this->_M_impl._M_start = iterator(__q, 0);
43562 }
43563 }
43564
43565
43566 }
43567 # 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/vector" 2 3
43568 # 27 "../boost/filesystem/v3/path_traits.hpp" 2
43569 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/list" 1 3
43570 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/list" 3
43571
43572 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/list" 3
43573
43574
43575
43576
43577 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 1 3
43578 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43579 namespace std __attribute__ ((__visibility__ ("default")))
43580 {
43581 namespace __detail
43582 {
43583
43584 # 76 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43585 struct _List_node_base
43586 {
43587 _List_node_base* _M_next;
43588 _List_node_base* _M_prev;
43589
43590 static void
43591 swap(_List_node_base& __x, _List_node_base& __y) throw ();
43592
43593 void
43594 _M_transfer(_List_node_base* const __first,
43595 _List_node_base* const __last) throw ();
43596
43597 void
43598 _M_reverse() throw ();
43599
43600 void
43601 _M_hook(_List_node_base* const __position) throw ();
43602
43603 void
43604 _M_unhook() throw ();
43605 };
43606
43607
43608 }
43609
43610
43611
43612
43613 template<typename _Tp>
43614 struct _List_node : public __detail::_List_node_base
43615 {
43616
43617 _Tp _M_data;
43618
43619
43620
43621
43622
43623
43624
43625 };
43626
43627
43628
43629
43630
43631
43632 template<typename _Tp>
43633 struct _List_iterator
43634 {
43635 typedef _List_iterator<_Tp> _Self;
43636 typedef _List_node<_Tp> _Node;
43637
43638 typedef ptrdiff_t difference_type;
43639 typedef std::bidirectional_iterator_tag iterator_category;
43640 typedef _Tp value_type;
43641 typedef _Tp* pointer;
43642 typedef _Tp& reference;
43643
43644 _List_iterator()
43645 : _M_node() { }
43646
43647 explicit
43648 _List_iterator(__detail::_List_node_base* __x)
43649 : _M_node(__x) { }
43650
43651
43652 reference
43653 operator*() const
43654 { return static_cast<_Node*>(_M_node)->_M_data; }
43655
43656 pointer
43657 operator->() const
43658 { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); }
43659
43660 _Self&
43661 operator++()
43662 {
43663 _M_node = _M_node->_M_next;
43664 return *this;
43665 }
43666
43667 _Self
43668 operator++(int)
43669 {
43670 _Self __tmp = *this;
43671 _M_node = _M_node->_M_next;
43672 return __tmp;
43673 }
43674
43675 _Self&
43676 operator--()
43677 {
43678 _M_node = _M_node->_M_prev;
43679 return *this;
43680 }
43681
43682 _Self
43683 operator--(int)
43684 {
43685 _Self __tmp = *this;
43686 _M_node = _M_node->_M_prev;
43687 return __tmp;
43688 }
43689
43690 bool
43691 operator==(const _Self& __x) const
43692 { return _M_node == __x._M_node; }
43693
43694 bool
43695 operator!=(const _Self& __x) const
43696 { return _M_node != __x._M_node; }
43697
43698
43699 __detail::_List_node_base* _M_node;
43700 };
43701
43702
43703
43704
43705
43706
43707 template<typename _Tp>
43708 struct _List_const_iterator
43709 {
43710 typedef _List_const_iterator<_Tp> _Self;
43711 typedef const _List_node<_Tp> _Node;
43712 typedef _List_iterator<_Tp> iterator;
43713
43714 typedef ptrdiff_t difference_type;
43715 typedef std::bidirectional_iterator_tag iterator_category;
43716 typedef _Tp value_type;
43717 typedef const _Tp* pointer;
43718 typedef const _Tp& reference;
43719
43720 _List_const_iterator()
43721 : _M_node() { }
43722
43723 explicit
43724 _List_const_iterator(const __detail::_List_node_base* __x)
43725 : _M_node(__x) { }
43726
43727 _List_const_iterator(const iterator& __x)
43728 : _M_node(__x._M_node) { }
43729
43730
43731
43732 reference
43733 operator*() const
43734 { return static_cast<_Node*>(_M_node)->_M_data; }
43735
43736 pointer
43737 operator->() const
43738 { return std::__addressof(static_cast<_Node*>(_M_node)->_M_data); }
43739
43740 _Self&
43741 operator++()
43742 {
43743 _M_node = _M_node->_M_next;
43744 return *this;
43745 }
43746
43747 _Self
43748 operator++(int)
43749 {
43750 _Self __tmp = *this;
43751 _M_node = _M_node->_M_next;
43752 return __tmp;
43753 }
43754
43755 _Self&
43756 operator--()
43757 {
43758 _M_node = _M_node->_M_prev;
43759 return *this;
43760 }
43761
43762 _Self
43763 operator--(int)
43764 {
43765 _Self __tmp = *this;
43766 _M_node = _M_node->_M_prev;
43767 return __tmp;
43768 }
43769
43770 bool
43771 operator==(const _Self& __x) const
43772 { return _M_node == __x._M_node; }
43773
43774 bool
43775 operator!=(const _Self& __x) const
43776 { return _M_node != __x._M_node; }
43777
43778
43779 const __detail::_List_node_base* _M_node;
43780 };
43781
43782 template<typename _Val>
43783 inline bool
43784 operator==(const _List_iterator<_Val>& __x,
43785 const _List_const_iterator<_Val>& __y)
43786 { return __x._M_node == __y._M_node; }
43787
43788 template<typename _Val>
43789 inline bool
43790 operator!=(const _List_iterator<_Val>& __x,
43791 const _List_const_iterator<_Val>& __y)
43792 { return __x._M_node != __y._M_node; }
43793
43794
43795
43796 template<typename _Tp, typename _Alloc>
43797 class _List_base
43798 {
43799 protected:
43800 # 304 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43801 typedef typename _Alloc::template rebind<_List_node<_Tp> >::other
43802 _Node_alloc_type;
43803
43804 typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
43805
43806 struct _List_impl
43807 : public _Node_alloc_type
43808 {
43809 __detail::_List_node_base _M_node;
43810
43811 _List_impl()
43812 : _Node_alloc_type(), _M_node()
43813 { }
43814
43815 _List_impl(const _Node_alloc_type& __a)
43816 : _Node_alloc_type(__a), _M_node()
43817 { }
43818 };
43819
43820 _List_impl _M_impl;
43821
43822 _List_node<_Tp>*
43823 _M_get_node()
43824 { return _M_impl._Node_alloc_type::allocate(1); }
43825
43826 void
43827 _M_put_node(_List_node<_Tp>* __p)
43828 { _M_impl._Node_alloc_type::deallocate(__p, 1); }
43829
43830 public:
43831 typedef _Alloc allocator_type;
43832
43833 _Node_alloc_type&
43834 _M_get_Node_allocator()
43835 { return *static_cast<_Node_alloc_type*>(&this->_M_impl); }
43836
43837 const _Node_alloc_type&
43838 _M_get_Node_allocator() const
43839 { return *static_cast<const _Node_alloc_type*>(&this->_M_impl); }
43840
43841 _Tp_alloc_type
43842 _M_get_Tp_allocator() const
43843 { return _Tp_alloc_type(_M_get_Node_allocator()); }
43844
43845 allocator_type
43846 get_allocator() const
43847 { return allocator_type(_M_get_Node_allocator()); }
43848
43849 _List_base()
43850 : _M_impl()
43851 { _M_init(); }
43852
43853 _List_base(const allocator_type& __a)
43854 : _M_impl(__a)
43855 { _M_init(); }
43856 # 371 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43857 ~_List_base()
43858 { _M_clear(); }
43859
43860 void
43861 _M_clear();
43862
43863 void
43864 _M_init()
43865 {
43866 this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
43867 this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
43868 }
43869 };
43870 # 428 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43871 template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
43872 class list : protected _List_base<_Tp, _Alloc>
43873 {
43874
43875 typedef typename _Alloc::value_type _Alloc_value_type;
43876
43877
43878
43879 typedef _List_base<_Tp, _Alloc> _Base;
43880 typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
43881
43882 public:
43883 typedef _Tp value_type;
43884 typedef typename _Tp_alloc_type::pointer pointer;
43885 typedef typename _Tp_alloc_type::const_pointer const_pointer;
43886 typedef typename _Tp_alloc_type::reference reference;
43887 typedef typename _Tp_alloc_type::const_reference const_reference;
43888 typedef _List_iterator<_Tp> iterator;
43889 typedef _List_const_iterator<_Tp> const_iterator;
43890 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
43891 typedef std::reverse_iterator<iterator> reverse_iterator;
43892 typedef size_t size_type;
43893 typedef ptrdiff_t difference_type;
43894 typedef _Alloc allocator_type;
43895
43896 protected:
43897
43898
43899 typedef _List_node<_Tp> _Node;
43900
43901 using _Base::_M_impl;
43902 using _Base::_M_put_node;
43903 using _Base::_M_get_node;
43904 using _Base::_M_get_Tp_allocator;
43905 using _Base::_M_get_Node_allocator;
43906
43907
43908
43909
43910
43911
43912
43913 _Node*
43914 _M_create_node(const value_type& __x)
43915 {
43916 _Node* __p = this->_M_get_node();
43917 try
43918 {
43919 _M_get_Tp_allocator().construct
43920 (std::__addressof(__p->_M_data), __x);
43921 }
43922 catch(...)
43923 {
43924 _M_put_node(__p);
43925 throw;
43926 }
43927 return __p;
43928 }
43929 # 506 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43930 public:
43931
43932
43933
43934
43935
43936 list()
43937 : _Base() { }
43938
43939
43940
43941
43942
43943 explicit
43944 list(const allocator_type& __a)
43945 : _Base(__a) { }
43946 # 557 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43947 explicit
43948 list(size_type __n, const value_type& __value = value_type(),
43949 const allocator_type& __a = allocator_type())
43950 : _Base(__a)
43951 { _M_fill_initialize(__n, __value); }
43952 # 571 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43953 list(const list& __x)
43954 : _Base(__x._M_get_Node_allocator())
43955 { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
43956 # 610 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43957 template<typename _InputIterator>
43958 list(_InputIterator __first, _InputIterator __last,
43959 const allocator_type& __a = allocator_type())
43960 : _Base(__a)
43961 {
43962
43963 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
43964 _M_initialize_dispatch(__first, __last, _Integral());
43965 }
43966 # 635 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43967 list&
43968 operator=(const list& __x);
43969 # 681 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43970 void
43971 assign(size_type __n, const value_type& __val)
43972 { _M_fill_assign(__n, __val); }
43973 # 697 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43974 template<typename _InputIterator>
43975 void
43976 assign(_InputIterator __first, _InputIterator __last)
43977 {
43978
43979 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
43980 _M_assign_dispatch(__first, __last, _Integral());
43981 }
43982 # 720 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
43983 allocator_type
43984 get_allocator() const
43985 { return _Base::get_allocator(); }
43986
43987
43988
43989
43990
43991
43992 iterator
43993 begin()
43994 { return iterator(this->_M_impl._M_node._M_next); }
43995
43996
43997
43998
43999
44000
44001 const_iterator
44002 begin() const
44003 { return const_iterator(this->_M_impl._M_node._M_next); }
44004
44005
44006
44007
44008
44009
44010 iterator
44011 end()
44012 { return iterator(&this->_M_impl._M_node); }
44013
44014
44015
44016
44017
44018
44019 const_iterator
44020 end() const
44021 { return const_iterator(&this->_M_impl._M_node); }
44022
44023
44024
44025
44026
44027
44028 reverse_iterator
44029 rbegin()
44030 { return reverse_iterator(end()); }
44031
44032
44033
44034
44035
44036
44037 const_reverse_iterator
44038 rbegin() const
44039 { return const_reverse_iterator(end()); }
44040
44041
44042
44043
44044
44045
44046 reverse_iterator
44047 rend()
44048 { return reverse_iterator(begin()); }
44049
44050
44051
44052
44053
44054
44055 const_reverse_iterator
44056 rend() const
44057 { return const_reverse_iterator(begin()); }
44058 # 839 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44059 bool
44060 empty() const
44061 { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; }
44062
44063
44064 size_type
44065 size() const
44066 { return std::distance(begin(), end()); }
44067
44068
44069 size_type
44070 max_size() const
44071 { return _M_get_Node_allocator().max_size(); }
44072 # 889 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44073 void
44074 resize(size_type __new_size, value_type __x = value_type());
44075
44076
44077
44078
44079
44080
44081
44082 reference
44083 front()
44084 { return *begin(); }
44085
44086
44087
44088
44089
44090 const_reference
44091 front() const
44092 { return *begin(); }
44093
44094
44095
44096
44097
44098 reference
44099 back()
44100 {
44101 iterator __tmp = end();
44102 --__tmp;
44103 return *__tmp;
44104 }
44105
44106
44107
44108
44109
44110 const_reference
44111 back() const
44112 {
44113 const_iterator __tmp = end();
44114 --__tmp;
44115 return *__tmp;
44116 }
44117 # 945 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44118 void
44119 push_front(const value_type& __x)
44120 { this->_M_insert(begin(), __x); }
44121 # 972 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44122 void
44123 pop_front()
44124 { this->_M_erase(begin()); }
44125 # 986 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44126 void
44127 push_back(const value_type& __x)
44128 { this->_M_insert(end(), __x); }
44129 # 1012 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44130 void
44131 pop_back()
44132 { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
44133 # 1045 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44134 iterator
44135 insert(iterator __position, const value_type& __x);
44136 # 1094 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44137 void
44138 insert(iterator __position, size_type __n, const value_type& __x)
44139 {
44140 list __tmp(__n, __x, _M_get_Node_allocator());
44141 splice(__position, __tmp);
44142 }
44143 # 1114 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44144 template<typename _InputIterator>
44145 void
44146 insert(iterator __position, _InputIterator __first,
44147 _InputIterator __last)
44148 {
44149 list __tmp(__first, __last, _M_get_Node_allocator());
44150 splice(__position, __tmp);
44151 }
44152 # 1138 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44153 iterator
44154 erase(iterator __position);
44155 # 1159 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44156 iterator
44157 erase(iterator __first, iterator __last)
44158 {
44159 while (__first != __last)
44160 __first = erase(__first);
44161 return __last;
44162 }
44163 # 1176 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44164 void
44165 swap(list& __x)
44166 {
44167 __detail::_List_node_base::swap(this->_M_impl._M_node,
44168 __x._M_impl._M_node);
44169
44170
44171
44172 std::__alloc_swap<typename _Base::_Node_alloc_type>::
44173 _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator());
44174 }
44175
44176
44177
44178
44179
44180
44181
44182 void
44183 clear()
44184 {
44185 _Base::_M_clear();
44186 _Base::_M_init();
44187 }
44188 # 1213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44189 void
44190
44191
44192
44193 splice(iterator __position, list& __x)
44194
44195 {
44196 if (!__x.empty())
44197 {
44198 _M_check_equal_allocators(__x);
44199
44200 this->_M_transfer(__position, __x.begin(), __x.end());
44201 }
44202 }
44203 # 1243 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44204 void
44205
44206
44207
44208 splice(iterator __position, list& __x, iterator __i)
44209
44210 {
44211 iterator __j = __i;
44212 ++__j;
44213 if (__position == __i || __position == __j)
44214 return;
44215
44216 if (this != &__x)
44217 _M_check_equal_allocators(__x);
44218
44219 this->_M_transfer(__position, __i, __j);
44220 }
44221 # 1279 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44222 void
44223
44224
44225
44226
44227 splice(iterator __position, list& __x, iterator __first,
44228 iterator __last)
44229
44230 {
44231 if (__first != __last)
44232 {
44233 if (this != &__x)
44234 _M_check_equal_allocators(__x);
44235
44236 this->_M_transfer(__position, __first, __last);
44237 }
44238 }
44239 # 1314 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44240 void
44241 remove(const _Tp& __value);
44242 # 1328 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44243 template<typename _Predicate>
44244 void
44245 remove_if(_Predicate);
44246 # 1342 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44247 void
44248 unique();
44249 # 1357 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44250 template<typename _BinaryPredicate>
44251 void
44252 unique(_BinaryPredicate);
44253 # 1378 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44254 void
44255 merge(list& __x);
44256 # 1404 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44257 template<typename _StrictWeakOrdering>
44258 void
44259 merge(list&, _StrictWeakOrdering);
44260
44261
44262
44263
44264
44265
44266
44267 void
44268 reverse()
44269 { this->_M_impl._M_node._M_reverse(); }
44270
44271
44272
44273
44274
44275
44276
44277 void
44278 sort();
44279
44280
44281
44282
44283
44284
44285
44286 template<typename _StrictWeakOrdering>
44287 void
44288 sort(_StrictWeakOrdering);
44289
44290 protected:
44291
44292
44293
44294
44295
44296
44297 template<typename _Integer>
44298 void
44299 _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
44300 { _M_fill_initialize(static_cast<size_type>(__n), __x); }
44301
44302
44303 template<typename _InputIterator>
44304 void
44305 _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
44306 __false_type)
44307 {
44308 for (; __first != __last; ++__first)
44309 push_back(*__first);
44310 }
44311
44312
44313
44314 void
44315 _M_fill_initialize(size_type __n, const value_type& __x)
44316 {
44317 for (; __n; --__n)
44318 push_back(__x);
44319 }
44320 # 1488 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44321 template<typename _Integer>
44322 void
44323 _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
44324 { _M_fill_assign(__n, __val); }
44325
44326
44327 template<typename _InputIterator>
44328 void
44329 _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
44330 __false_type);
44331
44332
44333
44334 void
44335 _M_fill_assign(size_type __n, const value_type& __val);
44336
44337
44338
44339 void
44340 _M_transfer(iterator __position, iterator __first, iterator __last)
44341 { __position._M_node->_M_transfer(__first._M_node, __last._M_node); }
44342
44343
44344
44345 void
44346 _M_insert(iterator __position, const value_type& __x)
44347 {
44348 _Node* __tmp = _M_create_node(__x);
44349 __tmp->_M_hook(__position._M_node);
44350 }
44351 # 1529 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44352 void
44353 _M_erase(iterator __position)
44354 {
44355 __position._M_node->_M_unhook();
44356 _Node* __n = static_cast<_Node*>(__position._M_node);
44357
44358
44359
44360 _M_get_Tp_allocator().destroy(std::__addressof(__n->_M_data));
44361
44362 _M_put_node(__n);
44363 }
44364
44365
44366 void
44367 _M_check_equal_allocators(list& __x)
44368 {
44369 if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
44370 _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
44371 __throw_runtime_error(("list::_M_check_equal_allocators"));
44372 }
44373 };
44374 # 1562 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44375 template<typename _Tp, typename _Alloc>
44376 inline bool
44377 operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
44378 {
44379 typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
44380 const_iterator __end1 = __x.end();
44381 const_iterator __end2 = __y.end();
44382
44383 const_iterator __i1 = __x.begin();
44384 const_iterator __i2 = __y.begin();
44385 while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
44386 {
44387 ++__i1;
44388 ++__i2;
44389 }
44390 return __i1 == __end1 && __i2 == __end2;
44391 }
44392 # 1591 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_list.h" 3
44393 template<typename _Tp, typename _Alloc>
44394 inline bool
44395 operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
44396 { return std::lexicographical_compare(__x.begin(), __x.end(),
44397 __y.begin(), __y.end()); }
44398
44399
44400 template<typename _Tp, typename _Alloc>
44401 inline bool
44402 operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
44403 { return !(__x == __y); }
44404
44405
44406 template<typename _Tp, typename _Alloc>
44407 inline bool
44408 operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
44409 { return __y < __x; }
44410
44411
44412 template<typename _Tp, typename _Alloc>
44413 inline bool
44414 operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
44415 { return !(__y < __x); }
44416
44417
44418 template<typename _Tp, typename _Alloc>
44419 inline bool
44420 operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
44421 { return !(__x < __y); }
44422
44423
44424 template<typename _Tp, typename _Alloc>
44425 inline void
44426 swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
44427 { __x.swap(__y); }
44428
44429
44430 }
44431 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/list" 2 3
44432 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/list.tcc" 1 3
44433 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/list.tcc" 3
44434 namespace std __attribute__ ((__visibility__ ("default")))
44435 {
44436
44437
44438 template<typename _Tp, typename _Alloc>
44439 void
44440 _List_base<_Tp, _Alloc>::
44441 _M_clear()
44442 {
44443 typedef _List_node<_Tp> _Node;
44444 _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next);
44445 while (__cur != &this->_M_impl._M_node)
44446 {
44447 _Node* __tmp = __cur;
44448 __cur = static_cast<_Node*>(__cur->_M_next);
44449
44450
44451
44452 _M_get_Tp_allocator().destroy(std::__addressof(__tmp->_M_data));
44453
44454 _M_put_node(__tmp);
44455 }
44456 }
44457 # 97 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/list.tcc" 3
44458 template<typename _Tp, typename _Alloc>
44459 typename list<_Tp, _Alloc>::iterator
44460 list<_Tp, _Alloc>::
44461 insert(iterator __position, const value_type& __x)
44462 {
44463 _Node* __tmp = _M_create_node(__x);
44464 __tmp->_M_hook(__position._M_node);
44465 return iterator(__tmp);
44466 }
44467
44468 template<typename _Tp, typename _Alloc>
44469 typename list<_Tp, _Alloc>::iterator
44470 list<_Tp, _Alloc>::
44471 erase(iterator __position)
44472 {
44473 iterator __ret = iterator(__position._M_node->_M_next);
44474 _M_erase(__position);
44475 return __ret;
44476 }
44477 # 167 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/list.tcc" 3
44478 template<typename _Tp, typename _Alloc>
44479 void
44480 list<_Tp, _Alloc>::
44481 resize(size_type __new_size, value_type __x)
44482 {
44483 iterator __i = begin();
44484 size_type __len = 0;
44485 for (; __i != end() && __len < __new_size; ++__i, ++__len)
44486 ;
44487 if (__len == __new_size)
44488 erase(__i, end());
44489 else
44490 insert(end(), __new_size - __len, __x);
44491 }
44492
44493
44494 template<typename _Tp, typename _Alloc>
44495 list<_Tp, _Alloc>&
44496 list<_Tp, _Alloc>::
44497 operator=(const list& __x)
44498 {
44499 if (this != &__x)
44500 {
44501 iterator __first1 = begin();
44502 iterator __last1 = end();
44503 const_iterator __first2 = __x.begin();
44504 const_iterator __last2 = __x.end();
44505 for (; __first1 != __last1 && __first2 != __last2;
44506 ++__first1, ++__first2)
44507 *__first1 = *__first2;
44508 if (__first2 == __last2)
44509 erase(__first1, __last1);
44510 else
44511 insert(__last1, __first2, __last2);
44512 }
44513 return *this;
44514 }
44515
44516 template<typename _Tp, typename _Alloc>
44517 void
44518 list<_Tp, _Alloc>::
44519 _M_fill_assign(size_type __n, const value_type& __val)
44520 {
44521 iterator __i = begin();
44522 for (; __i != end() && __n > 0; ++__i, --__n)
44523 *__i = __val;
44524 if (__n > 0)
44525 insert(end(), __n, __val);
44526 else
44527 erase(__i, end());
44528 }
44529
44530 template<typename _Tp, typename _Alloc>
44531 template <typename _InputIterator>
44532 void
44533 list<_Tp, _Alloc>::
44534 _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2,
44535 __false_type)
44536 {
44537 iterator __first1 = begin();
44538 iterator __last1 = end();
44539 for (; __first1 != __last1 && __first2 != __last2;
44540 ++__first1, ++__first2)
44541 *__first1 = *__first2;
44542 if (__first2 == __last2)
44543 erase(__first1, __last1);
44544 else
44545 insert(__last1, __first2, __last2);
44546 }
44547
44548 template<typename _Tp, typename _Alloc>
44549 void
44550 list<_Tp, _Alloc>::
44551 remove(const value_type& __value)
44552 {
44553 iterator __first = begin();
44554 iterator __last = end();
44555 iterator __extra = __last;
44556 while (__first != __last)
44557 {
44558 iterator __next = __first;
44559 ++__next;
44560 if (*__first == __value)
44561 {
44562
44563
44564
44565 if (std::__addressof(*__first) != std::__addressof(__value))
44566 _M_erase(__first);
44567 else
44568 __extra = __first;
44569 }
44570 __first = __next;
44571 }
44572 if (__extra != __last)
44573 _M_erase(__extra);
44574 }
44575
44576 template<typename _Tp, typename _Alloc>
44577 void
44578 list<_Tp, _Alloc>::
44579 unique()
44580 {
44581 iterator __first = begin();
44582 iterator __last = end();
44583 if (__first == __last)
44584 return;
44585 iterator __next = __first;
44586 while (++__next != __last)
44587 {
44588 if (*__first == *__next)
44589 _M_erase(__next);
44590 else
44591 __first = __next;
44592 __next = __first;
44593 }
44594 }
44595
44596 template<typename _Tp, typename _Alloc>
44597 void
44598 list<_Tp, _Alloc>::
44599
44600
44601
44602 merge(list& __x)
44603
44604 {
44605
44606
44607 if (this != &__x)
44608 {
44609 _M_check_equal_allocators(__x);
44610
44611 iterator __first1 = begin();
44612 iterator __last1 = end();
44613 iterator __first2 = __x.begin();
44614 iterator __last2 = __x.end();
44615 while (__first1 != __last1 && __first2 != __last2)
44616 if (*__first2 < *__first1)
44617 {
44618 iterator __next = __first2;
44619 _M_transfer(__first1, __first2, ++__next);
44620 __first2 = __next;
44621 }
44622 else
44623 ++__first1;
44624 if (__first2 != __last2)
44625 _M_transfer(__last1, __first2, __last2);
44626 }
44627 }
44628
44629 template<typename _Tp, typename _Alloc>
44630 template <typename _StrictWeakOrdering>
44631 void
44632 list<_Tp, _Alloc>::
44633
44634
44635
44636 merge(list& __x, _StrictWeakOrdering __comp)
44637
44638 {
44639
44640
44641 if (this != &__x)
44642 {
44643 _M_check_equal_allocators(__x);
44644
44645 iterator __first1 = begin();
44646 iterator __last1 = end();
44647 iterator __first2 = __x.begin();
44648 iterator __last2 = __x.end();
44649 while (__first1 != __last1 && __first2 != __last2)
44650 if (__comp(*__first2, *__first1))
44651 {
44652 iterator __next = __first2;
44653 _M_transfer(__first1, __first2, ++__next);
44654 __first2 = __next;
44655 }
44656 else
44657 ++__first1;
44658 if (__first2 != __last2)
44659 _M_transfer(__last1, __first2, __last2);
44660 }
44661 }
44662
44663 template<typename _Tp, typename _Alloc>
44664 void
44665 list<_Tp, _Alloc>::
44666 sort()
44667 {
44668
44669 if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
44670 && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
44671 {
44672 list __carry;
44673 list __tmp[64];
44674 list * __fill = &__tmp[0];
44675 list * __counter;
44676
44677 do
44678 {
44679 __carry.splice(__carry.begin(), *this, begin());
44680
44681 for(__counter = &__tmp[0];
44682 __counter != __fill && !__counter->empty();
44683 ++__counter)
44684 {
44685 __counter->merge(__carry);
44686 __carry.swap(*__counter);
44687 }
44688 __carry.swap(*__counter);
44689 if (__counter == __fill)
44690 ++__fill;
44691 }
44692 while ( !empty() );
44693
44694 for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
44695 __counter->merge(*(__counter - 1));
44696 swap( *(__fill - 1) );
44697 }
44698 }
44699
44700 template<typename _Tp, typename _Alloc>
44701 template <typename _Predicate>
44702 void
44703 list<_Tp, _Alloc>::
44704 remove_if(_Predicate __pred)
44705 {
44706 iterator __first = begin();
44707 iterator __last = end();
44708 while (__first != __last)
44709 {
44710 iterator __next = __first;
44711 ++__next;
44712 if (__pred(*__first))
44713 _M_erase(__first);
44714 __first = __next;
44715 }
44716 }
44717
44718 template<typename _Tp, typename _Alloc>
44719 template <typename _BinaryPredicate>
44720 void
44721 list<_Tp, _Alloc>::
44722 unique(_BinaryPredicate __binary_pred)
44723 {
44724 iterator __first = begin();
44725 iterator __last = end();
44726 if (__first == __last)
44727 return;
44728 iterator __next = __first;
44729 while (++__next != __last)
44730 {
44731 if (__binary_pred(*__first, *__next))
44732 _M_erase(__next);
44733 else
44734 __first = __next;
44735 __next = __first;
44736 }
44737 }
44738
44739 template<typename _Tp, typename _Alloc>
44740 template <typename _StrictWeakOrdering>
44741 void
44742 list<_Tp, _Alloc>::
44743 sort(_StrictWeakOrdering __comp)
44744 {
44745
44746 if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
44747 && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
44748 {
44749 list __carry;
44750 list __tmp[64];
44751 list * __fill = &__tmp[0];
44752 list * __counter;
44753
44754 do
44755 {
44756 __carry.splice(__carry.begin(), *this, begin());
44757
44758 for(__counter = &__tmp[0];
44759 __counter != __fill && !__counter->empty();
44760 ++__counter)
44761 {
44762 __counter->merge(__carry, __comp);
44763 __carry.swap(*__counter);
44764 }
44765 __carry.swap(*__counter);
44766 if (__counter == __fill)
44767 ++__fill;
44768 }
44769 while ( !empty() );
44770
44771 for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
44772 __counter->merge(*(__counter - 1), __comp);
44773 swap(*(__fill - 1));
44774 }
44775 }
44776
44777
44778 }
44779 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/list" 2 3
44780 # 28 "../boost/filesystem/v3/path_traits.hpp" 2
44781
44782 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/locale" 1 3
44783 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/locale" 3
44784
44785 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/locale" 3
44786
44787
44788
44789
44790 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 1 3
44791 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
44792
44793 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
44794
44795 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ctime" 1 3
44796 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ctime" 3
44797
44798 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ctime" 3
44799 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/ctime" 3
44800 namespace std
44801 {
44802 using ::clock_t;
44803 using ::time_t;
44804 using ::tm;
44805
44806 using ::clock;
44807 using ::difftime;
44808 using ::mktime;
44809 using ::time;
44810 using ::asctime;
44811 using ::ctime;
44812 using ::gmtime;
44813 using ::localtime;
44814 using ::strftime;
44815 }
44816 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 2 3
44817
44818 namespace std __attribute__ ((__visibility__ ("default")))
44819 {
44820
44821 # 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
44822 class time_base
44823 {
44824 public:
44825 enum dateorder { no_order, dmy, mdy, ymd, ydm };
44826 };
44827
44828 template<typename _CharT>
44829 struct __timepunct_cache : public locale::facet
44830 {
44831
44832 static const _CharT* _S_timezones[14];
44833
44834 const _CharT* _M_date_format;
44835 const _CharT* _M_date_era_format;
44836 const _CharT* _M_time_format;
44837 const _CharT* _M_time_era_format;
44838 const _CharT* _M_date_time_format;
44839 const _CharT* _M_date_time_era_format;
44840 const _CharT* _M_am;
44841 const _CharT* _M_pm;
44842 const _CharT* _M_am_pm_format;
44843
44844
44845 const _CharT* _M_day1;
44846 const _CharT* _M_day2;
44847 const _CharT* _M_day3;
44848 const _CharT* _M_day4;
44849 const _CharT* _M_day5;
44850 const _CharT* _M_day6;
44851 const _CharT* _M_day7;
44852
44853
44854 const _CharT* _M_aday1;
44855 const _CharT* _M_aday2;
44856 const _CharT* _M_aday3;
44857 const _CharT* _M_aday4;
44858 const _CharT* _M_aday5;
44859 const _CharT* _M_aday6;
44860 const _CharT* _M_aday7;
44861
44862
44863 const _CharT* _M_month01;
44864 const _CharT* _M_month02;
44865 const _CharT* _M_month03;
44866 const _CharT* _M_month04;
44867 const _CharT* _M_month05;
44868 const _CharT* _M_month06;
44869 const _CharT* _M_month07;
44870 const _CharT* _M_month08;
44871 const _CharT* _M_month09;
44872 const _CharT* _M_month10;
44873 const _CharT* _M_month11;
44874 const _CharT* _M_month12;
44875
44876
44877 const _CharT* _M_amonth01;
44878 const _CharT* _M_amonth02;
44879 const _CharT* _M_amonth03;
44880 const _CharT* _M_amonth04;
44881 const _CharT* _M_amonth05;
44882 const _CharT* _M_amonth06;
44883 const _CharT* _M_amonth07;
44884 const _CharT* _M_amonth08;
44885 const _CharT* _M_amonth09;
44886 const _CharT* _M_amonth10;
44887 const _CharT* _M_amonth11;
44888 const _CharT* _M_amonth12;
44889
44890 bool _M_allocated;
44891
44892 __timepunct_cache(size_t __refs = 0) : facet(__refs),
44893 _M_date_format(0), _M_date_era_format(0), _M_time_format(0),
44894 _M_time_era_format(0), _M_date_time_format(0),
44895 _M_date_time_era_format(0), _M_am(0), _M_pm(0),
44896 _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0),
44897 _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0),
44898 _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0),
44899 _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0),
44900 _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0),
44901 _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0),
44902 _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0),
44903 _M_amonth02(0), _M_amonth03(0), _M_amonth04(0),
44904 _M_amonth05(0), _M_amonth06(0), _M_amonth07(0),
44905 _M_amonth08(0), _M_amonth09(0), _M_amonth10(0),
44906 _M_amonth11(0), _M_amonth12(0), _M_allocated(false)
44907 { }
44908
44909 ~__timepunct_cache();
44910
44911 void
44912 _M_cache(const locale& __loc);
44913
44914 private:
44915 __timepunct_cache&
44916 operator=(const __timepunct_cache&);
44917
44918 explicit
44919 __timepunct_cache(const __timepunct_cache&);
44920 };
44921
44922 template<typename _CharT>
44923 __timepunct_cache<_CharT>::~__timepunct_cache()
44924 {
44925 if (_M_allocated)
44926 {
44927
44928 }
44929 }
44930
44931
44932 template<>
44933 const char*
44934 __timepunct_cache<char>::_S_timezones[14];
44935
44936
44937 template<>
44938 const wchar_t*
44939 __timepunct_cache<wchar_t>::_S_timezones[14];
44940
44941
44942
44943 template<typename _CharT>
44944 const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
44945
44946 template<typename _CharT>
44947 class __timepunct : public locale::facet
44948 {
44949 public:
44950
44951 typedef _CharT __char_type;
44952 typedef basic_string<_CharT> __string_type;
44953 typedef __timepunct_cache<_CharT> __cache_type;
44954
44955 protected:
44956 __cache_type* _M_data;
44957 __c_locale _M_c_locale_timepunct;
44958 const char* _M_name_timepunct;
44959
44960 public:
44961
44962 static locale::id id;
44963
44964 explicit
44965 __timepunct(size_t __refs = 0);
44966
44967 explicit
44968 __timepunct(__cache_type* __cache, size_t __refs = 0);
44969 # 210 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
44970 explicit
44971 __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0);
44972
44973
44974
44975 void
44976 _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,
44977 const tm* __tm) const throw ();
44978
44979 void
44980 _M_date_formats(const _CharT** __date) const
44981 {
44982
44983 __date[0] = _M_data->_M_date_format;
44984 __date[1] = _M_data->_M_date_era_format;
44985 }
44986
44987 void
44988 _M_time_formats(const _CharT** __time) const
44989 {
44990
44991 __time[0] = _M_data->_M_time_format;
44992 __time[1] = _M_data->_M_time_era_format;
44993 }
44994
44995 void
44996 _M_date_time_formats(const _CharT** __dt) const
44997 {
44998
44999 __dt[0] = _M_data->_M_date_time_format;
45000 __dt[1] = _M_data->_M_date_time_era_format;
45001 }
45002
45003 void
45004 _M_am_pm_format(const _CharT* __ampm) const
45005 { __ampm = _M_data->_M_am_pm_format; }
45006
45007 void
45008 _M_am_pm(const _CharT** __ampm) const
45009 {
45010 __ampm[0] = _M_data->_M_am;
45011 __ampm[1] = _M_data->_M_pm;
45012 }
45013
45014 void
45015 _M_days(const _CharT** __days) const
45016 {
45017 __days[0] = _M_data->_M_day1;
45018 __days[1] = _M_data->_M_day2;
45019 __days[2] = _M_data->_M_day3;
45020 __days[3] = _M_data->_M_day4;
45021 __days[4] = _M_data->_M_day5;
45022 __days[5] = _M_data->_M_day6;
45023 __days[6] = _M_data->_M_day7;
45024 }
45025
45026 void
45027 _M_days_abbreviated(const _CharT** __days) const
45028 {
45029 __days[0] = _M_data->_M_aday1;
45030 __days[1] = _M_data->_M_aday2;
45031 __days[2] = _M_data->_M_aday3;
45032 __days[3] = _M_data->_M_aday4;
45033 __days[4] = _M_data->_M_aday5;
45034 __days[5] = _M_data->_M_aday6;
45035 __days[6] = _M_data->_M_aday7;
45036 }
45037
45038 void
45039 _M_months(const _CharT** __months) const
45040 {
45041 __months[0] = _M_data->_M_month01;
45042 __months[1] = _M_data->_M_month02;
45043 __months[2] = _M_data->_M_month03;
45044 __months[3] = _M_data->_M_month04;
45045 __months[4] = _M_data->_M_month05;
45046 __months[5] = _M_data->_M_month06;
45047 __months[6] = _M_data->_M_month07;
45048 __months[7] = _M_data->_M_month08;
45049 __months[8] = _M_data->_M_month09;
45050 __months[9] = _M_data->_M_month10;
45051 __months[10] = _M_data->_M_month11;
45052 __months[11] = _M_data->_M_month12;
45053 }
45054
45055 void
45056 _M_months_abbreviated(const _CharT** __months) const
45057 {
45058 __months[0] = _M_data->_M_amonth01;
45059 __months[1] = _M_data->_M_amonth02;
45060 __months[2] = _M_data->_M_amonth03;
45061 __months[3] = _M_data->_M_amonth04;
45062 __months[4] = _M_data->_M_amonth05;
45063 __months[5] = _M_data->_M_amonth06;
45064 __months[6] = _M_data->_M_amonth07;
45065 __months[7] = _M_data->_M_amonth08;
45066 __months[8] = _M_data->_M_amonth09;
45067 __months[9] = _M_data->_M_amonth10;
45068 __months[10] = _M_data->_M_amonth11;
45069 __months[11] = _M_data->_M_amonth12;
45070 }
45071
45072 protected:
45073 virtual
45074 ~__timepunct();
45075
45076
45077 void
45078 _M_initialize_timepunct(__c_locale __cloc = 0);
45079 };
45080
45081 template<typename _CharT>
45082 locale::id __timepunct<_CharT>::id;
45083
45084
45085 template<>
45086 void
45087 __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
45088
45089 template<>
45090 void
45091 __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
45092
45093
45094 template<>
45095 void
45096 __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
45097
45098 template<>
45099 void
45100 __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
45101 const tm*) const throw ();
45102
45103
45104
45105 }
45106
45107
45108 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/time_members.h" 1 3
45109 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/time_members.h" 3
45110 namespace std __attribute__ ((__visibility__ ("default")))
45111 {
45112
45113
45114 template<typename _CharT>
45115 __timepunct<_CharT>::__timepunct(size_t __refs)
45116 : facet(__refs), _M_data(0), _M_c_locale_timepunct(0),
45117 _M_name_timepunct(_S_get_c_name())
45118 { _M_initialize_timepunct(); }
45119
45120 template<typename _CharT>
45121 __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
45122 : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0),
45123 _M_name_timepunct(_S_get_c_name())
45124 { _M_initialize_timepunct(); }
45125
45126 template<typename _CharT>
45127 __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
45128 size_t __refs)
45129 : facet(__refs), _M_data(0), _M_c_locale_timepunct(0),
45130 _M_name_timepunct(0)
45131 {
45132 if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
45133 {
45134 const size_t __len = __builtin_strlen(__s) + 1;
45135 char* __tmp = new char[__len];
45136 __builtin_memcpy(__tmp, __s, __len);
45137 _M_name_timepunct = __tmp;
45138 }
45139 else
45140 _M_name_timepunct = _S_get_c_name();
45141
45142 try
45143 { _M_initialize_timepunct(__cloc); }
45144 catch(...)
45145 {
45146 if (_M_name_timepunct != _S_get_c_name())
45147 delete [] _M_name_timepunct;
45148 throw;
45149 }
45150 }
45151
45152 template<typename _CharT>
45153 __timepunct<_CharT>::~__timepunct()
45154 {
45155 if (_M_name_timepunct != _S_get_c_name())
45156 delete [] _M_name_timepunct;
45157 delete _M_data;
45158 _S_destroy_c_locale(_M_c_locale_timepunct);
45159 }
45160
45161
45162 }
45163 # 349 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 2 3
45164
45165 namespace std __attribute__ ((__visibility__ ("default")))
45166 {
45167
45168 # 367 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45169 template<typename _CharT, typename _InIter>
45170 class time_get : public locale::facet, public time_base
45171 {
45172 public:
45173
45174
45175
45176 typedef _CharT char_type;
45177 typedef _InIter iter_type;
45178
45179 typedef basic_string<_CharT> __string_type;
45180
45181
45182 static locale::id id;
45183 # 389 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45184 explicit
45185 time_get(size_t __refs = 0)
45186 : facet (__refs) { }
45187 # 406 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45188 dateorder
45189 date_order() const
45190 { return this->do_date_order(); }
45191 # 430 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45192 iter_type
45193 get_time(iter_type __beg, iter_type __end, ios_base& __io,
45194 ios_base::iostate& __err, tm* __tm) const
45195 { return this->do_get_time(__beg, __end, __io, __err, __tm); }
45196 # 455 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45197 iter_type
45198 get_date(iter_type __beg, iter_type __end, ios_base& __io,
45199 ios_base::iostate& __err, tm* __tm) const
45200 { return this->do_get_date(__beg, __end, __io, __err, __tm); }
45201 # 483 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45202 iter_type
45203 get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
45204 ios_base::iostate& __err, tm* __tm) const
45205 { return this->do_get_weekday(__beg, __end, __io, __err, __tm); }
45206 # 512 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45207 iter_type
45208 get_monthname(iter_type __beg, iter_type __end, ios_base& __io,
45209 ios_base::iostate& __err, tm* __tm) const
45210 { return this->do_get_monthname(__beg, __end, __io, __err, __tm); }
45211 # 538 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45212 iter_type
45213 get_year(iter_type __beg, iter_type __end, ios_base& __io,
45214 ios_base::iostate& __err, tm* __tm) const
45215 { return this->do_get_year(__beg, __end, __io, __err, __tm); }
45216
45217 protected:
45218
45219 virtual
45220 ~time_get() { }
45221 # 558 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45222 virtual dateorder
45223 do_date_order() const;
45224 # 576 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45225 virtual iter_type
45226 do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
45227 ios_base::iostate& __err, tm* __tm) const;
45228 # 595 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45229 virtual iter_type
45230 do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
45231 ios_base::iostate& __err, tm* __tm) const;
45232 # 614 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45233 virtual iter_type
45234 do_get_weekday(iter_type __beg, iter_type __end, ios_base&,
45235 ios_base::iostate& __err, tm* __tm) const;
45236 # 633 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45237 virtual iter_type
45238 do_get_monthname(iter_type __beg, iter_type __end, ios_base&,
45239 ios_base::iostate& __err, tm* __tm) const;
45240 # 652 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45241 virtual iter_type
45242 do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
45243 ios_base::iostate& __err, tm* __tm) const;
45244
45245
45246 iter_type
45247 _M_extract_num(iter_type __beg, iter_type __end, int& __member,
45248 int __min, int __max, size_t __len,
45249 ios_base& __io, ios_base::iostate& __err) const;
45250
45251
45252 iter_type
45253 _M_extract_name(iter_type __beg, iter_type __end, int& __member,
45254 const _CharT** __names, size_t __indexlen,
45255 ios_base& __io, ios_base::iostate& __err) const;
45256
45257
45258 iter_type
45259 _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
45260 const _CharT** __names, size_t __indexlen,
45261 ios_base& __io, ios_base::iostate& __err) const;
45262
45263
45264 iter_type
45265 _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
45266 ios_base::iostate& __err, tm* __tm,
45267 const _CharT* __format) const;
45268 };
45269
45270 template<typename _CharT, typename _InIter>
45271 locale::id time_get<_CharT, _InIter>::id;
45272
45273
45274 template<typename _CharT, typename _InIter>
45275 class time_get_byname : public time_get<_CharT, _InIter>
45276 {
45277 public:
45278
45279 typedef _CharT char_type;
45280 typedef _InIter iter_type;
45281
45282 explicit
45283 time_get_byname(const char*, size_t __refs = 0)
45284 : time_get<_CharT, _InIter>(__refs) { }
45285
45286 protected:
45287 virtual
45288 ~time_get_byname() { }
45289 };
45290 # 714 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45291 template<typename _CharT, typename _OutIter>
45292 class time_put : public locale::facet
45293 {
45294 public:
45295
45296
45297
45298 typedef _CharT char_type;
45299 typedef _OutIter iter_type;
45300
45301
45302
45303 static locale::id id;
45304 # 735 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45305 explicit
45306 time_put(size_t __refs = 0)
45307 : facet(__refs) { }
45308 # 754 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45309 iter_type
45310 put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
45311 const _CharT* __beg, const _CharT* __end) const;
45312 # 774 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45313 iter_type
45314 put(iter_type __s, ios_base& __io, char_type __fill,
45315 const tm* __tm, char __format, char __mod = 0) const
45316 { return this->do_put(__s, __io, __fill, __tm, __format, __mod); }
45317
45318 protected:
45319
45320 virtual
45321 ~time_put()
45322 { }
45323 # 801 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45324 virtual iter_type
45325 do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
45326 char __format, char __mod) const;
45327 };
45328
45329 template<typename _CharT, typename _OutIter>
45330 locale::id time_put<_CharT, _OutIter>::id;
45331
45332
45333 template<typename _CharT, typename _OutIter>
45334 class time_put_byname : public time_put<_CharT, _OutIter>
45335 {
45336 public:
45337
45338 typedef _CharT char_type;
45339 typedef _OutIter iter_type;
45340
45341 explicit
45342 time_put_byname(const char*, size_t __refs = 0)
45343 : time_put<_CharT, _OutIter>(__refs)
45344 { };
45345
45346 protected:
45347 virtual
45348 ~time_put_byname() { }
45349 };
45350 # 840 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45351 class money_base
45352 {
45353 public:
45354 enum part { none, space, symbol, sign, value };
45355 struct pattern { char field[4]; };
45356
45357 static const pattern _S_default_pattern;
45358
45359 enum
45360 {
45361 _S_minus,
45362 _S_zero,
45363 _S_end = 11
45364 };
45365
45366
45367
45368 static const char* _S_atoms;
45369
45370
45371
45372 __attribute__ ((__const__)) static pattern
45373 _S_construct_pattern(char __precedes, char __space, char __posn) throw ();
45374 };
45375
45376 template<typename _CharT, bool _Intl>
45377 struct __moneypunct_cache : public locale::facet
45378 {
45379 const char* _M_grouping;
45380 size_t _M_grouping_size;
45381 bool _M_use_grouping;
45382 _CharT _M_decimal_point;
45383 _CharT _M_thousands_sep;
45384 const _CharT* _M_curr_symbol;
45385 size_t _M_curr_symbol_size;
45386 const _CharT* _M_positive_sign;
45387 size_t _M_positive_sign_size;
45388 const _CharT* _M_negative_sign;
45389 size_t _M_negative_sign_size;
45390 int _M_frac_digits;
45391 money_base::pattern _M_pos_format;
45392 money_base::pattern _M_neg_format;
45393
45394
45395
45396
45397 _CharT _M_atoms[money_base::_S_end];
45398
45399 bool _M_allocated;
45400
45401 __moneypunct_cache(size_t __refs = 0) : facet(__refs),
45402 _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false),
45403 _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()),
45404 _M_curr_symbol(0), _M_curr_symbol_size(0),
45405 _M_positive_sign(0), _M_positive_sign_size(0),
45406 _M_negative_sign(0), _M_negative_sign_size(0),
45407 _M_frac_digits(0),
45408 _M_pos_format(money_base::pattern()),
45409 _M_neg_format(money_base::pattern()), _M_allocated(false)
45410 { }
45411
45412 ~__moneypunct_cache();
45413
45414 void
45415 _M_cache(const locale& __loc);
45416
45417 private:
45418 __moneypunct_cache&
45419 operator=(const __moneypunct_cache&);
45420
45421 explicit
45422 __moneypunct_cache(const __moneypunct_cache&);
45423 };
45424
45425 template<typename _CharT, bool _Intl>
45426 __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
45427 {
45428 if (_M_allocated)
45429 {
45430 delete [] _M_grouping;
45431 delete [] _M_curr_symbol;
45432 delete [] _M_positive_sign;
45433 delete [] _M_negative_sign;
45434 }
45435 }
45436 # 933 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45437 template<typename _CharT, bool _Intl>
45438 class moneypunct : public locale::facet, public money_base
45439 {
45440 public:
45441
45442
45443
45444 typedef _CharT char_type;
45445 typedef basic_string<_CharT> string_type;
45446
45447 typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
45448
45449 private:
45450 __cache_type* _M_data;
45451
45452 public:
45453
45454
45455 static const bool intl = _Intl;
45456
45457 static locale::id id;
45458 # 962 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45459 explicit
45460 moneypunct(size_t __refs = 0)
45461 : facet(__refs), _M_data(0)
45462 { _M_initialize_moneypunct(); }
45463 # 975 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45464 explicit
45465 moneypunct(__cache_type* __cache, size_t __refs = 0)
45466 : facet(__refs), _M_data(__cache)
45467 { _M_initialize_moneypunct(); }
45468 # 990 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45469 explicit
45470 moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0)
45471 : facet(__refs), _M_data(0)
45472 { _M_initialize_moneypunct(__cloc, __s); }
45473 # 1004 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45474 char_type
45475 decimal_point() const
45476 { return this->do_decimal_point(); }
45477 # 1017 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45478 char_type
45479 thousands_sep() const
45480 { return this->do_thousands_sep(); }
45481 # 1047 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45482 string
45483 grouping() const
45484 { return this->do_grouping(); }
45485 # 1060 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45486 string_type
45487 curr_symbol() const
45488 { return this->do_curr_symbol(); }
45489 # 1077 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45490 string_type
45491 positive_sign() const
45492 { return this->do_positive_sign(); }
45493 # 1094 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45494 string_type
45495 negative_sign() const
45496 { return this->do_negative_sign(); }
45497 # 1110 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45498 int
45499 frac_digits() const
45500 { return this->do_frac_digits(); }
45501 # 1146 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45502 pattern
45503 pos_format() const
45504 { return this->do_pos_format(); }
45505
45506 pattern
45507 neg_format() const
45508 { return this->do_neg_format(); }
45509
45510
45511 protected:
45512
45513 virtual
45514 ~moneypunct();
45515 # 1168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45516 virtual char_type
45517 do_decimal_point() const
45518 { return _M_data->_M_decimal_point; }
45519 # 1180 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45520 virtual char_type
45521 do_thousands_sep() const
45522 { return _M_data->_M_thousands_sep; }
45523 # 1193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45524 virtual string
45525 do_grouping() const
45526 { return _M_data->_M_grouping; }
45527 # 1206 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45528 virtual string_type
45529 do_curr_symbol() const
45530 { return _M_data->_M_curr_symbol; }
45531 # 1219 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45532 virtual string_type
45533 do_positive_sign() const
45534 { return _M_data->_M_positive_sign; }
45535 # 1232 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45536 virtual string_type
45537 do_negative_sign() const
45538 { return _M_data->_M_negative_sign; }
45539 # 1246 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45540 virtual int
45541 do_frac_digits() const
45542 { return _M_data->_M_frac_digits; }
45543 # 1260 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45544 virtual pattern
45545 do_pos_format() const
45546 { return _M_data->_M_pos_format; }
45547 # 1274 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45548 virtual pattern
45549 do_neg_format() const
45550 { return _M_data->_M_neg_format; }
45551
45552
45553 void
45554 _M_initialize_moneypunct(__c_locale __cloc = 0,
45555 const char* __name = 0);
45556 };
45557
45558 template<typename _CharT, bool _Intl>
45559 locale::id moneypunct<_CharT, _Intl>::id;
45560
45561 template<typename _CharT, bool _Intl>
45562 const bool moneypunct<_CharT, _Intl>::intl;
45563
45564 template<>
45565 moneypunct<char, true>::~moneypunct();
45566
45567 template<>
45568 moneypunct<char, false>::~moneypunct();
45569
45570 template<>
45571 void
45572 moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
45573
45574 template<>
45575 void
45576 moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
45577
45578
45579 template<>
45580 moneypunct<wchar_t, true>::~moneypunct();
45581
45582 template<>
45583 moneypunct<wchar_t, false>::~moneypunct();
45584
45585 template<>
45586 void
45587 moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
45588 const char*);
45589
45590 template<>
45591 void
45592 moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
45593 const char*);
45594
45595
45596
45597 template<typename _CharT, bool _Intl>
45598 class moneypunct_byname : public moneypunct<_CharT, _Intl>
45599 {
45600 public:
45601 typedef _CharT char_type;
45602 typedef basic_string<_CharT> string_type;
45603
45604 static const bool intl = _Intl;
45605
45606 explicit
45607 moneypunct_byname(const char* __s, size_t __refs = 0)
45608 : moneypunct<_CharT, _Intl>(__refs)
45609 {
45610 if (__builtin_strcmp(__s, "C") != 0
45611 && __builtin_strcmp(__s, "POSIX") != 0)
45612 {
45613 __c_locale __tmp;
45614 this->_S_create_c_locale(__tmp, __s);
45615 this->_M_initialize_moneypunct(__tmp);
45616 this->_S_destroy_c_locale(__tmp);
45617 }
45618 }
45619
45620 protected:
45621 virtual
45622 ~moneypunct_byname() { }
45623 };
45624
45625 template<typename _CharT, bool _Intl>
45626 const bool moneypunct_byname<_CharT, _Intl>::intl;
45627
45628
45629 # 1369 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45630 template<typename _CharT, typename _InIter>
45631 class money_get : public locale::facet
45632 {
45633 public:
45634
45635
45636
45637 typedef _CharT char_type;
45638 typedef _InIter iter_type;
45639 typedef basic_string<_CharT> string_type;
45640
45641
45642
45643 static locale::id id;
45644 # 1391 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45645 explicit
45646 money_get(size_t __refs = 0) : facet(__refs) { }
45647 # 1421 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45648 iter_type
45649 get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
45650 ios_base::iostate& __err, long double& __units) const
45651 { return this->do_get(__s, __end, __intl, __io, __err, __units); }
45652 # 1452 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45653 iter_type
45654 get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
45655 ios_base::iostate& __err, string_type& __digits) const
45656 { return this->do_get(__s, __end, __intl, __io, __err, __digits); }
45657
45658 protected:
45659
45660 virtual
45661 ~money_get() { }
45662 # 1475 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45663 virtual iter_type
45664 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
45665 ios_base::iostate& __err, long double& __units) const;
45666 # 1487 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45667 virtual iter_type
45668 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
45669 ios_base::iostate& __err, string_type& __digits) const;
45670 # 1498 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45671 template<bool _Intl>
45672 iter_type
45673 _M_extract(iter_type __s, iter_type __end, ios_base& __io,
45674 ios_base::iostate& __err, string& __digits) const;
45675 };
45676
45677 template<typename _CharT, typename _InIter>
45678 locale::id money_get<_CharT, _InIter>::id;
45679 # 1520 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45680 template<typename _CharT, typename _OutIter>
45681 class money_put : public locale::facet
45682 {
45683 public:
45684
45685
45686 typedef _CharT char_type;
45687 typedef _OutIter iter_type;
45688 typedef basic_string<_CharT> string_type;
45689
45690
45691
45692 static locale::id id;
45693 # 1541 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45694 explicit
45695 money_put(size_t __refs = 0) : facet(__refs) { }
45696 # 1561 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45697 iter_type
45698 put(iter_type __s, bool __intl, ios_base& __io,
45699 char_type __fill, long double __units) const
45700 { return this->do_put(__s, __intl, __io, __fill, __units); }
45701 # 1584 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45702 iter_type
45703 put(iter_type __s, bool __intl, ios_base& __io,
45704 char_type __fill, const string_type& __digits) const
45705 { return this->do_put(__s, __intl, __io, __fill, __digits); }
45706
45707 protected:
45708
45709 virtual
45710 ~money_put() { }
45711 # 1618 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45712 virtual iter_type
45713 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
45714 long double __units) const;
45715 # 1642 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45716 virtual iter_type
45717 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
45718 const string_type& __digits) const;
45719 # 1653 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45720 template<bool _Intl>
45721 iter_type
45722 _M_insert(iter_type __s, ios_base& __io, char_type __fill,
45723 const string_type& __digits) const;
45724 };
45725
45726 template<typename _CharT, typename _OutIter>
45727 locale::id money_put<_CharT, _OutIter>::id;
45728
45729
45730
45731
45732
45733
45734
45735 struct messages_base
45736 {
45737 typedef int catalog;
45738 };
45739 # 1694 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45740 template<typename _CharT>
45741 class messages : public locale::facet, public messages_base
45742 {
45743 public:
45744
45745
45746
45747 typedef _CharT char_type;
45748 typedef basic_string<_CharT> string_type;
45749
45750
45751 protected:
45752
45753
45754 __c_locale _M_c_locale_messages;
45755 const char* _M_name_messages;
45756
45757 public:
45758
45759 static locale::id id;
45760 # 1722 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45761 explicit
45762 messages(size_t __refs = 0);
45763 # 1736 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45764 explicit
45765 messages(__c_locale __cloc, const char* __s, size_t __refs = 0);
45766 # 1749 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45767 catalog
45768 open(const basic_string<char>& __s, const locale& __loc) const
45769 { return this->do_open(__s, __loc); }
45770 # 1767 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45771 catalog
45772 open(const basic_string<char>&, const locale&, const char*) const;
45773 # 1785 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45774 string_type
45775 get(catalog __c, int __set, int __msgid, const string_type& __s) const
45776 { return this->do_get(__c, __set, __msgid, __s); }
45777 # 1796 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45778 void
45779 close(catalog __c) const
45780 { return this->do_close(__c); }
45781
45782 protected:
45783
45784 virtual
45785 ~messages();
45786 # 1816 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45787 virtual catalog
45788 do_open(const basic_string<char>&, const locale&) const;
45789 # 1835 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45790 virtual string_type
45791 do_get(catalog, int, int, const string_type& __dfault) const;
45792
45793
45794
45795
45796
45797
45798 virtual void
45799 do_close(catalog) const;
45800
45801
45802 char*
45803 _M_convert_to_char(const string_type& __msg) const
45804 {
45805
45806 return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str()));
45807 }
45808
45809
45810 string_type
45811 _M_convert_from_char(char*) const
45812 {
45813 # 1892 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 3
45814 return string_type();
45815 }
45816 };
45817
45818 template<typename _CharT>
45819 locale::id messages<_CharT>::id;
45820
45821
45822 template<>
45823 string
45824 messages<char>::do_get(catalog, int, int, const string&) const;
45825
45826
45827 template<>
45828 wstring
45829 messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;
45830
45831
45832
45833 template<typename _CharT>
45834 class messages_byname : public messages<_CharT>
45835 {
45836 public:
45837 typedef _CharT char_type;
45838 typedef basic_string<_CharT> string_type;
45839
45840 explicit
45841 messages_byname(const char* __s, size_t __refs = 0);
45842
45843 protected:
45844 virtual
45845 ~messages_byname()
45846 { }
45847 };
45848
45849
45850 }
45851
45852
45853 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/messages_members.h" 1 3
45854 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/messages_members.h" 3
45855 # 1 "/usr/include/libintl.h" 1 3 4
45856 # 35 "/usr/include/libintl.h" 3 4
45857 extern "C" {
45858
45859
45860
45861
45862 extern char *gettext (__const char *__msgid)
45863 throw () __attribute__ ((__format_arg__ (1)));
45864
45865
45866
45867 extern char *dgettext (__const char *__domainname, __const char *__msgid)
45868 throw () __attribute__ ((__format_arg__ (2)));
45869 extern char *__dgettext (__const char *__domainname, __const char *__msgid)
45870 throw () __attribute__ ((__format_arg__ (2)));
45871
45872
45873
45874 extern char *dcgettext (__const char *__domainname,
45875 __const char *__msgid, int __category)
45876 throw () __attribute__ ((__format_arg__ (2)));
45877 extern char *__dcgettext (__const char *__domainname,
45878 __const char *__msgid, int __category)
45879 throw () __attribute__ ((__format_arg__ (2)));
45880
45881
45882
45883
45884 extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
45885 unsigned long int __n)
45886 throw () __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));
45887
45888
45889
45890 extern char *dngettext (__const char *__domainname, __const char *__msgid1,
45891 __const char *__msgid2, unsigned long int __n)
45892 throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
45893
45894
45895
45896 extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
45897 __const char *__msgid2, unsigned long int __n,
45898 int __category)
45899 throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
45900
45901
45902
45903
45904
45905 extern char *textdomain (__const char *__domainname) throw ();
45906
45907
45908
45909 extern char *bindtextdomain (__const char *__domainname,
45910 __const char *__dirname) throw ();
45911
45912
45913
45914 extern char *bind_textdomain_codeset (__const char *__domainname,
45915 __const char *__codeset) throw ();
45916 # 122 "/usr/include/libintl.h" 3 4
45917 }
45918 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu/bits/messages_members.h" 2 3
45919
45920 namespace std __attribute__ ((__visibility__ ("default")))
45921 {
45922
45923
45924
45925 template<typename _CharT>
45926 messages<_CharT>::messages(size_t __refs)
45927 : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
45928 _M_name_messages(_S_get_c_name())
45929 { }
45930
45931 template<typename _CharT>
45932 messages<_CharT>::messages(__c_locale __cloc, const char* __s,
45933 size_t __refs)
45934 : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0)
45935 {
45936 if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
45937 {
45938 const size_t __len = __builtin_strlen(__s) + 1;
45939 char* __tmp = new char[__len];
45940 __builtin_memcpy(__tmp, __s, __len);
45941 _M_name_messages = __tmp;
45942 }
45943 else
45944 _M_name_messages = _S_get_c_name();
45945
45946
45947 _M_c_locale_messages = _S_clone_c_locale(__cloc);
45948 }
45949
45950 template<typename _CharT>
45951 typename messages<_CharT>::catalog
45952 messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
45953 const char* __dir) const
45954 {
45955 bindtextdomain(__s.c_str(), __dir);
45956 return this->do_open(__s, __loc);
45957 }
45958
45959
45960 template<typename _CharT>
45961 messages<_CharT>::~messages()
45962 {
45963 if (_M_name_messages != _S_get_c_name())
45964 delete [] _M_name_messages;
45965 _S_destroy_c_locale(_M_c_locale_messages);
45966 }
45967
45968 template<typename _CharT>
45969 typename messages<_CharT>::catalog
45970 messages<_CharT>::do_open(const basic_string<char>& __s,
45971 const locale&) const
45972 {
45973
45974
45975 textdomain(__s.c_str());
45976 return 0;
45977 }
45978
45979 template<typename _CharT>
45980 void
45981 messages<_CharT>::do_close(catalog) const
45982 { }
45983
45984
45985 template<typename _CharT>
45986 messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
45987 : messages<_CharT>(__refs)
45988 {
45989 if (this->_M_name_messages != locale::facet::_S_get_c_name())
45990 {
45991 delete [] this->_M_name_messages;
45992 if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0)
45993 {
45994 const size_t __len = __builtin_strlen(__s) + 1;
45995 char* __tmp = new char[__len];
45996 __builtin_memcpy(__tmp, __s, __len);
45997 this->_M_name_messages = __tmp;
45998 }
45999 else
46000 this->_M_name_messages = locale::facet::_S_get_c_name();
46001 }
46002
46003 if (__builtin_strcmp(__s, "C") != 0
46004 && __builtin_strcmp(__s, "POSIX") != 0)
46005 {
46006 this->_S_destroy_c_locale(this->_M_c_locale_messages);
46007 this->_S_create_c_locale(this->_M_c_locale_messages, __s);
46008 }
46009 }
46010
46011
46012 }
46013 # 1932 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 2 3
46014
46015
46016 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 1 3
46017 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46018
46019 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46020
46021 namespace std __attribute__ ((__visibility__ ("default")))
46022 {
46023
46024
46025
46026 class codecvt_base
46027 {
46028 public:
46029 enum result
46030 {
46031 ok,
46032 partial,
46033 error,
46034 noconv
46035 };
46036 };
46037 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46038 template<typename _InternT, typename _ExternT, typename _StateT>
46039 class __codecvt_abstract_base
46040 : public locale::facet, public codecvt_base
46041 {
46042 public:
46043
46044 typedef codecvt_base::result result;
46045 typedef _InternT intern_type;
46046 typedef _ExternT extern_type;
46047 typedef _StateT state_type;
46048 # 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46049 result
46050 out(state_type& __state, const intern_type* __from,
46051 const intern_type* __from_end, const intern_type*& __from_next,
46052 extern_type* __to, extern_type* __to_end,
46053 extern_type*& __to_next) const
46054 {
46055 return this->do_out(__state, __from, __from_end, __from_next,
46056 __to, __to_end, __to_next);
46057 }
46058 # 155 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46059 result
46060 unshift(state_type& __state, extern_type* __to, extern_type* __to_end,
46061 extern_type*& __to_next) const
46062 { return this->do_unshift(__state, __to,__to_end,__to_next); }
46063 # 196 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46064 result
46065 in(state_type& __state, const extern_type* __from,
46066 const extern_type* __from_end, const extern_type*& __from_next,
46067 intern_type* __to, intern_type* __to_end,
46068 intern_type*& __to_next) const
46069 {
46070 return this->do_in(__state, __from, __from_end, __from_next,
46071 __to, __to_end, __to_next);
46072 }
46073
46074 int
46075 encoding() const throw()
46076 { return this->do_encoding(); }
46077
46078 bool
46079 always_noconv() const throw()
46080 { return this->do_always_noconv(); }
46081
46082 int
46083 length(state_type& __state, const extern_type* __from,
46084 const extern_type* __end, size_t __max) const
46085 { return this->do_length(__state, __from, __end, __max); }
46086
46087 int
46088 max_length() const throw()
46089 { return this->do_max_length(); }
46090
46091 protected:
46092 explicit
46093 __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { }
46094
46095 virtual
46096 ~__codecvt_abstract_base() { }
46097 # 237 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46098 virtual result
46099 do_out(state_type& __state, const intern_type* __from,
46100 const intern_type* __from_end, const intern_type*& __from_next,
46101 extern_type* __to, extern_type* __to_end,
46102 extern_type*& __to_next) const = 0;
46103
46104 virtual result
46105 do_unshift(state_type& __state, extern_type* __to,
46106 extern_type* __to_end, extern_type*& __to_next) const = 0;
46107
46108 virtual result
46109 do_in(state_type& __state, const extern_type* __from,
46110 const extern_type* __from_end, const extern_type*& __from_next,
46111 intern_type* __to, intern_type* __to_end,
46112 intern_type*& __to_next) const = 0;
46113
46114 virtual int
46115 do_encoding() const throw() = 0;
46116
46117 virtual bool
46118 do_always_noconv() const throw() = 0;
46119
46120 virtual int
46121 do_length(state_type&, const extern_type* __from,
46122 const extern_type* __end, size_t __max) const = 0;
46123
46124 virtual int
46125 do_max_length() const throw() = 0;
46126 };
46127 # 276 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/codecvt.h" 3
46128 template<typename _InternT, typename _ExternT, typename _StateT>
46129 class codecvt
46130 : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>
46131 {
46132 public:
46133
46134 typedef codecvt_base::result result;
46135 typedef _InternT intern_type;
46136 typedef _ExternT extern_type;
46137 typedef _StateT state_type;
46138
46139 protected:
46140 __c_locale _M_c_locale_codecvt;
46141
46142 public:
46143 static locale::id id;
46144
46145 explicit
46146 codecvt(size_t __refs = 0)
46147 : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs) { }
46148
46149 explicit
46150 codecvt(__c_locale __cloc, size_t __refs = 0);
46151
46152 protected:
46153 virtual
46154 ~codecvt() { }
46155
46156 virtual result
46157 do_out(state_type& __state, const intern_type* __from,
46158 const intern_type* __from_end, const intern_type*& __from_next,
46159 extern_type* __to, extern_type* __to_end,
46160 extern_type*& __to_next) const;
46161
46162 virtual result
46163 do_unshift(state_type& __state, extern_type* __to,
46164 extern_type* __to_end, extern_type*& __to_next) const;
46165
46166 virtual result
46167 do_in(state_type& __state, const extern_type* __from,
46168 const extern_type* __from_end, const extern_type*& __from_next,
46169 intern_type* __to, intern_type* __to_end,
46170 intern_type*& __to_next) const;
46171
46172 virtual int
46173 do_encoding() const throw();
46174
46175 virtual bool
46176 do_always_noconv() const throw();
46177
46178 virtual int
46179 do_length(state_type&, const extern_type* __from,
46180 const extern_type* __end, size_t __max) const;
46181
46182 virtual int
46183 do_max_length() const throw();
46184 };
46185
46186 template<typename _InternT, typename _ExternT, typename _StateT>
46187 locale::id codecvt<_InternT, _ExternT, _StateT>::id;
46188
46189
46190 template<>
46191 class codecvt<char, char, mbstate_t>
46192 : public __codecvt_abstract_base<char, char, mbstate_t>
46193 {
46194 public:
46195
46196 typedef char intern_type;
46197 typedef char extern_type;
46198 typedef mbstate_t state_type;
46199
46200 protected:
46201 __c_locale _M_c_locale_codecvt;
46202
46203 public:
46204 static locale::id id;
46205
46206 explicit
46207 codecvt(size_t __refs = 0);
46208
46209 explicit
46210 codecvt(__c_locale __cloc, size_t __refs = 0);
46211
46212 protected:
46213 virtual
46214 ~codecvt();
46215
46216 virtual result
46217 do_out(state_type& __state, const intern_type* __from,
46218 const intern_type* __from_end, const intern_type*& __from_next,
46219 extern_type* __to, extern_type* __to_end,
46220 extern_type*& __to_next) const;
46221
46222 virtual result
46223 do_unshift(state_type& __state, extern_type* __to,
46224 extern_type* __to_end, extern_type*& __to_next) const;
46225
46226 virtual result
46227 do_in(state_type& __state, const extern_type* __from,
46228 const extern_type* __from_end, const extern_type*& __from_next,
46229 intern_type* __to, intern_type* __to_end,
46230 intern_type*& __to_next) const;
46231
46232 virtual int
46233 do_encoding() const throw();
46234
46235 virtual bool
46236 do_always_noconv() const throw();
46237
46238 virtual int
46239 do_length(state_type&, const extern_type* __from,
46240 const extern_type* __end, size_t __max) const;
46241
46242 virtual int
46243 do_max_length() const throw();
46244 };
46245
46246
46247
46248 template<>
46249 class codecvt<wchar_t, char, mbstate_t>
46250 : public __codecvt_abstract_base<wchar_t, char, mbstate_t>
46251 {
46252 public:
46253
46254 typedef wchar_t intern_type;
46255 typedef char extern_type;
46256 typedef mbstate_t state_type;
46257
46258 protected:
46259 __c_locale _M_c_locale_codecvt;
46260
46261 public:
46262 static locale::id id;
46263
46264 explicit
46265 codecvt(size_t __refs = 0);
46266
46267 explicit
46268 codecvt(__c_locale __cloc, size_t __refs = 0);
46269
46270 protected:
46271 virtual
46272 ~codecvt();
46273
46274 virtual result
46275 do_out(state_type& __state, const intern_type* __from,
46276 const intern_type* __from_end, const intern_type*& __from_next,
46277 extern_type* __to, extern_type* __to_end,
46278 extern_type*& __to_next) const;
46279
46280 virtual result
46281 do_unshift(state_type& __state,
46282 extern_type* __to, extern_type* __to_end,
46283 extern_type*& __to_next) const;
46284
46285 virtual result
46286 do_in(state_type& __state,
46287 const extern_type* __from, const extern_type* __from_end,
46288 const extern_type*& __from_next,
46289 intern_type* __to, intern_type* __to_end,
46290 intern_type*& __to_next) const;
46291
46292 virtual
46293 int do_encoding() const throw();
46294
46295 virtual
46296 bool do_always_noconv() const throw();
46297
46298 virtual
46299 int do_length(state_type&, const extern_type* __from,
46300 const extern_type* __end, size_t __max) const;
46301
46302 virtual int
46303 do_max_length() const throw();
46304 };
46305
46306
46307
46308 template<typename _InternT, typename _ExternT, typename _StateT>
46309 class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>
46310 {
46311 public:
46312 explicit
46313 codecvt_byname(const char* __s, size_t __refs = 0)
46314 : codecvt<_InternT, _ExternT, _StateT>(__refs)
46315 {
46316 if (__builtin_strcmp(__s, "C") != 0
46317 && __builtin_strcmp(__s, "POSIX") != 0)
46318 {
46319 this->_S_destroy_c_locale(this->_M_c_locale_codecvt);
46320 this->_S_create_c_locale(this->_M_c_locale_codecvt, __s);
46321 }
46322 }
46323
46324 protected:
46325 virtual
46326 ~codecvt_byname() { }
46327 };
46328
46329
46330
46331
46332 extern template class codecvt_byname<char, char, mbstate_t>;
46333
46334 extern template
46335 const codecvt<char, char, mbstate_t>&
46336 use_facet<codecvt<char, char, mbstate_t> >(const locale&);
46337
46338 extern template
46339 bool
46340 has_facet<codecvt<char, char, mbstate_t> >(const locale&);
46341
46342
46343 extern template class codecvt_byname<wchar_t, char, mbstate_t>;
46344
46345 extern template
46346 const codecvt<wchar_t, char, mbstate_t>&
46347 use_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
46348
46349 extern template
46350 bool
46351 has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
46352
46353
46354
46355
46356 }
46357 # 1935 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 2 3
46358
46359 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.tcc" 1 3
46360 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.tcc" 3
46361
46362 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.tcc" 3
46363
46364 namespace std __attribute__ ((__visibility__ ("default")))
46365 {
46366
46367
46368 template<typename _CharT, bool _Intl>
46369 struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
46370 {
46371 const __moneypunct_cache<_CharT, _Intl>*
46372 operator() (const locale& __loc) const
46373 {
46374 const size_t __i = moneypunct<_CharT, _Intl>::id._M_id();
46375 const locale::facet** __caches = __loc._M_impl->_M_caches;
46376 if (!__caches[__i])
46377 {
46378 __moneypunct_cache<_CharT, _Intl>* __tmp = 0;
46379 try
46380 {
46381 __tmp = new __moneypunct_cache<_CharT, _Intl>;
46382 __tmp->_M_cache(__loc);
46383 }
46384 catch(...)
46385 {
46386 delete __tmp;
46387 throw;
46388 }
46389 __loc._M_impl->_M_install_cache(__tmp, __i);
46390 }
46391 return static_cast<
46392 const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]);
46393 }
46394 };
46395
46396 template<typename _CharT, bool _Intl>
46397 void
46398 __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
46399 {
46400 _M_allocated = true;
46401
46402 const moneypunct<_CharT, _Intl>& __mp =
46403 use_facet<moneypunct<_CharT, _Intl> >(__loc);
46404
46405 _M_decimal_point = __mp.decimal_point();
46406 _M_thousands_sep = __mp.thousands_sep();
46407 _M_frac_digits = __mp.frac_digits();
46408
46409 char* __grouping = 0;
46410 _CharT* __curr_symbol = 0;
46411 _CharT* __positive_sign = 0;
46412 _CharT* __negative_sign = 0;
46413 try
46414 {
46415 _M_grouping_size = __mp.grouping().size();
46416 __grouping = new char[_M_grouping_size];
46417 __mp.grouping().copy(__grouping, _M_grouping_size);
46418 _M_grouping = __grouping;
46419 _M_use_grouping = (_M_grouping_size
46420 && static_cast<signed char>(_M_grouping[0]) > 0
46421 && (_M_grouping[0]
46422 != __gnu_cxx::__numeric_traits<char>::__max));
46423
46424 _M_curr_symbol_size = __mp.curr_symbol().size();
46425 __curr_symbol = new _CharT[_M_curr_symbol_size];
46426 __mp.curr_symbol().copy(__curr_symbol, _M_curr_symbol_size);
46427 _M_curr_symbol = __curr_symbol;
46428
46429 _M_positive_sign_size = __mp.positive_sign().size();
46430 __positive_sign = new _CharT[_M_positive_sign_size];
46431 __mp.positive_sign().copy(__positive_sign, _M_positive_sign_size);
46432 _M_positive_sign = __positive_sign;
46433
46434 _M_negative_sign_size = __mp.negative_sign().size();
46435 __negative_sign = new _CharT[_M_negative_sign_size];
46436 __mp.negative_sign().copy(__negative_sign, _M_negative_sign_size);
46437 _M_negative_sign = __negative_sign;
46438
46439 _M_pos_format = __mp.pos_format();
46440 _M_neg_format = __mp.neg_format();
46441
46442 const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
46443 __ct.widen(money_base::_S_atoms,
46444 money_base::_S_atoms + money_base::_S_end, _M_atoms);
46445 }
46446 catch(...)
46447 {
46448 delete [] __grouping;
46449 delete [] __curr_symbol;
46450 delete [] __positive_sign;
46451 delete [] __negative_sign;
46452 throw;
46453 }
46454 }
46455
46456
46457
46458 template<typename _CharT, typename _InIter>
46459 template<bool _Intl>
46460 _InIter
46461 money_get<_CharT, _InIter>::
46462 _M_extract(iter_type __beg, iter_type __end, ios_base& __io,
46463 ios_base::iostate& __err, string& __units) const
46464 {
46465 typedef char_traits<_CharT> __traits_type;
46466 typedef typename string_type::size_type size_type;
46467 typedef money_base::part part;
46468 typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
46469
46470 const locale& __loc = __io._M_getloc();
46471 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
46472
46473 __use_cache<__cache_type> __uc;
46474 const __cache_type* __lc = __uc(__loc);
46475 const char_type* __lit = __lc->_M_atoms;
46476
46477
46478 bool __negative = false;
46479
46480 size_type __sign_size = 0;
46481
46482 const bool __mandatory_sign = (__lc->_M_positive_sign_size
46483 && __lc->_M_negative_sign_size);
46484
46485 string __grouping_tmp;
46486 if (__lc->_M_use_grouping)
46487 __grouping_tmp.reserve(32);
46488
46489 int __last_pos = 0;
46490
46491 int __n = 0;
46492
46493 bool __testvalid = true;
46494
46495 bool __testdecfound = false;
46496
46497
46498 string __res;
46499 __res.reserve(32);
46500
46501 const char_type* __lit_zero = __lit + money_base::_S_zero;
46502 const money_base::pattern __p = __lc->_M_neg_format;
46503 for (int __i = 0; __i < 4 && __testvalid; ++__i)
46504 {
46505 const part __which = static_cast<part>(__p.field[__i]);
46506 switch (__which)
46507 {
46508 case money_base::symbol:
46509
46510
46511
46512
46513 if (__io.flags() & ios_base::showbase || __sign_size > 1
46514 || __i == 0
46515 || (__i == 1 && (__mandatory_sign
46516 || (static_cast<part>(__p.field[0])
46517 == money_base::sign)
46518 || (static_cast<part>(__p.field[2])
46519 == money_base::space)))
46520 || (__i == 2 && ((static_cast<part>(__p.field[3])
46521 == money_base::value)
46522 || (__mandatory_sign
46523 && (static_cast<part>(__p.field[3])
46524 == money_base::sign)))))
46525 {
46526 const size_type __len = __lc->_M_curr_symbol_size;
46527 size_type __j = 0;
46528 for (; __beg != __end && __j < __len
46529 && *__beg == __lc->_M_curr_symbol[__j];
46530 ++__beg, ++__j);
46531 if (__j != __len
46532 && (__j || __io.flags() & ios_base::showbase))
46533 __testvalid = false;
46534 }
46535 break;
46536 case money_base::sign:
46537
46538 if (__lc->_M_positive_sign_size && __beg != __end
46539 && *__beg == __lc->_M_positive_sign[0])
46540 {
46541 __sign_size = __lc->_M_positive_sign_size;
46542 ++__beg;
46543 }
46544 else if (__lc->_M_negative_sign_size && __beg != __end
46545 && *__beg == __lc->_M_negative_sign[0])
46546 {
46547 __negative = true;
46548 __sign_size = __lc->_M_negative_sign_size;
46549 ++__beg;
46550 }
46551 else if (__lc->_M_positive_sign_size
46552 && !__lc->_M_negative_sign_size)
46553
46554
46555 __negative = true;
46556 else if (__mandatory_sign)
46557 __testvalid = false;
46558 break;
46559 case money_base::value:
46560
46561
46562 for (; __beg != __end; ++__beg)
46563 {
46564 const char_type __c = *__beg;
46565 const char_type* __q = __traits_type::find(__lit_zero,
46566 10, __c);
46567 if (__q != 0)
46568 {
46569 __res += money_base::_S_atoms[__q - __lit];
46570 ++__n;
46571 }
46572 else if (__c == __lc->_M_decimal_point
46573 && !__testdecfound)
46574 {
46575 if (__lc->_M_frac_digits <= 0)
46576 break;
46577
46578 __last_pos = __n;
46579 __n = 0;
46580 __testdecfound = true;
46581 }
46582 else if (__lc->_M_use_grouping
46583 && __c == __lc->_M_thousands_sep
46584 && !__testdecfound)
46585 {
46586 if (__n)
46587 {
46588
46589 __grouping_tmp += static_cast<char>(__n);
46590 __n = 0;
46591 }
46592 else
46593 {
46594 __testvalid = false;
46595 break;
46596 }
46597 }
46598 else
46599 break;
46600 }
46601 if (__res.empty())
46602 __testvalid = false;
46603 break;
46604 case money_base::space:
46605
46606 if (__beg != __end && __ctype.is(ctype_base::space, *__beg))
46607 ++__beg;
46608 else
46609 __testvalid = false;
46610 case money_base::none:
46611
46612 if (__i != 3)
46613 for (; __beg != __end
46614 && __ctype.is(ctype_base::space, *__beg); ++__beg);
46615 break;
46616 }
46617 }
46618
46619
46620 if (__sign_size > 1 && __testvalid)
46621 {
46622 const char_type* __sign = __negative ? __lc->_M_negative_sign
46623 : __lc->_M_positive_sign;
46624 size_type __i = 1;
46625 for (; __beg != __end && __i < __sign_size
46626 && *__beg == __sign[__i]; ++__beg, ++__i);
46627
46628 if (__i != __sign_size)
46629 __testvalid = false;
46630 }
46631
46632 if (__testvalid)
46633 {
46634
46635 if (__res.size() > 1)
46636 {
46637 const size_type __first = __res.find_first_not_of('0');
46638 const bool __only_zeros = __first == string::npos;
46639 if (__first)
46640 __res.erase(0, __only_zeros ? __res.size() - 1 : __first);
46641 }
46642
46643
46644 if (__negative && __res[0] != '0')
46645 __res.insert(__res.begin(), '-');
46646
46647
46648 if (__grouping_tmp.size())
46649 {
46650
46651 __grouping_tmp += static_cast<char>(__testdecfound ? __last_pos
46652 : __n);
46653 if (!std::__verify_grouping(__lc->_M_grouping,
46654 __lc->_M_grouping_size,
46655 __grouping_tmp))
46656 __err |= ios_base::failbit;
46657 }
46658
46659
46660 if (__testdecfound && __n != __lc->_M_frac_digits)
46661 __testvalid = false;
46662 }
46663
46664
46665 if (!__testvalid)
46666 __err |= ios_base::failbit;
46667 else
46668 __units.swap(__res);
46669
46670
46671 if (__beg == __end)
46672 __err |= ios_base::eofbit;
46673 return __beg;
46674 }
46675 # 362 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.tcc" 3
46676 template<typename _CharT, typename _InIter>
46677 _InIter
46678 money_get<_CharT, _InIter>::
46679 do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
46680 ios_base::iostate& __err, long double& __units) const
46681 {
46682 string __str;
46683 __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
46684 : _M_extract<false>(__beg, __end, __io, __err, __str);
46685 std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
46686 return __beg;
46687 }
46688
46689 template<typename _CharT, typename _InIter>
46690 _InIter
46691 money_get<_CharT, _InIter>::
46692 do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
46693 ios_base::iostate& __err, string_type& __digits) const
46694 {
46695 typedef typename string::size_type size_type;
46696
46697 const locale& __loc = __io._M_getloc();
46698 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
46699
46700 string __str;
46701 __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
46702 : _M_extract<false>(__beg, __end, __io, __err, __str);
46703 const size_type __len = __str.size();
46704 if (__len)
46705 {
46706 __digits.resize(__len);
46707 __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]);
46708 }
46709 return __beg;
46710 }
46711
46712 template<typename _CharT, typename _OutIter>
46713 template<bool _Intl>
46714 _OutIter
46715 money_put<_CharT, _OutIter>::
46716 _M_insert(iter_type __s, ios_base& __io, char_type __fill,
46717 const string_type& __digits) const
46718 {
46719 typedef typename string_type::size_type size_type;
46720 typedef money_base::part part;
46721 typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
46722
46723 const locale& __loc = __io._M_getloc();
46724 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
46725
46726 __use_cache<__cache_type> __uc;
46727 const __cache_type* __lc = __uc(__loc);
46728 const char_type* __lit = __lc->_M_atoms;
46729
46730
46731
46732 const char_type* __beg = __digits.data();
46733
46734 money_base::pattern __p;
46735 const char_type* __sign;
46736 size_type __sign_size;
46737 if (!(*__beg == __lit[money_base::_S_minus]))
46738 {
46739 __p = __lc->_M_pos_format;
46740 __sign = __lc->_M_positive_sign;
46741 __sign_size = __lc->_M_positive_sign_size;
46742 }
46743 else
46744 {
46745 __p = __lc->_M_neg_format;
46746 __sign = __lc->_M_negative_sign;
46747 __sign_size = __lc->_M_negative_sign_size;
46748 if (__digits.size())
46749 ++__beg;
46750 }
46751
46752
46753 size_type __len = __ctype.scan_not(ctype_base::digit, __beg,
46754 __beg + __digits.size()) - __beg;
46755 if (__len)
46756 {
46757
46758
46759
46760 string_type __value;
46761 __value.reserve(2 * __len);
46762
46763
46764
46765 long __paddec = __len - __lc->_M_frac_digits;
46766 if (__paddec > 0)
46767 {
46768 if (__lc->_M_frac_digits < 0)
46769 __paddec = __len;
46770 if (__lc->_M_grouping_size)
46771 {
46772 __value.assign(2 * __paddec, char_type());
46773 _CharT* __vend =
46774 std::__add_grouping(&__value[0], __lc->_M_thousands_sep,
46775 __lc->_M_grouping,
46776 __lc->_M_grouping_size,
46777 __beg, __beg + __paddec);
46778 __value.erase(__vend - &__value[0]);
46779 }
46780 else
46781 __value.assign(__beg, __paddec);
46782 }
46783
46784
46785 if (__lc->_M_frac_digits > 0)
46786 {
46787 __value += __lc->_M_decimal_point;
46788 if (__paddec >= 0)
46789 __value.append(__beg + __paddec, __lc->_M_frac_digits);
46790 else
46791 {
46792
46793 __value.append(-__paddec, __lit[money_base::_S_zero]);
46794 __value.append(__beg, __len);
46795 }
46796 }
46797
46798
46799 const ios_base::fmtflags __f = __io.flags()
46800 & ios_base::adjustfield;
46801 __len = __value.size() + __sign_size;
46802 __len += ((__io.flags() & ios_base::showbase)
46803 ? __lc->_M_curr_symbol_size : 0);
46804
46805 string_type __res;
46806 __res.reserve(2 * __len);
46807
46808 const size_type __width = static_cast<size_type>(__io.width());
46809 const bool __testipad = (__f == ios_base::internal
46810 && __len < __width);
46811
46812 for (int __i = 0; __i < 4; ++__i)
46813 {
46814 const part __which = static_cast<part>(__p.field[__i]);
46815 switch (__which)
46816 {
46817 case money_base::symbol:
46818 if (__io.flags() & ios_base::showbase)
46819 __res.append(__lc->_M_curr_symbol,
46820 __lc->_M_curr_symbol_size);
46821 break;
46822 case money_base::sign:
46823
46824
46825
46826 if (__sign_size)
46827 __res += __sign[0];
46828 break;
46829 case money_base::value:
46830 __res += __value;
46831 break;
46832 case money_base::space:
46833
46834
46835
46836 if (__testipad)
46837 __res.append(__width - __len, __fill);
46838 else
46839 __res += __fill;
46840 break;
46841 case money_base::none:
46842 if (__testipad)
46843 __res.append(__width - __len, __fill);
46844 break;
46845 }
46846 }
46847
46848
46849 if (__sign_size > 1)
46850 __res.append(__sign + 1, __sign_size - 1);
46851
46852
46853 __len = __res.size();
46854 if (__width > __len)
46855 {
46856 if (__f == ios_base::left)
46857
46858 __res.append(__width - __len, __fill);
46859 else
46860
46861 __res.insert(0, __width - __len, __fill);
46862 __len = __width;
46863 }
46864
46865
46866 __s = std::__write(__s, __res.data(), __len);
46867 }
46868 __io.width(0);
46869 return __s;
46870 }
46871 # 567 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.tcc" 3
46872 template<typename _CharT, typename _OutIter>
46873 _OutIter
46874 money_put<_CharT, _OutIter>::
46875 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
46876 long double __units) const
46877 {
46878 const locale __loc = __io.getloc();
46879 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
46880
46881
46882 int __cs_size = 64;
46883 char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
46884
46885
46886 int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
46887 "%.*Lf", 0, __units);
46888
46889 if (__len >= __cs_size)
46890 {
46891 __cs_size = __len + 1;
46892 __cs = static_cast<char*>(__builtin_alloca(__cs_size));
46893 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
46894 "%.*Lf", 0, __units);
46895 }
46896 # 599 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.tcc" 3
46897 string_type __digits(__len, char_type());
46898 __ctype.widen(__cs, __cs + __len, &__digits[0]);
46899 return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
46900 : _M_insert<false>(__s, __io, __fill, __digits);
46901 }
46902
46903 template<typename _CharT, typename _OutIter>
46904 _OutIter
46905 money_put<_CharT, _OutIter>::
46906 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
46907 const string_type& __digits) const
46908 { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
46909 : _M_insert<false>(__s, __io, __fill, __digits); }
46910
46911
46912
46913
46914
46915
46916 template<typename _CharT, typename _InIter>
46917 time_base::dateorder
46918 time_get<_CharT, _InIter>::do_date_order() const
46919 { return time_base::no_order; }
46920
46921
46922
46923 template<typename _CharT, typename _InIter>
46924 _InIter
46925 time_get<_CharT, _InIter>::
46926 _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
46927 ios_base::iostate& __err, tm* __tm,
46928 const _CharT* __format) const
46929 {
46930 const locale& __loc = __io._M_getloc();
46931 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
46932 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
46933 const size_t __len = char_traits<_CharT>::length(__format);
46934
46935 ios_base::iostate __tmperr = ios_base::goodbit;
46936 size_t __i = 0;
46937 for (; __beg != __end && __i < __len && !__tmperr; ++__i)
46938 {
46939 if (__ctype.narrow(__format[__i], 0) == '%')
46940 {
46941
46942 char __c = __ctype.narrow(__format[++__i], 0);
46943 int __mem = 0;
46944 if (__c == 'E' || __c == 'O')
46945 __c = __ctype.narrow(__format[++__i], 0);
46946 switch (__c)
46947 {
46948 const char* __cs;
46949 _CharT __wcs[10];
46950 case 'a':
46951
46952 const char_type* __days1[7];
46953 __tp._M_days_abbreviated(__days1);
46954 __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days1,
46955 7, __io, __tmperr);
46956 break;
46957 case 'A':
46958
46959 const char_type* __days2[7];
46960 __tp._M_days(__days2);
46961 __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days2,
46962 7, __io, __tmperr);
46963 break;
46964 case 'h':
46965 case 'b':
46966
46967 const char_type* __months1[12];
46968 __tp._M_months_abbreviated(__months1);
46969 __beg = _M_extract_name(__beg, __end, __tm->tm_mon,
46970 __months1, 12, __io, __tmperr);
46971 break;
46972 case 'B':
46973
46974 const char_type* __months2[12];
46975 __tp._M_months(__months2);
46976 __beg = _M_extract_name(__beg, __end, __tm->tm_mon,
46977 __months2, 12, __io, __tmperr);
46978 break;
46979 case 'c':
46980
46981 const char_type* __dt[2];
46982 __tp._M_date_time_formats(__dt);
46983 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
46984 __tm, __dt[0]);
46985 break;
46986 case 'd':
46987
46988 __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2,
46989 __io, __tmperr);
46990 break;
46991 case 'e':
46992
46993
46994 if (__ctype.is(ctype_base::space, *__beg))
46995 __beg = _M_extract_num(++__beg, __end, __tm->tm_mday, 1, 9,
46996 1, __io, __tmperr);
46997 else
46998 __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 10, 31,
46999 2, __io, __tmperr);
47000 break;
47001 case 'D':
47002
47003 __cs = "%m/%d/%y";
47004 __ctype.widen(__cs, __cs + 9, __wcs);
47005 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
47006 __tm, __wcs);
47007 break;
47008 case 'H':
47009
47010 __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2,
47011 __io, __tmperr);
47012 break;
47013 case 'I':
47014
47015 __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2,
47016 __io, __tmperr);
47017 break;
47018 case 'm':
47019
47020 __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2,
47021 __io, __tmperr);
47022 if (!__tmperr)
47023 __tm->tm_mon = __mem - 1;
47024 break;
47025 case 'M':
47026
47027 __beg = _M_extract_num(__beg, __end, __tm->tm_min, 0, 59, 2,
47028 __io, __tmperr);
47029 break;
47030 case 'n':
47031 if (__ctype.narrow(*__beg, 0) == '\n')
47032 ++__beg;
47033 else
47034 __tmperr |= ios_base::failbit;
47035 break;
47036 case 'R':
47037
47038 __cs = "%H:%M";
47039 __ctype.widen(__cs, __cs + 6, __wcs);
47040 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
47041 __tm, __wcs);
47042 break;
47043 case 'S':
47044
47045
47046
47047 __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 60, 2,
47048
47049
47050
47051 __io, __tmperr);
47052 break;
47053 case 't':
47054 if (__ctype.narrow(*__beg, 0) == '\t')
47055 ++__beg;
47056 else
47057 __tmperr |= ios_base::failbit;
47058 break;
47059 case 'T':
47060
47061 __cs = "%H:%M:%S";
47062 __ctype.widen(__cs, __cs + 9, __wcs);
47063 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
47064 __tm, __wcs);
47065 break;
47066 case 'x':
47067
47068 const char_type* __dates[2];
47069 __tp._M_date_formats(__dates);
47070 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
47071 __tm, __dates[0]);
47072 break;
47073 case 'X':
47074
47075 const char_type* __times[2];
47076 __tp._M_time_formats(__times);
47077 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
47078 __tm, __times[0]);
47079 break;
47080 case 'y':
47081 case 'C':
47082
47083 case 'Y':
47084
47085
47086
47087
47088 __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4,
47089 __io, __tmperr);
47090 if (!__tmperr)
47091 __tm->tm_year = __mem < 0 ? __mem + 100 : __mem - 1900;
47092 break;
47093 case 'Z':
47094
47095 if (__ctype.is(ctype_base::upper, *__beg))
47096 {
47097 int __tmp;
47098 __beg = _M_extract_name(__beg, __end, __tmp,
47099 __timepunct_cache<_CharT>::_S_timezones,
47100 14, __io, __tmperr);
47101
47102
47103 if (__beg != __end && !__tmperr && __tmp == 0
47104 && (*__beg == __ctype.widen('-')
47105 || *__beg == __ctype.widen('+')))
47106 {
47107 __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2,
47108 __io, __tmperr);
47109 __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2,
47110 __io, __tmperr);
47111 }
47112 }
47113 else
47114 __tmperr |= ios_base::failbit;
47115 break;
47116 default:
47117
47118 __tmperr |= ios_base::failbit;
47119 }
47120 }
47121 else
47122 {
47123
47124 if (__format[__i] == *__beg)
47125 ++__beg;
47126 else
47127 __tmperr |= ios_base::failbit;
47128 }
47129 }
47130
47131 if (__tmperr || __i != __len)
47132 __err |= ios_base::failbit;
47133
47134 return __beg;
47135 }
47136
47137 template<typename _CharT, typename _InIter>
47138 _InIter
47139 time_get<_CharT, _InIter>::
47140 _M_extract_num(iter_type __beg, iter_type __end, int& __member,
47141 int __min, int __max, size_t __len,
47142 ios_base& __io, ios_base::iostate& __err) const
47143 {
47144 const locale& __loc = __io._M_getloc();
47145 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
47146
47147
47148 int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1);
47149
47150 ++__min;
47151 size_t __i = 0;
47152 int __value = 0;
47153 for (; __beg != __end && __i < __len; ++__beg, ++__i)
47154 {
47155 const char __c = __ctype.narrow(*__beg, '*');
47156 if (__c >= '0' && __c <= '9')
47157 {
47158 __value = __value * 10 + (__c - '0');
47159 const int __valuec = __value * __mult;
47160 if (__valuec > __max || __valuec + __mult < __min)
47161 break;
47162 __mult /= 10;
47163 }
47164 else
47165 break;
47166 }
47167 if (__i == __len)
47168 __member = __value;
47169
47170 else if (__len == 4 && __i == 2)
47171 __member = __value - 100;
47172 else
47173 __err |= ios_base::failbit;
47174
47175 return __beg;
47176 }
47177
47178
47179
47180 template<typename _CharT, typename _InIter>
47181 _InIter
47182 time_get<_CharT, _InIter>::
47183 _M_extract_name(iter_type __beg, iter_type __end, int& __member,
47184 const _CharT** __names, size_t __indexlen,
47185 ios_base& __io, ios_base::iostate& __err) const
47186 {
47187 typedef char_traits<_CharT> __traits_type;
47188 const locale& __loc = __io._M_getloc();
47189 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
47190
47191 int* __matches = static_cast<int*>(__builtin_alloca(sizeof(int)
47192 * __indexlen));
47193 size_t __nmatches = 0;
47194 size_t __pos = 0;
47195 bool __testvalid = true;
47196 const char_type* __name;
47197
47198
47199
47200
47201
47202 if (__beg != __end)
47203 {
47204 const char_type __c = *__beg;
47205 for (size_t __i1 = 0; __i1 < __indexlen; ++__i1)
47206 if (__c == __names[__i1][0]
47207 || __c == __ctype.toupper(__names[__i1][0]))
47208 __matches[__nmatches++] = __i1;
47209 }
47210
47211 while (__nmatches > 1)
47212 {
47213
47214 size_t __minlen = __traits_type::length(__names[__matches[0]]);
47215 for (size_t __i2 = 1; __i2 < __nmatches; ++__i2)
47216 __minlen = std::min(__minlen,
47217 __traits_type::length(__names[__matches[__i2]]));
47218 ++__beg, ++__pos;
47219 if (__pos < __minlen && __beg != __end)
47220 for (size_t __i3 = 0; __i3 < __nmatches;)
47221 {
47222 __name = __names[__matches[__i3]];
47223 if (!(__name[__pos] == *__beg))
47224 __matches[__i3] = __matches[--__nmatches];
47225 else
47226 ++__i3;
47227 }
47228 else
47229 break;
47230 }
47231
47232 if (__nmatches == 1)
47233 {
47234
47235 ++__beg, ++__pos;
47236 __name = __names[__matches[0]];
47237 const size_t __len = __traits_type::length(__name);
47238 while (__pos < __len && __beg != __end && __name[__pos] == *__beg)
47239 ++__beg, ++__pos;
47240
47241 if (__len == __pos)
47242 __member = __matches[0];
47243 else
47244 __testvalid = false;
47245 }
47246 else
47247 __testvalid = false;
47248 if (!__testvalid)
47249 __err |= ios_base::failbit;
47250
47251 return __beg;
47252 }
47253
47254 template<typename _CharT, typename _InIter>
47255 _InIter
47256 time_get<_CharT, _InIter>::
47257 _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
47258 const _CharT** __names, size_t __indexlen,
47259 ios_base& __io, ios_base::iostate& __err) const
47260 {
47261 typedef char_traits<_CharT> __traits_type;
47262 const locale& __loc = __io._M_getloc();
47263 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
47264
47265 int* __matches = static_cast<int*>(__builtin_alloca(2 * sizeof(int)
47266 * __indexlen));
47267 size_t __nmatches = 0;
47268 size_t* __matches_lengths = 0;
47269 size_t __pos = 0;
47270
47271 if (__beg != __end)
47272 {
47273 const char_type __c = *__beg;
47274 for (size_t __i = 0; __i < 2 * __indexlen; ++__i)
47275 if (__c == __names[__i][0]
47276 || __c == __ctype.toupper(__names[__i][0]))
47277 __matches[__nmatches++] = __i;
47278 }
47279
47280 if (__nmatches)
47281 {
47282 ++__beg, ++__pos;
47283
47284 __matches_lengths
47285 = static_cast<size_t*>(__builtin_alloca(sizeof(size_t)
47286 * __nmatches));
47287 for (size_t __i = 0; __i < __nmatches; ++__i)
47288 __matches_lengths[__i]
47289 = __traits_type::length(__names[__matches[__i]]);
47290 }
47291
47292 for (; __beg != __end; ++__beg, ++__pos)
47293 {
47294 size_t __nskipped = 0;
47295 const char_type __c = *__beg;
47296 for (size_t __i = 0; __i < __nmatches;)
47297 {
47298 const char_type* __name = __names[__matches[__i]];
47299 if (__pos >= __matches_lengths[__i])
47300 ++__nskipped, ++__i;
47301 else if (!(__name[__pos] == __c))
47302 {
47303 --__nmatches;
47304 __matches[__i] = __matches[__nmatches];
47305 __matches_lengths[__i] = __matches_lengths[__nmatches];
47306 }
47307 else
47308 ++__i;
47309 }
47310 if (__nskipped == __nmatches)
47311 break;
47312 }
47313
47314 if ((__nmatches == 1 && __matches_lengths[0] == __pos)
47315 || (__nmatches == 2 && (__matches_lengths[0] == __pos
47316 || __matches_lengths[1] == __pos)))
47317 __member = (__matches[0] >= __indexlen
47318 ? __matches[0] - __indexlen : __matches[0]);
47319 else
47320 __err |= ios_base::failbit;
47321
47322 return __beg;
47323 }
47324
47325 template<typename _CharT, typename _InIter>
47326 _InIter
47327 time_get<_CharT, _InIter>::
47328 do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
47329 ios_base::iostate& __err, tm* __tm) const
47330 {
47331 const locale& __loc = __io._M_getloc();
47332 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
47333 const char_type* __times[2];
47334 __tp._M_time_formats(__times);
47335 __beg = _M_extract_via_format(__beg, __end, __io, __err,
47336 __tm, __times[0]);
47337 if (__beg == __end)
47338 __err |= ios_base::eofbit;
47339 return __beg;
47340 }
47341
47342 template<typename _CharT, typename _InIter>
47343 _InIter
47344 time_get<_CharT, _InIter>::
47345 do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
47346 ios_base::iostate& __err, tm* __tm) const
47347 {
47348 const locale& __loc = __io._M_getloc();
47349 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
47350 const char_type* __dates[2];
47351 __tp._M_date_formats(__dates);
47352 __beg = _M_extract_via_format(__beg, __end, __io, __err,
47353 __tm, __dates[0]);
47354 if (__beg == __end)
47355 __err |= ios_base::eofbit;
47356 return __beg;
47357 }
47358
47359 template<typename _CharT, typename _InIter>
47360 _InIter
47361 time_get<_CharT, _InIter>::
47362 do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
47363 ios_base::iostate& __err, tm* __tm) const
47364 {
47365 typedef char_traits<_CharT> __traits_type;
47366 const locale& __loc = __io._M_getloc();
47367 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
47368 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
47369 const char_type* __days[14];
47370 __tp._M_days_abbreviated(__days);
47371 __tp._M_days(__days + 7);
47372 int __tmpwday;
47373 ios_base::iostate __tmperr = ios_base::goodbit;
47374
47375 __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7,
47376 __io, __tmperr);
47377 if (!__tmperr)
47378 __tm->tm_wday = __tmpwday;
47379 else
47380 __err |= ios_base::failbit;
47381
47382 if (__beg == __end)
47383 __err |= ios_base::eofbit;
47384 return __beg;
47385 }
47386
47387 template<typename _CharT, typename _InIter>
47388 _InIter
47389 time_get<_CharT, _InIter>::
47390 do_get_monthname(iter_type __beg, iter_type __end,
47391 ios_base& __io, ios_base::iostate& __err, tm* __tm) const
47392 {
47393 typedef char_traits<_CharT> __traits_type;
47394 const locale& __loc = __io._M_getloc();
47395 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
47396 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
47397 const char_type* __months[24];
47398 __tp._M_months_abbreviated(__months);
47399 __tp._M_months(__months + 12);
47400 int __tmpmon;
47401 ios_base::iostate __tmperr = ios_base::goodbit;
47402
47403 __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12,
47404 __io, __tmperr);
47405 if (!__tmperr)
47406 __tm->tm_mon = __tmpmon;
47407 else
47408 __err |= ios_base::failbit;
47409
47410 if (__beg == __end)
47411 __err |= ios_base::eofbit;
47412 return __beg;
47413 }
47414
47415 template<typename _CharT, typename _InIter>
47416 _InIter
47417 time_get<_CharT, _InIter>::
47418 do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
47419 ios_base::iostate& __err, tm* __tm) const
47420 {
47421 const locale& __loc = __io._M_getloc();
47422 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
47423 int __tmpyear;
47424 ios_base::iostate __tmperr = ios_base::goodbit;
47425
47426 __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 9999, 4,
47427 __io, __tmperr);
47428 if (!__tmperr)
47429 __tm->tm_year = __tmpyear < 0 ? __tmpyear + 100 : __tmpyear - 1900;
47430 else
47431 __err |= ios_base::failbit;
47432
47433 if (__beg == __end)
47434 __err |= ios_base::eofbit;
47435 return __beg;
47436 }
47437
47438 template<typename _CharT, typename _OutIter>
47439 _OutIter
47440 time_put<_CharT, _OutIter>::
47441 put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
47442 const _CharT* __beg, const _CharT* __end) const
47443 {
47444 const locale& __loc = __io._M_getloc();
47445 ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
47446 for (; __beg != __end; ++__beg)
47447 if (__ctype.narrow(*__beg, 0) != '%')
47448 {
47449 *__s = *__beg;
47450 ++__s;
47451 }
47452 else if (++__beg != __end)
47453 {
47454 char __format;
47455 char __mod = 0;
47456 const char __c = __ctype.narrow(*__beg, 0);
47457 if (__c != 'E' && __c != 'O')
47458 __format = __c;
47459 else if (++__beg != __end)
47460 {
47461 __mod = __c;
47462 __format = __ctype.narrow(*__beg, 0);
47463 }
47464 else
47465 break;
47466 __s = this->do_put(__s, __io, __fill, __tm, __format, __mod);
47467 }
47468 else
47469 break;
47470 return __s;
47471 }
47472
47473 template<typename _CharT, typename _OutIter>
47474 _OutIter
47475 time_put<_CharT, _OutIter>::
47476 do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm,
47477 char __format, char __mod) const
47478 {
47479 const locale& __loc = __io._M_getloc();
47480 ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
47481 __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
47482
47483
47484
47485 const size_t __maxlen = 128;
47486 char_type __res[__maxlen];
47487
47488
47489
47490
47491
47492
47493 char_type __fmt[4];
47494 __fmt[0] = __ctype.widen('%');
47495 if (!__mod)
47496 {
47497 __fmt[1] = __format;
47498 __fmt[2] = char_type();
47499 }
47500 else
47501 {
47502 __fmt[1] = __mod;
47503 __fmt[2] = __format;
47504 __fmt[3] = char_type();
47505 }
47506
47507 __tp._M_put(__res, __maxlen, __fmt, __tm);
47508
47509
47510 return std::__write(__s, __res, char_traits<char_type>::length(__res));
47511 }
47512
47513
47514
47515
47516
47517 extern template class moneypunct<char, false>;
47518 extern template class moneypunct<char, true>;
47519 extern template class moneypunct_byname<char, false>;
47520 extern template class moneypunct_byname<char, true>;
47521 extern template class money_get<char>;
47522 extern template class money_put<char>;
47523 extern template class __timepunct<char>;
47524 extern template class time_put<char>;
47525 extern template class time_put_byname<char>;
47526 extern template class time_get<char>;
47527 extern template class time_get_byname<char>;
47528 extern template class messages<char>;
47529 extern template class messages_byname<char>;
47530
47531 extern template
47532 const moneypunct<char, true>&
47533 use_facet<moneypunct<char, true> >(const locale&);
47534
47535 extern template
47536 const moneypunct<char, false>&
47537 use_facet<moneypunct<char, false> >(const locale&);
47538
47539 extern template
47540 const money_put<char>&
47541 use_facet<money_put<char> >(const locale&);
47542
47543 extern template
47544 const money_get<char>&
47545 use_facet<money_get<char> >(const locale&);
47546
47547 extern template
47548 const __timepunct<char>&
47549 use_facet<__timepunct<char> >(const locale&);
47550
47551 extern template
47552 const time_put<char>&
47553 use_facet<time_put<char> >(const locale&);
47554
47555 extern template
47556 const time_get<char>&
47557 use_facet<time_get<char> >(const locale&);
47558
47559 extern template
47560 const messages<char>&
47561 use_facet<messages<char> >(const locale&);
47562
47563 extern template
47564 bool
47565 has_facet<moneypunct<char> >(const locale&);
47566
47567 extern template
47568 bool
47569 has_facet<money_put<char> >(const locale&);
47570
47571 extern template
47572 bool
47573 has_facet<money_get<char> >(const locale&);
47574
47575 extern template
47576 bool
47577 has_facet<__timepunct<char> >(const locale&);
47578
47579 extern template
47580 bool
47581 has_facet<time_put<char> >(const locale&);
47582
47583 extern template
47584 bool
47585 has_facet<time_get<char> >(const locale&);
47586
47587 extern template
47588 bool
47589 has_facet<messages<char> >(const locale&);
47590
47591
47592 extern template class moneypunct<wchar_t, false>;
47593 extern template class moneypunct<wchar_t, true>;
47594 extern template class moneypunct_byname<wchar_t, false>;
47595 extern template class moneypunct_byname<wchar_t, true>;
47596 extern template class money_get<wchar_t>;
47597 extern template class money_put<wchar_t>;
47598 extern template class __timepunct<wchar_t>;
47599 extern template class time_put<wchar_t>;
47600 extern template class time_put_byname<wchar_t>;
47601 extern template class time_get<wchar_t>;
47602 extern template class time_get_byname<wchar_t>;
47603 extern template class messages<wchar_t>;
47604 extern template class messages_byname<wchar_t>;
47605
47606 extern template
47607 const moneypunct<wchar_t, true>&
47608 use_facet<moneypunct<wchar_t, true> >(const locale&);
47609
47610 extern template
47611 const moneypunct<wchar_t, false>&
47612 use_facet<moneypunct<wchar_t, false> >(const locale&);
47613
47614 extern template
47615 const money_put<wchar_t>&
47616 use_facet<money_put<wchar_t> >(const locale&);
47617
47618 extern template
47619 const money_get<wchar_t>&
47620 use_facet<money_get<wchar_t> >(const locale&);
47621
47622 extern template
47623 const __timepunct<wchar_t>&
47624 use_facet<__timepunct<wchar_t> >(const locale&);
47625
47626 extern template
47627 const time_put<wchar_t>&
47628 use_facet<time_put<wchar_t> >(const locale&);
47629
47630 extern template
47631 const time_get<wchar_t>&
47632 use_facet<time_get<wchar_t> >(const locale&);
47633
47634 extern template
47635 const messages<wchar_t>&
47636 use_facet<messages<wchar_t> >(const locale&);
47637
47638 extern template
47639 bool
47640 has_facet<moneypunct<wchar_t> >(const locale&);
47641
47642 extern template
47643 bool
47644 has_facet<money_put<wchar_t> >(const locale&);
47645
47646 extern template
47647 bool
47648 has_facet<money_get<wchar_t> >(const locale&);
47649
47650 extern template
47651 bool
47652 has_facet<__timepunct<wchar_t> >(const locale&);
47653
47654 extern template
47655 bool
47656 has_facet<time_put<wchar_t> >(const locale&);
47657
47658 extern template
47659 bool
47660 has_facet<time_get<wchar_t> >(const locale&);
47661
47662 extern template
47663 bool
47664 has_facet<messages<wchar_t> >(const locale&);
47665
47666
47667
47668
47669 }
47670 # 1937 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/locale_facets_nonio.h" 2 3
47671 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/locale" 2 3
47672 # 30 "../boost/filesystem/v3/path_traits.hpp" 2
47673 # 1 "../boost/assert.hpp" 1
47674 # 50 "../boost/assert.hpp"
47675 # 1 "/usr/include/assert.h" 1 3 4
47676 # 51 "../boost/assert.hpp" 2
47677 # 31 "../boost/filesystem/v3/path_traits.hpp" 2
47678
47679
47680 # 1 "../boost/config/abi_prefix.hpp" 1
47681 # 34 "../boost/filesystem/v3/path_traits.hpp" 2
47682
47683 namespace boost { namespace filesystem3 {
47684
47685 const system::error_category& codecvt_error_category();
47686 # 48 "../boost/filesystem/v3/path_traits.hpp"
47687 class directory_entry;
47688
47689 namespace path_traits {
47690
47691 typedef std::codecvt<wchar_t, char, std::mbstate_t> codecvt_type;
47692
47693
47694
47695 template <class T>
47696 struct is_pathable { static const bool value = false; };
47697
47698 template<> struct is_pathable<char*> { static const bool value = true; };
47699 template<> struct is_pathable<const char*> { static const bool value = true; };
47700 template<> struct is_pathable<wchar_t*> { static const bool value = true; };
47701 template<> struct is_pathable<const wchar_t*> { static const bool value = true; };
47702 template<> struct is_pathable<std::string> { static const bool value = true; };
47703 template<> struct is_pathable<std::wstring> { static const bool value = true; };
47704 template<> struct is_pathable<std::vector<char> > { static const bool value = true; };
47705 template<> struct is_pathable<std::vector<wchar_t> > { static const bool value = true; };
47706 template<> struct is_pathable<std::list<char> > { static const bool value = true; };
47707 template<> struct is_pathable<std::list<wchar_t> > { static const bool value = true; };
47708 template<> struct is_pathable<directory_entry> { static const bool value = true; };
47709
47710
47711
47712 template <class Container> inline
47713
47714
47715 typename boost::disable_if<boost::is_array<Container>, bool>::type
47716 empty(const Container & c)
47717 { return c.begin() == c.end(); }
47718
47719 template <class T> inline
47720 bool empty(T * const & c_str)
47721 {
47722 (static_cast<void> (0));
47723 return !*c_str;
47724 }
47725
47726 template <typename T, size_t N> inline
47727 bool empty(T (&)[N])
47728 { return N <= 1; }
47729
47730
47731
47732
47733
47734
47735 void convert(const char* from,
47736 const char* from_end,
47737 std::wstring & to,
47738 const codecvt_type& cvt);
47739
47740
47741 void convert(const wchar_t* from,
47742 const wchar_t* from_end,
47743 std::string & to,
47744 const codecvt_type& cvt);
47745
47746 inline
47747 void convert(const char* from,
47748 std::wstring & to,
47749 const codecvt_type& cvt)
47750 {
47751 (static_cast<void> (0));
47752 convert(from, 0, to, cvt);
47753 }
47754
47755 inline
47756 void convert(const wchar_t* from,
47757 std::string & to,
47758 const codecvt_type& cvt)
47759 {
47760 (static_cast<void> (0));
47761 convert(from, 0, to, cvt);
47762 }
47763
47764
47765
47766
47767
47768 inline
47769 void convert(const char* from, const char* from_end, std::string & to,
47770 const codecvt_type&)
47771 {
47772 (static_cast<void> (0));
47773 (static_cast<void> (0));
47774 to.append(from, from_end);
47775 }
47776
47777 inline
47778 void convert(const char* from,
47779 std::string & to,
47780 const codecvt_type&)
47781 {
47782 (static_cast<void> (0));
47783 to += from;
47784 }
47785
47786
47787
47788 inline
47789 void convert(const wchar_t* from, const wchar_t* from_end, std::wstring & to,
47790 const codecvt_type&)
47791 {
47792 (static_cast<void> (0));
47793 (static_cast<void> (0));
47794 to.append(from, from_end);
47795 }
47796
47797 inline
47798 void convert(const wchar_t* from,
47799 std::wstring & to,
47800 const codecvt_type&)
47801 {
47802 (static_cast<void> (0));
47803 to += from;
47804 }
47805
47806
47807
47808
47809 template <class U> inline
47810 void dispatch(const std::string& c, U& to, const codecvt_type& cvt)
47811 {
47812 if (c.size())
47813 convert(&*c.begin(), &*c.begin() + c.size(), to, cvt);
47814 }
47815 template <class U> inline
47816 void dispatch(const std::wstring& c, U& to, const codecvt_type& cvt)
47817 {
47818 if (c.size())
47819 convert(&*c.begin(), &*c.begin() + c.size(), to, cvt);
47820 }
47821 template <class U> inline
47822 void dispatch(const std::vector<char>& c, U& to, const codecvt_type& cvt)
47823 {
47824 if (c.size())
47825 convert(&*c.begin(), &*c.begin() + c.size(), to, cvt);
47826 }
47827 template <class U> inline
47828 void dispatch(const std::vector<wchar_t>& c, U& to, const codecvt_type& cvt)
47829 {
47830 if (c.size())
47831 convert(&*c.begin(), &*c.begin() + c.size(), to, cvt);
47832 }
47833
47834
47835 template <class Container, class U> inline
47836
47837
47838 typename boost::disable_if<boost::is_array<Container>, void>::type
47839 dispatch(const Container & c, U& to, const codecvt_type& cvt)
47840 {
47841 if (c.size())
47842 {
47843 std::basic_string<typename Container::value_type> s(c.begin(), c.end());
47844 convert(s.c_str(), s.c_str()+s.size(), to, cvt);
47845 }
47846 }
47847
47848
47849 template <class T, class U> inline
47850 void dispatch(T * const & c_str, U& to, const codecvt_type& cvt)
47851 {
47852
47853 (static_cast<void> (0));
47854 convert(c_str, to, cvt);
47855 }
47856
47857
47858
47859
47860
47861 void dispatch(const directory_entry & de,
47862
47863
47864
47865 std::string & to,
47866
47867 const codecvt_type&);
47868
47869
47870 }}}
47871
47872
47873
47874 namespace boost
47875 {
47876 namespace filesystem
47877 {
47878 using filesystem3::codecvt_error_category;
47879
47880
47881 }
47882 }
47883
47884 # 1 "../boost/config/abi_suffix.hpp" 1
47885 # 246 "../boost/filesystem/v3/path_traits.hpp" 2
47886 # 26 "../boost/filesystem/v3/path.hpp" 2
47887
47888 # 1 "../boost/system/system_error.hpp" 1
47889 # 13 "../boost/system/system_error.hpp"
47890 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 1 3
47891 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
47892
47893 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
47894
47895 # 1 "/usr/include/assert.h" 1 3 4
47896 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 2 3
47897 # 14 "../boost/system/system_error.hpp" 2
47898
47899
47900 namespace boost
47901 {
47902 namespace system
47903 {
47904
47905
47906 class __attribute__((visibility("default"))) system_error : public std::runtime_error
47907
47908
47909 {
47910 public:
47911 system_error( error_code ec )
47912 : std::runtime_error(""), m_error_code(ec) {}
47913
47914 system_error( error_code ec, const std::string & what_arg )
47915 : std::runtime_error(what_arg), m_error_code(ec) {}
47916
47917 system_error( error_code ec, const char* what_arg )
47918 : std::runtime_error(what_arg), m_error_code(ec) {}
47919
47920 system_error( int ev, const error_category & ecat )
47921 : std::runtime_error(""), m_error_code(ev,ecat) {}
47922
47923 system_error( int ev, const error_category & ecat,
47924 const std::string & what_arg )
47925 : std::runtime_error(what_arg), m_error_code(ev,ecat) {}
47926
47927 system_error( int ev, const error_category & ecat,
47928 const char * what_arg )
47929 : std::runtime_error(what_arg), m_error_code(ev,ecat) {}
47930
47931 virtual ~system_error() throw() {}
47932
47933 const error_code & code() const throw() { return m_error_code; }
47934 const char * what() const throw();
47935
47936 private:
47937 error_code m_error_code;
47938 mutable std::string m_what;
47939 };
47940
47941
47942
47943 inline const char * system_error::what() const throw()
47944
47945 {
47946 if ( m_what.empty() )
47947 {
47948 try
47949 {
47950 m_what = this->std::runtime_error::what();
47951 if ( !m_what.empty() ) m_what += ": ";
47952 m_what += m_error_code.message();
47953 }
47954 catch (...) { return std::runtime_error::what(); }
47955 }
47956 return m_what.c_str();
47957 }
47958
47959 }
47960 }
47961 # 28 "../boost/filesystem/v3/path.hpp" 2
47962
47963 # 1 "../boost/shared_ptr.hpp" 1
47964 # 17 "../boost/shared_ptr.hpp"
47965 # 1 "../boost/smart_ptr/shared_ptr.hpp" 1
47966 # 27 "../boost/smart_ptr/shared_ptr.hpp"
47967 # 1 "../boost/config/no_tr1/memory.hpp" 1
47968 # 28 "../boost/smart_ptr/shared_ptr.hpp" 2
47969
47970 # 1 "../boost/assert.hpp" 1
47971 # 50 "../boost/assert.hpp"
47972 # 1 "/usr/include/assert.h" 1 3 4
47973 # 51 "../boost/assert.hpp" 2
47974 # 30 "../boost/smart_ptr/shared_ptr.hpp" 2
47975
47976 # 1 "../boost/throw_exception.hpp" 1
47977 # 23 "../boost/throw_exception.hpp"
47978 # 1 "../boost/exception/detail/attribute_noreturn.hpp" 1
47979 # 24 "../boost/throw_exception.hpp" 2
47980 # 37 "../boost/throw_exception.hpp"
47981 # 1 "../boost/exception/exception.hpp" 1
47982 # 9 "../boost/exception/exception.hpp"
47983
47984 # 10 "../boost/exception/exception.hpp" 3
47985
47986
47987
47988
47989
47990 namespace
47991 boost
47992 {
47993 namespace
47994 exception_detail
47995 {
47996 template <class T>
47997 class
47998 refcount_ptr
47999 {
48000 public:
48001
48002 refcount_ptr():
48003 px_(0)
48004 {
48005 }
48006
48007 ~refcount_ptr()
48008 {
48009 release();
48010 }
48011
48012 refcount_ptr( refcount_ptr const & x ):
48013 px_(x.px_)
48014 {
48015 add_ref();
48016 }
48017
48018 refcount_ptr &
48019 operator=( refcount_ptr const & x )
48020 {
48021 adopt(x.px_);
48022 return *this;
48023 }
48024
48025 void
48026 adopt( T * px )
48027 {
48028 release();
48029 px_=px;
48030 add_ref();
48031 }
48032
48033 T *
48034 get() const
48035 {
48036 return px_;
48037 }
48038
48039 private:
48040
48041 T * px_;
48042
48043 void
48044 add_ref()
48045 {
48046 if( px_ )
48047 px_->add_ref();
48048 }
48049
48050 void
48051 release()
48052 {
48053 if( px_ && px_->release() )
48054 px_=0;
48055 }
48056 };
48057 }
48058
48059
48060
48061 template <class Tag,class T>
48062 class error_info;
48063
48064 typedef error_info<struct throw_function_,char const *> throw_function;
48065 typedef error_info<struct throw_file_,char const *> throw_file;
48066 typedef error_info<struct throw_line_,int> throw_line;
48067
48068 template <>
48069 class
48070 error_info<throw_function_,char const *>
48071 {
48072 public:
48073 typedef char const * value_type;
48074 value_type v_;
48075 explicit
48076 error_info( value_type v ):
48077 v_(v)
48078 {
48079 }
48080 };
48081
48082 template <>
48083 class
48084 error_info<throw_file_,char const *>
48085 {
48086 public:
48087 typedef char const * value_type;
48088 value_type v_;
48089 explicit
48090 error_info( value_type v ):
48091 v_(v)
48092 {
48093 }
48094 };
48095
48096 template <>
48097 class
48098 error_info<throw_line_,int>
48099 {
48100 public:
48101 typedef int value_type;
48102 value_type v_;
48103 explicit
48104 error_info( value_type v ):
48105 v_(v)
48106 {
48107 }
48108 };
48109
48110
48111
48112 #pragma GCC visibility push (default)
48113
48114
48115 class exception;
48116
48117
48118 #pragma GCC visibility pop
48119
48120
48121
48122 template <class T>
48123 class shared_ptr;
48124
48125 namespace
48126 exception_detail
48127 {
48128 class error_info_base;
48129 struct type_info_;
48130
48131 struct
48132 error_info_container
48133 {
48134 virtual char const * diagnostic_information( char const * ) const = 0;
48135 virtual shared_ptr<error_info_base> get( type_info_ const & ) const = 0;
48136 virtual void set( shared_ptr<error_info_base> const &, type_info_ const & ) = 0;
48137 virtual void add_ref() const = 0;
48138 virtual bool release() const = 0;
48139 virtual refcount_ptr<exception_detail::error_info_container> clone() const = 0;
48140
48141 protected:
48142
48143 ~error_info_container() throw()
48144 {
48145 }
48146 };
48147
48148 template <class>
48149 struct get_info;
48150
48151 template <>
48152 struct get_info<throw_function>;
48153
48154 template <>
48155 struct get_info<throw_file>;
48156
48157 template <>
48158 struct get_info<throw_line>;
48159
48160 char const * get_diagnostic_information( exception const &, char const * );
48161
48162 void copy_boost_exception( exception *, exception const * );
48163
48164 template <class E,class Tag,class T>
48165 E const & set_info( E const &, error_info<Tag,T> const & );
48166
48167 template <class E>
48168 E const & set_info( E const &, throw_function const & );
48169
48170 template <class E>
48171 E const & set_info( E const &, throw_file const & );
48172
48173 template <class E>
48174 E const & set_info( E const &, throw_line const & );
48175 }
48176
48177
48178
48179 #pragma GCC visibility push (default)
48180
48181
48182 class
48183 exception
48184 {
48185 protected:
48186
48187 exception():
48188 throw_function_(0),
48189 throw_file_(0),
48190 throw_line_(-1)
48191 {
48192 }
48193 # 231 "../boost/exception/exception.hpp" 3
48194 virtual ~exception() throw()
48195
48196 = 0
48197
48198 ;
48199
48200
48201
48202
48203 private:
48204
48205 template <class E>
48206 friend E const & exception_detail::set_info( E const &, throw_function const & );
48207
48208 template <class E>
48209 friend E const & exception_detail::set_info( E const &, throw_file const & );
48210
48211 template <class E>
48212 friend E const & exception_detail::set_info( E const &, throw_line const & );
48213
48214 template <class E,class Tag,class T>
48215 friend E const & exception_detail::set_info( E const &, error_info<Tag,T> const & );
48216
48217 friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
48218
48219 template <class>
48220 friend struct exception_detail::get_info;
48221 friend struct exception_detail::get_info<throw_function>;
48222 friend struct exception_detail::get_info<throw_file>;
48223 friend struct exception_detail::get_info<throw_line>;
48224 friend void exception_detail::copy_boost_exception( exception *, exception const * );
48225
48226 mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
48227 mutable char const * throw_function_;
48228 mutable char const * throw_file_;
48229 mutable int throw_line_;
48230 };
48231
48232
48233 #pragma GCC visibility pop
48234
48235
48236
48237 inline
48238 exception::
48239 ~exception() throw()
48240 {
48241 }
48242
48243 namespace
48244 exception_detail
48245 {
48246 template <class E>
48247 E const &
48248 set_info( E const & x, throw_function const & y )
48249 {
48250 x.throw_function_=y.v_;
48251 return x;
48252 }
48253
48254 template <class E>
48255 E const &
48256 set_info( E const & x, throw_file const & y )
48257 {
48258 x.throw_file_=y.v_;
48259 return x;
48260 }
48261
48262 template <class E>
48263 E const &
48264 set_info( E const & x, throw_line const & y )
48265 {
48266 x.throw_line_=y.v_;
48267 return x;
48268 }
48269 }
48270
48271
48272
48273 namespace
48274 exception_detail
48275 {
48276 template <class T>
48277 struct
48278 error_info_injector:
48279 public T,
48280 public exception
48281 {
48282 explicit
48283 error_info_injector( T const & x ):
48284 T(x)
48285 {
48286 }
48287
48288 ~error_info_injector() throw()
48289 {
48290 }
48291 };
48292
48293 struct large_size { char c[256]; };
48294 large_size dispatch_boost_exception( exception const * );
48295
48296 struct small_size { };
48297 small_size dispatch_boost_exception( void const * );
48298
48299 template <class,int>
48300 struct enable_error_info_helper;
48301
48302 template <class T>
48303 struct
48304 enable_error_info_helper<T,sizeof(large_size)>
48305 {
48306 typedef T type;
48307 };
48308
48309 template <class T>
48310 struct
48311 enable_error_info_helper<T,sizeof(small_size)>
48312 {
48313 typedef error_info_injector<T> type;
48314 };
48315
48316 template <class T>
48317 struct
48318 enable_error_info_return_type
48319 {
48320 typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception(static_cast<T *>(0)))>::type type;
48321 };
48322 }
48323
48324 template <class T>
48325 inline
48326 typename
48327 exception_detail::enable_error_info_return_type<T>::type
48328 enable_error_info( T const & x )
48329 {
48330 typedef typename exception_detail::enable_error_info_return_type<T>::type rt;
48331 return rt(x);
48332 }
48333
48334
48335
48336 namespace
48337 exception_detail
48338 {
48339 class
48340 clone_base
48341 {
48342 public:
48343
48344 virtual clone_base const * clone() const = 0;
48345 virtual void rethrow() const = 0;
48346
48347 virtual
48348 ~clone_base() throw()
48349 {
48350 }
48351 };
48352
48353 inline
48354 void
48355 copy_boost_exception( exception * a, exception const * b )
48356 {
48357 refcount_ptr<error_info_container> data;
48358 if( error_info_container * d=b->data_.get() )
48359 data = d->clone();
48360 a->throw_file_ = b->throw_file_;
48361 a->throw_line_ = b->throw_line_;
48362 a->throw_function_ = b->throw_function_;
48363 a->data_ = data;
48364 }
48365
48366 inline
48367 void
48368 copy_boost_exception( void *, void const * )
48369 {
48370 }
48371
48372 template <class T>
48373 class
48374 clone_impl:
48375 public T,
48376 public clone_base
48377 {
48378 public:
48379
48380 explicit
48381 clone_impl( T const & x ):
48382 T(x)
48383 {
48384 copy_boost_exception(this,&x);
48385 }
48386
48387 ~clone_impl() throw()
48388 {
48389 }
48390
48391 private:
48392
48393 clone_base const *
48394 clone() const
48395 {
48396 return new clone_impl(*this);
48397 }
48398
48399 void
48400 rethrow() const
48401 {
48402 throw*this;
48403 }
48404 };
48405 }
48406
48407 template <class T>
48408 inline
48409 exception_detail::clone_impl<T>
48410 enable_current_exception( T const & x )
48411 {
48412 return exception_detail::clone_impl<T>(x);
48413 }
48414 }
48415 # 38 "../boost/throw_exception.hpp" 2
48416 # 1 "../boost/current_function.hpp" 1
48417 # 22 "../boost/current_function.hpp"
48418 namespace boost
48419 {
48420
48421 namespace detail
48422 {
48423
48424 inline void current_function_helper()
48425 {
48426 # 61 "../boost/current_function.hpp"
48427 }
48428
48429 }
48430
48431 }
48432 # 39 "../boost/throw_exception.hpp" 2
48433
48434
48435
48436
48437
48438 namespace boost
48439 {
48440
48441
48442
48443
48444
48445
48446 inline void throw_exception_assert_compatibility( std::exception const & ) { }
48447
48448 template<class E> __attribute__((noreturn)) inline void throw_exception( E const & e )
48449 {
48450
48451
48452 throw_exception_assert_compatibility(e);
48453
48454
48455 throw enable_current_exception(enable_error_info(e));
48456
48457
48458
48459 }
48460
48461
48462
48463
48464 namespace
48465 exception_detail
48466 {
48467 template <class E>
48468 __attribute__((noreturn))
48469 void
48470 throw_exception_( E const & x, char const * current_function, char const * file, int line )
48471 {
48472 boost::throw_exception(
48473 set_info(
48474 set_info(
48475 set_info(
48476 boost::enable_error_info(x),
48477 throw_function(current_function)),
48478 throw_file(file)),
48479 throw_line(line)));
48480 }
48481 }
48482
48483 }
48484 # 32 "../boost/smart_ptr/shared_ptr.hpp" 2
48485 # 1 "../boost/smart_ptr/detail/shared_count.hpp" 1
48486 # 28 "../boost/smart_ptr/detail/shared_count.hpp"
48487 # 1 "../boost/smart_ptr/bad_weak_ptr.hpp" 1
48488 # 26 "../boost/smart_ptr/bad_weak_ptr.hpp"
48489 namespace boost
48490 {
48491 # 39 "../boost/smart_ptr/bad_weak_ptr.hpp"
48492 class bad_weak_ptr: public std::exception
48493 {
48494 public:
48495
48496 virtual char const * what() const throw()
48497 {
48498 return "tr1::bad_weak_ptr";
48499 }
48500 };
48501
48502
48503
48504
48505
48506 }
48507 # 29 "../boost/smart_ptr/detail/shared_count.hpp" 2
48508 # 1 "../boost/smart_ptr/detail/sp_counted_base.hpp" 1
48509 # 21 "../boost/smart_ptr/detail/sp_counted_base.hpp"
48510 # 1 "../boost/smart_ptr/detail/sp_has_sync.hpp" 1
48511 # 22 "../boost/smart_ptr/detail/sp_counted_base.hpp" 2
48512 # 36 "../boost/smart_ptr/detail/sp_counted_base.hpp"
48513 # 1 "../boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp" 1
48514 # 27 "../boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp"
48515 # 1 "../boost/detail/sp_typeinfo.hpp" 1
48516 # 109 "../boost/detail/sp_typeinfo.hpp"
48517 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 1 3
48518 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 3
48519
48520 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 3
48521
48522
48523
48524
48525
48526
48527
48528 #pragma GCC visibility push(default)
48529
48530 extern "C++" {
48531
48532 namespace __cxxabiv1
48533 {
48534 class __class_type_info;
48535 }
48536 # 83 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 3
48537 namespace std
48538 {
48539
48540
48541
48542
48543
48544
48545 class type_info
48546 {
48547 public:
48548
48549
48550
48551
48552 virtual ~type_info();
48553
48554
48555
48556 const char* name() const
48557 { return __name[0] == '*' ? __name + 1 : __name; }
48558 # 118 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 3
48559 bool before(const type_info& __arg) const
48560 { return (__name[0] == '*' && __arg.__name[0] == '*')
48561 ? __name < __arg.__name
48562 : __builtin_strcmp (__name, __arg.__name) < 0; }
48563
48564 bool operator==(const type_info& __arg) const
48565 {
48566 return ((__name == __arg.__name)
48567 || (__name[0] != '*' &&
48568 __builtin_strcmp (__name, __arg.__name) == 0));
48569 }
48570 # 139 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 3
48571 bool operator!=(const type_info& __arg) const
48572 { return !operator==(__arg); }
48573 # 155 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/typeinfo" 3
48574 virtual bool __is_pointer_p() const;
48575
48576
48577 virtual bool __is_function_p() const;
48578
48579
48580
48581
48582
48583
48584
48585 virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj,
48586 unsigned __outer) const;
48587
48588
48589 virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target,
48590 void **__obj_ptr) const;
48591
48592 protected:
48593 const char *__name;
48594
48595 explicit type_info(const char *__n): __name(__n) { }
48596
48597 private:
48598
48599 type_info& operator=(const type_info&);
48600 type_info(const type_info&);
48601 };
48602
48603
48604
48605
48606
48607
48608
48609 class bad_cast : public exception
48610 {
48611 public:
48612 bad_cast() throw() { }
48613
48614
48615
48616 virtual ~bad_cast() throw();
48617
48618
48619 virtual const char* what() const throw();
48620 };
48621
48622
48623
48624
48625
48626 class bad_typeid : public exception
48627 {
48628 public:
48629 bad_typeid () throw() { }
48630
48631
48632
48633 virtual ~bad_typeid() throw();
48634
48635
48636 virtual const char* what() const throw();
48637 };
48638 }
48639
48640 #pragma GCC visibility pop
48641
48642 }
48643 # 110 "../boost/detail/sp_typeinfo.hpp" 2
48644
48645 namespace boost
48646 {
48647
48648 namespace detail
48649 {
48650
48651
48652
48653
48654
48655
48656
48657 typedef std::type_info sp_typeinfo;
48658
48659
48660
48661 }
48662
48663 }
48664 # 28 "../boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp" 2
48665
48666 namespace boost
48667 {
48668
48669 namespace detail
48670 {
48671
48672 inline int atomic_exchange_and_add( int * pw, int dv )
48673 {
48674
48675
48676
48677
48678 int r;
48679
48680 __asm__ __volatile__
48681 (
48682 "lock\n\t"
48683 "xadd %1, %0":
48684 "=m"( *pw ), "=r"( r ):
48685 "m"( *pw ), "1"( dv ):
48686 "memory", "cc"
48687 );
48688
48689 return r;
48690 }
48691
48692 inline void atomic_increment( int * pw )
48693 {
48694
48695
48696 __asm__
48697 (
48698 "lock\n\t"
48699 "incl %0":
48700 "=m"( *pw ):
48701 "m"( *pw ):
48702 "cc"
48703 );
48704 }
48705
48706 inline int atomic_conditional_increment( int * pw )
48707 {
48708
48709
48710
48711
48712 int rv, tmp;
48713
48714 __asm__
48715 (
48716 "movl %0, %%eax\n\t"
48717 "0:\n\t"
48718 "test %%eax, %%eax\n\t"
48719 "je 1f\n\t"
48720 "movl %%eax, %2\n\t"
48721 "incl %2\n\t"
48722 "lock\n\t"
48723 "cmpxchgl %2, %0\n\t"
48724 "jne 0b\n\t"
48725 "1:":
48726 "=m"( *pw ), "=&a"( rv ), "=&r"( tmp ):
48727 "m"( *pw ):
48728 "cc"
48729 );
48730
48731 return rv;
48732 }
48733
48734 class sp_counted_base
48735 {
48736 private:
48737
48738 sp_counted_base( sp_counted_base const & );
48739 sp_counted_base & operator= ( sp_counted_base const & );
48740
48741 int use_count_;
48742 int weak_count_;
48743
48744 public:
48745
48746 sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
48747 {
48748 }
48749
48750 virtual ~sp_counted_base()
48751 {
48752 }
48753
48754
48755
48756
48757 virtual void dispose() = 0;
48758
48759
48760
48761 virtual void destroy()
48762 {
48763 delete this;
48764 }
48765
48766 virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
48767
48768 void add_ref_copy()
48769 {
48770 atomic_increment( &use_count_ );
48771 }
48772
48773 bool add_ref_lock()
48774 {
48775 return atomic_conditional_increment( &use_count_ ) != 0;
48776 }
48777
48778 void release()
48779 {
48780 if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
48781 {
48782 dispose();
48783 weak_release();
48784 }
48785 }
48786
48787 void weak_add_ref()
48788 {
48789 atomic_increment( &weak_count_ );
48790 }
48791
48792 void weak_release()
48793 {
48794 if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
48795 {
48796 destroy();
48797 }
48798 }
48799
48800 long use_count() const
48801 {
48802 return static_cast<int const volatile &>( use_count_ );
48803 }
48804 };
48805
48806 }
48807
48808 }
48809 # 37 "../boost/smart_ptr/detail/sp_counted_base.hpp" 2
48810 # 30 "../boost/smart_ptr/detail/shared_count.hpp" 2
48811 # 1 "../boost/smart_ptr/detail/sp_counted_impl.hpp" 1
48812 # 38 "../boost/smart_ptr/detail/sp_counted_impl.hpp"
48813 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
48814 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
48815
48816 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
48817
48818
48819 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
48820 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
48821 # 39 "../boost/smart_ptr/detail/sp_counted_impl.hpp" 2
48822
48823 namespace boost
48824 {
48825 # 50 "../boost/smart_ptr/detail/sp_counted_impl.hpp"
48826 namespace detail
48827 {
48828
48829 template<class X> class sp_counted_impl_p: public sp_counted_base
48830 {
48831 private:
48832
48833 X * px_;
48834
48835 sp_counted_impl_p( sp_counted_impl_p const & );
48836 sp_counted_impl_p & operator= ( sp_counted_impl_p const & );
48837
48838 typedef sp_counted_impl_p<X> this_type;
48839
48840 public:
48841
48842 explicit sp_counted_impl_p( X * px ): px_( px )
48843 {
48844
48845
48846
48847 }
48848
48849 virtual void dispose()
48850 {
48851
48852
48853
48854 boost::checked_delete( px_ );
48855 }
48856
48857 virtual void * get_deleter( detail::sp_typeinfo const & )
48858 {
48859 return 0;
48860 }
48861 # 113 "../boost/smart_ptr/detail/sp_counted_impl.hpp"
48862 };
48863 # 122 "../boost/smart_ptr/detail/sp_counted_impl.hpp"
48864 template<class P, class D> class sp_counted_impl_pd: public sp_counted_base
48865 {
48866 private:
48867
48868 P ptr;
48869 D del;
48870
48871 sp_counted_impl_pd( sp_counted_impl_pd const & );
48872 sp_counted_impl_pd & operator= ( sp_counted_impl_pd const & );
48873
48874 typedef sp_counted_impl_pd<P, D> this_type;
48875
48876 public:
48877
48878
48879
48880 sp_counted_impl_pd( P p, D & d ): ptr( p ), del( d )
48881 {
48882 }
48883
48884 sp_counted_impl_pd( P p ): ptr( p ), del()
48885 {
48886 }
48887
48888 virtual void dispose()
48889 {
48890 del( ptr );
48891 }
48892
48893 virtual void * get_deleter( detail::sp_typeinfo const & ti )
48894 {
48895 return ti == typeid(D)? &reinterpret_cast<char&>( del ): 0;
48896 }
48897 # 183 "../boost/smart_ptr/detail/sp_counted_impl.hpp"
48898 };
48899
48900 template<class P, class D, class A> class sp_counted_impl_pda: public sp_counted_base
48901 {
48902 private:
48903
48904 P p_;
48905 D d_;
48906 A a_;
48907
48908 sp_counted_impl_pda( sp_counted_impl_pda const & );
48909 sp_counted_impl_pda & operator= ( sp_counted_impl_pda const & );
48910
48911 typedef sp_counted_impl_pda<P, D, A> this_type;
48912
48913 public:
48914
48915
48916
48917 sp_counted_impl_pda( P p, D & d, A a ): p_( p ), d_( d ), a_( a )
48918 {
48919 }
48920
48921 sp_counted_impl_pda( P p, A a ): p_( p ), d_(), a_( a )
48922 {
48923 }
48924
48925 virtual void dispose()
48926 {
48927 d_( p_ );
48928 }
48929
48930 virtual void destroy()
48931 {
48932 typedef typename A::template rebind< this_type >::other A2;
48933
48934 A2 a2( a_ );
48935
48936 this->~this_type();
48937 a2.deallocate( this, 1 );
48938 }
48939
48940 virtual void * get_deleter( detail::sp_typeinfo const & ti )
48941 {
48942 return ti == typeid(D)? &reinterpret_cast<char&>( d_ ): 0;
48943 }
48944 };
48945
48946
48947
48948
48949
48950 }
48951
48952 }
48953 # 31 "../boost/smart_ptr/detail/shared_count.hpp" 2
48954 # 40 "../boost/smart_ptr/detail/shared_count.hpp"
48955 namespace boost
48956 {
48957
48958 namespace detail
48959 {
48960 # 53 "../boost/smart_ptr/detail/shared_count.hpp"
48961 struct sp_nothrow_tag {};
48962
48963 template< class D > struct sp_inplace_tag
48964 {
48965 };
48966
48967 class weak_count;
48968
48969 class shared_count
48970 {
48971 private:
48972
48973 sp_counted_base * pi_;
48974
48975
48976
48977
48978
48979 friend class weak_count;
48980
48981 public:
48982
48983 shared_count(): pi_(0)
48984
48985
48986
48987 {
48988 }
48989
48990 template<class Y> explicit shared_count( Y * p ): pi_( 0 )
48991
48992
48993
48994 {
48995
48996
48997 try
48998 {
48999 pi_ = new sp_counted_impl_p<Y>( p );
49000 }
49001 catch(...)
49002 {
49003 boost::checked_delete( p );
49004 throw;
49005 }
49006 # 110 "../boost/smart_ptr/detail/shared_count.hpp"
49007 }
49008
49009
49010
49011
49012 template<class P, class D> shared_count( P p, D d ): pi_(0)
49013
49014
49015
49016
49017 {
49018
49019
49020
49021
49022
49023 try
49024 {
49025 pi_ = new sp_counted_impl_pd<P, D>(p, d);
49026 }
49027 catch(...)
49028 {
49029 d(p);
49030 throw;
49031 }
49032 # 147 "../boost/smart_ptr/detail/shared_count.hpp"
49033 }
49034
49035
49036
49037 template< class P, class D > shared_count( P p, sp_inplace_tag<D> ): pi_( 0 )
49038
49039
49040
49041 {
49042
49043
49044 try
49045 {
49046 pi_ = new sp_counted_impl_pd< P, D >( p );
49047 }
49048 catch( ... )
49049 {
49050 D()( p );
49051 throw;
49052 }
49053 # 179 "../boost/smart_ptr/detail/shared_count.hpp"
49054 }
49055
49056
49057
49058 template<class P, class D, class A> shared_count( P p, D d, A a ): pi_( 0 )
49059
49060
49061
49062 {
49063 typedef sp_counted_impl_pda<P, D, A> impl_type;
49064 typedef typename A::template rebind< impl_type >::other A2;
49065
49066 A2 a2( a );
49067
49068
49069
49070 try
49071 {
49072 pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
49073 new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
49074 }
49075 catch(...)
49076 {
49077 d( p );
49078
49079 if( pi_ != 0 )
49080 {
49081 a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
49082 }
49083
49084 throw;
49085 }
49086 # 227 "../boost/smart_ptr/detail/shared_count.hpp"
49087 }
49088
49089
49090
49091 template< class P, class D, class A > shared_count( P p, sp_inplace_tag< D >, A a ): pi_( 0 )
49092
49093
49094
49095 {
49096 typedef sp_counted_impl_pda< P, D, A > impl_type;
49097 typedef typename A::template rebind< impl_type >::other A2;
49098
49099 A2 a2( a );
49100
49101
49102
49103 try
49104 {
49105 pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
49106 new( static_cast< void* >( pi_ ) ) impl_type( p, a );
49107 }
49108 catch(...)
49109 {
49110 D()( p );
49111
49112 if( pi_ != 0 )
49113 {
49114 a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
49115 }
49116
49117 throw;
49118 }
49119 # 275 "../boost/smart_ptr/detail/shared_count.hpp"
49120 }
49121
49122
49123
49124
49125
49126
49127
49128 template<class Y>
49129 explicit shared_count( std::auto_ptr<Y> & r ): pi_( new sp_counted_impl_p<Y>( r.get() ) )
49130
49131
49132
49133 {
49134 # 298 "../boost/smart_ptr/detail/shared_count.hpp"
49135 r.release();
49136 }
49137
49138
49139
49140 ~shared_count()
49141 {
49142 if( pi_ != 0 ) pi_->release();
49143
49144
49145
49146 }
49147
49148 shared_count(shared_count const & r): pi_(r.pi_)
49149
49150
49151
49152 {
49153 if( pi_ != 0 ) pi_->add_ref_copy();
49154 }
49155 # 331 "../boost/smart_ptr/detail/shared_count.hpp"
49156 explicit shared_count(weak_count const & r);
49157 shared_count( weak_count const & r, sp_nothrow_tag );
49158
49159 shared_count & operator= (shared_count const & r)
49160 {
49161 sp_counted_base * tmp = r.pi_;
49162
49163 if( tmp != pi_ )
49164 {
49165 if( tmp != 0 ) tmp->add_ref_copy();
49166 if( pi_ != 0 ) pi_->release();
49167 pi_ = tmp;
49168 }
49169
49170 return *this;
49171 }
49172
49173 void swap(shared_count & r)
49174 {
49175 sp_counted_base * tmp = r.pi_;
49176 r.pi_ = pi_;
49177 pi_ = tmp;
49178 }
49179
49180 long use_count() const
49181 {
49182 return pi_ != 0? pi_->use_count(): 0;
49183 }
49184
49185 bool unique() const
49186 {
49187 return use_count() == 1;
49188 }
49189
49190 bool empty() const
49191 {
49192 return pi_ == 0;
49193 }
49194
49195 friend inline bool operator==(shared_count const & a, shared_count const & b)
49196 {
49197 return a.pi_ == b.pi_;
49198 }
49199
49200 friend inline bool operator<(shared_count const & a, shared_count const & b)
49201 {
49202 return std::less<sp_counted_base *>()( a.pi_, b.pi_ );
49203 }
49204
49205 void * get_deleter( sp_typeinfo const & ti ) const
49206 {
49207 return pi_? pi_->get_deleter( ti ): 0;
49208 }
49209 };
49210
49211
49212 class weak_count
49213 {
49214 private:
49215
49216 sp_counted_base * pi_;
49217
49218
49219
49220
49221
49222 friend class shared_count;
49223
49224 public:
49225
49226 weak_count(): pi_(0)
49227
49228
49229
49230 {
49231 }
49232
49233 weak_count(shared_count const & r): pi_(r.pi_)
49234
49235
49236
49237 {
49238 if(pi_ != 0) pi_->weak_add_ref();
49239 }
49240
49241 weak_count(weak_count const & r): pi_(r.pi_)
49242
49243
49244
49245 {
49246 if(pi_ != 0) pi_->weak_add_ref();
49247 }
49248 # 438 "../boost/smart_ptr/detail/shared_count.hpp"
49249 ~weak_count()
49250 {
49251 if(pi_ != 0) pi_->weak_release();
49252
49253
49254
49255 }
49256
49257 weak_count & operator= (shared_count const & r)
49258 {
49259 sp_counted_base * tmp = r.pi_;
49260
49261 if( tmp != pi_ )
49262 {
49263 if(tmp != 0) tmp->weak_add_ref();
49264 if(pi_ != 0) pi_->weak_release();
49265 pi_ = tmp;
49266 }
49267
49268 return *this;
49269 }
49270
49271 weak_count & operator= (weak_count const & r)
49272 {
49273 sp_counted_base * tmp = r.pi_;
49274
49275 if( tmp != pi_ )
49276 {
49277 if(tmp != 0) tmp->weak_add_ref();
49278 if(pi_ != 0) pi_->weak_release();
49279 pi_ = tmp;
49280 }
49281
49282 return *this;
49283 }
49284
49285 void swap(weak_count & r)
49286 {
49287 sp_counted_base * tmp = r.pi_;
49288 r.pi_ = pi_;
49289 pi_ = tmp;
49290 }
49291
49292 long use_count() const
49293 {
49294 return pi_ != 0? pi_->use_count(): 0;
49295 }
49296
49297 bool empty() const
49298 {
49299 return pi_ == 0;
49300 }
49301
49302 friend inline bool operator==(weak_count const & a, weak_count const & b)
49303 {
49304 return a.pi_ == b.pi_;
49305 }
49306
49307 friend inline bool operator<(weak_count const & a, weak_count const & b)
49308 {
49309 return std::less<sp_counted_base *>()(a.pi_, b.pi_);
49310 }
49311 };
49312
49313 inline shared_count::shared_count( weak_count const & r ): pi_( r.pi_ )
49314
49315
49316
49317 {
49318 if( pi_ == 0 || !pi_->add_ref_lock() )
49319 {
49320 boost::throw_exception( boost::bad_weak_ptr() );
49321 }
49322 }
49323
49324 inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( r.pi_ )
49325
49326
49327
49328 {
49329 if( pi_ != 0 && !pi_->add_ref_lock() )
49330 {
49331 pi_ = 0;
49332 }
49333 }
49334
49335 }
49336
49337 }
49338 # 33 "../boost/smart_ptr/shared_ptr.hpp" 2
49339
49340
49341
49342
49343 # 1 "../boost/smart_ptr/detail/spinlock_pool.hpp" 1
49344 # 25 "../boost/smart_ptr/detail/spinlock_pool.hpp"
49345 # 1 "../boost/smart_ptr/detail/spinlock.hpp" 1
49346 # 41 "../boost/smart_ptr/detail/spinlock.hpp"
49347 # 1 "../boost/smart_ptr/detail/spinlock_sync.hpp" 1
49348 # 18 "../boost/smart_ptr/detail/spinlock_sync.hpp"
49349 # 1 "../boost/smart_ptr/detail/yield_k.hpp" 1
49350 # 91 "../boost/smart_ptr/detail/yield_k.hpp"
49351 namespace boost
49352 {
49353
49354 namespace detail
49355 {
49356
49357 inline void yield( unsigned k )
49358 {
49359 if( k < 4 )
49360 {
49361 }
49362
49363 else if( k < 16 )
49364 {
49365 __asm__ __volatile__( "rep; nop" : : : "memory" );
49366 }
49367
49368 else if( k < 32 || k & 1 )
49369 {
49370 sched_yield();
49371 }
49372 else
49373 {
49374
49375 struct timespec rqtp = { 0, 0 };
49376
49377
49378
49379
49380 rqtp.tv_sec = 0;
49381 rqtp.tv_nsec = 1000;
49382
49383 nanosleep( &rqtp, 0 );
49384 }
49385 }
49386
49387 }
49388
49389 }
49390 # 19 "../boost/smart_ptr/detail/spinlock_sync.hpp" 2
49391
49392
49393
49394
49395
49396 namespace boost
49397 {
49398
49399 namespace detail
49400 {
49401
49402 class spinlock
49403 {
49404 public:
49405
49406 int v_;
49407
49408 public:
49409
49410 bool try_lock()
49411 {
49412 int r = __sync_lock_test_and_set( &v_, 1 );
49413 return r == 0;
49414 }
49415
49416 void lock()
49417 {
49418 for( unsigned k = 0; !try_lock(); ++k )
49419 {
49420 boost::detail::yield( k );
49421 }
49422 }
49423
49424 void unlock()
49425 {
49426 __sync_lock_release( &v_ );
49427 }
49428
49429 public:
49430
49431 class scoped_lock
49432 {
49433 private:
49434
49435 spinlock & sp_;
49436
49437 scoped_lock( scoped_lock const & );
49438 scoped_lock & operator=( scoped_lock const & );
49439
49440 public:
49441
49442 explicit scoped_lock( spinlock & sp ): sp_( sp )
49443 {
49444 sp.lock();
49445 }
49446
49447 ~scoped_lock()
49448 {
49449 sp_.unlock();
49450 }
49451 };
49452 };
49453
49454 }
49455 }
49456 # 42 "../boost/smart_ptr/detail/spinlock.hpp" 2
49457 # 26 "../boost/smart_ptr/detail/spinlock_pool.hpp" 2
49458 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
49459 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
49460
49461 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
49462
49463
49464 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
49465 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
49466 # 27 "../boost/smart_ptr/detail/spinlock_pool.hpp" 2
49467
49468 namespace boost
49469 {
49470
49471 namespace detail
49472 {
49473
49474 template< int I > class spinlock_pool
49475 {
49476 private:
49477
49478 static spinlock pool_[ 41 ];
49479
49480 public:
49481
49482 static spinlock & spinlock_for( void const * pv )
49483 {
49484
49485
49486
49487 std::size_t i = reinterpret_cast< std::size_t >( pv ) % 41;
49488
49489 return pool_[ i ];
49490 }
49491
49492 class scoped_lock
49493 {
49494 private:
49495
49496 spinlock & sp_;
49497
49498 scoped_lock( scoped_lock const & );
49499 scoped_lock & operator=( scoped_lock const & );
49500
49501 public:
49502
49503 explicit scoped_lock( void const * pv ): sp_( spinlock_for( pv ) )
49504 {
49505 sp_.lock();
49506 }
49507
49508 ~scoped_lock()
49509 {
49510 sp_.unlock();
49511 }
49512 };
49513 };
49514
49515 template< int I > spinlock spinlock_pool< I >::pool_[ 41 ] =
49516 {
49517 {0}, {0}, {0}, {0}, {0},
49518 {0}, {0}, {0}, {0}, {0},
49519 {0}, {0}, {0}, {0}, {0},
49520 {0}, {0}, {0}, {0}, {0},
49521 {0}, {0}, {0}, {0}, {0},
49522 {0}, {0}, {0}, {0}, {0},
49523 {0}, {0}, {0}, {0}, {0},
49524 {0}, {0}, {0}, {0}, {0},
49525 {0}
49526 };
49527
49528 }
49529 }
49530 # 38 "../boost/smart_ptr/shared_ptr.hpp" 2
49531 # 1 "../boost/memory_order.hpp" 1
49532 # 21 "../boost/memory_order.hpp"
49533 namespace boost
49534 {
49535 # 41 "../boost/memory_order.hpp"
49536 enum memory_order
49537 {
49538 memory_order_relaxed = 0,
49539 memory_order_acquire = 1,
49540 memory_order_release = 2,
49541 memory_order_acq_rel = 3,
49542 memory_order_seq_cst = 7,
49543 memory_order_consume = 8
49544 };
49545
49546 }
49547 # 39 "../boost/smart_ptr/shared_ptr.hpp" 2
49548
49549
49550
49551
49552
49553 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
49554 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
49555
49556 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
49557
49558
49559 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
49560 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
49561 # 45 "../boost/smart_ptr/shared_ptr.hpp" 2
49562 # 54 "../boost/smart_ptr/shared_ptr.hpp"
49563 namespace boost
49564 {
49565
49566 template<class T> class shared_ptr;
49567 template<class T> class weak_ptr;
49568 template<class T> class enable_shared_from_this;
49569 template<class T> class enable_shared_from_this2;
49570
49571 namespace detail
49572 {
49573
49574 struct static_cast_tag {};
49575 struct const_cast_tag {};
49576 struct dynamic_cast_tag {};
49577 struct polymorphic_cast_tag {};
49578
49579 template<class T> struct shared_ptr_traits
49580 {
49581 typedef T & reference;
49582 };
49583
49584 template<> struct shared_ptr_traits<void>
49585 {
49586 typedef void reference;
49587 };
49588
49589
49590
49591 template<> struct shared_ptr_traits<void const>
49592 {
49593 typedef void reference;
49594 };
49595
49596 template<> struct shared_ptr_traits<void volatile>
49597 {
49598 typedef void reference;
49599 };
49600
49601 template<> struct shared_ptr_traits<void const volatile>
49602 {
49603 typedef void reference;
49604 };
49605
49606
49607
49608
49609
49610 template< class X, class Y, class T > inline void sp_enable_shared_from_this( boost::shared_ptr<X> const * ppx, Y const * py, boost::enable_shared_from_this< T > const * pe )
49611 {
49612 if( pe != 0 )
49613 {
49614 pe->_internal_accept_owner( ppx, const_cast< Y* >( py ) );
49615 }
49616 }
49617
49618 template< class X, class Y, class T > inline void sp_enable_shared_from_this( boost::shared_ptr<X> * ppx, Y const * py, boost::enable_shared_from_this2< T > const * pe )
49619 {
49620 if( pe != 0 )
49621 {
49622 pe->_internal_accept_owner( ppx, const_cast< Y* >( py ) );
49623 }
49624 }
49625 # 132 "../boost/smart_ptr/shared_ptr.hpp"
49626 inline void sp_enable_shared_from_this( ... )
49627 {
49628 }
49629
49630
49631
49632
49633
49634
49635
49636 template< class T, class R > struct sp_enable_if_auto_ptr
49637 {
49638 };
49639
49640 template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
49641 {
49642 typedef R type;
49643 };
49644
49645
49646
49647 }
49648 # 164 "../boost/smart_ptr/shared_ptr.hpp"
49649 template<class T> class shared_ptr
49650 {
49651 private:
49652
49653
49654 typedef shared_ptr<T> this_type;
49655
49656 public:
49657
49658 typedef T element_type;
49659 typedef T value_type;
49660 typedef T * pointer;
49661 typedef typename boost::detail::shared_ptr_traits<T>::reference reference;
49662
49663 shared_ptr(): px(0), pn()
49664 {
49665 }
49666
49667 template<class Y>
49668 explicit shared_ptr( Y * p ): px( p ), pn( p )
49669 {
49670 boost::detail::sp_enable_shared_from_this( this, p, p );
49671 }
49672
49673
49674
49675
49676
49677
49678
49679 template<class Y, class D> shared_ptr(Y * p, D d): px(p), pn(p, d)
49680 {
49681 boost::detail::sp_enable_shared_from_this( this, p, p );
49682 }
49683
49684
49685
49686 template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
49687 {
49688 boost::detail::sp_enable_shared_from_this( this, p, p );
49689 }
49690 # 218 "../boost/smart_ptr/shared_ptr.hpp"
49691 template<class Y>
49692 explicit shared_ptr(weak_ptr<Y> const & r): pn(r.pn)
49693 {
49694
49695 px = r.px;
49696 }
49697
49698 template<class Y>
49699 shared_ptr( weak_ptr<Y> const & r, boost::detail::sp_nothrow_tag ): px( 0 ), pn( r.pn, boost::detail::sp_nothrow_tag() )
49700 {
49701 if( !pn.empty() )
49702 {
49703 px = r.px;
49704 }
49705 }
49706
49707 template<class Y>
49708
49709
49710 shared_ptr( shared_ptr<Y> const & r, typename boost::detail::sp_enable_if_convertible<Y,T>::type = boost::detail::sp_empty() )
49711
49712
49713
49714
49715
49716
49717 : px( r.px ), pn( r.pn )
49718 {
49719 }
49720
49721
49722 template< class Y >
49723 shared_ptr( shared_ptr<Y> const & r, T * p ): px( p ), pn( r.pn )
49724 {
49725 }
49726
49727 template<class Y>
49728 shared_ptr(shared_ptr<Y> const & r, boost::detail::static_cast_tag): px(static_cast<element_type *>(r.px)), pn(r.pn)
49729 {
49730 }
49731
49732 template<class Y>
49733 shared_ptr(shared_ptr<Y> const & r, boost::detail::const_cast_tag): px(const_cast<element_type *>(r.px)), pn(r.pn)
49734 {
49735 }
49736
49737 template<class Y>
49738 shared_ptr(shared_ptr<Y> const & r, boost::detail::dynamic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
49739 {
49740 if(px == 0)
49741 {
49742 pn = boost::detail::shared_count();
49743 }
49744 }
49745
49746 template<class Y>
49747 shared_ptr(shared_ptr<Y> const & r, boost::detail::polymorphic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
49748 {
49749 if(px == 0)
49750 {
49751 boost::throw_exception(std::bad_cast());
49752 }
49753 }
49754
49755
49756
49757 template<class Y>
49758 explicit shared_ptr(std::auto_ptr<Y> & r): px(r.get()), pn()
49759 {
49760 Y * tmp = r.get();
49761 pn = boost::detail::shared_count(r);
49762 boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
49763 }
49764
49765
49766
49767 template<class Ap>
49768 explicit shared_ptr( Ap r, typename boost::detail::sp_enable_if_auto_ptr<Ap, int>::type = 0 ): px( r.get() ), pn()
49769 {
49770 typename Ap::element_type * tmp = r.get();
49771 pn = boost::detail::shared_count( r );
49772 boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
49773 }
49774 # 309 "../boost/smart_ptr/shared_ptr.hpp"
49775 shared_ptr & operator=( shared_ptr const & r )
49776 {
49777 this_type(r).swap(*this);
49778 return *this;
49779 }
49780
49781
49782
49783 template<class Y>
49784 shared_ptr & operator=(shared_ptr<Y> const & r)
49785 {
49786 this_type(r).swap(*this);
49787 return *this;
49788 }
49789
49790
49791
49792
49793
49794 template<class Y>
49795 shared_ptr & operator=( std::auto_ptr<Y> & r )
49796 {
49797 this_type(r).swap(*this);
49798 return *this;
49799 }
49800
49801
49802
49803 template<class Ap>
49804 typename boost::detail::sp_enable_if_auto_ptr< Ap, shared_ptr & >::type operator=( Ap r )
49805 {
49806 this_type( r ).swap( *this );
49807 return *this;
49808 }
49809 # 390 "../boost/smart_ptr/shared_ptr.hpp"
49810 void reset()
49811 {
49812 this_type().swap(*this);
49813 }
49814
49815 template<class Y> void reset(Y * p)
49816 {
49817 (static_cast<void> (0));
49818 this_type(p).swap(*this);
49819 }
49820
49821 template<class Y, class D> void reset( Y * p, D d )
49822 {
49823 this_type( p, d ).swap( *this );
49824 }
49825
49826 template<class Y, class D, class A> void reset( Y * p, D d, A a )
49827 {
49828 this_type( p, d, a ).swap( *this );
49829 }
49830
49831 template<class Y> void reset( shared_ptr<Y> const & r, T * p )
49832 {
49833 this_type( r, p ).swap( *this );
49834 }
49835
49836 reference operator* () const
49837 {
49838 (static_cast<void> (0));
49839 return *px;
49840 }
49841
49842 T * operator-> () const
49843 {
49844 (static_cast<void> (0));
49845 return px;
49846 }
49847
49848 T * get() const
49849 {
49850 return px;
49851 }
49852
49853
49854 # 1 "../boost/smart_ptr/detail/operator_bool.hpp" 1
49855 # 43 "../boost/smart_ptr/detail/operator_bool.hpp"
49856 typedef T * this_type::*unspecified_bool_type;
49857
49858 operator unspecified_bool_type() const
49859 {
49860 return px == 0? 0: &this_type::px;
49861 }
49862
49863
49864
49865
49866 bool operator! () const
49867 {
49868 return px == 0;
49869 }
49870 # 435 "../boost/smart_ptr/shared_ptr.hpp" 2
49871
49872 bool unique() const
49873 {
49874 return pn.unique();
49875 }
49876
49877 long use_count() const
49878 {
49879 return pn.use_count();
49880 }
49881
49882 void swap(shared_ptr<T> & other)
49883 {
49884 std::swap(px, other.px);
49885 pn.swap(other.pn);
49886 }
49887
49888 template<class Y> bool owner_before( shared_ptr<Y> const & rhs ) const
49889 {
49890 return pn < rhs.pn;
49891 }
49892
49893 template<class Y> bool owner_before( weak_ptr<Y> const & rhs ) const
49894 {
49895 return pn < rhs.pn;
49896 }
49897
49898 void * _internal_get_deleter( boost::detail::sp_typeinfo const & ti ) const
49899 {
49900 return pn.get_deleter( ti );
49901 }
49902
49903 bool _internal_equiv( shared_ptr const & r ) const
49904 {
49905 return px == r.px && pn == r.pn;
49906 }
49907
49908
49909
49910
49911
49912
49913 private:
49914
49915 template<class Y> friend class shared_ptr;
49916 template<class Y> friend class weak_ptr;
49917
49918
49919
49920
49921 T * px;
49922 boost::detail::shared_count pn;
49923
49924 };
49925
49926 template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
49927 {
49928 return a.get() == b.get();
49929 }
49930
49931 template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b)
49932 {
49933 return a.get() != b.get();
49934 }
49935 # 511 "../boost/smart_ptr/shared_ptr.hpp"
49936 template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b)
49937 {
49938 return a.owner_before( b );
49939 }
49940
49941 template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b)
49942 {
49943 a.swap(b);
49944 }
49945
49946 template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r)
49947 {
49948 return shared_ptr<T>(r, boost::detail::static_cast_tag());
49949 }
49950
49951 template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r)
49952 {
49953 return shared_ptr<T>(r, boost::detail::const_cast_tag());
49954 }
49955
49956 template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r)
49957 {
49958 return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
49959 }
49960
49961
49962
49963 template<class T, class U> shared_ptr<T> shared_static_cast(shared_ptr<U> const & r)
49964 {
49965 return shared_ptr<T>(r, boost::detail::static_cast_tag());
49966 }
49967
49968 template<class T, class U> shared_ptr<T> shared_dynamic_cast(shared_ptr<U> const & r)
49969 {
49970 return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
49971 }
49972
49973 template<class T, class U> shared_ptr<T> shared_polymorphic_cast(shared_ptr<U> const & r)
49974 {
49975 return shared_ptr<T>(r, boost::detail::polymorphic_cast_tag());
49976 }
49977
49978 template<class T, class U> shared_ptr<T> shared_polymorphic_downcast(shared_ptr<U> const & r)
49979 {
49980 (static_cast<void> (0));
49981 return shared_static_cast<T>(r);
49982 }
49983
49984
49985
49986 template<class T> inline T * get_pointer(shared_ptr<T> const & p)
49987 {
49988 return p.get();
49989 }
49990 # 588 "../boost/smart_ptr/shared_ptr.hpp"
49991 template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, shared_ptr<Y> const & p)
49992
49993 {
49994 os << p.get();
49995 return os;
49996 }
49997 # 618 "../boost/smart_ptr/shared_ptr.hpp"
49998 template<class D, class T> D * get_deleter(shared_ptr<T> const & p)
49999 {
50000 return static_cast<D *>(p._internal_get_deleter(typeid(D)));
50001 }
50002
50003
50004
50005
50006
50007
50008
50009 template<class T> inline bool atomic_is_lock_free( shared_ptr<T> const * )
50010 {
50011 return false;
50012 }
50013
50014 template<class T> shared_ptr<T> atomic_load( shared_ptr<T> const * p )
50015 {
50016 boost::detail::spinlock_pool<2>::scoped_lock lock( p );
50017 return *p;
50018 }
50019
50020 template<class T> inline shared_ptr<T> atomic_load_explicit( shared_ptr<T> const * p, memory_order )
50021 {
50022 return atomic_load( p );
50023 }
50024
50025 template<class T> void atomic_store( shared_ptr<T> * p, shared_ptr<T> r )
50026 {
50027 boost::detail::spinlock_pool<2>::scoped_lock lock( p );
50028 p->swap( r );
50029 }
50030
50031 template<class T> inline void atomic_store_explicit( shared_ptr<T> * p, shared_ptr<T> r, memory_order )
50032 {
50033 atomic_store( p, r );
50034 }
50035
50036 template<class T> shared_ptr<T> atomic_exchange( shared_ptr<T> * p, shared_ptr<T> r )
50037 {
50038 boost::detail::spinlock & sp = boost::detail::spinlock_pool<2>::spinlock_for( p );
50039
50040 sp.lock();
50041 p->swap( r );
50042 sp.unlock();
50043
50044 return r;
50045 }
50046
50047 template<class T> shared_ptr<T> atomic_exchange_explicit( shared_ptr<T> * p, shared_ptr<T> r, memory_order )
50048 {
50049 return atomic_exchange( p, r );
50050 }
50051
50052 template<class T> bool atomic_compare_exchange( shared_ptr<T> * p, shared_ptr<T> * v, shared_ptr<T> w )
50053 {
50054 boost::detail::spinlock & sp = boost::detail::spinlock_pool<2>::spinlock_for( p );
50055
50056 sp.lock();
50057
50058 if( p->_internal_equiv( *v ) )
50059 {
50060 p->swap( w );
50061
50062 sp.unlock();
50063
50064 return true;
50065 }
50066 else
50067 {
50068 shared_ptr<T> tmp( *p );
50069
50070 sp.unlock();
50071
50072 tmp.swap( *v );
50073 return false;
50074 }
50075 }
50076
50077 template<class T> inline bool atomic_compare_exchange_explicit( shared_ptr<T> * p, shared_ptr<T> * v, shared_ptr<T> w, memory_order , memory_order )
50078 {
50079 return atomic_compare_exchange( p, v, w );
50080 }
50081
50082
50083
50084
50085
50086 template< class T > struct hash;
50087
50088 template< class T > std::size_t hash_value( boost::shared_ptr<T> const & p )
50089 {
50090 return boost::hash< T* >()( p.get() );
50091 }
50092
50093 }
50094 # 18 "../boost/shared_ptr.hpp" 2
50095 # 30 "../boost/filesystem/v3/path.hpp" 2
50096 # 1 "../boost/io/detail/quoted_manip.hpp" 1
50097 # 19 "../boost/io/detail/quoted_manip.hpp"
50098 # 1 "../boost/io/ios_state.hpp" 1
50099 # 12 "../boost/io/ios_state.hpp"
50100 # 1 "../boost/io_fwd.hpp" 1
50101 # 15 "../boost/io_fwd.hpp"
50102 namespace boost
50103 {
50104 namespace io
50105 {
50106
50107
50108
50109
50110 class ios_flags_saver;
50111 class ios_precision_saver;
50112 class ios_width_saver;
50113 class ios_base_all_saver;
50114
50115 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50116 class basic_ios_iostate_saver;
50117 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50118 class basic_ios_exception_saver;
50119 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50120 class basic_ios_tie_saver;
50121 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50122 class basic_ios_rdbuf_saver;
50123 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50124 class basic_ios_fill_saver;
50125 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50126 class basic_ios_locale_saver;
50127 template < typename Ch, class Tr = ::std::char_traits<Ch> >
50128 class basic_ios_all_saver;
50129
50130 typedef basic_ios_iostate_saver<char> ios_iostate_saver;
50131 typedef basic_ios_iostate_saver<wchar_t> wios_iostate_saver;
50132 typedef basic_ios_exception_saver<char> ios_exception_saver;
50133 typedef basic_ios_exception_saver<wchar_t> wios_exception_saver;
50134 typedef basic_ios_tie_saver<char> ios_tie_saver;
50135 typedef basic_ios_tie_saver<wchar_t> wios_tie_saver;
50136 typedef basic_ios_rdbuf_saver<char> ios_rdbuf_saver;
50137 typedef basic_ios_rdbuf_saver<wchar_t> wios_rdbuf_saver;
50138 typedef basic_ios_fill_saver<char> ios_fill_saver;
50139 typedef basic_ios_fill_saver<wchar_t> wios_fill_saver;
50140 typedef basic_ios_locale_saver<char> ios_locale_saver;
50141 typedef basic_ios_locale_saver<wchar_t> wios_locale_saver;
50142 typedef basic_ios_all_saver<char> ios_all_saver;
50143 typedef basic_ios_all_saver<wchar_t> wios_all_saver;
50144
50145 class ios_iword_saver;
50146 class ios_pword_saver;
50147 class ios_all_word_saver;
50148
50149
50150 }
50151 }
50152 # 13 "../boost/io/ios_state.hpp" 2
50153 # 24 "../boost/io/ios_state.hpp"
50154 namespace boost
50155 {
50156 namespace io
50157 {
50158
50159
50160
50161
50162 class ios_flags_saver
50163 {
50164 public:
50165 typedef ::std::ios_base state_type;
50166 typedef ::std::ios_base::fmtflags aspect_type;
50167
50168 explicit ios_flags_saver( state_type &s )
50169 : s_save_( s ), a_save_( s.flags() )
50170 {}
50171 ios_flags_saver( state_type &s, aspect_type const &a )
50172 : s_save_( s ), a_save_( s.flags(a) )
50173 {}
50174 ~ios_flags_saver()
50175 { this->restore(); }
50176
50177 void restore()
50178 { s_save_.flags( a_save_ ); }
50179
50180 private:
50181 state_type & s_save_;
50182 aspect_type const a_save_;
50183
50184 ios_flags_saver& operator=(const ios_flags_saver&);
50185 };
50186
50187 class ios_precision_saver
50188 {
50189 public:
50190 typedef ::std::ios_base state_type;
50191 typedef ::std::streamsize aspect_type;
50192
50193 explicit ios_precision_saver( state_type &s )
50194 : s_save_( s ), a_save_( s.precision() )
50195 {}
50196 ios_precision_saver( state_type &s, aspect_type const &a )
50197 : s_save_( s ), a_save_( s.precision(a) )
50198 {}
50199 ~ios_precision_saver()
50200 { this->restore(); }
50201
50202 void restore()
50203 { s_save_.precision( a_save_ ); }
50204
50205 private:
50206 state_type & s_save_;
50207 aspect_type const a_save_;
50208
50209 ios_precision_saver& operator=(const ios_precision_saver&);
50210 };
50211
50212 class ios_width_saver
50213 {
50214 public:
50215 typedef ::std::ios_base state_type;
50216 typedef ::std::streamsize aspect_type;
50217
50218 explicit ios_width_saver( state_type &s )
50219 : s_save_( s ), a_save_( s.width() )
50220 {}
50221 ios_width_saver( state_type &s, aspect_type const &a )
50222 : s_save_( s ), a_save_( s.width(a) )
50223 {}
50224 ~ios_width_saver()
50225 { this->restore(); }
50226
50227 void restore()
50228 { s_save_.width( a_save_ ); }
50229
50230 private:
50231 state_type & s_save_;
50232 aspect_type const a_save_;
50233 ios_width_saver& operator=(const ios_width_saver&);
50234 };
50235
50236
50237
50238
50239 template < typename Ch, class Tr >
50240 class basic_ios_iostate_saver
50241 {
50242 public:
50243 typedef ::std::basic_ios<Ch, Tr> state_type;
50244 typedef ::std::ios_base::iostate aspect_type;
50245
50246 explicit basic_ios_iostate_saver( state_type &s )
50247 : s_save_( s ), a_save_( s.rdstate() )
50248 {}
50249 basic_ios_iostate_saver( state_type &s, aspect_type const &a )
50250 : s_save_( s ), a_save_( s.rdstate() )
50251 { s.clear(a); }
50252 ~basic_ios_iostate_saver()
50253 { this->restore(); }
50254
50255 void restore()
50256 { s_save_.clear( a_save_ ); }
50257
50258 private:
50259 state_type & s_save_;
50260 aspect_type const a_save_;
50261 basic_ios_iostate_saver& operator=(const basic_ios_iostate_saver&);
50262 };
50263
50264 template < typename Ch, class Tr >
50265 class basic_ios_exception_saver
50266 {
50267 public:
50268 typedef ::std::basic_ios<Ch, Tr> state_type;
50269 typedef ::std::ios_base::iostate aspect_type;
50270
50271 explicit basic_ios_exception_saver( state_type &s )
50272 : s_save_( s ), a_save_( s.exceptions() )
50273 {}
50274
50275
50276
50277 basic_ios_exception_saver( state_type &s, aspect_type const &a )
50278
50279 : s_save_( s ), a_save_( s.exceptions() )
50280 { s.exceptions(a); }
50281 ~basic_ios_exception_saver()
50282 { this->restore(); }
50283
50284 void restore()
50285 { s_save_.exceptions( a_save_ ); }
50286
50287 private:
50288 state_type & s_save_;
50289 aspect_type const a_save_;
50290 basic_ios_exception_saver& operator=(const basic_ios_exception_saver&);
50291 };
50292
50293 template < typename Ch, class Tr >
50294 class basic_ios_tie_saver
50295 {
50296 public:
50297 typedef ::std::basic_ios<Ch, Tr> state_type;
50298 typedef ::std::basic_ostream<Ch, Tr> * aspect_type;
50299
50300 explicit basic_ios_tie_saver( state_type &s )
50301 : s_save_( s ), a_save_( s.tie() )
50302 {}
50303 basic_ios_tie_saver( state_type &s, aspect_type const &a )
50304 : s_save_( s ), a_save_( s.tie(a) )
50305 {}
50306 ~basic_ios_tie_saver()
50307 { this->restore(); }
50308
50309 void restore()
50310 { s_save_.tie( a_save_ ); }
50311
50312 private:
50313 state_type & s_save_;
50314 aspect_type const a_save_;
50315 basic_ios_tie_saver& operator=(const basic_ios_tie_saver&);
50316 };
50317
50318 template < typename Ch, class Tr >
50319 class basic_ios_rdbuf_saver
50320 {
50321 public:
50322 typedef ::std::basic_ios<Ch, Tr> state_type;
50323 typedef ::std::basic_streambuf<Ch, Tr> * aspect_type;
50324
50325 explicit basic_ios_rdbuf_saver( state_type &s )
50326 : s_save_( s ), a_save_( s.rdbuf() )
50327 {}
50328 basic_ios_rdbuf_saver( state_type &s, aspect_type const &a )
50329 : s_save_( s ), a_save_( s.rdbuf(a) )
50330 {}
50331 ~basic_ios_rdbuf_saver()
50332 { this->restore(); }
50333
50334 void restore()
50335 { s_save_.rdbuf( a_save_ ); }
50336
50337 private:
50338 state_type & s_save_;
50339 aspect_type const a_save_;
50340 basic_ios_rdbuf_saver& operator=(const basic_ios_rdbuf_saver&);
50341 };
50342
50343 template < typename Ch, class Tr >
50344 class basic_ios_fill_saver
50345 {
50346 public:
50347 typedef ::std::basic_ios<Ch, Tr> state_type;
50348 typedef typename state_type::char_type aspect_type;
50349
50350 explicit basic_ios_fill_saver( state_type &s )
50351 : s_save_( s ), a_save_( s.fill() )
50352 {}
50353 basic_ios_fill_saver( state_type &s, aspect_type const &a )
50354 : s_save_( s ), a_save_( s.fill(a) )
50355 {}
50356 ~basic_ios_fill_saver()
50357 { this->restore(); }
50358
50359 void restore()
50360 { s_save_.fill( a_save_ ); }
50361
50362 private:
50363 state_type & s_save_;
50364 aspect_type const a_save_;
50365 basic_ios_fill_saver& operator=(const basic_ios_fill_saver&);
50366 };
50367
50368
50369 template < typename Ch, class Tr >
50370 class basic_ios_locale_saver
50371 {
50372 public:
50373 typedef ::std::basic_ios<Ch, Tr> state_type;
50374 typedef ::std::locale aspect_type;
50375
50376 explicit basic_ios_locale_saver( state_type &s )
50377 : s_save_( s ), a_save_( s.getloc() )
50378 {}
50379 basic_ios_locale_saver( state_type &s, aspect_type const &a )
50380 : s_save_( s ), a_save_( s.imbue(a) )
50381 {}
50382 ~basic_ios_locale_saver()
50383 { this->restore(); }
50384
50385 void restore()
50386 { s_save_.imbue( a_save_ ); }
50387
50388 private:
50389 state_type & s_save_;
50390 aspect_type const a_save_;
50391 basic_ios_locale_saver& operator=(const basic_ios_locale_saver&);
50392 };
50393
50394
50395
50396
50397
50398 class ios_iword_saver
50399 {
50400 public:
50401 typedef ::std::ios_base state_type;
50402 typedef int index_type;
50403 typedef long aspect_type;
50404
50405 explicit ios_iword_saver( state_type &s, index_type i )
50406 : s_save_( s ), a_save_( s.iword(i) ), i_save_( i )
50407 {}
50408 ios_iword_saver( state_type &s, index_type i, aspect_type const &a )
50409 : s_save_( s ), a_save_( s.iword(i) ), i_save_( i )
50410 { s.iword(i) = a; }
50411 ~ios_iword_saver()
50412 { this->restore(); }
50413
50414 void restore()
50415 { s_save_.iword( i_save_ ) = a_save_; }
50416
50417 private:
50418 state_type & s_save_;
50419 aspect_type const a_save_;
50420 index_type const i_save_;
50421
50422 ios_iword_saver& operator=(const ios_iword_saver&);
50423 };
50424
50425 class ios_pword_saver
50426 {
50427 public:
50428 typedef ::std::ios_base state_type;
50429 typedef int index_type;
50430 typedef void * aspect_type;
50431
50432 explicit ios_pword_saver( state_type &s, index_type i )
50433 : s_save_( s ), a_save_( s.pword(i) ), i_save_( i )
50434 {}
50435 ios_pword_saver( state_type &s, index_type i, aspect_type const &a )
50436 : s_save_( s ), a_save_( s.pword(i) ), i_save_( i )
50437 { s.pword(i) = a; }
50438 ~ios_pword_saver()
50439 { this->restore(); }
50440
50441 void restore()
50442 { s_save_.pword( i_save_ ) = a_save_; }
50443
50444 private:
50445 state_type & s_save_;
50446 aspect_type const a_save_;
50447 index_type const i_save_;
50448
50449 ios_pword_saver operator=(const ios_pword_saver&);
50450 };
50451
50452
50453
50454
50455 class ios_base_all_saver
50456 {
50457 public:
50458 typedef ::std::ios_base state_type;
50459
50460 explicit ios_base_all_saver( state_type &s )
50461 : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() )
50462 , a3_save_( s.width() )
50463 {}
50464
50465 ~ios_base_all_saver()
50466 { this->restore(); }
50467
50468 void restore()
50469 {
50470 s_save_.width( a3_save_ );
50471 s_save_.precision( a2_save_ );
50472 s_save_.flags( a1_save_ );
50473 }
50474
50475 private:
50476 state_type & s_save_;
50477 state_type::fmtflags const a1_save_;
50478 ::std::streamsize const a2_save_;
50479 ::std::streamsize const a3_save_;
50480
50481 ios_base_all_saver& operator=(const ios_base_all_saver&);
50482 };
50483
50484 template < typename Ch, class Tr >
50485 class basic_ios_all_saver
50486 {
50487 public:
50488 typedef ::std::basic_ios<Ch, Tr> state_type;
50489
50490 explicit basic_ios_all_saver( state_type &s )
50491 : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() )
50492 , a3_save_( s.width() ), a4_save_( s.rdstate() )
50493 , a5_save_( s.exceptions() ), a6_save_( s.tie() )
50494 , a7_save_( s.rdbuf() ), a8_save_( s.fill() )
50495
50496 , a9_save_( s.getloc() )
50497
50498 {}
50499
50500 ~basic_ios_all_saver()
50501 { this->restore(); }
50502
50503 void restore()
50504 {
50505
50506 s_save_.imbue( a9_save_ );
50507
50508 s_save_.fill( a8_save_ );
50509 s_save_.rdbuf( a7_save_ );
50510 s_save_.tie( a6_save_ );
50511 s_save_.exceptions( a5_save_ );
50512 s_save_.clear( a4_save_ );
50513 s_save_.width( a3_save_ );
50514 s_save_.precision( a2_save_ );
50515 s_save_.flags( a1_save_ );
50516 }
50517
50518 private:
50519 state_type & s_save_;
50520 typename state_type::fmtflags const a1_save_;
50521 ::std::streamsize const a2_save_;
50522 ::std::streamsize const a3_save_;
50523 typename state_type::iostate const a4_save_;
50524 typename state_type::iostate const a5_save_;
50525 ::std::basic_ostream<Ch, Tr> * const a6_save_;
50526 ::std::basic_streambuf<Ch, Tr> * const a7_save_;
50527 typename state_type::char_type const a8_save_;
50528
50529 ::std::locale const a9_save_;
50530
50531
50532 basic_ios_all_saver& operator=(const basic_ios_all_saver&);
50533 };
50534
50535 class ios_all_word_saver
50536 {
50537 public:
50538 typedef ::std::ios_base state_type;
50539 typedef int index_type;
50540
50541 ios_all_word_saver( state_type &s, index_type i )
50542 : s_save_( s ), i_save_( i ), a1_save_( s.iword(i) )
50543 , a2_save_( s.pword(i) )
50544 {}
50545
50546 ~ios_all_word_saver()
50547 { this->restore(); }
50548
50549 void restore()
50550 {
50551 s_save_.pword( i_save_ ) = a2_save_;
50552 s_save_.iword( i_save_ ) = a1_save_;
50553 }
50554
50555 private:
50556 state_type & s_save_;
50557 index_type const i_save_;
50558 long const a1_save_;
50559 void * const a2_save_;
50560
50561 ios_all_word_saver& operator=(const ios_all_word_saver&);
50562 };
50563
50564
50565 }
50566 }
50567 # 20 "../boost/io/detail/quoted_manip.hpp" 2
50568
50569 namespace boost
50570 {
50571 namespace io
50572 {
50573 namespace detail { template <class String, class Char> struct quoted_proxy; }
50574
50575
50576
50577
50578 template <class Char, class Traits, class Alloc>
50579 detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>
50580 quoted(const std::basic_string<Char, Traits, Alloc>& s,
50581 Char escape='\\', Char delim='\"');
50582
50583
50584 template <class Char, class Traits, class Alloc>
50585 detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> &, Char>
50586 quoted(std::basic_string<Char, Traits, Alloc>& s,
50587 Char escape='\\', Char delim='\"');
50588
50589
50590 template <class Char>
50591 detail::quoted_proxy<const Char*, Char>
50592 quoted(const Char* s, Char escape='\\', Char delim='\"');
50593
50594
50595
50596 namespace detail
50597 {
50598
50599 template <class String, class Char>
50600 struct quoted_proxy
50601 {
50602 String string;
50603 Char escape;
50604 Char delim;
50605
50606 quoted_proxy(String s_, Char escape_, Char delim_)
50607 : string(s_), escape(escape_), delim(delim_) {}
50608 private:
50609
50610 quoted_proxy& operator=(const quoted_proxy&);
50611 };
50612
50613
50614 template <class Char, class Traits, class Alloc>
50615 std::basic_ostream<Char, Traits>&
50616 basic_string_inserter_imp(std::basic_ostream<Char, Traits>& os,
50617 std::basic_string<Char, Traits, Alloc> const & string, Char escape, Char delim)
50618 {
50619 os << delim;
50620 typename std::basic_string<Char, Traits, Alloc>::const_iterator
50621 end_it = string.end();
50622 for (typename std::basic_string<Char, Traits, Alloc>::const_iterator
50623 it = string.begin();
50624 it != end_it;
50625 ++it )
50626 {
50627 if (*it == delim || *it == escape)
50628 os << escape;
50629 os << *it;
50630 }
50631 os << delim;
50632 return os;
50633 }
50634
50635
50636 template <class Char, class Traits, class Alloc>
50637 inline
50638 std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,
50639 const quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>& proxy)
50640 {
50641 return basic_string_inserter_imp(os, proxy.string, proxy.escape, proxy.delim);
50642 }
50643
50644
50645 template <class Char, class Traits, class Alloc>
50646 inline
50647 std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,
50648 const quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>& proxy)
50649 {
50650 return basic_string_inserter_imp(os, proxy.string, proxy.escape, proxy.delim);
50651 }
50652
50653
50654 template <class Char, class Traits>
50655 std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,
50656 const quoted_proxy<const Char*, Char>& proxy)
50657 {
50658 os << proxy.delim;
50659 for (const Char* it = proxy.string;
50660 *it;
50661 ++it )
50662 {
50663 if (*it == proxy.delim || *it == proxy.escape)
50664 os << proxy.escape;
50665 os << *it;
50666 }
50667 os << proxy.delim;
50668 return os;
50669 }
50670
50671
50672 template <class Char, class Traits, class Alloc>
50673 std::basic_istream<Char, Traits>& operator>>(std::basic_istream<Char, Traits>& is,
50674 const quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>& proxy)
50675 {
50676 proxy.string.clear();
50677 Char c;
50678 is >> c;
50679 if (c != proxy.delim)
50680 {
50681 is.unget();
50682 is >> proxy.string;
50683 return is;
50684 }
50685 {
50686 boost::io::ios_flags_saver ifs(is);
50687 is >> std::noskipws;
50688 for (;;)
50689 {
50690 is >> c;
50691 if (!is.good())
50692 break;
50693 if (c == proxy.escape)
50694 {
50695 is >> c;
50696 if (!is.good())
50697 break;
50698 }
50699 else if (c == proxy.delim)
50700 break;
50701 proxy.string += c;
50702 }
50703 }
50704 return is;
50705 }
50706
50707 }
50708
50709
50710 template <class Char, class Traits, class Alloc>
50711 inline detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>
50712 quoted(const std::basic_string<Char, Traits, Alloc>& s, Char escape, Char delim)
50713 {
50714 return detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> const &, Char>
50715 (s, escape, delim);
50716 }
50717
50718
50719 template <class Char, class Traits, class Alloc>
50720 inline detail::quoted_proxy<std::basic_string<Char, Traits, Alloc> &, Char>
50721 quoted(std::basic_string<Char, Traits, Alloc>& s, Char escape, Char delim)
50722 {
50723 return detail::quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>
50724 (s, escape, delim);
50725 }
50726
50727
50728 template <class Char>
50729 inline detail::quoted_proxy<const Char*, Char>
50730 quoted(const Char* s, Char escape, Char delim)
50731 {
50732 return detail::quoted_proxy<const Char*, Char> (s, escape, delim);
50733 }
50734
50735 }
50736 }
50737 # 31 "../boost/filesystem/v3/path.hpp" 2
50738
50739 # 1 "../boost/functional/hash_fwd.hpp" 1
50740
50741
50742
50743
50744
50745 # 1 "../boost/functional/hash/hash_fwd.hpp" 1
50746 # 18 "../boost/functional/hash/hash_fwd.hpp"
50747 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
50748 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
50749
50750 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
50751
50752
50753 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
50754 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
50755 # 19 "../boost/functional/hash/hash_fwd.hpp" 2
50756
50757
50758 namespace boost
50759 {
50760 template <class T> struct hash;
50761
50762
50763
50764
50765 template <class T> void hash_combine(std::size_t& seed, T const& v);
50766
50767
50768 template <class It> std::size_t hash_range(It, It);
50769 template <class It> void hash_range(std::size_t&, It, It);
50770
50771
50772
50773
50774
50775 }
50776 # 7 "../boost/functional/hash_fwd.hpp" 2
50777 # 33 "../boost/filesystem/v3/path.hpp" 2
50778
50779
50780 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 1 3
50781 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
50782
50783 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
50784 # 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
50785 namespace std __attribute__ ((__visibility__ ("default")))
50786 {
50787
50788
50789 using ::memchr;
50790 using ::memcmp;
50791 using ::memcpy;
50792 using ::memmove;
50793 using ::memset;
50794 using ::strcat;
50795 using ::strcmp;
50796 using ::strcoll;
50797 using ::strcpy;
50798 using ::strcspn;
50799 using ::strerror;
50800 using ::strlen;
50801 using ::strncat;
50802 using ::strncmp;
50803 using ::strncpy;
50804 using ::strspn;
50805 using ::strtok;
50806 using ::strxfrm;
50807 using ::strchr;
50808 using ::strpbrk;
50809 using ::strrchr;
50810 using ::strstr;
50811 # 122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
50812
50813 }
50814 # 36 "../boost/filesystem/v3/path.hpp" 2
50815
50816
50817 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 1 3
50818 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
50819
50820 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
50821
50822 # 1 "/usr/include/assert.h" 1 3 4
50823 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 2 3
50824 # 39 "../boost/filesystem/v3/path.hpp" 2
50825
50826
50827
50828 # 1 "../boost/config/abi_prefix.hpp" 1
50829 # 43 "../boost/filesystem/v3/path.hpp" 2
50830
50831 namespace boost
50832 {
50833 namespace filesystem3
50834 {
50835
50836
50837
50838
50839
50840
50841 class path
50842 {
50843 public:
50844
50845
50846
50847
50848
50849
50850
50851 typedef char value_type;
50852
50853 typedef std::basic_string<value_type> string_type;
50854 typedef std::codecvt<wchar_t, char, std::mbstate_t> codecvt_type;
50855 # 126 "../boost/filesystem/v3/path.hpp"
50856 path(){}
50857
50858 path(const path& p) : m_pathname(p.m_pathname) {}
50859
50860 template <class Source>
50861 path(Source const& source,
50862 typename boost::enable_if<path_traits::is_pathable<
50863 typename boost::decay<Source>::type> >::type* =0)
50864 {
50865 path_traits::dispatch(source, m_pathname, codecvt());
50866 }
50867 # 146 "../boost/filesystem/v3/path.hpp"
50868 path(const value_type* s) : m_pathname(s) {}
50869 path(const std::basic_string<value_type>& s) : m_pathname(s) {}
50870
50871 template <class Source>
50872 path(Source const& source, const codecvt_type& cvt)
50873
50874 {
50875 path_traits::dispatch(source, m_pathname, cvt);
50876 }
50877
50878 template <class InputIterator>
50879 path(InputIterator begin, InputIterator end)
50880 {
50881 if (begin != end)
50882 {
50883 std::basic_string<typename std::iterator_traits<InputIterator>::value_type>
50884 s(begin, end);
50885 path_traits::convert(s.c_str(), s.c_str()+s.size(), m_pathname, codecvt());
50886 }
50887 }
50888
50889 template <class InputIterator>
50890 path(InputIterator begin, InputIterator end, const codecvt_type& cvt)
50891 {
50892 if (begin != end)
50893 {
50894 std::basic_string<typename std::iterator_traits<InputIterator>::value_type>
50895 s(begin, end);
50896 path_traits::convert(s.c_str(), s.c_str()+s.size(), m_pathname, cvt);
50897 }
50898 }
50899
50900
50901
50902 path& operator=(const path& p)
50903 {
50904 m_pathname = p.m_pathname;
50905 return *this;
50906 }
50907
50908 path& operator=(const value_type* ptr)
50909 {
50910 m_pathname = ptr;
50911 return *this;
50912 }
50913
50914 template <class Source>
50915 typename boost::enable_if<path_traits::is_pathable<
50916 typename boost::decay<Source>::type>, path&>::type
50917 operator=(Source const& source)
50918 {
50919 m_pathname.clear();
50920 path_traits::dispatch(source, m_pathname, codecvt());
50921 return *this;
50922 }
50923
50924 path& assign(const value_type* ptr, const codecvt_type&)
50925 {
50926 m_pathname = ptr;
50927 return *this;
50928 }
50929
50930 template <class Source>
50931 path& assign(Source const& source, const codecvt_type& cvt)
50932 {
50933 m_pathname.clear();
50934 path_traits::dispatch(source, m_pathname, cvt);
50935 return *this;
50936 }
50937
50938 template <class InputIterator>
50939 path& assign(InputIterator begin, InputIterator end)
50940 {
50941 return assign(begin, end, codecvt());
50942 }
50943
50944 template <class InputIterator>
50945 path& assign(InputIterator begin, InputIterator end, const codecvt_type& cvt)
50946 {
50947 m_pathname.clear();
50948 if (begin != end)
50949 {
50950 std::basic_string<typename std::iterator_traits<InputIterator>::value_type>
50951 s(begin, end);
50952 path_traits::convert(s.c_str(), s.c_str()+s.size(), m_pathname, cvt);
50953 }
50954 return *this;
50955 }
50956
50957
50958
50959
50960
50961
50962 path& operator/=(const path& p);
50963
50964 path& operator/=(const value_type* ptr);
50965
50966 template <class Source>
50967 typename boost::enable_if<path_traits::is_pathable<
50968 typename boost::decay<Source>::type>, path&>::type
50969 operator/=(Source const& source)
50970 {
50971 return append(source, codecvt());
50972 }
50973
50974 path& append(const value_type* ptr, const codecvt_type&)
50975 {
50976 this->operator/=(ptr);
50977 return *this;
50978 }
50979
50980 template <class Source>
50981 path& append(Source const& source, const codecvt_type& cvt);
50982
50983 template <class InputIterator>
50984 path& append(InputIterator begin, InputIterator end)
50985 {
50986 return append(begin, end, codecvt());
50987 }
50988
50989 template <class InputIterator>
50990 path& append(InputIterator begin, InputIterator end, const codecvt_type& cvt);
50991
50992
50993
50994 void clear() { m_pathname.clear(); }
50995 path& make_preferred()
50996
50997 { return *this; }
50998
50999
51000
51001 path& remove_filename();
51002 path& replace_extension(const path& new_extension = path());
51003 void swap(path& rhs) { m_pathname.swap(rhs.m_pathname); }
51004 # 304 "../boost/filesystem/v3/path.hpp"
51005 const string_type& native() const { return m_pathname; }
51006 const value_type* c_str() const { return m_pathname.c_str(); }
51007
51008 template <class String>
51009 String string() const;
51010
51011 template <class String>
51012 String string(const codecvt_type& cvt) const;
51013 # 330 "../boost/filesystem/v3/path.hpp"
51014 const std::string& string() const { return m_pathname; }
51015 const std::string& string(const codecvt_type&) const { return m_pathname; }
51016
51017 const std::wstring wstring() const { return wstring(codecvt()); }
51018 const std::wstring wstring(const codecvt_type& cvt) const
51019 {
51020 std::wstring tmp;
51021 if (!m_pathname.empty())
51022 path_traits::convert(&*m_pathname.begin(), &*m_pathname.begin()+m_pathname.size(),
51023 tmp, cvt);
51024 return tmp;
51025 }
51026
51027
51028
51029
51030
51031 template <class String>
51032 String generic_string() const;
51033
51034 template <class String>
51035 String generic_string(const codecvt_type& cvt) const;
51036 # 361 "../boost/filesystem/v3/path.hpp"
51037 const std::string& generic_string() const { return m_pathname; }
51038 const std::string& generic_string(const codecvt_type&) const { return m_pathname; }
51039 const std::wstring generic_wstring() const { return wstring(codecvt()); }
51040 const std::wstring generic_wstring(const codecvt_type& cvt) const { return wstring(cvt); }
51041
51042
51043
51044
51045
51046 path root_path() const;
51047 path root_name() const;
51048
51049 path root_directory() const;
51050 path relative_path() const;
51051 path parent_path() const;
51052 path filename() const;
51053 path stem() const;
51054 path extension() const;
51055
51056
51057
51058 bool empty() const { return m_pathname.empty(); }
51059 bool has_root_path() const { return has_root_directory() || has_root_name(); }
51060 bool has_root_name() const { return !root_name().empty(); }
51061 bool has_root_directory() const { return !root_directory().empty(); }
51062 bool has_relative_path() const { return !relative_path().empty(); }
51063 bool has_parent_path() const { return !parent_path().empty(); }
51064 bool has_filename() const { return !m_pathname.empty(); }
51065 bool has_stem() const { return !stem().empty(); }
51066 bool has_extension() const { return !extension().empty(); }
51067 bool is_absolute() const
51068 {
51069
51070
51071
51072 return has_root_directory();
51073
51074 }
51075 bool is_relative() const { return !is_absolute(); }
51076
51077
51078
51079 class iterator;
51080 typedef iterator const_iterator;
51081
51082 iterator begin() const;
51083 iterator end() const;
51084
51085
51086
51087
51088
51089 static std::locale imbue(const std::locale& loc);
51090
51091
51092
51093 static const codecvt_type& codecvt()
51094 {
51095 return *wchar_t_codecvt_facet();
51096 }
51097 # 464 "../boost/filesystem/v3/path.hpp"
51098 private:
51099 # 477 "../boost/filesystem/v3/path.hpp"
51100 string_type m_pathname;
51101
51102
51103
51104
51105
51106 string_type::size_type m_append_separator_if_needed();
51107
51108
51109
51110 void m_erase_redundant_separator(string_type::size_type sep_pos);
51111 string_type::size_type m_parent_path_end() const;
51112
51113 path& m_normalize();
51114
51115
51116
51117 friend class iterator;
51118 friend bool operator<(const path& lhs, const path& rhs);
51119
51120
51121 static void m_path_iterator_increment(path::iterator & it);
51122 static void m_path_iterator_decrement(path::iterator & it);
51123
51124 static const codecvt_type *& wchar_t_codecvt_facet();
51125
51126 };
51127 # 513 "../boost/filesystem/v3/path.hpp"
51128 class path::iterator
51129 : public boost::iterator_facade<
51130 path::iterator,
51131 path const,
51132 boost::bidirectional_traversal_tag >
51133 {
51134 private:
51135 friend class boost::iterator_core_access;
51136 friend class boost::filesystem3::path;
51137 friend void m_path_iterator_increment(path::iterator & it);
51138 friend void m_path_iterator_decrement(path::iterator & it);
51139
51140 const path& dereference() const { return m_element; }
51141
51142 bool equal(const iterator & rhs) const
51143 {
51144 return m_path_ptr == rhs.m_path_ptr && m_pos == rhs.m_pos;
51145 }
51146
51147
51148
51149 void increment() { m_path_iterator_increment(*this); }
51150 void decrement() { m_path_iterator_decrement(*this); }
51151
51152 path m_element;
51153 const path * m_path_ptr;
51154 string_type::size_type m_pos;
51155
51156
51157
51158 };
51159 # 553 "../boost/filesystem/v3/path.hpp"
51160 inline bool lexicographical_compare(path::iterator first1, path::iterator last1,
51161 path::iterator first2, path::iterator last2)
51162 {
51163 for (; first1 != last1 && first2 != last2 ; ++first1, ++first2)
51164 {
51165 if (first1->native() < first2->native()) return true;
51166 if (first2->native() < first1->native()) return false;
51167 }
51168 return first1 == last1 && first2 != last2;
51169 }
51170
51171 inline bool operator<(const path& lhs, const path& rhs)
51172 {
51173 return lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
51174 }
51175
51176 inline bool operator<=(const path& lhs, const path& rhs) { return !(rhs < lhs); }
51177 inline bool operator> (const path& lhs, const path& rhs) { return rhs < lhs; }
51178 inline bool operator>=(const path& lhs, const path& rhs) { return !(lhs < rhs); }
51179 # 600 "../boost/filesystem/v3/path.hpp"
51180 inline bool operator==(const path& lhs, const path& rhs) { return lhs.native() == rhs.native(); }
51181 inline bool operator==(const path& lhs, const path::string_type& rhs) { return lhs.native() == rhs; }
51182 inline bool operator==(const path& lhs, const path::value_type* rhs) { return lhs.native() == rhs; }
51183 inline bool operator==(const path::string_type& lhs, const path& rhs) { return lhs == rhs.native(); }
51184 inline bool operator==(const path::value_type* lhs, const path& rhs) { return lhs == rhs.native(); }
51185
51186 inline std::size_t hash_value(const path& x)
51187 {
51188 return hash_range(x.native().begin(), x.native().end());
51189 }
51190
51191
51192 inline bool operator!=(const path& lhs, const path& rhs) { return !(lhs == rhs); }
51193 inline bool operator!=(const path& lhs, const path::string_type& rhs) { return !(lhs == rhs); }
51194 inline bool operator!=(const path& lhs, const path::value_type* rhs) { return !(lhs == rhs); }
51195 inline bool operator!=(const path::string_type& lhs, const path& rhs) { return !(lhs == rhs); }
51196 inline bool operator!=(const path::value_type* lhs, const path& rhs) { return !(lhs == rhs); }
51197
51198 inline void swap(path& lhs, path& rhs) { lhs.swap(rhs); }
51199
51200 inline path operator/(const path& lhs, const path& rhs) { return path(lhs) /= rhs; }
51201
51202
51203
51204
51205
51206 template <class Char, class Traits>
51207 inline std::basic_ostream<Char, Traits>&
51208 operator<<(std::basic_ostream<Char, Traits>& os, const path& p)
51209 {
51210 return os
51211 << boost::io::quoted(p.template string<std::basic_string<Char> >(), static_cast<Char>('&'));
51212 }
51213
51214 template <class Char, class Traits>
51215 inline std::basic_istream<Char, Traits>&
51216 operator>>(std::basic_istream<Char, Traits>& is, path& p)
51217 {
51218 std::basic_string<Char> str;
51219 is >> boost::io::quoted(str, static_cast<Char>('&'));
51220 p = str;
51221 return is;
51222 }
51223
51224
51225
51226
51227
51228
51229 bool portable_posix_name(const std::string & name);
51230 bool windows_name(const std::string & name);
51231 bool portable_name(const std::string & name);
51232 bool portable_directory_name(const std::string & name);
51233 bool portable_file_name(const std::string & name);
51234 bool native(const std::string & name);
51235
51236
51237
51238
51239
51240 template <class InputIterator>
51241 path& path::append(InputIterator begin, InputIterator end, const codecvt_type& cvt)
51242 {
51243 if (begin == end)
51244 return *this;
51245 string_type::size_type sep_pos(m_append_separator_if_needed());
51246 std::basic_string<typename std::iterator_traits<InputIterator>::value_type>
51247 s(begin, end);
51248 path_traits::convert(s.c_str(), s.c_str()+s.size(), m_pathname, cvt);
51249 if (sep_pos)
51250 m_erase_redundant_separator(sep_pos);
51251 return *this;
51252 }
51253
51254 template <class Source>
51255 path& path::append(Source const& source, const codecvt_type& cvt)
51256 {
51257 if (path_traits::empty(source))
51258 return *this;
51259 string_type::size_type sep_pos(m_append_separator_if_needed());
51260 path_traits::dispatch(source, m_pathname, cvt);
51261 if (sep_pos)
51262 m_erase_redundant_separator(sep_pos);
51263 return *this;
51264 }
51265
51266
51267
51268
51269
51270 template <> inline
51271 std::string path::string<std::string>() const
51272 { return string(); }
51273
51274 template <> inline
51275 std::wstring path::string<std::wstring>() const
51276 { return wstring(); }
51277
51278 template <> inline
51279 std::string path::string<std::string>(const codecvt_type& cvt) const
51280 { return string(cvt); }
51281
51282 template <> inline
51283 std::wstring path::string<std::wstring>(const codecvt_type& cvt) const
51284 { return wstring(cvt); }
51285
51286 template <> inline
51287 std::string path::generic_string<std::string>() const
51288 { return generic_string(); }
51289
51290 template <> inline
51291 std::wstring path::generic_string<std::wstring>() const
51292 { return generic_wstring(); }
51293
51294 template <> inline
51295 std::string path::generic_string<std::string>(const codecvt_type& cvt) const
51296 { return generic_string(cvt); }
51297
51298 template <> inline
51299 std::wstring path::generic_string<std::wstring>(const codecvt_type& cvt) const
51300 { return generic_wstring(cvt); }
51301
51302
51303 }
51304 }
51305
51306
51307
51308 namespace boost
51309 {
51310 namespace filesystem
51311 {
51312 using filesystem3::path;
51313
51314
51315
51316 using filesystem3::lexicographical_compare;
51317 using filesystem3::portable_posix_name;
51318 using filesystem3::windows_name;
51319 using filesystem3::portable_name;
51320 using filesystem3::portable_directory_name;
51321 using filesystem3::portable_file_name;
51322 using filesystem3::native;
51323 using filesystem3::swap;
51324 using filesystem3::operator<;
51325 using filesystem3::operator==;
51326 using filesystem3::operator!=;
51327 using filesystem3::operator>;
51328 using filesystem3::operator<=;
51329 using filesystem3::operator>=;
51330 using filesystem3::operator/;
51331 using filesystem3::operator<<;
51332 using filesystem3::operator>>;
51333 }
51334 }
51335
51336
51337
51338 # 1 "../boost/config/abi_suffix.hpp" 1
51339 # 759 "../boost/filesystem/v3/path.hpp" 2
51340 # 16 "quickbook/src/files.hpp" 2
51341
51342
51343 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 1 3
51344 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
51345
51346 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 3
51347
51348 # 1 "/usr/include/assert.h" 1 3 4
51349 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cassert" 2 3
51350 # 19 "quickbook/src/files.hpp" 2
51351 # 1 "quickbook/src/intrusive_base.hpp" 1
51352 # 12 "quickbook/src/intrusive_base.hpp"
51353 namespace quickbook
51354 {
51355
51356
51357
51358
51359 template <typename T>
51360 struct intrusive_base
51361 {
51362 intrusive_base() : ref_count_(0) {}
51363 intrusive_base(intrusive_base const&) : ref_count_(0) {}
51364 intrusive_base& operator=(intrusive_base const&) { return *this; }
51365 ~intrusive_base() { (static_cast<void> (0)); }
51366
51367 friend void intrusive_ptr_add_ref(T* ptr)
51368 { ++ptr->ref_count_; }
51369
51370 friend void intrusive_ptr_release(T* ptr)
51371 { if(--ptr->ref_count_ == 0) delete ptr; }
51372 private:
51373 unsigned ref_count_;
51374 };
51375 }
51376 # 20 "quickbook/src/files.hpp" 2
51377
51378 namespace quickbook {
51379
51380 namespace fs = boost::filesystem;
51381
51382 struct file;
51383 typedef boost::intrusive_ptr<file> file_ptr;
51384
51385 struct file_position
51386 {
51387 file_position() : line(1), column(1) {}
51388 file_position(int l, int c) : line(l), column(c) {}
51389
51390 int line;
51391 int column;
51392 };
51393
51394 struct file : intrusive_base<file>
51395 {
51396 fs::path const path;
51397 std::string source;
51398 private:
51399 unsigned qbk_version;
51400 public:
51401
51402 file(fs::path const& path, std::string const& source,
51403 unsigned qbk_version) :
51404 path(path), source(source), qbk_version(qbk_version)
51405 {}
51406
51407 virtual ~file() {}
51408
51409 unsigned version() const {
51410 (static_cast<void> (0));
51411 return qbk_version;
51412 }
51413
51414 void version(unsigned v) {
51415
51416
51417
51418 (static_cast<void> (0));
51419 qbk_version = v;
51420 }
51421
51422 virtual file_position position_of(std::string::const_iterator) const;
51423 };
51424
51425
51426 file_ptr load(fs::path const& filename,
51427 unsigned qbk_version = 0);
51428
51429 struct load_error : std::runtime_error
51430 {
51431 explicit load_error(std::string const& arg)
51432 : std::runtime_error(arg) {}
51433 };
51434
51435
51436
51437
51438 struct mapped_file_builder_data;
51439
51440 struct mapped_file_builder
51441 {
51442 typedef std::string::const_iterator iterator;
51443 typedef std::string::size_type pos;
51444
51445 mapped_file_builder();
51446 ~mapped_file_builder();
51447
51448 void start(file_ptr);
51449 file_ptr release();
51450 void clear();
51451
51452 bool empty() const;
51453 pos get_pos() const;
51454
51455 void add(char const*, iterator);
51456 void add(std::string const&, iterator);
51457 void add(iterator, iterator);
51458 void add(mapped_file_builder const&);
51459 void add(mapped_file_builder const&, pos, pos);
51460 void unindent_and_add(iterator, iterator);
51461 private:
51462 mapped_file_builder_data* data;
51463
51464 mapped_file_builder(mapped_file_builder const&);
51465 mapped_file_builder& operator=(mapped_file_builder const&);
51466 };
51467 }
51468 # 23 "quickbook/src/values.hpp" 2
51469
51470 namespace quickbook
51471 {
51472 struct value;
51473 struct value_builder;
51474 struct value_error;
51475
51476 namespace detail
51477 {
51478
51479
51480
51481 struct value_node
51482 {
51483 private:
51484 value_node(value_node const&);
51485 value_node& operator=(value_node const&);
51486
51487 public:
51488 typedef int tag_type;
51489
51490 protected:
51491 explicit value_node(tag_type);
51492 virtual ~value_node();
51493
51494 public:
51495 virtual char const* type_name() const = 0;
51496 virtual value_node* clone() const = 0;
51497
51498 virtual file_ptr get_file() const;
51499 virtual string_iterator get_position() const;
51500 virtual string_ref get_quickbook() const;
51501 virtual std::string get_encoded() const;
51502 virtual int get_int() const;
51503
51504 virtual bool check() const;
51505 virtual bool empty() const;
51506 virtual bool is_encoded() const;
51507 virtual bool is_list() const;
51508 virtual bool equals(value_node*) const;
51509
51510 virtual value_node* get_list() const;
51511
51512 int ref_count_;
51513 const tag_type tag_;
51514 value_node* next_;
51515
51516 friend void intrusive_ptr_add_ref(value_node* ptr)
51517 { ++ptr->ref_count_; }
51518 friend void intrusive_ptr_release(value_node* ptr)
51519 { if(--ptr->ref_count_ == 0) delete ptr; }
51520 };
51521
51522
51523
51524
51525
51526
51527
51528 struct value_base
51529 {
51530 public:
51531 struct iterator;
51532
51533 typedef iterator const_iterator;
51534 typedef value_node::tag_type tag_type;
51535 enum { default_tag = 0 };
51536
51537 protected:
51538 explicit value_base(value_node* base)
51539 : value_(base)
51540 {
51541 (static_cast<void> (0));
51542 }
51543
51544 ~value_base() {}
51545
51546 void swap(value_base& x) { std::swap(value_, x.value_); }
51547 public:
51548 bool check() const { return value_->check(); }
51549 bool empty() const { return value_->empty(); }
51550 bool is_encoded() const { return value_->is_encoded(); }
51551 bool is_list() const { return value_->is_list(); }
51552
51553 iterator begin() const;
51554 iterator end() const;
51555
51556
51557 int get_tag() const { return value_->tag_; }
51558 file_ptr get_file() const
51559 { return value_->get_file(); }
51560 string_iterator get_position() const
51561 { return value_->get_position(); }
51562 string_ref get_quickbook() const
51563 { return value_->get_quickbook(); }
51564 std::string get_encoded() const
51565 { return value_->get_encoded(); }
51566 int get_int() const
51567 { return value_->get_int(); }
51568
51569
51570
51571 friend bool operator==(value_base const& x, value_base const& y)
51572 { return x.value_->equals(y.value_); }
51573
51574 protected:
51575 value_node* value_;
51576
51577
51578
51579 friend struct quickbook::value_builder;
51580 };
51581
51582
51583
51584
51585 struct value_ref : public value_base
51586 {
51587 public:
51588 explicit value_ref(value_node* base) : value_base(base) {}
51589 };
51590
51591 struct value_proxy : public value_base
51592 {
51593 public:
51594 explicit value_proxy(value_node* base) : value_base(base) {}
51595 value_proxy* operator->() { return this; }
51596 value_ref operator*() const { return value_ref(value_); }
51597 };
51598
51599
51600
51601
51602 struct value_base::iterator
51603 : public boost::forward_iterator_helper<
51604 iterator, value, int, value_proxy, value_ref>
51605 {
51606 public:
51607 iterator();
51608 explicit iterator(value_node* p) : ptr_(p) {}
51609 friend bool operator==(iterator x, iterator y)
51610 { return x.ptr_ == y.ptr_; }
51611 iterator& operator++() { ptr_ = ptr_->next_; return *this; }
51612 value_ref operator*() const { return value_ref(ptr_); }
51613 value_proxy operator->() const { return value_proxy(ptr_); }
51614 private:
51615 value_node* ptr_;
51616 };
51617
51618 inline value_base::iterator value_base::begin() const
51619 {
51620 return iterator(value_->get_list());
51621 }
51622
51623 inline value_base::iterator value_base::end() const
51624 {
51625 return iterator();
51626 }
51627
51628
51629
51630
51631 struct value_counted : public value_base
51632 {
51633 value_counted& operator=(value_counted const&);
51634 protected:
51635 value_counted();
51636 value_counted(value_counted const&);
51637 value_counted(value_base const&);
51638 value_counted(value_node*);
51639 ~value_counted();
51640 };
51641
51642
51643
51644
51645
51646
51647
51648 struct value_list_builder {
51649 value_list_builder(value_list_builder const&);
51650 value_list_builder& operator=(value_list_builder const&);
51651 public:
51652 value_list_builder();
51653 value_list_builder(value_node*);
51654 ~value_list_builder();
51655 void swap(value_list_builder& b);
51656 value_node* release();
51657
51658 void append(value_node*);
51659 void sort();
51660 private:
51661 value_node* head_;
51662 value_node** back_;
51663 };
51664 }
51665
51666
51667
51668
51669
51670
51671 struct value : public detail::value_counted
51672 {
51673 public:
51674 value();
51675 value(value const&);
51676 value(detail::value_base const&);
51677 explicit value(detail::value_node*);
51678 value& operator=(value);
51679 void swap(value& x) { detail::value_counted::swap(x); }
51680 };
51681
51682
51683 value empty_value(value::tag_type = value::default_tag);
51684
51685
51686 value int_value(int, value::tag_type = value::default_tag);
51687
51688
51689
51690
51691 value qbk_value(file_ptr const&, string_iterator, string_iterator,
51692 value::tag_type = value::default_tag);
51693
51694
51695 value encoded_value(std::string const&,
51696 value::tag_type = value::default_tag);
51697
51698
51699
51700 value encoded_qbk_value(file_ptr const&, string_iterator, string_iterator,
51701 std::string const&, value::tag_type = value::default_tag);
51702
51703
51704
51705
51706
51707
51708 struct value_builder {
51709 public:
51710 value_builder();
51711 void swap(value_builder& b);
51712
51713 void save();
51714 void restore();
51715
51716 value release();
51717
51718 void reset();
51719 void set_tag(value::tag_type);
51720 void insert(value const&);
51721 void extend(value const&);
51722
51723 void start_list(value::tag_type = value::default_tag);
51724 void finish_list();
51725 void clear_list();
51726 void sort_list();
51727
51728 private:
51729 detail::value_list_builder current;
51730 value::tag_type list_tag;
51731 boost::scoped_ptr<value_builder> saved;
51732 };
51733
51734
51735
51736
51737
51738 struct value_error : public std::logic_error
51739 {
51740 public:
51741 explicit value_error(std::string const&);
51742 };
51743
51744
51745
51746
51747
51748
51749 struct value_consumer {
51750 public:
51751 struct iterator
51752 : public boost::input_iterator_helper<iterator,
51753 boost::iterator_value<value::iterator>::type,
51754 boost::iterator_difference<value::iterator>::type,
51755 boost::iterator_pointer<value::iterator>::type,
51756 boost::iterator_reference<value::iterator>::type>
51757 {
51758 public:
51759 iterator();
51760 explicit iterator(value::iterator* p) : ptr_(p) {}
51761 friend bool operator==(iterator x, iterator y)
51762 { return *x.ptr_ == *y.ptr_; }
51763 iterator& operator++() { ++*ptr_; return *this; }
51764 reference operator*() const { return **ptr_; }
51765 pointer operator->() const { return ptr_->operator->(); }
51766 private:
51767 value::iterator* ptr_;
51768 };
51769
51770 typedef iterator const_iterator;
51771 typedef iterator::reference reference;
51772
51773 value_consumer(value const& x)
51774 : list_(x)
51775 , pos_(x.begin())
51776 , end_(x.end())
51777 {}
51778
51779 value_consumer(reference x)
51780 : list_(x)
51781 , pos_(x.begin())
51782 , end_(x.end())
51783 {}
51784
51785 reference consume()
51786 {
51787 assert_check();
51788 return *pos_++;
51789 }
51790
51791 reference consume(value::tag_type t)
51792 {
51793 assert_check(t);
51794 return *pos_++;
51795 }
51796
51797 value optional_consume()
51798 {
51799 if(check()) {
51800 return *pos_++;
51801 }
51802 else {
51803 return value();
51804 }
51805 }
51806
51807 value optional_consume(value::tag_type t)
51808 {
51809 if(check(t)) {
51810 return *pos_++;
51811 }
51812 else {
51813 return value();
51814 }
51815 }
51816
51817 bool check() const
51818 {
51819 return pos_ != end_;
51820 }
51821
51822 bool check(value::tag_type t) const
51823 {
51824 return pos_ != end_ && t == pos_->get_tag();
51825 }
51826
51827 void finish() const
51828 {
51829 if (pos_ != end_)
51830 throw value_error("Not all values handled.");
51831 }
51832
51833 iterator begin() { return iterator(&pos_); }
51834 iterator end() { return iterator(&end_); }
51835 private:
51836
51837 void assert_check() const
51838 {
51839 if (pos_ == end_)
51840 throw value_error("Attempt to read past end of value list.");
51841 }
51842
51843 void assert_check(value::tag_type t) const
51844 {
51845 assert_check();
51846 if (t != pos_->get_tag())
51847 throw value_error("Incorrect value tag.");
51848 }
51849
51850 value list_;
51851 value::iterator pos_, end_;
51852 };
51853 }
51854 # 15 "quickbook/src/id_manager.hpp" 2
51855
51856 namespace quickbook
51857 {
51858
51859
51860
51861
51862 struct id_category
51863 {
51864 enum categories
51865 {
51866 default_category = 0,
51867 numbered,
51868 generated,
51869 generated_heading,
51870 generated_section,
51871 generated_doc,
51872 explicit_id,
51873 explicit_section_id,
51874 explicit_anchor_id
51875 };
51876
51877 id_category() : c(default_category) {}
51878 id_category(categories c) : c(c) {}
51879 explicit id_category(int c) : c(categories(c)) {}
51880
51881 bool operator==(id_category rhs) const { return c == rhs.c; }
51882
51883 categories c;
51884 };
51885
51886 struct id_state;
51887 struct section_manager;
51888
51889 struct id_manager
51890 {
51891 id_manager();
51892 ~id_manager();
51893
51894 std::string start_file_with_docinfo(
51895 unsigned compatibility_version,
51896 std::string const& include_doc_id,
51897 std::string const& id,
51898 value const& title);
51899
51900 void start_file(
51901 unsigned compatibility_version,
51902 std::string const& include_doc_id,
51903 std::string const& id,
51904 value const& title);
51905
51906 void end_file();
51907
51908 std::string begin_section(std::string const&, id_category);
51909 void end_section();
51910 int section_level() const;
51911
51912 std::string old_style_id(std::string const&, id_category);
51913 std::string add_id(std::string const&, id_category);
51914 std::string add_anchor(std::string const&, id_category);
51915
51916 std::string replace_placeholders_with_unresolved_ids(
51917 std::string const&) const;
51918 std::string replace_placeholders(std::string const&) const;
51919
51920 unsigned compatibility_version() const;
51921 private:
51922 boost::scoped_ptr<id_state> state;
51923 };
51924 }
51925 # 10 "quickbook/src/id_manager.cpp" 2
51926 # 1 "quickbook/src/utils.hpp" 1
51927 # 15 "quickbook/src/utils.hpp"
51928 # 1 "../boost/range/algorithm_ext/push_back.hpp" 1
51929 # 18 "../boost/range/algorithm_ext/push_back.hpp"
51930 # 1 "../boost/assert.hpp" 1
51931 # 50 "../boost/assert.hpp"
51932 # 1 "/usr/include/assert.h" 1 3 4
51933 # 51 "../boost/assert.hpp" 2
51934 # 19 "../boost/range/algorithm_ext/push_back.hpp" 2
51935
51936 namespace boost
51937 {
51938 namespace range
51939 {
51940
51941 template< class Container, class Range >
51942 inline Container& push_back( Container& on, const Range& from )
51943 {
51944 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<Container> )>::failed> boost_concept_check28;
51945 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const Range> )>::failed> boost_concept_check29;
51946 (static_cast<void> (0))
51947 ;
51948 on.insert( on.end(), boost::begin(from), boost::end(from) );
51949 return on;
51950 }
51951
51952 }
51953 using range::push_back;
51954 }
51955 # 16 "quickbook/src/utils.hpp" 2
51956 # 1 "../boost/range/adaptor/transformed.hpp" 1
51957 # 14 "../boost/range/adaptor/transformed.hpp"
51958 # 1 "../boost/range/adaptor/argument_fwd.hpp" 1
51959 # 21 "../boost/range/adaptor/argument_fwd.hpp"
51960 namespace boost
51961 {
51962 namespace range_detail
51963 {
51964 template< class T >
51965 struct holder
51966 {
51967 T val;
51968 holder( T t ) : val(t)
51969 { }
51970 };
51971
51972 template< class T >
51973 struct holder2
51974 {
51975 T val1, val2;
51976 holder2( T t, T u ) : val1(t), val2(u)
51977 { }
51978 };
51979
51980 template< template<class> class Holder >
51981 struct forwarder
51982 {
51983 template< class T >
51984 Holder<T> operator()( T t ) const
51985 {
51986 return Holder<T>(t);
51987 }
51988 };
51989
51990 template< template<class> class Holder >
51991 struct forwarder2
51992 {
51993 template< class T >
51994 Holder<T> operator()( T t, T u ) const
51995 {
51996 return Holder<T>(t,u);
51997 }
51998 };
51999
52000 template< template<class,class> class Holder >
52001 struct forwarder2TU
52002 {
52003 template< class T, class U >
52004 Holder<T, U> operator()( T t, U u ) const
52005 {
52006 return Holder<T, U>(t, u);
52007 }
52008 };
52009
52010
52011 }
52012
52013 }
52014 # 15 "../boost/range/adaptor/transformed.hpp" 2
52015
52016 # 1 "../boost/iterator/transform_iterator.hpp" 1
52017 # 16 "../boost/iterator/transform_iterator.hpp"
52018 # 1 "../boost/type_traits/function_traits.hpp" 1
52019 # 16 "../boost/type_traits/function_traits.hpp"
52020 namespace boost {
52021
52022
52023 namespace detail {
52024
52025 template<typename Function> struct function_traits_helper;
52026
52027 template<typename R>
52028 struct function_traits_helper<R (*)(void)>
52029 {
52030 static const unsigned arity = 0;
52031 typedef R result_type;
52032 };
52033
52034 template<typename R, typename T1>
52035 struct function_traits_helper<R (*)(T1)>
52036 {
52037 static const unsigned arity = 1;
52038 typedef R result_type;
52039 typedef T1 arg1_type;
52040 typedef T1 argument_type;
52041 };
52042
52043 template<typename R, typename T1, typename T2>
52044 struct function_traits_helper<R (*)(T1, T2)>
52045 {
52046 static const unsigned arity = 2;
52047 typedef R result_type;
52048 typedef T1 arg1_type;
52049 typedef T2 arg2_type;
52050 typedef T1 first_argument_type;
52051 typedef T2 second_argument_type;
52052 };
52053
52054 template<typename R, typename T1, typename T2, typename T3>
52055 struct function_traits_helper<R (*)(T1, T2, T3)>
52056 {
52057 static const unsigned arity = 3;
52058 typedef R result_type;
52059 typedef T1 arg1_type;
52060 typedef T2 arg2_type;
52061 typedef T3 arg3_type;
52062 };
52063
52064 template<typename R, typename T1, typename T2, typename T3, typename T4>
52065 struct function_traits_helper<R (*)(T1, T2, T3, T4)>
52066 {
52067 static const unsigned arity = 4;
52068 typedef R result_type;
52069 typedef T1 arg1_type;
52070 typedef T2 arg2_type;
52071 typedef T3 arg3_type;
52072 typedef T4 arg4_type;
52073 };
52074
52075 template<typename R, typename T1, typename T2, typename T3, typename T4,
52076 typename T5>
52077 struct function_traits_helper<R (*)(T1, T2, T3, T4, T5)>
52078 {
52079 static const unsigned arity = 5;
52080 typedef R result_type;
52081 typedef T1 arg1_type;
52082 typedef T2 arg2_type;
52083 typedef T3 arg3_type;
52084 typedef T4 arg4_type;
52085 typedef T5 arg5_type;
52086 };
52087
52088 template<typename R, typename T1, typename T2, typename T3, typename T4,
52089 typename T5, typename T6>
52090 struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6)>
52091 {
52092 static const unsigned arity = 6;
52093 typedef R result_type;
52094 typedef T1 arg1_type;
52095 typedef T2 arg2_type;
52096 typedef T3 arg3_type;
52097 typedef T4 arg4_type;
52098 typedef T5 arg5_type;
52099 typedef T6 arg6_type;
52100 };
52101
52102 template<typename R, typename T1, typename T2, typename T3, typename T4,
52103 typename T5, typename T6, typename T7>
52104 struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7)>
52105 {
52106 static const unsigned arity = 7;
52107 typedef R result_type;
52108 typedef T1 arg1_type;
52109 typedef T2 arg2_type;
52110 typedef T3 arg3_type;
52111 typedef T4 arg4_type;
52112 typedef T5 arg5_type;
52113 typedef T6 arg6_type;
52114 typedef T7 arg7_type;
52115 };
52116
52117 template<typename R, typename T1, typename T2, typename T3, typename T4,
52118 typename T5, typename T6, typename T7, typename T8>
52119 struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8)>
52120 {
52121 static const unsigned arity = 8;
52122 typedef R result_type;
52123 typedef T1 arg1_type;
52124 typedef T2 arg2_type;
52125 typedef T3 arg3_type;
52126 typedef T4 arg4_type;
52127 typedef T5 arg5_type;
52128 typedef T6 arg6_type;
52129 typedef T7 arg7_type;
52130 typedef T8 arg8_type;
52131 };
52132
52133 template<typename R, typename T1, typename T2, typename T3, typename T4,
52134 typename T5, typename T6, typename T7, typename T8, typename T9>
52135 struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)>
52136 {
52137 static const unsigned arity = 9;
52138 typedef R result_type;
52139 typedef T1 arg1_type;
52140 typedef T2 arg2_type;
52141 typedef T3 arg3_type;
52142 typedef T4 arg4_type;
52143 typedef T5 arg5_type;
52144 typedef T6 arg6_type;
52145 typedef T7 arg7_type;
52146 typedef T8 arg8_type;
52147 typedef T9 arg9_type;
52148 };
52149
52150 template<typename R, typename T1, typename T2, typename T3, typename T4,
52151 typename T5, typename T6, typename T7, typename T8, typename T9,
52152 typename T10>
52153 struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
52154 {
52155 static const unsigned arity = 10;
52156 typedef R result_type;
52157 typedef T1 arg1_type;
52158 typedef T2 arg2_type;
52159 typedef T3 arg3_type;
52160 typedef T4 arg4_type;
52161 typedef T5 arg5_type;
52162 typedef T6 arg6_type;
52163 typedef T7 arg7_type;
52164 typedef T8 arg8_type;
52165 typedef T9 arg9_type;
52166 typedef T10 arg10_type;
52167 };
52168
52169 }
52170
52171 template<typename Function>
52172 struct function_traits :
52173 public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
52174 {
52175 };
52176 # 234 "../boost/type_traits/function_traits.hpp"
52177 }
52178 # 17 "../boost/iterator/transform_iterator.hpp" 2
52179
52180
52181
52182
52183
52184
52185 # 1 "../boost/utility/result_of.hpp" 1
52186 # 13 "../boost/utility/result_of.hpp"
52187 # 1 "../boost/preprocessor/iteration/iterate.hpp" 1
52188 # 20 "../boost/preprocessor/iteration/iterate.hpp"
52189 # 1 "../boost/preprocessor/slot/slot.hpp" 1
52190 # 16 "../boost/preprocessor/slot/slot.hpp"
52191 # 1 "../boost/preprocessor/slot/detail/def.hpp" 1
52192 # 17 "../boost/preprocessor/slot/slot.hpp" 2
52193 # 21 "../boost/preprocessor/iteration/iterate.hpp" 2
52194 # 14 "../boost/utility/result_of.hpp" 2
52195
52196
52197
52198 # 1 "../boost/preprocessor/repetition/enum_shifted_params.hpp" 1
52199 # 18 "../boost/utility/result_of.hpp" 2
52200 # 1 "../boost/preprocessor/facilities/intercept.hpp" 1
52201 # 19 "../boost/utility/result_of.hpp" 2
52202 # 27 "../boost/utility/result_of.hpp"
52203 # 1 "../boost/utility/declval.hpp" 1
52204 # 37 "../boost/utility/declval.hpp"
52205 namespace boost {
52206
52207 template <typename T>
52208 typename add_rvalue_reference<T>::type declval();
52209
52210 }
52211 # 28 "../boost/utility/result_of.hpp" 2
52212
52213
52214
52215
52216
52217 namespace boost {
52218
52219 template<typename F> struct result_of;
52220 template<typename F> struct tr1_result_of;
52221
52222
52223 namespace detail {
52224
52225 template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_result_type { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::result_type>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
52226
52227 template<typename F, typename FArgs, bool HasResultType> struct tr1_result_of_impl;
52228 template<typename F> struct cpp0x_result_of_impl;
52229
52230 template<typename F>
52231 struct result_of_void_impl
52232 {
52233 typedef void type;
52234 };
52235
52236 template<typename R>
52237 struct result_of_void_impl<R (*)(void)>
52238 {
52239 typedef R type;
52240 };
52241
52242 template<typename R>
52243 struct result_of_void_impl<R (&)(void)>
52244 {
52245 typedef R type;
52246 };
52247
52248
52249 template<typename F, typename FArgs>
52250 struct result_of_pointer
52251 : tr1_result_of_impl<typename remove_cv<F>::type, FArgs, false> { };
52252
52253 template<typename F, typename FArgs>
52254 struct tr1_result_of_impl<F, FArgs, true>
52255 {
52256 typedef typename F::result_type type;
52257 };
52258
52259 template<typename FArgs>
52260 struct is_function_with_no_args : mpl::false_ {};
52261
52262 template<typename F>
52263 struct is_function_with_no_args<F(void)> : mpl::true_ {};
52264
52265 template<typename F, typename FArgs>
52266 struct result_of_nested_result : F::template result<FArgs>
52267 {};
52268
52269 template<typename F, typename FArgs>
52270 struct tr1_result_of_impl<F, FArgs, false>
52271 : mpl::if_<is_function_with_no_args<FArgs>,
52272 result_of_void_impl<F>,
52273 result_of_nested_result<F, FArgs> >::type
52274 {};
52275
52276 }
52277
52278
52279 # 1 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 1
52280 # 24 "../boost/preprocessor/iteration/detail/iter/forward1.hpp"
52281 # 1 "../boost/preprocessor/iteration/detail/bounds/lower1.hpp" 1
52282 # 12 "../boost/preprocessor/iteration/detail/bounds/lower1.hpp"
52283 # 1 "../boost/preprocessor/slot/detail/shared.hpp" 1
52284 # 13 "../boost/preprocessor/iteration/detail/bounds/lower1.hpp" 2
52285 # 25 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52286
52287 # 1 "../boost/preprocessor/iteration/detail/bounds/upper1.hpp" 1
52288 # 12 "../boost/preprocessor/iteration/detail/bounds/upper1.hpp"
52289 # 1 "../boost/preprocessor/slot/detail/shared.hpp" 1
52290 # 13 "../boost/preprocessor/iteration/detail/bounds/upper1.hpp" 2
52291 # 27 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52292 # 47 "../boost/preprocessor/iteration/detail/iter/forward1.hpp"
52293 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52294 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52295 template<typename F
52296 >
52297 struct tr1_result_of<F()>
52298 : mpl::if_<
52299 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52300 , boost::detail::tr1_result_of_impl<
52301 typename remove_cv<F>::type,
52302 typename remove_cv<F>::type(),
52303 (boost::detail::has_result_type<F>::value)>
52304 , boost::detail::tr1_result_of_impl<
52305 F,
52306 F(),
52307 (boost::detail::has_result_type<F>::value)> >::type { };
52308 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52309 template<typename F
52310 >
52311 struct result_of<F()>
52312 : tr1_result_of<F()> { };
52313 # 48 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52314
52315
52316
52317
52318 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52319 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52320 template<typename F ,
52321 typename T0>
52322 struct tr1_result_of<F( T0)>
52323 : mpl::if_<
52324 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52325 , boost::detail::tr1_result_of_impl<
52326 typename remove_cv<F>::type,
52327 typename remove_cv<F>::type( T0),
52328 (boost::detail::has_result_type<F>::value)>
52329 , boost::detail::tr1_result_of_impl<
52330 F,
52331 F( T0),
52332 (boost::detail::has_result_type<F>::value)> >::type { };
52333 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52334 template<typename F ,
52335 typename T0>
52336 struct result_of<F( T0)>
52337 : tr1_result_of<F( T0)> { };
52338 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52339 namespace detail {
52340
52341 template<typename R, typename FArgs ,
52342 typename T0>
52343 struct tr1_result_of_impl<R (*)( T0), FArgs, false>
52344 {
52345 typedef R type;
52346 };
52347
52348 template<typename R, typename FArgs ,
52349 typename T0>
52350 struct tr1_result_of_impl<R (&)( T0), FArgs, false>
52351 {
52352 typedef R type;
52353 };
52354
52355
52356 template<typename R, typename FArgs ,
52357 typename T0>
52358 struct tr1_result_of_impl<R (T0::*)
52359 (),
52360 FArgs, false>
52361 {
52362 typedef R type;
52363 };
52364
52365 template<typename R, typename FArgs ,
52366 typename T0>
52367 struct tr1_result_of_impl<R (T0::*)
52368 ()
52369 const,
52370 FArgs, false>
52371 {
52372 typedef R type;
52373 };
52374
52375 template<typename R, typename FArgs ,
52376 typename T0>
52377 struct tr1_result_of_impl<R (T0::*)
52378 ()
52379 volatile,
52380 FArgs, false>
52381 {
52382 typedef R type;
52383 };
52384
52385 template<typename R, typename FArgs ,
52386 typename T0>
52387 struct tr1_result_of_impl<R (T0::*)
52388 ()
52389 const volatile,
52390 FArgs, false>
52391 {
52392 typedef R type;
52393 };
52394
52395
52396 }
52397 # 53 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52398
52399
52400
52401
52402 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52403 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52404 template<typename F ,
52405 typename T0 , typename T1>
52406 struct tr1_result_of<F( T0 , T1)>
52407 : mpl::if_<
52408 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52409 , boost::detail::tr1_result_of_impl<
52410 typename remove_cv<F>::type,
52411 typename remove_cv<F>::type( T0 , T1),
52412 (boost::detail::has_result_type<F>::value)>
52413 , boost::detail::tr1_result_of_impl<
52414 F,
52415 F( T0 , T1),
52416 (boost::detail::has_result_type<F>::value)> >::type { };
52417 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52418 template<typename F ,
52419 typename T0 , typename T1>
52420 struct result_of<F( T0 , T1)>
52421 : tr1_result_of<F( T0 , T1)> { };
52422 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52423 namespace detail {
52424
52425 template<typename R, typename FArgs ,
52426 typename T0 , typename T1>
52427 struct tr1_result_of_impl<R (*)( T0 , T1), FArgs, false>
52428 {
52429 typedef R type;
52430 };
52431
52432 template<typename R, typename FArgs ,
52433 typename T0 , typename T1>
52434 struct tr1_result_of_impl<R (&)( T0 , T1), FArgs, false>
52435 {
52436 typedef R type;
52437 };
52438
52439
52440 template<typename R, typename FArgs ,
52441 typename T0 , typename T1>
52442 struct tr1_result_of_impl<R (T0::*)
52443 ( T1),
52444 FArgs, false>
52445 {
52446 typedef R type;
52447 };
52448
52449 template<typename R, typename FArgs ,
52450 typename T0 , typename T1>
52451 struct tr1_result_of_impl<R (T0::*)
52452 ( T1)
52453 const,
52454 FArgs, false>
52455 {
52456 typedef R type;
52457 };
52458
52459 template<typename R, typename FArgs ,
52460 typename T0 , typename T1>
52461 struct tr1_result_of_impl<R (T0::*)
52462 ( T1)
52463 volatile,
52464 FArgs, false>
52465 {
52466 typedef R type;
52467 };
52468
52469 template<typename R, typename FArgs ,
52470 typename T0 , typename T1>
52471 struct tr1_result_of_impl<R (T0::*)
52472 ( T1)
52473 const volatile,
52474 FArgs, false>
52475 {
52476 typedef R type;
52477 };
52478
52479
52480 }
52481 # 58 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52482
52483
52484
52485
52486 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52487 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52488 template<typename F ,
52489 typename T0 , typename T1 , typename T2>
52490 struct tr1_result_of<F( T0 , T1 , T2)>
52491 : mpl::if_<
52492 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52493 , boost::detail::tr1_result_of_impl<
52494 typename remove_cv<F>::type,
52495 typename remove_cv<F>::type( T0 , T1 , T2),
52496 (boost::detail::has_result_type<F>::value)>
52497 , boost::detail::tr1_result_of_impl<
52498 F,
52499 F( T0 , T1 , T2),
52500 (boost::detail::has_result_type<F>::value)> >::type { };
52501 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52502 template<typename F ,
52503 typename T0 , typename T1 , typename T2>
52504 struct result_of<F( T0 , T1 , T2)>
52505 : tr1_result_of<F( T0 , T1 , T2)> { };
52506 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52507 namespace detail {
52508
52509 template<typename R, typename FArgs ,
52510 typename T0 , typename T1 , typename T2>
52511 struct tr1_result_of_impl<R (*)( T0 , T1 , T2), FArgs, false>
52512 {
52513 typedef R type;
52514 };
52515
52516 template<typename R, typename FArgs ,
52517 typename T0 , typename T1 , typename T2>
52518 struct tr1_result_of_impl<R (&)( T0 , T1 , T2), FArgs, false>
52519 {
52520 typedef R type;
52521 };
52522
52523
52524 template<typename R, typename FArgs ,
52525 typename T0 , typename T1 , typename T2>
52526 struct tr1_result_of_impl<R (T0::*)
52527 ( T1 , T2),
52528 FArgs, false>
52529 {
52530 typedef R type;
52531 };
52532
52533 template<typename R, typename FArgs ,
52534 typename T0 , typename T1 , typename T2>
52535 struct tr1_result_of_impl<R (T0::*)
52536 ( T1 , T2)
52537 const,
52538 FArgs, false>
52539 {
52540 typedef R type;
52541 };
52542
52543 template<typename R, typename FArgs ,
52544 typename T0 , typename T1 , typename T2>
52545 struct tr1_result_of_impl<R (T0::*)
52546 ( T1 , T2)
52547 volatile,
52548 FArgs, false>
52549 {
52550 typedef R type;
52551 };
52552
52553 template<typename R, typename FArgs ,
52554 typename T0 , typename T1 , typename T2>
52555 struct tr1_result_of_impl<R (T0::*)
52556 ( T1 , T2)
52557 const volatile,
52558 FArgs, false>
52559 {
52560 typedef R type;
52561 };
52562
52563
52564 }
52565 # 63 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52566
52567
52568
52569
52570 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52571 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52572 template<typename F ,
52573 typename T0 , typename T1 , typename T2 , typename T3>
52574 struct tr1_result_of<F( T0 , T1 , T2 , T3)>
52575 : mpl::if_<
52576 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52577 , boost::detail::tr1_result_of_impl<
52578 typename remove_cv<F>::type,
52579 typename remove_cv<F>::type( T0 , T1 , T2 , T3),
52580 (boost::detail::has_result_type<F>::value)>
52581 , boost::detail::tr1_result_of_impl<
52582 F,
52583 F( T0 , T1 , T2 , T3),
52584 (boost::detail::has_result_type<F>::value)> >::type { };
52585 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52586 template<typename F ,
52587 typename T0 , typename T1 , typename T2 , typename T3>
52588 struct result_of<F( T0 , T1 , T2 , T3)>
52589 : tr1_result_of<F( T0 , T1 , T2 , T3)> { };
52590 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52591 namespace detail {
52592
52593 template<typename R, typename FArgs ,
52594 typename T0 , typename T1 , typename T2 , typename T3>
52595 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3), FArgs, false>
52596 {
52597 typedef R type;
52598 };
52599
52600 template<typename R, typename FArgs ,
52601 typename T0 , typename T1 , typename T2 , typename T3>
52602 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3), FArgs, false>
52603 {
52604 typedef R type;
52605 };
52606
52607
52608 template<typename R, typename FArgs ,
52609 typename T0 , typename T1 , typename T2 , typename T3>
52610 struct tr1_result_of_impl<R (T0::*)
52611 ( T1 , T2 , T3),
52612 FArgs, false>
52613 {
52614 typedef R type;
52615 };
52616
52617 template<typename R, typename FArgs ,
52618 typename T0 , typename T1 , typename T2 , typename T3>
52619 struct tr1_result_of_impl<R (T0::*)
52620 ( T1 , T2 , T3)
52621 const,
52622 FArgs, false>
52623 {
52624 typedef R type;
52625 };
52626
52627 template<typename R, typename FArgs ,
52628 typename T0 , typename T1 , typename T2 , typename T3>
52629 struct tr1_result_of_impl<R (T0::*)
52630 ( T1 , T2 , T3)
52631 volatile,
52632 FArgs, false>
52633 {
52634 typedef R type;
52635 };
52636
52637 template<typename R, typename FArgs ,
52638 typename T0 , typename T1 , typename T2 , typename T3>
52639 struct tr1_result_of_impl<R (T0::*)
52640 ( T1 , T2 , T3)
52641 const volatile,
52642 FArgs, false>
52643 {
52644 typedef R type;
52645 };
52646
52647
52648 }
52649 # 68 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52650
52651
52652
52653
52654 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52655 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52656 template<typename F ,
52657 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52658 struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4)>
52659 : mpl::if_<
52660 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52661 , boost::detail::tr1_result_of_impl<
52662 typename remove_cv<F>::type,
52663 typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4),
52664 (boost::detail::has_result_type<F>::value)>
52665 , boost::detail::tr1_result_of_impl<
52666 F,
52667 F( T0 , T1 , T2 , T3 , T4),
52668 (boost::detail::has_result_type<F>::value)> >::type { };
52669 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52670 template<typename F ,
52671 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52672 struct result_of<F( T0 , T1 , T2 , T3 , T4)>
52673 : tr1_result_of<F( T0 , T1 , T2 , T3 , T4)> { };
52674 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52675 namespace detail {
52676
52677 template<typename R, typename FArgs ,
52678 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52679 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4), FArgs, false>
52680 {
52681 typedef R type;
52682 };
52683
52684 template<typename R, typename FArgs ,
52685 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52686 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4), FArgs, false>
52687 {
52688 typedef R type;
52689 };
52690
52691
52692 template<typename R, typename FArgs ,
52693 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52694 struct tr1_result_of_impl<R (T0::*)
52695 ( T1 , T2 , T3 , T4),
52696 FArgs, false>
52697 {
52698 typedef R type;
52699 };
52700
52701 template<typename R, typename FArgs ,
52702 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52703 struct tr1_result_of_impl<R (T0::*)
52704 ( T1 , T2 , T3 , T4)
52705 const,
52706 FArgs, false>
52707 {
52708 typedef R type;
52709 };
52710
52711 template<typename R, typename FArgs ,
52712 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52713 struct tr1_result_of_impl<R (T0::*)
52714 ( T1 , T2 , T3 , T4)
52715 volatile,
52716 FArgs, false>
52717 {
52718 typedef R type;
52719 };
52720
52721 template<typename R, typename FArgs ,
52722 typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
52723 struct tr1_result_of_impl<R (T0::*)
52724 ( T1 , T2 , T3 , T4)
52725 const volatile,
52726 FArgs, false>
52727 {
52728 typedef R type;
52729 };
52730
52731
52732 }
52733 # 73 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52734
52735
52736
52737
52738 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52739 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52740 template<typename F ,
52741 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52742 struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5)>
52743 : mpl::if_<
52744 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52745 , boost::detail::tr1_result_of_impl<
52746 typename remove_cv<F>::type,
52747 typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5),
52748 (boost::detail::has_result_type<F>::value)>
52749 , boost::detail::tr1_result_of_impl<
52750 F,
52751 F( T0 , T1 , T2 , T3 , T4 , T5),
52752 (boost::detail::has_result_type<F>::value)> >::type { };
52753 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52754 template<typename F ,
52755 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52756 struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5)>
52757 : tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5)> { };
52758 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52759 namespace detail {
52760
52761 template<typename R, typename FArgs ,
52762 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52763 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5), FArgs, false>
52764 {
52765 typedef R type;
52766 };
52767
52768 template<typename R, typename FArgs ,
52769 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52770 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5), FArgs, false>
52771 {
52772 typedef R type;
52773 };
52774
52775
52776 template<typename R, typename FArgs ,
52777 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52778 struct tr1_result_of_impl<R (T0::*)
52779 ( T1 , T2 , T3 , T4 , T5),
52780 FArgs, false>
52781 {
52782 typedef R type;
52783 };
52784
52785 template<typename R, typename FArgs ,
52786 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52787 struct tr1_result_of_impl<R (T0::*)
52788 ( T1 , T2 , T3 , T4 , T5)
52789 const,
52790 FArgs, false>
52791 {
52792 typedef R type;
52793 };
52794
52795 template<typename R, typename FArgs ,
52796 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52797 struct tr1_result_of_impl<R (T0::*)
52798 ( T1 , T2 , T3 , T4 , T5)
52799 volatile,
52800 FArgs, false>
52801 {
52802 typedef R type;
52803 };
52804
52805 template<typename R, typename FArgs ,
52806 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
52807 struct tr1_result_of_impl<R (T0::*)
52808 ( T1 , T2 , T3 , T4 , T5)
52809 const volatile,
52810 FArgs, false>
52811 {
52812 typedef R type;
52813 };
52814
52815
52816 }
52817 # 78 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52818
52819
52820
52821
52822 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52823 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52824 template<typename F ,
52825 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52826 struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)>
52827 : mpl::if_<
52828 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52829 , boost::detail::tr1_result_of_impl<
52830 typename remove_cv<F>::type,
52831 typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6),
52832 (boost::detail::has_result_type<F>::value)>
52833 , boost::detail::tr1_result_of_impl<
52834 F,
52835 F( T0 , T1 , T2 , T3 , T4 , T5 , T6),
52836 (boost::detail::has_result_type<F>::value)> >::type { };
52837 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52838 template<typename F ,
52839 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52840 struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)>
52841 : tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { };
52842 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52843 namespace detail {
52844
52845 template<typename R, typename FArgs ,
52846 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52847 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6), FArgs, false>
52848 {
52849 typedef R type;
52850 };
52851
52852 template<typename R, typename FArgs ,
52853 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52854 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6), FArgs, false>
52855 {
52856 typedef R type;
52857 };
52858
52859
52860 template<typename R, typename FArgs ,
52861 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52862 struct tr1_result_of_impl<R (T0::*)
52863 ( T1 , T2 , T3 , T4 , T5 , T6),
52864 FArgs, false>
52865 {
52866 typedef R type;
52867 };
52868
52869 template<typename R, typename FArgs ,
52870 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52871 struct tr1_result_of_impl<R (T0::*)
52872 ( T1 , T2 , T3 , T4 , T5 , T6)
52873 const,
52874 FArgs, false>
52875 {
52876 typedef R type;
52877 };
52878
52879 template<typename R, typename FArgs ,
52880 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52881 struct tr1_result_of_impl<R (T0::*)
52882 ( T1 , T2 , T3 , T4 , T5 , T6)
52883 volatile,
52884 FArgs, false>
52885 {
52886 typedef R type;
52887 };
52888
52889 template<typename R, typename FArgs ,
52890 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
52891 struct tr1_result_of_impl<R (T0::*)
52892 ( T1 , T2 , T3 , T4 , T5 , T6)
52893 const volatile,
52894 FArgs, false>
52895 {
52896 typedef R type;
52897 };
52898
52899
52900 }
52901 # 83 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52902
52903
52904
52905
52906 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52907 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52908 template<typename F ,
52909 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52910 struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)>
52911 : mpl::if_<
52912 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52913 , boost::detail::tr1_result_of_impl<
52914 typename remove_cv<F>::type,
52915 typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7),
52916 (boost::detail::has_result_type<F>::value)>
52917 , boost::detail::tr1_result_of_impl<
52918 F,
52919 F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7),
52920 (boost::detail::has_result_type<F>::value)> >::type { };
52921 # 72 "../boost/utility/detail/result_of_iterate.hpp"
52922 template<typename F ,
52923 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52924 struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)>
52925 : tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { };
52926 # 84 "../boost/utility/detail/result_of_iterate.hpp"
52927 namespace detail {
52928
52929 template<typename R, typename FArgs ,
52930 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52931 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), FArgs, false>
52932 {
52933 typedef R type;
52934 };
52935
52936 template<typename R, typename FArgs ,
52937 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52938 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), FArgs, false>
52939 {
52940 typedef R type;
52941 };
52942
52943
52944 template<typename R, typename FArgs ,
52945 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52946 struct tr1_result_of_impl<R (T0::*)
52947 ( T1 , T2 , T3 , T4 , T5 , T6 , T7),
52948 FArgs, false>
52949 {
52950 typedef R type;
52951 };
52952
52953 template<typename R, typename FArgs ,
52954 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52955 struct tr1_result_of_impl<R (T0::*)
52956 ( T1 , T2 , T3 , T4 , T5 , T6 , T7)
52957 const,
52958 FArgs, false>
52959 {
52960 typedef R type;
52961 };
52962
52963 template<typename R, typename FArgs ,
52964 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52965 struct tr1_result_of_impl<R (T0::*)
52966 ( T1 , T2 , T3 , T4 , T5 , T6 , T7)
52967 volatile,
52968 FArgs, false>
52969 {
52970 typedef R type;
52971 };
52972
52973 template<typename R, typename FArgs ,
52974 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
52975 struct tr1_result_of_impl<R (T0::*)
52976 ( T1 , T2 , T3 , T4 , T5 , T6 , T7)
52977 const volatile,
52978 FArgs, false>
52979 {
52980 typedef R type;
52981 };
52982
52983
52984 }
52985 # 88 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
52986
52987
52988
52989
52990 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
52991 # 21 "../boost/utility/detail/result_of_iterate.hpp"
52992 template<typename F ,
52993 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
52994 struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)>
52995 : mpl::if_<
52996 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
52997 , boost::detail::tr1_result_of_impl<
52998 typename remove_cv<F>::type,
52999 typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
53000 (boost::detail::has_result_type<F>::value)>
53001 , boost::detail::tr1_result_of_impl<
53002 F,
53003 F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
53004 (boost::detail::has_result_type<F>::value)> >::type { };
53005 # 72 "../boost/utility/detail/result_of_iterate.hpp"
53006 template<typename F ,
53007 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53008 struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)>
53009 : tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { };
53010 # 84 "../boost/utility/detail/result_of_iterate.hpp"
53011 namespace detail {
53012
53013 template<typename R, typename FArgs ,
53014 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53015 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), FArgs, false>
53016 {
53017 typedef R type;
53018 };
53019
53020 template<typename R, typename FArgs ,
53021 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53022 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), FArgs, false>
53023 {
53024 typedef R type;
53025 };
53026
53027
53028 template<typename R, typename FArgs ,
53029 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53030 struct tr1_result_of_impl<R (T0::*)
53031 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
53032 FArgs, false>
53033 {
53034 typedef R type;
53035 };
53036
53037 template<typename R, typename FArgs ,
53038 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53039 struct tr1_result_of_impl<R (T0::*)
53040 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
53041 const,
53042 FArgs, false>
53043 {
53044 typedef R type;
53045 };
53046
53047 template<typename R, typename FArgs ,
53048 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53049 struct tr1_result_of_impl<R (T0::*)
53050 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
53051 volatile,
53052 FArgs, false>
53053 {
53054 typedef R type;
53055 };
53056
53057 template<typename R, typename FArgs ,
53058 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
53059 struct tr1_result_of_impl<R (T0::*)
53060 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
53061 const volatile,
53062 FArgs, false>
53063 {
53064 typedef R type;
53065 };
53066
53067
53068 }
53069 # 93 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
53070
53071
53072
53073
53074 # 1 "../boost/utility/detail/result_of_iterate.hpp" 1
53075 # 21 "../boost/utility/detail/result_of_iterate.hpp"
53076 template<typename F ,
53077 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53078 struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)>
53079 : mpl::if_<
53080 mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
53081 , boost::detail::tr1_result_of_impl<
53082 typename remove_cv<F>::type,
53083 typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
53084 (boost::detail::has_result_type<F>::value)>
53085 , boost::detail::tr1_result_of_impl<
53086 F,
53087 F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
53088 (boost::detail::has_result_type<F>::value)> >::type { };
53089 # 72 "../boost/utility/detail/result_of_iterate.hpp"
53090 template<typename F ,
53091 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53092 struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)>
53093 : tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { };
53094 # 84 "../boost/utility/detail/result_of_iterate.hpp"
53095 namespace detail {
53096
53097 template<typename R, typename FArgs ,
53098 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53099 struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), FArgs, false>
53100 {
53101 typedef R type;
53102 };
53103
53104 template<typename R, typename FArgs ,
53105 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53106 struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), FArgs, false>
53107 {
53108 typedef R type;
53109 };
53110
53111
53112 template<typename R, typename FArgs ,
53113 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53114 struct tr1_result_of_impl<R (T0::*)
53115 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
53116 FArgs, false>
53117 {
53118 typedef R type;
53119 };
53120
53121 template<typename R, typename FArgs ,
53122 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53123 struct tr1_result_of_impl<R (T0::*)
53124 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
53125 const,
53126 FArgs, false>
53127 {
53128 typedef R type;
53129 };
53130
53131 template<typename R, typename FArgs ,
53132 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53133 struct tr1_result_of_impl<R (T0::*)
53134 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
53135 volatile,
53136 FArgs, false>
53137 {
53138 typedef R type;
53139 };
53140
53141 template<typename R, typename FArgs ,
53142 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
53143 struct tr1_result_of_impl<R (T0::*)
53144 ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
53145 const volatile,
53146 FArgs, false>
53147 {
53148 typedef R type;
53149 };
53150
53151
53152 }
53153 # 98 "../boost/preprocessor/iteration/detail/iter/forward1.hpp" 2
53154 # 96 "../boost/utility/result_of.hpp" 2
53155
53156
53157
53158
53159
53160 }
53161 # 24 "../boost/iterator/transform_iterator.hpp" 2
53162
53163
53164
53165
53166
53167
53168 # 1 "../boost/iterator/detail/config_def.hpp" 1
53169 # 31 "../boost/iterator/transform_iterator.hpp" 2
53170
53171
53172 namespace boost
53173 {
53174 template <class UnaryFunction, class Iterator, class Reference = use_default, class Value = use_default>
53175 class transform_iterator;
53176
53177 namespace detail
53178 {
53179
53180 template <class UnaryFunc, class Iterator, class Reference, class Value>
53181 struct transform_iterator_base
53182 {
53183 private:
53184
53185
53186 typedef typename ia_dflt_help<
53187 Reference
53188 , result_of<UnaryFunc(typename std::iterator_traits<Iterator>::reference)>
53189 >::type reference;
53190
53191
53192
53193
53194
53195
53196 typedef typename ia_dflt_help<
53197 Value
53198 , remove_reference<reference>
53199 >::type cv_value_type;
53200
53201 public:
53202 typedef iterator_adaptor<
53203 transform_iterator<UnaryFunc, Iterator, Reference, Value>
53204 , Iterator
53205 , cv_value_type
53206 , use_default
53207 , reference
53208 > type;
53209 };
53210 }
53211
53212 template <class UnaryFunc, class Iterator, class Reference, class Value>
53213 class transform_iterator
53214 : public boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
53215 {
53216 typedef typename
53217 boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
53218 super_t;
53219
53220 friend class iterator_core_access;
53221
53222 public:
53223 transform_iterator() { }
53224
53225 transform_iterator(Iterator const& x, UnaryFunc f)
53226 : super_t(x), m_f(f) { }
53227
53228 explicit transform_iterator(Iterator const& x)
53229 : super_t(x)
53230 {
53231
53232
53233
53234
53235
53236 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((is_class<UnaryFunc>::value) == 0 ? false : true) >)> boost_static_assert_typedef_97;
53237
53238 }
53239
53240 template <
53241 class OtherUnaryFunction
53242 , class OtherIterator
53243 , class OtherReference
53244 , class OtherValue>
53245 transform_iterator(
53246 transform_iterator<OtherUnaryFunction, OtherIterator, OtherReference, OtherValue> const& t
53247 , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
53248
53249 , typename enable_if_convertible<OtherUnaryFunction, UnaryFunc>::type* = 0
53250
53251 )
53252 : super_t(t.base()), m_f(t.functor())
53253 {}
53254
53255 UnaryFunc functor() const
53256 { return m_f; }
53257
53258 private:
53259 typename super_t::reference dereference() const
53260 { return m_f(*this->base()); }
53261
53262
53263
53264 UnaryFunc m_f;
53265 };
53266
53267 template <class UnaryFunc, class Iterator>
53268 transform_iterator<UnaryFunc, Iterator>
53269 make_transform_iterator(Iterator it, UnaryFunc fun)
53270 {
53271 return transform_iterator<UnaryFunc, Iterator>(it, fun);
53272 }
53273 # 142 "../boost/iterator/transform_iterator.hpp"
53274 template <class UnaryFunc, class Iterator>
53275
53276
53277
53278 typename iterators::enable_if<
53279
53280 is_class<UnaryFunc>
53281 , transform_iterator<UnaryFunc, Iterator>
53282
53283
53284
53285 >::type
53286 make_transform_iterator(Iterator it)
53287 {
53288 return transform_iterator<UnaryFunc, Iterator>(it, UnaryFunc());
53289 }
53290 # 168 "../boost/iterator/transform_iterator.hpp"
53291 }
53292
53293 # 1 "../boost/iterator/detail/config_undef.hpp" 1
53294 # 171 "../boost/iterator/transform_iterator.hpp" 2
53295 # 17 "../boost/range/adaptor/transformed.hpp" 2
53296
53297
53298 namespace boost
53299 {
53300 namespace range_detail
53301 {
53302
53303 template< class F, class R >
53304 struct transformed_range :
53305 public boost::iterator_range<
53306 boost::transform_iterator< F,
53307 typename range_iterator<R>::type
53308 >
53309 >
53310 {
53311 private:
53312 typedef boost::iterator_range<
53313 boost::transform_iterator< F,
53314 typename range_iterator<R>::type
53315 >
53316 >
53317 base;
53318
53319 public:
53320 typedef F transform_fn_type;
53321 typedef R source_range_type;
53322
53323 transformed_range( F f, R& r )
53324 : base( boost::make_transform_iterator( boost::begin(r), f ),
53325 boost::make_transform_iterator( boost::end(r), f ) )
53326
53327 { }
53328 };
53329
53330 template< class T >
53331 struct transform_holder : holder<T>
53332 {
53333 transform_holder( T r ) : holder<T>(r)
53334 { }
53335 };
53336
53337 template< class InputRng, class UnaryFunction >
53338 inline transformed_range<UnaryFunction,InputRng>
53339 operator|( InputRng& r,
53340 const transform_holder<UnaryFunction>& f )
53341 {
53342 return transformed_range<UnaryFunction,InputRng>( f.val, r );
53343 }
53344
53345 template< class InputRng, class UnaryFunction >
53346 inline transformed_range<UnaryFunction, const InputRng>
53347 operator|( const InputRng& r,
53348 const transform_holder<UnaryFunction>& f )
53349 {
53350 return transformed_range<UnaryFunction, const InputRng>( f.val, r );
53351 }
53352
53353 }
53354
53355 using range_detail::transformed_range;
53356
53357 namespace adaptors
53358 {
53359 namespace
53360 {
53361 const range_detail::forwarder<range_detail::transform_holder>
53362 transformed =
53363 range_detail::forwarder<range_detail::transform_holder>();
53364 }
53365
53366 template<class UnaryFunction, class InputRange>
53367 inline transformed_range<UnaryFunction, InputRange>
53368 transform(InputRange& rng, UnaryFunction fn)
53369 {
53370 return transformed_range<UnaryFunction, InputRange>(fn, rng);
53371 }
53372
53373 template<class UnaryFunction, class InputRange>
53374 inline transformed_range<UnaryFunction, const InputRange>
53375 transform(const InputRange& rng, UnaryFunction fn)
53376 {
53377 return transformed_range<UnaryFunction, const InputRange>(fn, rng);
53378 }
53379 }
53380
53381 }
53382 # 17 "quickbook/src/utils.hpp" 2
53383
53384 namespace quickbook { namespace detail {
53385 void print_char(char ch, std::ostream& out);
53386 void print_string(std::basic_string<char> const& str, std::ostream& out);
53387 char filter_identifier_char(char ch);
53388
53389 template <typename Range>
53390 inline std::string
53391 make_identifier(Range const& range)
53392 {
53393 std::string out_name;
53394
53395 boost::push_back(out_name,
53396 range | boost::adaptors::transformed(filter_identifier_char));
53397
53398 return out_name;
53399 }
53400
53401 std::string escape_uri(std::string uri);
53402
53403
53404
53405
53406 enum file_type
53407 {
53408 cpp_file
53409 , python_file
53410 };
53411
53412 file_type get_file_type(std::string const& extension);
53413 }}
53414 # 11 "quickbook/src/id_manager.cpp" 2
53415
53416
53417
53418 # 1 "../boost/unordered_map.hpp" 1
53419 # 16 "../boost/unordered_map.hpp"
53420 # 1 "../boost/unordered/unordered_map.hpp" 1
53421 # 16 "../boost/unordered/unordered_map.hpp"
53422 # 1 "../boost/unordered/unordered_map_fwd.hpp" 1
53423 # 13 "../boost/unordered/unordered_map_fwd.hpp"
53424 # 1 "../boost/unordered/detail/fwd.hpp" 1
53425 # 16 "../boost/unordered/detail/fwd.hpp"
53426 # 1 "../boost/functional/hash_fwd.hpp" 1
53427 # 17 "../boost/unordered/detail/fwd.hpp" 2
53428
53429 namespace boost
53430 {
53431 namespace unordered
53432 {
53433 template <class K,
53434 class T,
53435 class H = boost::hash<K>,
53436 class P = std::equal_to<K>,
53437 class A = std::allocator<std::pair<const K, T> > >
53438 class unordered_map;
53439
53440 template <class K,
53441 class T,
53442 class H = boost::hash<K>,
53443 class P = std::equal_to<K>,
53444 class A = std::allocator<std::pair<const K, T> > >
53445 class unordered_multimap;
53446
53447 template <class T,
53448 class H = boost::hash<T>,
53449 class P = std::equal_to<T>,
53450 class A = std::allocator<T> >
53451 class unordered_set;
53452
53453 template <class T,
53454 class H = boost::hash<T>,
53455 class P = std::equal_to<T>,
53456 class A = std::allocator<T> >
53457 class unordered_multiset;
53458
53459 struct piecewise_construct_t {};
53460 const piecewise_construct_t piecewise_construct = piecewise_construct_t();
53461 }
53462 }
53463 # 14 "../boost/unordered/unordered_map_fwd.hpp" 2
53464
53465 namespace boost
53466 {
53467 namespace unordered
53468 {
53469 template <class K, class T, class H, class P, class A>
53470 inline bool operator==(unordered_map<K, T, H, P, A> const&,
53471 unordered_map<K, T, H, P, A> const&);
53472 template <class K, class T, class H, class P, class A>
53473 inline bool operator!=(unordered_map<K, T, H, P, A> const&,
53474 unordered_map<K, T, H, P, A> const&);
53475 template <class K, class T, class H, class P, class A>
53476 inline void swap(unordered_map<K, T, H, P, A>&,
53477 unordered_map<K, T, H, P, A>&);
53478
53479 template <class K, class T, class H, class P, class A>
53480 inline bool operator==(unordered_multimap<K, T, H, P, A> const&,
53481 unordered_multimap<K, T, H, P, A> const&);
53482 template <class K, class T, class H, class P, class A>
53483 inline bool operator!=(unordered_multimap<K, T, H, P, A> const&,
53484 unordered_multimap<K, T, H, P, A> const&);
53485 template <class K, class T, class H, class P, class A>
53486 inline void swap(unordered_multimap<K, T, H, P, A>&,
53487 unordered_multimap<K, T, H, P, A>&);
53488 }
53489
53490 using boost::unordered::unordered_map;
53491 using boost::unordered::unordered_multimap;
53492 using boost::unordered::swap;
53493 using boost::unordered::operator==;
53494 using boost::unordered::operator!=;
53495 }
53496 # 17 "../boost/unordered/unordered_map.hpp" 2
53497 # 1 "../boost/unordered/detail/allocator_helpers.hpp" 1
53498 # 19 "../boost/unordered/detail/allocator_helpers.hpp"
53499 # 1 "../boost/detail/select_type.hpp" 1
53500 # 16 "../boost/detail/select_type.hpp"
53501 namespace boost { namespace detail {
53502
53503
53504
53505
53506
53507
53508 template <bool b> struct if_true
53509 {
53510 template <class T, class F>
53511 struct then { typedef T type; };
53512 };
53513
53514 template <>
53515 struct if_true<false>
53516 {
53517 template <class T, class F>
53518 struct then { typedef F type; };
53519 };
53520 }}
53521 # 20 "../boost/unordered/detail/allocator_helpers.hpp" 2
53522
53523
53524 # 1 "../boost/preprocessor/enum.hpp" 1
53525 # 15 "../boost/preprocessor/enum.hpp"
53526 # 1 "../boost/preprocessor/repetition/enum.hpp" 1
53527 # 20 "../boost/preprocessor/repetition/enum.hpp"
53528 # 1 "../boost/preprocessor/detail/auto_rec.hpp" 1
53529 # 21 "../boost/preprocessor/repetition/enum.hpp" 2
53530 # 16 "../boost/preprocessor/enum.hpp" 2
53531 # 23 "../boost/unordered/detail/allocator_helpers.hpp" 2
53532
53533 # 1 "../boost/type_traits/add_lvalue_reference.hpp" 1
53534 # 12 "../boost/type_traits/add_lvalue_reference.hpp"
53535 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
53536 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
53537 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
53538 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
53539 # 13 "../boost/type_traits/add_lvalue_reference.hpp" 2
53540
53541 namespace boost{
53542
53543 template< typename T > struct add_lvalue_reference { public: typedef typename boost::add_reference<T>::type type; };
53544
53545
53546
53547
53548
53549 }
53550
53551 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
53552 # 25 "../boost/type_traits/add_lvalue_reference.hpp" 2
53553 # 25 "../boost/unordered/detail/allocator_helpers.hpp" 2
53554 # 1 "../boost/pointer_to_other.hpp" 1
53555 # 18 "../boost/pointer_to_other.hpp"
53556 namespace boost
53557 {
53558
53559
53560
53561 template<class T, class U>
53562 struct pointer_to_other;
53563
53564 template<class T, class U,
53565 template<class> class Sp>
53566 struct pointer_to_other< Sp<T>, U >
53567 {
53568 typedef Sp<U> type;
53569 };
53570
53571 template<class T, class T2, class U,
53572 template<class, class> class Sp>
53573 struct pointer_to_other< Sp<T, T2>, U >
53574 {
53575 typedef Sp<U, T2> type;
53576 };
53577
53578 template<class T, class T2, class T3, class U,
53579 template<class, class, class> class Sp>
53580 struct pointer_to_other< Sp<T, T2, T3>, U >
53581 {
53582 typedef Sp<U, T2, T3> type;
53583 };
53584
53585 template<class T, class U>
53586 struct pointer_to_other< T*, U >
53587 {
53588 typedef U* type;
53589 };
53590
53591 }
53592 # 26 "../boost/unordered/detail/allocator_helpers.hpp" 2
53593 # 1 "../boost/assert.hpp" 1
53594 # 50 "../boost/assert.hpp"
53595 # 1 "/usr/include/assert.h" 1 3 4
53596 # 51 "../boost/assert.hpp" 2
53597 # 27 "../boost/unordered/detail/allocator_helpers.hpp" 2
53598 # 41 "../boost/unordered/detail/allocator_helpers.hpp"
53599 namespace boost { namespace unordered { namespace detail {
53600 # 56 "../boost/unordered/detail/allocator_helpers.hpp"
53601 template <typename T, T Value>
53602 struct integral_constant { enum { value = Value }; };
53603
53604 typedef boost::unordered::detail::integral_constant<bool, true> true_type;
53605 typedef boost::unordered::detail::integral_constant<bool, false> false_type;
53606 # 72 "../boost/unordered/detail/allocator_helpers.hpp"
53607 template <class T>
53608 inline void destroy(T* x) {
53609 x->~T();
53610 }
53611 # 86 "../boost/unordered/detail/allocator_helpers.hpp"
53612 template <typename T> typename boost::add_lvalue_reference<T>::type make();
53613 struct choice9 { typedef char (&type)[9]; };
53614 struct choice8 : choice9 { typedef char (&type)[8]; };
53615 struct choice7 : choice8 { typedef char (&type)[7]; };
53616 struct choice6 : choice7 { typedef char (&type)[6]; };
53617 struct choice5 : choice6 { typedef char (&type)[5]; };
53618 struct choice4 : choice5 { typedef char (&type)[4]; };
53619 struct choice3 : choice4 { typedef char (&type)[3]; };
53620 struct choice2 : choice3 { typedef char (&type)[2]; };
53621 struct choice1 : choice2 { typedef char (&type)[1]; };
53622 choice1 choose();
53623
53624 typedef choice1::type yes_type;
53625 typedef choice2::type no_type;
53626
53627 struct private_type
53628 {
53629 private_type const &operator,(int) const;
53630 };
53631
53632 template <typename T>
53633 no_type is_private_type(T const&);
53634 yes_type is_private_type(private_type const&);
53635
53636 struct convert_from_anything {
53637 template <typename T>
53638 convert_from_anything(T const&);
53639 };
53640
53641
53642
53643
53644
53645 template <typename T, unsigned int> struct expr_test;
53646 template <typename T> struct expr_test<T, sizeof(char)> : T {};
53647 template <typename U> static char for_expr_test(U const&);
53648 # 212 "../boost/unordered/detail/allocator_helpers.hpp"
53649 template <typename Alloc, typename T>
53650 struct rebind_wrap
53651 {
53652 typedef typename Alloc::template rebind<T>::other
53653 type;
53654 };
53655 # 242 "../boost/unordered/detail/allocator_helpers.hpp"
53656 template <typename T, typename T2>
53657 struct sfinae : T2 {};
53658 # 271 "../boost/unordered/detail/allocator_helpers.hpp"
53659 template <typename Tp, typename Default> struct default_type_pointer { template <typename X> static typename boost::unordered::detail::sfinae< typename X::pointer, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default pointer; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::pointer type; };
53660 template <typename Tp, typename Default> struct default_type_const_pointer { template <typename X> static typename boost::unordered::detail::sfinae< typename X::const_pointer, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default const_pointer; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::const_pointer type; };
53661 template <typename Tp, typename Default> struct default_type_void_pointer { template <typename X> static typename boost::unordered::detail::sfinae< typename X::void_pointer, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default void_pointer; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::void_pointer type; };
53662 template <typename Tp, typename Default> struct default_type_const_void_pointer { template <typename X> static typename boost::unordered::detail::sfinae< typename X::const_void_pointer, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default const_void_pointer; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::const_void_pointer type; };
53663 template <typename Tp, typename Default> struct default_type_difference_type { template <typename X> static typename boost::unordered::detail::sfinae< typename X::difference_type, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default difference_type; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::difference_type type; };
53664 template <typename Tp, typename Default> struct default_type_size_type { template <typename X> static typename boost::unordered::detail::sfinae< typename X::size_type, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default size_type; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::size_type type; };
53665 template <typename Tp, typename Default> struct default_type_propagate_on_container_copy_assignment { template <typename X> static typename boost::unordered::detail::sfinae< typename X::propagate_on_container_copy_assignment, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default propagate_on_container_copy_assignment; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::propagate_on_container_copy_assignment type; };
53666 template <typename Tp, typename Default> struct default_type_propagate_on_container_move_assignment { template <typename X> static typename boost::unordered::detail::sfinae< typename X::propagate_on_container_move_assignment, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default propagate_on_container_move_assignment; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::propagate_on_container_move_assignment type; };
53667 template <typename Tp, typename Default> struct default_type_propagate_on_container_swap { template <typename X> static typename boost::unordered::detail::sfinae< typename X::propagate_on_container_swap, choice1>::type test(choice1); template <typename X> static choice2::type test(choice2); struct DefaultWrap { typedef Default propagate_on_container_swap; }; enum { value = (1 == sizeof(test<Tp>(choose()))) }; typedef typename boost::detail::if_true<value>:: template then<Tp, DefaultWrap> ::type::propagate_on_container_swap type; };
53668
53669
53670 template <typename T>
53671 struct
53672
53673 has_select_on_container_copy_construction
53674 # 283 "../boost/unordered/detail/allocator_helpers.hpp"
53675 { template <typename U> static typename boost::unordered::detail::expr_test<
53676
53677 choice1
53678 # 283 "../boost/unordered/detail/allocator_helpers.hpp"
53679 , sizeof(boost::unordered::detail::for_expr_test(( (boost::unordered::detail::make< U const >().select_on_container_copy_construction ()), 0)))>::type test(
53680
53681 choice1
53682 # 283 "../boost/unordered/detail/allocator_helpers.hpp"
53683 ); template <typename U> static
53684
53685 choice2
53686 # 283 "../boost/unordered/detail/allocator_helpers.hpp"
53687 ::type test(
53688
53689 choice2
53690 # 283 "../boost/unordered/detail/allocator_helpers.hpp"
53691 ); enum { value = sizeof(test<T>(choose())) == sizeof(choice1::type) }; }
53692
53693 ;
53694
53695 template <typename T>
53696 struct
53697
53698 has_max_size
53699 # 288 "../boost/unordered/detail/allocator_helpers.hpp"
53700 { template <typename U> static typename boost::unordered::detail::expr_test<
53701
53702 choice1
53703 # 288 "../boost/unordered/detail/allocator_helpers.hpp"
53704 , sizeof(boost::unordered::detail::for_expr_test(( (boost::unordered::detail::make< U const >().max_size ()), 0)))>::type test(
53705
53706 choice1
53707 # 288 "../boost/unordered/detail/allocator_helpers.hpp"
53708 ); template <typename U> static
53709
53710 choice2
53711 # 288 "../boost/unordered/detail/allocator_helpers.hpp"
53712 ::type test(
53713
53714 choice2
53715 # 288 "../boost/unordered/detail/allocator_helpers.hpp"
53716 ); enum { value = sizeof(test<T>(choose())) == sizeof(choice1::type) }; }
53717
53718 ;
53719
53720 template <typename T, typename ValueType>
53721 struct
53722
53723
53724
53725 has_construct
53726 # 293 "../boost/unordered/detail/allocator_helpers.hpp"
53727 { template <typename U> static typename boost::unordered::detail::expr_test<
53728
53729
53730
53731 choice1
53732 # 293 "../boost/unordered/detail/allocator_helpers.hpp"
53733 , sizeof(boost::unordered::detail::for_expr_test(( (boost::unordered::detail::make< U >().construct ( boost::unordered::detail::make<ValueType*>(), boost::unordered::detail::make<ValueType const>())), 0)))>::type test(
53734
53735
53736
53737 choice1
53738 # 293 "../boost/unordered/detail/allocator_helpers.hpp"
53739 ); template <typename U> static
53740
53741
53742
53743 choice2
53744 # 293 "../boost/unordered/detail/allocator_helpers.hpp"
53745 ::type test(
53746
53747
53748
53749 choice2
53750 # 293 "../boost/unordered/detail/allocator_helpers.hpp"
53751 ); enum { value = sizeof(test<T>(choose())) == sizeof(choice1::type) }; }
53752
53753
53754
53755 ;
53756
53757 template <typename T, typename ValueType>
53758 struct
53759
53760 has_destroy
53761 # 300 "../boost/unordered/detail/allocator_helpers.hpp"
53762 { template <typename U> static typename boost::unordered::detail::expr_test<
53763
53764 choice1
53765 # 300 "../boost/unordered/detail/allocator_helpers.hpp"
53766 , sizeof(boost::unordered::detail::for_expr_test(( (boost::unordered::detail::make< U >().destroy (boost::unordered::detail::make<ValueType*>())), 0)))>::type test(
53767
53768 choice1
53769 # 300 "../boost/unordered/detail/allocator_helpers.hpp"
53770 ); template <typename U> static
53771
53772 choice2
53773 # 300 "../boost/unordered/detail/allocator_helpers.hpp"
53774 ::type test(
53775
53776 choice2
53777 # 300 "../boost/unordered/detail/allocator_helpers.hpp"
53778 ); enum { value = sizeof(test<T>(choose())) == sizeof(choice1::type) }; }
53779
53780 ;
53781 # 317 "../boost/unordered/detail/allocator_helpers.hpp"
53782 template <typename Alloc>
53783 inline typename boost::enable_if_c<
53784 boost::unordered::detail::
53785 has_select_on_container_copy_construction<Alloc>::value, Alloc
53786 >::type call_select_on_container_copy_construction(const Alloc& rhs)
53787 {
53788 return rhs.select_on_container_copy_construction();
53789 }
53790
53791 template <typename Alloc>
53792 inline typename boost::disable_if_c<
53793 boost::unordered::detail::
53794 has_select_on_container_copy_construction<Alloc>::value, Alloc
53795 >::type call_select_on_container_copy_construction(const Alloc& rhs)
53796 {
53797 return rhs;
53798 }
53799
53800 template <typename SizeType, typename Alloc>
53801 inline typename boost::enable_if_c<
53802 boost::unordered::detail::has_max_size<Alloc>::value, SizeType
53803 >::type call_max_size(const Alloc& a)
53804 {
53805 return a.max_size();
53806 }
53807
53808 template <typename SizeType, typename Alloc>
53809 inline typename boost::disable_if_c<
53810 boost::unordered::detail::has_max_size<Alloc>::value, SizeType
53811 >::type call_max_size(const Alloc&)
53812 {
53813 return (std::numeric_limits<SizeType>::max)();
53814 }
53815
53816 template <typename Alloc>
53817 struct allocator_traits
53818 {
53819 typedef Alloc allocator_type;
53820 typedef typename Alloc::value_type value_type;
53821
53822 typedef typename default_type_pointer<Alloc, value_type*>::type
53823 pointer;
53824
53825 template <typename T>
53826 struct pointer_to_other : boost::pointer_to_other<pointer, T> {};
53827
53828 typedef typename
53829 default_type_const_pointer
53830 # 363 "../boost/unordered/detail/allocator_helpers.hpp"
53831 <Alloc, typename pointer_to_other<const value_type>::type>::type
53832
53833 const_pointer;
53834 # 375 "../boost/unordered/detail/allocator_helpers.hpp"
53835 typedef typename
53836 default_type_difference_type
53837 # 375 "../boost/unordered/detail/allocator_helpers.hpp"
53838 <Alloc, std::ptrdiff_t>::type
53839 difference_type;
53840
53841 typedef typename default_type_size_type<Alloc, std::size_t>::type
53842 size_type;
53843
53844
53845
53846 static pointer allocate(Alloc& a, size_type n)
53847 { return a.allocate(n); }
53848
53849
53850
53851
53852
53853
53854
53855 static void deallocate(Alloc& a, pointer p, size_type n)
53856 { a.deallocate(p, n); }
53857
53858 public:
53859
53860
53861
53862 template <typename T>
53863 static typename boost::enable_if_c<
53864 boost::unordered::detail::has_construct<Alloc, T>::value>::type
53865 construct(Alloc& a, T* p, T const& x)
53866 {
53867 a.construct(p, x);
53868 }
53869
53870 template <typename T>
53871 static typename boost::disable_if_c<
53872 boost::unordered::detail::has_construct<Alloc, T>::value>::type
53873 construct(Alloc&, T* p, T const& x)
53874 {
53875 new ((void*) p) T(x);
53876 }
53877
53878 template <typename T>
53879 static typename boost::enable_if_c<
53880 boost::unordered::detail::has_destroy<Alloc, T>::value>::type
53881 destroy(Alloc& a, T* p)
53882 {
53883 a.destroy(p);
53884 }
53885
53886 template <typename T>
53887 static typename boost::disable_if_c<
53888 boost::unordered::detail::has_destroy<Alloc, T>::value>::type
53889 destroy(Alloc&, T* p)
53890 {
53891 boost::unordered::detail::destroy(p);
53892 }
53893
53894 static size_type max_size(const Alloc& a)
53895 {
53896 return boost::unordered::detail::call_max_size<size_type>(a);
53897 }
53898
53899
53900
53901 static Alloc select_on_container_copy_construction(Alloc const& rhs)
53902 {
53903 return boost::unordered::detail::
53904 call_select_on_container_copy_construction(rhs);
53905 }
53906
53907
53908
53909 typedef typename
53910 default_type_propagate_on_container_copy_assignment
53911 # 446 "../boost/unordered/detail/allocator_helpers.hpp"
53912 <Alloc, false_type>::type
53913
53914 propagate_on_container_copy_assignment;
53915 typedef typename
53916 default_type_propagate_on_container_move_assignment
53917 # 449 "../boost/unordered/detail/allocator_helpers.hpp"
53918 <Alloc, false_type>::type
53919
53920 propagate_on_container_move_assignment;
53921 typedef typename
53922 default_type_propagate_on_container_swap
53923 # 452 "../boost/unordered/detail/allocator_helpers.hpp"
53924 <Alloc, false_type>::type
53925
53926 propagate_on_container_swap;
53927 };
53928 # 468 "../boost/unordered/detail/allocator_helpers.hpp"
53929 template <typename Allocator>
53930 struct array_constructor
53931 {
53932 typedef boost::unordered::detail::allocator_traits<Allocator> traits;
53933 typedef typename traits::pointer pointer;
53934
53935 Allocator& alloc_;
53936 pointer ptr_;
53937 pointer constructed_;
53938 std::size_t length_;
53939
53940 array_constructor(Allocator& a)
53941 : alloc_(a), ptr_(), constructed_(), length_(0)
53942 {
53943 constructed_ = pointer();
53944 ptr_ = pointer();
53945 }
53946
53947 ~array_constructor() {
53948 if (ptr_) {
53949 for(pointer p = ptr_; p != constructed_; ++p)
53950 traits::destroy(alloc_, boost::addressof(*p));
53951
53952 traits::deallocate(alloc_, ptr_, length_);
53953 }
53954 }
53955
53956 template <typename V>
53957 void construct(V const& v, std::size_t l)
53958 {
53959 (static_cast<void> (0));
53960 length_ = l;
53961 ptr_ = traits::allocate(alloc_, length_);
53962 pointer end = ptr_ + static_cast<std::ptrdiff_t>(length_);
53963 for(constructed_ = ptr_; constructed_ != end; ++constructed_)
53964 traits::construct(alloc_, boost::addressof(*constructed_), v);
53965 }
53966
53967 pointer get() const
53968 {
53969 return ptr_;
53970 }
53971
53972 pointer release()
53973 {
53974 pointer p(ptr_);
53975 ptr_ = pointer();
53976 return p;
53977 }
53978 private:
53979 array_constructor(array_constructor const&);
53980 array_constructor& operator=(array_constructor const&);
53981 };
53982 }}}
53983 # 18 "../boost/unordered/unordered_map.hpp" 2
53984 # 1 "../boost/unordered/detail/equivalent.hpp" 1
53985 # 14 "../boost/unordered/detail/equivalent.hpp"
53986 # 1 "../boost/unordered/detail/table.hpp" 1
53987 # 10 "../boost/unordered/detail/table.hpp"
53988 # 1 "../boost/unordered/detail/buckets.hpp" 1
53989 # 14 "../boost/unordered/detail/buckets.hpp"
53990 # 1 "../boost/unordered/detail/util.hpp" 1
53991 # 15 "../boost/unordered/detail/util.hpp"
53992 # 1 "../boost/type_traits/is_empty.hpp" 1
53993 # 32 "../boost/type_traits/is_empty.hpp"
53994 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
53995 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
53996 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
53997 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
53998 # 33 "../boost/type_traits/is_empty.hpp" 2
53999
54000
54001
54002
54003
54004
54005
54006 namespace boost {
54007
54008 namespace detail {
54009 # 51 "../boost/type_traits/is_empty.hpp"
54010 template <typename T>
54011 struct empty_helper_t1 : public T
54012 {
54013 empty_helper_t1();
54014 int i[256];
54015 private:
54016
54017 empty_helper_t1(const empty_helper_t1&);
54018 empty_helper_t1& operator=(const empty_helper_t1&);
54019 };
54020
54021
54022
54023
54024
54025 struct empty_helper_t2 { int i[256]; };
54026
54027
54028
54029 template <typename T, bool is_a_class = false>
54030 struct empty_helper
54031 {
54032 static const bool value = false;
54033 };
54034
54035 template <typename T>
54036 struct empty_helper<T, true>
54037 {
54038 static const bool value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2))
54039
54040 ;
54041 };
54042
54043 template <typename T>
54044 struct is_empty_impl
54045 {
54046 typedef typename remove_cv<T>::type cvt;
54047 static const bool value = ( ::boost::type_traits::ice_or< ::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value , false >::value )
54048
54049
54050
54051
54052
54053 ;
54054 };
54055 # 211 "../boost/type_traits/is_empty.hpp"
54056 template<> struct is_empty_impl< void > { public: static const bool value = (false); };
54057
54058 template<> struct is_empty_impl< void const > { public: static const bool value = (false); };
54059 template<> struct is_empty_impl< void volatile > { public: static const bool value = (false); };
54060 template<> struct is_empty_impl< void const volatile > { public: static const bool value = (false); };
54061
54062
54063 }
54064
54065 template< typename T > struct is_empty : public ::boost::integral_constant<bool,::boost::detail::is_empty_impl<T>::value> { public: };
54066
54067 }
54068
54069 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
54070 # 225 "../boost/type_traits/is_empty.hpp" 2
54071 # 16 "../boost/unordered/detail/util.hpp" 2
54072
54073
54074
54075 # 1 "../boost/move/move.hpp" 1
54076 # 67 "../boost/move/move.hpp"
54077 namespace boost {
54078 namespace move_detail {
54079
54080
54081 template<bool C, typename T1, typename T2>
54082 struct if_c
54083 {
54084 typedef T1 type;
54085 };
54086
54087 template<typename T1, typename T2>
54088 struct if_c<false,T1,T2>
54089 {
54090 typedef T2 type;
54091 };
54092
54093 template<typename T1, typename T2, typename T3>
54094 struct if_
54095 {
54096 typedef typename if_c<0 != T1::value, T2, T3>::type type;
54097 };
54098
54099
54100 template <bool B, class T = void>
54101 struct enable_if_c
54102 {
54103 typedef T type;
54104 };
54105
54106 template <class T>
54107 struct enable_if_c<false, T> {};
54108
54109 template <class Cond, class T = void>
54110 struct enable_if : public enable_if_c<Cond::value, T> {};
54111
54112 template <class Cond, class T = void>
54113 struct disable_if : public enable_if_c<!Cond::value, T> {};
54114
54115
54116 template<class T, T v>
54117 struct integral_constant
54118 {
54119 static const T value = v;
54120 typedef T value_type;
54121 typedef integral_constant<T, v> type;
54122 };
54123
54124
54125 template <class T>
54126 struct identity
54127 {
54128 typedef T type;
54129 };
54130
54131
54132 template <class T, class U>
54133 class is_convertible
54134 {
54135 typedef char true_t;
54136 class false_t { char dummy[2]; };
54137 static true_t dispatch(U);
54138 static false_t dispatch(...);
54139 static T &trigger();
54140 public:
54141 enum { value = sizeof(dispatch(trigger())) == sizeof(true_t) };
54142 };
54143
54144
54145 template <typename Condition1, typename Condition2, typename Condition3 = integral_constant<bool, true> >
54146 struct and_
54147 : public integral_constant<bool, Condition1::value && Condition2::value && Condition3::value>
54148 {};
54149
54150 template <typename Boolean>
54151 struct not_
54152 : public integral_constant<bool, !Boolean::value>
54153 {};
54154
54155
54156 template<class T>
54157 struct is_lvalue_reference
54158 : public integral_constant<bool, false>
54159 {};
54160
54161 template<class T>
54162 struct is_lvalue_reference<T&>
54163 : public integral_constant<bool, true>
54164 {};
54165
54166
54167 template<class T>
54168 struct has_trivial_destructor
54169 : public integral_constant<bool, false>
54170 {};
54171
54172
54173 template<class T> struct addr_impl_ref
54174 {
54175 T & v_;
54176 inline addr_impl_ref( T & v ): v_( v ) {}
54177 inline operator T& () const { return v_; }
54178
54179 private:
54180 addr_impl_ref & operator=(const addr_impl_ref &);
54181 };
54182
54183 template<class T> struct addressof_impl
54184 {
54185 static inline T * f( T & v, long )
54186 {
54187 return reinterpret_cast<T*>(
54188 &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
54189 }
54190
54191 static inline T * f( T * v, int )
54192 { return v; }
54193 };
54194
54195 template<class T>
54196 inline T * addressof( T & v )
54197 {
54198 return ::boost::move_detail::addressof_impl<T>::f
54199 ( ::boost::move_detail::addr_impl_ref<T>( v ), 0 );
54200 }
54201
54202 }
54203 }
54204 # 226 "../boost/move/move.hpp"
54205 namespace boost {
54206
54207 namespace move_detail {
54208 template<class T>
54209 struct is_class_or_union
54210 {
54211 struct twochar { char _[2]; };
54212 template <class U>
54213 static char is_class_or_union_tester(void(U::*)(void));
54214 template <class U>
54215 static twochar is_class_or_union_tester(...);
54216 static const bool value = sizeof(is_class_or_union_tester<T>(0)) == sizeof(char);
54217 };
54218 struct empty{};
54219 }
54220
54221
54222
54223
54224
54225
54226 template <class T>
54227 class rv
54228 : public ::boost::move_detail::if_c
54229 < ::boost::move_detail::is_class_or_union<T>::value
54230 , T
54231 , ::boost::move_detail::empty
54232 >::type
54233 {
54234 rv();
54235 ~rv();
54236 rv(rv const&);
54237 void operator=(rv const&);
54238 } __attribute__((__may_alias__));
54239 # 269 "../boost/move/move.hpp"
54240 namespace move_detail {
54241
54242 template <class T>
54243 struct is_rv
54244 : ::boost::move_detail::integral_constant<bool, false>
54245 {};
54246
54247 template <class T>
54248 struct is_rv< rv<T> >
54249 : ::boost::move_detail::integral_constant<bool, true>
54250 {};
54251
54252 template <class T>
54253 struct is_rv< const rv<T> >
54254 : ::boost::move_detail::integral_constant<bool, true>
54255 {};
54256
54257 }
54258
54259
54260
54261
54262
54263
54264 template<class T>
54265 struct has_move_emulation_enabled
54266 : ::boost::move_detail::is_convertible< T, ::boost::rv<T>& >
54267 {};
54268
54269 template<class T>
54270 struct has_move_emulation_enabled<T&>
54271 : ::boost::move_detail::integral_constant<bool, false>
54272 {};
54273
54274 template<class T>
54275 struct has_move_emulation_enabled< ::boost::rv<T> >
54276 : ::boost::move_detail::integral_constant<bool, false>
54277 {};
54278
54279 template <class T>
54280 struct has_move_emulation_enabled_aux
54281 : has_move_emulation_enabled<T> {};
54282
54283 template <class T>
54284 struct has_nothrow_move
54285 : public ::boost::move_detail::integral_constant<bool, false>
54286 {};
54287
54288
54289
54290
54291
54292
54293
54294 template <class T>
54295 inline typename ::boost::move_detail::disable_if<has_move_emulation_enabled_aux<T>, T&>::type move(T& x)
54296 {
54297 return x;
54298 }
54299
54300 template <class T>
54301 inline typename ::boost::move_detail::enable_if<has_move_emulation_enabled<T>, rv<T>&>::type move(T& x)
54302 {
54303 return *static_cast<rv<T>* >(::boost::move_detail::addressof(x));
54304 }
54305
54306 template <class T>
54307 inline typename ::boost::move_detail::enable_if<has_move_emulation_enabled<T>, rv<T>&>::type move(rv<T>& x)
54308 {
54309 return x;
54310 }
54311 # 380 "../boost/move/move.hpp"
54312 template <class T>
54313 inline typename ::boost::move_detail::enable_if< ::boost::move_detail::is_rv<T>, T &>::type
54314 forward(const typename ::boost::move_detail::identity<T>::type &x)
54315 {
54316 return const_cast<T&>(x);
54317 }
54318
54319 template <class T>
54320 inline typename ::boost::move_detail::disable_if< ::boost::move_detail::is_rv<T>, const T &>::type
54321 forward(const typename ::boost::move_detail::identity<T>::type &x)
54322 {
54323 return x;
54324 }
54325 # 438 "../boost/move/move.hpp"
54326 }
54327 # 614 "../boost/move/move.hpp"
54328 namespace boost {
54329 # 627 "../boost/move/move.hpp"
54330 template <class It>
54331 class move_iterator
54332 {
54333 public:
54334 typedef It iterator_type;
54335 typedef typename std::iterator_traits<iterator_type>::value_type value_type;
54336
54337
54338
54339 typedef typename ::boost::move_detail::if_
54340 < ::boost::has_move_emulation_enabled<value_type>
54341 , ::boost::rv<value_type>&
54342 , value_type & >::type reference;
54343
54344 typedef It pointer;
54345 typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
54346 typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
54347
54348 move_iterator()
54349 {}
54350
54351 explicit move_iterator(It i)
54352 : m_it(i)
54353 {}
54354
54355 template <class U>
54356 move_iterator(const move_iterator<U>& u)
54357 : m_it(u.base())
54358 {}
54359
54360 iterator_type base() const
54361 { return m_it; }
54362
54363 reference operator*() const
54364 {
54365
54366 return *m_it;
54367
54368
54369
54370 }
54371
54372 pointer operator->() const
54373 { return m_it; }
54374
54375 move_iterator& operator++()
54376 { ++m_it; return *this; }
54377
54378 move_iterator<iterator_type> operator++(int)
54379 { move_iterator<iterator_type> tmp(*this); ++(*this); return tmp; }
54380
54381 move_iterator& operator--()
54382 { --m_it; return *this; }
54383
54384 move_iterator<iterator_type> operator--(int)
54385 { move_iterator<iterator_type> tmp(*this); --(*this); return tmp; }
54386
54387 move_iterator<iterator_type> operator+ (difference_type n) const
54388 { return move_iterator<iterator_type>(m_it + n); }
54389
54390 move_iterator& operator+=(difference_type n)
54391 { m_it += n; return *this; }
54392
54393 move_iterator<iterator_type> operator- (difference_type n) const
54394 { return move_iterator<iterator_type>(m_it - n); }
54395
54396 move_iterator& operator-=(difference_type n)
54397 { m_it -= n; return *this; }
54398
54399 reference operator[](difference_type n) const
54400 {
54401
54402 return m_it[n];
54403
54404
54405
54406 }
54407
54408 friend bool operator==(const move_iterator& x, const move_iterator& y)
54409 { return x.base() == y.base(); }
54410
54411 friend bool operator!=(const move_iterator& x, const move_iterator& y)
54412 { return x.base() != y.base(); }
54413
54414 friend bool operator< (const move_iterator& x, const move_iterator& y)
54415 { return x.base() < y.base(); }
54416
54417 friend bool operator<=(const move_iterator& x, const move_iterator& y)
54418 { return x.base() <= y.base(); }
54419
54420 friend bool operator> (const move_iterator& x, const move_iterator& y)
54421 { return x.base() > y.base(); }
54422
54423 friend bool operator>=(const move_iterator& x, const move_iterator& y)
54424 { return x.base() >= y.base(); }
54425
54426 friend difference_type operator-(const move_iterator& x, const move_iterator& y)
54427 { return x.base() - y.base(); }
54428
54429 friend move_iterator operator+(difference_type n, const move_iterator& x)
54430 { return move_iterator(x.base() + n); }
54431
54432 private:
54433 It m_it;
54434 };
54435
54436
54437
54438 namespace move_detail {
54439
54440 template <class I>
54441 struct is_move_iterator
54442 : public ::boost::move_detail::integral_constant<bool, false>
54443 {
54444 };
54445
54446 template <class I>
54447 struct is_move_iterator< ::boost::move_iterator<I> >
54448 : public ::boost::move_detail::integral_constant<bool, true>
54449 {
54450 };
54451
54452 }
54453 # 759 "../boost/move/move.hpp"
54454 template<class It>
54455 inline move_iterator<It> make_move_iterator(const It &it)
54456 { return move_iterator<It>(it); }
54457 # 772 "../boost/move/move.hpp"
54458 template <typename C>
54459 class back_move_insert_iterator
54460 : public std::iterator<std::output_iterator_tag, void, void, void, void>
54461 {
54462 C* container_m;
54463
54464 public:
54465 typedef C container_type;
54466
54467 explicit back_move_insert_iterator(C& x) : container_m(&x) { }
54468
54469 back_move_insert_iterator& operator=(typename C::reference x)
54470 { container_m->push_back(boost::move(x)); return *this; }
54471
54472 back_move_insert_iterator& operator*() { return *this; }
54473 back_move_insert_iterator& operator++() { return *this; }
54474 back_move_insert_iterator& operator++(int) { return *this; }
54475 };
54476
54477
54478
54479 template <typename C>
54480 inline back_move_insert_iterator<C> back_move_inserter(C& x)
54481 {
54482 return back_move_insert_iterator<C>(x);
54483 }
54484 # 807 "../boost/move/move.hpp"
54485 template <typename C>
54486 class front_move_insert_iterator
54487 : public std::iterator<std::output_iterator_tag, void, void, void, void>
54488 {
54489 C* container_m;
54490
54491 public:
54492 typedef C container_type;
54493
54494 explicit front_move_insert_iterator(C& x) : container_m(&x) { }
54495
54496 front_move_insert_iterator& operator=(typename C::reference x)
54497 { container_m->push_front(boost::move(x)); return *this; }
54498
54499 front_move_insert_iterator& operator*() { return *this; }
54500 front_move_insert_iterator& operator++() { return *this; }
54501 front_move_insert_iterator& operator++(int) { return *this; }
54502 };
54503
54504
54505
54506 template <typename C>
54507 inline front_move_insert_iterator<C> front_move_inserter(C& x)
54508 {
54509 return front_move_insert_iterator<C>(x);
54510 }
54511
54512
54513
54514
54515
54516
54517 template <typename C>
54518 class move_insert_iterator
54519 : public std::iterator<std::output_iterator_tag, void, void, void, void>
54520 {
54521 C* container_m;
54522 typename C::iterator pos_;
54523
54524 public:
54525 typedef C container_type;
54526
54527 explicit move_insert_iterator(C& x, typename C::iterator pos)
54528 : container_m(&x), pos_(pos)
54529 {}
54530
54531 move_insert_iterator& operator=(typename C::reference x)
54532 {
54533 pos_ = container_m->insert(pos_, ::boost::move(x));
54534 ++pos_;
54535 return *this;
54536 }
54537
54538 move_insert_iterator& operator*() { return *this; }
54539 move_insert_iterator& operator++() { return *this; }
54540 move_insert_iterator& operator++(int) { return *this; }
54541 };
54542
54543
54544
54545 template <typename C>
54546 inline move_insert_iterator<C> move_inserter(C& x, typename C::iterator it)
54547 {
54548 return move_insert_iterator<C>(x, it);
54549 }
54550 # 890 "../boost/move/move.hpp"
54551 template <typename I,
54552 typename O>
54553 O move(I f, I l, O result)
54554 {
54555 while (f != l) {
54556 *result = ::boost::move(*f);
54557 ++f; ++result;
54558 }
54559 return result;
54560 }
54561 # 917 "../boost/move/move.hpp"
54562 template <typename I,
54563 typename O>
54564 O move_backward(I f, I l, O result)
54565 {
54566 while (f != l) {
54567 --l; --result;
54568 *result = ::boost::move(*l);
54569 }
54570 return result;
54571 }
54572 # 944 "../boost/move/move.hpp"
54573 template
54574 <typename I,
54575 typename F>
54576 F uninitialized_move(I f, I l, F r
54577
54578
54579
54580 )
54581 {
54582 typedef typename std::iterator_traits<I>::value_type input_value_type;
54583 while (f != l) {
54584 ::new(static_cast<void*>(&*r)) input_value_type(boost::move(*f));
54585 ++f; ++r;
54586 }
54587 return r;
54588 }
54589 # 979 "../boost/move/move.hpp"
54590 namespace move_detail {
54591
54592 template
54593 <typename I,
54594 typename F>
54595 inline F uninitialized_move_move_iterator(I f, I l, F r
54596
54597 )
54598 {
54599 return ::boost::uninitialized_move(f, l, r);
54600 }
54601 # 1000 "../boost/move/move.hpp"
54602 }
54603
54604 template
54605 <typename I,
54606 typename F>
54607 inline F uninitialized_copy_or_move(I f, I l, F r,
54608 typename ::boost::move_detail::enable_if< move_detail::is_move_iterator<I> >::type* = 0)
54609 {
54610 return ::boost::move_detail::uninitialized_move_move_iterator(f, l, r);
54611 }
54612
54613
54614
54615
54616
54617
54618
54619 namespace move_detail {
54620
54621 template
54622 <typename I,
54623 typename F>
54624 inline F move_move_iterator(I f, I l, F r
54625
54626 )
54627 {
54628 return ::boost::move(f, l, r);
54629 }
54630 # 1039 "../boost/move/move.hpp"
54631 }
54632
54633 template
54634 <typename I,
54635 typename F>
54636 inline F copy_or_move(I f, I l, F r,
54637 typename ::boost::move_detail::enable_if< move_detail::is_move_iterator<I> >::type* = 0)
54638 {
54639 return ::boost::move_detail::move_move_iterator(f, l, r);
54640 }
54641 # 1064 "../boost/move/move.hpp"
54642 template
54643 <typename I,
54644 typename F>
54645 inline F uninitialized_copy_or_move(I f, I l, F r
54646
54647 ,typename ::boost::move_detail::disable_if< move_detail::is_move_iterator<I> >::type* = 0
54648
54649 )
54650 {
54651 return std::uninitialized_copy(f, l, r);
54652 }
54653 # 1087 "../boost/move/move.hpp"
54654 template
54655 <typename I,
54656 typename F>
54657 inline F copy_or_move(I f, I l, F r
54658
54659 ,typename ::boost::move_detail::disable_if< move_detail::is_move_iterator<I> >::type* = 0
54660
54661 )
54662 {
54663 return std::copy(f, l, r);
54664 }
54665 # 1108 "../boost/move/move.hpp"
54666 template <class T>
54667 struct has_trivial_destructor_after_move
54668 : ::boost::move_detail::has_trivial_destructor<T>
54669 {};
54670
54671
54672
54673 namespace move_detail {
54674
54675
54676
54677
54678
54679
54680 template< class T>
54681 struct forward_type
54682 { typedef const T &type; };
54683
54684 template< class T>
54685 struct forward_type< boost::rv<T> >
54686 { typedef T type; };
54687
54688
54689
54690
54691
54692
54693 template< class T > struct is_rvalue_reference : ::boost::move_detail::integral_constant<bool, false> { };
54694
54695
54696
54697 template< class T > struct is_rvalue_reference< boost::rv<T>& >
54698 : ::boost::move_detail::integral_constant<bool, true>
54699 {};
54700
54701 template< class T > struct is_rvalue_reference< const boost::rv<T>& >
54702 : ::boost::move_detail::integral_constant<bool, true>
54703 {};
54704
54705
54706
54707
54708
54709 namespace detail_add_rvalue_reference
54710 {
54711 template< class T
54712 , bool emulation = ::boost::has_move_emulation_enabled<T>::value
54713 , bool rv = ::boost::move_detail::is_rv<T>::value >
54714 struct add_rvalue_reference_impl { typedef T type; };
54715
54716 template< class T, bool emulation>
54717 struct add_rvalue_reference_impl< T, emulation, true > { typedef T & type; };
54718
54719 template< class T, bool rv >
54720 struct add_rvalue_reference_impl< T, true, rv > { typedef ::boost::rv<T>& type; };
54721 }
54722
54723 template< class T >
54724 struct add_rvalue_reference
54725 : detail_add_rvalue_reference::add_rvalue_reference_impl<T>
54726 { };
54727
54728 template< class T >
54729 struct add_rvalue_reference<T &>
54730 { typedef T & type; };
54731
54732
54733
54734 template< class T > struct remove_rvalue_reference { typedef T type; };
54735
54736
54737
54738
54739 template< class T > struct remove_rvalue_reference< rv<T> > { typedef T type; };
54740 template< class T > struct remove_rvalue_reference< const rv<T> > { typedef T type; };
54741 template< class T > struct remove_rvalue_reference< volatile rv<T> > { typedef T type; };
54742 template< class T > struct remove_rvalue_reference< const volatile rv<T> > { typedef T type; };
54743 template< class T > struct remove_rvalue_reference< rv<T>& > { typedef T type; };
54744 template< class T > struct remove_rvalue_reference< const rv<T>& > { typedef T type; };
54745 template< class T > struct remove_rvalue_reference< volatile rv<T>& > { typedef T type; };
54746 template< class T > struct remove_rvalue_reference< const volatile rv<T>& >{ typedef T type; };
54747
54748
54749 template <typename T>
54750 typename boost::move_detail::add_rvalue_reference<T>::type declval();
54751
54752 }
54753 # 1207 "../boost/move/move.hpp"
54754 }
54755 # 20 "../boost/unordered/detail/util.hpp" 2
54756
54757
54758 # 1 "../boost/swap.hpp" 1
54759 # 10 "../boost/swap.hpp"
54760 # 1 "../boost/utility/swap.hpp" 1
54761 # 25 "../boost/utility/swap.hpp"
54762 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
54763 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
54764
54765 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
54766
54767
54768 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
54769 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
54770 # 26 "../boost/utility/swap.hpp" 2
54771
54772 namespace boost_swap_impl
54773 {
54774 template<class T>
54775 void swap_impl(T& left, T& right)
54776 {
54777 using namespace std;
54778 swap(left,right);
54779 }
54780
54781 template<class T, std::size_t N>
54782 void swap_impl(T (& left)[N], T (& right)[N])
54783 {
54784 for (std::size_t i = 0; i < N; ++i)
54785 {
54786 ::boost_swap_impl::swap_impl(left[i], right[i]);
54787 }
54788 }
54789 }
54790
54791 namespace boost
54792 {
54793 template<class T1, class T2>
54794 void swap(T1& left, T2& right)
54795 {
54796 ::boost_swap_impl::swap_impl(left, right);
54797 }
54798 }
54799 # 11 "../boost/swap.hpp" 2
54800 # 23 "../boost/unordered/detail/util.hpp" 2
54801
54802 namespace boost { namespace unordered { namespace detail {
54803
54804 static const float minimum_max_load_factor = 1e-3f;
54805 static const std::size_t default_bucket_count = 11;
54806 struct move_tag {};
54807 struct empty_emplace {};
54808
54809
54810
54811
54812 template <typename I>
54813 struct is_forward :
54814 boost::is_convertible<
54815 typename boost::iterator_traversal<I>::type,
54816 boost::forward_traversal_tag>
54817 {};
54818
54819 template <typename I, typename ReturnType>
54820 struct enable_if_forward :
54821 boost::enable_if_c<
54822 boost::unordered::detail::is_forward<I>::value,
54823 ReturnType>
54824 {};
54825
54826 template <typename I, typename ReturnType>
54827 struct disable_if_forward :
54828 boost::disable_if_c<
54829 boost::unordered::detail::is_forward<I>::value,
54830 ReturnType>
54831 {};
54832 # 67 "../boost/unordered/detail/util.hpp"
54833 template<class T> struct prime_list_template
54834 {
54835 static std::size_t const value[];
54836
54837
54838 static std::ptrdiff_t const length;
54839
54840
54841
54842
54843 };
54844
54845 template<class T>
54846 std::size_t const prime_list_template<T>::value[] = {
54847 5ul, 11ul, 17ul, 29ul, 37ul, 53ul, 67ul, 79ul, 97ul, 131ul, 193ul, 257ul, 389ul, 521ul, 769ul, 1031ul, 1543ul, 2053ul, 3079ul, 6151ul, 12289ul, 24593ul, 49157ul, 98317ul, 196613ul, 393241ul, 786433ul, 1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul, 50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul, 1610612741ul, 3221225473ul, 4294967291ul
54848 };
54849
54850
54851 template<class T>
54852 std::ptrdiff_t const prime_list_template<T>::length
54853 = 40;
54854
54855
54856
54857
54858 typedef prime_list_template<std::size_t> prime_list;
54859
54860
54861 inline std::size_t next_prime(std::size_t num) {
54862 std::size_t const* const prime_list_begin = prime_list::value;
54863 std::size_t const* const prime_list_end = prime_list_begin +
54864 prime_list::length;
54865 std::size_t const* bound =
54866 std::lower_bound(prime_list_begin, prime_list_end, num);
54867 if(bound == prime_list_end)
54868 bound--;
54869 return *bound;
54870 }
54871
54872
54873 inline std::size_t prev_prime(std::size_t num) {
54874 std::size_t const* const prime_list_begin = prime_list::value;
54875 std::size_t const* const prime_list_end = prime_list_begin +
54876 prime_list::length;
54877 std::size_t const* bound =
54878 std::upper_bound(prime_list_begin,prime_list_end, num);
54879 if(bound != prime_list_begin)
54880 bound--;
54881 return *bound;
54882 }
54883
54884
54885
54886
54887
54888
54889 using ::std::distance;
54890 # 136 "../boost/unordered/detail/util.hpp"
54891 template <class I>
54892 inline typename
54893 boost::unordered::detail::enable_if_forward<I, std::size_t>::type
54894 insert_size(I i, I j)
54895 {
54896 return std::distance(i, j);
54897 }
54898
54899 template <class I>
54900 inline typename
54901 boost::unordered::detail::disable_if_forward<I, std::size_t>::type
54902 insert_size(I, I)
54903 {
54904 return 1;
54905 }
54906
54907 template <class I>
54908 inline std::size_t initial_size(I i, I j,
54909 std::size_t num_buckets =
54910 boost::unordered::detail::default_bucket_count)
54911 {
54912
54913 return (std::max)(
54914 boost::unordered::detail::insert_size(i, j) + 1,
54915 num_buckets);
54916 }
54917
54918
54919
54920
54921 template <typename T, int Index>
54922 struct compressed_base : private T
54923 {
54924 compressed_base(T const& x) : T(x) {}
54925 compressed_base(T& x, move_tag) : T(boost::move(x)) {}
54926
54927 T& get() { return *this; }
54928 T const& get() const { return *this; }
54929 };
54930
54931 template <typename T, int Index>
54932 struct uncompressed_base
54933 {
54934 uncompressed_base(T const& x) : value_(x) {}
54935 uncompressed_base(T& x, move_tag) : value_(boost::move(x)) {}
54936
54937 T& get() { return value_; }
54938 T const& get() const { return value_; }
54939 private:
54940 T value_;
54941 };
54942
54943 template <typename T, int Index>
54944 struct generate_base
54945 : boost::detail::if_true<
54946 boost::is_empty<T>::value
54947 >:: template then<
54948 boost::unordered::detail::compressed_base<T, Index>,
54949 boost::unordered::detail::uncompressed_base<T, Index>
54950 >
54951 {};
54952
54953 template <typename T1, typename T2>
54954 struct compressed
54955 : private boost::unordered::detail::generate_base<T1, 1>::type,
54956 private boost::unordered::detail::generate_base<T2, 2>::type
54957 {
54958 typedef typename generate_base<T1, 1>::type base1;
54959 typedef typename generate_base<T2, 2>::type base2;
54960
54961 typedef T1 first_type;
54962 typedef T2 second_type;
54963
54964 first_type& first() {
54965 return static_cast<base1*>(this)->get();
54966 }
54967
54968 first_type const& first() const {
54969 return static_cast<base1 const*>(this)->get();
54970 }
54971
54972 second_type& second() {
54973 return static_cast<base2*>(this)->get();
54974 }
54975
54976 second_type const& second() const {
54977 return static_cast<base2 const*>(this)->get();
54978 }
54979
54980 template <typename First, typename Second>
54981 compressed(First const& x1, Second const& x2)
54982 : base1(x1), base2(x2) {}
54983
54984 compressed(compressed const& x)
54985 : base1(x.first()), base2(x.second()) {}
54986
54987 compressed(compressed& x, move_tag m)
54988 : base1(x.first(), m), base2(x.second(), m) {}
54989
54990 void assign(compressed const& x)
54991 {
54992 first() = x.first();
54993 second() = x.second();
54994 }
54995
54996 void move_assign(compressed& x)
54997 {
54998 first() = boost::move(x.first());
54999 second() = boost::move(x.second());
55000 }
55001
55002 void swap(compressed& x)
55003 {
55004 boost::swap(first(), x.first());
55005 boost::swap(second(), x.second());
55006 }
55007
55008 private:
55009
55010
55011 compressed& operator=(compressed const&);
55012 };
55013 }}}
55014 # 15 "../boost/unordered/detail/buckets.hpp" 2
55015
55016 # 1 "../boost/unordered/detail/emplace_args.hpp" 1
55017 # 18 "../boost/unordered/detail/emplace_args.hpp"
55018 # 1 "../boost/preprocessor/dec.hpp" 1
55019 # 19 "../boost/unordered/detail/emplace_args.hpp" 2
55020
55021
55022
55023
55024
55025 # 1 "../boost/tuple/tuple.hpp" 1
55026 # 32 "../boost/tuple/tuple.hpp"
55027 # 1 "../boost/ref.hpp" 1
55028 # 29 "../boost/ref.hpp"
55029 namespace boost
55030 {
55031
55032 template<class T> class reference_wrapper
55033 {
55034 public:
55035 typedef T type;
55036
55037
55038
55039
55040
55041
55042
55043 explicit reference_wrapper(T& t): t_(boost::addressof(t)) {}
55044
55045
55046
55047 operator T& () const { return *t_; }
55048
55049 T& get() const { return *t_; }
55050
55051 T* get_pointer() const { return t_; }
55052
55053 private:
55054
55055 T* t_;
55056 };
55057
55058
55059
55060
55061
55062
55063
55064 template<class T> inline reference_wrapper<T> const ref(T & t)
55065 {
55066 return reference_wrapper<T>(t);
55067 }
55068
55069 template<class T> inline reference_wrapper<T const> const cref(T const & t)
55070 {
55071 return reference_wrapper<T const>(t);
55072 }
55073
55074
55075
55076
55077
55078 template<typename T>
55079 class is_reference_wrapper
55080 : public mpl::false_
55081 {
55082 };
55083
55084 template<typename T>
55085 class unwrap_reference
55086 {
55087 public:
55088 typedef T type;
55089 };
55090 # 106 "../boost/ref.hpp"
55091 template<typename T> class is_reference_wrapper< reference_wrapper<T> > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> > { public: typedef T type; };
55092
55093 template<typename T> class is_reference_wrapper< reference_wrapper<T> const > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> const > { public: typedef T type; };
55094 template<typename T> class is_reference_wrapper< reference_wrapper<T> volatile > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> volatile > { public: typedef T type; };
55095 template<typename T> class is_reference_wrapper< reference_wrapper<T> const volatile > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> const volatile > { public: typedef T type; };
55096 # 176 "../boost/ref.hpp"
55097 template <class T> inline typename unwrap_reference<T>::type&
55098 unwrap_ref(T& t)
55099 {
55100 return t;
55101 }
55102
55103 template<class T> inline T* get_pointer( reference_wrapper<T> const & r )
55104 {
55105 return r.get_pointer();
55106 }
55107
55108 }
55109 # 33 "../boost/tuple/tuple.hpp" 2
55110 # 1 "../boost/tuple/detail/tuple_basic.hpp" 1
55111 # 38 "../boost/tuple/detail/tuple_basic.hpp"
55112 # 1 "../boost/type_traits/cv_traits.hpp" 1
55113 # 16 "../boost/type_traits/cv_traits.hpp"
55114 # 1 "../boost/type_traits/add_volatile.hpp" 1
55115 # 16 "../boost/type_traits/add_volatile.hpp"
55116 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
55117 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
55118 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
55119 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
55120 # 17 "../boost/type_traits/add_volatile.hpp" 2
55121
55122 namespace boost {
55123 # 33 "../boost/type_traits/add_volatile.hpp"
55124 template< typename T > struct add_volatile { public: typedef T volatile type; };
55125
55126
55127
55128
55129
55130
55131 template< typename T > struct add_volatile<T&> { public: typedef T& type; };
55132
55133
55134 }
55135
55136 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
55137 # 46 "../boost/type_traits/add_volatile.hpp" 2
55138 # 17 "../boost/type_traits/cv_traits.hpp" 2
55139 # 1 "../boost/type_traits/add_cv.hpp" 1
55140 # 17 "../boost/type_traits/add_cv.hpp"
55141 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
55142 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
55143 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
55144 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
55145 # 18 "../boost/type_traits/add_cv.hpp" 2
55146
55147 namespace boost {
55148 # 34 "../boost/type_traits/add_cv.hpp"
55149 template< typename T > struct add_cv { public: typedef T const volatile type; };
55150
55151
55152
55153
55154
55155
55156 template< typename T > struct add_cv<T&> { public: typedef T& type; };
55157
55158
55159 }
55160
55161 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
55162 # 47 "../boost/type_traits/add_cv.hpp" 2
55163 # 18 "../boost/type_traits/cv_traits.hpp" 2
55164
55165
55166
55167 # 1 "../boost/type_traits/remove_volatile.hpp" 1
55168 # 20 "../boost/type_traits/remove_volatile.hpp"
55169 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
55170 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
55171
55172 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
55173
55174
55175 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
55176 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
55177 # 21 "../boost/type_traits/remove_volatile.hpp" 2
55178
55179
55180
55181
55182
55183
55184 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
55185 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
55186 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
55187 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
55188 # 28 "../boost/type_traits/remove_volatile.hpp" 2
55189
55190 namespace boost {
55191
55192
55193
55194 namespace detail {
55195
55196 template <typename T, bool is_const>
55197 struct remove_volatile_helper
55198 {
55199 typedef T type;
55200 };
55201
55202 template <typename T>
55203 struct remove_volatile_helper<T,true>
55204 {
55205 typedef T const type;
55206 };
55207
55208 template <typename T>
55209 struct remove_volatile_impl
55210 {
55211 typedef typename remove_volatile_helper<
55212 typename cv_traits_imp<T*>::unqualified_type
55213 , ::boost::is_const<T>::value
55214 >::type type;
55215 };
55216 # 67 "../boost/type_traits/remove_volatile.hpp"
55217 }
55218
55219
55220
55221 template< typename T > struct remove_volatile { public: typedef typename boost::detail::remove_volatile_impl<T>::type type; };
55222 template< typename T > struct remove_volatile<T&> { public: typedef T& type; };
55223
55224 template< typename T, std::size_t N > struct remove_volatile<T volatile[N]> { public: typedef T type[N]; };
55225 template< typename T, std::size_t N > struct remove_volatile<T const volatile[N]> { public: typedef T const type[N]; };
55226 # 84 "../boost/type_traits/remove_volatile.hpp"
55227 }
55228
55229 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
55230 # 87 "../boost/type_traits/remove_volatile.hpp" 2
55231 # 22 "../boost/type_traits/cv_traits.hpp" 2
55232 # 39 "../boost/tuple/detail/tuple_basic.hpp" 2
55233
55234
55235
55236
55237
55238 namespace boost {
55239 namespace tuples {
55240
55241
55242 struct null_type {};
55243
55244
55245 namespace detail {
55246 inline const null_type cnull() { return null_type(); }
55247
55248
55249
55250
55251
55252 template <bool If, class Then, class Else> struct IF { typedef Then RET; };
55253
55254 template <class Then, class Else> struct IF<false, Then, Else> {
55255 typedef Else RET;
55256 };
55257
55258 }
55259
55260
55261 template <class HT, class TT> struct cons;
55262
55263
55264
55265 template <
55266 class T0 = null_type, class T1 = null_type, class T2 = null_type,
55267 class T3 = null_type, class T4 = null_type, class T5 = null_type,
55268 class T6 = null_type, class T7 = null_type, class T8 = null_type,
55269 class T9 = null_type>
55270 class tuple;
55271
55272
55273 template<class T> struct length;
55274
55275
55276
55277 namespace detail {
55278
55279
55280
55281 template<class T>
55282 class generate_error;
55283
55284 template<int N>
55285 struct drop_front {
55286 template<class Tuple>
55287 struct apply {
55288 typedef typename drop_front<N-1>::template
55289 apply<Tuple> next;
55290 typedef typename next::type::tail_type type;
55291 static const type& call(const Tuple& tup) {
55292 return next::call(tup).tail;
55293 }
55294 };
55295 };
55296
55297 template<>
55298 struct drop_front<0> {
55299 template<class Tuple>
55300 struct apply {
55301 typedef Tuple type;
55302 static const type& call(const Tuple& tup) {
55303 return tup;
55304 }
55305 };
55306 };
55307
55308 }
55309 # 124 "../boost/tuple/detail/tuple_basic.hpp"
55310 template<int N, class T>
55311 struct element
55312 {
55313 typedef typename detail::drop_front<N>::template
55314 apply<T>::type::head_type type;
55315 };
55316
55317 template<int N, class T>
55318 struct element<N, const T>
55319 {
55320 private:
55321 typedef typename detail::drop_front<N>::template
55322 apply<T>::type::head_type unqualified_type;
55323 public:
55324
55325
55326
55327 typedef typename boost::add_const<unqualified_type>::type type;
55328
55329 };
55330 # 184 "../boost/tuple/detail/tuple_basic.hpp"
55331 template <class T> struct access_traits {
55332 typedef const T& const_type;
55333 typedef T& non_const_type;
55334
55335 typedef const typename boost::remove_cv<T>::type& parameter_type;
55336
55337
55338
55339
55340
55341
55342 };
55343
55344 template <class T> struct access_traits<T&> {
55345
55346 typedef T& const_type;
55347 typedef T& non_const_type;
55348
55349 typedef T& parameter_type;
55350 };
55351
55352
55353
55354 template<int N, class HT, class TT>
55355 inline typename access_traits<
55356 typename element<N, cons<HT, TT> >::type
55357 >::non_const_type
55358 get(cons<HT, TT>& c ) {
55359 typedef typename detail::drop_front<N>::template
55360 apply<cons<HT, TT> > impl;
55361 typedef typename impl::type cons_element;
55362 return const_cast<cons_element&>(impl::call(c)).head;
55363 }
55364
55365
55366
55367
55368 template<int N, class HT, class TT>
55369 inline typename access_traits<
55370 typename element<N, cons<HT, TT> >::type
55371 >::const_type
55372 get(const cons<HT, TT>& c ) {
55373 typedef typename detail::drop_front<N>::template
55374 apply<cons<HT, TT> > impl;
55375 typedef typename impl::type cons_element;
55376 return impl::call(c).head;
55377 }
55378
55379
55380 namespace detail {
55381
55382
55383
55384
55385
55386
55387
55388 template <class T> class non_storeable_type {
55389 non_storeable_type();
55390 };
55391
55392 template <class T> struct wrap_non_storeable_type {
55393 typedef typename IF<
55394 ::boost::is_function<T>::value, non_storeable_type<T>, T
55395 >::RET type;
55396 };
55397 template <> struct wrap_non_storeable_type<void> {
55398 typedef non_storeable_type<void> type;
55399 };
55400
55401 }
55402
55403 template <class HT, class TT>
55404 struct cons {
55405
55406 typedef HT head_type;
55407 typedef TT tail_type;
55408
55409 typedef typename
55410 detail::wrap_non_storeable_type<head_type>::type stored_head_type;
55411
55412 stored_head_type head;
55413 tail_type tail;
55414
55415 typename access_traits<stored_head_type>::non_const_type
55416 get_head() { return head; }
55417
55418 typename access_traits<tail_type>::non_const_type
55419 get_tail() { return tail; }
55420
55421 typename access_traits<stored_head_type>::const_type
55422 get_head() const { return head; }
55423
55424 typename access_traits<tail_type>::const_type
55425 get_tail() const { return tail; }
55426
55427 cons() : head(), tail() {}
55428
55429
55430
55431
55432
55433
55434
55435 cons(typename access_traits<stored_head_type>::parameter_type h,
55436 const tail_type& t)
55437 : head (h), tail(t) {}
55438
55439 template <class T1, class T2, class T3, class T4, class T5,
55440 class T6, class T7, class T8, class T9, class T10>
55441 cons( T1& t1, T2& t2, T3& t3, T4& t4, T5& t5,
55442 T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )
55443 : head (t1),
55444 tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())
55445 {}
55446
55447 template <class T2, class T3, class T4, class T5,
55448 class T6, class T7, class T8, class T9, class T10>
55449 cons( const null_type& , T2& t2, T3& t3, T4& t4, T5& t5,
55450 T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )
55451 : head (),
55452 tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())
55453 {}
55454
55455
55456 template <class HT2, class TT2>
55457 cons( const cons<HT2, TT2>& u ) : head(u.head), tail(u.tail) {}
55458
55459 template <class HT2, class TT2>
55460 cons& operator=( const cons<HT2, TT2>& u ) {
55461 head=u.head; tail=u.tail; return *this;
55462 }
55463
55464
55465
55466 cons& operator=(const cons& u) {
55467 head = u.head; tail = u.tail; return *this;
55468 }
55469
55470 template <class T1, class T2>
55471 cons& operator=( const std::pair<T1, T2>& u ) {
55472 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((length<cons>::value == 2) == 0 ? false : true) >)> boost_static_assert_typedef_325;
55473 head = u.first; tail.head = u.second; return *this;
55474 }
55475
55476
55477 template <int N>
55478 typename access_traits<
55479 typename element<N, cons<HT, TT> >::type
55480 >::non_const_type
55481 get() {
55482 return boost::tuples::get<N>(*this);
55483 }
55484
55485 template <int N>
55486 typename access_traits<
55487 typename element<N, cons<HT, TT> >::type
55488 >::const_type
55489 get() const {
55490 return boost::tuples::get<N>(*this);
55491 }
55492 };
55493
55494 template <class HT>
55495 struct cons<HT, null_type> {
55496
55497 typedef HT head_type;
55498 typedef null_type tail_type;
55499 typedef cons<HT, null_type> self_type;
55500
55501 typedef typename
55502 detail::wrap_non_storeable_type<head_type>::type stored_head_type;
55503 stored_head_type head;
55504
55505 typename access_traits<stored_head_type>::non_const_type
55506 get_head() { return head; }
55507
55508 null_type get_tail() { return null_type(); }
55509
55510 typename access_traits<stored_head_type>::const_type
55511 get_head() const { return head; }
55512
55513 const null_type get_tail() const { return null_type(); }
55514
55515
55516 cons() : head() {}
55517
55518 cons(typename access_traits<stored_head_type>::parameter_type h,
55519 const null_type& = null_type())
55520 : head (h) {}
55521
55522 template<class T1>
55523 cons(T1& t1, const null_type&, const null_type&, const null_type&,
55524 const null_type&, const null_type&, const null_type&,
55525 const null_type&, const null_type&, const null_type&)
55526 : head (t1) {}
55527
55528 cons(const null_type&,
55529 const null_type&, const null_type&, const null_type&,
55530 const null_type&, const null_type&, const null_type&,
55531 const null_type&, const null_type&, const null_type&)
55532 : head () {}
55533
55534 template <class HT2>
55535 cons( const cons<HT2, null_type>& u ) : head(u.head) {}
55536
55537 template <class HT2>
55538 cons& operator=(const cons<HT2, null_type>& u )
55539 { head = u.head; return *this; }
55540
55541
55542
55543 cons& operator=(const cons& u) { head = u.head; return *this; }
55544
55545 template <int N>
55546 typename access_traits<
55547 typename element<N, self_type>::type
55548 >::non_const_type
55549 get() {
55550 return boost::tuples::get<N>(*this);
55551 }
55552
55553 template <int N>
55554 typename access_traits<
55555 typename element<N, self_type>::type
55556 >::const_type
55557 get() const {
55558 return boost::tuples::get<N>(*this);
55559 }
55560
55561 };
55562
55563
55564
55565 template<class T>
55566 struct length {
55567 static const int value = 1 + length<typename T::tail_type>::value;
55568 };
55569
55570 template<>
55571 struct length<tuple<> > {
55572 static const int value = 0;
55573 };
55574
55575 template<>
55576 struct length<tuple<> const> {
55577 static const int value = 0;
55578 };
55579
55580 template<>
55581 struct length<null_type> {
55582 static const int value = 0;
55583 };
55584
55585 template<>
55586 struct length<null_type const> {
55587 static const int value = 0;
55588 };
55589
55590 namespace detail {
55591
55592
55593 template <class T0, class T1, class T2, class T3, class T4,
55594 class T5, class T6, class T7, class T8, class T9>
55595 struct map_tuple_to_cons
55596 {
55597 typedef cons<T0,
55598 typename map_tuple_to_cons<T1, T2, T3, T4, T5,
55599 T6, T7, T8, T9, null_type>::type
55600 > type;
55601 };
55602
55603
55604 template <>
55605 struct map_tuple_to_cons<null_type, null_type, null_type, null_type, null_type, null_type, null_type, null_type, null_type, null_type>
55606 {
55607 typedef null_type type;
55608 };
55609
55610 }
55611
55612
55613
55614 template <class T0, class T1, class T2, class T3, class T4,
55615 class T5, class T6, class T7, class T8, class T9>
55616
55617 class tuple :
55618 public detail::map_tuple_to_cons<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type
55619 {
55620 public:
55621 typedef typename
55622 detail::map_tuple_to_cons<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type inherited;
55623 typedef typename inherited::head_type head_type;
55624 typedef typename inherited::tail_type tail_type;
55625
55626
55627
55628 tuple() {}
55629
55630 tuple(typename access_traits<T0>::parameter_type t0)
55631 : inherited(t0, detail::cnull(), detail::cnull(), detail::cnull(),
55632 detail::cnull(), detail::cnull(), detail::cnull(),
55633 detail::cnull(), detail::cnull(), detail::cnull()) {}
55634
55635 tuple(typename access_traits<T0>::parameter_type t0,
55636 typename access_traits<T1>::parameter_type t1)
55637 : inherited(t0, t1, detail::cnull(), detail::cnull(),
55638 detail::cnull(), detail::cnull(), detail::cnull(),
55639 detail::cnull(), detail::cnull(), detail::cnull()) {}
55640
55641 tuple(typename access_traits<T0>::parameter_type t0,
55642 typename access_traits<T1>::parameter_type t1,
55643 typename access_traits<T2>::parameter_type t2)
55644 : inherited(t0, t1, t2, detail::cnull(), detail::cnull(),
55645 detail::cnull(), detail::cnull(), detail::cnull(),
55646 detail::cnull(), detail::cnull()) {}
55647
55648 tuple(typename access_traits<T0>::parameter_type t0,
55649 typename access_traits<T1>::parameter_type t1,
55650 typename access_traits<T2>::parameter_type t2,
55651 typename access_traits<T3>::parameter_type t3)
55652 : inherited(t0, t1, t2, t3, detail::cnull(), detail::cnull(),
55653 detail::cnull(), detail::cnull(), detail::cnull(),
55654 detail::cnull()) {}
55655
55656 tuple(typename access_traits<T0>::parameter_type t0,
55657 typename access_traits<T1>::parameter_type t1,
55658 typename access_traits<T2>::parameter_type t2,
55659 typename access_traits<T3>::parameter_type t3,
55660 typename access_traits<T4>::parameter_type t4)
55661 : inherited(t0, t1, t2, t3, t4, detail::cnull(), detail::cnull(),
55662 detail::cnull(), detail::cnull(), detail::cnull()) {}
55663
55664 tuple(typename access_traits<T0>::parameter_type t0,
55665 typename access_traits<T1>::parameter_type t1,
55666 typename access_traits<T2>::parameter_type t2,
55667 typename access_traits<T3>::parameter_type t3,
55668 typename access_traits<T4>::parameter_type t4,
55669 typename access_traits<T5>::parameter_type t5)
55670 : inherited(t0, t1, t2, t3, t4, t5, detail::cnull(), detail::cnull(),
55671 detail::cnull(), detail::cnull()) {}
55672
55673 tuple(typename access_traits<T0>::parameter_type t0,
55674 typename access_traits<T1>::parameter_type t1,
55675 typename access_traits<T2>::parameter_type t2,
55676 typename access_traits<T3>::parameter_type t3,
55677 typename access_traits<T4>::parameter_type t4,
55678 typename access_traits<T5>::parameter_type t5,
55679 typename access_traits<T6>::parameter_type t6)
55680 : inherited(t0, t1, t2, t3, t4, t5, t6, detail::cnull(),
55681 detail::cnull(), detail::cnull()) {}
55682
55683 tuple(typename access_traits<T0>::parameter_type t0,
55684 typename access_traits<T1>::parameter_type t1,
55685 typename access_traits<T2>::parameter_type t2,
55686 typename access_traits<T3>::parameter_type t3,
55687 typename access_traits<T4>::parameter_type t4,
55688 typename access_traits<T5>::parameter_type t5,
55689 typename access_traits<T6>::parameter_type t6,
55690 typename access_traits<T7>::parameter_type t7)
55691 : inherited(t0, t1, t2, t3, t4, t5, t6, t7, detail::cnull(),
55692 detail::cnull()) {}
55693
55694 tuple(typename access_traits<T0>::parameter_type t0,
55695 typename access_traits<T1>::parameter_type t1,
55696 typename access_traits<T2>::parameter_type t2,
55697 typename access_traits<T3>::parameter_type t3,
55698 typename access_traits<T4>::parameter_type t4,
55699 typename access_traits<T5>::parameter_type t5,
55700 typename access_traits<T6>::parameter_type t6,
55701 typename access_traits<T7>::parameter_type t7,
55702 typename access_traits<T8>::parameter_type t8)
55703 : inherited(t0, t1, t2, t3, t4, t5, t6, t7, t8, detail::cnull()) {}
55704
55705 tuple(typename access_traits<T0>::parameter_type t0,
55706 typename access_traits<T1>::parameter_type t1,
55707 typename access_traits<T2>::parameter_type t2,
55708 typename access_traits<T3>::parameter_type t3,
55709 typename access_traits<T4>::parameter_type t4,
55710 typename access_traits<T5>::parameter_type t5,
55711 typename access_traits<T6>::parameter_type t6,
55712 typename access_traits<T7>::parameter_type t7,
55713 typename access_traits<T8>::parameter_type t8,
55714 typename access_traits<T9>::parameter_type t9)
55715 : inherited(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) {}
55716
55717
55718 template<class U1, class U2>
55719 tuple(const cons<U1, U2>& p) : inherited(p) {}
55720
55721 template <class U1, class U2>
55722 tuple& operator=(const cons<U1, U2>& k) {
55723 inherited::operator=(k);
55724 return *this;
55725 }
55726
55727 template <class U1, class U2>
55728 tuple& operator=(const std::pair<U1, U2>& k) {
55729 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((length<tuple>::value == 2) == 0 ? false : true) >)> boost_static_assert_typedef_582;
55730 this->head = k.first;
55731 this->tail.head = k.second;
55732 return *this;
55733 }
55734
55735 };
55736
55737
55738 template <>
55739 class tuple<null_type, null_type, null_type, null_type, null_type, null_type, null_type, null_type, null_type, null_type> :
55740 public null_type
55741 {
55742 public:
55743 typedef null_type inherited;
55744 };
55745
55746
55747
55748 namespace detail {
55749
55750 struct swallow_assign;
55751 typedef void (detail::swallow_assign::*ignore_t)();
55752 struct swallow_assign {
55753 swallow_assign(ignore_t(*)(ignore_t)) {}
55754 template<typename T>
55755 swallow_assign const& operator=(const T&) const {
55756 return *this;
55757 }
55758 };
55759
55760
55761 }
55762
55763
55764 inline detail::ignore_t ignore(detail::ignore_t) { return 0; }
55765 # 636 "../boost/tuple/detail/tuple_basic.hpp"
55766 template<class T>
55767 struct make_tuple_traits {
55768 typedef T type;
55769
55770
55771
55772
55773
55774
55775
55776 };
55777 # 660 "../boost/tuple/detail/tuple_basic.hpp"
55778 template<class T>
55779 struct make_tuple_traits<T&> {
55780 typedef typename
55781 detail::generate_error<T&>::
55782 do_not_use_with_reference_type error;
55783 };
55784
55785
55786
55787
55788
55789 template<class T, int n> struct make_tuple_traits <T[n]> {
55790 typedef const T (&type)[n];
55791 };
55792
55793 template<class T, int n>
55794 struct make_tuple_traits<const T[n]> {
55795 typedef const T (&type)[n];
55796 };
55797
55798 template<class T, int n> struct make_tuple_traits<volatile T[n]> {
55799 typedef const volatile T (&type)[n];
55800 };
55801
55802 template<class T, int n>
55803 struct make_tuple_traits<const volatile T[n]> {
55804 typedef const volatile T (&type)[n];
55805 };
55806
55807 template<class T>
55808 struct make_tuple_traits<reference_wrapper<T> >{
55809 typedef T& type;
55810 };
55811
55812 template<class T>
55813 struct make_tuple_traits<const reference_wrapper<T> >{
55814 typedef T& type;
55815 };
55816
55817 template<>
55818 struct make_tuple_traits<detail::ignore_t(detail::ignore_t)> {
55819 typedef detail::swallow_assign type;
55820 };
55821
55822
55823
55824 namespace detail {
55825
55826
55827
55828 template <
55829 class T0 = null_type, class T1 = null_type, class T2 = null_type,
55830 class T3 = null_type, class T4 = null_type, class T5 = null_type,
55831 class T6 = null_type, class T7 = null_type, class T8 = null_type,
55832 class T9 = null_type
55833 >
55834 struct make_tuple_mapper {
55835 typedef
55836 tuple<typename make_tuple_traits<T0>::type,
55837 typename make_tuple_traits<T1>::type,
55838 typename make_tuple_traits<T2>::type,
55839 typename make_tuple_traits<T3>::type,
55840 typename make_tuple_traits<T4>::type,
55841 typename make_tuple_traits<T5>::type,
55842 typename make_tuple_traits<T6>::type,
55843 typename make_tuple_traits<T7>::type,
55844 typename make_tuple_traits<T8>::type,
55845 typename make_tuple_traits<T9>::type> type;
55846 };
55847
55848 }
55849
55850
55851 inline tuple<> make_tuple() {
55852 return tuple<>();
55853 }
55854
55855 template<class T0>
55856 inline typename detail::make_tuple_mapper<T0>::type
55857 make_tuple(const T0& t0) {
55858 typedef typename detail::make_tuple_mapper<T0>::type t;
55859 return t(t0);
55860 }
55861
55862 template<class T0, class T1>
55863 inline typename detail::make_tuple_mapper<T0, T1>::type
55864 make_tuple(const T0& t0, const T1& t1) {
55865 typedef typename detail::make_tuple_mapper<T0, T1>::type t;
55866 return t(t0, t1);
55867 }
55868
55869 template<class T0, class T1, class T2>
55870 inline typename detail::make_tuple_mapper<T0, T1, T2>::type
55871 make_tuple(const T0& t0, const T1& t1, const T2& t2) {
55872 typedef typename detail::make_tuple_mapper<T0, T1, T2>::type t;
55873 return t(t0, t1, t2);
55874 }
55875
55876 template<class T0, class T1, class T2, class T3>
55877 inline typename detail::make_tuple_mapper<T0, T1, T2, T3>::type
55878 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3) {
55879 typedef typename detail::make_tuple_mapper<T0, T1, T2, T3>::type t;
55880 return t(t0, t1, t2, t3);
55881 }
55882
55883 template<class T0, class T1, class T2, class T3, class T4>
55884 inline typename detail::make_tuple_mapper<T0, T1, T2, T3, T4>::type
55885 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
55886 const T4& t4) {
55887 typedef typename detail::make_tuple_mapper<T0, T1, T2, T3, T4>::type t;
55888 return t(t0, t1, t2, t3, t4);
55889 }
55890
55891 template<class T0, class T1, class T2, class T3, class T4, class T5>
55892 inline typename detail::make_tuple_mapper<T0, T1, T2, T3, T4, T5>::type
55893 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
55894 const T4& t4, const T5& t5) {
55895 typedef typename detail::make_tuple_mapper<T0, T1, T2, T3, T4, T5>::type t;
55896 return t(t0, t1, t2, t3, t4, t5);
55897 }
55898
55899 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
55900 inline typename detail::make_tuple_mapper<T0, T1, T2, T3, T4, T5, T6>::type
55901 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
55902 const T4& t4, const T5& t5, const T6& t6) {
55903 typedef typename detail::make_tuple_mapper
55904 <T0, T1, T2, T3, T4, T5, T6>::type t;
55905 return t(t0, t1, t2, t3, t4, t5, t6);
55906 }
55907
55908 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
55909 class T7>
55910 inline typename detail::make_tuple_mapper<T0, T1, T2, T3, T4, T5, T6, T7>::type
55911 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
55912 const T4& t4, const T5& t5, const T6& t6, const T7& t7) {
55913 typedef typename detail::make_tuple_mapper
55914 <T0, T1, T2, T3, T4, T5, T6, T7>::type t;
55915 return t(t0, t1, t2, t3, t4, t5, t6, t7);
55916 }
55917
55918 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
55919 class T7, class T8>
55920 inline typename detail::make_tuple_mapper
55921 <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type
55922 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
55923 const T4& t4, const T5& t5, const T6& t6, const T7& t7,
55924 const T8& t8) {
55925 typedef typename detail::make_tuple_mapper
55926 <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type t;
55927 return t(t0, t1, t2, t3, t4, t5, t6, t7, t8);
55928 }
55929
55930 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
55931 class T7, class T8, class T9>
55932 inline typename detail::make_tuple_mapper
55933 <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type
55934 make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
55935 const T4& t4, const T5& t5, const T6& t6, const T7& t7,
55936 const T8& t8, const T9& t9) {
55937 typedef typename detail::make_tuple_mapper
55938 <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type t;
55939 return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
55940 }
55941
55942 namespace detail {
55943
55944 template<class T>
55945 struct tie_traits {
55946 typedef T& type;
55947 };
55948
55949 template<>
55950 struct tie_traits<ignore_t(ignore_t)> {
55951 typedef swallow_assign type;
55952 };
55953
55954 template<>
55955 struct tie_traits<void> {
55956 typedef null_type type;
55957 };
55958
55959 template <
55960 class T0 = void, class T1 = void, class T2 = void,
55961 class T3 = void, class T4 = void, class T5 = void,
55962 class T6 = void, class T7 = void, class T8 = void,
55963 class T9 = void
55964 >
55965 struct tie_mapper {
55966 typedef
55967 tuple<typename tie_traits<T0>::type,
55968 typename tie_traits<T1>::type,
55969 typename tie_traits<T2>::type,
55970 typename tie_traits<T3>::type,
55971 typename tie_traits<T4>::type,
55972 typename tie_traits<T5>::type,
55973 typename tie_traits<T6>::type,
55974 typename tie_traits<T7>::type,
55975 typename tie_traits<T8>::type,
55976 typename tie_traits<T9>::type> type;
55977 };
55978
55979 }
55980
55981
55982 template<class T0>
55983 inline typename detail::tie_mapper<T0>::type
55984 tie(T0& t0) {
55985 typedef typename detail::tie_mapper<T0>::type t;
55986 return t(t0);
55987 }
55988
55989 template<class T0, class T1>
55990 inline typename detail::tie_mapper<T0, T1>::type
55991 tie(T0& t0, T1& t1) {
55992 typedef typename detail::tie_mapper<T0, T1>::type t;
55993 return t(t0, t1);
55994 }
55995
55996 template<class T0, class T1, class T2>
55997 inline typename detail::tie_mapper<T0, T1, T2>::type
55998 tie(T0& t0, T1& t1, T2& t2) {
55999 typedef typename detail::tie_mapper<T0, T1, T2>::type t;
56000 return t(t0, t1, t2);
56001 }
56002
56003 template<class T0, class T1, class T2, class T3>
56004 inline typename detail::tie_mapper<T0, T1, T2, T3>::type
56005 tie(T0& t0, T1& t1, T2& t2, T3& t3) {
56006 typedef typename detail::tie_mapper<T0, T1, T2, T3>::type t;
56007 return t(t0, t1, t2, t3);
56008 }
56009
56010 template<class T0, class T1, class T2, class T3, class T4>
56011 inline typename detail::tie_mapper<T0, T1, T2, T3, T4>::type
56012 tie(T0& t0, T1& t1, T2& t2, T3& t3,
56013 T4& t4) {
56014 typedef typename detail::tie_mapper<T0, T1, T2, T3, T4>::type t;
56015 return t(t0, t1, t2, t3, t4);
56016 }
56017
56018 template<class T0, class T1, class T2, class T3, class T4, class T5>
56019 inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type
56020 tie(T0& t0, T1& t1, T2& t2, T3& t3,
56021 T4& t4, T5& t5) {
56022 typedef typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type t;
56023 return t(t0, t1, t2, t3, t4, t5);
56024 }
56025
56026 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
56027 inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6>::type
56028 tie(T0& t0, T1& t1, T2& t2, T3& t3,
56029 T4& t4, T5& t5, T6& t6) {
56030 typedef typename detail::tie_mapper
56031 <T0, T1, T2, T3, T4, T5, T6>::type t;
56032 return t(t0, t1, t2, t3, t4, t5, t6);
56033 }
56034
56035 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
56036 class T7>
56037 inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6, T7>::type
56038 tie(T0& t0, T1& t1, T2& t2, T3& t3,
56039 T4& t4, T5& t5, T6& t6, T7& t7) {
56040 typedef typename detail::tie_mapper
56041 <T0, T1, T2, T3, T4, T5, T6, T7>::type t;
56042 return t(t0, t1, t2, t3, t4, t5, t6, t7);
56043 }
56044
56045 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
56046 class T7, class T8>
56047 inline typename detail::tie_mapper
56048 <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type
56049 tie(T0& t0, T1& t1, T2& t2, T3& t3,
56050 T4& t4, T5& t5, T6& t6, T7& t7,
56051 T8& t8) {
56052 typedef typename detail::tie_mapper
56053 <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type t;
56054 return t(t0, t1, t2, t3, t4, t5, t6, t7, t8);
56055 }
56056
56057 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
56058 class T7, class T8, class T9>
56059 inline typename detail::tie_mapper
56060 <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type
56061 tie(T0& t0, T1& t1, T2& t2, T3& t3,
56062 T4& t4, T5& t5, T6& t6, T7& t7,
56063 T8& t8, T9& t9) {
56064 typedef typename detail::tie_mapper
56065 <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type t;
56066 return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
56067 }
56068
56069 template <class T0, class T1, class T2, class T3, class T4,
56070 class T5, class T6, class T7, class T8, class T9>
56071 void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
56072 tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs);
56073 inline void swap(null_type&, null_type&) {}
56074 template<class HH>
56075 inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) {
56076 ::boost::swap(lhs.head, rhs.head);
56077 }
56078 template<class HH, class TT>
56079 inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) {
56080 ::boost::swap(lhs.head, rhs.head);
56081 ::boost::tuples::swap(lhs.tail, rhs.tail);
56082 }
56083 template <class T0, class T1, class T2, class T3, class T4,
56084 class T5, class T6, class T7, class T8, class T9>
56085 inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
56086 tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) {
56087 typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type;
56088 typedef typename tuple_type::inherited base;
56089 ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs));
56090 }
56091
56092 }
56093 }
56094 # 34 "../boost/tuple/tuple.hpp" 2
56095
56096
56097
56098 namespace boost {
56099
56100 using tuples::tuple;
56101 using tuples::make_tuple;
56102 using tuples::tie;
56103
56104 using tuples::get;
56105 # 87 "../boost/tuple/tuple.hpp"
56106 }
56107 # 25 "../boost/unordered/detail/emplace_args.hpp" 2
56108 # 46 "../boost/unordered/detail/emplace_args.hpp"
56109 namespace boost { namespace unordered { namespace detail {
56110 # 119 "../boost/unordered/detail/emplace_args.hpp"
56111
56112 template < typename A0> struct emplace_args1 { typedef const A0 & Arg0; Arg0 a0; emplace_args1 ( Arg0 a0 ) : a0( boost::forward<A0>(a0)) {} }; template < typename A0> inline emplace_args1 < A0 > create_emplace_args( const A0 & a0 ) { emplace_args1 < A0 > e( a0); return e; } template < typename A0 , typename A1> struct emplace_args2 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; emplace_args2 ( Arg0 a0 , Arg1 a1 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) {} }; template < typename A0 , typename A1> inline emplace_args2 < A0 , A1 > create_emplace_args( const A0 & a0 , const A1 & a1 ) { emplace_args2 < A0 , A1 > e( a0 , a1); return e; } template < typename A0 , typename A1 , typename A2> struct emplace_args3 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; emplace_args3 ( Arg0 a0 , Arg1 a1 , Arg2 a2 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) {} }; template < typename A0 , typename A1 , typename A2> inline emplace_args3 < A0 , A1 , A2 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 ) { emplace_args3 < A0 , A1 , A2 > e( a0 , a1 , a2); return e; } template < typename A0 , typename A1 , typename A2 , typename A3> struct emplace_args4 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; typedef const A3 & Arg3; Arg3 a3; emplace_args4 ( Arg0 a0 , Arg1 a1 , Arg2 a2 , Arg3 a3 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) , a3( boost::forward<A3>(a3)) {} }; template < typename A0 , typename A1 , typename A2 , typename A3> inline emplace_args4 < A0 , A1 , A2 , A3 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 ) { emplace_args4 < A0 , A1 , A2 , A3 > e( a0 , a1 , a2 , a3); return e; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4> struct emplace_args5 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; typedef const A3 & Arg3; Arg3 a3; typedef const A4 & Arg4; Arg4 a4; emplace_args5 ( Arg0 a0 , Arg1 a1 , Arg2 a2 , Arg3 a3 , Arg4 a4 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) , a3( boost::forward<A3>(a3)) , a4( boost::forward<A4>(a4)) {} }; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4> inline emplace_args5 < A0 , A1 , A2 , A3 , A4 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 ) { emplace_args5 < A0 , A1 , A2 , A3 , A4 > e( a0 , a1 , a2 , a3 , a4); return e; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> struct emplace_args6 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; typedef const A3 & Arg3; Arg3 a3; typedef const A4 & Arg4; Arg4 a4; typedef const A5 & Arg5; Arg5 a5; emplace_args6 ( Arg0 a0 , Arg1 a1 , Arg2 a2 , Arg3 a3 , Arg4 a4 , Arg5 a5 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) , a3( boost::forward<A3>(a3)) , a4( boost::forward<A4>(a4)) , a5( boost::forward<A5>(a5)) {} }; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> inline emplace_args6 < A0 , A1 , A2 , A3 , A4 , A5 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 ) { emplace_args6 < A0 , A1 , A2 , A3 , A4 , A5 > e( a0 , a1 , a2 , a3 , a4 , a5); return e; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> struct emplace_args7 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; typedef const A3 & Arg3; Arg3 a3; typedef const A4 & Arg4; Arg4 a4; typedef const A5 & Arg5; Arg5 a5; typedef const A6 & Arg6; Arg6 a6; emplace_args7 ( Arg0 a0 , Arg1 a1 , Arg2 a2 , Arg3 a3 , Arg4 a4 , Arg5 a5 , Arg6 a6 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) , a3( boost::forward<A3>(a3)) , a4( boost::forward<A4>(a4)) , a5( boost::forward<A5>(a5)) , a6( boost::forward<A6>(a6)) {} }; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> inline emplace_args7 < A0 , A1 , A2 , A3 , A4 , A5 , A6 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 ) { emplace_args7 < A0 , A1 , A2 , A3 , A4 , A5 , A6 > e( a0 , a1 , a2 , a3 , a4 , a5 , a6); return e; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> struct emplace_args8 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; typedef const A3 & Arg3; Arg3 a3; typedef const A4 & Arg4; Arg4 a4; typedef const A5 & Arg5; Arg5 a5; typedef const A6 & Arg6; Arg6 a6; typedef const A7 & Arg7; Arg7 a7; emplace_args8 ( Arg0 a0 , Arg1 a1 , Arg2 a2 , Arg3 a3 , Arg4 a4 , Arg5 a5 , Arg6 a6 , Arg7 a7 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) , a3( boost::forward<A3>(a3)) , a4( boost::forward<A4>(a4)) , a5( boost::forward<A5>(a5)) , a6( boost::forward<A6>(a6)) , a7( boost::forward<A7>(a7)) {} }; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> inline emplace_args8 < A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 ) { emplace_args8 < A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > e( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); return e; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> struct emplace_args9 { typedef const A0 & Arg0; Arg0 a0; typedef const A1 & Arg1; Arg1 a1; typedef const A2 & Arg2; Arg2 a2; typedef const A3 & Arg3; Arg3 a3; typedef const A4 & Arg4; Arg4 a4; typedef const A5 & Arg5; Arg5 a5; typedef const A6 & Arg6; Arg6 a6; typedef const A7 & Arg7; Arg7 a7; typedef const A8 & Arg8; Arg8 a8; emplace_args9 ( Arg0 a0 , Arg1 a1 , Arg2 a2 , Arg3 a3 , Arg4 a4 , Arg5 a5 , Arg6 a6 , Arg7 a7 , Arg8 a8 ) : a0( boost::forward<A0>(a0)) , a1( boost::forward<A1>(a1)) , a2( boost::forward<A2>(a2)) , a3( boost::forward<A3>(a3)) , a4( boost::forward<A4>(a4)) , a5( boost::forward<A5>(a5)) , a6( boost::forward<A6>(a6)) , a7( boost::forward<A7>(a7)) , a8( boost::forward<A8>(a8)) {} }; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> inline emplace_args9 < A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > create_emplace_args( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 , const A8 & a8 ) { emplace_args9 < A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > e( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); return e; }
56113 # 135 "../boost/unordered/detail/emplace_args.hpp"
56114 struct please_ignore_this_overload {
56115 typedef please_ignore_this_overload type;
56116 };
56117
56118 template <typename T>
56119 struct rv_ref_impl {
56120 typedef ::boost::rv< T >& type;
56121 };
56122
56123 template <typename T>
56124 struct rv_ref :
56125 boost::detail::if_true<
56126 boost::is_class<T>::value
56127 >::template then <
56128 boost::unordered::detail::rv_ref_impl<T>,
56129 please_ignore_this_overload
56130 >::type
56131 {};
56132 # 188 "../boost/unordered/detail/emplace_args.hpp"
56133 template<typename T> void construct_from_tuple(T* ptr, boost::tuple<>) { new ((void*) ptr) T(); } template<typename T, typename A0> void construct_from_tuple(T* ptr, boost::tuple< A0> const& x) { new ((void*) ptr) T( boost::get<0>(x) ); } template<typename T, typename A0 , typename A1> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) ); } template<typename T, typename A0 , typename A1 , typename A2> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) ); } template<typename T, typename A0 , typename A1 , typename A2 , typename A3> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2 , A3> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) , boost::get<3>(x) ); } template<typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2 , A3 , A4> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) , boost::get<3>(x) , boost::get<4>(x) ); } template<typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2 , A3 , A4 , A5> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) , boost::get<3>(x) , boost::get<4>(x) , boost::get<5>(x) ); } template<typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2 , A3 , A4 , A5 , A6> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) , boost::get<3>(x) , boost::get<4>(x) , boost::get<5>(x) , boost::get<6>(x) ); } template<typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) , boost::get<3>(x) , boost::get<4>(x) , boost::get<5>(x) , boost::get<6>(x) , boost::get<7>(x) ); } template<typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> void construct_from_tuple(T* ptr, boost::tuple< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> const& x) { new ((void*) ptr) T( boost::get<0>(x) , boost::get<1>(x) , boost::get<2>(x) , boost::get<3>(x) , boost::get<4>(x) , boost::get<5>(x) , boost::get<6>(x) , boost::get<7>(x) , boost::get<8>(x) ); }
56134 # 264 "../boost/unordered/detail/emplace_args.hpp"
56135 template <typename A, typename B, typename A0>
56136 struct check3_base {
56137 static choice1::type test(choice1,
56138 boost::unordered::piecewise_construct_t);
56139
56140
56141
56142
56143
56144 static choice3::type test(choice3, ...);
56145
56146 enum { value =
56147 sizeof(test(choose(), boost::unordered::detail::make<A0>())) };
56148 };
56149
56150 template <typename A, typename B, typename A0>
56151 struct piecewise3 {
56152 enum { value = check3_base<A,B,A0>::value == sizeof(choice1::type) };
56153 };
56154 # 369 "../boost/unordered/detail/emplace_args.hpp"
56155 template <typename T, typename A0>
56156 inline void construct_impl(T* address, emplace_args1<A0> const& args)
56157 {
56158 new((void*) address) T(boost::forward<A0>(args.a0));
56159 }
56160
56161 template <typename T, typename A0, typename A1>
56162 inline void construct_impl(T* address, emplace_args2<A0, A1> const& args)
56163 {
56164 new((void*) address) T(
56165 boost::forward<A0>(args.a0),
56166 boost::forward<A1>(args.a1)
56167 );
56168 }
56169
56170 template <typename T, typename A0, typename A1, typename A2>
56171 inline void construct_impl(T* address, emplace_args3<A0, A1, A2> const& args)
56172 {
56173 new((void*) address) T(
56174 boost::forward<A0>(args.a0),
56175 boost::forward<A1>(args.a1),
56176 boost::forward<A2>(args.a2)
56177 );
56178 }
56179
56180
56181 template < typename T, typename A0 , typename A1 , typename A2 , typename A3 > inline void construct_impl(T* address, boost::unordered::detail::emplace_args4 < A0 , A1 , A2 , A3 > const& args) { new((void*) address) T( boost::forward<A0>(args.a0) , boost::forward<A1>(args.a1) , boost::forward<A2>(args.a2) , boost::forward<A3>(args.a3)); } template < typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > inline void construct_impl(T* address, boost::unordered::detail::emplace_args5 < A0 , A1 , A2 , A3 , A4 > const& args) { new((void*) address) T( boost::forward<A0>(args.a0) , boost::forward<A1>(args.a1) , boost::forward<A2>(args.a2) , boost::forward<A3>(args.a3) , boost::forward<A4>(args.a4)); } template < typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > inline void construct_impl(T* address, boost::unordered::detail::emplace_args6 < A0 , A1 , A2 , A3 , A4 , A5 > const& args) { new((void*) address) T( boost::forward<A0>(args.a0) , boost::forward<A1>(args.a1) , boost::forward<A2>(args.a2) , boost::forward<A3>(args.a3) , boost::forward<A4>(args.a4) , boost::forward<A5>(args.a5)); } template < typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > inline void construct_impl(T* address, boost::unordered::detail::emplace_args7 < A0 , A1 , A2 , A3 , A4 , A5 , A6 > const& args) { new((void*) address) T( boost::forward<A0>(args.a0) , boost::forward<A1>(args.a1) , boost::forward<A2>(args.a2) , boost::forward<A3>(args.a3) , boost::forward<A4>(args.a4) , boost::forward<A5>(args.a5) , boost::forward<A6>(args.a6)); } template < typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > inline void construct_impl(T* address, boost::unordered::detail::emplace_args8 < A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > const& args) { new((void*) address) T( boost::forward<A0>(args.a0) , boost::forward<A1>(args.a1) , boost::forward<A2>(args.a2) , boost::forward<A3>(args.a3) , boost::forward<A4>(args.a4) , boost::forward<A5>(args.a5) , boost::forward<A6>(args.a6) , boost::forward<A7>(args.a7)); } template < typename T, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > inline void construct_impl(T* address, boost::unordered::detail::emplace_args9 < A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > const& args) { new((void*) address) T( boost::forward<A0>(args.a0) , boost::forward<A1>(args.a1) , boost::forward<A2>(args.a2) , boost::forward<A3>(args.a3) , boost::forward<A4>(args.a4) , boost::forward<A5>(args.a5) , boost::forward<A6>(args.a6) , boost::forward<A7>(args.a7) , boost::forward<A8>(args.a8)); }
56182
56183
56184
56185 template <typename A, typename B, typename A0, typename A1, typename A2>
56186 inline typename enable_if<piecewise3<A, B, A0>, void>::type
56187 construct_impl(std::pair<A, B>* address,
56188 boost::unordered::detail::emplace_args3<A0, A1, A2> const& args)
56189 {
56190 boost::unordered::detail::construct_from_tuple(
56191 boost::addressof(address->first), args.a1);
56192 boost::unordered::detail::construct_from_tuple(
56193 boost::addressof(address->second), args.a2);
56194 }
56195 # 466 "../boost/unordered/detail/emplace_args.hpp"
56196 template <typename T, typename A0>
56197 inline void construct_impl2(T* address, const A0 & a0)
56198 {
56199 new((void*) address) T(
56200 boost::forward<A0>(a0)
56201 );
56202 }
56203
56204 }}}
56205 # 17 "../boost/unordered/detail/buckets.hpp" 2
56206 # 1 "../boost/type_traits/aligned_storage.hpp" 1
56207 # 11 "../boost/type_traits/aligned_storage.hpp"
56208 # 1 "../boost/aligned_storage.hpp" 1
56209 # 16 "../boost/aligned_storage.hpp"
56210 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
56211 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56212
56213 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56214
56215
56216 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
56217 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
56218 # 17 "../boost/aligned_storage.hpp" 2
56219
56220
56221
56222 # 1 "../boost/type_traits/alignment_of.hpp" 1
56223 # 13 "../boost/type_traits/alignment_of.hpp"
56224 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
56225 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56226
56227 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56228
56229
56230 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
56231 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
56232 # 14 "../boost/type_traits/alignment_of.hpp" 2
56233
56234
56235
56236 # 1 "../boost/type_traits/detail/size_t_trait_def.hpp" 1
56237 # 14 "../boost/type_traits/detail/size_t_trait_def.hpp"
56238 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
56239 # 15 "../boost/type_traits/detail/size_t_trait_def.hpp" 2
56240
56241
56242 # 1 "../boost/mpl/size_t.hpp" 1
56243 # 17 "../boost/mpl/size_t.hpp"
56244 # 1 "../boost/mpl/size_t_fwd.hpp" 1
56245 # 19 "../boost/mpl/size_t_fwd.hpp"
56246 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
56247 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56248
56249 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56250
56251
56252 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
56253 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
56254 # 20 "../boost/mpl/size_t_fwd.hpp" 2
56255
56256 namespace mpl_ {
56257
56258 template< std::size_t N > struct size_t;
56259
56260 }
56261 namespace boost { namespace mpl { using ::mpl_::size_t; } }
56262 # 18 "../boost/mpl/size_t.hpp" 2
56263
56264
56265
56266
56267
56268 # 1 "../boost/mpl/aux_/integral_wrapper.hpp" 1
56269 # 40 "../boost/mpl/aux_/integral_wrapper.hpp"
56270 namespace mpl_ {
56271
56272 template< std::size_t N >
56273 struct size_t
56274 {
56275 static const std::size_t value = N;
56276
56277
56278
56279
56280
56281 typedef size_t type;
56282
56283 typedef std::size_t value_type;
56284 typedef integral_c_tag tag;
56285 # 72 "../boost/mpl/aux_/integral_wrapper.hpp"
56286 typedef mpl_::size_t< static_cast<std::size_t>((value + 1)) > next;
56287 typedef mpl_::size_t< static_cast<std::size_t>((value - 1)) > prior;
56288
56289
56290
56291
56292
56293
56294 operator std::size_t() const { return static_cast<std::size_t>(this->value); }
56295 };
56296
56297
56298 template< std::size_t N >
56299 std::size_t const mpl_::size_t< N >::value;
56300
56301
56302 }
56303 # 24 "../boost/mpl/size_t.hpp" 2
56304 # 18 "../boost/type_traits/detail/size_t_trait_def.hpp" 2
56305
56306 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
56307 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56308
56309 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56310
56311
56312 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
56313 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
56314 # 20 "../boost/type_traits/detail/size_t_trait_def.hpp" 2
56315 # 18 "../boost/type_traits/alignment_of.hpp" 2
56316 # 27 "../boost/type_traits/alignment_of.hpp"
56317 namespace boost {
56318
56319 template <typename T> struct alignment_of;
56320
56321
56322 namespace detail {
56323
56324
56325
56326
56327
56328 template <typename T>
56329 struct alignment_of_hack
56330 {
56331 char c;
56332 T t;
56333 alignment_of_hack();
56334 };
56335
56336
56337
56338
56339 template <unsigned A, unsigned S>
56340 struct alignment_logic
56341 {
56342 static const std::size_t value = A < S ? A : S;
56343 };
56344
56345
56346 template< typename T >
56347 struct alignment_of_impl
56348 {
56349 # 83 "../boost/type_traits/alignment_of.hpp"
56350 static const std::size_t value = __alignof__(T);
56351
56352 };
56353
56354 }
56355
56356 template< typename T > struct alignment_of : public ::boost::integral_constant<std::size_t,::boost::detail::alignment_of_impl<T>::value> { public: };
56357
56358
56359
56360
56361 template <typename T>
56362 struct alignment_of<T&>
56363 : public alignment_of<T*>
56364 {
56365 };
56366 # 109 "../boost/type_traits/alignment_of.hpp"
56367 template<> struct alignment_of<void> : public ::boost::integral_constant<std::size_t,0> { public: };
56368
56369 template<> struct alignment_of<void const> : public ::boost::integral_constant<std::size_t,0> { public: };
56370 template<> struct alignment_of<void volatile> : public ::boost::integral_constant<std::size_t,0> { public: };
56371 template<> struct alignment_of<void const volatile> : public ::boost::integral_constant<std::size_t,0> { public: };
56372
56373
56374 }
56375 # 125 "../boost/type_traits/alignment_of.hpp"
56376 # 1 "../boost/type_traits/detail/size_t_trait_undef.hpp" 1
56377 # 126 "../boost/type_traits/alignment_of.hpp" 2
56378 # 21 "../boost/aligned_storage.hpp" 2
56379 # 1 "../boost/type_traits/type_with_alignment.hpp" 1
56380 # 12 "../boost/type_traits/type_with_alignment.hpp"
56381 # 1 "../boost/preprocessor/list/for_each_i.hpp" 1
56382 # 13 "../boost/type_traits/type_with_alignment.hpp" 2
56383 # 1 "../boost/preprocessor/tuple/to_list.hpp" 1
56384 # 14 "../boost/type_traits/type_with_alignment.hpp" 2
56385
56386 # 1 "../boost/preprocessor/list/transform.hpp" 1
56387 # 16 "../boost/type_traits/type_with_alignment.hpp" 2
56388 # 1 "../boost/preprocessor/list/append.hpp" 1
56389 # 17 "../boost/type_traits/type_with_alignment.hpp" 2
56390
56391
56392
56393
56394
56395
56396 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
56397 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
56398 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
56399 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
56400 # 24 "../boost/type_traits/type_with_alignment.hpp" 2
56401
56402 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
56403 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56404
56405 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
56406
56407
56408 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
56409 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
56410 # 26 "../boost/type_traits/type_with_alignment.hpp" 2
56411
56412
56413
56414
56415
56416
56417 namespace boost {
56418
56419
56420
56421 namespace detail {
56422
56423 class alignment_dummy;
56424 typedef void (*function_ptr)();
56425 typedef int (alignment_dummy::*member_ptr);
56426 typedef int (alignment_dummy::*member_function_ptr)();
56427 # 101 "../boost/type_traits/type_with_alignment.hpp"
56428 template <bool found, std::size_t target, class TestType>
56429 struct lower_alignment_helper
56430 {
56431 typedef char type;
56432 enum { value = true };
56433 };
56434
56435 template <std::size_t target, class TestType>
56436 struct lower_alignment_helper<false,target,TestType>
56437 {
56438 enum { value = (alignment_of<TestType>::value == target) };
56439 typedef typename mpl::if_c<value, TestType, char>::type type;
56440 };
56441 # 127 "../boost/type_traits/type_with_alignment.hpp"
56442 template <typename T>
56443 struct has_one_T
56444 {
56445 T data;
56446 };
56447
56448 template <std::size_t target>
56449 union lower_alignment
56450 {
56451 enum { found0 = false };
56452
56453
56454
56455
56456
56457 typename lower_alignment_helper< found0,target,char >::type t0; enum { found1 = lower_alignment_helper<found0,target,char >::value }; typename lower_alignment_helper< found1,target,short >::type t1; enum { found2 = lower_alignment_helper<found1,target,short >::value }; typename lower_alignment_helper< found2,target,int >::type t2; enum { found3 = lower_alignment_helper<found2,target,int >::value }; typename lower_alignment_helper< found3,target,long >::type t3; enum { found4 = lower_alignment_helper<found3,target,long >::value }; typename lower_alignment_helper< found4,target,::boost::long_long_type >::type t4; enum { found5 = lower_alignment_helper<found4,target,::boost::long_long_type >::value }; typename lower_alignment_helper< found5,target,float >::type t5; enum { found6 = lower_alignment_helper<found5,target,float >::value }; typename lower_alignment_helper< found6,target,double >::type t6; enum { found7 = lower_alignment_helper<found6,target,double >::value }; typename lower_alignment_helper< found7,target,long double >::type t7; enum { found8 = lower_alignment_helper<found7,target,long double >::value }; typename lower_alignment_helper< found8,target,void* >::type t8; enum { found9 = lower_alignment_helper<found8,target,void* >::value }; typename lower_alignment_helper< found9,target,function_ptr >::type t9; enum { found10 = lower_alignment_helper<found9,target,function_ptr >::value }; typename lower_alignment_helper< found10,target,member_ptr >::type t10; enum { found11 = lower_alignment_helper<found10,target,member_ptr >::value }; typename lower_alignment_helper< found11,target,member_function_ptr >::type t11; enum { found12 = lower_alignment_helper<found11,target,member_function_ptr >::value }; typename lower_alignment_helper< found12,target,boost::detail::has_one_T< char > >::type t12; enum { found13 = lower_alignment_helper<found12,target,boost::detail::has_one_T< char > >::value }; typename lower_alignment_helper< found13,target,boost::detail::has_one_T< short > >::type t13; enum { found14 = lower_alignment_helper<found13,target,boost::detail::has_one_T< short > >::value }; typename lower_alignment_helper< found14,target,boost::detail::has_one_T< int > >::type t14; enum { found15 = lower_alignment_helper<found14,target,boost::detail::has_one_T< int > >::value }; typename lower_alignment_helper< found15,target,boost::detail::has_one_T< long > >::type t15; enum { found16 = lower_alignment_helper<found15,target,boost::detail::has_one_T< long > >::value }; typename lower_alignment_helper< found16,target,boost::detail::has_one_T< ::boost::long_long_type > >::type t16; enum { found17 = lower_alignment_helper<found16,target,boost::detail::has_one_T< ::boost::long_long_type > >::value }; typename lower_alignment_helper< found17,target,boost::detail::has_one_T< float > >::type t17; enum { found18 = lower_alignment_helper<found17,target,boost::detail::has_one_T< float > >::value }; typename lower_alignment_helper< found18,target,boost::detail::has_one_T< double > >::type t18; enum { found19 = lower_alignment_helper<found18,target,boost::detail::has_one_T< double > >::value }; typename lower_alignment_helper< found19,target,boost::detail::has_one_T< long double > >::type t19; enum { found20 = lower_alignment_helper<found19,target,boost::detail::has_one_T< long double > >::value }; typename lower_alignment_helper< found20,target,boost::detail::has_one_T< void* > >::type t20; enum { found21 = lower_alignment_helper<found20,target,boost::detail::has_one_T< void* > >::value }; typename lower_alignment_helper< found21,target,boost::detail::has_one_T< function_ptr > >::type t21; enum { found22 = lower_alignment_helper<found21,target,boost::detail::has_one_T< function_ptr > >::value }; typename lower_alignment_helper< found22,target,boost::detail::has_one_T< member_ptr > >::type t22; enum { found23 = lower_alignment_helper<found22,target,boost::detail::has_one_T< member_ptr > >::value }; typename lower_alignment_helper< found23,target,boost::detail::has_one_T< member_function_ptr > >::type t23; enum { found24 = lower_alignment_helper<found23,target,boost::detail::has_one_T< member_function_ptr > >::value };
56458 };
56459
56460 union max_align
56461 {
56462
56463
56464
56465
56466 char t0; short t1; int t2; long t3; ::boost::long_long_type t4; float t5; double t6; long double t7; void* t8; function_ptr t9; member_ptr t10; member_function_ptr t11; boost::detail::has_one_T< char > t12; boost::detail::has_one_T< short > t13; boost::detail::has_one_T< int > t14; boost::detail::has_one_T< long > t15; boost::detail::has_one_T< ::boost::long_long_type > t16; boost::detail::has_one_T< float > t17; boost::detail::has_one_T< double > t18; boost::detail::has_one_T< long double > t19; boost::detail::has_one_T< void* > t20; boost::detail::has_one_T< function_ptr > t21; boost::detail::has_one_T< member_ptr > t22; boost::detail::has_one_T< member_function_ptr > t23;
56467 };
56468 # 161 "../boost/type_traits/type_with_alignment.hpp"
56469 template<std::size_t TAlign, std::size_t Align>
56470 struct is_aligned
56471 {
56472 static const bool value = (TAlign >= Align) & (TAlign % Align == 0)
56473
56474 ;
56475 };
56476 # 180 "../boost/type_traits/type_with_alignment.hpp"
56477 }
56478
56479
56480 template<std::size_t Align>
56481 struct is_pod< ::boost::detail::lower_alignment<Align> >
56482 {
56483 static const std::size_t value = true;
56484 };
56485
56486
56487
56488
56489 namespace detail{
56490
56491 template <std::size_t Align>
56492 class type_with_alignment_imp
56493 {
56494 typedef ::boost::detail::lower_alignment<Align> t1;
56495 typedef typename mpl::if_c<
56496 ::boost::detail::is_aligned< ::boost::alignment_of<t1>::value,Align >::value
56497 , t1
56498 , ::boost::detail::max_align
56499 >::type align_t;
56500
56501 static const std::size_t found = alignment_of<align_t>::value;
56502
56503 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((found >= Align) == 0 ? false : true) >)> boost_static_assert_typedef_206;
56504 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((found % Align == 0) == 0 ? false : true) >)> boost_static_assert_typedef_207;
56505
56506 public:
56507 typedef align_t type;
56508 };
56509
56510 }
56511
56512 template <std::size_t Align>
56513 class type_with_alignment
56514 : public ::boost::detail::type_with_alignment_imp<Align>
56515 {
56516 };
56517
56518
56519 namespace align {
56520 struct __attribute__((__aligned__(2))) a2 {};
56521 struct __attribute__((__aligned__(4))) a4 {};
56522 struct __attribute__((__aligned__(8))) a8 {};
56523 struct __attribute__((__aligned__(16))) a16 {};
56524 struct __attribute__((__aligned__(32))) a32 {};
56525 struct __attribute__((__aligned__(64))) a64 {};
56526 struct __attribute__((__aligned__(128))) a128 {};
56527 }
56528
56529 template<> class type_with_alignment<1> { public: typedef char type; };
56530 template<> class type_with_alignment<2> { public: typedef align::a2 type; };
56531 template<> class type_with_alignment<4> { public: typedef align::a4 type; };
56532 template<> class type_with_alignment<8> { public: typedef align::a8 type; };
56533 template<> class type_with_alignment<16> { public: typedef align::a16 type; };
56534 template<> class type_with_alignment<32> { public: typedef align::a32 type; };
56535 template<> class type_with_alignment<64> { public: typedef align::a64 type; };
56536 template<> class type_with_alignment<128> { public: typedef align::a128 type; };
56537
56538 namespace detail {
56539 template<> struct is_pod_impl< ::boost::align::a2 > { public: static const bool value = (true); };
56540 template<> struct is_pod_impl< ::boost::align::a4 > { public: static const bool value = (true); };
56541 template<> struct is_pod_impl< ::boost::align::a8 > { public: static const bool value = (true); };
56542 template<> struct is_pod_impl< ::boost::align::a16 > { public: static const bool value = (true); };
56543 template<> struct is_pod_impl< ::boost::align::a32 > { public: static const bool value = (true); };
56544 template<> struct is_pod_impl< ::boost::align::a64 > { public: static const bool value = (true); };
56545 template<> struct is_pod_impl< ::boost::align::a128 > { public: static const bool value = (true); };
56546 }
56547 # 389 "../boost/type_traits/type_with_alignment.hpp"
56548 }
56549
56550
56551
56552
56553
56554 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
56555 # 396 "../boost/type_traits/type_with_alignment.hpp" 2
56556 # 22 "../boost/aligned_storage.hpp" 2
56557
56558
56559
56560
56561
56562 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
56563 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
56564 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
56565 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
56566 # 28 "../boost/aligned_storage.hpp" 2
56567
56568 namespace boost {
56569
56570 namespace detail { namespace aligned_storage {
56571
56572 static const std::size_t alignment_of_max_align = ::boost::alignment_of<max_align>::value
56573
56574
56575 ;
56576
56577
56578
56579
56580 template <
56581 std::size_t size_
56582 , std::size_t alignment_
56583 >
56584 struct aligned_storage_imp
56585 {
56586 union data_t
56587 {
56588 char buf[size_];
56589
56590 typename mpl::eval_if_c<
56591 alignment_ == std::size_t(-1)
56592 , mpl::identity<detail::max_align>
56593 , type_with_alignment<alignment_>
56594 >::type align_;
56595 } data_;
56596 void* address() const { return const_cast<aligned_storage_imp*>(this); }
56597 };
56598
56599 template< std::size_t alignment_ >
56600 struct aligned_storage_imp<0u,alignment_>
56601 {
56602
56603 void* address() const { return 0; }
56604 };
56605
56606 }}
56607
56608 template <
56609 std::size_t size_
56610 , std::size_t alignment_ = std::size_t(-1)
56611 >
56612 class aligned_storage :
56613
56614 private
56615
56616
56617
56618 detail::aligned_storage::aligned_storage_imp<size_, alignment_>
56619 {
56620
56621 public:
56622
56623 typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
56624
56625 static const std::size_t size = size_
56626
56627
56628 ;
56629 static const std::size_t alignment = ( alignment_ == std::size_t(-1) ? ::boost::detail::aligned_storage::alignment_of_max_align : alignment_ )
56630
56631
56632
56633
56634
56635
56636 ;
56637
56638
56639
56640
56641
56642
56643 private:
56644
56645 aligned_storage(const aligned_storage&);
56646 aligned_storage& operator=(const aligned_storage&);
56647 # 118 "../boost/aligned_storage.hpp"
56648 public:
56649
56650 aligned_storage()
56651 {
56652 }
56653
56654 ~aligned_storage()
56655 {
56656 }
56657
56658 public:
56659
56660 void* address()
56661 {
56662 return static_cast<type*>(this)->address();
56663 }
56664
56665
56666
56667 const void* address() const
56668 {
56669 return static_cast<const type*>(this)->address();
56670 }
56671
56672
56673
56674
56675
56676
56677
56678 };
56679 # 168 "../boost/aligned_storage.hpp"
56680 template <std::size_t size_, std::size_t alignment_>
56681 struct is_pod<boost::detail::aligned_storage::aligned_storage_imp<size_,alignment_> >
56682 : public ::boost::integral_constant<bool,true>
56683 {
56684
56685 };
56686
56687
56688
56689 }
56690
56691 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
56692 # 180 "../boost/aligned_storage.hpp" 2
56693 # 12 "../boost/type_traits/aligned_storage.hpp" 2
56694 # 18 "../boost/unordered/detail/buckets.hpp" 2
56695
56696
56697 # 1 "../boost/assert.hpp" 1
56698 # 50 "../boost/assert.hpp"
56699 # 1 "/usr/include/assert.h" 1 3 4
56700 # 51 "../boost/assert.hpp" 2
56701 # 21 "../boost/unordered/detail/buckets.hpp" 2
56702
56703
56704
56705
56706
56707
56708 namespace boost { namespace unordered { namespace detail {
56709
56710 template <typename Types> struct table;
56711 template <typename NodePointer> struct bucket;
56712 struct ptr_bucket;
56713 template <typename A, typename Bucket, typename Node> struct buckets;
56714
56715
56716
56717
56718
56719 template <typename NodeAlloc>
56720 struct node_constructor
56721 {
56722 private:
56723
56724 typedef NodeAlloc node_allocator;
56725 typedef boost::unordered::detail::allocator_traits<NodeAlloc>
56726 node_allocator_traits;
56727 typedef typename node_allocator_traits::value_type node;
56728 typedef typename node_allocator_traits::pointer node_pointer;
56729 typedef typename node::value_type value_type;
56730
56731 node_allocator& alloc_;
56732 node_pointer node_;
56733 bool node_constructed_;
56734 bool value_constructed_;
56735
56736 public:
56737
56738 node_constructor(node_allocator& n) :
56739 alloc_(n),
56740 node_(),
56741 node_constructed_(false),
56742 value_constructed_(false)
56743 {
56744 }
56745
56746 ~node_constructor();
56747
56748 void construct_node();
56749
56750 template <typename Args>
56751 void construct_value(Args const& args)
56752 {
56753 (static_cast<void> (0));
56754 boost::unordered::detail::construct_impl(
56755 node_->value_ptr(), args);
56756 value_constructed_ = true;
56757 }
56758
56759 template <typename A0>
56760 void construct_value2(const A0 & a0)
56761 {
56762 (static_cast<void> (0));
56763 boost::unordered::detail::construct_impl2(
56764 node_->value_ptr(), boost::forward<A0>(a0));
56765 value_constructed_ = true;
56766 }
56767
56768 value_type const& value() const {
56769 (static_cast<void> (0));
56770 return node_->value();
56771 }
56772
56773
56774 node_pointer release()
56775 {
56776 node_pointer p = node_;
56777 node_ = node_pointer();
56778 return p;
56779 }
56780
56781 private:
56782 node_constructor(node_constructor const&);
56783 node_constructor& operator=(node_constructor const&);
56784 };
56785
56786 template <typename Alloc>
56787 node_constructor<Alloc>::~node_constructor()
56788 {
56789 if (node_) {
56790 if (value_constructed_) {
56791 boost::unordered::detail::destroy(node_->value_ptr());
56792 }
56793
56794 if (node_constructed_) {
56795 node_allocator_traits::destroy(alloc_,
56796 boost::addressof(*node_));
56797 }
56798
56799 node_allocator_traits::deallocate(alloc_, node_, 1);
56800 }
56801 }
56802
56803 template <typename Alloc>
56804 void node_constructor<Alloc>::construct_node()
56805 {
56806 if(!node_) {
56807 node_constructed_ = false;
56808 value_constructed_ = false;
56809
56810 node_ = node_allocator_traits::allocate(alloc_, 1);
56811
56812 node_allocator_traits::construct(alloc_,
56813 boost::addressof(*node_), node());
56814 node_->init(static_cast<typename node::link_pointer>(node_));
56815 node_constructed_ = true;
56816 }
56817 else {
56818 (static_cast<void> (0));
56819
56820 if (value_constructed_)
56821 {
56822 boost::unordered::detail::destroy(node_->value_ptr());
56823 value_constructed_ = false;
56824 }
56825 }
56826 }
56827
56828
56829
56830
56831
56832 template <typename NodePointer>
56833 struct bucket
56834 {
56835 typedef NodePointer previous_pointer;
56836 previous_pointer next_;
56837
56838 bucket() : next_() {}
56839
56840 previous_pointer first_from_start()
56841 {
56842 return next_;
56843 }
56844
56845 enum { extra_node = true };
56846 };
56847
56848 struct ptr_bucket
56849 {
56850 typedef ptr_bucket* previous_pointer;
56851 previous_pointer next_;
56852
56853 ptr_bucket() : next_(0) {}
56854
56855 previous_pointer first_from_start()
56856 {
56857 return this;
56858 }
56859
56860 enum { extra_node = false };
56861 };
56862
56863
56864
56865
56866
56867 template <typename A, typename Bucket, typename Node>
56868 struct buckets
56869 {
56870 private:
56871 buckets(buckets const&);
56872 buckets& operator=(buckets const&);
56873 public:
56874 typedef boost::unordered::detail::allocator_traits<A> traits;
56875 typedef typename traits::value_type value_type;
56876
56877 typedef Node node;
56878 typedef Bucket bucket;
56879 typedef typename boost::unordered::detail::rebind_wrap<A, node>::type
56880 node_allocator;
56881 typedef typename boost::unordered::detail::rebind_wrap<A, bucket>::type
56882 bucket_allocator;
56883 typedef boost::unordered::detail::allocator_traits<node_allocator>
56884 node_allocator_traits;
56885 typedef boost::unordered::detail::allocator_traits<bucket_allocator>
56886 bucket_allocator_traits;
56887 typedef typename node_allocator_traits::pointer
56888 node_pointer;
56889 typedef typename node_allocator_traits::const_pointer
56890 const_node_pointer;
56891 typedef typename bucket_allocator_traits::pointer
56892 bucket_pointer;
56893 typedef typename bucket::previous_pointer
56894 previous_pointer;
56895 typedef boost::unordered::detail::node_constructor<node_allocator>
56896 node_constructor;
56897
56898
56899
56900 bucket_pointer buckets_;
56901 std::size_t bucket_count_;
56902 std::size_t size_;
56903 boost::unordered::detail::compressed<bucket_allocator, node_allocator>
56904 allocators_;
56905
56906
56907
56908 bucket_allocator const& bucket_alloc() const
56909 {
56910 return allocators_.first();
56911 }
56912
56913 node_allocator const& node_alloc() const
56914 {
56915 return allocators_.second();
56916 }
56917
56918 bucket_allocator& bucket_alloc()
56919 {
56920 return allocators_.first();
56921 }
56922
56923 node_allocator& node_alloc()
56924 {
56925 return allocators_.second();
56926 }
56927
56928 std::size_t max_bucket_count() const
56929 {
56930
56931 return boost::unordered::detail::prev_prime(
56932 bucket_allocator_traits::max_size(bucket_alloc()) - 1);
56933 }
56934
56935 bucket_pointer get_bucket(std::size_t bucket_index) const
56936 {
56937 return buckets_ + static_cast<std::ptrdiff_t>(bucket_index);
56938 }
56939
56940 previous_pointer get_previous_start() const
56941 {
56942 return this->get_bucket(this->bucket_count_)->first_from_start();
56943 }
56944
56945 previous_pointer get_previous_start(std::size_t bucket_index) const
56946 {
56947 return this->get_bucket(bucket_index)->next_;
56948 }
56949
56950 node_pointer get_start() const
56951 {
56952 return static_cast<node_pointer>(this->get_previous_start()->next_);
56953 }
56954
56955 node_pointer get_start(std::size_t bucket_index) const
56956 {
56957 previous_pointer prev = this->get_previous_start(bucket_index);
56958 return prev ? static_cast<node_pointer>(prev->next_) :
56959 node_pointer();
56960 }
56961
56962 float load_factor() const
56963 {
56964 (static_cast<void> (0));
56965 return static_cast<float>(this->size_)
56966 / static_cast<float>(this->bucket_count_);
56967 }
56968
56969 std::size_t bucket_size(std::size_t index) const
56970 {
56971 if (!this->size_) return 0;
56972 node_pointer ptr = this->get_start(index);
56973 if (!ptr) return 0;
56974
56975 std::size_t count = 0;
56976 while(ptr && ptr->hash_ % this->bucket_count_ == index)
56977 {
56978 ++count;
56979 ptr = static_cast<node_pointer>(ptr->next_);
56980 }
56981
56982 return count;
56983 }
56984
56985
56986
56987
56988 buckets(node_allocator const& a, std::size_t bucket_count) :
56989 buckets_(),
56990 bucket_count_(bucket_count),
56991 size_(),
56992 allocators_(a,a)
56993 {
56994 }
56995
56996 buckets(buckets& b, boost::unordered::detail::move_tag m) :
56997 buckets_(),
56998 bucket_count_(b.bucket_count_),
56999 size_(),
57000 allocators_(b.allocators_, m)
57001 {
57002 swap(b);
57003 }
57004
57005 template <typename Types>
57006 buckets(boost::unordered::detail::table<Types>& x,
57007 boost::unordered::detail::move_tag m) :
57008 buckets_(),
57009 bucket_count_(x.bucket_count_),
57010 size_(),
57011 allocators_(x.allocators_, m)
57012 {
57013 swap(x);
57014 }
57015
57016
57017
57018
57019
57020 void create_buckets()
57021 {
57022 boost::unordered::detail::array_constructor<bucket_allocator>
57023 constructor(bucket_alloc());
57024
57025
57026 constructor.construct(bucket(), this->bucket_count_ + 1);
57027
57028 if (bucket::extra_node)
57029 {
57030 node_constructor a(this->node_alloc());
57031 a.construct_node();
57032
57033 (constructor.get() +
57034 static_cast<std::ptrdiff_t>(this->bucket_count_))->next_ =
57035 a.release();
57036 }
57037
57038 this->buckets_ = constructor.release();
57039 }
57040
57041
57042
57043
57044 void swap(buckets& other, false_type = false_type())
57045 {
57046 (static_cast<void> (0));
57047 boost::swap(buckets_, other.buckets_);
57048 boost::swap(bucket_count_, other.bucket_count_);
57049 boost::swap(size_, other.size_);
57050 }
57051
57052 void swap(buckets& other, true_type)
57053 {
57054 allocators_.swap(other.allocators_);
57055 boost::swap(buckets_, other.buckets_);
57056 boost::swap(bucket_count_, other.bucket_count_);
57057 boost::swap(size_, other.size_);
57058 }
57059
57060 void move_buckets_from(buckets& other)
57061 {
57062 (static_cast<void> (0));
57063 (static_cast<void> (0));
57064 this->buckets_ = other.buckets_;
57065 this->bucket_count_ = other.bucket_count_;
57066 this->size_ = other.size_;
57067 other.buckets_ = bucket_pointer();
57068 other.bucket_count_ = 0;
57069 other.size_ = 0;
57070 }
57071
57072
57073
57074
57075 inline void delete_node(node_pointer n)
57076 {
57077 boost::unordered::detail::destroy(n->value_ptr());
57078 node_allocator_traits::destroy(node_alloc(), boost::addressof(*n));
57079 node_allocator_traits::deallocate(node_alloc(), n, 1);
57080 --size_;
57081 }
57082
57083 std::size_t delete_nodes(node_pointer begin, node_pointer end)
57084 {
57085 std::size_t count = 0;
57086
57087 while(begin != end) {
57088 node_pointer n = begin;
57089 begin = static_cast<node_pointer>(begin->next_);
57090 delete_node(n);
57091 ++count;
57092 }
57093
57094 return count;
57095 }
57096
57097 inline void delete_extra_node(bucket_pointer) {}
57098
57099 inline void delete_extra_node(node_pointer n) {
57100 node_allocator_traits::destroy(node_alloc(), boost::addressof(*n));
57101 node_allocator_traits::deallocate(node_alloc(), n, 1);
57102 }
57103
57104 inline ~buckets()
57105 {
57106 this->delete_buckets();
57107 }
57108
57109 void delete_buckets()
57110 {
57111 if(this->buckets_) {
57112 previous_pointer prev = this->get_previous_start();
57113
57114 while(prev->next_) {
57115 node_pointer n = static_cast<node_pointer>(prev->next_);
57116 prev->next_ = n->next_;
57117 delete_node(n);
57118 }
57119
57120 delete_extra_node(prev);
57121
57122 bucket_pointer end = this->get_bucket(this->bucket_count_ + 1);
57123 for(bucket_pointer it = this->buckets_; it != end; ++it)
57124 {
57125 bucket_allocator_traits::destroy(bucket_alloc(),
57126 boost::addressof(*it));
57127 }
57128
57129 bucket_allocator_traits::deallocate(bucket_alloc(),
57130 this->buckets_, this->bucket_count_ + 1);
57131
57132 this->buckets_ = bucket_pointer();
57133 }
57134
57135 (static_cast<void> (0));
57136 }
57137
57138 void clear()
57139 {
57140 if(!this->size_) return;
57141
57142 previous_pointer prev = this->get_previous_start();
57143
57144 while(prev->next_) {
57145 node_pointer n = static_cast<node_pointer>(prev->next_);
57146 prev->next_ = n->next_;
57147 delete_node(n);
57148 }
57149
57150 bucket_pointer end = this->get_bucket(this->bucket_count_);
57151 for(bucket_pointer it = this->buckets_; it != end; ++it)
57152 {
57153 it->next_ = node_pointer();
57154 }
57155
57156 (static_cast<void> (0));
57157 }
57158
57159
57160
57161 void fix_buckets(bucket_pointer bucket,
57162 previous_pointer prev, node_pointer next)
57163 {
57164 if (!next)
57165 {
57166 if (bucket->next_ == prev) bucket->next_ = node_pointer();
57167 }
57168 else
57169 {
57170 bucket_pointer next_bucket = this->get_bucket(
57171 next->hash_ % this->bucket_count_);
57172
57173 if (next_bucket != bucket)
57174 {
57175 next_bucket->next_ = prev;
57176 if (bucket->next_ == prev) bucket->next_ = node_pointer();
57177 }
57178 }
57179 }
57180
57181
57182
57183 void fix_buckets_range(std::size_t bucket_index,
57184 previous_pointer prev, node_pointer begin, node_pointer end)
57185 {
57186 node_pointer n = begin;
57187
57188
57189
57190 if (this->get_bucket(bucket_index)->next_ != prev)
57191 {
57192 for(;;) {
57193 n = static_cast<node_pointer>(n->next_);
57194 if (n == end) return;
57195
57196 std::size_t new_bucket_index =
57197 n->hash_ % this->bucket_count_;
57198 if (bucket_index != new_bucket_index) {
57199 bucket_index = new_bucket_index;
57200 break;
57201 }
57202 }
57203 }
57204
57205
57206
57207 this->get_bucket(bucket_index)->next_ = previous_pointer();
57208 for(;;) {
57209 n = static_cast<node_pointer>(n->next_);
57210 if (n == end) break;
57211
57212 std::size_t new_bucket_index =
57213 n->hash_ % this->bucket_count_;
57214 if (bucket_index != new_bucket_index) {
57215 bucket_index = new_bucket_index;
57216 this->get_bucket(bucket_index)->next_ = previous_pointer();
57217 }
57218 };
57219
57220
57221 if (n) {
57222 this->get_bucket(n->hash_ % this->bucket_count_)->next_
57223 = prev;
57224 }
57225 }
57226 };
57227 # 561 "../boost/unordered/detail/buckets.hpp"
57228 template <class H, class P> class set_hash_functions;
57229
57230 template <class H, class P>
57231 class functions
57232 {
57233 friend class boost::unordered::detail::set_hash_functions<H, P>;
57234 functions& operator=(functions const&);
57235
57236 typedef compressed<H, P> function_pair;
57237
57238 typedef typename boost::aligned_storage<
57239 sizeof(function_pair),
57240 boost::alignment_of<function_pair>::value>::type aligned_function;
57241
57242 bool current_;
57243 aligned_function funcs_[2];
57244
57245 function_pair const& current() const {
57246 return *static_cast<function_pair const*>(
57247 static_cast<void const*>(&funcs_[current_]));
57248 }
57249
57250 void construct(bool which, H const& hf, P const& eq)
57251 {
57252 new((void*) &funcs_[which]) function_pair(hf, eq);
57253 }
57254
57255 void construct(bool which, function_pair const& f)
57256 {
57257 new((void*) &funcs_[which]) function_pair(f);
57258 }
57259
57260 void destroy(bool which)
57261 {
57262 boost::unordered::detail::destroy((function_pair*)(&funcs_[which]));
57263 }
57264
57265 public:
57266
57267 functions(H const& hf, P const& eq)
57268 : current_(false)
57269 {
57270 construct(current_, hf, eq);
57271 }
57272
57273 functions(functions const& bf)
57274 : current_(false)
57275 {
57276 construct(current_, bf.current());
57277 }
57278
57279 ~functions() {
57280 this->destroy(current_);
57281 }
57282
57283 H const& hash_function() const {
57284 return current().first();
57285 }
57286
57287 P const& key_eq() const {
57288 return current().second();
57289 }
57290 };
57291
57292 template <class H, class P>
57293 class set_hash_functions
57294 {
57295 set_hash_functions(set_hash_functions const&);
57296 set_hash_functions& operator=(set_hash_functions const&);
57297
57298 functions<H,P>& functions_;
57299 bool tmp_functions_;
57300
57301 public:
57302
57303 set_hash_functions(functions<H,P>& f, H const& h, P const& p)
57304 : functions_(f),
57305 tmp_functions_(!f.current_)
57306 {
57307 f.construct(tmp_functions_, h, p);
57308 }
57309
57310 set_hash_functions(functions<H,P>& f, functions<H,P> const& other)
57311 : functions_(f),
57312 tmp_functions_(!f.current_)
57313 {
57314 f.construct(tmp_functions_, other.current());
57315 }
57316
57317 ~set_hash_functions()
57318 {
57319 functions_.destroy(tmp_functions_);
57320 }
57321
57322 void commit()
57323 {
57324 functions_.current_ = tmp_functions_;
57325 tmp_functions_ = !tmp_functions_;
57326 }
57327 };
57328 }}}
57329 # 11 "../boost/unordered/detail/table.hpp" 2
57330
57331
57332
57333
57334 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 1 3
57335 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
57336
57337 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
57338
57339
57340
57341
57342 # 1 "/usr/include/math.h" 1 3 4
57343 # 30 "/usr/include/math.h" 3 4
57344 extern "C" {
57345
57346
57347
57348 # 1 "/usr/include/bits/huge_val.h" 1 3 4
57349 # 35 "/usr/include/math.h" 2 3 4
57350
57351 # 1 "/usr/include/bits/huge_valf.h" 1 3 4
57352 # 37 "/usr/include/math.h" 2 3 4
57353 # 1 "/usr/include/bits/huge_vall.h" 1 3 4
57354 # 38 "/usr/include/math.h" 2 3 4
57355
57356
57357 # 1 "/usr/include/bits/inf.h" 1 3 4
57358 # 41 "/usr/include/math.h" 2 3 4
57359
57360
57361 # 1 "/usr/include/bits/nan.h" 1 3 4
57362 # 44 "/usr/include/math.h" 2 3 4
57363
57364
57365
57366 # 1 "/usr/include/bits/mathdef.h" 1 3 4
57367 # 26 "/usr/include/bits/mathdef.h" 3 4
57368 # 1 "/usr/include/bits/wordsize.h" 1 3 4
57369 # 27 "/usr/include/bits/mathdef.h" 2 3 4
57370
57371
57372
57373
57374 typedef float float_t;
57375 typedef double double_t;
57376 # 48 "/usr/include/math.h" 2 3 4
57377 # 71 "/usr/include/math.h" 3 4
57378 # 1 "/usr/include/bits/mathcalls.h" 1 3 4
57379 # 53 "/usr/include/bits/mathcalls.h" 3 4
57380
57381
57382 extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
57383
57384 extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
57385
57386 extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
57387
57388 extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
57389
57390
57391 extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
57392
57393 extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
57394
57395 extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
57396
57397
57398
57399
57400 extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
57401
57402 extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
57403
57404 extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
57405
57406
57407
57408
57409 extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw ()
57410 ;
57411
57412
57413
57414
57415
57416 extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
57417
57418 extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
57419
57420 extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
57421
57422
57423
57424
57425
57426
57427
57428 extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
57429
57430
57431 extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
57432
57433
57434 extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
57435
57436
57437 extern double log (double __x) throw (); extern double __log (double __x) throw ();
57438
57439
57440 extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
57441
57442
57443 extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ();
57444
57445
57446
57447
57448 extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw ();
57449
57450 extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw ();
57451
57452
57453
57454
57455
57456 extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
57457
57458
57459 extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
57460
57461
57462 extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
57463
57464
57465
57466
57467
57468
57469 extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
57470
57471
57472 extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
57473
57474
57475
57476
57477
57478
57479
57480
57481 extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
57482
57483
57484 extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
57485
57486
57487
57488
57489
57490 extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
57491
57492
57493
57494
57495
57496
57497 extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
57498
57499
57500
57501
57502
57503
57504
57505
57506 extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
57507
57508
57509 extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
57510
57511
57512 extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
57513
57514
57515 extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
57516
57517
57518
57519
57520 extern int __isinf (double __value) throw () __attribute__ ((__const__));
57521
57522
57523 extern int __finite (double __value) throw () __attribute__ ((__const__));
57524
57525
57526
57527
57528
57529 extern int isinf (double __value) throw () __attribute__ ((__const__));
57530
57531
57532 extern int finite (double __value) throw () __attribute__ ((__const__));
57533
57534
57535 extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
57536
57537
57538
57539 extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
57540
57541
57542
57543
57544
57545 extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));
57546
57547
57548
57549
57550
57551
57552 extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));
57553
57554
57555
57556
57557
57558 extern int __isnan (double __value) throw () __attribute__ ((__const__));
57559
57560
57561
57562 extern int isnan (double __value) throw () __attribute__ ((__const__));
57563
57564
57565 extern double j0 (double) throw (); extern double __j0 (double) throw ();
57566 extern double j1 (double) throw (); extern double __j1 (double) throw ();
57567 extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
57568 extern double y0 (double) throw (); extern double __y0 (double) throw ();
57569 extern double y1 (double) throw (); extern double __y1 (double) throw ();
57570 extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
57571
57572
57573
57574
57575
57576
57577 extern double erf (double) throw (); extern double __erf (double) throw ();
57578 extern double erfc (double) throw (); extern double __erfc (double) throw ();
57579 extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
57580
57581
57582
57583
57584
57585
57586 extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
57587
57588
57589
57590
57591
57592 extern double gamma (double) throw (); extern double __gamma (double) throw ();
57593
57594
57595
57596
57597
57598
57599 extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
57600
57601
57602
57603
57604
57605
57606
57607 extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
57608
57609
57610 extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));
57611
57612 extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));
57613
57614
57615
57616 extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
57617
57618
57619
57620 extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
57621
57622
57623
57624 extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
57625
57626
57627
57628
57629 extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
57630
57631
57632
57633 extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
57634
57635
57636
57637 extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
57638
57639
57640
57641 extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
57642
57643
57644
57645
57646 extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();
57647
57648
57649
57650
57651
57652
57653 extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
57654 extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
57655
57656
57657
57658 extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
57659 extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
57660
57661
57662
57663 extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
57664
57665
57666 extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();
57667
57668
57669 extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();
57670
57671
57672
57673 extern int __fpclassify (double __value) throw ()
57674 __attribute__ ((__const__));
57675
57676
57677 extern int __signbit (double __value) throw ()
57678 __attribute__ ((__const__));
57679
57680
57681
57682 extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();
57683
57684
57685
57686
57687
57688
57689
57690
57691 extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw ();
57692 # 72 "/usr/include/math.h" 2 3 4
57693 # 94 "/usr/include/math.h" 3 4
57694 # 1 "/usr/include/bits/mathcalls.h" 1 3 4
57695 # 53 "/usr/include/bits/mathcalls.h" 3 4
57696
57697
57698 extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
57699
57700 extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
57701
57702 extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
57703
57704 extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
57705
57706
57707 extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
57708
57709 extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
57710
57711 extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
57712
57713
57714
57715
57716 extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
57717
57718 extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
57719
57720 extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
57721
57722
57723
57724
57725 extern void
57726 sincosf
57727 # 82 "/usr/include/bits/mathcalls.h" 3 4
57728 (float __x, float *__sinx, float *__cosx) throw (); extern void
57729 __sincosf
57730 # 82 "/usr/include/bits/mathcalls.h" 3 4
57731 (float __x, float *__sinx, float *__cosx) throw ()
57732 ;
57733
57734
57735
57736
57737
57738 extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
57739
57740 extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
57741
57742 extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
57743
57744
57745
57746
57747
57748
57749
57750 extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
57751
57752
57753 extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
57754
57755
57756 extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
57757
57758
57759 extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
57760
57761
57762 extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
57763
57764
57765 extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ();
57766
57767
57768
57769
57770 extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw ();
57771
57772 extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw ();
57773
57774
57775
57776
57777
57778 extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
57779
57780
57781 extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
57782
57783
57784 extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
57785
57786
57787
57788
57789
57790
57791 extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
57792
57793
57794 extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
57795
57796
57797
57798
57799
57800
57801
57802
57803 extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
57804
57805
57806 extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
57807
57808
57809
57810
57811
57812 extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
57813
57814
57815
57816
57817
57818
57819 extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
57820
57821
57822
57823
57824
57825
57826
57827
57828 extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
57829
57830
57831 extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
57832
57833
57834 extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
57835
57836
57837 extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
57838
57839
57840
57841
57842 extern int __isinff (float __value) throw () __attribute__ ((__const__));
57843
57844
57845 extern int __finitef (float __value) throw () __attribute__ ((__const__));
57846
57847
57848
57849
57850
57851 extern int isinff (float __value) throw () __attribute__ ((__const__));
57852
57853
57854 extern int finitef (float __value) throw () __attribute__ ((__const__));
57855
57856
57857 extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
57858
57859
57860
57861 extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
57862
57863
57864
57865
57866
57867 extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));
57868
57869
57870
57871
57872
57873
57874 extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));
57875
57876
57877
57878
57879
57880 extern int __isnanf (float __value) throw () __attribute__ ((__const__));
57881
57882
57883
57884 extern int isnanf (float __value) throw () __attribute__ ((__const__));
57885
57886
57887 extern float j0f (float) throw (); extern float __j0f (float) throw ();
57888 extern float j1f (float) throw (); extern float __j1f (float) throw ();
57889 extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
57890 extern float y0f (float) throw (); extern float __y0f (float) throw ();
57891 extern float y1f (float) throw (); extern float __y1f (float) throw ();
57892 extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
57893
57894
57895
57896
57897
57898
57899 extern float erff (float) throw (); extern float __erff (float) throw ();
57900 extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
57901 extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
57902
57903
57904
57905
57906
57907
57908 extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
57909
57910
57911
57912
57913
57914 extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
57915
57916
57917
57918
57919
57920
57921 extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
57922
57923
57924
57925
57926
57927
57928
57929 extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
57930
57931
57932 extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));
57933
57934 extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));
57935
57936
57937
57938 extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
57939
57940
57941
57942 extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
57943
57944
57945
57946 extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
57947
57948
57949
57950
57951 extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
57952
57953
57954
57955 extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
57956
57957
57958
57959 extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
57960
57961
57962
57963 extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
57964
57965
57966
57967
57968 extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();
57969
57970
57971
57972
57973
57974
57975 extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
57976 extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
57977
57978
57979
57980 extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
57981 extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
57982
57983
57984
57985 extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
57986
57987
57988 extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();
57989
57990
57991 extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();
57992
57993
57994
57995 extern int __fpclassifyf (float __value) throw ()
57996 __attribute__ ((__const__));
57997
57998
57999 extern int __signbitf (float __value) throw ()
58000 __attribute__ ((__const__));
58001
58002
58003
58004 extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();
58005
58006
58007
58008
58009
58010
58011
58012
58013 extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw ();
58014 # 95 "/usr/include/math.h" 2 3 4
58015 # 141 "/usr/include/math.h" 3 4
58016 # 1 "/usr/include/bits/mathcalls.h" 1 3 4
58017 # 53 "/usr/include/bits/mathcalls.h" 3 4
58018
58019
58020 extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw ();
58021
58022 extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw ();
58023
58024 extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw ();
58025
58026 extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw ();
58027
58028
58029 extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw ();
58030
58031 extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw ();
58032
58033 extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw ();
58034
58035
58036
58037
58038 extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw ();
58039
58040 extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw ();
58041
58042 extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw ();
58043
58044
58045
58046
58047 extern void
58048 sincosl
58049 # 82 "/usr/include/bits/mathcalls.h" 3 4
58050 (long double __x, long double *__sinx, long double *__cosx) throw (); extern void
58051 __sincosl
58052 # 82 "/usr/include/bits/mathcalls.h" 3 4
58053 (long double __x, long double *__sinx, long double *__cosx) throw ()
58054 ;
58055
58056
58057
58058
58059
58060 extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw ();
58061
58062 extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw ();
58063
58064 extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw ();
58065
58066
58067
58068
58069
58070
58071
58072 extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw ();
58073
58074
58075 extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw ();
58076
58077
58078 extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw ();
58079
58080
58081 extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw ();
58082
58083
58084 extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw ();
58085
58086
58087 extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw ();
58088
58089
58090
58091
58092 extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw ();
58093
58094 extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw ();
58095
58096
58097
58098
58099
58100 extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw ();
58101
58102
58103 extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw ();
58104
58105
58106 extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw ();
58107
58108
58109
58110
58111
58112
58113 extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw ();
58114
58115
58116 extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw ();
58117
58118
58119
58120
58121
58122
58123
58124
58125 extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw ();
58126
58127
58128 extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw ();
58129
58130
58131
58132
58133
58134 extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw ();
58135
58136
58137
58138
58139
58140
58141 extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw ();
58142
58143
58144
58145
58146
58147
58148
58149
58150 extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__));
58151
58152
58153 extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__));
58154
58155
58156 extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__));
58157
58158
58159 extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw ();
58160
58161
58162
58163
58164 extern int __isinfl (long double __value) throw () __attribute__ ((__const__));
58165
58166
58167 extern int __finitel (long double __value) throw () __attribute__ ((__const__));
58168
58169
58170
58171
58172
58173 extern int isinfl (long double __value) throw () __attribute__ ((__const__));
58174
58175
58176 extern int finitel (long double __value) throw () __attribute__ ((__const__));
58177
58178
58179 extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw ();
58180
58181
58182
58183 extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw ();
58184
58185
58186
58187
58188
58189 extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__));
58190
58191
58192
58193
58194
58195
58196 extern long double nanl (__const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) throw () __attribute__ ((__const__));
58197
58198
58199
58200
58201
58202 extern int __isnanl (long double __value) throw () __attribute__ ((__const__));
58203
58204
58205
58206 extern int isnanl (long double __value) throw () __attribute__ ((__const__));
58207
58208
58209 extern long double j0l (long double) throw (); extern long double __j0l (long double) throw ();
58210 extern long double j1l (long double) throw (); extern long double __j1l (long double) throw ();
58211 extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw ();
58212 extern long double y0l (long double) throw (); extern long double __y0l (long double) throw ();
58213 extern long double y1l (long double) throw (); extern long double __y1l (long double) throw ();
58214 extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw ();
58215
58216
58217
58218
58219
58220
58221 extern long double erfl (long double) throw (); extern long double __erfl (long double) throw ();
58222 extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw ();
58223 extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw ();
58224
58225
58226
58227
58228
58229
58230 extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw ();
58231
58232
58233
58234
58235
58236 extern long double gammal (long double) throw (); extern long double __gammal (long double) throw ();
58237
58238
58239
58240
58241
58242
58243 extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw ();
58244
58245
58246
58247
58248
58249
58250
58251 extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw ();
58252
58253
58254 extern long double nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__));
58255
58256 extern long double nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__));
58257
58258
58259
58260 extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw ();
58261
58262
58263
58264 extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw ();
58265
58266
58267
58268 extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw ();
58269
58270
58271
58272
58273 extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw ();
58274
58275
58276
58277 extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw ();
58278
58279
58280
58281 extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__));
58282
58283
58284
58285 extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__));
58286
58287
58288
58289
58290 extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw ();
58291
58292
58293
58294
58295
58296
58297 extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw ();
58298 extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw ();
58299
58300
58301
58302 extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw ();
58303 extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw ();
58304
58305
58306
58307 extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw ();
58308
58309
58310 extern long double fmaxl (long double __x, long double __y) throw (); extern long double __fmaxl (long double __x, long double __y) throw ();
58311
58312
58313 extern long double fminl (long double __x, long double __y) throw (); extern long double __fminl (long double __x, long double __y) throw ();
58314
58315
58316
58317 extern int __fpclassifyl (long double __value) throw ()
58318 __attribute__ ((__const__));
58319
58320
58321 extern int __signbitl (long double __value) throw ()
58322 __attribute__ ((__const__));
58323
58324
58325
58326 extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw ();
58327
58328
58329
58330
58331
58332
58333
58334
58335 extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw ();
58336 # 142 "/usr/include/math.h" 2 3 4
58337 # 157 "/usr/include/math.h" 3 4
58338 extern int signgam;
58339 # 198 "/usr/include/math.h" 3 4
58340 enum
58341 {
58342 FP_NAN,
58343
58344 FP_INFINITE,
58345
58346 FP_ZERO,
58347
58348 FP_SUBNORMAL,
58349
58350 FP_NORMAL
58351
58352 };
58353 # 291 "/usr/include/math.h" 3 4
58354 typedef enum
58355 {
58356 _IEEE_ = -1,
58357 _SVID_,
58358 _XOPEN_,
58359 _POSIX_,
58360 _ISOC_
58361 } _LIB_VERSION_TYPE;
58362
58363
58364
58365
58366 extern _LIB_VERSION_TYPE _LIB_VERSION;
58367 # 314 "/usr/include/math.h" 3 4
58368 struct __exception
58369
58370
58371
58372 {
58373 int type;
58374 char *name;
58375 double arg1;
58376 double arg2;
58377 double retval;
58378 };
58379
58380
58381 extern int matherr (struct __exception *__exc) throw ();
58382 # 416 "/usr/include/math.h" 3 4
58383 # 1 "/usr/include/bits/mathinline.h" 1 3 4
58384 # 25 "/usr/include/bits/mathinline.h" 3 4
58385 # 1 "/usr/include/bits/wordsize.h" 1 3 4
58386 # 26 "/usr/include/bits/mathinline.h" 2 3 4
58387 # 37 "/usr/include/bits/mathinline.h" 3 4
58388 extern __inline __attribute__ ((__gnu_inline__)) int
58389 __signbitf (float __x) throw ()
58390 {
58391
58392
58393
58394
58395 int __m;
58396 __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x));
58397 return __m & 0x8;
58398
58399 }
58400 extern __inline __attribute__ ((__gnu_inline__)) int
58401 __signbit (double __x) throw ()
58402 {
58403
58404
58405
58406
58407 int __m;
58408 __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x));
58409 return __m & 0x80;
58410
58411 }
58412 extern __inline __attribute__ ((__gnu_inline__)) int
58413 __signbitl (long double __x) throw ()
58414 {
58415 __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
58416 return (__u.__i[2] & 0x8000) != 0;
58417 }
58418 # 417 "/usr/include/math.h" 2 3 4
58419 # 472 "/usr/include/math.h" 3 4
58420 }
58421 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 2 3
58422 # 77 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
58423 namespace std __attribute__ ((__visibility__ ("default")))
58424 {
58425
58426
58427 inline double
58428 abs(double __x)
58429 { return __builtin_fabs(__x); }
58430
58431 inline float
58432 abs(float __x)
58433 { return __builtin_fabsf(__x); }
58434
58435 inline long double
58436 abs(long double __x)
58437 { return __builtin_fabsl(__x); }
58438
58439 template<typename _Tp>
58440 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58441 double>::__type
58442 abs(_Tp __x)
58443 { return __builtin_fabs(__x); }
58444
58445 using ::acos;
58446
58447 inline float
58448 acos(float __x)
58449 { return __builtin_acosf(__x); }
58450
58451 inline long double
58452 acos(long double __x)
58453 { return __builtin_acosl(__x); }
58454
58455 template<typename _Tp>
58456 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58457 double>::__type
58458 acos(_Tp __x)
58459 { return __builtin_acos(__x); }
58460
58461 using ::asin;
58462
58463 inline float
58464 asin(float __x)
58465 { return __builtin_asinf(__x); }
58466
58467 inline long double
58468 asin(long double __x)
58469 { return __builtin_asinl(__x); }
58470
58471 template<typename _Tp>
58472 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58473 double>::__type
58474 asin(_Tp __x)
58475 { return __builtin_asin(__x); }
58476
58477 using ::atan;
58478
58479 inline float
58480 atan(float __x)
58481 { return __builtin_atanf(__x); }
58482
58483 inline long double
58484 atan(long double __x)
58485 { return __builtin_atanl(__x); }
58486
58487 template<typename _Tp>
58488 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58489 double>::__type
58490 atan(_Tp __x)
58491 { return __builtin_atan(__x); }
58492
58493 using ::atan2;
58494
58495 inline float
58496 atan2(float __y, float __x)
58497 { return __builtin_atan2f(__y, __x); }
58498
58499 inline long double
58500 atan2(long double __y, long double __x)
58501 { return __builtin_atan2l(__y, __x); }
58502
58503 template<typename _Tp, typename _Up>
58504 inline
58505 typename __gnu_cxx::__promote_2<
58506 typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
58507 && __is_arithmetic<_Up>::__value,
58508 _Tp>::__type, _Up>::__type
58509 atan2(_Tp __y, _Up __x)
58510 {
58511 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
58512 return atan2(__type(__y), __type(__x));
58513 }
58514
58515 using ::ceil;
58516
58517 inline float
58518 ceil(float __x)
58519 { return __builtin_ceilf(__x); }
58520
58521 inline long double
58522 ceil(long double __x)
58523 { return __builtin_ceill(__x); }
58524
58525 template<typename _Tp>
58526 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58527 double>::__type
58528 ceil(_Tp __x)
58529 { return __builtin_ceil(__x); }
58530
58531 using ::cos;
58532
58533 inline float
58534 cos(float __x)
58535 { return __builtin_cosf(__x); }
58536
58537 inline long double
58538 cos(long double __x)
58539 { return __builtin_cosl(__x); }
58540
58541 template<typename _Tp>
58542 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58543 double>::__type
58544 cos(_Tp __x)
58545 { return __builtin_cos(__x); }
58546
58547 using ::cosh;
58548
58549 inline float
58550 cosh(float __x)
58551 { return __builtin_coshf(__x); }
58552
58553 inline long double
58554 cosh(long double __x)
58555 { return __builtin_coshl(__x); }
58556
58557 template<typename _Tp>
58558 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58559 double>::__type
58560 cosh(_Tp __x)
58561 { return __builtin_cosh(__x); }
58562
58563 using ::exp;
58564
58565 inline float
58566 exp(float __x)
58567 { return __builtin_expf(__x); }
58568
58569 inline long double
58570 exp(long double __x)
58571 { return __builtin_expl(__x); }
58572
58573 template<typename _Tp>
58574 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58575 double>::__type
58576 exp(_Tp __x)
58577 { return __builtin_exp(__x); }
58578
58579 using ::fabs;
58580
58581 inline float
58582 fabs(float __x)
58583 { return __builtin_fabsf(__x); }
58584
58585 inline long double
58586 fabs(long double __x)
58587 { return __builtin_fabsl(__x); }
58588
58589 template<typename _Tp>
58590 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58591 double>::__type
58592 fabs(_Tp __x)
58593 { return __builtin_fabs(__x); }
58594
58595 using ::floor;
58596
58597 inline float
58598 floor(float __x)
58599 { return __builtin_floorf(__x); }
58600
58601 inline long double
58602 floor(long double __x)
58603 { return __builtin_floorl(__x); }
58604
58605 template<typename _Tp>
58606 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58607 double>::__type
58608 floor(_Tp __x)
58609 { return __builtin_floor(__x); }
58610
58611 using ::fmod;
58612
58613 inline float
58614 fmod(float __x, float __y)
58615 { return __builtin_fmodf(__x, __y); }
58616
58617 inline long double
58618 fmod(long double __x, long double __y)
58619 { return __builtin_fmodl(__x, __y); }
58620
58621 using ::frexp;
58622
58623 inline float
58624 frexp(float __x, int* __exp)
58625 { return __builtin_frexpf(__x, __exp); }
58626
58627 inline long double
58628 frexp(long double __x, int* __exp)
58629 { return __builtin_frexpl(__x, __exp); }
58630
58631 template<typename _Tp>
58632 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58633 double>::__type
58634 frexp(_Tp __x, int* __exp)
58635 { return __builtin_frexp(__x, __exp); }
58636
58637 using ::ldexp;
58638
58639 inline float
58640 ldexp(float __x, int __exp)
58641 { return __builtin_ldexpf(__x, __exp); }
58642
58643 inline long double
58644 ldexp(long double __x, int __exp)
58645 { return __builtin_ldexpl(__x, __exp); }
58646
58647 template<typename _Tp>
58648 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58649 double>::__type
58650 ldexp(_Tp __x, int __exp)
58651 { return __builtin_ldexp(__x, __exp); }
58652
58653 using ::log;
58654
58655 inline float
58656 log(float __x)
58657 { return __builtin_logf(__x); }
58658
58659 inline long double
58660 log(long double __x)
58661 { return __builtin_logl(__x); }
58662
58663 template<typename _Tp>
58664 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58665 double>::__type
58666 log(_Tp __x)
58667 { return __builtin_log(__x); }
58668
58669 using ::log10;
58670
58671 inline float
58672 log10(float __x)
58673 { return __builtin_log10f(__x); }
58674
58675 inline long double
58676 log10(long double __x)
58677 { return __builtin_log10l(__x); }
58678
58679 template<typename _Tp>
58680 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58681 double>::__type
58682 log10(_Tp __x)
58683 { return __builtin_log10(__x); }
58684
58685 using ::modf;
58686
58687 inline float
58688 modf(float __x, float* __iptr)
58689 { return __builtin_modff(__x, __iptr); }
58690
58691 inline long double
58692 modf(long double __x, long double* __iptr)
58693 { return __builtin_modfl(__x, __iptr); }
58694
58695 using ::pow;
58696
58697 inline float
58698 pow(float __x, float __y)
58699 { return __builtin_powf(__x, __y); }
58700
58701 inline long double
58702 pow(long double __x, long double __y)
58703 { return __builtin_powl(__x, __y); }
58704
58705
58706
58707
58708 inline double
58709 pow(double __x, int __i)
58710 { return __builtin_powi(__x, __i); }
58711
58712 inline float
58713 pow(float __x, int __n)
58714 { return __builtin_powif(__x, __n); }
58715
58716 inline long double
58717 pow(long double __x, int __n)
58718 { return __builtin_powil(__x, __n); }
58719
58720
58721 template<typename _Tp, typename _Up>
58722 inline
58723 typename __gnu_cxx::__promote_2<
58724 typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
58725 && __is_arithmetic<_Up>::__value,
58726 _Tp>::__type, _Up>::__type
58727 pow(_Tp __x, _Up __y)
58728 {
58729 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
58730 return pow(__type(__x), __type(__y));
58731 }
58732
58733 using ::sin;
58734
58735 inline float
58736 sin(float __x)
58737 { return __builtin_sinf(__x); }
58738
58739 inline long double
58740 sin(long double __x)
58741 { return __builtin_sinl(__x); }
58742
58743 template<typename _Tp>
58744 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58745 double>::__type
58746 sin(_Tp __x)
58747 { return __builtin_sin(__x); }
58748
58749 using ::sinh;
58750
58751 inline float
58752 sinh(float __x)
58753 { return __builtin_sinhf(__x); }
58754
58755 inline long double
58756 sinh(long double __x)
58757 { return __builtin_sinhl(__x); }
58758
58759 template<typename _Tp>
58760 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58761 double>::__type
58762 sinh(_Tp __x)
58763 { return __builtin_sinh(__x); }
58764
58765 using ::sqrt;
58766
58767 inline float
58768 sqrt(float __x)
58769 { return __builtin_sqrtf(__x); }
58770
58771 inline long double
58772 sqrt(long double __x)
58773 { return __builtin_sqrtl(__x); }
58774
58775 template<typename _Tp>
58776 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58777 double>::__type
58778 sqrt(_Tp __x)
58779 { return __builtin_sqrt(__x); }
58780
58781 using ::tan;
58782
58783 inline float
58784 tan(float __x)
58785 { return __builtin_tanf(__x); }
58786
58787 inline long double
58788 tan(long double __x)
58789 { return __builtin_tanl(__x); }
58790
58791 template<typename _Tp>
58792 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58793 double>::__type
58794 tan(_Tp __x)
58795 { return __builtin_tan(__x); }
58796
58797 using ::tanh;
58798
58799 inline float
58800 tanh(float __x)
58801 { return __builtin_tanhf(__x); }
58802
58803 inline long double
58804 tanh(long double __x)
58805 { return __builtin_tanhl(__x); }
58806
58807 template<typename _Tp>
58808 inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
58809 double>::__type
58810 tanh(_Tp __x)
58811 { return __builtin_tanh(__x); }
58812
58813
58814 }
58815 # 487 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
58816 namespace std __attribute__ ((__visibility__ ("default")))
58817 {
58818
58819 # 737 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
58820 template<typename _Tp>
58821 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58822 int>::__type
58823 fpclassify(_Tp __f)
58824 {
58825 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58826 return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
58827 FP_SUBNORMAL, FP_ZERO, __type(__f));
58828 }
58829
58830 template<typename _Tp>
58831 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58832 int>::__type
58833 isfinite(_Tp __f)
58834 {
58835 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58836 return __builtin_isfinite(__type(__f));
58837 }
58838
58839 template<typename _Tp>
58840 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58841 int>::__type
58842 isinf(_Tp __f)
58843 {
58844 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58845 return __builtin_isinf(__type(__f));
58846 }
58847
58848 template<typename _Tp>
58849 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58850 int>::__type
58851 isnan(_Tp __f)
58852 {
58853 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58854 return __builtin_isnan(__type(__f));
58855 }
58856
58857 template<typename _Tp>
58858 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58859 int>::__type
58860 isnormal(_Tp __f)
58861 {
58862 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58863 return __builtin_isnormal(__type(__f));
58864 }
58865
58866 template<typename _Tp>
58867 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58868 int>::__type
58869 signbit(_Tp __f)
58870 {
58871 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58872 return __builtin_signbit(__type(__f));
58873 }
58874
58875 template<typename _Tp>
58876 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58877 int>::__type
58878 isgreater(_Tp __f1, _Tp __f2)
58879 {
58880 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58881 return __builtin_isgreater(__type(__f1), __type(__f2));
58882 }
58883
58884 template<typename _Tp>
58885 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58886 int>::__type
58887 isgreaterequal(_Tp __f1, _Tp __f2)
58888 {
58889 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58890 return __builtin_isgreaterequal(__type(__f1), __type(__f2));
58891 }
58892
58893 template<typename _Tp>
58894 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58895 int>::__type
58896 isless(_Tp __f1, _Tp __f2)
58897 {
58898 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58899 return __builtin_isless(__type(__f1), __type(__f2));
58900 }
58901
58902 template<typename _Tp>
58903 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58904 int>::__type
58905 islessequal(_Tp __f1, _Tp __f2)
58906 {
58907 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58908 return __builtin_islessequal(__type(__f1), __type(__f2));
58909 }
58910
58911 template<typename _Tp>
58912 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58913 int>::__type
58914 islessgreater(_Tp __f1, _Tp __f2)
58915 {
58916 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58917 return __builtin_islessgreater(__type(__f1), __type(__f2));
58918 }
58919
58920 template<typename _Tp>
58921 inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
58922 int>::__type
58923 isunordered(_Tp __f1, _Tp __f2)
58924 {
58925 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
58926 return __builtin_isunordered(__type(__f1), __type(__f2));
58927 }
58928
58929
58930
58931
58932 }
58933 # 16 "../boost/unordered/detail/table.hpp" 2
58934
58935 namespace boost { namespace unordered { namespace iterator_detail {
58936
58937
58938
58939
58940
58941
58942 template <typename NodePointer, typename Value> struct iterator;
58943 template <typename ConstNodePointer, typename NodePointer,
58944 typename Value> struct c_iterator;
58945 template <typename NodePointer, typename Value> struct l_iterator;
58946 template <typename ConstNodePointer, typename NodePointer,
58947 typename Value> struct cl_iterator;
58948
58949
58950
58951
58952
58953 template <typename NodePointer, typename Value>
58954 struct l_iterator
58955 : public boost::iterator<
58956 std::forward_iterator_tag, Value, std::ptrdiff_t,
58957 NodePointer, Value&>
58958 {
58959
58960 template <typename ConstNodePointer, typename NodePointer2,
58961 typename Value2>
58962 friend struct boost::unordered::iterator_detail::cl_iterator;
58963 private:
58964
58965 typedef NodePointer node_pointer;
58966 node_pointer ptr_;
58967 std::size_t bucket_;
58968 std::size_t bucket_count_;
58969
58970 public:
58971
58972 l_iterator() : ptr_() {}
58973
58974 l_iterator(node_pointer x, std::size_t b, std::size_t c)
58975 : ptr_(x), bucket_(b), bucket_count_(c) {}
58976
58977 Value& operator*() const {
58978 return ptr_->value();
58979 }
58980
58981 Value* operator->() const {
58982 return ptr_->value_ptr();
58983 }
58984
58985 l_iterator& operator++() {
58986 ptr_ = static_cast<node_pointer>(ptr_->next_);
58987 if (ptr_ && ptr_->hash_ % bucket_count_ != bucket_)
58988 ptr_ = node_pointer();
58989 return *this;
58990 }
58991
58992 l_iterator operator++(int) {
58993 l_iterator tmp(*this);
58994 ++(*this);
58995 return tmp;
58996 }
58997
58998 bool operator==(l_iterator x) const {
58999 return ptr_ == x.ptr_;
59000 }
59001
59002 bool operator!=(l_iterator x) const {
59003 return ptr_ != x.ptr_;
59004 }
59005 };
59006
59007 template <typename ConstNodePointer, typename NodePointer, typename Value>
59008 struct cl_iterator
59009 : public boost::iterator<
59010 std::forward_iterator_tag, Value, std::ptrdiff_t,
59011 ConstNodePointer, Value const&>
59012 {
59013 friend struct boost::unordered::iterator_detail::l_iterator
59014 <NodePointer, Value>;
59015 private:
59016
59017 typedef NodePointer node_pointer;
59018 node_pointer ptr_;
59019 std::size_t bucket_;
59020 std::size_t bucket_count_;
59021
59022 public:
59023
59024 cl_iterator() : ptr_() {}
59025
59026 cl_iterator(node_pointer x, std::size_t b, std::size_t c) :
59027 ptr_(x), bucket_(b), bucket_count_(c) {}
59028
59029 cl_iterator(boost::unordered::iterator_detail::l_iterator<
59030 NodePointer, Value> const& x) :
59031 ptr_(x.ptr_), bucket_(x.bucket_), bucket_count_(x.bucket_count_)
59032 {}
59033
59034 Value const&
59035 operator*() const {
59036 return ptr_->value();
59037 }
59038
59039 Value const* operator->() const {
59040 return ptr_->value_ptr();
59041 }
59042
59043 cl_iterator& operator++() {
59044 ptr_ = static_cast<node_pointer>(ptr_->next_);
59045 if (ptr_ && ptr_->hash_ % bucket_count_ != bucket_)
59046 ptr_ = node_pointer();
59047 return *this;
59048 }
59049
59050 cl_iterator operator++(int) {
59051 cl_iterator tmp(*this);
59052 ++(*this);
59053 return tmp;
59054 }
59055
59056 friend bool operator==(cl_iterator const& x, cl_iterator const& y) {
59057 return x.ptr_ == y.ptr_;
59058 }
59059
59060 friend bool operator!=(cl_iterator const& x, cl_iterator const& y) {
59061 return x.ptr_ != y.ptr_;
59062 }
59063 };
59064
59065 template <typename NodePointer, typename Value>
59066 struct iterator
59067 : public boost::iterator<
59068 std::forward_iterator_tag, Value, std::ptrdiff_t,
59069 NodePointer, Value&>
59070 {
59071
59072 template <typename ConstNodePointer, typename NodePointer2,
59073 typename Value2>
59074 friend struct boost::unordered::iterator_detail::c_iterator;
59075 private:
59076
59077 typedef NodePointer node_pointer;
59078 node_pointer node_;
59079
59080 public:
59081
59082 iterator() : node_() {}
59083
59084 explicit iterator(node_pointer const& x) : node_(x) {}
59085
59086 Value& operator*() const {
59087 return node_->value();
59088 }
59089
59090 Value* operator->() const {
59091 return &node_->value();
59092 }
59093
59094 iterator& operator++() {
59095 node_ = static_cast<node_pointer>(node_->next_);
59096 return *this;
59097 }
59098
59099 iterator operator++(int) {
59100 iterator tmp(node_);
59101 node_ = static_cast<node_pointer>(node_->next_);
59102 return tmp;
59103 }
59104
59105 bool operator==(iterator const& x) const {
59106 return node_ == x.node_;
59107 }
59108
59109 bool operator!=(iterator const& x) const {
59110 return node_ != x.node_;
59111 }
59112 };
59113
59114 template <typename ConstNodePointer, typename NodePointer, typename Value>
59115 struct c_iterator
59116 : public boost::iterator<
59117 std::forward_iterator_tag, Value, std::ptrdiff_t,
59118 ConstNodePointer, Value const&>
59119 {
59120 friend struct boost::unordered::iterator_detail::iterator<
59121 NodePointer, Value>;
59122
59123
59124 template <typename K, typename T, typename H, typename P, typename A>
59125 friend class boost::unordered::unordered_map;
59126 template <typename K, typename T, typename H, typename P, typename A>
59127 friend class boost::unordered::unordered_multimap;
59128 template <typename T, typename H, typename P, typename A>
59129 friend class boost::unordered::unordered_set;
59130 template <typename T, typename H, typename P, typename A>
59131 friend class boost::unordered::unordered_multiset;
59132
59133 private:
59134
59135
59136 typedef NodePointer node_pointer;
59137 node_pointer node_;
59138
59139 public:
59140
59141 c_iterator() : node_() {}
59142
59143 explicit c_iterator(node_pointer const& x) : node_(x) {}
59144
59145 c_iterator(boost::unordered::iterator_detail::iterator<
59146 NodePointer, Value> const& x) : node_(x.node_) {}
59147
59148 Value const& operator*() const {
59149 return node_->value();
59150 }
59151
59152 Value const* operator->() const {
59153 return &node_->value();
59154 }
59155
59156 c_iterator& operator++() {
59157 node_ = static_cast<node_pointer>(node_->next_);
59158 return *this;
59159 }
59160
59161 c_iterator operator++(int) {
59162 c_iterator tmp(node_);
59163 node_ = static_cast<node_pointer>(node_->next_);
59164 return tmp;
59165 }
59166
59167 friend bool operator==(c_iterator const& x, c_iterator const& y) {
59168 return x.node_ == y.node_;
59169 }
59170
59171 friend bool operator!=(c_iterator const& x, c_iterator const& y) {
59172 return x.node_ != y.node_;
59173 }
59174 };
59175 }}}
59176
59177 namespace boost { namespace unordered { namespace detail {
59178
59179
59180
59181
59182 inline std::size_t double_to_size(double f)
59183 {
59184 return f >= static_cast<double>(
59185 (std::numeric_limits<std::size_t>::max)()) ?
59186 (std::numeric_limits<std::size_t>::max)() :
59187 static_cast<std::size_t>(f);
59188 }
59189
59190
59191
59192 template <typename ValueType>
59193 struct value_base
59194 {
59195 typedef ValueType value_type;
59196
59197 typename boost::aligned_storage<
59198 sizeof(value_type),
59199 boost::alignment_of<value_type>::value>::type data_;
59200
59201 void* address() {
59202 return this;
59203 }
59204
59205 value_type& value() {
59206 return *(ValueType*) this;
59207 }
59208
59209 value_type* value_ptr() {
59210 return (ValueType*) this;
59211 }
59212
59213 private:
59214
59215 value_base& operator=(value_base const&);
59216 };
59217
59218 template <typename Types>
59219 struct table :
59220 boost::unordered::detail::buckets<
59221 typename Types::allocator,
59222 typename Types::bucket,
59223 typename Types::node>,
59224 boost::unordered::detail::functions<
59225 typename Types::hasher,
59226 typename Types::key_equal>
59227 {
59228 private:
59229 table(table const&);
59230 table& operator=(table const&);
59231 public:
59232 typedef typename Types::hasher hasher;
59233 typedef typename Types::key_equal key_equal;
59234 typedef typename Types::key_type key_type;
59235 typedef typename Types::extractor extractor;
59236 typedef typename Types::value_type value_type;
59237 typedef typename Types::table table_impl;
59238 typedef typename Types::link_pointer link_pointer;
59239
59240 typedef boost::unordered::detail::functions<
59241 typename Types::hasher,
59242 typename Types::key_equal> functions;
59243
59244 typedef boost::unordered::detail::buckets<
59245 typename Types::allocator,
59246 typename Types::bucket,
59247 typename Types::node> buckets;
59248
59249 typedef typename buckets::node_allocator node_allocator;
59250 typedef typename buckets::node_allocator_traits node_allocator_traits;
59251 typedef typename buckets::node_pointer node_pointer;
59252 typedef typename buckets::const_node_pointer const_node_pointer;
59253
59254 typedef boost::unordered::iterator_detail::
59255 iterator<node_pointer, value_type> iterator;
59256 typedef boost::unordered::iterator_detail::
59257 c_iterator<const_node_pointer, node_pointer, value_type> c_iterator;
59258 typedef boost::unordered::iterator_detail::
59259 l_iterator<node_pointer, value_type> l_iterator;
59260 typedef boost::unordered::iterator_detail::
59261 cl_iterator<const_node_pointer, node_pointer, value_type>
59262 cl_iterator;
59263
59264
59265
59266 float mlf_;
59267 std::size_t max_load_;
59268
59269
59270
59271
59272 std::size_t max_size() const
59273 {
59274 using namespace std;
59275
59276
59277 return boost::unordered::detail::double_to_size(ceil(
59278 static_cast<double>(this->mlf_) *
59279 static_cast<double>(this->max_bucket_count())
59280 )) - 1;
59281 }
59282
59283 std::size_t calculate_max_load()
59284 {
59285 using namespace std;
59286
59287
59288
59289 return boost::unordered::detail::double_to_size(ceil(
59290 static_cast<double>(this->mlf_) *
59291 static_cast<double>(this->bucket_count_)
59292 ));
59293
59294 }
59295 void max_load_factor(float z)
59296 {
59297 (static_cast<void> (0));
59298 mlf_ = (std::max)(z, minimum_max_load_factor);
59299 if (this->buckets_)
59300 this->max_load_ = this->calculate_max_load();
59301 }
59302
59303 std::size_t min_buckets_for_size(std::size_t size) const
59304 {
59305 (static_cast<void> (0));
59306
59307 using namespace std;
59308 # 398 "../boost/unordered/detail/table.hpp"
59309 return boost::unordered::detail::next_prime(
59310 boost::unordered::detail::double_to_size(floor(
59311 static_cast<double>(size) /
59312 static_cast<double>(mlf_))) + 1);
59313 }
59314
59315
59316
59317
59318 table(std::size_t num_buckets,
59319 hasher const& hf,
59320 key_equal const& eq,
59321 node_allocator const& a) :
59322 buckets(a, boost::unordered::detail::next_prime(num_buckets)),
59323 functions(hf, eq),
59324 mlf_(1.0f),
59325 max_load_(0)
59326 {}
59327
59328 table(table const& x, node_allocator const& a) :
59329 buckets(a, x.min_buckets_for_size(x.size_)),
59330 functions(x),
59331 mlf_(x.mlf_),
59332 max_load_(0)
59333 {
59334 if(x.size_) {
59335 table_impl::copy_buckets_to(x, *this);
59336 this->max_load_ = calculate_max_load();
59337 }
59338 }
59339
59340
59341 table(table& x, boost::unordered::detail::move_tag m) :
59342 buckets(x, m),
59343 functions(x),
59344 mlf_(x.mlf_),
59345 max_load_(calculate_max_load())
59346 {}
59347
59348
59349
59350 table(table& x, node_allocator const& a,
59351 boost::unordered::detail::move_tag m) :
59352 buckets(a, x.bucket_count_),
59353 functions(x),
59354 mlf_(x.mlf_),
59355 max_load_(x.max_load_)
59356 {
59357 if(a == x.node_alloc()) {
59358 this->buckets::swap(x, false_type());
59359 }
59360 else if(x.size_) {
59361
59362
59363
59364 buckets tmp(x, m);
59365 table_impl::move_buckets_to(tmp, *this);
59366 this->max_load_ = calculate_max_load();
59367 }
59368 }
59369
59370
59371
59372 node_pointer begin() const {
59373 return !this->buckets_ ?
59374 node_pointer() : this->get_start();
59375 }
59376
59377
59378
59379 void assign(table const& x)
59380 {
59381 assign(x,
59382 boost::unordered::detail::integral_constant<bool,
59383 allocator_traits<node_allocator>::
59384 propagate_on_container_copy_assignment::value>());
59385 }
59386
59387 void assign(table const& x, false_type)
59388 {
59389 table tmp(x, this->node_alloc());
59390 this->swap(tmp, false_type());
59391 }
59392
59393 void assign(table const& x, true_type)
59394 {
59395 table tmp(x, x.node_alloc());
59396
59397
59398 if(this->buckets_) this->delete_buckets();
59399
59400 this->allocators_.assign(x.allocators_);
59401 this->swap(tmp, false_type());
59402 }
59403
59404 void move_assign(table& x)
59405 {
59406 move_assign(x,
59407 boost::unordered::detail::integral_constant<bool,
59408 allocator_traits<node_allocator>::
59409 propagate_on_container_move_assignment::value>());
59410 }
59411
59412 void move_assign(table& x, true_type)
59413 {
59414 if(this->buckets_) this->delete_buckets();
59415 this->allocators_.move_assign(x.allocators_);
59416 move_assign_no_alloc(x);
59417 }
59418
59419 void move_assign(table& x, false_type)
59420 {
59421 if(this->node_alloc() == x.node_alloc()) {
59422 if(this->buckets_) this->delete_buckets();
59423 move_assign_no_alloc(x);
59424 }
59425 else {
59426 boost::unordered::detail::set_hash_functions<hasher, key_equal>
59427 new_func_this(*this, x);
59428
59429 if (x.size_) {
59430 buckets b(this->node_alloc(),
59431 x.min_buckets_for_size(x.size_));
59432 buckets tmp(x, move_tag());
59433 table_impl::move_buckets_to(tmp, b);
59434 b.swap(*this);
59435 }
59436 else {
59437 this->clear();
59438 }
59439
59440 this->mlf_ = x.mlf_;
59441 if (this->buckets_) this->max_load_ = calculate_max_load();
59442 new_func_this.commit();
59443 }
59444 }
59445
59446 void move_assign_no_alloc(table& x)
59447 {
59448 boost::unordered::detail::set_hash_functions<hasher, key_equal>
59449 new_func_this(*this, x);
59450
59451 this->move_buckets_from(x);
59452 this->mlf_ = x.mlf_;
59453 this->max_load_ = x.max_load_;
59454 new_func_this.commit();
59455 }
59456
59457
59458
59459
59460 void swap(table& x)
59461 {
59462 swap(x,
59463 boost::unordered::detail::integral_constant<bool,
59464 allocator_traits<node_allocator>::
59465 propagate_on_container_swap::value>());
59466 }
59467
59468
59469 template <typename Propagate>
59470 void swap(table& x, Propagate p)
59471 {
59472 boost::unordered::detail::set_hash_functions<hasher, key_equal>
59473 op1(*this, x);
59474 boost::unordered::detail::set_hash_functions<hasher, key_equal>
59475 op2(x, *this);
59476
59477
59478 this->buckets::swap(x, p);
59479 std::swap(this->mlf_, x.mlf_);
59480 std::swap(this->max_load_, x.max_load_);
59481 op1.commit();
59482 op2.commit();
59483 }
59484
59485
59486 void swap_contents(table& x)
59487 {
59488 this->buckets::swap(x, false_type());
59489 std::swap(this->mlf_, x.mlf_);
59490 std::swap(this->max_load_, x.max_load_);
59491 }
59492
59493
59494
59495 key_type const& get_key(value_type const& x) const
59496 {
59497 return extractor::extract(x);
59498 }
59499
59500
59501
59502 template <typename Key, typename Hash, typename Pred>
59503 node_pointer generic_find_node(
59504 Key const& k,
59505 Hash const& hash_function,
59506 Pred const& eq) const
59507 {
59508 if (!this->size_) return node_pointer();
59509 return static_cast<table_impl const*>(this)->
59510 find_node_impl(hash_function(k), k, eq);
59511 }
59512
59513 node_pointer find_node(
59514 std::size_t hash,
59515 key_type const& k) const
59516 {
59517 if (!this->size_) return node_pointer();
59518 return static_cast<table_impl const*>(this)->
59519 find_node_impl(hash, k, this->key_eq());
59520 }
59521
59522 node_pointer find_node(key_type const& k) const
59523 {
59524 if (!this->size_) return node_pointer();
59525 return static_cast<table_impl const*>(this)->
59526 find_node_impl(this->hash_function()(k), k, this->key_eq());
59527 }
59528
59529 node_pointer find_matching_node(node_pointer n) const
59530 {
59531
59532
59533
59534
59535
59536
59537 return find_node(get_key(n->value()));
59538 }
59539
59540
59541
59542 void reserve_for_insert(std::size_t);
59543 void rehash(std::size_t);
59544 };
59545
59546
59547
59548
59549
59550 template <typename Types>
59551 inline void table<Types>::reserve_for_insert(std::size_t size)
59552 {
59553 if (!this->buckets_) {
59554 this->bucket_count_ = (std::max)(this->bucket_count_,
59555 this->min_buckets_for_size(size));
59556 this->create_buckets();
59557 this->max_load_ = this->calculate_max_load();
59558 }
59559 else if(size >= max_load_) {
59560 std::size_t num_buckets
59561 = this->min_buckets_for_size((std::max)(size,
59562 this->size_ + (this->size_ >> 1)));
59563 if (num_buckets != this->bucket_count_) {
59564 static_cast<table_impl*>(this)->rehash_impl(num_buckets);
59565 this->max_load_ = this->calculate_max_load();
59566 }
59567 }
59568 }
59569
59570
59571
59572
59573 template <typename Types>
59574 void table<Types>::rehash(std::size_t min_buckets)
59575 {
59576 using namespace std;
59577
59578 if(!this->size_) {
59579 if(this->buckets_) this->delete_buckets();
59580 this->bucket_count_ = next_prime(min_buckets);
59581 }
59582 else {
59583 min_buckets = next_prime((std::max)(min_buckets,
59584 boost::unordered::detail::double_to_size(floor(
59585 static_cast<double>(this->size_) /
59586 static_cast<double>(mlf_))) + 1));
59587
59588 if(min_buckets != this->bucket_count_) {
59589 static_cast<table_impl*>(this)->rehash_impl(min_buckets);
59590 this->max_load_ = this->calculate_max_load();
59591 }
59592 }
59593 }
59594 }}}
59595 # 15 "../boost/unordered/detail/equivalent.hpp" 2
59596
59597 # 1 "../boost/unordered/detail/extract_key.hpp" 1
59598 # 11 "../boost/unordered/detail/extract_key.hpp"
59599 namespace boost {
59600 namespace unordered {
59601 namespace detail {
59602 # 25 "../boost/unordered/detail/extract_key.hpp"
59603 struct no_key {
59604 no_key() {}
59605 template <class T> no_key(T const&) {}
59606 };
59607
59608 template <typename Key, typename T>
59609 struct is_key {
59610 template <typename T2>
59611 static choice1::type test(T2 const&);
59612 static choice2::type test(Key const&);
59613
59614 enum { value = sizeof(test(boost::unordered::detail::make<T>())) ==
59615 sizeof(choice2::type) };
59616
59617 typedef typename boost::detail::if_true<value>::
59618 template then<Key const&, no_key>::type type;
59619 };
59620
59621 template <class ValueType>
59622 struct set_extractor
59623 {
59624 typedef ValueType value_type;
59625 typedef ValueType key_type;
59626
59627 static key_type const& extract(key_type const& v)
59628 {
59629 return v;
59630 }
59631
59632 static no_key extract()
59633 {
59634 return no_key();
59635 }
59636 # 66 "../boost/unordered/detail/extract_key.hpp"
59637 template <class Arg>
59638 static no_key extract(Arg const&)
59639 {
59640 return no_key();
59641 }
59642
59643 template <class Arg1, class Arg2>
59644 static no_key extract(Arg1 const&, Arg2 const&)
59645 {
59646 return no_key();
59647 }
59648
59649
59650 static bool compare_mapped(value_type const&, value_type const&)
59651 {
59652 return true;
59653 }
59654 };
59655
59656 template <class Key, class ValueType>
59657 struct map_extractor
59658 {
59659 typedef ValueType value_type;
59660 typedef typename boost::remove_const<Key>::type key_type;
59661
59662 static key_type const& extract(value_type const& v)
59663 {
59664 return v.first;
59665 }
59666
59667 static key_type const& extract(key_type const& v)
59668 {
59669 return v;
59670 }
59671
59672 template <class Second>
59673 static key_type const& extract(std::pair<key_type, Second> const& v)
59674 {
59675 return v.first;
59676 }
59677
59678 template <class Second>
59679 static key_type const& extract(
59680 std::pair<key_type const, Second> const& v)
59681 {
59682 return v.first;
59683 }
59684 # 129 "../boost/unordered/detail/extract_key.hpp"
59685 template <class Arg1>
59686 static key_type const& extract(key_type const& k, Arg1 const&)
59687 {
59688 return k;
59689 }
59690
59691 static no_key extract()
59692 {
59693 return no_key();
59694 }
59695
59696 template <class Arg>
59697 static no_key extract(Arg const&)
59698 {
59699 return no_key();
59700 }
59701
59702 template <class Arg, class Arg1>
59703 static no_key extract(Arg const&, Arg1 const&)
59704 {
59705 return no_key();
59706 }
59707 # 192 "../boost/unordered/detail/extract_key.hpp"
59708 static no_key extract(boost::unordered::piecewise_construct_t, boost::tuple<> const&) { return no_key(); } template <typename T> static typename is_key<key_type, T>::type extract(boost::unordered::piecewise_construct_t, boost::tuple<T> const& k) { return typename is_key<key_type, T>::type( boost::get<0>(k)); }
59709
59710
59711
59712
59713
59714
59715 static bool compare_mapped(value_type const& x, value_type const& y)
59716 {
59717 return x.second == y.second;
59718 }
59719 };
59720 }}}
59721 # 17 "../boost/unordered/detail/equivalent.hpp" 2
59722
59723 namespace boost { namespace unordered { namespace detail {
59724
59725 template <typename A, typename T> struct grouped_node;
59726 template <typename T> struct grouped_ptr_node;
59727 template <typename Types> struct grouped_table_impl;
59728
59729 template <typename A, typename T>
59730 struct grouped_node :
59731 boost::unordered::detail::value_base<T>
59732 {
59733 typedef typename ::boost::unordered::detail::rebind_wrap<
59734 A, grouped_node<A, T> >::type::pointer link_pointer;
59735
59736 link_pointer next_;
59737 link_pointer group_prev_;
59738 std::size_t hash_;
59739
59740 grouped_node() :
59741 next_(),
59742 group_prev_(),
59743 hash_(0)
59744 {}
59745
59746 void init(link_pointer self)
59747 {
59748 group_prev_ = self;
59749 }
59750 };
59751
59752 template <typename T>
59753 struct grouped_ptr_node :
59754 boost::unordered::detail::value_base<T>,
59755 boost::unordered::detail::ptr_bucket
59756 {
59757 typedef boost::unordered::detail::ptr_bucket bucket_base;
59758 typedef ptr_bucket* link_pointer;
59759
59760 link_pointer group_prev_;
59761 std::size_t hash_;
59762
59763 grouped_ptr_node() :
59764 bucket_base(),
59765 group_prev_(0),
59766 hash_(0)
59767 {}
59768
59769 void init(link_pointer self)
59770 {
59771 group_prev_ = self;
59772 }
59773 };
59774
59775
59776
59777
59778 template <typename A, typename T, typename NodePtr, typename BucketPtr>
59779 struct pick_grouped_node2
59780 {
59781 typedef boost::unordered::detail::grouped_node<A, T> node;
59782
59783 typedef typename boost::unordered::detail::allocator_traits<
59784 typename boost::unordered::detail::rebind_wrap<A, node>::type
59785 >::pointer node_pointer;
59786
59787 typedef boost::unordered::detail::bucket<node_pointer> bucket;
59788 typedef node_pointer link_pointer;
59789 };
59790
59791 template <typename A, typename T>
59792 struct pick_grouped_node2<A, T,
59793 boost::unordered::detail::grouped_ptr_node<T>*,
59794 boost::unordered::detail::ptr_bucket*>
59795 {
59796 typedef boost::unordered::detail::grouped_ptr_node<T> node;
59797 typedef boost::unordered::detail::ptr_bucket bucket;
59798 typedef bucket* link_pointer;
59799 };
59800
59801 template <typename A, typename T>
59802 struct pick_grouped_node
59803 {
59804 typedef boost::unordered::detail::allocator_traits<
59805 typename boost::unordered::detail::rebind_wrap<A,
59806 boost::unordered::detail::grouped_ptr_node<T> >::type
59807 > tentative_node_traits;
59808
59809 typedef boost::unordered::detail::allocator_traits<
59810 typename boost::unordered::detail::rebind_wrap<A,
59811 boost::unordered::detail::ptr_bucket >::type
59812 > tentative_bucket_traits;
59813
59814 typedef pick_grouped_node2<A, T,
59815 typename tentative_node_traits::pointer,
59816 typename tentative_bucket_traits::pointer> pick;
59817
59818 typedef typename pick::node node;
59819 typedef typename pick::bucket bucket;
59820 typedef typename pick::link_pointer link_pointer;
59821 };
59822
59823 template <typename A, typename T, typename H, typename P>
59824 struct multiset
59825 {
59826 typedef boost::unordered::detail::multiset<A, T, H, P> types;
59827
59828 typedef T value_type;
59829 typedef H hasher;
59830 typedef P key_equal;
59831 typedef T key_type;
59832
59833 typedef typename boost::unordered::detail::rebind_wrap<
59834 A, value_type>::type allocator;
59835
59836 typedef boost::unordered::detail::allocator_traits<allocator> traits;
59837 typedef boost::unordered::detail::pick_grouped_node<allocator, value_type> pick;
59838 typedef typename pick::node node;
59839 typedef typename pick::bucket bucket;
59840 typedef typename pick::link_pointer link_pointer;
59841
59842 typedef boost::unordered::detail::grouped_table_impl<types> table;
59843 typedef boost::unordered::detail::set_extractor<value_type> extractor;
59844 };
59845
59846 template <typename A, typename K, typename M, typename H, typename P>
59847 struct multimap
59848 {
59849 typedef boost::unordered::detail::multimap<A, K, M, H, P> types;
59850
59851 typedef std::pair<K const, M> value_type;
59852 typedef H hasher;
59853 typedef P key_equal;
59854 typedef K key_type;
59855
59856 typedef typename boost::unordered::detail::rebind_wrap<
59857 A, value_type>::type allocator;
59858
59859 typedef boost::unordered::detail::allocator_traits<allocator> traits;
59860 typedef boost::unordered::detail::pick_grouped_node<allocator, value_type> pick;
59861 typedef typename pick::node node;
59862 typedef typename pick::bucket bucket;
59863 typedef typename pick::link_pointer link_pointer;
59864
59865 typedef boost::unordered::detail::grouped_table_impl<types> table;
59866 typedef boost::unordered::detail::map_extractor<key_type, value_type>
59867 extractor;
59868 };
59869
59870 template <typename Types>
59871 struct grouped_table_impl : boost::unordered::detail::table<Types>
59872 {
59873 typedef boost::unordered::detail::table<Types> table;
59874 typedef typename table::value_type value_type;
59875 typedef typename table::bucket bucket;
59876 typedef typename table::buckets buckets;
59877 typedef typename table::node_pointer node_pointer;
59878 typedef typename table::node_allocator node_allocator;
59879 typedef typename table::node_allocator_traits node_allocator_traits;
59880 typedef typename table::bucket_pointer bucket_pointer;
59881 typedef typename table::link_pointer link_pointer;
59882 typedef typename table::previous_pointer previous_pointer;
59883 typedef typename table::hasher hasher;
59884 typedef typename table::key_equal key_equal;
59885 typedef typename table::key_type key_type;
59886 typedef typename table::node_constructor node_constructor;
59887 typedef typename table::extractor extractor;
59888 typedef typename table::iterator iterator;
59889
59890
59891
59892 grouped_table_impl(std::size_t n,
59893 hasher const& hf,
59894 key_equal const& eq,
59895 node_allocator const& a)
59896 : table(n, hf, eq, a)
59897 {}
59898
59899 grouped_table_impl(grouped_table_impl const& x)
59900 : table(x, node_allocator_traits::
59901 select_on_container_copy_construction(x.node_alloc())) {}
59902
59903 grouped_table_impl(grouped_table_impl const& x,
59904 node_allocator const& a)
59905 : table(x, a)
59906 {}
59907
59908 grouped_table_impl(grouped_table_impl& x,
59909 boost::unordered::detail::move_tag m)
59910 : table(x, m)
59911 {}
59912
59913 grouped_table_impl(grouped_table_impl& x,
59914 node_allocator const& a,
59915 boost::unordered::detail::move_tag m)
59916 : table(x, a, m)
59917 {}
59918
59919
59920
59921 template <class Key, class Pred>
59922 node_pointer find_node_impl(
59923 std::size_t hash,
59924 Key const& k,
59925 Pred const& eq) const
59926 {
59927 std::size_t bucket_index = hash % this->bucket_count_;
59928 node_pointer n = this->get_start(bucket_index);
59929
59930 for (;;)
59931 {
59932 if (!n) return n;
59933
59934 std::size_t node_hash = n->hash_;
59935 if (hash == node_hash)
59936 {
59937 if (eq(k, this->get_key(n->value())))
59938 return n;
59939 }
59940 else
59941 {
59942 if (node_hash % this->bucket_count_ != bucket_index)
59943 return node_pointer();
59944 }
59945
59946 n = static_cast<node_pointer>(
59947 static_cast<node_pointer>(n->group_prev_)->next_);
59948 }
59949 }
59950
59951 std::size_t count(key_type const& k) const
59952 {
59953 node_pointer n = this->find_node(k);
59954 if (!n) return 0;
59955
59956 std::size_t count = 0;
59957 node_pointer it = n;
59958 do {
59959 it = static_cast<node_pointer>(it->group_prev_);
59960 ++count;
59961 } while(it != n);
59962
59963 return count;
59964 }
59965
59966 std::pair<iterator, iterator>
59967 equal_range(key_type const& k) const
59968 {
59969 node_pointer n = this->find_node(k);
59970 return std::make_pair(
59971 iterator(n), iterator(n ?
59972 static_cast<node_pointer>(
59973 static_cast<node_pointer>(n->group_prev_)->next_) :
59974 n));
59975 }
59976
59977
59978
59979 bool equals(grouped_table_impl const& other) const
59980 {
59981 if(this->size_ != other.size_) return false;
59982 if(!this->size_) return true;
59983
59984 for(node_pointer n1 = this->get_start(); n1;)
59985 {
59986 node_pointer n2 = other.find_matching_node(n1);
59987 if (!n2) return false;
59988 node_pointer end1 = static_cast<node_pointer>(
59989 static_cast<node_pointer>(n1->group_prev_)->next_);
59990 node_pointer end2 = static_cast<node_pointer>(
59991 static_cast<node_pointer>(n2->group_prev_)->next_);
59992 if (!group_equals(n1, end1, n2, end2)) return false;
59993 n1 = end1;
59994 }
59995
59996 return true;
59997 }
59998
59999
60000
60001 static bool group_equals(node_pointer n1, node_pointer end1,
60002 node_pointer n2, node_pointer end2)
60003 {
60004 for(;;)
60005 {
60006 if (n1->value() != n2->value())
60007 break;
60008
60009 n1 = static_cast<node_pointer>(n1->next_);
60010 n2 = static_cast<node_pointer>(n2->next_);
60011
60012 if (n1 == end1) return n2 == end2;
60013 if (n2 == end2) return false;
60014 }
60015
60016 for(node_pointer n1a = n1, n2a = n2;;)
60017 {
60018 n1a = static_cast<node_pointer>(n1a->next_);
60019 n2a = static_cast<node_pointer>(n2a->next_);
60020
60021 if (n1a == end1)
60022 {
60023 if (n2a == end2) break;
60024 else return false;
60025 }
60026
60027 if (n2a == end2) return false;
60028 }
60029
60030 node_pointer start = n1;
60031 for(;n1 != end2; n1 = static_cast<node_pointer>(n1->next_))
60032 {
60033 value_type const& v = n1->value();
60034 if (find(start, n1, v)) continue;
60035 std::size_t matches = count_equal(n2, end2, v);
60036 if (!matches || matches != 1 + count_equal(
60037 static_cast<node_pointer>(n1->next_), end1, v))
60038 return false;
60039 }
60040
60041 return true;
60042 }
60043
60044 static bool find(node_pointer n, node_pointer end, value_type const& v)
60045 {
60046 for(;n != end; n = static_cast<node_pointer>(n->next_))
60047 if (n->value() == v)
60048 return true;
60049 return false;
60050 }
60051
60052 static std::size_t count_equal(node_pointer n, node_pointer end,
60053 value_type const& v)
60054 {
60055 std::size_t count = 0;
60056 for(;n != end; n = static_cast<node_pointer>(n->next_))
60057 if (n->value() == v) ++count;
60058 return count;
60059 }
60060 # 379 "../boost/unordered/detail/equivalent.hpp"
60061 static inline void add_after_node(
60062 node_pointer n,
60063 node_pointer pos)
60064 {
60065 n->next_ = static_cast<node_pointer>(pos->group_prev_)->next_;
60066 n->group_prev_ = pos->group_prev_;
60067 static_cast<node_pointer>(pos->group_prev_)->next_ =
60068 static_cast<link_pointer>(n);
60069 pos->group_prev_ = static_cast<link_pointer>(n);
60070 }
60071
60072 inline node_pointer add_node(
60073 node_constructor& a,
60074 std::size_t hash,
60075 node_pointer pos)
60076 {
60077 node_pointer n = a.release();
60078 n->hash_ = hash;
60079 if(pos) {
60080 this->add_after_node(n, pos);
60081 if (n->next_) {
60082 std::size_t next_bucket =
60083 static_cast<node_pointer>(n->next_)->hash_ %
60084 this->bucket_count_;
60085 if (next_bucket != hash % this->bucket_count_) {
60086 this->get_bucket(next_bucket)->next_ = n;
60087 }
60088 }
60089 }
60090 else {
60091 bucket_pointer b = this->get_bucket(hash % this->bucket_count_);
60092
60093 if (!b->next_)
60094 {
60095 previous_pointer start_node = this->get_previous_start();
60096
60097 if (start_node->next_) {
60098 this->get_bucket(
60099 static_cast<node_pointer>(start_node->next_)->hash_
60100 % this->bucket_count_)->next_ = n;
60101 }
60102
60103 b->next_ = start_node;
60104 n->next_ = start_node->next_;
60105 start_node->next_ = static_cast<link_pointer>(n);
60106 }
60107 else
60108 {
60109 n->next_ = b->next_->next_;
60110 b->next_->next_ = static_cast<link_pointer>(n);
60111 }
60112 }
60113 ++this->size_;
60114 return n;
60115 }
60116
60117 node_pointer emplace_impl(node_constructor& a)
60118 {
60119 key_type const& k = this->get_key(a.value());
60120 std::size_t hash = this->hash_function()(k);
60121 node_pointer position = this->find_node(hash, k);
60122
60123
60124
60125 this->reserve_for_insert(this->size_ + 1);
60126 return this->add_node(a, hash, position);
60127 }
60128
60129 void emplace_impl_no_rehash(node_constructor& a)
60130 {
60131 key_type const& k = this->get_key(a.value());
60132 std::size_t hash = this->hash_function()(k);
60133 this->add_node(a, hash,
60134 this->find_node(hash, k));
60135 }
60136
60137
60138 iterator emplace(boost::unordered::detail::emplace_args1<
60139 boost::unordered::detail::please_ignore_this_overload> const&)
60140 {
60141 (static_cast<void> (0));
60142 return iterator();
60143 }
60144
60145
60146 template <typename Args>
60147 iterator emplace(Args const& args)
60148 {
60149 node_constructor a(this->node_alloc());
60150 a.construct_node();
60151 a.construct_value(args);
60152
60153 return iterator(emplace_impl(a));
60154 }
60155
60156
60157
60158
60159
60160
60161 template <class I>
60162 typename boost::unordered::detail::enable_if_forward<I, void>::type
60163 insert_range(I i, I j)
60164 {
60165 if(i == j) return;
60166
60167 std::size_t distance = boost::unordered::detail::distance(i, j);
60168 if(distance == 1) {
60169 node_constructor a(this->node_alloc());
60170 a.construct_node();
60171 a.construct_value2(*i);
60172 emplace_impl(a);
60173 }
60174 else {
60175
60176 this->reserve_for_insert(this->size_ + distance);
60177
60178 node_constructor a(this->node_alloc());
60179 for (; i != j; ++i) {
60180 a.construct_node();
60181 a.construct_value2(*i);
60182 emplace_impl_no_rehash(a);
60183 }
60184 }
60185 }
60186
60187 template <class I>
60188 typename boost::unordered::detail::disable_if_forward<I, void>::type
60189 insert_range(I i, I j)
60190 {
60191 node_constructor a(this->node_alloc());
60192 for (; i != j; ++i) {
60193 a.construct_node();
60194 a.construct_value2(*i);
60195 emplace_impl(a);
60196 }
60197 }
60198
60199
60200
60201
60202
60203
60204 std::size_t erase_key(key_type const& k)
60205 {
60206 if(!this->size_) return 0;
60207
60208 std::size_t hash = this->hash_function()(k);
60209 std::size_t bucket_index = hash % this->bucket_count_;
60210 bucket_pointer bucket = this->get_bucket(bucket_index);
60211
60212 previous_pointer prev = bucket->next_;
60213 if (!prev) return 0;
60214
60215 for (;;)
60216 {
60217 if (!prev->next_) return 0;
60218 std::size_t node_hash =
60219 static_cast<node_pointer>(prev->next_)->hash_;
60220 if (node_hash % this->bucket_count_ != bucket_index)
60221 return 0;
60222 if (node_hash == hash &&
60223 this->key_eq()(k, this->get_key(
60224 static_cast<node_pointer>(prev->next_)->value())))
60225 break;
60226 prev = static_cast<previous_pointer>(
60227 static_cast<node_pointer>(prev->next_)->group_prev_);
60228 }
60229
60230 node_pointer pos = static_cast<node_pointer>(prev->next_);
60231 link_pointer end1 =
60232 static_cast<node_pointer>(pos->group_prev_)->next_;
60233 node_pointer end = static_cast<node_pointer>(end1);
60234 prev->next_ = end1;
60235 this->fix_buckets(bucket, prev, end);
60236 return this->delete_nodes(pos, end);
60237 }
60238
60239 node_pointer erase(node_pointer r)
60240 {
60241 (static_cast<void> (0));
60242 node_pointer next = static_cast<node_pointer>(r->next_);
60243
60244 bucket_pointer bucket = this->get_bucket(
60245 r->hash_ % this->bucket_count_);
60246 previous_pointer prev = unlink_node(*bucket, r);
60247
60248 this->fix_buckets(bucket, prev, next);
60249
60250 this->delete_node(r);
60251
60252 return next;
60253 }
60254
60255 node_pointer erase_range(node_pointer r1, node_pointer r2)
60256 {
60257 if (r1 == r2) return r2;
60258
60259 std::size_t bucket_index = r1->hash_ % this->bucket_count_;
60260 previous_pointer prev = unlink_nodes(
60261 *this->get_bucket(bucket_index), r1, r2);
60262 this->fix_buckets_range(bucket_index, prev, r1, r2);
60263 this->delete_nodes(r1, r2);
60264
60265 return r2;
60266 }
60267
60268 static previous_pointer unlink_node(bucket& b, node_pointer n)
60269 {
60270 node_pointer next = static_cast<node_pointer>(n->next_);
60271 previous_pointer prev =
60272 static_cast<previous_pointer>(n->group_prev_);
60273
60274 if(prev->next_ != n) {
60275
60276
60277
60278 prev = b.next_;
60279 while(prev->next_ != n) {
60280 prev = static_cast<previous_pointer>(
60281 static_cast<node_pointer>(prev->next_)->group_prev_);
60282 }
60283
60284
60285 if (next && next->group_prev_ == static_cast<link_pointer>(n))
60286 {
60287 next->group_prev_ = n->group_prev_;
60288 }
60289 }
60290 else if (next && next->group_prev_ == static_cast<link_pointer>(n))
60291 {
60292
60293
60294 next->group_prev_ = n->group_prev_;
60295 }
60296 else {
60297
60298
60299
60300 node_pointer x = static_cast<node_pointer>(n->group_prev_);
60301 while(x->group_prev_ != static_cast<link_pointer>(n)) {
60302 x = static_cast<node_pointer>(x->group_prev_);
60303 }
60304 x->group_prev_ = n->group_prev_;
60305 }
60306
60307 prev->next_ = static_cast<link_pointer>(next);
60308 return prev;
60309 }
60310
60311 static previous_pointer unlink_nodes(bucket& b,
60312 node_pointer begin, node_pointer end)
60313 {
60314 previous_pointer prev = static_cast<previous_pointer>(
60315 begin->group_prev_);
60316
60317 if(prev->next_ != static_cast<link_pointer>(begin)) {
60318
60319
60320
60321 prev = b.next_;
60322 while(prev->next_ != static_cast<link_pointer>(begin))
60323 prev = static_cast<previous_pointer>(
60324 static_cast<node_pointer>(prev->next_)->group_prev_);
60325
60326 if (end) split_group(end);
60327 }
60328 else {
60329 node_pointer group1 = split_group(begin);
60330
60331 if (end) {
60332 node_pointer group2 = split_group(end);
60333
60334 if(begin == group2) {
60335 link_pointer end1 = group1->group_prev_;
60336 link_pointer end2 = group2->group_prev_;
60337 group1->group_prev_ = end2;
60338 group2->group_prev_ = end1;
60339 }
60340 }
60341 }
60342
60343 prev->next_ = static_cast<link_pointer>(end);
60344
60345 return prev;
60346 }
60347
60348
60349
60350
60351 static node_pointer split_group(node_pointer split)
60352 {
60353
60354 node_pointer first = split;
60355 while (static_cast<node_pointer>(first->group_prev_)->next_ ==
60356 static_cast<link_pointer>(first))
60357 first = static_cast<node_pointer>(first->group_prev_);
60358
60359 if(first == split) return split;
60360
60361 link_pointer last = first->group_prev_;
60362 first->group_prev_ = split->group_prev_;
60363 split->group_prev_ = last;
60364
60365 return first;
60366 }
60367
60368
60369
60370
60371
60372
60373
60374 static void copy_buckets_to(buckets const& src, buckets& dst)
60375 {
60376 (static_cast<void> (0));
60377
60378 dst.create_buckets();
60379
60380 node_constructor a(dst.node_alloc());
60381
60382 node_pointer n = src.get_start();
60383 previous_pointer prev = dst.get_previous_start();
60384
60385 while(n) {
60386 std::size_t hash = n->hash_;
60387 node_pointer group_end =
60388 static_cast<node_pointer>(
60389 static_cast<node_pointer>(n->group_prev_)->next_);
60390
60391 a.construct_node();
60392 a.construct_value2(n->value());
60393
60394 node_pointer first_node = a.release();
60395 node_pointer end = first_node;
60396 first_node->hash_ = hash;
60397 prev->next_ = static_cast<link_pointer>(first_node);
60398 ++dst.size_;
60399
60400 for(n = static_cast<node_pointer>(n->next_); n != group_end;
60401 n = static_cast<node_pointer>(n->next_))
60402 {
60403 a.construct_node();
60404 a.construct_value2(n->value());
60405 end = a.release();
60406 end->hash_ = hash;
60407 add_after_node(end, first_node);
60408 ++dst.size_;
60409 }
60410
60411 prev = place_in_bucket(dst, prev, end);
60412 }
60413 }
60414
60415
60416
60417
60418
60419
60420
60421 static void move_buckets_to(buckets& src, buckets& dst)
60422 {
60423 (static_cast<void> (0));
60424
60425 dst.create_buckets();
60426
60427 node_constructor a(dst.node_alloc());
60428
60429 node_pointer n = src.get_start();
60430 previous_pointer prev = dst.get_previous_start();
60431
60432 while(n) {
60433 std::size_t hash = n->hash_;
60434 node_pointer group_end =
60435 static_cast<node_pointer>(
60436 static_cast<node_pointer>(n->group_prev_)->next_);
60437
60438 a.construct_node();
60439 a.construct_value2(boost::move(n->value()));
60440
60441 node_pointer first_node = a.release();
60442 node_pointer end = first_node;
60443 first_node->hash_ = hash;
60444 prev->next_ = static_cast<link_pointer>(first_node);
60445 ++dst.size_;
60446
60447 for(n = static_cast<node_pointer>(n->next_); n != group_end;
60448 n = static_cast<node_pointer>(n->next_))
60449 {
60450 a.construct_node();
60451 a.construct_value2(boost::move(n->value()));
60452 end = a.release();
60453 end->hash_ = hash;
60454 add_after_node(end, first_node);
60455 ++dst.size_;
60456 }
60457
60458 prev = place_in_bucket(dst, prev, end);
60459 }
60460 }
60461
60462
60463 void rehash_impl(std::size_t num_buckets)
60464 {
60465 (static_cast<void> (0));
60466
60467 buckets dst(this->node_alloc(), num_buckets);
60468 dst.create_buckets();
60469
60470 previous_pointer src_start = this->get_previous_start();
60471 previous_pointer dst_start = dst.get_previous_start();
60472
60473 dst_start->next_ = src_start->next_;
60474 src_start->next_ = link_pointer();
60475 dst.size_ = this->size_;
60476 this->size_ = 0;
60477
60478 previous_pointer prev = dst_start;
60479 while (prev->next_)
60480 prev = place_in_bucket(dst, prev,
60481 static_cast<node_pointer>(
60482 static_cast<node_pointer>(prev->next_)->group_prev_));
60483
60484
60485
60486 dst.swap(*this);
60487 }
60488
60489
60490
60491 static previous_pointer place_in_bucket(buckets& dst,
60492 previous_pointer prev, node_pointer end)
60493 {
60494 bucket_pointer b = dst.get_bucket(end->hash_ % dst.bucket_count_);
60495
60496 if (!b->next_) {
60497 b->next_ = static_cast<node_pointer>(prev);
60498 return static_cast<previous_pointer>(end);
60499 }
60500 else {
60501 link_pointer next = end->next_;
60502 end->next_ = b->next_->next_;
60503 b->next_->next_ = prev->next_;
60504 prev->next_ = next;
60505 return prev;
60506 }
60507 }
60508 };
60509 }}}
60510 # 19 "../boost/unordered/unordered_map.hpp" 2
60511 # 1 "../boost/unordered/detail/unique.hpp" 1
60512 # 20 "../boost/unordered/detail/unique.hpp"
60513 namespace boost { namespace unordered { namespace detail {
60514
60515 template <typename A, typename T> struct node;
60516 template <typename T> struct ptr_node;
60517 template <typename Types> struct table_impl;
60518
60519 template <typename A, typename T>
60520 struct node :
60521 boost::unordered::detail::value_base<T>
60522 {
60523 typedef typename ::boost::unordered::detail::rebind_wrap<
60524 A, node<A, T> >::type::pointer link_pointer;
60525
60526 link_pointer next_;
60527 std::size_t hash_;
60528
60529 node() :
60530 next_(),
60531 hash_(0)
60532 {}
60533
60534 void init(link_pointer)
60535 {
60536 }
60537 };
60538
60539 template <typename T>
60540 struct ptr_node :
60541 boost::unordered::detail::value_base<T>,
60542 boost::unordered::detail::ptr_bucket
60543 {
60544 typedef boost::unordered::detail::ptr_bucket bucket_base;
60545 typedef ptr_bucket* link_pointer;
60546
60547 std::size_t hash_;
60548
60549 ptr_node() :
60550 bucket_base(),
60551 hash_(0)
60552 {}
60553
60554 void init(link_pointer)
60555 {
60556 }
60557 };
60558
60559
60560
60561
60562 template <typename A, typename T, typename NodePtr, typename BucketPtr>
60563 struct pick_node2
60564 {
60565 typedef boost::unordered::detail::node<A, T> node;
60566
60567 typedef typename boost::unordered::detail::allocator_traits<
60568 typename boost::unordered::detail::rebind_wrap<A, node>::type
60569 >::pointer node_pointer;
60570
60571 typedef boost::unordered::detail::bucket<node_pointer> bucket;
60572 typedef node_pointer link_pointer;
60573 };
60574
60575 template <typename A, typename T>
60576 struct pick_node2<A, T,
60577 boost::unordered::detail::ptr_node<T>*,
60578 boost::unordered::detail::ptr_bucket*>
60579 {
60580 typedef boost::unordered::detail::ptr_node<T> node;
60581 typedef boost::unordered::detail::ptr_bucket bucket;
60582 typedef bucket* link_pointer;
60583 };
60584
60585 template <typename A, typename T>
60586 struct pick_node
60587 {
60588 typedef boost::unordered::detail::allocator_traits<
60589 typename boost::unordered::detail::rebind_wrap<A,
60590 boost::unordered::detail::ptr_node<T> >::type
60591 > tentative_node_traits;
60592
60593 typedef boost::unordered::detail::allocator_traits<
60594 typename boost::unordered::detail::rebind_wrap<A,
60595 boost::unordered::detail::ptr_bucket >::type
60596 > tentative_bucket_traits;
60597
60598 typedef pick_node2<A, T,
60599 typename tentative_node_traits::pointer,
60600 typename tentative_bucket_traits::pointer> pick;
60601
60602 typedef typename pick::node node;
60603 typedef typename pick::bucket bucket;
60604 typedef typename pick::link_pointer link_pointer;
60605 };
60606
60607 template <typename A, typename T, typename H, typename P>
60608 struct set
60609 {
60610 typedef boost::unordered::detail::set<A, T, H, P> types;
60611
60612 typedef T value_type;
60613 typedef H hasher;
60614 typedef P key_equal;
60615 typedef T key_type;
60616
60617 typedef typename boost::unordered::detail::rebind_wrap<
60618 A, value_type>::type allocator;
60619
60620 typedef boost::unordered::detail::allocator_traits<allocator> traits;
60621 typedef boost::unordered::detail::pick_node<allocator, value_type> pick;
60622 typedef typename pick::node node;
60623 typedef typename pick::bucket bucket;
60624 typedef typename pick::link_pointer link_pointer;
60625
60626 typedef boost::unordered::detail::table_impl<types> table;
60627 typedef boost::unordered::detail::set_extractor<value_type> extractor;
60628 };
60629
60630 template <typename A, typename K, typename M, typename H, typename P>
60631 struct map
60632 {
60633 typedef boost::unordered::detail::map<A, K, M, H, P> types;
60634
60635 typedef std::pair<K const, M> value_type;
60636 typedef H hasher;
60637 typedef P key_equal;
60638 typedef K key_type;
60639
60640 typedef typename boost::unordered::detail::rebind_wrap<
60641 A, value_type>::type allocator;
60642
60643 typedef boost::unordered::detail::allocator_traits<allocator> traits;
60644 typedef boost::unordered::detail::pick_node<allocator, value_type> pick;
60645 typedef typename pick::node node;
60646 typedef typename pick::bucket bucket;
60647 typedef typename pick::link_pointer link_pointer;
60648
60649 typedef boost::unordered::detail::table_impl<types> table;
60650 typedef boost::unordered::detail::map_extractor<key_type, value_type>
60651 extractor;
60652 };
60653
60654 template <typename Types>
60655 struct table_impl : boost::unordered::detail::table<Types>
60656 {
60657 typedef boost::unordered::detail::table<Types> table;
60658 typedef typename table::value_type value_type;
60659 typedef typename table::bucket bucket;
60660 typedef typename table::buckets buckets;
60661 typedef typename table::node_pointer node_pointer;
60662 typedef typename table::node_allocator node_allocator;
60663 typedef typename table::node_allocator_traits node_allocator_traits;
60664 typedef typename table::bucket_pointer bucket_pointer;
60665 typedef typename table::link_pointer link_pointer;
60666 typedef typename table::previous_pointer previous_pointer;
60667 typedef typename table::hasher hasher;
60668 typedef typename table::key_equal key_equal;
60669 typedef typename table::key_type key_type;
60670 typedef typename table::node_constructor node_constructor;
60671 typedef typename table::extractor extractor;
60672 typedef typename table::iterator iterator;
60673
60674 typedef std::pair<iterator, bool> emplace_return;
60675
60676
60677
60678 table_impl(std::size_t n,
60679 hasher const& hf,
60680 key_equal const& eq,
60681 node_allocator const& a)
60682 : table(n, hf, eq, a)
60683 {}
60684
60685 table_impl(table_impl const& x)
60686 : table(x, node_allocator_traits::
60687 select_on_container_copy_construction(x.node_alloc())) {}
60688
60689 table_impl(table_impl const& x,
60690 node_allocator const& a)
60691 : table(x, a)
60692 {}
60693
60694 table_impl(table_impl& x,
60695 boost::unordered::detail::move_tag m)
60696 : table(x, m)
60697 {}
60698
60699 table_impl(table_impl& x,
60700 node_allocator const& a,
60701 boost::unordered::detail::move_tag m)
60702 : table(x, a, m)
60703 {}
60704
60705
60706
60707 template <class Key, class Pred>
60708 node_pointer find_node_impl(
60709 std::size_t hash,
60710 Key const& k,
60711 Pred const& eq) const
60712 {
60713 std::size_t bucket_index = hash % this->bucket_count_;
60714 node_pointer n = this->get_start(bucket_index);
60715
60716 for (;;)
60717 {
60718 if (!n) return n;
60719
60720 std::size_t node_hash = n->hash_;
60721 if (hash == node_hash)
60722 {
60723 if (eq(k, this->get_key(n->value())))
60724 return n;
60725 }
60726 else
60727 {
60728 if (node_hash % this->bucket_count_ != bucket_index)
60729 return node_pointer();
60730 }
60731
60732 n = static_cast<node_pointer>(n->next_);
60733 }
60734 }
60735
60736 std::size_t count(key_type const& k) const
60737 {
60738 return this->find_node(k) ? 1 : 0;
60739 }
60740
60741 value_type& at(key_type const& k) const
60742 {
60743 if (this->size_) {
60744 node_pointer it = this->find_node(k);
60745 if (it) return it->value();
60746 }
60747
60748 boost::throw_exception(
60749 std::out_of_range("Unable to find key in unordered_map."));
60750 }
60751
60752 std::pair<iterator, iterator>
60753 equal_range(key_type const& k) const
60754 {
60755 node_pointer n = this->find_node(k);
60756 return std::make_pair(iterator(n),
60757 iterator(n ? static_cast<node_pointer>(n->next_) : n));
60758 }
60759
60760
60761
60762 bool equals(table_impl const& other) const
60763 {
60764 if(this->size_ != other.size_) return false;
60765 if(!this->size_) return true;
60766
60767 for(node_pointer n1 = this->get_start(); n1;
60768 n1 = static_cast<node_pointer>(n1->next_))
60769 {
60770 node_pointer n2 = other.find_matching_node(n1);
60771
60772
60773 if(!n2 || n1->value() != n2->value())
60774 return false;
60775
60776
60777
60778
60779
60780 }
60781
60782 return true;
60783 }
60784
60785
60786
60787 inline node_pointer add_node(
60788 node_constructor& a,
60789 std::size_t hash)
60790 {
60791 node_pointer n = a.release();
60792 n->hash_ = hash;
60793
60794 bucket_pointer b = this->get_bucket(hash % this->bucket_count_);
60795
60796 if (!b->next_)
60797 {
60798 previous_pointer start_node = this->get_previous_start();
60799
60800 if (start_node->next_) {
60801 this->get_bucket(
60802 static_cast<node_pointer>(start_node->next_)->hash_ %
60803 this->bucket_count_)->next_ = n;
60804 }
60805
60806 b->next_ = start_node;
60807 n->next_ = start_node->next_;
60808 start_node->next_ = static_cast<link_pointer>(n);
60809 }
60810 else
60811 {
60812 n->next_ = b->next_->next_;
60813 b->next_->next_ = static_cast<link_pointer>(n);
60814 }
60815
60816 ++this->size_;
60817 return n;
60818 }
60819
60820 value_type& operator[](key_type const& k)
60821 {
60822 typedef typename value_type::second_type mapped_type;
60823
60824 std::size_t hash = this->hash_function()(k);
60825 node_pointer pos = this->find_node(hash, k);
60826
60827 if (pos) return pos->value();
60828
60829
60830
60831 node_constructor a(this->node_alloc());
60832 a.construct_node();
60833
60834
60835
60836
60837 a.construct_value(
60838 boost::unordered::detail::create_emplace_args(
60839 boost::unordered::piecewise_construct,
60840 boost::make_tuple(k),
60841 boost::make_tuple()));
60842
60843
60844 this->reserve_for_insert(this->size_ + 1);
60845 return add_node(a, hash)->value();
60846 }
60847
60848
60849 emplace_return emplace(boost::unordered::detail::emplace_args1<
60850 boost::unordered::detail::please_ignore_this_overload> const&)
60851 {
60852 (static_cast<void> (0));
60853 return emplace_return(iterator(this->begin()), false);
60854 }
60855
60856
60857 template <typename Args>
60858 emplace_return emplace(Args const& args)
60859 {
60860
60861
60862
60863
60864
60865
60866 return emplace_impl(
60867 extractor::extract(args.a0, args.a1),
60868 args);
60869
60870 }
60871
60872
60873 template <typename A0>
60874 emplace_return emplace(
60875 boost::unordered::detail::emplace_args1<A0> const& args)
60876 {
60877 return emplace_impl(extractor::extract(args.a0), args);
60878 }
60879
60880
60881 template <typename Args>
60882 emplace_return emplace_impl(key_type const& k,
60883 Args const& args)
60884 {
60885 std::size_t hash = this->hash_function()(k);
60886 node_pointer pos = this->find_node(hash, k);
60887
60888 if (pos) return emplace_return(iterator(pos), false);
60889
60890
60891
60892 node_constructor a(this->node_alloc());
60893 a.construct_node();
60894 a.construct_value(args);
60895
60896
60897
60898 this->reserve_for_insert(this->size_ + 1);
60899 return emplace_return(iterator(this->add_node(a, hash)), true);
60900 }
60901
60902 emplace_return emplace_impl_with_node(node_constructor& a)
60903 {
60904 key_type const& k = this->get_key(a.value());
60905 std::size_t hash = this->hash_function()(k);
60906 node_pointer pos = this->find_node(hash, k);
60907
60908 if (pos) return emplace_return(iterator(pos), false);
60909
60910
60911
60912 this->reserve_for_insert(this->size_ + 1);
60913 return emplace_return(iterator(this->add_node(a, hash)), true);
60914 }
60915
60916 template <typename Args>
60917 emplace_return emplace_impl(no_key, Args const& args)
60918 {
60919
60920
60921 node_constructor a(this->node_alloc());
60922 a.construct_node();
60923 a.construct_value(args);
60924 return emplace_impl_with_node(a);
60925 }
60926
60927
60928
60929
60930
60931
60932
60933 template <class InputIt>
60934 void insert_range(InputIt i, InputIt j)
60935 {
60936 if(i != j)
60937 return insert_range_impl(extractor::extract(*i), i, j);
60938 }
60939
60940 template <class InputIt>
60941 void insert_range_impl(key_type const& k, InputIt i, InputIt j)
60942 {
60943 node_constructor a(this->node_alloc());
60944
60945
60946
60947 if (!this->buckets_) {
60948 insert_range_empty(a, k, i, j);
60949 if (++i == j) return;
60950 }
60951
60952 do {
60953 # 468 "../boost/unordered/detail/unique.hpp"
60954 insert_range_impl2(a, extractor::extract(*i), i, j);
60955 } while(++i != j);
60956 }
60957
60958 template <class InputIt>
60959 void insert_range_empty(node_constructor& a, key_type const& k,
60960 InputIt i, InputIt j)
60961 {
60962 std::size_t hash = this->hash_function()(k);
60963 a.construct_node();
60964 a.construct_value2(*i);
60965 this->reserve_for_insert(this->size_ +
60966 boost::unordered::detail::insert_size(i, j));
60967 this->add_node(a, hash);
60968 }
60969
60970 template <class InputIt>
60971 void insert_range_impl2(node_constructor& a, key_type const& k,
60972 InputIt i, InputIt j)
60973 {
60974
60975 std::size_t hash = this->hash_function()(k);
60976 node_pointer pos = this->find_node(hash, k);
60977
60978 if (!pos) {
60979 a.construct_node();
60980 a.construct_value2(*i);
60981
60982 if(this->size_ + 1 >= this->max_load_)
60983 this->reserve_for_insert(this->size_ +
60984 boost::unordered::detail::insert_size(i, j));
60985
60986
60987 this->add_node(a, hash);
60988 }
60989 }
60990
60991 template <class InputIt>
60992 void insert_range_impl(no_key, InputIt i, InputIt j)
60993 {
60994 node_constructor a(this->node_alloc());
60995
60996 do {
60997 a.construct_node();
60998 a.construct_value2(*i);
60999 emplace_impl_with_node(a);
61000 } while(++i != j);
61001 }
61002
61003
61004
61005
61006
61007
61008 std::size_t erase_key(key_type const& k)
61009 {
61010 if(!this->size_) return 0;
61011
61012 std::size_t hash = this->hash_function()(k);
61013 std::size_t bucket_index = hash % this->bucket_count_;
61014 bucket_pointer bucket = this->get_bucket(bucket_index);
61015
61016 previous_pointer prev = bucket->next_;
61017 if (!prev) return 0;
61018
61019 for (;;)
61020 {
61021 if (!prev->next_) return 0;
61022 std::size_t node_hash =
61023 static_cast<node_pointer>(prev->next_)->hash_;
61024 if (node_hash % this->bucket_count_ != bucket_index)
61025 return 0;
61026 if (node_hash == hash &&
61027 this->key_eq()(k, this->get_key(
61028 static_cast<node_pointer>(prev->next_)->value())))
61029 break;
61030 prev = static_cast<previous_pointer>(prev->next_);
61031 }
61032
61033 node_pointer pos = static_cast<node_pointer>(prev->next_);
61034 node_pointer end = static_cast<node_pointer>(pos->next_);
61035 prev->next_ = pos->next_;
61036 this->fix_buckets(bucket, prev, end);
61037 return this->delete_nodes(pos, end);
61038 }
61039
61040 node_pointer erase(node_pointer r)
61041 {
61042 (static_cast<void> (0));
61043 node_pointer next = static_cast<node_pointer>(r->next_);
61044
61045 bucket_pointer bucket = this->get_bucket(
61046 r->hash_ % this->bucket_count_);
61047 previous_pointer prev = unlink_node(*bucket, r);
61048
61049 this->fix_buckets(bucket, prev, next);
61050
61051 this->delete_node(r);
61052
61053 return next;
61054 }
61055
61056 node_pointer erase_range(node_pointer r1, node_pointer r2)
61057 {
61058 if (r1 == r2) return r2;
61059
61060 std::size_t bucket_index = r1->hash_ % this->bucket_count_;
61061 previous_pointer prev = unlink_nodes(
61062 *this->get_bucket(bucket_index), r1, r2);
61063 this->fix_buckets_range(bucket_index, prev, r1, r2);
61064 this->delete_nodes(r1, r2);
61065
61066 return r2;
61067 }
61068
61069 static previous_pointer unlink_node(bucket& b, node_pointer n)
61070 {
61071 return unlink_nodes(b, n, static_cast<node_pointer>(n->next_));
61072 }
61073
61074 static previous_pointer unlink_nodes(bucket& b,
61075 node_pointer begin, node_pointer end)
61076 {
61077 previous_pointer prev = b.next_;
61078 link_pointer begin_void = static_cast<link_pointer>(begin);
61079 while(prev->next_ != begin_void)
61080 prev = static_cast<previous_pointer>(prev->next_);
61081 prev->next_ = static_cast<link_pointer>(end);
61082 return prev;
61083 }
61084
61085
61086
61087
61088
61089
61090
61091 static void copy_buckets_to(buckets const& src, buckets& dst)
61092 {
61093 (static_cast<void> (0));
61094
61095 dst.create_buckets();
61096
61097 node_constructor a(dst.node_alloc());
61098
61099 node_pointer n = src.get_start();
61100 previous_pointer prev = dst.get_previous_start();
61101
61102 while(n) {
61103 a.construct_node();
61104 a.construct_value2(n->value());
61105
61106 node_pointer node = a.release();
61107 node->hash_ = n->hash_;
61108 prev->next_ = static_cast<link_pointer>(node);
61109 ++dst.size_;
61110 n = static_cast<node_pointer>(n->next_);
61111
61112 prev = place_in_bucket(dst, prev);
61113 }
61114 }
61115
61116
61117
61118
61119
61120
61121
61122 static void move_buckets_to(buckets& src, buckets& dst)
61123 {
61124 (static_cast<void> (0));
61125
61126 dst.create_buckets();
61127
61128 node_constructor a(dst.node_alloc());
61129
61130 node_pointer n = src.get_start();
61131 previous_pointer prev = dst.get_previous_start();
61132
61133 while(n) {
61134 a.construct_node();
61135 a.construct_value2(boost::move(n->value()));
61136
61137 node_pointer node = a.release();
61138 node->hash_ = n->hash_;
61139 prev->next_ = static_cast<link_pointer>(node);
61140 ++dst.size_;
61141 n = static_cast<node_pointer>(n->next_);
61142
61143 prev = place_in_bucket(dst, prev);
61144 }
61145 }
61146
61147
61148 void rehash_impl(std::size_t num_buckets)
61149 {
61150 (static_cast<void> (0));
61151
61152 buckets dst(this->node_alloc(), num_buckets);
61153 dst.create_buckets();
61154
61155 previous_pointer src_start = this->get_previous_start();
61156 previous_pointer dst_start = dst.get_previous_start();
61157
61158 dst_start->next_ = src_start->next_;
61159 src_start->next_ = link_pointer();
61160 dst.size_ = this->size_;
61161 this->size_ = 0;
61162
61163 previous_pointer prev = dst.get_previous_start();
61164 while (prev->next_)
61165 prev = place_in_bucket(dst, prev);
61166
61167
61168
61169 dst.swap(*this);
61170 }
61171
61172
61173
61174 static previous_pointer place_in_bucket(buckets& dst,
61175 previous_pointer prev)
61176 {
61177 node_pointer n = static_cast<node_pointer>(prev->next_);
61178 bucket_pointer b = dst.get_bucket(n->hash_ % dst.bucket_count_);
61179
61180 if (!b->next_) {
61181 b->next_ = prev;
61182 return static_cast<previous_pointer>(n);
61183 }
61184 else {
61185 prev->next_ = n->next_;
61186 n->next_ = b->next_->next_;
61187 b->next_->next_ = static_cast<link_pointer>(n);
61188 return prev;
61189 }
61190 }
61191 };
61192 }}}
61193 # 20 "../boost/unordered/unordered_map.hpp" 2
61194
61195 # 1 "../boost/functional/hash.hpp" 1
61196
61197
61198
61199
61200
61201 # 1 "../boost/functional/hash/hash.hpp" 1
61202 # 15 "../boost/functional/hash/hash.hpp"
61203 # 1 "../boost/functional/hash/detail/hash_float.hpp" 1
61204 # 14 "../boost/functional/hash/detail/hash_float.hpp"
61205 # 1 "../boost/functional/hash/detail/float_functions.hpp" 1
61206 # 10 "../boost/functional/hash/detail/float_functions.hpp"
61207 # 1 "../boost/config/no_tr1/cmath.hpp" 1
61208 # 21 "../boost/config/no_tr1/cmath.hpp"
61209 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 1 3
61210 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
61211
61212 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
61213 # 22 "../boost/config/no_tr1/cmath.hpp" 2
61214 # 11 "../boost/functional/hash/detail/float_functions.hpp" 2
61215 # 23 "../boost/functional/hash/detail/float_functions.hpp"
61216 namespace boost {
61217 namespace hash_detail {
61218
61219
61220
61221 struct not_found {
61222
61223
61224
61225 inline operator float() const { return 0; }
61226 inline operator long double() const { return 0; }
61227 };
61228
61229
61230
61231 template <typename T> struct is;
61232 template <> struct is<float> { char x[10]; };
61233 template <> struct is<double> { char x[20]; };
61234 template <> struct is<long double> { char x[30]; };
61235 template <> struct is<boost::hash_detail::not_found> { char x[40]; };
61236
61237
61238
61239 template <typename T> is<T> float_type(T);
61240
61241
61242
61243
61244
61245 template <typename Float> struct call_ldexp
61246 {
61247 typedef double float_type;
61248
61249 inline double operator()(double a, int b) const
61250 {
61251 using namespace std;
61252 return ldexp(a, b);
61253 }
61254 };
61255
61256
61257
61258
61259
61260 template <typename Float> struct call_frexp
61261 {
61262 typedef double float_type;
61263
61264 inline double operator()(double a, int* b) const
61265 {
61266 using namespace std;
61267 return frexp(a, b);
61268 }
61269 };
61270 }
61271 }
61272 # 87 "../boost/functional/hash/detail/float_functions.hpp"
61273 namespace boost_hash_detect_float_functions {
61274 template <class Float> boost::hash_detail::not_found ldexp(Float, int);
61275 template <class Float> boost::hash_detail::not_found frexp(Float, int*);
61276 }
61277 # 188 "../boost/functional/hash/detail/float_functions.hpp"
61278 namespace boost_hash_detect_float_functions { template <class Float> boost::hash_detail::not_found ldexpf(Float, int); } namespace boost { namespace hash_detail { namespace ldexpf_detect { using namespace std; using namespace boost_hash_detect_float_functions; struct check { static float x; static int y; static const bool cpp = sizeof(float_type(ldexp(x,y))) == sizeof(is<float>); static const bool c99 = sizeof(float_type(ldexpf(x,y))) == sizeof(is<float>); }; } template <bool x> struct call_c99_ldexpf : boost::hash_detail::call_ldexp<double> {}; template <> struct call_c99_ldexpf<true> { typedef float float_type; template <typename T> inline float operator()(float a, T b) const { using namespace std; return ldexpf(a, b); } }; template <bool x> struct call_cpp_ldexpf : call_c99_ldexpf< ::boost::hash_detail::ldexpf_detect::check::c99 > {}; template <> struct call_cpp_ldexpf<true> { typedef float float_type; template <typename T> inline float operator()(float a, T b) const { using namespace std; return ldexp(a, b); } }; template <> struct call_ldexp<float> : call_cpp_ldexpf< ::boost::hash_detail::ldexpf_detect::check::cpp > {}; } }
61279
61280
61281
61282
61283
61284 namespace boost_hash_detect_float_functions { template <class Float> boost::hash_detail::not_found ldexpl(Float, int); } namespace boost { namespace hash_detail { namespace ldexpl_detect { using namespace std; using namespace boost_hash_detect_float_functions; struct check { static long double x; static int y; static const bool cpp = sizeof(float_type(ldexp(x,y))) == sizeof(is<long double>); static const bool c99 = sizeof(float_type(ldexpl(x,y))) == sizeof(is<long double>); }; } template <bool x> struct call_c99_ldexpl : boost::hash_detail::call_ldexp<double> {}; template <> struct call_c99_ldexpl<true> { typedef long double float_type; template <typename T> inline long double operator()(long double a, T b) const { using namespace std; return ldexpl(a, b); } }; template <bool x> struct call_cpp_ldexpl : call_c99_ldexpl< ::boost::hash_detail::ldexpl_detect::check::c99 > {}; template <> struct call_cpp_ldexpl<true> { typedef long double float_type; template <typename T> inline long double operator()(long double a, T b) const { using namespace std; return ldexp(a, b); } }; template <> struct call_ldexp<long double> : call_cpp_ldexpl< ::boost::hash_detail::ldexpl_detect::check::cpp > {}; } }
61285
61286
61287
61288
61289
61290 namespace boost_hash_detect_float_functions { template <class Float> boost::hash_detail::not_found frexpf(Float, int*); } namespace boost { namespace hash_detail { namespace frexpf_detect { using namespace std; using namespace boost_hash_detect_float_functions; struct check { static float x; static int* y; static const bool cpp = sizeof(float_type(frexp(x,y))) == sizeof(is<float>); static const bool c99 = sizeof(float_type(frexpf(x,y))) == sizeof(is<float>); }; } template <bool x> struct call_c99_frexpf : boost::hash_detail::call_frexp<double> {}; template <> struct call_c99_frexpf<true> { typedef float float_type; template <typename T> inline float operator()(float a, T b) const { using namespace std; return frexpf(a, b); } }; template <bool x> struct call_cpp_frexpf : call_c99_frexpf< ::boost::hash_detail::frexpf_detect::check::c99 > {}; template <> struct call_cpp_frexpf<true> { typedef float float_type; template <typename T> inline float operator()(float a, T b) const { using namespace std; return frexp(a, b); } }; template <> struct call_frexp<float> : call_cpp_frexpf< ::boost::hash_detail::frexpf_detect::check::cpp > {}; } }
61291
61292
61293
61294
61295
61296 namespace boost_hash_detect_float_functions { template <class Float> boost::hash_detail::not_found frexpl(Float, int*); } namespace boost { namespace hash_detail { namespace frexpl_detect { using namespace std; using namespace boost_hash_detect_float_functions; struct check { static long double x; static int* y; static const bool cpp = sizeof(float_type(frexp(x,y))) == sizeof(is<long double>); static const bool c99 = sizeof(float_type(frexpl(x,y))) == sizeof(is<long double>); }; } template <bool x> struct call_c99_frexpl : boost::hash_detail::call_frexp<double> {}; template <> struct call_c99_frexpl<true> { typedef long double float_type; template <typename T> inline long double operator()(long double a, T b) const { using namespace std; return frexpl(a, b); } }; template <bool x> struct call_cpp_frexpl : call_c99_frexpl< ::boost::hash_detail::frexpl_detect::check::c99 > {}; template <> struct call_cpp_frexpl<true> { typedef long double float_type; template <typename T> inline long double operator()(long double a, T b) const { using namespace std; return frexp(a, b); } }; template <> struct call_frexp<long double> : call_cpp_frexpl< ::boost::hash_detail::frexpl_detect::check::cpp > {}; } }
61297
61298
61299
61300
61301
61302
61303 namespace boost
61304 {
61305 namespace hash_detail
61306 {
61307 template <typename Float1, typename Float2>
61308 struct select_hash_type_impl {
61309 typedef double type;
61310 };
61311
61312 template <>
61313 struct select_hash_type_impl<float, float> {
61314 typedef float type;
61315 };
61316
61317 template <>
61318 struct select_hash_type_impl<long double, long double> {
61319 typedef long double type;
61320 };
61321
61322
61323
61324
61325
61326
61327
61328 template <typename Float>
61329 struct select_hash_type : select_hash_type_impl<
61330 typename call_ldexp<Float>::float_type,
61331 typename call_frexp<Float>::float_type
61332 > {};
61333 }
61334 }
61335 # 15 "../boost/functional/hash/detail/hash_float.hpp" 2
61336 # 1 "../boost/functional/hash/detail/limits.hpp" 1
61337 # 26 "../boost/functional/hash/detail/limits.hpp"
61338 namespace boost
61339 {
61340 namespace hash_detail
61341 {
61342 template <class T>
61343 struct limits : std::numeric_limits<T> {};
61344 # 58 "../boost/functional/hash/detail/limits.hpp"
61345 }
61346 }
61347 # 16 "../boost/functional/hash/detail/hash_float.hpp" 2
61348 # 1 "../boost/integer/static_log2.hpp" 1
61349 # 19 "../boost/integer/static_log2.hpp"
61350 # 1 "../boost/integer_fwd.hpp" 1
61351 # 12 "../boost/integer_fwd.hpp"
61352 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 1 3
61353 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
61354
61355 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
61356
61357 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
61358 # 34 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 3 4
61359 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/syslimits.h" 1 3 4
61360
61361
61362
61363
61364
61365
61366 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
61367 # 169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 3 4
61368 # 1 "/usr/include/limits.h" 1 3 4
61369 # 145 "/usr/include/limits.h" 3 4
61370 # 1 "/usr/include/bits/posix1_lim.h" 1 3 4
61371 # 157 "/usr/include/bits/posix1_lim.h" 3 4
61372 # 1 "/usr/include/bits/local_lim.h" 1 3 4
61373 # 39 "/usr/include/bits/local_lim.h" 3 4
61374 # 1 "/usr/include/linux/limits.h" 1 3 4
61375 # 40 "/usr/include/bits/local_lim.h" 2 3 4
61376 # 158 "/usr/include/bits/posix1_lim.h" 2 3 4
61377 # 146 "/usr/include/limits.h" 2 3 4
61378
61379
61380
61381 # 1 "/usr/include/bits/posix2_lim.h" 1 3 4
61382 # 150 "/usr/include/limits.h" 2 3 4
61383
61384
61385
61386 # 1 "/usr/include/bits/xopen_lim.h" 1 3 4
61387 # 34 "/usr/include/bits/xopen_lim.h" 3 4
61388 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
61389 # 35 "/usr/include/bits/xopen_lim.h" 2 3 4
61390 # 154 "/usr/include/limits.h" 2 3 4
61391 # 170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 2 3 4
61392 # 8 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/syslimits.h" 2 3 4
61393 # 35 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 2 3 4
61394 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 2 3
61395 # 13 "../boost/integer_fwd.hpp" 2
61396 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
61397 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
61398
61399 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
61400
61401
61402 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
61403 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
61404 # 14 "../boost/integer_fwd.hpp" 2
61405
61406
61407
61408 # 1 "../boost/cstdint.hpp" 1
61409 # 18 "../boost/integer_fwd.hpp" 2
61410
61411
61412 namespace boost
61413 {
61414
61415
61416
61417
61418
61419
61420
61421 typedef boost::uintmax_t static_min_max_unsigned_type;
61422 typedef boost::intmax_t static_min_max_signed_type;
61423 typedef boost::uintmax_t static_log2_argument_type;
61424 typedef int static_log2_result_type;
61425 # 42 "../boost/integer_fwd.hpp"
61426 template < class T >
61427 class integer_traits;
61428
61429 template < >
61430 class integer_traits< bool >;
61431
61432 template < >
61433 class integer_traits< char >;
61434
61435 template < >
61436 class integer_traits< signed char >;
61437
61438 template < >
61439 class integer_traits< unsigned char >;
61440
61441
61442 template < >
61443 class integer_traits< wchar_t >;
61444
61445
61446 template < >
61447 class integer_traits< short >;
61448
61449 template < >
61450 class integer_traits< unsigned short >;
61451
61452 template < >
61453 class integer_traits< int >;
61454
61455 template < >
61456 class integer_traits< unsigned int >;
61457
61458 template < >
61459 class integer_traits< long >;
61460
61461 template < >
61462 class integer_traits< unsigned long >;
61463
61464
61465 template < >
61466 class integer_traits< ::boost::long_long_type>;
61467
61468 template < >
61469 class integer_traits< ::boost::ulong_long_type >;
61470 # 97 "../boost/integer_fwd.hpp"
61471 template < typename LeastInt >
61472 struct int_fast_t;
61473
61474 template< int Bits >
61475 struct int_t;
61476
61477 template< int Bits >
61478 struct uint_t;
61479
61480
61481 template< boost::long_long_type MaxValue >
61482
61483
61484
61485 struct int_max_value_t;
61486
61487
61488 template< boost::long_long_type MinValue >
61489
61490
61491
61492 struct int_min_value_t;
61493
61494
61495 template< boost::ulong_long_type MaxValue >
61496
61497
61498
61499 struct uint_value_t;
61500
61501
61502
61503
61504 template < std::size_t Bit >
61505 struct high_bit_mask_t;
61506
61507 template < std::size_t Bits >
61508 struct low_bits_mask_t;
61509
61510 template < >
61511 struct low_bits_mask_t< ::std::numeric_limits<unsigned char>::digits >;
61512
61513
61514
61515 template <static_log2_argument_type Value >
61516 struct static_log2;
61517
61518 template <> struct static_log2<0u>;
61519
61520
61521
61522
61523 template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
61524 struct static_signed_min;
61525
61526 template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
61527 struct static_signed_max;
61528
61529 template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
61530 struct static_unsigned_min;
61531
61532 template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
61533 struct static_unsigned_max;
61534
61535 }
61536 # 20 "../boost/integer/static_log2.hpp" 2
61537
61538 namespace boost {
61539
61540 namespace detail {
61541
61542 namespace static_log2_impl {
61543 # 44 "../boost/integer/static_log2.hpp"
61544 typedef boost::static_log2_argument_type argument_type;
61545 typedef boost::static_log2_result_type result_type;
61546
61547 template <result_type n>
61548 struct choose_initial_n {
61549
61550 static const bool c = (argument_type(1) << n << n) != 0;
61551 static const result_type value = !c*n + choose_initial_n<2*c*n>::value
61552
61553
61554 ;
61555
61556 };
61557
61558 template <>
61559 struct choose_initial_n<0> {
61560 static const result_type value = 0;
61561 };
61562
61563
61564
61565
61566 const result_type n_zero = 16;
61567 const result_type initial_n = choose_initial_n<n_zero>::value;
61568 # 84 "../boost/integer/static_log2.hpp"
61569 template <argument_type x, result_type n = initial_n>
61570 struct static_log2_impl {
61571
61572 static const bool c = (x >> n) > 0;
61573 static const result_type value = c*n + (static_log2_impl< (x>>c*n), n/2 >::value)
61574
61575
61576 ;
61577
61578 };
61579
61580 template <>
61581 struct static_log2_impl<1, 0> {
61582 static const result_type value = 0;
61583 };
61584
61585 }
61586 }
61587
61588
61589
61590
61591
61592
61593
61594 template <static_log2_argument_type x>
61595 struct static_log2 {
61596
61597 static const static_log2_result_type value = detail::static_log2_impl::static_log2_impl<x>::value
61598
61599
61600 ;
61601
61602 };
61603
61604
61605 template <>
61606 struct static_log2<0> { };
61607
61608 }
61609 # 17 "../boost/functional/hash/detail/hash_float.hpp" 2
61610 # 1 "../boost/cstdint.hpp" 1
61611 # 18 "../boost/functional/hash/detail/hash_float.hpp" 2
61612 # 1 "../boost/assert.hpp" 1
61613 # 50 "../boost/assert.hpp"
61614 # 1 "/usr/include/assert.h" 1 3 4
61615 # 51 "../boost/assert.hpp" 2
61616 # 19 "../boost/functional/hash/detail/hash_float.hpp" 2
61617 # 30 "../boost/functional/hash/detail/hash_float.hpp"
61618 # 1 "../boost/functional/hash/detail/hash_float_generic.hpp" 1
61619 # 27 "../boost/functional/hash/detail/hash_float_generic.hpp"
61620 namespace boost
61621 {
61622 namespace hash_detail
61623 {
61624 inline void hash_float_combine(std::size_t& seed, std::size_t value)
61625 {
61626 seed ^= value + (seed<<6) + (seed>>2);
61627 }
61628
61629 template <class T>
61630 inline std::size_t float_hash_impl2(T v)
61631 {
61632 boost::hash_detail::call_frexp<T> frexp;
61633 boost::hash_detail::call_ldexp<T> ldexp;
61634
61635 int exp = 0;
61636
61637 v = frexp(v, &exp);
61638
61639
61640
61641 if(v < 0) {
61642 v = -v;
61643 exp += limits<T>::max_exponent -
61644 limits<T>::min_exponent;
61645 }
61646
61647 v = ldexp(v, limits<std::size_t>::digits);
61648 std::size_t seed = static_cast<std::size_t>(v);
61649 v -= static_cast<T>(seed);
61650
61651
61652 std::size_t const length
61653 = (limits<T>::digits *
61654 boost::static_log2<limits<T>::radix>::value
61655 + limits<std::size_t>::digits - 1)
61656 / limits<std::size_t>::digits;
61657
61658 for(std::size_t i = 0; i != length; ++i)
61659 {
61660 v = ldexp(v, limits<std::size_t>::digits);
61661 std::size_t part = static_cast<std::size_t>(v);
61662 v -= static_cast<T>(part);
61663 hash_float_combine(seed, part);
61664 }
61665
61666 hash_float_combine(seed, exp);
61667
61668 return seed;
61669 }
61670
61671 template <class T>
61672 inline std::size_t float_hash_impl(T v)
61673 {
61674 typedef typename select_hash_type<T>::type type;
61675 return float_hash_impl2(static_cast<type>(v));
61676 }
61677 }
61678 }
61679 # 31 "../boost/functional/hash/detail/hash_float.hpp" 2
61680 # 57 "../boost/functional/hash/detail/hash_float.hpp"
61681 namespace boost
61682 {
61683 namespace hash_detail
61684 {
61685 template <class T>
61686 inline std::size_t float_hash_value(T v)
61687 {
61688 using namespace std;
61689 switch (fpclassify(v)) {
61690 case FP_ZERO:
61691 return 0;
61692 case FP_INFINITE:
61693 return (std::size_t)(v > 0 ? -1 : -2);
61694 case FP_NAN:
61695 return (std::size_t)(-3);
61696 case FP_NORMAL:
61697 case FP_SUBNORMAL:
61698 return float_hash_impl(v);
61699 default:
61700 (static_cast<void> (0));
61701 return 0;
61702 }
61703 }
61704 }
61705 }
61706 # 16 "../boost/functional/hash/hash.hpp" 2
61707 # 38 "../boost/functional/hash/hash.hpp"
61708 namespace boost
61709 {
61710 # 52 "../boost/functional/hash/hash.hpp"
61711 std::size_t hash_value(bool);
61712 std::size_t hash_value(char);
61713 std::size_t hash_value(unsigned char);
61714 std::size_t hash_value(signed char);
61715 std::size_t hash_value(short);
61716 std::size_t hash_value(unsigned short);
61717 std::size_t hash_value(int);
61718 std::size_t hash_value(unsigned int);
61719 std::size_t hash_value(long);
61720 std::size_t hash_value(unsigned long);
61721
61722
61723 std::size_t hash_value(wchar_t);
61724
61725
61726
61727 std::size_t hash_value(boost::long_long_type);
61728 std::size_t hash_value(boost::ulong_long_type);
61729
61730
61731
61732 template <class T> std::size_t hash_value(T* const&);
61733
61734
61735
61736
61737
61738 template< class T, unsigned N >
61739 std::size_t hash_value(const T (&x)[N]);
61740
61741 template< class T, unsigned N >
61742 std::size_t hash_value(T (&x)[N]);
61743
61744
61745 std::size_t hash_value(float v);
61746 std::size_t hash_value(double v);
61747 std::size_t hash_value(long double v);
61748
61749 template <class Ch, class A>
61750 std::size_t hash_value(
61751 std::basic_string<Ch, std::char_traits<Ch>, A> const&);
61752
61753
61754
61755
61756
61757
61758
61759 namespace hash_detail
61760 {
61761 template <class T>
61762 inline std::size_t hash_value_signed(T val)
61763 {
61764 const int size_t_bits = std::numeric_limits<std::size_t>::digits;
61765
61766 const int length = (std::numeric_limits<T>::digits - 1)
61767 / size_t_bits;
61768
61769 std::size_t seed = 0;
61770 T positive = val < 0 ? -1 - val : val;
61771
61772
61773 for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
61774 {
61775 seed ^= (std::size_t) (positive >> i) + (seed<<6) + (seed>>2);
61776 }
61777 seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
61778
61779 return seed;
61780 }
61781
61782 template <class T>
61783 inline std::size_t hash_value_unsigned(T val)
61784 {
61785 const int size_t_bits = std::numeric_limits<std::size_t>::digits;
61786
61787 const int length = (std::numeric_limits<T>::digits - 1)
61788 / size_t_bits;
61789
61790 std::size_t seed = 0;
61791
61792
61793 for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
61794 {
61795 seed ^= (std::size_t) (val >> i) + (seed<<6) + (seed>>2);
61796 }
61797 seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
61798
61799 return seed;
61800 }
61801 }
61802
61803 inline std::size_t hash_value(bool v)
61804 {
61805 return static_cast<std::size_t>(v);
61806 }
61807
61808 inline std::size_t hash_value(char v)
61809 {
61810 return static_cast<std::size_t>(v);
61811 }
61812
61813 inline std::size_t hash_value(unsigned char v)
61814 {
61815 return static_cast<std::size_t>(v);
61816 }
61817
61818 inline std::size_t hash_value(signed char v)
61819 {
61820 return static_cast<std::size_t>(v);
61821 }
61822
61823 inline std::size_t hash_value(short v)
61824 {
61825 return static_cast<std::size_t>(v);
61826 }
61827
61828 inline std::size_t hash_value(unsigned short v)
61829 {
61830 return static_cast<std::size_t>(v);
61831 }
61832
61833 inline std::size_t hash_value(int v)
61834 {
61835 return static_cast<std::size_t>(v);
61836 }
61837
61838 inline std::size_t hash_value(unsigned int v)
61839 {
61840 return static_cast<std::size_t>(v);
61841 }
61842
61843 inline std::size_t hash_value(long v)
61844 {
61845 return static_cast<std::size_t>(v);
61846 }
61847
61848 inline std::size_t hash_value(unsigned long v)
61849 {
61850 return static_cast<std::size_t>(v);
61851 }
61852
61853
61854 inline std::size_t hash_value(wchar_t v)
61855 {
61856 return static_cast<std::size_t>(v);
61857 }
61858
61859
61860
61861 inline std::size_t hash_value(boost::long_long_type v)
61862 {
61863 return hash_detail::hash_value_signed(v);
61864 }
61865
61866 inline std::size_t hash_value(boost::ulong_long_type v)
61867 {
61868 return hash_detail::hash_value_unsigned(v);
61869 }
61870
61871
61872
61873
61874 template <class T> std::size_t hash_value(T* const& v)
61875
61876
61877
61878 {
61879
61880
61881
61882
61883
61884
61885 std::size_t x = static_cast<std::size_t>(
61886 reinterpret_cast<std::ptrdiff_t>(v));
61887
61888 return x + (x >> 3);
61889 }
61890 # 246 "../boost/functional/hash/hash.hpp"
61891 template <class T>
61892 inline void hash_combine(std::size_t& seed, T const& v)
61893
61894 {
61895 boost::hash<T> hasher;
61896 seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
61897 }
61898
61899
61900
61901
61902
61903 template <class It>
61904 inline std::size_t hash_range(It first, It last)
61905 {
61906 std::size_t seed = 0;
61907
61908 for(; first != last; ++first)
61909 {
61910 hash_combine(seed, *first);
61911 }
61912
61913 return seed;
61914 }
61915
61916 template <class It>
61917 inline void hash_range(std::size_t& seed, It first, It last)
61918 {
61919 for(; first != last; ++first)
61920 {
61921 hash_combine(seed, *first);
61922 }
61923 }
61924 # 307 "../boost/functional/hash/hash.hpp"
61925 template< class T, unsigned N >
61926 inline std::size_t hash_value(const T (&x)[N])
61927 {
61928 return hash_range(x, x + N);
61929 }
61930
61931 template< class T, unsigned N >
61932 inline std::size_t hash_value(T (&x)[N])
61933 {
61934 return hash_range(x, x + N);
61935 }
61936
61937
61938 template <class Ch, class A>
61939 inline std::size_t hash_value(
61940 std::basic_string<Ch, std::char_traits<Ch>, A> const& v)
61941 {
61942 return hash_range(v.begin(), v.end());
61943 }
61944
61945 inline std::size_t hash_value(float v)
61946 {
61947 return boost::hash_detail::float_hash_value(v);
61948 }
61949
61950 inline std::size_t hash_value(double v)
61951 {
61952 return boost::hash_detail::float_hash_value(v);
61953 }
61954
61955 inline std::size_t hash_value(long double v)
61956 {
61957 return boost::hash_detail::float_hash_value(v);
61958 }
61959 # 425 "../boost/functional/hash/hash.hpp"
61960 template <> struct hash<bool> : public std::unary_function<bool, std::size_t> { std::size_t operator()(bool v) const { return boost::hash_value(v); } };
61961 template <> struct hash<char> : public std::unary_function<char, std::size_t> { std::size_t operator()(char v) const { return boost::hash_value(v); } };
61962 template <> struct hash<signed char> : public std::unary_function<signed char, std::size_t> { std::size_t operator()(signed char v) const { return boost::hash_value(v); } };
61963 template <> struct hash<unsigned char> : public std::unary_function<unsigned char, std::size_t> { std::size_t operator()(unsigned char v) const { return boost::hash_value(v); } };
61964
61965 template <> struct hash<wchar_t> : public std::unary_function<wchar_t, std::size_t> { std::size_t operator()(wchar_t v) const { return boost::hash_value(v); } };
61966
61967 template <> struct hash<short> : public std::unary_function<short, std::size_t> { std::size_t operator()(short v) const { return boost::hash_value(v); } };
61968 template <> struct hash<unsigned short> : public std::unary_function<unsigned short, std::size_t> { std::size_t operator()(unsigned short v) const { return boost::hash_value(v); } };
61969 template <> struct hash<int> : public std::unary_function<int, std::size_t> { std::size_t operator()(int v) const { return boost::hash_value(v); } };
61970 template <> struct hash<unsigned int> : public std::unary_function<unsigned int, std::size_t> { std::size_t operator()(unsigned int v) const { return boost::hash_value(v); } };
61971 template <> struct hash<long> : public std::unary_function<long, std::size_t> { std::size_t operator()(long v) const { return boost::hash_value(v); } };
61972 template <> struct hash<unsigned long> : public std::unary_function<unsigned long, std::size_t> { std::size_t operator()(unsigned long v) const { return boost::hash_value(v); } };
61973
61974 template <> struct hash<float> : public std::unary_function<float, std::size_t> { std::size_t operator()(float v) const { return boost::hash_value(v); } };
61975 template <> struct hash<double> : public std::unary_function<double, std::size_t> { std::size_t operator()(double v) const { return boost::hash_value(v); } };
61976 template <> struct hash<long double> : public std::unary_function<long double, std::size_t> { std::size_t operator()(long double v) const { return boost::hash_value(v); } };
61977
61978 template <> struct hash<std::string> : public std::unary_function<std::string, std::size_t> { std::size_t operator()(std::string const& v) const { return boost::hash_value(v); } };
61979
61980 template <> struct hash<std::wstring> : public std::unary_function<std::wstring, std::size_t> { std::size_t operator()(std::wstring const& v) const { return boost::hash_value(v); } };
61981
61982
61983
61984 template <> struct hash<boost::long_long_type> : public std::unary_function<boost::long_long_type, std::size_t> { std::size_t operator()(boost::long_long_type v) const { return boost::hash_value(v); } };
61985 template <> struct hash<boost::ulong_long_type> : public std::unary_function<boost::ulong_long_type, std::size_t> { std::size_t operator()(boost::ulong_long_type v) const { return boost::hash_value(v); } };
61986 # 464 "../boost/functional/hash/hash.hpp"
61987 template <class T>
61988 struct hash<T*>
61989 : public std::unary_function<T*, std::size_t>
61990 {
61991 std::size_t operator()(T* v) const
61992 {
61993
61994 return boost::hash_value(v);
61995
61996
61997
61998
61999
62000
62001 }
62002 };
62003 # 523 "../boost/functional/hash/hash.hpp"
62004 }
62005 # 535 "../boost/functional/hash/hash.hpp"
62006 # 1 "../boost/functional/hash/extensions.hpp" 1
62007 # 16 "../boost/functional/hash/extensions.hpp"
62008 # 1 "../boost/functional/hash/hash.hpp" 1
62009 # 17 "../boost/functional/hash/extensions.hpp" 2
62010 # 1 "../boost/detail/container_fwd.hpp" 1
62011 # 89 "../boost/detail/container_fwd.hpp"
62012 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/deque" 1 3
62013 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/deque" 3
62014
62015 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/deque" 3
62016
62017
62018
62019
62020
62021 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 1 3
62022 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62023 namespace std __attribute__ ((__visibility__ ("default")))
62024 {
62025
62026 # 87 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62027 inline size_t
62028 __deque_buf_size(size_t __size)
62029 { return (__size < 512
62030 ? size_t(512 / __size) : size_t(1)); }
62031 # 104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62032 template<typename _Tp, typename _Ref, typename _Ptr>
62033 struct _Deque_iterator
62034 {
62035 typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator;
62036 typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
62037
62038 static size_t _S_buffer_size()
62039 { return __deque_buf_size(sizeof(_Tp)); }
62040
62041 typedef std::random_access_iterator_tag iterator_category;
62042 typedef _Tp value_type;
62043 typedef _Ptr pointer;
62044 typedef _Ref reference;
62045 typedef size_t size_type;
62046 typedef ptrdiff_t difference_type;
62047 typedef _Tp** _Map_pointer;
62048 typedef _Deque_iterator _Self;
62049
62050 _Tp* _M_cur;
62051 _Tp* _M_first;
62052 _Tp* _M_last;
62053 _Map_pointer _M_node;
62054
62055 _Deque_iterator(_Tp* __x, _Map_pointer __y)
62056 : _M_cur(__x), _M_first(*__y),
62057 _M_last(*__y + _S_buffer_size()), _M_node(__y) { }
62058
62059 _Deque_iterator()
62060 : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) { }
62061
62062 _Deque_iterator(const iterator& __x)
62063 : _M_cur(__x._M_cur), _M_first(__x._M_first),
62064 _M_last(__x._M_last), _M_node(__x._M_node) { }
62065
62066 reference
62067 operator*() const
62068 { return *_M_cur; }
62069
62070 pointer
62071 operator->() const
62072 { return _M_cur; }
62073
62074 _Self&
62075 operator++()
62076 {
62077 ++_M_cur;
62078 if (_M_cur == _M_last)
62079 {
62080 _M_set_node(_M_node + 1);
62081 _M_cur = _M_first;
62082 }
62083 return *this;
62084 }
62085
62086 _Self
62087 operator++(int)
62088 {
62089 _Self __tmp = *this;
62090 ++*this;
62091 return __tmp;
62092 }
62093
62094 _Self&
62095 operator--()
62096 {
62097 if (_M_cur == _M_first)
62098 {
62099 _M_set_node(_M_node - 1);
62100 _M_cur = _M_last;
62101 }
62102 --_M_cur;
62103 return *this;
62104 }
62105
62106 _Self
62107 operator--(int)
62108 {
62109 _Self __tmp = *this;
62110 --*this;
62111 return __tmp;
62112 }
62113
62114 _Self&
62115 operator+=(difference_type __n)
62116 {
62117 const difference_type __offset = __n + (_M_cur - _M_first);
62118 if (__offset >= 0 && __offset < difference_type(_S_buffer_size()))
62119 _M_cur += __n;
62120 else
62121 {
62122 const difference_type __node_offset =
62123 __offset > 0 ? __offset / difference_type(_S_buffer_size())
62124 : -difference_type((-__offset - 1)
62125 / _S_buffer_size()) - 1;
62126 _M_set_node(_M_node + __node_offset);
62127 _M_cur = _M_first + (__offset - __node_offset
62128 * difference_type(_S_buffer_size()));
62129 }
62130 return *this;
62131 }
62132
62133 _Self
62134 operator+(difference_type __n) const
62135 {
62136 _Self __tmp = *this;
62137 return __tmp += __n;
62138 }
62139
62140 _Self&
62141 operator-=(difference_type __n)
62142 { return *this += -__n; }
62143
62144 _Self
62145 operator-(difference_type __n) const
62146 {
62147 _Self __tmp = *this;
62148 return __tmp -= __n;
62149 }
62150
62151 reference
62152 operator[](difference_type __n) const
62153 { return *(*this + __n); }
62154
62155
62156
62157
62158
62159
62160 void
62161 _M_set_node(_Map_pointer __new_node)
62162 {
62163 _M_node = __new_node;
62164 _M_first = *__new_node;
62165 _M_last = _M_first + difference_type(_S_buffer_size());
62166 }
62167 };
62168
62169
62170
62171
62172 template<typename _Tp, typename _Ref, typename _Ptr>
62173 inline bool
62174 operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62175 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62176 { return __x._M_cur == __y._M_cur; }
62177
62178 template<typename _Tp, typename _RefL, typename _PtrL,
62179 typename _RefR, typename _PtrR>
62180 inline bool
62181 operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62182 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62183 { return __x._M_cur == __y._M_cur; }
62184
62185 template<typename _Tp, typename _Ref, typename _Ptr>
62186 inline bool
62187 operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62188 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62189 { return !(__x == __y); }
62190
62191 template<typename _Tp, typename _RefL, typename _PtrL,
62192 typename _RefR, typename _PtrR>
62193 inline bool
62194 operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62195 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62196 { return !(__x == __y); }
62197
62198 template<typename _Tp, typename _Ref, typename _Ptr>
62199 inline bool
62200 operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62201 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62202 { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur)
62203 : (__x._M_node < __y._M_node); }
62204
62205 template<typename _Tp, typename _RefL, typename _PtrL,
62206 typename _RefR, typename _PtrR>
62207 inline bool
62208 operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62209 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62210 { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur)
62211 : (__x._M_node < __y._M_node); }
62212
62213 template<typename _Tp, typename _Ref, typename _Ptr>
62214 inline bool
62215 operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62216 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62217 { return __y < __x; }
62218
62219 template<typename _Tp, typename _RefL, typename _PtrL,
62220 typename _RefR, typename _PtrR>
62221 inline bool
62222 operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62223 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62224 { return __y < __x; }
62225
62226 template<typename _Tp, typename _Ref, typename _Ptr>
62227 inline bool
62228 operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62229 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62230 { return !(__y < __x); }
62231
62232 template<typename _Tp, typename _RefL, typename _PtrL,
62233 typename _RefR, typename _PtrR>
62234 inline bool
62235 operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62236 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62237 { return !(__y < __x); }
62238
62239 template<typename _Tp, typename _Ref, typename _Ptr>
62240 inline bool
62241 operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62242 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62243 { return !(__x < __y); }
62244
62245 template<typename _Tp, typename _RefL, typename _PtrL,
62246 typename _RefR, typename _PtrR>
62247 inline bool
62248 operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62249 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62250 { return !(__x < __y); }
62251
62252
62253
62254
62255
62256 template<typename _Tp, typename _Ref, typename _Ptr>
62257 inline typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type
62258 operator-(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
62259 const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
62260 {
62261 return typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type
62262 (_Deque_iterator<_Tp, _Ref, _Ptr>::_S_buffer_size())
62263 * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first)
62264 + (__y._M_last - __y._M_cur);
62265 }
62266
62267 template<typename _Tp, typename _RefL, typename _PtrL,
62268 typename _RefR, typename _PtrR>
62269 inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type
62270 operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
62271 const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
62272 {
62273 return typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type
62274 (_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size())
62275 * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first)
62276 + (__y._M_last - __y._M_cur);
62277 }
62278
62279 template<typename _Tp, typename _Ref, typename _Ptr>
62280 inline _Deque_iterator<_Tp, _Ref, _Ptr>
62281 operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x)
62282 { return __x + __n; }
62283
62284 template<typename _Tp>
62285 void
62286 fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>&,
62287 const _Deque_iterator<_Tp, _Tp&, _Tp*>&, const _Tp&);
62288
62289 template<typename _Tp>
62290 _Deque_iterator<_Tp, _Tp&, _Tp*>
62291 copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>,
62292 _Deque_iterator<_Tp, const _Tp&, const _Tp*>,
62293 _Deque_iterator<_Tp, _Tp&, _Tp*>);
62294
62295 template<typename _Tp>
62296 inline _Deque_iterator<_Tp, _Tp&, _Tp*>
62297 copy(_Deque_iterator<_Tp, _Tp&, _Tp*> __first,
62298 _Deque_iterator<_Tp, _Tp&, _Tp*> __last,
62299 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
62300 { return std::copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first),
62301 _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last),
62302 __result); }
62303
62304 template<typename _Tp>
62305 _Deque_iterator<_Tp, _Tp&, _Tp*>
62306 copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>,
62307 _Deque_iterator<_Tp, const _Tp&, const _Tp*>,
62308 _Deque_iterator<_Tp, _Tp&, _Tp*>);
62309
62310 template<typename _Tp>
62311 inline _Deque_iterator<_Tp, _Tp&, _Tp*>
62312 copy_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first,
62313 _Deque_iterator<_Tp, _Tp&, _Tp*> __last,
62314 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
62315 { return std::copy_backward(_Deque_iterator<_Tp,
62316 const _Tp&, const _Tp*>(__first),
62317 _Deque_iterator<_Tp,
62318 const _Tp&, const _Tp*>(__last),
62319 __result); }
62320 # 437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62321 template<typename _Tp, typename _Alloc>
62322 class _Deque_base
62323 {
62324 public:
62325 typedef _Alloc allocator_type;
62326
62327 allocator_type
62328 get_allocator() const
62329 { return allocator_type(_M_get_Tp_allocator()); }
62330
62331 typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator;
62332 typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
62333
62334 _Deque_base()
62335 : _M_impl()
62336 { _M_initialize_map(0); }
62337
62338 _Deque_base(size_t __num_elements)
62339 : _M_impl()
62340 { _M_initialize_map(__num_elements); }
62341
62342 _Deque_base(const allocator_type& __a, size_t __num_elements)
62343 : _M_impl(__a)
62344 { _M_initialize_map(__num_elements); }
62345
62346 _Deque_base(const allocator_type& __a)
62347 : _M_impl(__a)
62348 { }
62349 # 481 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62350 ~_Deque_base();
62351
62352 protected:
62353
62354
62355
62356 typedef typename _Alloc::template rebind<_Tp*>::other _Map_alloc_type;
62357
62358 typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
62359
62360 struct _Deque_impl
62361 : public _Tp_alloc_type
62362 {
62363 _Tp** _M_map;
62364 size_t _M_map_size;
62365 iterator _M_start;
62366 iterator _M_finish;
62367
62368 _Deque_impl()
62369 : _Tp_alloc_type(), _M_map(0), _M_map_size(0),
62370 _M_start(), _M_finish()
62371 { }
62372
62373 _Deque_impl(const _Tp_alloc_type& __a)
62374 : _Tp_alloc_type(__a), _M_map(0), _M_map_size(0),
62375 _M_start(), _M_finish()
62376 { }
62377 };
62378
62379 _Tp_alloc_type&
62380 _M_get_Tp_allocator()
62381 { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
62382
62383 const _Tp_alloc_type&
62384 _M_get_Tp_allocator() const
62385 { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
62386
62387 _Map_alloc_type
62388 _M_get_map_allocator() const
62389 { return _Map_alloc_type(_M_get_Tp_allocator()); }
62390
62391 _Tp*
62392 _M_allocate_node()
62393 {
62394 return _M_impl._Tp_alloc_type::allocate(__deque_buf_size(sizeof(_Tp)));
62395 }
62396
62397 void
62398 _M_deallocate_node(_Tp* __p)
62399 {
62400 _M_impl._Tp_alloc_type::deallocate(__p, __deque_buf_size(sizeof(_Tp)));
62401 }
62402
62403 _Tp**
62404 _M_allocate_map(size_t __n)
62405 { return _M_get_map_allocator().allocate(__n); }
62406
62407 void
62408 _M_deallocate_map(_Tp** __p, size_t __n)
62409 { _M_get_map_allocator().deallocate(__p, __n); }
62410
62411 protected:
62412 void _M_initialize_map(size_t);
62413 void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish);
62414 void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish);
62415 enum { _S_initial_map_size = 8 };
62416
62417 _Deque_impl _M_impl;
62418 };
62419
62420 template<typename _Tp, typename _Alloc>
62421 _Deque_base<_Tp, _Alloc>::
62422 ~_Deque_base()
62423 {
62424 if (this->_M_impl._M_map)
62425 {
62426 _M_destroy_nodes(this->_M_impl._M_start._M_node,
62427 this->_M_impl._M_finish._M_node + 1);
62428 _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
62429 }
62430 }
62431 # 571 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62432 template<typename _Tp, typename _Alloc>
62433 void
62434 _Deque_base<_Tp, _Alloc>::
62435 _M_initialize_map(size_t __num_elements)
62436 {
62437 const size_t __num_nodes = (__num_elements/ __deque_buf_size(sizeof(_Tp))
62438 + 1);
62439
62440 this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size,
62441 size_t(__num_nodes + 2));
62442 this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size);
62443
62444
62445
62446
62447
62448
62449 _Tp** __nstart = (this->_M_impl._M_map
62450 + (this->_M_impl._M_map_size - __num_nodes) / 2);
62451 _Tp** __nfinish = __nstart + __num_nodes;
62452
62453 try
62454 { _M_create_nodes(__nstart, __nfinish); }
62455 catch(...)
62456 {
62457 _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
62458 this->_M_impl._M_map = 0;
62459 this->_M_impl._M_map_size = 0;
62460 throw;
62461 }
62462
62463 this->_M_impl._M_start._M_set_node(__nstart);
62464 this->_M_impl._M_finish._M_set_node(__nfinish - 1);
62465 this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first;
62466 this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first
62467 + __num_elements
62468 % __deque_buf_size(sizeof(_Tp)));
62469 }
62470
62471 template<typename _Tp, typename _Alloc>
62472 void
62473 _Deque_base<_Tp, _Alloc>::
62474 _M_create_nodes(_Tp** __nstart, _Tp** __nfinish)
62475 {
62476 _Tp** __cur;
62477 try
62478 {
62479 for (__cur = __nstart; __cur < __nfinish; ++__cur)
62480 *__cur = this->_M_allocate_node();
62481 }
62482 catch(...)
62483 {
62484 _M_destroy_nodes(__nstart, __cur);
62485 throw;
62486 }
62487 }
62488
62489 template<typename _Tp, typename _Alloc>
62490 void
62491 _Deque_base<_Tp, _Alloc>::
62492 _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
62493 {
62494 for (_Tp** __n = __nstart; __n < __nfinish; ++__n)
62495 _M_deallocate_node(*__n);
62496 }
62497 # 718 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62498 template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
62499 class deque : protected _Deque_base<_Tp, _Alloc>
62500 {
62501
62502 typedef typename _Alloc::value_type _Alloc_value_type;
62503
62504
62505
62506 typedef _Deque_base<_Tp, _Alloc> _Base;
62507 typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
62508
62509 public:
62510 typedef _Tp value_type;
62511 typedef typename _Tp_alloc_type::pointer pointer;
62512 typedef typename _Tp_alloc_type::const_pointer const_pointer;
62513 typedef typename _Tp_alloc_type::reference reference;
62514 typedef typename _Tp_alloc_type::const_reference const_reference;
62515 typedef typename _Base::iterator iterator;
62516 typedef typename _Base::const_iterator const_iterator;
62517 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
62518 typedef std::reverse_iterator<iterator> reverse_iterator;
62519 typedef size_t size_type;
62520 typedef ptrdiff_t difference_type;
62521 typedef _Alloc allocator_type;
62522
62523 protected:
62524 typedef pointer* _Map_pointer;
62525
62526 static size_t _S_buffer_size()
62527 { return __deque_buf_size(sizeof(_Tp)); }
62528
62529
62530 using _Base::_M_initialize_map;
62531 using _Base::_M_create_nodes;
62532 using _Base::_M_destroy_nodes;
62533 using _Base::_M_allocate_node;
62534 using _Base::_M_deallocate_node;
62535 using _Base::_M_allocate_map;
62536 using _Base::_M_deallocate_map;
62537 using _Base::_M_get_Tp_allocator;
62538
62539
62540
62541
62542
62543 using _Base::_M_impl;
62544
62545 public:
62546
62547
62548
62549
62550
62551 deque()
62552 : _Base() { }
62553
62554
62555
62556
62557
62558 explicit
62559 deque(const allocator_type& __a)
62560 : _Base(__a, 0) { }
62561 # 816 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62562 explicit
62563 deque(size_type __n, const value_type& __value = value_type(),
62564 const allocator_type& __a = allocator_type())
62565 : _Base(__a, __n)
62566 { _M_fill_initialize(__value); }
62567 # 830 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62568 deque(const deque& __x)
62569 : _Base(__x._M_get_Tp_allocator(), __x.size())
62570 { std::__uninitialized_copy_a(__x.begin(), __x.end(),
62571 this->_M_impl._M_start,
62572 _M_get_Tp_allocator()); }
62573 # 882 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62574 template<typename _InputIterator>
62575 deque(_InputIterator __first, _InputIterator __last,
62576 const allocator_type& __a = allocator_type())
62577 : _Base(__a)
62578 {
62579
62580 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
62581 _M_initialize_dispatch(__first, __last, _Integral());
62582 }
62583
62584
62585
62586
62587
62588
62589 ~deque()
62590 { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); }
62591 # 907 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62592 deque&
62593 operator=(const deque& __x);
62594 # 957 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62595 void
62596 assign(size_type __n, const value_type& __val)
62597 { _M_fill_assign(__n, __val); }
62598 # 973 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62599 template<typename _InputIterator>
62600 void
62601 assign(_InputIterator __first, _InputIterator __last)
62602 {
62603 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
62604 _M_assign_dispatch(__first, __last, _Integral());
62605 }
62606 # 999 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62607 allocator_type
62608 get_allocator() const
62609 { return _Base::get_allocator(); }
62610
62611
62612
62613
62614
62615
62616 iterator
62617 begin()
62618 { return this->_M_impl._M_start; }
62619
62620
62621
62622
62623
62624 const_iterator
62625 begin() const
62626 { return this->_M_impl._M_start; }
62627
62628
62629
62630
62631
62632
62633 iterator
62634 end()
62635 { return this->_M_impl._M_finish; }
62636
62637
62638
62639
62640
62641
62642 const_iterator
62643 end() const
62644 { return this->_M_impl._M_finish; }
62645
62646
62647
62648
62649
62650
62651 reverse_iterator
62652 rbegin()
62653 { return reverse_iterator(this->_M_impl._M_finish); }
62654
62655
62656
62657
62658
62659
62660 const_reverse_iterator
62661 rbegin() const
62662 { return const_reverse_iterator(this->_M_impl._M_finish); }
62663
62664
62665
62666
62667
62668
62669 reverse_iterator
62670 rend()
62671 { return reverse_iterator(this->_M_impl._M_start); }
62672
62673
62674
62675
62676
62677
62678 const_reverse_iterator
62679 rend() const
62680 { return const_reverse_iterator(this->_M_impl._M_start); }
62681 # 1113 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62682 size_type
62683 size() const
62684 { return this->_M_impl._M_finish - this->_M_impl._M_start; }
62685
62686
62687 size_type
62688 max_size() const
62689 { return _M_get_Tp_allocator().max_size(); }
62690 # 1176 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62691 void
62692 resize(size_type __new_size, value_type __x = value_type())
62693 {
62694 const size_type __len = size();
62695 if (__new_size > __len)
62696 insert(this->_M_impl._M_finish, __new_size - __len, __x);
62697 else if (__new_size < __len)
62698 _M_erase_at_end(this->_M_impl._M_start
62699 + difference_type(__new_size));
62700 }
62701 # 1199 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62702 bool
62703 empty() const
62704 { return this->_M_impl._M_finish == this->_M_impl._M_start; }
62705 # 1215 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62706 reference
62707 operator[](size_type __n)
62708 { return this->_M_impl._M_start[difference_type(__n)]; }
62709 # 1230 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62710 const_reference
62711 operator[](size_type __n) const
62712 { return this->_M_impl._M_start[difference_type(__n)]; }
62713
62714 protected:
62715
62716 void
62717 _M_range_check(size_type __n) const
62718 {
62719 if (__n >= this->size())
62720 __throw_out_of_range(("deque::_M_range_check"));
62721 }
62722
62723 public:
62724 # 1255 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62725 reference
62726 at(size_type __n)
62727 {
62728 _M_range_check(__n);
62729 return (*this)[__n];
62730 }
62731 # 1273 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62732 const_reference
62733 at(size_type __n) const
62734 {
62735 _M_range_check(__n);
62736 return (*this)[__n];
62737 }
62738
62739
62740
62741
62742
62743 reference
62744 front()
62745 { return *begin(); }
62746
62747
62748
62749
62750
62751 const_reference
62752 front() const
62753 { return *begin(); }
62754
62755
62756
62757
62758
62759 reference
62760 back()
62761 {
62762 iterator __tmp = end();
62763 --__tmp;
62764 return *__tmp;
62765 }
62766
62767
62768
62769
62770
62771 const_reference
62772 back() const
62773 {
62774 const_iterator __tmp = end();
62775 --__tmp;
62776 return *__tmp;
62777 }
62778 # 1330 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62779 void
62780 push_front(const value_type& __x)
62781 {
62782 if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
62783 {
62784 this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1, __x);
62785 --this->_M_impl._M_start._M_cur;
62786 }
62787 else
62788 _M_push_front_aux(__x);
62789 }
62790 # 1361 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62791 void
62792 push_back(const value_type& __x)
62793 {
62794 if (this->_M_impl._M_finish._M_cur
62795 != this->_M_impl._M_finish._M_last - 1)
62796 {
62797 this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __x);
62798 ++this->_M_impl._M_finish._M_cur;
62799 }
62800 else
62801 _M_push_back_aux(__x);
62802 }
62803 # 1392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62804 void
62805 pop_front()
62806 {
62807 if (this->_M_impl._M_start._M_cur
62808 != this->_M_impl._M_start._M_last - 1)
62809 {
62810 this->_M_impl.destroy(this->_M_impl._M_start._M_cur);
62811 ++this->_M_impl._M_start._M_cur;
62812 }
62813 else
62814 _M_pop_front_aux();
62815 }
62816 # 1413 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62817 void
62818 pop_back()
62819 {
62820 if (this->_M_impl._M_finish._M_cur
62821 != this->_M_impl._M_finish._M_first)
62822 {
62823 --this->_M_impl._M_finish._M_cur;
62824 this->_M_impl.destroy(this->_M_impl._M_finish._M_cur);
62825 }
62826 else
62827 _M_pop_back_aux();
62828 }
62829 # 1450 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62830 iterator
62831 insert(iterator __position, const value_type& __x);
62832 # 1490 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62833 void
62834 insert(iterator __position, size_type __n, const value_type& __x)
62835 { _M_fill_insert(__position, __n, __x); }
62836 # 1504 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62837 template<typename _InputIterator>
62838 void
62839 insert(iterator __position, _InputIterator __first,
62840 _InputIterator __last)
62841 {
62842
62843 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
62844 _M_insert_dispatch(__position, __first, __last, _Integral());
62845 }
62846 # 1527 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62847 iterator
62848 erase(iterator __position);
62849 # 1546 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62850 iterator
62851 erase(iterator __first, iterator __last);
62852 # 1558 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62853 void
62854 swap(deque& __x)
62855 {
62856 std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
62857 std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
62858 std::swap(this->_M_impl._M_map, __x._M_impl._M_map);
62859 std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size);
62860
62861
62862
62863 std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
62864 __x._M_get_Tp_allocator());
62865 }
62866
62867
62868
62869
62870
62871
62872
62873 void
62874 clear()
62875 { _M_erase_at_end(begin()); }
62876
62877 protected:
62878
62879
62880
62881
62882
62883
62884 template<typename _Integer>
62885 void
62886 _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
62887 {
62888 _M_initialize_map(static_cast<size_type>(__n));
62889 _M_fill_initialize(__x);
62890 }
62891
62892
62893 template<typename _InputIterator>
62894 void
62895 _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
62896 __false_type)
62897 {
62898 typedef typename std::iterator_traits<_InputIterator>::
62899 iterator_category _IterCategory;
62900 _M_range_initialize(__first, __last, _IterCategory());
62901 }
62902 # 1620 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62903 template<typename _InputIterator>
62904 void
62905 _M_range_initialize(_InputIterator __first, _InputIterator __last,
62906 std::input_iterator_tag);
62907
62908
62909 template<typename _ForwardIterator>
62910 void
62911 _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
62912 std::forward_iterator_tag);
62913 # 1642 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62914 void
62915 _M_fill_initialize(const value_type& __value);
62916 # 1658 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62917 template<typename _Integer>
62918 void
62919 _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
62920 { _M_fill_assign(__n, __val); }
62921
62922
62923 template<typename _InputIterator>
62924 void
62925 _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
62926 __false_type)
62927 {
62928 typedef typename std::iterator_traits<_InputIterator>::
62929 iterator_category _IterCategory;
62930 _M_assign_aux(__first, __last, _IterCategory());
62931 }
62932
62933
62934 template<typename _InputIterator>
62935 void
62936 _M_assign_aux(_InputIterator __first, _InputIterator __last,
62937 std::input_iterator_tag);
62938
62939
62940 template<typename _ForwardIterator>
62941 void
62942 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
62943 std::forward_iterator_tag)
62944 {
62945 const size_type __len = std::distance(__first, __last);
62946 if (__len > size())
62947 {
62948 _ForwardIterator __mid = __first;
62949 std::advance(__mid, size());
62950 std::copy(__first, __mid, begin());
62951 insert(end(), __mid, __last);
62952 }
62953 else
62954 _M_erase_at_end(std::copy(__first, __last, begin()));
62955 }
62956
62957
62958
62959 void
62960 _M_fill_assign(size_type __n, const value_type& __val)
62961 {
62962 if (__n > size())
62963 {
62964 std::fill(begin(), end(), __val);
62965 insert(end(), __n - size(), __val);
62966 }
62967 else
62968 {
62969 _M_erase_at_end(begin() + difference_type(__n));
62970 std::fill(begin(), end(), __val);
62971 }
62972 }
62973
62974
62975
62976
62977 void _M_push_back_aux(const value_type&);
62978
62979 void _M_push_front_aux(const value_type&);
62980 # 1729 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62981 void _M_pop_back_aux();
62982
62983 void _M_pop_front_aux();
62984 # 1741 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
62985 template<typename _Integer>
62986 void
62987 _M_insert_dispatch(iterator __pos,
62988 _Integer __n, _Integer __x, __true_type)
62989 { _M_fill_insert(__pos, __n, __x); }
62990
62991
62992 template<typename _InputIterator>
62993 void
62994 _M_insert_dispatch(iterator __pos,
62995 _InputIterator __first, _InputIterator __last,
62996 __false_type)
62997 {
62998 typedef typename std::iterator_traits<_InputIterator>::
62999 iterator_category _IterCategory;
63000 _M_range_insert_aux(__pos, __first, __last, _IterCategory());
63001 }
63002
63003
63004 template<typename _InputIterator>
63005 void
63006 _M_range_insert_aux(iterator __pos, _InputIterator __first,
63007 _InputIterator __last, std::input_iterator_tag);
63008
63009
63010 template<typename _ForwardIterator>
63011 void
63012 _M_range_insert_aux(iterator __pos, _ForwardIterator __first,
63013 _ForwardIterator __last, std::forward_iterator_tag);
63014
63015
63016
63017
63018 void
63019 _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
63020
63021
63022
63023 iterator
63024 _M_insert_aux(iterator __pos, const value_type& __x);
63025
63026
63027
63028
63029
63030
63031
63032 void
63033 _M_insert_aux(iterator __pos, size_type __n, const value_type& __x);
63034
63035
63036 template<typename _ForwardIterator>
63037 void
63038 _M_insert_aux(iterator __pos,
63039 _ForwardIterator __first, _ForwardIterator __last,
63040 size_type __n);
63041
63042
63043
63044
63045 void
63046 _M_destroy_data_aux(iterator __first, iterator __last);
63047
63048
63049
63050 template<typename _Alloc1>
63051 void
63052 _M_destroy_data(iterator __first, iterator __last, const _Alloc1&)
63053 { _M_destroy_data_aux(__first, __last); }
63054
63055 void
63056 _M_destroy_data(iterator __first, iterator __last,
63057 const std::allocator<_Tp>&)
63058 {
63059 if (!__has_trivial_destructor(value_type))
63060 _M_destroy_data_aux(__first, __last);
63061 }
63062
63063
63064 void
63065 _M_erase_at_begin(iterator __pos)
63066 {
63067 _M_destroy_data(begin(), __pos, _M_get_Tp_allocator());
63068 _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node);
63069 this->_M_impl._M_start = __pos;
63070 }
63071
63072
63073
63074 void
63075 _M_erase_at_end(iterator __pos)
63076 {
63077 _M_destroy_data(__pos, end(), _M_get_Tp_allocator());
63078 _M_destroy_nodes(__pos._M_node + 1,
63079 this->_M_impl._M_finish._M_node + 1);
63080 this->_M_impl._M_finish = __pos;
63081 }
63082 # 1847 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
63083 iterator
63084 _M_reserve_elements_at_front(size_type __n)
63085 {
63086 const size_type __vacancies = this->_M_impl._M_start._M_cur
63087 - this->_M_impl._M_start._M_first;
63088 if (__n > __vacancies)
63089 _M_new_elements_at_front(__n - __vacancies);
63090 return this->_M_impl._M_start - difference_type(__n);
63091 }
63092
63093 iterator
63094 _M_reserve_elements_at_back(size_type __n)
63095 {
63096 const size_type __vacancies = (this->_M_impl._M_finish._M_last
63097 - this->_M_impl._M_finish._M_cur) - 1;
63098 if (__n > __vacancies)
63099 _M_new_elements_at_back(__n - __vacancies);
63100 return this->_M_impl._M_finish + difference_type(__n);
63101 }
63102
63103 void
63104 _M_new_elements_at_front(size_type __new_elements);
63105
63106 void
63107 _M_new_elements_at_back(size_type __new_elements);
63108 # 1883 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
63109 void
63110 _M_reserve_map_at_back(size_type __nodes_to_add = 1)
63111 {
63112 if (__nodes_to_add + 1 > this->_M_impl._M_map_size
63113 - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map))
63114 _M_reallocate_map(__nodes_to_add, false);
63115 }
63116
63117 void
63118 _M_reserve_map_at_front(size_type __nodes_to_add = 1)
63119 {
63120 if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node
63121 - this->_M_impl._M_map))
63122 _M_reallocate_map(__nodes_to_add, true);
63123 }
63124
63125 void
63126 _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
63127
63128 };
63129 # 1915 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
63130 template<typename _Tp, typename _Alloc>
63131 inline bool
63132 operator==(const deque<_Tp, _Alloc>& __x,
63133 const deque<_Tp, _Alloc>& __y)
63134 { return __x.size() == __y.size()
63135 && std::equal(__x.begin(), __x.end(), __y.begin()); }
63136 # 1933 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_deque.h" 3
63137 template<typename _Tp, typename _Alloc>
63138 inline bool
63139 operator<(const deque<_Tp, _Alloc>& __x,
63140 const deque<_Tp, _Alloc>& __y)
63141 { return std::lexicographical_compare(__x.begin(), __x.end(),
63142 __y.begin(), __y.end()); }
63143
63144
63145 template<typename _Tp, typename _Alloc>
63146 inline bool
63147 operator!=(const deque<_Tp, _Alloc>& __x,
63148 const deque<_Tp, _Alloc>& __y)
63149 { return !(__x == __y); }
63150
63151
63152 template<typename _Tp, typename _Alloc>
63153 inline bool
63154 operator>(const deque<_Tp, _Alloc>& __x,
63155 const deque<_Tp, _Alloc>& __y)
63156 { return __y < __x; }
63157
63158
63159 template<typename _Tp, typename _Alloc>
63160 inline bool
63161 operator<=(const deque<_Tp, _Alloc>& __x,
63162 const deque<_Tp, _Alloc>& __y)
63163 { return !(__y < __x); }
63164
63165
63166 template<typename _Tp, typename _Alloc>
63167 inline bool
63168 operator>=(const deque<_Tp, _Alloc>& __x,
63169 const deque<_Tp, _Alloc>& __y)
63170 { return !(__x < __y); }
63171
63172
63173 template<typename _Tp, typename _Alloc>
63174 inline void
63175 swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y)
63176 { __x.swap(__y); }
63177
63178
63179
63180
63181 }
63182 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/deque" 2 3
63183
63184 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 1 3
63185 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63186 namespace std __attribute__ ((__visibility__ ("default")))
63187 {
63188
63189 # 92 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63190 template <typename _Tp, typename _Alloc>
63191 deque<_Tp, _Alloc>&
63192 deque<_Tp, _Alloc>::
63193 operator=(const deque& __x)
63194 {
63195 const size_type __len = size();
63196 if (&__x != this)
63197 {
63198 if (__len >= __x.size())
63199 _M_erase_at_end(std::copy(__x.begin(), __x.end(),
63200 this->_M_impl._M_start));
63201 else
63202 {
63203 const_iterator __mid = __x.begin() + difference_type(__len);
63204 std::copy(__x.begin(), __mid, this->_M_impl._M_start);
63205 insert(this->_M_impl._M_finish, __mid, __x.end());
63206 }
63207 }
63208 return *this;
63209 }
63210 # 148 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63211 template <typename _Tp, typename _Alloc>
63212 typename deque<_Tp, _Alloc>::iterator
63213 deque<_Tp, _Alloc>::
63214 insert(iterator __position, const value_type& __x)
63215 {
63216 if (__position._M_cur == this->_M_impl._M_start._M_cur)
63217 {
63218 push_front(__x);
63219 return this->_M_impl._M_start;
63220 }
63221 else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
63222 {
63223 push_back(__x);
63224 iterator __tmp = this->_M_impl._M_finish;
63225 --__tmp;
63226 return __tmp;
63227 }
63228 else
63229 return _M_insert_aux(__position, __x);
63230 }
63231 # 193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63232 template <typename _Tp, typename _Alloc>
63233 typename deque<_Tp, _Alloc>::iterator
63234 deque<_Tp, _Alloc>::
63235 erase(iterator __position)
63236 {
63237 iterator __next = __position;
63238 ++__next;
63239 const difference_type __index = __position - begin();
63240 if (static_cast<size_type>(__index) < (size() >> 1))
63241 {
63242 if (__position != begin())
63243 std::copy_backward(begin(), __position, __next);
63244 pop_front();
63245 }
63246 else
63247 {
63248 if (__next != end())
63249 std::copy(__next, end(), __position);
63250 pop_back();
63251 }
63252 return begin() + __index;
63253 }
63254
63255 template <typename _Tp, typename _Alloc>
63256 typename deque<_Tp, _Alloc>::iterator
63257 deque<_Tp, _Alloc>::
63258 erase(iterator __first, iterator __last)
63259 {
63260 if (__first == __last)
63261 return __first;
63262 else if (__first == begin() && __last == end())
63263 {
63264 clear();
63265 return end();
63266 }
63267 else
63268 {
63269 const difference_type __n = __last - __first;
63270 const difference_type __elems_before = __first - begin();
63271 if (static_cast<size_type>(__elems_before) <= (size() - __n) / 2)
63272 {
63273 if (__first != begin())
63274 std::copy_backward(begin(), __first, __last);
63275 _M_erase_at_begin(begin() + __n);
63276 }
63277 else
63278 {
63279 if (__last != end())
63280 std::copy(__last, end(), __first);
63281 _M_erase_at_end(end() - __n);
63282 }
63283 return begin() + __elems_before;
63284 }
63285 }
63286
63287 template <typename _Tp, class _Alloc>
63288 template <typename _InputIterator>
63289 void
63290 deque<_Tp, _Alloc>::
63291 _M_assign_aux(_InputIterator __first, _InputIterator __last,
63292 std::input_iterator_tag)
63293 {
63294 iterator __cur = begin();
63295 for (; __first != __last && __cur != end(); ++__cur, ++__first)
63296 *__cur = *__first;
63297 if (__first == __last)
63298 _M_erase_at_end(__cur);
63299 else
63300 insert(end(), __first, __last);
63301 }
63302
63303 template <typename _Tp, typename _Alloc>
63304 void
63305 deque<_Tp, _Alloc>::
63306 _M_fill_insert(iterator __pos, size_type __n, const value_type& __x)
63307 {
63308 if (__pos._M_cur == this->_M_impl._M_start._M_cur)
63309 {
63310 iterator __new_start = _M_reserve_elements_at_front(__n);
63311 try
63312 {
63313 std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start,
63314 __x, _M_get_Tp_allocator());
63315 this->_M_impl._M_start = __new_start;
63316 }
63317 catch(...)
63318 {
63319 _M_destroy_nodes(__new_start._M_node,
63320 this->_M_impl._M_start._M_node);
63321 throw;
63322 }
63323 }
63324 else if (__pos._M_cur == this->_M_impl._M_finish._M_cur)
63325 {
63326 iterator __new_finish = _M_reserve_elements_at_back(__n);
63327 try
63328 {
63329 std::__uninitialized_fill_a(this->_M_impl._M_finish,
63330 __new_finish, __x,
63331 _M_get_Tp_allocator());
63332 this->_M_impl._M_finish = __new_finish;
63333 }
63334 catch(...)
63335 {
63336 _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
63337 __new_finish._M_node + 1);
63338 throw;
63339 }
63340 }
63341 else
63342 _M_insert_aux(__pos, __n, __x);
63343 }
63344 # 332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63345 template <typename _Tp, typename _Alloc>
63346 void
63347 deque<_Tp, _Alloc>::
63348 _M_fill_initialize(const value_type& __value)
63349 {
63350 _Map_pointer __cur;
63351 try
63352 {
63353 for (__cur = this->_M_impl._M_start._M_node;
63354 __cur < this->_M_impl._M_finish._M_node;
63355 ++__cur)
63356 std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(),
63357 __value, _M_get_Tp_allocator());
63358 std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first,
63359 this->_M_impl._M_finish._M_cur,
63360 __value, _M_get_Tp_allocator());
63361 }
63362 catch(...)
63363 {
63364 std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur),
63365 _M_get_Tp_allocator());
63366 throw;
63367 }
63368 }
63369
63370 template <typename _Tp, typename _Alloc>
63371 template <typename _InputIterator>
63372 void
63373 deque<_Tp, _Alloc>::
63374 _M_range_initialize(_InputIterator __first, _InputIterator __last,
63375 std::input_iterator_tag)
63376 {
63377 this->_M_initialize_map(0);
63378 try
63379 {
63380 for (; __first != __last; ++__first)
63381 push_back(*__first);
63382 }
63383 catch(...)
63384 {
63385 clear();
63386 throw;
63387 }
63388 }
63389
63390 template <typename _Tp, typename _Alloc>
63391 template <typename _ForwardIterator>
63392 void
63393 deque<_Tp, _Alloc>::
63394 _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
63395 std::forward_iterator_tag)
63396 {
63397 const size_type __n = std::distance(__first, __last);
63398 this->_M_initialize_map(__n);
63399
63400 _Map_pointer __cur_node;
63401 try
63402 {
63403 for (__cur_node = this->_M_impl._M_start._M_node;
63404 __cur_node < this->_M_impl._M_finish._M_node;
63405 ++__cur_node)
63406 {
63407 _ForwardIterator __mid = __first;
63408 std::advance(__mid, _S_buffer_size());
63409 std::__uninitialized_copy_a(__first, __mid, *__cur_node,
63410 _M_get_Tp_allocator());
63411 __first = __mid;
63412 }
63413 std::__uninitialized_copy_a(__first, __last,
63414 this->_M_impl._M_finish._M_first,
63415 _M_get_Tp_allocator());
63416 }
63417 catch(...)
63418 {
63419 std::_Destroy(this->_M_impl._M_start,
63420 iterator(*__cur_node, __cur_node),
63421 _M_get_Tp_allocator());
63422 throw;
63423 }
63424 }
63425
63426
63427 template<typename _Tp, typename _Alloc>
63428
63429
63430
63431
63432
63433
63434 void
63435 deque<_Tp, _Alloc>::
63436 _M_push_back_aux(const value_type& __t)
63437
63438 {
63439 _M_reserve_map_at_back();
63440 *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node();
63441 try
63442 {
63443
63444
63445
63446
63447 this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t);
63448
63449 this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node
63450 + 1);
63451 this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first;
63452 }
63453 catch(...)
63454 {
63455 _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1));
63456 throw;
63457 }
63458 }
63459
63460
63461 template<typename _Tp, typename _Alloc>
63462
63463
63464
63465
63466
63467
63468 void
63469 deque<_Tp, _Alloc>::
63470 _M_push_front_aux(const value_type& __t)
63471
63472 {
63473 _M_reserve_map_at_front();
63474 *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node();
63475 try
63476 {
63477 this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node
63478 - 1);
63479 this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1;
63480
63481
63482
63483
63484 this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t);
63485
63486 }
63487 catch(...)
63488 {
63489 ++this->_M_impl._M_start;
63490 _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1));
63491 throw;
63492 }
63493 }
63494
63495
63496 template <typename _Tp, typename _Alloc>
63497 void deque<_Tp, _Alloc>::
63498 _M_pop_back_aux()
63499 {
63500 _M_deallocate_node(this->_M_impl._M_finish._M_first);
63501 this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1);
63502 this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1;
63503 this->_M_impl.destroy(this->_M_impl._M_finish._M_cur);
63504 }
63505
63506
63507
63508
63509
63510
63511 template <typename _Tp, typename _Alloc>
63512 void deque<_Tp, _Alloc>::
63513 _M_pop_front_aux()
63514 {
63515 this->_M_impl.destroy(this->_M_impl._M_start._M_cur);
63516 _M_deallocate_node(this->_M_impl._M_start._M_first);
63517 this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1);
63518 this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first;
63519 }
63520
63521 template <typename _Tp, typename _Alloc>
63522 template <typename _InputIterator>
63523 void
63524 deque<_Tp, _Alloc>::
63525 _M_range_insert_aux(iterator __pos,
63526 _InputIterator __first, _InputIterator __last,
63527 std::input_iterator_tag)
63528 { std::copy(__first, __last, std::inserter(*this, __pos)); }
63529
63530 template <typename _Tp, typename _Alloc>
63531 template <typename _ForwardIterator>
63532 void
63533 deque<_Tp, _Alloc>::
63534 _M_range_insert_aux(iterator __pos,
63535 _ForwardIterator __first, _ForwardIterator __last,
63536 std::forward_iterator_tag)
63537 {
63538 const size_type __n = std::distance(__first, __last);
63539 if (__pos._M_cur == this->_M_impl._M_start._M_cur)
63540 {
63541 iterator __new_start = _M_reserve_elements_at_front(__n);
63542 try
63543 {
63544 std::__uninitialized_copy_a(__first, __last, __new_start,
63545 _M_get_Tp_allocator());
63546 this->_M_impl._M_start = __new_start;
63547 }
63548 catch(...)
63549 {
63550 _M_destroy_nodes(__new_start._M_node,
63551 this->_M_impl._M_start._M_node);
63552 throw;
63553 }
63554 }
63555 else if (__pos._M_cur == this->_M_impl._M_finish._M_cur)
63556 {
63557 iterator __new_finish = _M_reserve_elements_at_back(__n);
63558 try
63559 {
63560 std::__uninitialized_copy_a(__first, __last,
63561 this->_M_impl._M_finish,
63562 _M_get_Tp_allocator());
63563 this->_M_impl._M_finish = __new_finish;
63564 }
63565 catch(...)
63566 {
63567 _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
63568 __new_finish._M_node + 1);
63569 throw;
63570 }
63571 }
63572 else
63573 _M_insert_aux(__pos, __first, __last, __n);
63574 }
63575
63576 template<typename _Tp, typename _Alloc>
63577 # 572 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63578 typename deque<_Tp, _Alloc>::iterator
63579 deque<_Tp, _Alloc>::
63580 _M_insert_aux(iterator __pos, const value_type& __x)
63581 {
63582 value_type __x_copy = __x;
63583
63584 difference_type __index = __pos - this->_M_impl._M_start;
63585 if (static_cast<size_type>(__index) < size() / 2)
63586 {
63587 push_front((front()));
63588 iterator __front1 = this->_M_impl._M_start;
63589 ++__front1;
63590 iterator __front2 = __front1;
63591 ++__front2;
63592 __pos = this->_M_impl._M_start + __index;
63593 iterator __pos1 = __pos;
63594 ++__pos1;
63595 std::copy(__front2, __pos1, __front1);
63596 }
63597 else
63598 {
63599 push_back((back()));
63600 iterator __back1 = this->_M_impl._M_finish;
63601 --__back1;
63602 iterator __back2 = __back1;
63603 --__back2;
63604 __pos = this->_M_impl._M_start + __index;
63605 std::copy_backward(__pos, __back2, __back1);
63606 }
63607 *__pos = (__x_copy);
63608 return __pos;
63609 }
63610
63611 template <typename _Tp, typename _Alloc>
63612 void
63613 deque<_Tp, _Alloc>::
63614 _M_insert_aux(iterator __pos, size_type __n, const value_type& __x)
63615 {
63616 const difference_type __elems_before = __pos - this->_M_impl._M_start;
63617 const size_type __length = this->size();
63618 value_type __x_copy = __x;
63619 if (__elems_before < difference_type(__length / 2))
63620 {
63621 iterator __new_start = _M_reserve_elements_at_front(__n);
63622 iterator __old_start = this->_M_impl._M_start;
63623 __pos = this->_M_impl._M_start + __elems_before;
63624 try
63625 {
63626 if (__elems_before >= difference_type(__n))
63627 {
63628 iterator __start_n = (this->_M_impl._M_start
63629 + difference_type(__n));
63630 std::__uninitialized_move_a(this->_M_impl._M_start,
63631 __start_n, __new_start,
63632 _M_get_Tp_allocator());
63633 this->_M_impl._M_start = __new_start;
63634 std::copy(__start_n, __pos, __old_start);
63635 std::fill(__pos - difference_type(__n), __pos, __x_copy);
63636 }
63637 else
63638 {
63639 std::__uninitialized_move_fill(this->_M_impl._M_start,
63640 __pos, __new_start,
63641 this->_M_impl._M_start,
63642 __x_copy,
63643 _M_get_Tp_allocator());
63644 this->_M_impl._M_start = __new_start;
63645 std::fill(__old_start, __pos, __x_copy);
63646 }
63647 }
63648 catch(...)
63649 {
63650 _M_destroy_nodes(__new_start._M_node,
63651 this->_M_impl._M_start._M_node);
63652 throw;
63653 }
63654 }
63655 else
63656 {
63657 iterator __new_finish = _M_reserve_elements_at_back(__n);
63658 iterator __old_finish = this->_M_impl._M_finish;
63659 const difference_type __elems_after =
63660 difference_type(__length) - __elems_before;
63661 __pos = this->_M_impl._M_finish - __elems_after;
63662 try
63663 {
63664 if (__elems_after > difference_type(__n))
63665 {
63666 iterator __finish_n = (this->_M_impl._M_finish
63667 - difference_type(__n));
63668 std::__uninitialized_move_a(__finish_n,
63669 this->_M_impl._M_finish,
63670 this->_M_impl._M_finish,
63671 _M_get_Tp_allocator());
63672 this->_M_impl._M_finish = __new_finish;
63673 std::copy_backward(__pos, __finish_n, __old_finish);
63674 std::fill(__pos, __pos + difference_type(__n), __x_copy);
63675 }
63676 else
63677 {
63678 std::__uninitialized_fill_move(this->_M_impl._M_finish,
63679 __pos + difference_type(__n),
63680 __x_copy, __pos,
63681 this->_M_impl._M_finish,
63682 _M_get_Tp_allocator());
63683 this->_M_impl._M_finish = __new_finish;
63684 std::fill(__pos, __old_finish, __x_copy);
63685 }
63686 }
63687 catch(...)
63688 {
63689 _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
63690 __new_finish._M_node + 1);
63691 throw;
63692 }
63693 }
63694 }
63695
63696 template <typename _Tp, typename _Alloc>
63697 template <typename _ForwardIterator>
63698 void
63699 deque<_Tp, _Alloc>::
63700 _M_insert_aux(iterator __pos,
63701 _ForwardIterator __first, _ForwardIterator __last,
63702 size_type __n)
63703 {
63704 const difference_type __elemsbefore = __pos - this->_M_impl._M_start;
63705 const size_type __length = size();
63706 if (static_cast<size_type>(__elemsbefore) < __length / 2)
63707 {
63708 iterator __new_start = _M_reserve_elements_at_front(__n);
63709 iterator __old_start = this->_M_impl._M_start;
63710 __pos = this->_M_impl._M_start + __elemsbefore;
63711 try
63712 {
63713 if (__elemsbefore >= difference_type(__n))
63714 {
63715 iterator __start_n = (this->_M_impl._M_start
63716 + difference_type(__n));
63717 std::__uninitialized_move_a(this->_M_impl._M_start,
63718 __start_n, __new_start,
63719 _M_get_Tp_allocator());
63720 this->_M_impl._M_start = __new_start;
63721 std::copy(__start_n, __pos, __old_start);
63722 std::copy(__first, __last, __pos - difference_type(__n));
63723 }
63724 else
63725 {
63726 _ForwardIterator __mid = __first;
63727 std::advance(__mid, difference_type(__n) - __elemsbefore);
63728 std::__uninitialized_move_copy(this->_M_impl._M_start,
63729 __pos, __first, __mid,
63730 __new_start,
63731 _M_get_Tp_allocator());
63732 this->_M_impl._M_start = __new_start;
63733 std::copy(__mid, __last, __old_start);
63734 }
63735 }
63736 catch(...)
63737 {
63738 _M_destroy_nodes(__new_start._M_node,
63739 this->_M_impl._M_start._M_node);
63740 throw;
63741 }
63742 }
63743 else
63744 {
63745 iterator __new_finish = _M_reserve_elements_at_back(__n);
63746 iterator __old_finish = this->_M_impl._M_finish;
63747 const difference_type __elemsafter =
63748 difference_type(__length) - __elemsbefore;
63749 __pos = this->_M_impl._M_finish - __elemsafter;
63750 try
63751 {
63752 if (__elemsafter > difference_type(__n))
63753 {
63754 iterator __finish_n = (this->_M_impl._M_finish
63755 - difference_type(__n));
63756 std::__uninitialized_move_a(__finish_n,
63757 this->_M_impl._M_finish,
63758 this->_M_impl._M_finish,
63759 _M_get_Tp_allocator());
63760 this->_M_impl._M_finish = __new_finish;
63761 std::copy_backward(__pos, __finish_n, __old_finish);
63762 std::copy(__first, __last, __pos);
63763 }
63764 else
63765 {
63766 _ForwardIterator __mid = __first;
63767 std::advance(__mid, __elemsafter);
63768 std::__uninitialized_copy_move(__mid, __last, __pos,
63769 this->_M_impl._M_finish,
63770 this->_M_impl._M_finish,
63771 _M_get_Tp_allocator());
63772 this->_M_impl._M_finish = __new_finish;
63773 std::copy(__first, __mid, __pos);
63774 }
63775 }
63776 catch(...)
63777 {
63778 _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
63779 __new_finish._M_node + 1);
63780 throw;
63781 }
63782 }
63783 }
63784
63785 template<typename _Tp, typename _Alloc>
63786 void
63787 deque<_Tp, _Alloc>::
63788 _M_destroy_data_aux(iterator __first, iterator __last)
63789 {
63790 for (_Map_pointer __node = __first._M_node + 1;
63791 __node < __last._M_node; ++__node)
63792 std::_Destroy(*__node, *__node + _S_buffer_size(),
63793 _M_get_Tp_allocator());
63794
63795 if (__first._M_node != __last._M_node)
63796 {
63797 std::_Destroy(__first._M_cur, __first._M_last,
63798 _M_get_Tp_allocator());
63799 std::_Destroy(__last._M_first, __last._M_cur,
63800 _M_get_Tp_allocator());
63801 }
63802 else
63803 std::_Destroy(__first._M_cur, __last._M_cur,
63804 _M_get_Tp_allocator());
63805 }
63806
63807 template <typename _Tp, typename _Alloc>
63808 void
63809 deque<_Tp, _Alloc>::
63810 _M_new_elements_at_front(size_type __new_elems)
63811 {
63812 if (this->max_size() - this->size() < __new_elems)
63813 __throw_length_error(("deque::_M_new_elements_at_front"));
63814
63815 const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1)
63816 / _S_buffer_size());
63817 _M_reserve_map_at_front(__new_nodes);
63818 size_type __i;
63819 try
63820 {
63821 for (__i = 1; __i <= __new_nodes; ++__i)
63822 *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node();
63823 }
63824 catch(...)
63825 {
63826 for (size_type __j = 1; __j < __i; ++__j)
63827 _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j));
63828 throw;
63829 }
63830 }
63831
63832 template <typename _Tp, typename _Alloc>
63833 void
63834 deque<_Tp, _Alloc>::
63835 _M_new_elements_at_back(size_type __new_elems)
63836 {
63837 if (this->max_size() - this->size() < __new_elems)
63838 __throw_length_error(("deque::_M_new_elements_at_back"));
63839
63840 const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1)
63841 / _S_buffer_size());
63842 _M_reserve_map_at_back(__new_nodes);
63843 size_type __i;
63844 try
63845 {
63846 for (__i = 1; __i <= __new_nodes; ++__i)
63847 *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node();
63848 }
63849 catch(...)
63850 {
63851 for (size_type __j = 1; __j < __i; ++__j)
63852 _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j));
63853 throw;
63854 }
63855 }
63856
63857 template <typename _Tp, typename _Alloc>
63858 void
63859 deque<_Tp, _Alloc>::
63860 _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front)
63861 {
63862 const size_type __old_num_nodes
63863 = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1;
63864 const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
63865
63866 _Map_pointer __new_nstart;
63867 if (this->_M_impl._M_map_size > 2 * __new_num_nodes)
63868 {
63869 __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size
63870 - __new_num_nodes) / 2
63871 + (__add_at_front ? __nodes_to_add : 0);
63872 if (__new_nstart < this->_M_impl._M_start._M_node)
63873 std::copy(this->_M_impl._M_start._M_node,
63874 this->_M_impl._M_finish._M_node + 1,
63875 __new_nstart);
63876 else
63877 std::copy_backward(this->_M_impl._M_start._M_node,
63878 this->_M_impl._M_finish._M_node + 1,
63879 __new_nstart + __old_num_nodes);
63880 }
63881 else
63882 {
63883 size_type __new_map_size = this->_M_impl._M_map_size
63884 + std::max(this->_M_impl._M_map_size,
63885 __nodes_to_add) + 2;
63886
63887 _Map_pointer __new_map = this->_M_allocate_map(__new_map_size);
63888 __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2
63889 + (__add_at_front ? __nodes_to_add : 0);
63890 std::copy(this->_M_impl._M_start._M_node,
63891 this->_M_impl._M_finish._M_node + 1,
63892 __new_nstart);
63893 _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
63894
63895 this->_M_impl._M_map = __new_map;
63896 this->_M_impl._M_map_size = __new_map_size;
63897 }
63898
63899 this->_M_impl._M_start._M_set_node(__new_nstart);
63900 this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1);
63901 }
63902
63903
63904
63905 template<typename _Tp>
63906 void
63907 fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>& __first,
63908 const _Deque_iterator<_Tp, _Tp&, _Tp*>& __last, const _Tp& __value)
63909 {
63910 typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
63911
63912 for (typename _Self::_Map_pointer __node = __first._M_node + 1;
63913 __node < __last._M_node; ++__node)
63914 std::fill(*__node, *__node + _Self::_S_buffer_size(), __value);
63915
63916 if (__first._M_node != __last._M_node)
63917 {
63918 std::fill(__first._M_cur, __first._M_last, __value);
63919 std::fill(__last._M_first, __last._M_cur, __value);
63920 }
63921 else
63922 std::fill(__first._M_cur, __last._M_cur, __value);
63923 }
63924
63925 template<typename _Tp>
63926 _Deque_iterator<_Tp, _Tp&, _Tp*>
63927 copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first,
63928 _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last,
63929 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
63930 {
63931 typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
63932 typedef typename _Self::difference_type difference_type;
63933
63934 difference_type __len = __last - __first;
63935 while (__len > 0)
63936 {
63937 const difference_type __clen
63938 = std::min(__len, std::min(__first._M_last - __first._M_cur,
63939 __result._M_last - __result._M_cur));
63940 std::copy(__first._M_cur, __first._M_cur + __clen, __result._M_cur);
63941 __first += __clen;
63942 __result += __clen;
63943 __len -= __clen;
63944 }
63945 return __result;
63946 }
63947
63948 template<typename _Tp>
63949 _Deque_iterator<_Tp, _Tp&, _Tp*>
63950 copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first,
63951 _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last,
63952 _Deque_iterator<_Tp, _Tp&, _Tp*> __result)
63953 {
63954 typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self;
63955 typedef typename _Self::difference_type difference_type;
63956
63957 difference_type __len = __last - __first;
63958 while (__len > 0)
63959 {
63960 difference_type __llen = __last._M_cur - __last._M_first;
63961 _Tp* __lend = __last._M_cur;
63962
63963 difference_type __rlen = __result._M_cur - __result._M_first;
63964 _Tp* __rend = __result._M_cur;
63965
63966 if (!__llen)
63967 {
63968 __llen = _Self::_S_buffer_size();
63969 __lend = *(__last._M_node - 1) + __llen;
63970 }
63971 if (!__rlen)
63972 {
63973 __rlen = _Self::_S_buffer_size();
63974 __rend = *(__result._M_node - 1) + __rlen;
63975 }
63976
63977 const difference_type __clen = std::min(__len,
63978 std::min(__llen, __rlen));
63979 std::copy_backward(__lend - __clen, __lend, __rend);
63980 __last -= __clen;
63981 __result -= __clen;
63982 __len -= __clen;
63983 }
63984 return __result;
63985 }
63986 # 1045 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/deque.tcc" 3
63987
63988 }
63989 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/deque" 2 3
63990 # 90 "../boost/detail/container_fwd.hpp" 2
63991
63992
63993 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/map" 1 3
63994 # 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/map" 3
63995
63996 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/map" 3
63997
63998 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 1 3
63999 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64000 namespace std __attribute__ ((__visibility__ ("default")))
64001 {
64002
64003 # 88 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64004 enum _Rb_tree_color { _S_red = false, _S_black = true };
64005
64006 struct _Rb_tree_node_base
64007 {
64008 typedef _Rb_tree_node_base* _Base_ptr;
64009 typedef const _Rb_tree_node_base* _Const_Base_ptr;
64010
64011 _Rb_tree_color _M_color;
64012 _Base_ptr _M_parent;
64013 _Base_ptr _M_left;
64014 _Base_ptr _M_right;
64015
64016 static _Base_ptr
64017 _S_minimum(_Base_ptr __x)
64018 {
64019 while (__x->_M_left != 0) __x = __x->_M_left;
64020 return __x;
64021 }
64022
64023 static _Const_Base_ptr
64024 _S_minimum(_Const_Base_ptr __x)
64025 {
64026 while (__x->_M_left != 0) __x = __x->_M_left;
64027 return __x;
64028 }
64029
64030 static _Base_ptr
64031 _S_maximum(_Base_ptr __x)
64032 {
64033 while (__x->_M_right != 0) __x = __x->_M_right;
64034 return __x;
64035 }
64036
64037 static _Const_Base_ptr
64038 _S_maximum(_Const_Base_ptr __x)
64039 {
64040 while (__x->_M_right != 0) __x = __x->_M_right;
64041 return __x;
64042 }
64043 };
64044
64045 template<typename _Val>
64046 struct _Rb_tree_node : public _Rb_tree_node_base
64047 {
64048 typedef _Rb_tree_node<_Val>* _Link_type;
64049 _Val _M_value_field;
64050
64051
64052
64053
64054
64055
64056
64057 };
64058
64059 __attribute__ ((__pure__)) _Rb_tree_node_base*
64060 _Rb_tree_increment(_Rb_tree_node_base* __x) throw ();
64061
64062 __attribute__ ((__pure__)) const _Rb_tree_node_base*
64063 _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ();
64064
64065 __attribute__ ((__pure__)) _Rb_tree_node_base*
64066 _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
64067
64068 __attribute__ ((__pure__)) const _Rb_tree_node_base*
64069 _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ();
64070
64071 template<typename _Tp>
64072 struct _Rb_tree_iterator
64073 {
64074 typedef _Tp value_type;
64075 typedef _Tp& reference;
64076 typedef _Tp* pointer;
64077
64078 typedef bidirectional_iterator_tag iterator_category;
64079 typedef ptrdiff_t difference_type;
64080
64081 typedef _Rb_tree_iterator<_Tp> _Self;
64082 typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
64083 typedef _Rb_tree_node<_Tp>* _Link_type;
64084
64085 _Rb_tree_iterator()
64086 : _M_node() { }
64087
64088 explicit
64089 _Rb_tree_iterator(_Link_type __x)
64090 : _M_node(__x) { }
64091
64092 reference
64093 operator*() const
64094 { return static_cast<_Link_type>(_M_node)->_M_value_field; }
64095
64096 pointer
64097 operator->() const
64098 { return std::__addressof(static_cast<_Link_type>
64099 (_M_node)->_M_value_field); }
64100
64101 _Self&
64102 operator++()
64103 {
64104 _M_node = _Rb_tree_increment(_M_node);
64105 return *this;
64106 }
64107
64108 _Self
64109 operator++(int)
64110 {
64111 _Self __tmp = *this;
64112 _M_node = _Rb_tree_increment(_M_node);
64113 return __tmp;
64114 }
64115
64116 _Self&
64117 operator--()
64118 {
64119 _M_node = _Rb_tree_decrement(_M_node);
64120 return *this;
64121 }
64122
64123 _Self
64124 operator--(int)
64125 {
64126 _Self __tmp = *this;
64127 _M_node = _Rb_tree_decrement(_M_node);
64128 return __tmp;
64129 }
64130
64131 bool
64132 operator==(const _Self& __x) const
64133 { return _M_node == __x._M_node; }
64134
64135 bool
64136 operator!=(const _Self& __x) const
64137 { return _M_node != __x._M_node; }
64138
64139 _Base_ptr _M_node;
64140 };
64141
64142 template<typename _Tp>
64143 struct _Rb_tree_const_iterator
64144 {
64145 typedef _Tp value_type;
64146 typedef const _Tp& reference;
64147 typedef const _Tp* pointer;
64148
64149 typedef _Rb_tree_iterator<_Tp> iterator;
64150
64151 typedef bidirectional_iterator_tag iterator_category;
64152 typedef ptrdiff_t difference_type;
64153
64154 typedef _Rb_tree_const_iterator<_Tp> _Self;
64155 typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
64156 typedef const _Rb_tree_node<_Tp>* _Link_type;
64157
64158 _Rb_tree_const_iterator()
64159 : _M_node() { }
64160
64161 explicit
64162 _Rb_tree_const_iterator(_Link_type __x)
64163 : _M_node(__x) { }
64164
64165 _Rb_tree_const_iterator(const iterator& __it)
64166 : _M_node(__it._M_node) { }
64167
64168 iterator
64169 _M_const_cast() const
64170 { return iterator(static_cast<typename iterator::_Link_type>
64171 (const_cast<typename iterator::_Base_ptr>(_M_node))); }
64172
64173 reference
64174 operator*() const
64175 { return static_cast<_Link_type>(_M_node)->_M_value_field; }
64176
64177 pointer
64178 operator->() const
64179 { return std::__addressof(static_cast<_Link_type>
64180 (_M_node)->_M_value_field); }
64181
64182 _Self&
64183 operator++()
64184 {
64185 _M_node = _Rb_tree_increment(_M_node);
64186 return *this;
64187 }
64188
64189 _Self
64190 operator++(int)
64191 {
64192 _Self __tmp = *this;
64193 _M_node = _Rb_tree_increment(_M_node);
64194 return __tmp;
64195 }
64196
64197 _Self&
64198 operator--()
64199 {
64200 _M_node = _Rb_tree_decrement(_M_node);
64201 return *this;
64202 }
64203
64204 _Self
64205 operator--(int)
64206 {
64207 _Self __tmp = *this;
64208 _M_node = _Rb_tree_decrement(_M_node);
64209 return __tmp;
64210 }
64211
64212 bool
64213 operator==(const _Self& __x) const
64214 { return _M_node == __x._M_node; }
64215
64216 bool
64217 operator!=(const _Self& __x) const
64218 { return _M_node != __x._M_node; }
64219
64220 _Base_ptr _M_node;
64221 };
64222
64223 template<typename _Val>
64224 inline bool
64225 operator==(const _Rb_tree_iterator<_Val>& __x,
64226 const _Rb_tree_const_iterator<_Val>& __y)
64227 { return __x._M_node == __y._M_node; }
64228
64229 template<typename _Val>
64230 inline bool
64231 operator!=(const _Rb_tree_iterator<_Val>& __x,
64232 const _Rb_tree_const_iterator<_Val>& __y)
64233 { return __x._M_node != __y._M_node; }
64234
64235 void
64236 _Rb_tree_insert_and_rebalance(const bool __insert_left,
64237 _Rb_tree_node_base* __x,
64238 _Rb_tree_node_base* __p,
64239 _Rb_tree_node_base& __header) throw ();
64240
64241 _Rb_tree_node_base*
64242 _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
64243 _Rb_tree_node_base& __header) throw ();
64244
64245
64246 template<typename _Key, typename _Val, typename _KeyOfValue,
64247 typename _Compare, typename _Alloc = allocator<_Val> >
64248 class _Rb_tree
64249 {
64250 typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other
64251 _Node_allocator;
64252
64253 protected:
64254 typedef _Rb_tree_node_base* _Base_ptr;
64255 typedef const _Rb_tree_node_base* _Const_Base_ptr;
64256
64257 public:
64258 typedef _Key key_type;
64259 typedef _Val value_type;
64260 typedef value_type* pointer;
64261 typedef const value_type* const_pointer;
64262 typedef value_type& reference;
64263 typedef const value_type& const_reference;
64264 typedef _Rb_tree_node<_Val>* _Link_type;
64265 typedef const _Rb_tree_node<_Val>* _Const_Link_type;
64266 typedef size_t size_type;
64267 typedef ptrdiff_t difference_type;
64268 typedef _Alloc allocator_type;
64269
64270 _Node_allocator&
64271 _M_get_Node_allocator()
64272 { return *static_cast<_Node_allocator*>(&this->_M_impl); }
64273
64274 const _Node_allocator&
64275 _M_get_Node_allocator() const
64276 { return *static_cast<const _Node_allocator*>(&this->_M_impl); }
64277
64278 allocator_type
64279 get_allocator() const
64280 { return allocator_type(_M_get_Node_allocator()); }
64281
64282 protected:
64283 _Link_type
64284 _M_get_node()
64285 { return _M_impl._Node_allocator::allocate(1); }
64286
64287 void
64288 _M_put_node(_Link_type __p)
64289 { _M_impl._Node_allocator::deallocate(__p, 1); }
64290
64291
64292 _Link_type
64293 _M_create_node(const value_type& __x)
64294 {
64295 _Link_type __tmp = _M_get_node();
64296 try
64297 { get_allocator().construct
64298 (std::__addressof(__tmp->_M_value_field), __x); }
64299 catch(...)
64300 {
64301 _M_put_node(__tmp);
64302 throw;
64303 }
64304 return __tmp;
64305 }
64306
64307 void
64308 _M_destroy_node(_Link_type __p)
64309 {
64310 get_allocator().destroy(std::__addressof(__p->_M_value_field));
64311 _M_put_node(__p);
64312 }
64313 # 424 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64314 _Link_type
64315 _M_clone_node(_Const_Link_type __x)
64316 {
64317 _Link_type __tmp = _M_create_node(__x->_M_value_field);
64318 __tmp->_M_color = __x->_M_color;
64319 __tmp->_M_left = 0;
64320 __tmp->_M_right = 0;
64321 return __tmp;
64322 }
64323
64324 protected:
64325 template<typename _Key_compare,
64326 bool _Is_pod_comparator = __is_pod(_Key_compare)>
64327 struct _Rb_tree_impl : public _Node_allocator
64328 {
64329 _Key_compare _M_key_compare;
64330 _Rb_tree_node_base _M_header;
64331 size_type _M_node_count;
64332
64333 _Rb_tree_impl()
64334 : _Node_allocator(), _M_key_compare(), _M_header(),
64335 _M_node_count(0)
64336 { _M_initialize(); }
64337
64338 _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
64339 : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
64340 _M_node_count(0)
64341 { _M_initialize(); }
64342
64343 private:
64344 void
64345 _M_initialize()
64346 {
64347 this->_M_header._M_color = _S_red;
64348 this->_M_header._M_parent = 0;
64349 this->_M_header._M_left = &this->_M_header;
64350 this->_M_header._M_right = &this->_M_header;
64351 }
64352 };
64353
64354 _Rb_tree_impl<_Compare> _M_impl;
64355
64356 protected:
64357 _Base_ptr&
64358 _M_root()
64359 { return this->_M_impl._M_header._M_parent; }
64360
64361 _Const_Base_ptr
64362 _M_root() const
64363 { return this->_M_impl._M_header._M_parent; }
64364
64365 _Base_ptr&
64366 _M_leftmost()
64367 { return this->_M_impl._M_header._M_left; }
64368
64369 _Const_Base_ptr
64370 _M_leftmost() const
64371 { return this->_M_impl._M_header._M_left; }
64372
64373 _Base_ptr&
64374 _M_rightmost()
64375 { return this->_M_impl._M_header._M_right; }
64376
64377 _Const_Base_ptr
64378 _M_rightmost() const
64379 { return this->_M_impl._M_header._M_right; }
64380
64381 _Link_type
64382 _M_begin()
64383 { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
64384
64385 _Const_Link_type
64386 _M_begin() const
64387 {
64388 return static_cast<_Const_Link_type>
64389 (this->_M_impl._M_header._M_parent);
64390 }
64391
64392 _Link_type
64393 _M_end()
64394 { return static_cast<_Link_type>(&this->_M_impl._M_header); }
64395
64396 _Const_Link_type
64397 _M_end() const
64398 { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
64399
64400 static const_reference
64401 _S_value(_Const_Link_type __x)
64402 { return __x->_M_value_field; }
64403
64404 static const _Key&
64405 _S_key(_Const_Link_type __x)
64406 { return _KeyOfValue()(_S_value(__x)); }
64407
64408 static _Link_type
64409 _S_left(_Base_ptr __x)
64410 { return static_cast<_Link_type>(__x->_M_left); }
64411
64412 static _Const_Link_type
64413 _S_left(_Const_Base_ptr __x)
64414 { return static_cast<_Const_Link_type>(__x->_M_left); }
64415
64416 static _Link_type
64417 _S_right(_Base_ptr __x)
64418 { return static_cast<_Link_type>(__x->_M_right); }
64419
64420 static _Const_Link_type
64421 _S_right(_Const_Base_ptr __x)
64422 { return static_cast<_Const_Link_type>(__x->_M_right); }
64423
64424 static const_reference
64425 _S_value(_Const_Base_ptr __x)
64426 { return static_cast<_Const_Link_type>(__x)->_M_value_field; }
64427
64428 static const _Key&
64429 _S_key(_Const_Base_ptr __x)
64430 { return _KeyOfValue()(_S_value(__x)); }
64431
64432 static _Base_ptr
64433 _S_minimum(_Base_ptr __x)
64434 { return _Rb_tree_node_base::_S_minimum(__x); }
64435
64436 static _Const_Base_ptr
64437 _S_minimum(_Const_Base_ptr __x)
64438 { return _Rb_tree_node_base::_S_minimum(__x); }
64439
64440 static _Base_ptr
64441 _S_maximum(_Base_ptr __x)
64442 { return _Rb_tree_node_base::_S_maximum(__x); }
64443
64444 static _Const_Base_ptr
64445 _S_maximum(_Const_Base_ptr __x)
64446 { return _Rb_tree_node_base::_S_maximum(__x); }
64447
64448 public:
64449 typedef _Rb_tree_iterator<value_type> iterator;
64450 typedef _Rb_tree_const_iterator<value_type> const_iterator;
64451
64452 typedef std::reverse_iterator<iterator> reverse_iterator;
64453 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
64454
64455 private:
64456 # 579 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64457 iterator
64458 _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y,
64459 const value_type& __v);
64460
64461
64462
64463 iterator
64464 _M_insert_lower(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
64465
64466 iterator
64467 _M_insert_equal_lower(const value_type& __x);
64468
64469
64470 _Link_type
64471 _M_copy(_Const_Link_type __x, _Link_type __p);
64472
64473 void
64474 _M_erase(_Link_type __x);
64475
64476 iterator
64477 _M_lower_bound(_Link_type __x, _Link_type __y,
64478 const _Key& __k);
64479
64480 const_iterator
64481 _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
64482 const _Key& __k) const;
64483
64484 iterator
64485 _M_upper_bound(_Link_type __x, _Link_type __y,
64486 const _Key& __k);
64487
64488 const_iterator
64489 _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
64490 const _Key& __k) const;
64491
64492 public:
64493
64494 _Rb_tree() { }
64495
64496 _Rb_tree(const _Compare& __comp,
64497 const allocator_type& __a = allocator_type())
64498 : _M_impl(__comp, __a) { }
64499
64500 _Rb_tree(const _Rb_tree& __x)
64501 : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
64502 {
64503 if (__x._M_root() != 0)
64504 {
64505 _M_root() = _M_copy(__x._M_begin(), _M_end());
64506 _M_leftmost() = _S_minimum(_M_root());
64507 _M_rightmost() = _S_maximum(_M_root());
64508 _M_impl._M_node_count = __x._M_impl._M_node_count;
64509 }
64510 }
64511
64512
64513
64514
64515
64516 ~_Rb_tree()
64517 { _M_erase(_M_begin()); }
64518
64519 _Rb_tree&
64520 operator=(const _Rb_tree& __x);
64521
64522
64523 _Compare
64524 key_comp() const
64525 { return _M_impl._M_key_compare; }
64526
64527 iterator
64528 begin()
64529 {
64530 return iterator(static_cast<_Link_type>
64531 (this->_M_impl._M_header._M_left));
64532 }
64533
64534 const_iterator
64535 begin() const
64536 {
64537 return const_iterator(static_cast<_Const_Link_type>
64538 (this->_M_impl._M_header._M_left));
64539 }
64540
64541 iterator
64542 end()
64543 { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }
64544
64545 const_iterator
64546 end() const
64547 {
64548 return const_iterator(static_cast<_Const_Link_type>
64549 (&this->_M_impl._M_header));
64550 }
64551
64552 reverse_iterator
64553 rbegin()
64554 { return reverse_iterator(end()); }
64555
64556 const_reverse_iterator
64557 rbegin() const
64558 { return const_reverse_iterator(end()); }
64559
64560 reverse_iterator
64561 rend()
64562 { return reverse_iterator(begin()); }
64563
64564 const_reverse_iterator
64565 rend() const
64566 { return const_reverse_iterator(begin()); }
64567
64568 bool
64569 empty() const
64570 { return _M_impl._M_node_count == 0; }
64571
64572 size_type
64573 size() const
64574 { return _M_impl._M_node_count; }
64575
64576 size_type
64577 max_size() const
64578 { return _M_get_Node_allocator().max_size(); }
64579
64580 void
64581 swap(_Rb_tree& __t);
64582 # 723 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64583 pair<iterator, bool>
64584 _M_insert_unique(const value_type& __x);
64585
64586 iterator
64587 _M_insert_equal(const value_type& __x);
64588
64589 iterator
64590 _M_insert_unique_(const_iterator __position, const value_type& __x);
64591
64592 iterator
64593 _M_insert_equal_(const_iterator __position, const value_type& __x);
64594
64595
64596 template<typename _InputIterator>
64597 void
64598 _M_insert_unique(_InputIterator __first, _InputIterator __last);
64599
64600 template<typename _InputIterator>
64601 void
64602 _M_insert_equal(_InputIterator __first, _InputIterator __last);
64603
64604 private:
64605 void
64606 _M_erase_aux(const_iterator __position);
64607
64608 void
64609 _M_erase_aux(const_iterator __first, const_iterator __last);
64610
64611 public:
64612 # 764 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64613 void
64614 erase(iterator __position)
64615 { _M_erase_aux(__position); }
64616
64617 void
64618 erase(const_iterator __position)
64619 { _M_erase_aux(__position); }
64620
64621 size_type
64622 erase(const key_type& __x);
64623 # 785 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64624 void
64625 erase(iterator __first, iterator __last)
64626 { _M_erase_aux(__first, __last); }
64627
64628 void
64629 erase(const_iterator __first, const_iterator __last)
64630 { _M_erase_aux(__first, __last); }
64631
64632 void
64633 erase(const key_type* __first, const key_type* __last);
64634
64635 void
64636 clear()
64637 {
64638 _M_erase(_M_begin());
64639 _M_leftmost() = _M_end();
64640 _M_root() = 0;
64641 _M_rightmost() = _M_end();
64642 _M_impl._M_node_count = 0;
64643 }
64644
64645
64646 iterator
64647 find(const key_type& __k);
64648
64649 const_iterator
64650 find(const key_type& __k) const;
64651
64652 size_type
64653 count(const key_type& __k) const;
64654
64655 iterator
64656 lower_bound(const key_type& __k)
64657 { return _M_lower_bound(_M_begin(), _M_end(), __k); }
64658
64659 const_iterator
64660 lower_bound(const key_type& __k) const
64661 { return _M_lower_bound(_M_begin(), _M_end(), __k); }
64662
64663 iterator
64664 upper_bound(const key_type& __k)
64665 { return _M_upper_bound(_M_begin(), _M_end(), __k); }
64666
64667 const_iterator
64668 upper_bound(const key_type& __k) const
64669 { return _M_upper_bound(_M_begin(), _M_end(), __k); }
64670
64671 pair<iterator, iterator>
64672 equal_range(const key_type& __k);
64673
64674 pair<const_iterator, const_iterator>
64675 equal_range(const key_type& __k) const;
64676
64677
64678 bool
64679 __rb_verify() const;
64680 };
64681
64682 template<typename _Key, typename _Val, typename _KeyOfValue,
64683 typename _Compare, typename _Alloc>
64684 inline bool
64685 operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64686 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64687 {
64688 return __x.size() == __y.size()
64689 && std::equal(__x.begin(), __x.end(), __y.begin());
64690 }
64691
64692 template<typename _Key, typename _Val, typename _KeyOfValue,
64693 typename _Compare, typename _Alloc>
64694 inline bool
64695 operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64696 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64697 {
64698 return std::lexicographical_compare(__x.begin(), __x.end(),
64699 __y.begin(), __y.end());
64700 }
64701
64702 template<typename _Key, typename _Val, typename _KeyOfValue,
64703 typename _Compare, typename _Alloc>
64704 inline bool
64705 operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64706 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64707 { return !(__x == __y); }
64708
64709 template<typename _Key, typename _Val, typename _KeyOfValue,
64710 typename _Compare, typename _Alloc>
64711 inline bool
64712 operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64713 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64714 { return __y < __x; }
64715
64716 template<typename _Key, typename _Val, typename _KeyOfValue,
64717 typename _Compare, typename _Alloc>
64718 inline bool
64719 operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64720 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64721 { return !(__y < __x); }
64722
64723 template<typename _Key, typename _Val, typename _KeyOfValue,
64724 typename _Compare, typename _Alloc>
64725 inline bool
64726 operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64727 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64728 { return !(__x < __y); }
64729
64730 template<typename _Key, typename _Val, typename _KeyOfValue,
64731 typename _Compare, typename _Alloc>
64732 inline void
64733 swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
64734 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
64735 { __x.swap(__y); }
64736 # 922 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_tree.h" 3
64737 template<typename _Key, typename _Val, typename _KeyOfValue,
64738 typename _Compare, typename _Alloc>
64739 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
64740 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64741 operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)
64742 {
64743 if (this != &__x)
64744 {
64745
64746 clear();
64747 _M_impl._M_key_compare = __x._M_impl._M_key_compare;
64748 if (__x._M_root() != 0)
64749 {
64750 _M_root() = _M_copy(__x._M_begin(), _M_end());
64751 _M_leftmost() = _S_minimum(_M_root());
64752 _M_rightmost() = _S_maximum(_M_root());
64753 _M_impl._M_node_count = __x._M_impl._M_node_count;
64754 }
64755 }
64756 return *this;
64757 }
64758
64759 template<typename _Key, typename _Val, typename _KeyOfValue,
64760 typename _Compare, typename _Alloc>
64761
64762
64763
64764 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
64765 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64766
64767
64768
64769 _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)
64770
64771 {
64772 bool __insert_left = (__x != 0 || __p == _M_end()
64773 || _M_impl._M_key_compare(_KeyOfValue()(__v),
64774 _S_key(__p)));
64775
64776 _Link_type __z = _M_create_node((__v));
64777
64778 _Rb_tree_insert_and_rebalance(__insert_left, __z,
64779 const_cast<_Base_ptr>(__p),
64780 this->_M_impl._M_header);
64781 ++_M_impl._M_node_count;
64782 return iterator(__z);
64783 }
64784
64785 template<typename _Key, typename _Val, typename _KeyOfValue,
64786 typename _Compare, typename _Alloc>
64787
64788
64789
64790 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
64791 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64792
64793
64794
64795 _M_insert_lower(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
64796
64797 {
64798 bool __insert_left = (__x != 0 || __p == _M_end()
64799 || !_M_impl._M_key_compare(_S_key(__p),
64800 _KeyOfValue()(__v)));
64801
64802 _Link_type __z = _M_create_node((__v));
64803
64804 _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
64805 this->_M_impl._M_header);
64806 ++_M_impl._M_node_count;
64807 return iterator(__z);
64808 }
64809
64810 template<typename _Key, typename _Val, typename _KeyOfValue,
64811 typename _Compare, typename _Alloc>
64812
64813
64814
64815 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
64816 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64817
64818
64819
64820 _M_insert_equal_lower(const _Val& __v)
64821
64822 {
64823 _Link_type __x = _M_begin();
64824 _Link_type __y = _M_end();
64825 while (__x != 0)
64826 {
64827 __y = __x;
64828 __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
64829 _S_left(__x) : _S_right(__x);
64830 }
64831 return _M_insert_lower(__x, __y, (__v));
64832 }
64833
64834 template<typename _Key, typename _Val, typename _KoV,
64835 typename _Compare, typename _Alloc>
64836 typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
64837 _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
64838 _M_copy(_Const_Link_type __x, _Link_type __p)
64839 {
64840
64841 _Link_type __top = _M_clone_node(__x);
64842 __top->_M_parent = __p;
64843
64844 try
64845 {
64846 if (__x->_M_right)
64847 __top->_M_right = _M_copy(_S_right(__x), __top);
64848 __p = __top;
64849 __x = _S_left(__x);
64850
64851 while (__x != 0)
64852 {
64853 _Link_type __y = _M_clone_node(__x);
64854 __p->_M_left = __y;
64855 __y->_M_parent = __p;
64856 if (__x->_M_right)
64857 __y->_M_right = _M_copy(_S_right(__x), __y);
64858 __p = __y;
64859 __x = _S_left(__x);
64860 }
64861 }
64862 catch(...)
64863 {
64864 _M_erase(__top);
64865 throw;
64866 }
64867 return __top;
64868 }
64869
64870 template<typename _Key, typename _Val, typename _KeyOfValue,
64871 typename _Compare, typename _Alloc>
64872 void
64873 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64874 _M_erase(_Link_type __x)
64875 {
64876
64877 while (__x != 0)
64878 {
64879 _M_erase(_S_right(__x));
64880 _Link_type __y = _S_left(__x);
64881 _M_destroy_node(__x);
64882 __x = __y;
64883 }
64884 }
64885
64886 template<typename _Key, typename _Val, typename _KeyOfValue,
64887 typename _Compare, typename _Alloc>
64888 typename _Rb_tree<_Key, _Val, _KeyOfValue,
64889 _Compare, _Alloc>::iterator
64890 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64891 _M_lower_bound(_Link_type __x, _Link_type __y,
64892 const _Key& __k)
64893 {
64894 while (__x != 0)
64895 if (!_M_impl._M_key_compare(_S_key(__x), __k))
64896 __y = __x, __x = _S_left(__x);
64897 else
64898 __x = _S_right(__x);
64899 return iterator(__y);
64900 }
64901
64902 template<typename _Key, typename _Val, typename _KeyOfValue,
64903 typename _Compare, typename _Alloc>
64904 typename _Rb_tree<_Key, _Val, _KeyOfValue,
64905 _Compare, _Alloc>::const_iterator
64906 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64907 _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
64908 const _Key& __k) const
64909 {
64910 while (__x != 0)
64911 if (!_M_impl._M_key_compare(_S_key(__x), __k))
64912 __y = __x, __x = _S_left(__x);
64913 else
64914 __x = _S_right(__x);
64915 return const_iterator(__y);
64916 }
64917
64918 template<typename _Key, typename _Val, typename _KeyOfValue,
64919 typename _Compare, typename _Alloc>
64920 typename _Rb_tree<_Key, _Val, _KeyOfValue,
64921 _Compare, _Alloc>::iterator
64922 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64923 _M_upper_bound(_Link_type __x, _Link_type __y,
64924 const _Key& __k)
64925 {
64926 while (__x != 0)
64927 if (_M_impl._M_key_compare(__k, _S_key(__x)))
64928 __y = __x, __x = _S_left(__x);
64929 else
64930 __x = _S_right(__x);
64931 return iterator(__y);
64932 }
64933
64934 template<typename _Key, typename _Val, typename _KeyOfValue,
64935 typename _Compare, typename _Alloc>
64936 typename _Rb_tree<_Key, _Val, _KeyOfValue,
64937 _Compare, _Alloc>::const_iterator
64938 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64939 _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
64940 const _Key& __k) const
64941 {
64942 while (__x != 0)
64943 if (_M_impl._M_key_compare(__k, _S_key(__x)))
64944 __y = __x, __x = _S_left(__x);
64945 else
64946 __x = _S_right(__x);
64947 return const_iterator(__y);
64948 }
64949
64950 template<typename _Key, typename _Val, typename _KeyOfValue,
64951 typename _Compare, typename _Alloc>
64952 pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
64953 _Compare, _Alloc>::iterator,
64954 typename _Rb_tree<_Key, _Val, _KeyOfValue,
64955 _Compare, _Alloc>::iterator>
64956 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64957 equal_range(const _Key& __k)
64958 {
64959 _Link_type __x = _M_begin();
64960 _Link_type __y = _M_end();
64961 while (__x != 0)
64962 {
64963 if (_M_impl._M_key_compare(_S_key(__x), __k))
64964 __x = _S_right(__x);
64965 else if (_M_impl._M_key_compare(__k, _S_key(__x)))
64966 __y = __x, __x = _S_left(__x);
64967 else
64968 {
64969 _Link_type __xu(__x), __yu(__y);
64970 __y = __x, __x = _S_left(__x);
64971 __xu = _S_right(__xu);
64972 return pair<iterator,
64973 iterator>(_M_lower_bound(__x, __y, __k),
64974 _M_upper_bound(__xu, __yu, __k));
64975 }
64976 }
64977 return pair<iterator, iterator>(iterator(__y),
64978 iterator(__y));
64979 }
64980
64981 template<typename _Key, typename _Val, typename _KeyOfValue,
64982 typename _Compare, typename _Alloc>
64983 pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
64984 _Compare, _Alloc>::const_iterator,
64985 typename _Rb_tree<_Key, _Val, _KeyOfValue,
64986 _Compare, _Alloc>::const_iterator>
64987 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
64988 equal_range(const _Key& __k) const
64989 {
64990 _Const_Link_type __x = _M_begin();
64991 _Const_Link_type __y = _M_end();
64992 while (__x != 0)
64993 {
64994 if (_M_impl._M_key_compare(_S_key(__x), __k))
64995 __x = _S_right(__x);
64996 else if (_M_impl._M_key_compare(__k, _S_key(__x)))
64997 __y = __x, __x = _S_left(__x);
64998 else
64999 {
65000 _Const_Link_type __xu(__x), __yu(__y);
65001 __y = __x, __x = _S_left(__x);
65002 __xu = _S_right(__xu);
65003 return pair<const_iterator,
65004 const_iterator>(_M_lower_bound(__x, __y, __k),
65005 _M_upper_bound(__xu, __yu, __k));
65006 }
65007 }
65008 return pair<const_iterator, const_iterator>(const_iterator(__y),
65009 const_iterator(__y));
65010 }
65011
65012 template<typename _Key, typename _Val, typename _KeyOfValue,
65013 typename _Compare, typename _Alloc>
65014 void
65015 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65016 swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
65017 {
65018 if (_M_root() == 0)
65019 {
65020 if (__t._M_root() != 0)
65021 {
65022 _M_root() = __t._M_root();
65023 _M_leftmost() = __t._M_leftmost();
65024 _M_rightmost() = __t._M_rightmost();
65025 _M_root()->_M_parent = _M_end();
65026
65027 __t._M_root() = 0;
65028 __t._M_leftmost() = __t._M_end();
65029 __t._M_rightmost() = __t._M_end();
65030 }
65031 }
65032 else if (__t._M_root() == 0)
65033 {
65034 __t._M_root() = _M_root();
65035 __t._M_leftmost() = _M_leftmost();
65036 __t._M_rightmost() = _M_rightmost();
65037 __t._M_root()->_M_parent = __t._M_end();
65038
65039 _M_root() = 0;
65040 _M_leftmost() = _M_end();
65041 _M_rightmost() = _M_end();
65042 }
65043 else
65044 {
65045 std::swap(_M_root(),__t._M_root());
65046 std::swap(_M_leftmost(),__t._M_leftmost());
65047 std::swap(_M_rightmost(),__t._M_rightmost());
65048
65049 _M_root()->_M_parent = _M_end();
65050 __t._M_root()->_M_parent = __t._M_end();
65051 }
65052
65053 std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
65054 std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
65055
65056
65057
65058 std::__alloc_swap<_Node_allocator>::
65059 _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator());
65060 }
65061
65062 template<typename _Key, typename _Val, typename _KeyOfValue,
65063 typename _Compare, typename _Alloc>
65064
65065
65066
65067 pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
65068 _Compare, _Alloc>::iterator, bool>
65069 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65070
65071
65072
65073 _M_insert_unique(const _Val& __v)
65074
65075 {
65076 _Link_type __x = _M_begin();
65077 _Link_type __y = _M_end();
65078 bool __comp = true;
65079 while (__x != 0)
65080 {
65081 __y = __x;
65082 __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x));
65083 __x = __comp ? _S_left(__x) : _S_right(__x);
65084 }
65085 iterator __j = iterator(__y);
65086 if (__comp)
65087 {
65088 if (__j == begin())
65089 return pair<iterator, bool>
65090 (_M_insert_(__x, __y, (__v)), true);
65091 else
65092 --__j;
65093 }
65094 if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
65095 return pair<iterator, bool>
65096 (_M_insert_(__x, __y, (__v)), true);
65097 return pair<iterator, bool>(__j, false);
65098 }
65099
65100 template<typename _Key, typename _Val, typename _KeyOfValue,
65101 typename _Compare, typename _Alloc>
65102
65103
65104
65105 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
65106 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65107
65108
65109
65110 _M_insert_equal(const _Val& __v)
65111
65112 {
65113 _Link_type __x = _M_begin();
65114 _Link_type __y = _M_end();
65115 while (__x != 0)
65116 {
65117 __y = __x;
65118 __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?
65119 _S_left(__x) : _S_right(__x);
65120 }
65121 return _M_insert_(__x, __y, (__v));
65122 }
65123
65124 template<typename _Key, typename _Val, typename _KeyOfValue,
65125 typename _Compare, typename _Alloc>
65126
65127
65128
65129 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
65130 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65131
65132
65133
65134 _M_insert_unique_(const_iterator __position, const _Val& __v)
65135
65136 {
65137
65138 if (__position._M_node == _M_end())
65139 {
65140 if (size() > 0
65141 && _M_impl._M_key_compare(_S_key(_M_rightmost()),
65142 _KeyOfValue()(__v)))
65143 return _M_insert_(0, _M_rightmost(), (__v));
65144 else
65145 return _M_insert_unique((__v)).first;
65146 }
65147 else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
65148 _S_key(__position._M_node)))
65149 {
65150
65151 const_iterator __before = __position;
65152 if (__position._M_node == _M_leftmost())
65153 return _M_insert_(_M_leftmost(), _M_leftmost(),
65154 (__v));
65155 else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),
65156 _KeyOfValue()(__v)))
65157 {
65158 if (_S_right(__before._M_node) == 0)
65159 return _M_insert_(0, __before._M_node,
65160 (__v));
65161 else
65162 return _M_insert_(__position._M_node,
65163 __position._M_node,
65164 (__v));
65165 }
65166 else
65167 return _M_insert_unique((__v)).first;
65168 }
65169 else if (_M_impl._M_key_compare(_S_key(__position._M_node),
65170 _KeyOfValue()(__v)))
65171 {
65172
65173 const_iterator __after = __position;
65174 if (__position._M_node == _M_rightmost())
65175 return _M_insert_(0, _M_rightmost(),
65176 (__v));
65177 else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
65178 _S_key((++__after)._M_node)))
65179 {
65180 if (_S_right(__position._M_node) == 0)
65181 return _M_insert_(0, __position._M_node,
65182 (__v));
65183 else
65184 return _M_insert_(__after._M_node, __after._M_node,
65185 (__v));
65186 }
65187 else
65188 return _M_insert_unique((__v)).first;
65189 }
65190 else
65191
65192 return __position._M_const_cast();
65193 }
65194
65195 template<typename _Key, typename _Val, typename _KeyOfValue,
65196 typename _Compare, typename _Alloc>
65197
65198
65199
65200 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
65201 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65202
65203
65204
65205 _M_insert_equal_(const_iterator __position, const _Val& __v)
65206
65207 {
65208
65209 if (__position._M_node == _M_end())
65210 {
65211 if (size() > 0
65212 && !_M_impl._M_key_compare(_KeyOfValue()(__v),
65213 _S_key(_M_rightmost())))
65214 return _M_insert_(0, _M_rightmost(),
65215 (__v));
65216 else
65217 return _M_insert_equal((__v));
65218 }
65219 else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
65220 _KeyOfValue()(__v)))
65221 {
65222
65223 const_iterator __before = __position;
65224 if (__position._M_node == _M_leftmost())
65225 return _M_insert_(_M_leftmost(), _M_leftmost(),
65226 (__v));
65227 else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),
65228 _S_key((--__before)._M_node)))
65229 {
65230 if (_S_right(__before._M_node) == 0)
65231 return _M_insert_(0, __before._M_node,
65232 (__v));
65233 else
65234 return _M_insert_(__position._M_node,
65235 __position._M_node,
65236 (__v));
65237 }
65238 else
65239 return _M_insert_equal((__v));
65240 }
65241 else
65242 {
65243
65244 const_iterator __after = __position;
65245 if (__position._M_node == _M_rightmost())
65246 return _M_insert_(0, _M_rightmost(),
65247 (__v));
65248 else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),
65249 _KeyOfValue()(__v)))
65250 {
65251 if (_S_right(__position._M_node) == 0)
65252 return _M_insert_(0, __position._M_node,
65253 (__v));
65254 else
65255 return _M_insert_(__after._M_node, __after._M_node,
65256 (__v));
65257 }
65258 else
65259 return _M_insert_equal_lower((__v));
65260 }
65261 }
65262
65263 template<typename _Key, typename _Val, typename _KoV,
65264 typename _Cmp, typename _Alloc>
65265 template<class _II>
65266 void
65267 _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
65268 _M_insert_unique(_II __first, _II __last)
65269 {
65270 for (; __first != __last; ++__first)
65271 _M_insert_unique_(end(), *__first);
65272 }
65273
65274 template<typename _Key, typename _Val, typename _KoV,
65275 typename _Cmp, typename _Alloc>
65276 template<class _II>
65277 void
65278 _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
65279 _M_insert_equal(_II __first, _II __last)
65280 {
65281 for (; __first != __last; ++__first)
65282 _M_insert_equal_(end(), *__first);
65283 }
65284
65285 template<typename _Key, typename _Val, typename _KeyOfValue,
65286 typename _Compare, typename _Alloc>
65287 void
65288 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65289 _M_erase_aux(const_iterator __position)
65290 {
65291 _Link_type __y =
65292 static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
65293 (const_cast<_Base_ptr>(__position._M_node),
65294 this->_M_impl._M_header));
65295 _M_destroy_node(__y);
65296 --_M_impl._M_node_count;
65297 }
65298
65299 template<typename _Key, typename _Val, typename _KeyOfValue,
65300 typename _Compare, typename _Alloc>
65301 void
65302 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65303 _M_erase_aux(const_iterator __first, const_iterator __last)
65304 {
65305 if (__first == begin() && __last == end())
65306 clear();
65307 else
65308 while (__first != __last)
65309 erase(__first++);
65310 }
65311
65312 template<typename _Key, typename _Val, typename _KeyOfValue,
65313 typename _Compare, typename _Alloc>
65314 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
65315 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65316 erase(const _Key& __x)
65317 {
65318 pair<iterator, iterator> __p = equal_range(__x);
65319 const size_type __old_size = size();
65320 erase(__p.first, __p.second);
65321 return __old_size - size();
65322 }
65323
65324 template<typename _Key, typename _Val, typename _KeyOfValue,
65325 typename _Compare, typename _Alloc>
65326 void
65327 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65328 erase(const _Key* __first, const _Key* __last)
65329 {
65330 while (__first != __last)
65331 erase(*__first++);
65332 }
65333
65334 template<typename _Key, typename _Val, typename _KeyOfValue,
65335 typename _Compare, typename _Alloc>
65336 typename _Rb_tree<_Key, _Val, _KeyOfValue,
65337 _Compare, _Alloc>::iterator
65338 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65339 find(const _Key& __k)
65340 {
65341 iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
65342 return (__j == end()
65343 || _M_impl._M_key_compare(__k,
65344 _S_key(__j._M_node))) ? end() : __j;
65345 }
65346
65347 template<typename _Key, typename _Val, typename _KeyOfValue,
65348 typename _Compare, typename _Alloc>
65349 typename _Rb_tree<_Key, _Val, _KeyOfValue,
65350 _Compare, _Alloc>::const_iterator
65351 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65352 find(const _Key& __k) const
65353 {
65354 const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
65355 return (__j == end()
65356 || _M_impl._M_key_compare(__k,
65357 _S_key(__j._M_node))) ? end() : __j;
65358 }
65359
65360 template<typename _Key, typename _Val, typename _KeyOfValue,
65361 typename _Compare, typename _Alloc>
65362 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
65363 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
65364 count(const _Key& __k) const
65365 {
65366 pair<const_iterator, const_iterator> __p = equal_range(__k);
65367 const size_type __n = std::distance(__p.first, __p.second);
65368 return __n;
65369 }
65370
65371 __attribute__ ((__pure__)) unsigned int
65372 _Rb_tree_black_count(const _Rb_tree_node_base* __node,
65373 const _Rb_tree_node_base* __root) throw ();
65374
65375 template<typename _Key, typename _Val, typename _KeyOfValue,
65376 typename _Compare, typename _Alloc>
65377 bool
65378 _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
65379 {
65380 if (_M_impl._M_node_count == 0 || begin() == end())
65381 return _M_impl._M_node_count == 0 && begin() == end()
65382 && this->_M_impl._M_header._M_left == _M_end()
65383 && this->_M_impl._M_header._M_right == _M_end();
65384
65385 unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());
65386 for (const_iterator __it = begin(); __it != end(); ++__it)
65387 {
65388 _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);
65389 _Const_Link_type __L = _S_left(__x);
65390 _Const_Link_type __R = _S_right(__x);
65391
65392 if (__x->_M_color == _S_red)
65393 if ((__L && __L->_M_color == _S_red)
65394 || (__R && __R->_M_color == _S_red))
65395 return false;
65396
65397 if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))
65398 return false;
65399 if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))
65400 return false;
65401
65402 if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)
65403 return false;
65404 }
65405
65406 if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
65407 return false;
65408 if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
65409 return false;
65410 return true;
65411 }
65412
65413
65414 }
65415 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/map" 2 3
65416 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 1 3
65417 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65418 namespace std __attribute__ ((__visibility__ ("default")))
65419 {
65420
65421 # 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65422 template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
65423 typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
65424 class map
65425 {
65426 public:
65427 typedef _Key key_type;
65428 typedef _Tp mapped_type;
65429 typedef std::pair<const _Key, _Tp> value_type;
65430 typedef _Compare key_compare;
65431 typedef _Alloc allocator_type;
65432
65433 private:
65434
65435 typedef typename _Alloc::value_type _Alloc_value_type;
65436
65437
65438
65439
65440
65441 public:
65442 class value_compare
65443 : public std::binary_function<value_type, value_type, bool>
65444 {
65445 friend class map<_Key, _Tp, _Compare, _Alloc>;
65446 protected:
65447 _Compare comp;
65448
65449 value_compare(_Compare __c)
65450 : comp(__c) { }
65451
65452 public:
65453 bool operator()(const value_type& __x, const value_type& __y) const
65454 { return comp(__x.first, __y.first); }
65455 };
65456
65457 private:
65458
65459 typedef typename _Alloc::template rebind<value_type>::other
65460 _Pair_alloc_type;
65461
65462 typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
65463 key_compare, _Pair_alloc_type> _Rep_type;
65464
65465
65466 _Rep_type _M_t;
65467
65468 public:
65469
65470
65471 typedef typename _Pair_alloc_type::pointer pointer;
65472 typedef typename _Pair_alloc_type::const_pointer const_pointer;
65473 typedef typename _Pair_alloc_type::reference reference;
65474 typedef typename _Pair_alloc_type::const_reference const_reference;
65475 typedef typename _Rep_type::iterator iterator;
65476 typedef typename _Rep_type::const_iterator const_iterator;
65477 typedef typename _Rep_type::size_type size_type;
65478 typedef typename _Rep_type::difference_type difference_type;
65479 typedef typename _Rep_type::reverse_iterator reverse_iterator;
65480 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
65481
65482
65483
65484
65485
65486
65487
65488 map()
65489 : _M_t() { }
65490
65491
65492
65493
65494
65495
65496 explicit
65497 map(const _Compare& __comp,
65498 const allocator_type& __a = allocator_type())
65499 : _M_t(__comp, __a) { }
65500 # 172 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65501 map(const map& __x)
65502 : _M_t(__x._M_t) { }
65503 # 213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65504 template<typename _InputIterator>
65505 map(_InputIterator __first, _InputIterator __last)
65506 : _M_t()
65507 { _M_t._M_insert_unique(__first, __last); }
65508 # 229 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65509 template<typename _InputIterator>
65510 map(_InputIterator __first, _InputIterator __last,
65511 const _Compare& __comp,
65512 const allocator_type& __a = allocator_type())
65513 : _M_t(__comp, __a)
65514 { _M_t._M_insert_unique(__first, __last); }
65515 # 252 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65516 map&
65517 operator=(const map& __x)
65518 {
65519 _M_t = __x._M_t;
65520 return *this;
65521 }
65522 # 298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65523 allocator_type
65524 get_allocator() const
65525 { return _M_t.get_allocator(); }
65526
65527
65528
65529
65530
65531
65532
65533 iterator
65534 begin()
65535 { return _M_t.begin(); }
65536
65537
65538
65539
65540
65541
65542 const_iterator
65543 begin() const
65544 { return _M_t.begin(); }
65545
65546
65547
65548
65549
65550
65551 iterator
65552 end()
65553 { return _M_t.end(); }
65554
65555
65556
65557
65558
65559
65560 const_iterator
65561 end() const
65562 { return _M_t.end(); }
65563
65564
65565
65566
65567
65568
65569 reverse_iterator
65570 rbegin()
65571 { return _M_t.rbegin(); }
65572
65573
65574
65575
65576
65577
65578 const_reverse_iterator
65579 rbegin() const
65580 { return _M_t.rbegin(); }
65581
65582
65583
65584
65585
65586
65587 reverse_iterator
65588 rend()
65589 { return _M_t.rend(); }
65590
65591
65592
65593
65594
65595
65596 const_reverse_iterator
65597 rend() const
65598 { return _M_t.rend(); }
65599 # 417 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65600 bool
65601 empty() const
65602 { return _M_t.empty(); }
65603
65604
65605 size_type
65606 size() const
65607 { return _M_t.size(); }
65608
65609
65610 size_type
65611 max_size() const
65612 { return _M_t.max_size(); }
65613 # 444 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65614 mapped_type&
65615 operator[](const key_type& __k)
65616 {
65617
65618
65619
65620 iterator __i = lower_bound(__k);
65621
65622 if (__i == end() || key_comp()(__k, (*__i).first))
65623 __i = insert(__i, value_type(__k, mapped_type()));
65624 return (*__i).second;
65625 }
65626 # 481 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65627 mapped_type&
65628 at(const key_type& __k)
65629 {
65630 iterator __i = lower_bound(__k);
65631 if (__i == end() || key_comp()(__k, (*__i).first))
65632 __throw_out_of_range(("map::at"));
65633 return (*__i).second;
65634 }
65635
65636 const mapped_type&
65637 at(const key_type& __k) const
65638 {
65639 const_iterator __i = lower_bound(__k);
65640 if (__i == end() || key_comp()(__k, (*__i).first))
65641 __throw_out_of_range(("map::at"));
65642 return (*__i).second;
65643 }
65644 # 516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65645 std::pair<iterator, bool>
65646 insert(const value_type& __x)
65647 { return _M_t._M_insert_unique(__x); }
65648 # 565 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65649 iterator
65650
65651
65652
65653 insert(iterator __position, const value_type& __x)
65654
65655 { return _M_t._M_insert_unique_(__position, __x); }
65656 # 591 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65657 template<typename _InputIterator>
65658 void
65659 insert(_InputIterator __first, _InputIterator __last)
65660 { _M_t._M_insert_unique(__first, __last); }
65661 # 626 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65662 void
65663 erase(iterator __position)
65664 { _M_t.erase(__position); }
65665 # 642 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65666 size_type
65667 erase(const key_type& __x)
65668 { return _M_t.erase(__x); }
65669 # 676 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65670 void
65671 erase(iterator __first, iterator __last)
65672 { _M_t.erase(__first, __last); }
65673 # 692 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65674 void
65675 swap(map& __x)
65676 { _M_t.swap(__x._M_t); }
65677
65678
65679
65680
65681
65682
65683
65684 void
65685 clear()
65686 { _M_t.clear(); }
65687
65688
65689
65690
65691
65692
65693 key_compare
65694 key_comp() const
65695 { return _M_t.key_comp(); }
65696
65697
65698
65699
65700
65701 value_compare
65702 value_comp() const
65703 { return value_compare(_M_t.key_comp()); }
65704 # 735 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65705 iterator
65706 find(const key_type& __x)
65707 { return _M_t.find(__x); }
65708 # 750 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65709 const_iterator
65710 find(const key_type& __x) const
65711 { return _M_t.find(__x); }
65712 # 762 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65713 size_type
65714 count(const key_type& __x) const
65715 { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
65716 # 777 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65717 iterator
65718 lower_bound(const key_type& __x)
65719 { return _M_t.lower_bound(__x); }
65720 # 792 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65721 const_iterator
65722 lower_bound(const key_type& __x) const
65723 { return _M_t.lower_bound(__x); }
65724
65725
65726
65727
65728
65729
65730
65731 iterator
65732 upper_bound(const key_type& __x)
65733 { return _M_t.upper_bound(__x); }
65734
65735
65736
65737
65738
65739
65740
65741 const_iterator
65742 upper_bound(const key_type& __x) const
65743 { return _M_t.upper_bound(__x); }
65744 # 831 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65745 std::pair<iterator, iterator>
65746 equal_range(const key_type& __x)
65747 { return _M_t.equal_range(__x); }
65748 # 850 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65749 std::pair<const_iterator, const_iterator>
65750 equal_range(const key_type& __x) const
65751 { return _M_t.equal_range(__x); }
65752
65753 template<typename _K1, typename _T1, typename _C1, typename _A1>
65754 friend bool
65755 operator==(const map<_K1, _T1, _C1, _A1>&,
65756 const map<_K1, _T1, _C1, _A1>&);
65757
65758 template<typename _K1, typename _T1, typename _C1, typename _A1>
65759 friend bool
65760 operator<(const map<_K1, _T1, _C1, _A1>&,
65761 const map<_K1, _T1, _C1, _A1>&);
65762 };
65763 # 875 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65764 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65765 inline bool
65766 operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
65767 const map<_Key, _Tp, _Compare, _Alloc>& __y)
65768 { return __x._M_t == __y._M_t; }
65769 # 892 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_map.h" 3
65770 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65771 inline bool
65772 operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
65773 const map<_Key, _Tp, _Compare, _Alloc>& __y)
65774 { return __x._M_t < __y._M_t; }
65775
65776
65777 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65778 inline bool
65779 operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
65780 const map<_Key, _Tp, _Compare, _Alloc>& __y)
65781 { return !(__x == __y); }
65782
65783
65784 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65785 inline bool
65786 operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
65787 const map<_Key, _Tp, _Compare, _Alloc>& __y)
65788 { return __y < __x; }
65789
65790
65791 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65792 inline bool
65793 operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
65794 const map<_Key, _Tp, _Compare, _Alloc>& __y)
65795 { return !(__y < __x); }
65796
65797
65798 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65799 inline bool
65800 operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
65801 const map<_Key, _Tp, _Compare, _Alloc>& __y)
65802 { return !(__x < __y); }
65803
65804
65805 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
65806 inline void
65807 swap(map<_Key, _Tp, _Compare, _Alloc>& __x,
65808 map<_Key, _Tp, _Compare, _Alloc>& __y)
65809 { __x.swap(__y); }
65810
65811
65812 }
65813 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/map" 2 3
65814 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 1 3
65815 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65816 namespace std __attribute__ ((__visibility__ ("default")))
65817 {
65818
65819 # 85 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65820 template <typename _Key, typename _Tp,
65821 typename _Compare = std::less<_Key>,
65822 typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
65823 class multimap
65824 {
65825 public:
65826 typedef _Key key_type;
65827 typedef _Tp mapped_type;
65828 typedef std::pair<const _Key, _Tp> value_type;
65829 typedef _Compare key_compare;
65830 typedef _Alloc allocator_type;
65831
65832 private:
65833
65834 typedef typename _Alloc::value_type _Alloc_value_type;
65835
65836
65837
65838
65839
65840 public:
65841 class value_compare
65842 : public std::binary_function<value_type, value_type, bool>
65843 {
65844 friend class multimap<_Key, _Tp, _Compare, _Alloc>;
65845 protected:
65846 _Compare comp;
65847
65848 value_compare(_Compare __c)
65849 : comp(__c) { }
65850
65851 public:
65852 bool operator()(const value_type& __x, const value_type& __y) const
65853 { return comp(__x.first, __y.first); }
65854 };
65855
65856 private:
65857
65858 typedef typename _Alloc::template rebind<value_type>::other
65859 _Pair_alloc_type;
65860
65861 typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
65862 key_compare, _Pair_alloc_type> _Rep_type;
65863
65864 _Rep_type _M_t;
65865
65866 public:
65867
65868
65869 typedef typename _Pair_alloc_type::pointer pointer;
65870 typedef typename _Pair_alloc_type::const_pointer const_pointer;
65871 typedef typename _Pair_alloc_type::reference reference;
65872 typedef typename _Pair_alloc_type::const_reference const_reference;
65873 typedef typename _Rep_type::iterator iterator;
65874 typedef typename _Rep_type::const_iterator const_iterator;
65875 typedef typename _Rep_type::size_type size_type;
65876 typedef typename _Rep_type::difference_type difference_type;
65877 typedef typename _Rep_type::reverse_iterator reverse_iterator;
65878 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
65879
65880
65881
65882
65883
65884
65885 multimap()
65886 : _M_t() { }
65887
65888
65889
65890
65891
65892
65893 explicit
65894 multimap(const _Compare& __comp,
65895 const allocator_type& __a = allocator_type())
65896 : _M_t(__comp, __a) { }
65897 # 170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65898 multimap(const multimap& __x)
65899 : _M_t(__x._M_t) { }
65900 # 210 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65901 template<typename _InputIterator>
65902 multimap(_InputIterator __first, _InputIterator __last)
65903 : _M_t()
65904 { _M_t._M_insert_equal(__first, __last); }
65905 # 226 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65906 template<typename _InputIterator>
65907 multimap(_InputIterator __first, _InputIterator __last,
65908 const _Compare& __comp,
65909 const allocator_type& __a = allocator_type())
65910 : _M_t(__comp, __a)
65911 { _M_t._M_insert_equal(__first, __last); }
65912 # 249 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65913 multimap&
65914 operator=(const multimap& __x)
65915 {
65916 _M_t = __x._M_t;
65917 return *this;
65918 }
65919 # 295 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65920 allocator_type
65921 get_allocator() const
65922 { return _M_t.get_allocator(); }
65923
65924
65925
65926
65927
65928
65929
65930 iterator
65931 begin()
65932 { return _M_t.begin(); }
65933
65934
65935
65936
65937
65938
65939 const_iterator
65940 begin() const
65941 { return _M_t.begin(); }
65942
65943
65944
65945
65946
65947
65948 iterator
65949 end()
65950 { return _M_t.end(); }
65951
65952
65953
65954
65955
65956
65957 const_iterator
65958 end() const
65959 { return _M_t.end(); }
65960
65961
65962
65963
65964
65965
65966 reverse_iterator
65967 rbegin()
65968 { return _M_t.rbegin(); }
65969
65970
65971
65972
65973
65974
65975 const_reverse_iterator
65976 rbegin() const
65977 { return _M_t.rbegin(); }
65978
65979
65980
65981
65982
65983
65984 reverse_iterator
65985 rend()
65986 { return _M_t.rend(); }
65987
65988
65989
65990
65991
65992
65993 const_reverse_iterator
65994 rend() const
65995 { return _M_t.rend(); }
65996 # 412 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
65997 bool
65998 empty() const
65999 { return _M_t.empty(); }
66000
66001
66002 size_type
66003 size() const
66004 { return _M_t.size(); }
66005
66006
66007 size_type
66008 max_size() const
66009 { return _M_t.max_size(); }
66010 # 439 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66011 iterator
66012 insert(const value_type& __x)
66013 { return _M_t._M_insert_equal(__x); }
66014 # 472 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66015 iterator
66016
66017
66018
66019 insert(iterator __position, const value_type& __x)
66020
66021 { return _M_t._M_insert_equal_(__position, __x); }
66022 # 499 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66023 template<typename _InputIterator>
66024 void
66025 insert(_InputIterator __first, _InputIterator __last)
66026 { _M_t._M_insert_equal(__first, __last); }
66027 # 547 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66028 void
66029 erase(iterator __position)
66030 { _M_t.erase(__position); }
66031 # 563 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66032 size_type
66033 erase(const key_type& __x)
66034 { return _M_t.erase(__x); }
66035 # 601 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66036 void
66037 erase(iterator __first, iterator __last)
66038 { _M_t.erase(__first, __last); }
66039 # 617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66040 void
66041 swap(multimap& __x)
66042 { _M_t.swap(__x._M_t); }
66043
66044
66045
66046
66047
66048
66049
66050 void
66051 clear()
66052 { _M_t.clear(); }
66053
66054
66055
66056
66057
66058
66059 key_compare
66060 key_comp() const
66061 { return _M_t.key_comp(); }
66062
66063
66064
66065
66066
66067 value_compare
66068 value_comp() const
66069 { return value_compare(_M_t.key_comp()); }
66070 # 660 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66071 iterator
66072 find(const key_type& __x)
66073 { return _M_t.find(__x); }
66074 # 675 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66075 const_iterator
66076 find(const key_type& __x) const
66077 { return _M_t.find(__x); }
66078
66079
66080
66081
66082
66083
66084 size_type
66085 count(const key_type& __x) const
66086 { return _M_t.count(__x); }
66087 # 699 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66088 iterator
66089 lower_bound(const key_type& __x)
66090 { return _M_t.lower_bound(__x); }
66091 # 714 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66092 const_iterator
66093 lower_bound(const key_type& __x) const
66094 { return _M_t.lower_bound(__x); }
66095
66096
66097
66098
66099
66100
66101
66102 iterator
66103 upper_bound(const key_type& __x)
66104 { return _M_t.upper_bound(__x); }
66105
66106
66107
66108
66109
66110
66111
66112 const_iterator
66113 upper_bound(const key_type& __x) const
66114 { return _M_t.upper_bound(__x); }
66115 # 751 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66116 std::pair<iterator, iterator>
66117 equal_range(const key_type& __x)
66118 { return _M_t.equal_range(__x); }
66119 # 768 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66120 std::pair<const_iterator, const_iterator>
66121 equal_range(const key_type& __x) const
66122 { return _M_t.equal_range(__x); }
66123
66124 template<typename _K1, typename _T1, typename _C1, typename _A1>
66125 friend bool
66126 operator==(const multimap<_K1, _T1, _C1, _A1>&,
66127 const multimap<_K1, _T1, _C1, _A1>&);
66128
66129 template<typename _K1, typename _T1, typename _C1, typename _A1>
66130 friend bool
66131 operator<(const multimap<_K1, _T1, _C1, _A1>&,
66132 const multimap<_K1, _T1, _C1, _A1>&);
66133 };
66134 # 793 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66135 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66136 inline bool
66137 operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66138 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66139 { return __x._M_t == __y._M_t; }
66140 # 810 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multimap.h" 3
66141 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66142 inline bool
66143 operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66144 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66145 { return __x._M_t < __y._M_t; }
66146
66147
66148 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66149 inline bool
66150 operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66151 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66152 { return !(__x == __y); }
66153
66154
66155 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66156 inline bool
66157 operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66158 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66159 { return __y < __x; }
66160
66161
66162 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66163 inline bool
66164 operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66165 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66166 { return !(__y < __x); }
66167
66168
66169 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66170 inline bool
66171 operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66172 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66173 { return !(__x < __y); }
66174
66175
66176 template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
66177 inline void
66178 swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,
66179 multimap<_Key, _Tp, _Compare, _Alloc>& __y)
66180 { __x.swap(__y); }
66181
66182
66183 }
66184 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/map" 2 3
66185 # 93 "../boost/detail/container_fwd.hpp" 2
66186 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/set" 1 3
66187 # 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/set" 3
66188
66189 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/set" 3
66190
66191
66192 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 1 3
66193 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66194 namespace std __attribute__ ((__visibility__ ("default")))
66195 {
66196
66197 # 87 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66198 template<typename _Key, typename _Compare = std::less<_Key>,
66199 typename _Alloc = std::allocator<_Key> >
66200 class set
66201 {
66202
66203 typedef typename _Alloc::value_type _Alloc_value_type;
66204
66205
66206
66207
66208
66209 public:
66210
66211
66212
66213 typedef _Key key_type;
66214 typedef _Key value_type;
66215 typedef _Compare key_compare;
66216 typedef _Compare value_compare;
66217 typedef _Alloc allocator_type;
66218
66219
66220 private:
66221 typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
66222
66223 typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
66224 key_compare, _Key_alloc_type> _Rep_type;
66225 _Rep_type _M_t;
66226
66227 public:
66228
66229
66230 typedef typename _Key_alloc_type::pointer pointer;
66231 typedef typename _Key_alloc_type::const_pointer const_pointer;
66232 typedef typename _Key_alloc_type::reference reference;
66233 typedef typename _Key_alloc_type::const_reference const_reference;
66234
66235
66236
66237 typedef typename _Rep_type::const_iterator iterator;
66238 typedef typename _Rep_type::const_iterator const_iterator;
66239 typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
66240 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
66241 typedef typename _Rep_type::size_type size_type;
66242 typedef typename _Rep_type::difference_type difference_type;
66243
66244
66245
66246
66247
66248
66249 set()
66250 : _M_t() { }
66251
66252
66253
66254
66255
66256
66257 explicit
66258 set(const _Compare& __comp,
66259 const allocator_type& __a = allocator_type())
66260 : _M_t(__comp, __a) { }
66261 # 160 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66262 template<typename _InputIterator>
66263 set(_InputIterator __first, _InputIterator __last)
66264 : _M_t()
66265 { _M_t._M_insert_unique(__first, __last); }
66266 # 176 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66267 template<typename _InputIterator>
66268 set(_InputIterator __first, _InputIterator __last,
66269 const _Compare& __comp,
66270 const allocator_type& __a = allocator_type())
66271 : _M_t(__comp, __a)
66272 { _M_t._M_insert_unique(__first, __last); }
66273 # 190 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66274 set(const set& __x)
66275 : _M_t(__x._M_t) { }
66276 # 228 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66277 set&
66278 operator=(const set& __x)
66279 {
66280 _M_t = __x._M_t;
66281 return *this;
66282 }
66283 # 276 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66284 key_compare
66285 key_comp() const
66286 { return _M_t.key_comp(); }
66287
66288 value_compare
66289 value_comp() const
66290 { return _M_t.key_comp(); }
66291
66292 allocator_type
66293 get_allocator() const
66294 { return _M_t.get_allocator(); }
66295
66296
66297
66298
66299
66300
66301 iterator
66302 begin() const
66303 { return _M_t.begin(); }
66304
66305
66306
66307
66308
66309
66310 iterator
66311 end() const
66312 { return _M_t.end(); }
66313
66314
66315
66316
66317
66318
66319 reverse_iterator
66320 rbegin() const
66321 { return _M_t.rbegin(); }
66322
66323
66324
66325
66326
66327
66328 reverse_iterator
66329 rend() const
66330 { return _M_t.rend(); }
66331 # 363 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66332 bool
66333 empty() const
66334 { return _M_t.empty(); }
66335
66336
66337 size_type
66338 size() const
66339 { return _M_t.size(); }
66340
66341
66342 size_type
66343 max_size() const
66344 { return _M_t.max_size(); }
66345 # 388 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66346 void
66347 swap(set& __x)
66348 { _M_t.swap(__x._M_t); }
66349 # 406 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66350 std::pair<iterator, bool>
66351 insert(const value_type& __x)
66352 {
66353 std::pair<typename _Rep_type::iterator, bool> __p =
66354 _M_t._M_insert_unique(__x);
66355 return std::pair<iterator, bool>(__p.first, __p.second);
66356 }
66357 # 443 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66358 iterator
66359 insert(const_iterator __position, const value_type& __x)
66360 { return _M_t._M_insert_unique_(__position, __x); }
66361 # 462 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66362 template<typename _InputIterator>
66363 void
66364 insert(_InputIterator __first, _InputIterator __last)
66365 { _M_t._M_insert_unique(__first, __last); }
66366 # 510 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66367 void
66368 erase(iterator __position)
66369 { _M_t.erase(__position); }
66370 # 526 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66371 size_type
66372 erase(const key_type& __x)
66373 { return _M_t.erase(__x); }
66374 # 560 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66375 void
66376 erase(iterator __first, iterator __last)
66377 { _M_t.erase(__first, __last); }
66378 # 571 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66379 void
66380 clear()
66381 { _M_t.clear(); }
66382 # 585 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66383 size_type
66384 count(const key_type& __x) const
66385 { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
66386 # 603 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66387 iterator
66388 find(const key_type& __x)
66389 { return _M_t.find(__x); }
66390
66391 const_iterator
66392 find(const key_type& __x) const
66393 { return _M_t.find(__x); }
66394 # 624 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66395 iterator
66396 lower_bound(const key_type& __x)
66397 { return _M_t.lower_bound(__x); }
66398
66399 const_iterator
66400 lower_bound(const key_type& __x) const
66401 { return _M_t.lower_bound(__x); }
66402 # 640 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66403 iterator
66404 upper_bound(const key_type& __x)
66405 { return _M_t.upper_bound(__x); }
66406
66407 const_iterator
66408 upper_bound(const key_type& __x) const
66409 { return _M_t.upper_bound(__x); }
66410 # 665 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66411 std::pair<iterator, iterator>
66412 equal_range(const key_type& __x)
66413 { return _M_t.equal_range(__x); }
66414
66415 std::pair<const_iterator, const_iterator>
66416 equal_range(const key_type& __x) const
66417 { return _M_t.equal_range(__x); }
66418
66419
66420 template<typename _K1, typename _C1, typename _A1>
66421 friend bool
66422 operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
66423
66424 template<typename _K1, typename _C1, typename _A1>
66425 friend bool
66426 operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
66427 };
66428 # 694 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66429 template<typename _Key, typename _Compare, typename _Alloc>
66430 inline bool
66431 operator==(const set<_Key, _Compare, _Alloc>& __x,
66432 const set<_Key, _Compare, _Alloc>& __y)
66433 { return __x._M_t == __y._M_t; }
66434 # 711 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_set.h" 3
66435 template<typename _Key, typename _Compare, typename _Alloc>
66436 inline bool
66437 operator<(const set<_Key, _Compare, _Alloc>& __x,
66438 const set<_Key, _Compare, _Alloc>& __y)
66439 { return __x._M_t < __y._M_t; }
66440
66441
66442 template<typename _Key, typename _Compare, typename _Alloc>
66443 inline bool
66444 operator!=(const set<_Key, _Compare, _Alloc>& __x,
66445 const set<_Key, _Compare, _Alloc>& __y)
66446 { return !(__x == __y); }
66447
66448
66449 template<typename _Key, typename _Compare, typename _Alloc>
66450 inline bool
66451 operator>(const set<_Key, _Compare, _Alloc>& __x,
66452 const set<_Key, _Compare, _Alloc>& __y)
66453 { return __y < __x; }
66454
66455
66456 template<typename _Key, typename _Compare, typename _Alloc>
66457 inline bool
66458 operator<=(const set<_Key, _Compare, _Alloc>& __x,
66459 const set<_Key, _Compare, _Alloc>& __y)
66460 { return !(__y < __x); }
66461
66462
66463 template<typename _Key, typename _Compare, typename _Alloc>
66464 inline bool
66465 operator>=(const set<_Key, _Compare, _Alloc>& __x,
66466 const set<_Key, _Compare, _Alloc>& __y)
66467 { return !(__x < __y); }
66468
66469
66470 template<typename _Key, typename _Compare, typename _Alloc>
66471 inline void
66472 swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y)
66473 { __x.swap(__y); }
66474
66475
66476 }
66477 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/set" 2 3
66478 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 1 3
66479 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66480 namespace std __attribute__ ((__visibility__ ("default")))
66481 {
66482
66483 # 84 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66484 template <typename _Key, typename _Compare = std::less<_Key>,
66485 typename _Alloc = std::allocator<_Key> >
66486 class multiset
66487 {
66488
66489 typedef typename _Alloc::value_type _Alloc_value_type;
66490
66491
66492
66493
66494
66495 public:
66496
66497 typedef _Key key_type;
66498 typedef _Key value_type;
66499 typedef _Compare key_compare;
66500 typedef _Compare value_compare;
66501 typedef _Alloc allocator_type;
66502
66503 private:
66504
66505 typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
66506
66507 typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
66508 key_compare, _Key_alloc_type> _Rep_type;
66509
66510 _Rep_type _M_t;
66511
66512 public:
66513 typedef typename _Key_alloc_type::pointer pointer;
66514 typedef typename _Key_alloc_type::const_pointer const_pointer;
66515 typedef typename _Key_alloc_type::reference reference;
66516 typedef typename _Key_alloc_type::const_reference const_reference;
66517
66518
66519
66520 typedef typename _Rep_type::const_iterator iterator;
66521 typedef typename _Rep_type::const_iterator const_iterator;
66522 typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
66523 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
66524 typedef typename _Rep_type::size_type size_type;
66525 typedef typename _Rep_type::difference_type difference_type;
66526
66527
66528
66529
66530
66531 multiset()
66532 : _M_t() { }
66533
66534
66535
66536
66537
66538
66539 explicit
66540 multiset(const _Compare& __comp,
66541 const allocator_type& __a = allocator_type())
66542 : _M_t(__comp, __a) { }
66543 # 153 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66544 template<typename _InputIterator>
66545 multiset(_InputIterator __first, _InputIterator __last)
66546 : _M_t()
66547 { _M_t._M_insert_equal(__first, __last); }
66548 # 169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66549 template<typename _InputIterator>
66550 multiset(_InputIterator __first, _InputIterator __last,
66551 const _Compare& __comp,
66552 const allocator_type& __a = allocator_type())
66553 : _M_t(__comp, __a)
66554 { _M_t._M_insert_equal(__first, __last); }
66555 # 183 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66556 multiset(const multiset& __x)
66557 : _M_t(__x._M_t) { }
66558 # 221 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66559 multiset&
66560 operator=(const multiset& __x)
66561 {
66562 _M_t = __x._M_t;
66563 return *this;
66564 }
66565 # 269 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66566 key_compare
66567 key_comp() const
66568 { return _M_t.key_comp(); }
66569
66570 value_compare
66571 value_comp() const
66572 { return _M_t.key_comp(); }
66573
66574 allocator_type
66575 get_allocator() const
66576 { return _M_t.get_allocator(); }
66577
66578
66579
66580
66581
66582
66583 iterator
66584 begin() const
66585 { return _M_t.begin(); }
66586
66587
66588
66589
66590
66591
66592 iterator
66593 end() const
66594 { return _M_t.end(); }
66595
66596
66597
66598
66599
66600
66601 reverse_iterator
66602 rbegin() const
66603 { return _M_t.rbegin(); }
66604
66605
66606
66607
66608
66609
66610 reverse_iterator
66611 rend() const
66612 { return _M_t.rend(); }
66613 # 356 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66614 bool
66615 empty() const
66616 { return _M_t.empty(); }
66617
66618
66619 size_type
66620 size() const
66621 { return _M_t.size(); }
66622
66623
66624 size_type
66625 max_size() const
66626 { return _M_t.max_size(); }
66627 # 381 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66628 void
66629 swap(multiset& __x)
66630 { _M_t.swap(__x._M_t); }
66631 # 397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66632 iterator
66633 insert(const value_type& __x)
66634 { return _M_t._M_insert_equal(__x); }
66635 # 427 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66636 iterator
66637 insert(const_iterator __position, const value_type& __x)
66638 { return _M_t._M_insert_equal_(__position, __x); }
66639 # 445 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66640 template<typename _InputIterator>
66641 void
66642 insert(_InputIterator __first, _InputIterator __last)
66643 { _M_t._M_insert_equal(__first, __last); }
66644 # 493 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66645 void
66646 erase(iterator __position)
66647 { _M_t.erase(__position); }
66648 # 509 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66649 size_type
66650 erase(const key_type& __x)
66651 { return _M_t.erase(__x); }
66652 # 545 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66653 void
66654 erase(iterator __first, iterator __last)
66655 { _M_t.erase(__first, __last); }
66656 # 556 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66657 void
66658 clear()
66659 { _M_t.clear(); }
66660 # 567 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66661 size_type
66662 count(const key_type& __x) const
66663 { return _M_t.count(__x); }
66664 # 585 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66665 iterator
66666 find(const key_type& __x)
66667 { return _M_t.find(__x); }
66668
66669 const_iterator
66670 find(const key_type& __x) const
66671 { return _M_t.find(__x); }
66672 # 606 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66673 iterator
66674 lower_bound(const key_type& __x)
66675 { return _M_t.lower_bound(__x); }
66676
66677 const_iterator
66678 lower_bound(const key_type& __x) const
66679 { return _M_t.lower_bound(__x); }
66680 # 622 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66681 iterator
66682 upper_bound(const key_type& __x)
66683 { return _M_t.upper_bound(__x); }
66684
66685 const_iterator
66686 upper_bound(const key_type& __x) const
66687 { return _M_t.upper_bound(__x); }
66688 # 647 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66689 std::pair<iterator, iterator>
66690 equal_range(const key_type& __x)
66691 { return _M_t.equal_range(__x); }
66692
66693 std::pair<const_iterator, const_iterator>
66694 equal_range(const key_type& __x) const
66695 { return _M_t.equal_range(__x); }
66696
66697 template<typename _K1, typename _C1, typename _A1>
66698 friend bool
66699 operator==(const multiset<_K1, _C1, _A1>&,
66700 const multiset<_K1, _C1, _A1>&);
66701
66702 template<typename _K1, typename _C1, typename _A1>
66703 friend bool
66704 operator< (const multiset<_K1, _C1, _A1>&,
66705 const multiset<_K1, _C1, _A1>&);
66706 };
66707 # 677 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66708 template<typename _Key, typename _Compare, typename _Alloc>
66709 inline bool
66710 operator==(const multiset<_Key, _Compare, _Alloc>& __x,
66711 const multiset<_Key, _Compare, _Alloc>& __y)
66712 { return __x._M_t == __y._M_t; }
66713 # 694 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/stl_multiset.h" 3
66714 template<typename _Key, typename _Compare, typename _Alloc>
66715 inline bool
66716 operator<(const multiset<_Key, _Compare, _Alloc>& __x,
66717 const multiset<_Key, _Compare, _Alloc>& __y)
66718 { return __x._M_t < __y._M_t; }
66719
66720
66721 template<typename _Key, typename _Compare, typename _Alloc>
66722 inline bool
66723 operator!=(const multiset<_Key, _Compare, _Alloc>& __x,
66724 const multiset<_Key, _Compare, _Alloc>& __y)
66725 { return !(__x == __y); }
66726
66727
66728 template<typename _Key, typename _Compare, typename _Alloc>
66729 inline bool
66730 operator>(const multiset<_Key,_Compare,_Alloc>& __x,
66731 const multiset<_Key,_Compare,_Alloc>& __y)
66732 { return __y < __x; }
66733
66734
66735 template<typename _Key, typename _Compare, typename _Alloc>
66736 inline bool
66737 operator<=(const multiset<_Key, _Compare, _Alloc>& __x,
66738 const multiset<_Key, _Compare, _Alloc>& __y)
66739 { return !(__y < __x); }
66740
66741
66742 template<typename _Key, typename _Compare, typename _Alloc>
66743 inline bool
66744 operator>=(const multiset<_Key, _Compare, _Alloc>& __x,
66745 const multiset<_Key, _Compare, _Alloc>& __y)
66746 { return !(__x < __y); }
66747
66748
66749 template<typename _Key, typename _Compare, typename _Alloc>
66750 inline void
66751 swap(multiset<_Key, _Compare, _Alloc>& __x,
66752 multiset<_Key, _Compare, _Alloc>& __y)
66753 { __x.swap(__y); }
66754
66755
66756 }
66757 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/set" 2 3
66758 # 94 "../boost/detail/container_fwd.hpp" 2
66759 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 1 3
66760 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
66761
66762 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
66763 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
66764 namespace std __attribute__ ((__visibility__ ("default")))
66765 {
66766
66767
66768
66769
66770
66771
66772
66773
66774 template<size_t _Nw>
66775 struct _Base_bitset
66776 {
66777 typedef unsigned long _WordT;
66778
66779
66780 _WordT _M_w[_Nw];
66781
66782 _Base_bitset()
66783 : _M_w() { }
66784 # 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
66785 _Base_bitset(unsigned long __val)
66786 : _M_w()
66787 { _M_w[0] = __val; }
66788
66789
66790 static size_t
66791 _S_whichword(size_t __pos )
66792 { return __pos / (8 * 8); }
66793
66794 static size_t
66795 _S_whichbyte(size_t __pos )
66796 { return (__pos % (8 * 8)) / 8; }
66797
66798 static size_t
66799 _S_whichbit(size_t __pos )
66800 { return __pos % (8 * 8); }
66801
66802 static _WordT
66803 _S_maskbit(size_t __pos )
66804 { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
66805
66806 _WordT&
66807 _M_getword(size_t __pos)
66808 { return _M_w[_S_whichword(__pos)]; }
66809
66810 _WordT
66811 _M_getword(size_t __pos) const
66812 { return _M_w[_S_whichword(__pos)]; }
66813
66814
66815
66816
66817
66818
66819
66820 _WordT&
66821 _M_hiword()
66822 { return _M_w[_Nw - 1]; }
66823
66824 _WordT
66825 _M_hiword() const
66826 { return _M_w[_Nw - 1]; }
66827
66828 void
66829 _M_do_and(const _Base_bitset<_Nw>& __x)
66830 {
66831 for (size_t __i = 0; __i < _Nw; __i++)
66832 _M_w[__i] &= __x._M_w[__i];
66833 }
66834
66835 void
66836 _M_do_or(const _Base_bitset<_Nw>& __x)
66837 {
66838 for (size_t __i = 0; __i < _Nw; __i++)
66839 _M_w[__i] |= __x._M_w[__i];
66840 }
66841
66842 void
66843 _M_do_xor(const _Base_bitset<_Nw>& __x)
66844 {
66845 for (size_t __i = 0; __i < _Nw; __i++)
66846 _M_w[__i] ^= __x._M_w[__i];
66847 }
66848
66849 void
66850 _M_do_left_shift(size_t __shift);
66851
66852 void
66853 _M_do_right_shift(size_t __shift);
66854
66855 void
66856 _M_do_flip()
66857 {
66858 for (size_t __i = 0; __i < _Nw; __i++)
66859 _M_w[__i] = ~_M_w[__i];
66860 }
66861
66862 void
66863 _M_do_set()
66864 {
66865 for (size_t __i = 0; __i < _Nw; __i++)
66866 _M_w[__i] = ~static_cast<_WordT>(0);
66867 }
66868
66869 void
66870 _M_do_reset()
66871 { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); }
66872
66873 bool
66874 _M_is_equal(const _Base_bitset<_Nw>& __x) const
66875 {
66876 for (size_t __i = 0; __i < _Nw; ++__i)
66877 if (_M_w[__i] != __x._M_w[__i])
66878 return false;
66879 return true;
66880 }
66881
66882 size_t
66883 _M_are_all_aux() const
66884 {
66885 for (size_t __i = 0; __i < _Nw - 1; __i++)
66886 if (_M_w[__i] != ~static_cast<_WordT>(0))
66887 return 0;
66888 return ((_Nw - 1) * (8 * 8)
66889 + __builtin_popcountl(_M_hiword()));
66890 }
66891
66892 bool
66893 _M_is_any() const
66894 {
66895 for (size_t __i = 0; __i < _Nw; __i++)
66896 if (_M_w[__i] != static_cast<_WordT>(0))
66897 return true;
66898 return false;
66899 }
66900
66901 size_t
66902 _M_do_count() const
66903 {
66904 size_t __result = 0;
66905 for (size_t __i = 0; __i < _Nw; __i++)
66906 __result += __builtin_popcountl(_M_w[__i]);
66907 return __result;
66908 }
66909
66910 unsigned long
66911 _M_do_to_ulong() const;
66912
66913
66914
66915
66916
66917
66918
66919 size_t
66920 _M_do_find_first(size_t __not_found) const;
66921
66922
66923 size_t
66924 _M_do_find_next(size_t __prev, size_t __not_found) const;
66925 };
66926
66927
66928 template<size_t _Nw>
66929 void
66930 _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift)
66931 {
66932 if (__builtin_expect(__shift != 0, 1))
66933 {
66934 const size_t __wshift = __shift / (8 * 8);
66935 const size_t __offset = __shift % (8 * 8);
66936
66937 if (__offset == 0)
66938 for (size_t __n = _Nw - 1; __n >= __wshift; --__n)
66939 _M_w[__n] = _M_w[__n - __wshift];
66940 else
66941 {
66942 const size_t __sub_offset = ((8 * 8)
66943 - __offset);
66944 for (size_t __n = _Nw - 1; __n > __wshift; --__n)
66945 _M_w[__n] = ((_M_w[__n - __wshift] << __offset)
66946 | (_M_w[__n - __wshift - 1] >> __sub_offset));
66947 _M_w[__wshift] = _M_w[0] << __offset;
66948 }
66949
66950 std::fill(_M_w + 0, _M_w + __wshift, static_cast<_WordT>(0));
66951 }
66952 }
66953
66954 template<size_t _Nw>
66955 void
66956 _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift)
66957 {
66958 if (__builtin_expect(__shift != 0, 1))
66959 {
66960 const size_t __wshift = __shift / (8 * 8);
66961 const size_t __offset = __shift % (8 * 8);
66962 const size_t __limit = _Nw - __wshift - 1;
66963
66964 if (__offset == 0)
66965 for (size_t __n = 0; __n <= __limit; ++__n)
66966 _M_w[__n] = _M_w[__n + __wshift];
66967 else
66968 {
66969 const size_t __sub_offset = ((8 * 8)
66970 - __offset);
66971 for (size_t __n = 0; __n < __limit; ++__n)
66972 _M_w[__n] = ((_M_w[__n + __wshift] >> __offset)
66973 | (_M_w[__n + __wshift + 1] << __sub_offset));
66974 _M_w[__limit] = _M_w[_Nw-1] >> __offset;
66975 }
66976
66977 std::fill(_M_w + __limit + 1, _M_w + _Nw, static_cast<_WordT>(0));
66978 }
66979 }
66980
66981 template<size_t _Nw>
66982 unsigned long
66983 _Base_bitset<_Nw>::_M_do_to_ulong() const
66984 {
66985 for (size_t __i = 1; __i < _Nw; ++__i)
66986 if (_M_w[__i])
66987 __throw_overflow_error(("_Base_bitset::_M_do_to_ulong"));
66988 return _M_w[0];
66989 }
66990 # 314 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
66991 template<size_t _Nw>
66992 size_t
66993 _Base_bitset<_Nw>::_M_do_find_first(size_t __not_found) const
66994 {
66995 for (size_t __i = 0; __i < _Nw; __i++)
66996 {
66997 _WordT __thisword = _M_w[__i];
66998 if (__thisword != static_cast<_WordT>(0))
66999 return (__i * (8 * 8)
67000 + __builtin_ctzl(__thisword));
67001 }
67002
67003 return __not_found;
67004 }
67005
67006 template<size_t _Nw>
67007 size_t
67008 _Base_bitset<_Nw>::_M_do_find_next(size_t __prev, size_t __not_found) const
67009 {
67010
67011 ++__prev;
67012
67013
67014 if (__prev >= _Nw * (8 * 8))
67015 return __not_found;
67016
67017
67018 size_t __i = _S_whichword(__prev);
67019 _WordT __thisword = _M_w[__i];
67020
67021
67022 __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev);
67023
67024 if (__thisword != static_cast<_WordT>(0))
67025 return (__i * (8 * 8)
67026 + __builtin_ctzl(__thisword));
67027
67028
67029 __i++;
67030 for (; __i < _Nw; __i++)
67031 {
67032 __thisword = _M_w[__i];
67033 if (__thisword != static_cast<_WordT>(0))
67034 return (__i * (8 * 8)
67035 + __builtin_ctzl(__thisword));
67036 }
67037
67038 return __not_found;
67039 }
67040
67041
67042
67043
67044
67045
67046 template<>
67047 struct _Base_bitset<1>
67048 {
67049 typedef unsigned long _WordT;
67050 _WordT _M_w;
67051
67052 _Base_bitset()
67053 : _M_w(0)
67054 { }
67055
67056
67057
67058
67059 _Base_bitset(unsigned long __val)
67060
67061 : _M_w(__val)
67062 { }
67063
67064 static size_t
67065 _S_whichword(size_t __pos )
67066 { return __pos / (8 * 8); }
67067
67068 static size_t
67069 _S_whichbyte(size_t __pos )
67070 { return (__pos % (8 * 8)) / 8; }
67071
67072 static size_t
67073 _S_whichbit(size_t __pos )
67074 { return __pos % (8 * 8); }
67075
67076 static _WordT
67077 _S_maskbit(size_t __pos )
67078 { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
67079
67080 _WordT&
67081 _M_getword(size_t)
67082 { return _M_w; }
67083
67084 _WordT
67085 _M_getword(size_t) const
67086 { return _M_w; }
67087
67088
67089
67090
67091
67092
67093
67094 _WordT&
67095 _M_hiword()
67096 { return _M_w; }
67097
67098 _WordT
67099 _M_hiword() const
67100 { return _M_w; }
67101
67102 void
67103 _M_do_and(const _Base_bitset<1>& __x)
67104 { _M_w &= __x._M_w; }
67105
67106 void
67107 _M_do_or(const _Base_bitset<1>& __x)
67108 { _M_w |= __x._M_w; }
67109
67110 void
67111 _M_do_xor(const _Base_bitset<1>& __x)
67112 { _M_w ^= __x._M_w; }
67113
67114 void
67115 _M_do_left_shift(size_t __shift)
67116 { _M_w <<= __shift; }
67117
67118 void
67119 _M_do_right_shift(size_t __shift)
67120 { _M_w >>= __shift; }
67121
67122 void
67123 _M_do_flip()
67124 { _M_w = ~_M_w; }
67125
67126 void
67127 _M_do_set()
67128 { _M_w = ~static_cast<_WordT>(0); }
67129
67130 void
67131 _M_do_reset()
67132 { _M_w = 0; }
67133
67134 bool
67135 _M_is_equal(const _Base_bitset<1>& __x) const
67136 { return _M_w == __x._M_w; }
67137
67138 size_t
67139 _M_are_all_aux() const
67140 { return __builtin_popcountl(_M_w); }
67141
67142 bool
67143 _M_is_any() const
67144 { return _M_w != 0; }
67145
67146 size_t
67147 _M_do_count() const
67148 { return __builtin_popcountl(_M_w); }
67149
67150 unsigned long
67151 _M_do_to_ulong() const
67152 { return _M_w; }
67153
67154
67155
67156
67157
67158
67159
67160 size_t
67161 _M_do_find_first(size_t __not_found) const
67162 {
67163 if (_M_w != 0)
67164 return __builtin_ctzl(_M_w);
67165 else
67166 return __not_found;
67167 }
67168
67169
67170 size_t
67171 _M_do_find_next(size_t __prev, size_t __not_found) const
67172 {
67173 ++__prev;
67174 if (__prev >= ((size_t) (8 * 8)))
67175 return __not_found;
67176
67177 _WordT __x = _M_w >> __prev;
67178 if (__x != 0)
67179 return __builtin_ctzl(__x) + __prev;
67180 else
67181 return __not_found;
67182 }
67183 };
67184
67185
67186
67187
67188
67189
67190 template<>
67191 struct _Base_bitset<0>
67192 {
67193 typedef unsigned long _WordT;
67194
67195 _Base_bitset()
67196 { }
67197
67198
67199
67200
67201 _Base_bitset(unsigned long)
67202
67203 { }
67204
67205 static size_t
67206 _S_whichword(size_t __pos )
67207 { return __pos / (8 * 8); }
67208
67209 static size_t
67210 _S_whichbyte(size_t __pos )
67211 { return (__pos % (8 * 8)) / 8; }
67212
67213 static size_t
67214 _S_whichbit(size_t __pos )
67215 { return __pos % (8 * 8); }
67216
67217 static _WordT
67218 _S_maskbit(size_t __pos )
67219 { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
67220 # 551 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67221 _WordT&
67222 _M_getword(size_t)
67223 {
67224 __throw_out_of_range(("_Base_bitset::_M_getword"));
67225 return *new _WordT;
67226 }
67227
67228 _WordT
67229 _M_getword(size_t __pos) const
67230 { return 0; }
67231
67232 _WordT
67233 _M_hiword() const
67234 { return 0; }
67235
67236 void
67237 _M_do_and(const _Base_bitset<0>&)
67238 { }
67239
67240 void
67241 _M_do_or(const _Base_bitset<0>&)
67242 { }
67243
67244 void
67245 _M_do_xor(const _Base_bitset<0>&)
67246 { }
67247
67248 void
67249 _M_do_left_shift(size_t)
67250 { }
67251
67252 void
67253 _M_do_right_shift(size_t)
67254 { }
67255
67256 void
67257 _M_do_flip()
67258 { }
67259
67260 void
67261 _M_do_set()
67262 { }
67263
67264 void
67265 _M_do_reset()
67266 { }
67267
67268
67269
67270
67271 bool
67272 _M_is_equal(const _Base_bitset<0>&) const
67273 { return true; }
67274
67275 size_t
67276 _M_are_all_aux() const
67277 { return 0; }
67278
67279 bool
67280 _M_is_any() const
67281 { return false; }
67282
67283 size_t
67284 _M_do_count() const
67285 { return 0; }
67286
67287 unsigned long
67288 _M_do_to_ulong() const
67289 { return 0; }
67290 # 629 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67291 size_t
67292 _M_do_find_first(size_t) const
67293 { return 0; }
67294
67295 size_t
67296 _M_do_find_next(size_t, size_t) const
67297 { return 0; }
67298 };
67299
67300
67301
67302 template<size_t _Extrabits>
67303 struct _Sanitize
67304 {
67305 typedef unsigned long _WordT;
67306
67307 static void
67308 _S_do_sanitize(_WordT& __val)
67309 { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); }
67310 };
67311
67312 template<>
67313 struct _Sanitize<0>
67314 {
67315 typedef unsigned long _WordT;
67316
67317 static void
67318 _S_do_sanitize(_WordT) { }
67319 };
67320 # 741 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67321 template<size_t _Nb>
67322 class bitset
67323 : private _Base_bitset<((_Nb) / (8 * 8) + ((_Nb) % (8 * 8) == 0 ? 0 : 1))>
67324 {
67325 private:
67326 typedef _Base_bitset<((_Nb) / (8 * 8) + ((_Nb) % (8 * 8) == 0 ? 0 : 1))> _Base;
67327 typedef unsigned long _WordT;
67328
67329 void
67330 _M_do_sanitize()
67331 {
67332 typedef _Sanitize<_Nb % (8 * 8)> __sanitize_type;
67333 __sanitize_type::_S_do_sanitize(this->_M_hiword());
67334 }
67335
67336
67337
67338
67339
67340 public:
67341 # 773 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67342 class reference
67343 {
67344 friend class bitset;
67345
67346 _WordT* _M_wp;
67347 size_t _M_bpos;
67348
67349
67350 reference();
67351
67352 public:
67353 reference(bitset& __b, size_t __pos)
67354 {
67355 _M_wp = &__b._M_getword(__pos);
67356 _M_bpos = _Base::_S_whichbit(__pos);
67357 }
67358
67359 ~reference()
67360 { }
67361
67362
67363 reference&
67364 operator=(bool __x)
67365 {
67366 if (__x)
67367 *_M_wp |= _Base::_S_maskbit(_M_bpos);
67368 else
67369 *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
67370 return *this;
67371 }
67372
67373
67374 reference&
67375 operator=(const reference& __j)
67376 {
67377 if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos)))
67378 *_M_wp |= _Base::_S_maskbit(_M_bpos);
67379 else
67380 *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
67381 return *this;
67382 }
67383
67384
67385 bool
67386 operator~() const
67387 { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) == 0; }
67388
67389
67390 operator bool() const
67391 { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) != 0; }
67392
67393
67394 reference&
67395 flip()
67396 {
67397 *_M_wp ^= _Base::_S_maskbit(_M_bpos);
67398 return *this;
67399 }
67400 };
67401 friend class reference;
67402
67403
67404
67405 bitset()
67406 { }
67407
67408
67409
67410
67411
67412
67413 bitset(unsigned long __val)
67414 : _Base(__val)
67415 { _M_do_sanitize(); }
67416 # 858 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67417 template<class _CharT, class _Traits, class _Alloc>
67418 explicit
67419 bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
67420 size_t __position = 0)
67421 : _Base()
67422 {
67423 if (__position > __s.size())
67424 __throw_out_of_range(("bitset::bitset initial position " "not valid")
67425 );
67426 _M_copy_from_string(__s, __position,
67427 std::basic_string<_CharT, _Traits, _Alloc>::npos,
67428 _CharT('0'), _CharT('1'));
67429 }
67430 # 881 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67431 template<class _CharT, class _Traits, class _Alloc>
67432 bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
67433 size_t __position, size_t __n)
67434 : _Base()
67435 {
67436 if (__position > __s.size())
67437 __throw_out_of_range(("bitset::bitset initial position " "not valid")
67438 );
67439 _M_copy_from_string(__s, __position, __n, _CharT('0'), _CharT('1'));
67440 }
67441
67442
67443
67444 template<class _CharT, class _Traits, class _Alloc>
67445 bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
67446 size_t __position, size_t __n,
67447 _CharT __zero, _CharT __one = _CharT('1'))
67448 : _Base()
67449 {
67450 if (__position > __s.size())
67451 __throw_out_of_range(("bitset::bitset initial position " "not valid")
67452 );
67453 _M_copy_from_string(__s, __position, __n, __zero, __one);
67454 }
67455 # 943 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67456 bitset<_Nb>&
67457 operator&=(const bitset<_Nb>& __rhs)
67458 {
67459 this->_M_do_and(__rhs);
67460 return *this;
67461 }
67462
67463 bitset<_Nb>&
67464 operator|=(const bitset<_Nb>& __rhs)
67465 {
67466 this->_M_do_or(__rhs);
67467 return *this;
67468 }
67469
67470 bitset<_Nb>&
67471 operator^=(const bitset<_Nb>& __rhs)
67472 {
67473 this->_M_do_xor(__rhs);
67474 return *this;
67475 }
67476 # 972 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67477 bitset<_Nb>&
67478 operator<<=(size_t __position)
67479 {
67480 if (__builtin_expect(__position < _Nb, 1))
67481 {
67482 this->_M_do_left_shift(__position);
67483 this->_M_do_sanitize();
67484 }
67485 else
67486 this->_M_do_reset();
67487 return *this;
67488 }
67489
67490 bitset<_Nb>&
67491 operator>>=(size_t __position)
67492 {
67493 if (__builtin_expect(__position < _Nb, 1))
67494 {
67495 this->_M_do_right_shift(__position);
67496 this->_M_do_sanitize();
67497 }
67498 else
67499 this->_M_do_reset();
67500 return *this;
67501 }
67502 # 1005 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67503 bitset<_Nb>&
67504 _Unchecked_set(size_t __pos)
67505 {
67506 this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
67507 return *this;
67508 }
67509
67510 bitset<_Nb>&
67511 _Unchecked_set(size_t __pos, int __val)
67512 {
67513 if (__val)
67514 this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
67515 else
67516 this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
67517 return *this;
67518 }
67519
67520 bitset<_Nb>&
67521 _Unchecked_reset(size_t __pos)
67522 {
67523 this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
67524 return *this;
67525 }
67526
67527 bitset<_Nb>&
67528 _Unchecked_flip(size_t __pos)
67529 {
67530 this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos);
67531 return *this;
67532 }
67533
67534 bool
67535 _Unchecked_test(size_t __pos) const
67536 { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
67537 != static_cast<_WordT>(0)); }
67538
67539
67540
67541
67542
67543
67544 bitset<_Nb>&
67545 set()
67546 {
67547 this->_M_do_set();
67548 this->_M_do_sanitize();
67549 return *this;
67550 }
67551
67552
67553
67554
67555
67556
67557
67558 bitset<_Nb>&
67559 set(size_t __position, bool __val = true)
67560 {
67561 if (__position >= _Nb)
67562 __throw_out_of_range(("bitset::set"));
67563 return _Unchecked_set(__position, __val);
67564 }
67565
67566
67567
67568
67569 bitset<_Nb>&
67570 reset()
67571 {
67572 this->_M_do_reset();
67573 return *this;
67574 }
67575 # 1085 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67576 bitset<_Nb>&
67577 reset(size_t __position)
67578 {
67579 if (__position >= _Nb)
67580 __throw_out_of_range(("bitset::reset"));
67581 return _Unchecked_reset(__position);
67582 }
67583
67584
67585
67586
67587 bitset<_Nb>&
67588 flip()
67589 {
67590 this->_M_do_flip();
67591 this->_M_do_sanitize();
67592 return *this;
67593 }
67594
67595
67596
67597
67598
67599
67600 bitset<_Nb>&
67601 flip(size_t __position)
67602 {
67603 if (__position >= _Nb)
67604 __throw_out_of_range(("bitset::flip"));
67605 return _Unchecked_flip(__position);
67606 }
67607
67608
67609 bitset<_Nb>
67610 operator~() const
67611 { return bitset<_Nb>(*this).flip(); }
67612 # 1137 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67613 reference
67614 operator[](size_t __position)
67615 { return reference(*this, __position); }
67616
67617 bool
67618 operator[](size_t __position) const
67619 { return _Unchecked_test(__position); }
67620 # 1152 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67621 unsigned long
67622 to_ulong() const
67623 { return this->_M_do_to_ulong(); }
67624 # 1170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67625 template<class _CharT, class _Traits, class _Alloc>
67626 std::basic_string<_CharT, _Traits, _Alloc>
67627 to_string() const
67628 {
67629 std::basic_string<_CharT, _Traits, _Alloc> __result;
67630 _M_copy_to_string(__result, _CharT('0'), _CharT('1'));
67631 return __result;
67632 }
67633
67634
67635
67636 template<class _CharT, class _Traits, class _Alloc>
67637 std::basic_string<_CharT, _Traits, _Alloc>
67638 to_string(_CharT __zero, _CharT __one = _CharT('1')) const
67639 {
67640 std::basic_string<_CharT, _Traits, _Alloc> __result;
67641 _M_copy_to_string(__result, __zero, __one);
67642 return __result;
67643 }
67644
67645
67646
67647 template<class _CharT, class _Traits>
67648 std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
67649 to_string() const
67650 { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
67651
67652
67653
67654 template<class _CharT, class _Traits>
67655 std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
67656 to_string(_CharT __zero, _CharT __one = _CharT('1')) const
67657 { return to_string<_CharT, _Traits,
67658 std::allocator<_CharT> >(__zero, __one); }
67659
67660 template<class _CharT>
67661 std::basic_string<_CharT, std::char_traits<_CharT>,
67662 std::allocator<_CharT> >
67663 to_string() const
67664 {
67665 return to_string<_CharT, std::char_traits<_CharT>,
67666 std::allocator<_CharT> >();
67667 }
67668
67669 template<class _CharT>
67670 std::basic_string<_CharT, std::char_traits<_CharT>,
67671 std::allocator<_CharT> >
67672 to_string(_CharT __zero, _CharT __one = _CharT('1')) const
67673 {
67674 return to_string<_CharT, std::char_traits<_CharT>,
67675 std::allocator<_CharT> >(__zero, __one);
67676 }
67677
67678 std::basic_string<char, std::char_traits<char>, std::allocator<char> >
67679 to_string() const
67680 {
67681 return to_string<char, std::char_traits<char>,
67682 std::allocator<char> >();
67683 }
67684
67685 std::basic_string<char, std::char_traits<char>, std::allocator<char> >
67686 to_string(char __zero, char __one = '1') const
67687 {
67688 return to_string<char, std::char_traits<char>,
67689 std::allocator<char> >(__zero, __one);
67690 }
67691
67692
67693 template<class _CharT, class _Traits>
67694 void
67695 _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t,
67696 _CharT, _CharT);
67697
67698 template<class _CharT, class _Traits, class _Alloc>
67699 void
67700 _M_copy_from_string(const std::basic_string<_CharT,
67701 _Traits, _Alloc>& __s, size_t __pos, size_t __n,
67702 _CharT __zero, _CharT __one)
67703 { _M_copy_from_ptr<_CharT, _Traits>(__s.data(), __s.size(), __pos, __n,
67704 __zero, __one); }
67705
67706 template<class _CharT, class _Traits, class _Alloc>
67707 void
67708 _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>&,
67709 _CharT, _CharT) const;
67710
67711
67712 template<class _CharT, class _Traits, class _Alloc>
67713 void
67714 _M_copy_from_string(const std::basic_string<_CharT,
67715 _Traits, _Alloc>& __s, size_t __pos, size_t __n)
67716 { _M_copy_from_string(__s, __pos, __n, _CharT('0'), _CharT('1')); }
67717
67718 template<class _CharT, class _Traits, class _Alloc>
67719 void
67720 _M_copy_to_string(std::basic_string<_CharT, _Traits,_Alloc>& __s) const
67721 { _M_copy_to_string(__s, _CharT('0'), _CharT('1')); }
67722
67723
67724 size_t
67725 count() const
67726 { return this->_M_do_count(); }
67727
67728
67729 size_t
67730 size() const
67731 { return _Nb; }
67732
67733
67734
67735 bool
67736 operator==(const bitset<_Nb>& __rhs) const
67737 { return this->_M_is_equal(__rhs); }
67738
67739 bool
67740 operator!=(const bitset<_Nb>& __rhs) const
67741 { return !this->_M_is_equal(__rhs); }
67742 # 1295 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67743 bool
67744 test(size_t __position) const
67745 {
67746 if (__position >= _Nb)
67747 __throw_out_of_range(("bitset::test"));
67748 return _Unchecked_test(__position);
67749 }
67750
67751
67752
67753
67754
67755
67756
67757 bool
67758 all() const
67759 { return this->_M_are_all_aux() == _Nb; }
67760
67761
67762
67763
67764
67765 bool
67766 any() const
67767 { return this->_M_is_any(); }
67768
67769
67770
67771
67772
67773 bool
67774 none() const
67775 { return !this->_M_is_any(); }
67776
67777
67778
67779 bitset<_Nb>
67780 operator<<(size_t __position) const
67781 { return bitset<_Nb>(*this) <<= __position; }
67782
67783 bitset<_Nb>
67784 operator>>(size_t __position) const
67785 { return bitset<_Nb>(*this) >>= __position; }
67786 # 1346 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67787 size_t
67788 _Find_first() const
67789 { return this->_M_do_find_first(_Nb); }
67790 # 1357 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67791 size_t
67792 _Find_next(size_t __prev ) const
67793 { return this->_M_do_find_next(__prev, _Nb); }
67794 };
67795
67796
67797 template<size_t _Nb>
67798 template<class _CharT, class _Traits>
67799 void
67800 bitset<_Nb>::
67801 _M_copy_from_ptr(const _CharT* __s, size_t __len,
67802 size_t __pos, size_t __n, _CharT __zero, _CharT __one)
67803 {
67804 reset();
67805 const size_t __nbits = std::min(_Nb, std::min(__n, __len - __pos));
67806 for (size_t __i = __nbits; __i > 0; --__i)
67807 {
67808 const _CharT __c = __s[__pos + __nbits - __i];
67809 if (_Traits::eq(__c, __zero))
67810 ;
67811 else if (_Traits::eq(__c, __one))
67812 _Unchecked_set(__i - 1);
67813 else
67814 __throw_invalid_argument(("bitset::_M_copy_from_ptr"));
67815 }
67816 }
67817
67818 template<size_t _Nb>
67819 template<class _CharT, class _Traits, class _Alloc>
67820 void
67821 bitset<_Nb>::
67822 _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>& __s,
67823 _CharT __zero, _CharT __one) const
67824 {
67825 __s.assign(_Nb, __zero);
67826 for (size_t __i = _Nb; __i > 0; --__i)
67827 if (_Unchecked_test(__i - 1))
67828 _Traits::assign(__s[_Nb - __i], __one);
67829 }
67830 # 1407 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67831 template<size_t _Nb>
67832 inline bitset<_Nb>
67833 operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
67834 {
67835 bitset<_Nb> __result(__x);
67836 __result &= __y;
67837 return __result;
67838 }
67839
67840 template<size_t _Nb>
67841 inline bitset<_Nb>
67842 operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
67843 {
67844 bitset<_Nb> __result(__x);
67845 __result |= __y;
67846 return __result;
67847 }
67848
67849 template <size_t _Nb>
67850 inline bitset<_Nb>
67851 operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
67852 {
67853 bitset<_Nb> __result(__x);
67854 __result ^= __y;
67855 return __result;
67856 }
67857 # 1444 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bitset" 3
67858 template<class _CharT, class _Traits, size_t _Nb>
67859 std::basic_istream<_CharT, _Traits>&
67860 operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
67861 {
67862 typedef typename _Traits::char_type char_type;
67863 typedef std::basic_istream<_CharT, _Traits> __istream_type;
67864 typedef typename __istream_type::ios_base __ios_base;
67865
67866 std::basic_string<_CharT, _Traits> __tmp;
67867 __tmp.reserve(_Nb);
67868
67869
67870
67871 const char_type __zero = __is.widen('0');
67872 const char_type __one = __is.widen('1');
67873
67874 typename __ios_base::iostate __state = __ios_base::goodbit;
67875 typename __istream_type::sentry __sentry(__is);
67876 if (__sentry)
67877 {
67878 try
67879 {
67880 for (size_t __i = _Nb; __i > 0; --__i)
67881 {
67882 static typename _Traits::int_type __eof = _Traits::eof();
67883
67884 typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc();
67885 if (_Traits::eq_int_type(__c1, __eof))
67886 {
67887 __state |= __ios_base::eofbit;
67888 break;
67889 }
67890 else
67891 {
67892 const char_type __c2 = _Traits::to_char_type(__c1);
67893 if (_Traits::eq(__c2, __zero))
67894 __tmp.push_back(__zero);
67895 else if (_Traits::eq(__c2, __one))
67896 __tmp.push_back(__one);
67897 else if (_Traits::
67898 eq_int_type(__is.rdbuf()->sputbackc(__c2),
67899 __eof))
67900 {
67901 __state |= __ios_base::failbit;
67902 break;
67903 }
67904 }
67905 }
67906 }
67907 catch(__cxxabiv1::__forced_unwind&)
67908 {
67909 __is._M_setstate(__ios_base::badbit);
67910 throw;
67911 }
67912 catch(...)
67913 { __is._M_setstate(__ios_base::badbit); }
67914 }
67915
67916 if (__tmp.empty() && _Nb)
67917 __state |= __ios_base::failbit;
67918 else
67919 __x._M_copy_from_string(__tmp, static_cast<size_t>(0), _Nb,
67920 __zero, __one);
67921 if (__state)
67922 __is.setstate(__state);
67923 return __is;
67924 }
67925
67926 template <class _CharT, class _Traits, size_t _Nb>
67927 std::basic_ostream<_CharT, _Traits>&
67928 operator<<(std::basic_ostream<_CharT, _Traits>& __os,
67929 const bitset<_Nb>& __x)
67930 {
67931 std::basic_string<_CharT, _Traits> __tmp;
67932
67933
67934
67935 const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__os.getloc());
67936 __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1'));
67937 return __os << __tmp;
67938 }
67939
67940
67941
67942 }
67943 # 95 "../boost/detail/container_fwd.hpp" 2
67944
67945 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 1 3
67946 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
67947
67948 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
67949
67950
67951
67952
67953 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 1 3
67954 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
67955
67956 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
67957 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 2 3
67958 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 1 3
67959 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
67960
67961 # 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
67962
67963
67964
67965
67966 namespace std __attribute__ ((__visibility__ ("default")))
67967 {
67968
67969 # 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
67970 template<typename _CharT, typename _Traits, typename _Alloc>
67971 class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
67972 {
67973 public:
67974
67975 typedef _CharT char_type;
67976 typedef _Traits traits_type;
67977
67978
67979 typedef _Alloc allocator_type;
67980 typedef typename traits_type::int_type int_type;
67981 typedef typename traits_type::pos_type pos_type;
67982 typedef typename traits_type::off_type off_type;
67983
67984 typedef basic_streambuf<char_type, traits_type> __streambuf_type;
67985 typedef basic_string<char_type, _Traits, _Alloc> __string_type;
67986 typedef typename __string_type::size_type __size_type;
67987
67988 protected:
67989
67990 ios_base::openmode _M_mode;
67991
67992
67993 __string_type _M_string;
67994
67995 public:
67996 # 93 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
67997 explicit
67998 basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out)
67999 : __streambuf_type(), _M_mode(__mode), _M_string()
68000 { }
68001 # 106 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68002 explicit
68003 basic_stringbuf(const __string_type& __str,
68004 ios_base::openmode __mode = ios_base::in | ios_base::out)
68005 : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size())
68006 { _M_stringbuf_init(__mode); }
68007 # 121 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68008 __string_type
68009 str() const
68010 {
68011 __string_type __ret;
68012 if (this->pptr())
68013 {
68014
68015 if (this->pptr() > this->egptr())
68016 __ret = __string_type(this->pbase(), this->pptr());
68017 else
68018 __ret = __string_type(this->pbase(), this->egptr());
68019 }
68020 else
68021 __ret = _M_string;
68022 return __ret;
68023 }
68024 # 145 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68025 void
68026 str(const __string_type& __s)
68027 {
68028
68029 _M_string.assign(__s.data(), __s.size());
68030 _M_stringbuf_init(_M_mode);
68031 }
68032
68033 protected:
68034
68035 void
68036 _M_stringbuf_init(ios_base::openmode __mode)
68037 {
68038 _M_mode = __mode;
68039 __size_type __len = 0;
68040 if (_M_mode & (ios_base::ate | ios_base::app))
68041 __len = _M_string.size();
68042 _M_sync(const_cast<char_type*>(_M_string.data()), 0, __len);
68043 }
68044
68045 virtual streamsize
68046 showmanyc()
68047 {
68048 streamsize __ret = -1;
68049 if (_M_mode & ios_base::in)
68050 {
68051 _M_update_egptr();
68052 __ret = this->egptr() - this->gptr();
68053 }
68054 return __ret;
68055 }
68056
68057 virtual int_type
68058 underflow();
68059
68060 virtual int_type
68061 pbackfail(int_type __c = traits_type::eof());
68062
68063 virtual int_type
68064 overflow(int_type __c = traits_type::eof());
68065 # 197 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68066 virtual __streambuf_type*
68067 setbuf(char_type* __s, streamsize __n)
68068 {
68069 if (__s && __n >= 0)
68070 {
68071
68072
68073
68074
68075
68076
68077 _M_string.clear();
68078
68079
68080 _M_sync(__s, __n, 0);
68081 }
68082 return this;
68083 }
68084
68085 virtual pos_type
68086 seekoff(off_type __off, ios_base::seekdir __way,
68087 ios_base::openmode __mode = ios_base::in | ios_base::out);
68088
68089 virtual pos_type
68090 seekpos(pos_type __sp,
68091 ios_base::openmode __mode = ios_base::in | ios_base::out);
68092
68093
68094
68095
68096 void
68097 _M_sync(char_type* __base, __size_type __i, __size_type __o);
68098
68099
68100
68101 void
68102 _M_update_egptr()
68103 {
68104 const bool __testin = _M_mode & ios_base::in;
68105 if (this->pptr() && this->pptr() > this->egptr())
68106 {
68107 if (__testin)
68108 this->setg(this->eback(), this->gptr(), this->pptr());
68109 else
68110 this->setg(this->pptr(), this->pptr(), this->pptr());
68111 }
68112 }
68113
68114
68115
68116 void
68117 _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off);
68118 };
68119 # 262 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68120 template<typename _CharT, typename _Traits, typename _Alloc>
68121 class basic_istringstream : public basic_istream<_CharT, _Traits>
68122 {
68123 public:
68124
68125 typedef _CharT char_type;
68126 typedef _Traits traits_type;
68127
68128
68129 typedef _Alloc allocator_type;
68130 typedef typename traits_type::int_type int_type;
68131 typedef typename traits_type::pos_type pos_type;
68132 typedef typename traits_type::off_type off_type;
68133
68134
68135 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
68136 typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
68137 typedef basic_istream<char_type, traits_type> __istream_type;
68138
68139 private:
68140 __stringbuf_type _M_stringbuf;
68141
68142 public:
68143 # 298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68144 explicit
68145 basic_istringstream(ios_base::openmode __mode = ios_base::in)
68146 : __istream_type(), _M_stringbuf(__mode | ios_base::in)
68147 { this->init(&_M_stringbuf); }
68148 # 316 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68149 explicit
68150 basic_istringstream(const __string_type& __str,
68151 ios_base::openmode __mode = ios_base::in)
68152 : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
68153 { this->init(&_M_stringbuf); }
68154
68155
68156
68157
68158
68159
68160
68161 ~basic_istringstream()
68162 { }
68163 # 338 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68164 __stringbuf_type*
68165 rdbuf() const
68166 { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
68167
68168
68169
68170
68171
68172 __string_type
68173 str() const
68174 { return _M_stringbuf.str(); }
68175
68176
68177
68178
68179
68180
68181
68182 void
68183 str(const __string_type& __s)
68184 { _M_stringbuf.str(__s); }
68185 };
68186 # 372 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68187 template <typename _CharT, typename _Traits, typename _Alloc>
68188 class basic_ostringstream : public basic_ostream<_CharT, _Traits>
68189 {
68190 public:
68191
68192 typedef _CharT char_type;
68193 typedef _Traits traits_type;
68194
68195
68196 typedef _Alloc allocator_type;
68197 typedef typename traits_type::int_type int_type;
68198 typedef typename traits_type::pos_type pos_type;
68199 typedef typename traits_type::off_type off_type;
68200
68201
68202 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
68203 typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
68204 typedef basic_ostream<char_type, traits_type> __ostream_type;
68205
68206 private:
68207 __stringbuf_type _M_stringbuf;
68208
68209 public:
68210 # 408 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68211 explicit
68212 basic_ostringstream(ios_base::openmode __mode = ios_base::out)
68213 : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
68214 { this->init(&_M_stringbuf); }
68215 # 426 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68216 explicit
68217 basic_ostringstream(const __string_type& __str,
68218 ios_base::openmode __mode = ios_base::out)
68219 : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
68220 { this->init(&_M_stringbuf); }
68221
68222
68223
68224
68225
68226
68227
68228 ~basic_ostringstream()
68229 { }
68230 # 448 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68231 __stringbuf_type*
68232 rdbuf() const
68233 { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
68234
68235
68236
68237
68238
68239 __string_type
68240 str() const
68241 { return _M_stringbuf.str(); }
68242
68243
68244
68245
68246
68247
68248
68249 void
68250 str(const __string_type& __s)
68251 { _M_stringbuf.str(__s); }
68252 };
68253 # 482 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68254 template <typename _CharT, typename _Traits, typename _Alloc>
68255 class basic_stringstream : public basic_iostream<_CharT, _Traits>
68256 {
68257 public:
68258
68259 typedef _CharT char_type;
68260 typedef _Traits traits_type;
68261
68262
68263 typedef _Alloc allocator_type;
68264 typedef typename traits_type::int_type int_type;
68265 typedef typename traits_type::pos_type pos_type;
68266 typedef typename traits_type::off_type off_type;
68267
68268
68269 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
68270 typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
68271 typedef basic_iostream<char_type, traits_type> __iostream_type;
68272
68273 private:
68274 __stringbuf_type _M_stringbuf;
68275
68276 public:
68277 # 516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68278 explicit
68279 basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in)
68280 : __iostream_type(), _M_stringbuf(__m)
68281 { this->init(&_M_stringbuf); }
68282 # 532 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68283 explicit
68284 basic_stringstream(const __string_type& __str,
68285 ios_base::openmode __m = ios_base::out | ios_base::in)
68286 : __iostream_type(), _M_stringbuf(__str, __m)
68287 { this->init(&_M_stringbuf); }
68288
68289
68290
68291
68292
68293
68294
68295 ~basic_stringstream()
68296 { }
68297 # 554 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 3
68298 __stringbuf_type*
68299 rdbuf() const
68300 { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
68301
68302
68303
68304
68305
68306 __string_type
68307 str() const
68308 { return _M_stringbuf.str(); }
68309
68310
68311
68312
68313
68314
68315
68316 void
68317 str(const __string_type& __s)
68318 { _M_stringbuf.str(__s); }
68319 };
68320
68321
68322 }
68323
68324 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/sstream.tcc" 1 3
68325 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/sstream.tcc" 3
68326
68327 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/sstream.tcc" 3
68328
68329 namespace std __attribute__ ((__visibility__ ("default")))
68330 {
68331
68332
68333 template <class _CharT, class _Traits, class _Alloc>
68334 typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
68335 basic_stringbuf<_CharT, _Traits, _Alloc>::
68336 pbackfail(int_type __c)
68337 {
68338 int_type __ret = traits_type::eof();
68339 if (this->eback() < this->gptr())
68340 {
68341
68342
68343 const bool __testeof = traits_type::eq_int_type(__c, __ret);
68344 if (!__testeof)
68345 {
68346 const bool __testeq = traits_type::eq(traits_type::
68347 to_char_type(__c),
68348 this->gptr()[-1]);
68349 const bool __testout = this->_M_mode & ios_base::out;
68350 if (__testeq || __testout)
68351 {
68352 this->gbump(-1);
68353 if (!__testeq)
68354 *this->gptr() = traits_type::to_char_type(__c);
68355 __ret = __c;
68356 }
68357 }
68358 else
68359 {
68360 this->gbump(-1);
68361 __ret = traits_type::not_eof(__c);
68362 }
68363 }
68364 return __ret;
68365 }
68366
68367 template <class _CharT, class _Traits, class _Alloc>
68368 typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
68369 basic_stringbuf<_CharT, _Traits, _Alloc>::
68370 overflow(int_type __c)
68371 {
68372 const bool __testout = this->_M_mode & ios_base::out;
68373 if (__builtin_expect(!__testout, false))
68374 return traits_type::eof();
68375
68376 const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof());
68377 if (__builtin_expect(__testeof, false))
68378 return traits_type::not_eof(__c);
68379
68380 const __size_type __capacity = _M_string.capacity();
68381 const __size_type __max_size = _M_string.max_size();
68382 const bool __testput = this->pptr() < this->epptr();
68383 if (__builtin_expect(!__testput && __capacity == __max_size, false))
68384 return traits_type::eof();
68385
68386
68387
68388 const char_type __conv = traits_type::to_char_type(__c);
68389 if (!__testput)
68390 {
68391 # 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/bits/sstream.tcc" 3
68392 const __size_type __opt_len = std::max(__size_type(2 * __capacity),
68393 __size_type(512));
68394 const __size_type __len = std::min(__opt_len, __max_size);
68395 __string_type __tmp;
68396 __tmp.reserve(__len);
68397 if (this->pbase())
68398 __tmp.assign(this->pbase(), this->epptr() - this->pbase());
68399 __tmp.push_back(__conv);
68400 _M_string.swap(__tmp);
68401 _M_sync(const_cast<char_type*>(_M_string.data()),
68402 this->gptr() - this->eback(), this->pptr() - this->pbase());
68403 }
68404 else
68405 *this->pptr() = __conv;
68406 this->pbump(1);
68407 return __c;
68408 }
68409
68410 template <class _CharT, class _Traits, class _Alloc>
68411 typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
68412 basic_stringbuf<_CharT, _Traits, _Alloc>::
68413 underflow()
68414 {
68415 int_type __ret = traits_type::eof();
68416 const bool __testin = this->_M_mode & ios_base::in;
68417 if (__testin)
68418 {
68419
68420 _M_update_egptr();
68421
68422 if (this->gptr() < this->egptr())
68423 __ret = traits_type::to_int_type(*this->gptr());
68424 }
68425 return __ret;
68426 }
68427
68428 template <class _CharT, class _Traits, class _Alloc>
68429 typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
68430 basic_stringbuf<_CharT, _Traits, _Alloc>::
68431 seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode)
68432 {
68433 pos_type __ret = pos_type(off_type(-1));
68434 bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
68435 bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
68436 const bool __testboth = __testin && __testout && __way != ios_base::cur;
68437 __testin &= !(__mode & ios_base::out);
68438 __testout &= !(__mode & ios_base::in);
68439
68440
68441
68442 const char_type* __beg = __testin ? this->eback() : this->pbase();
68443 if ((__beg || !__off) && (__testin || __testout || __testboth))
68444 {
68445 _M_update_egptr();
68446
68447 off_type __newoffi = __off;
68448 off_type __newoffo = __newoffi;
68449 if (__way == ios_base::cur)
68450 {
68451 __newoffi += this->gptr() - __beg;
68452 __newoffo += this->pptr() - __beg;
68453 }
68454 else if (__way == ios_base::end)
68455 __newoffo = __newoffi += this->egptr() - __beg;
68456
68457 if ((__testin || __testboth)
68458 && __newoffi >= 0
68459 && this->egptr() - __beg >= __newoffi)
68460 {
68461 this->setg(this->eback(), this->eback() + __newoffi,
68462 this->egptr());
68463 __ret = pos_type(__newoffi);
68464 }
68465 if ((__testout || __testboth)
68466 && __newoffo >= 0
68467 && this->egptr() - __beg >= __newoffo)
68468 {
68469 _M_pbump(this->pbase(), this->epptr(), __newoffo);
68470 __ret = pos_type(__newoffo);
68471 }
68472 }
68473 return __ret;
68474 }
68475
68476 template <class _CharT, class _Traits, class _Alloc>
68477 typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
68478 basic_stringbuf<_CharT, _Traits, _Alloc>::
68479 seekpos(pos_type __sp, ios_base::openmode __mode)
68480 {
68481 pos_type __ret = pos_type(off_type(-1));
68482 const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
68483 const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
68484
68485 const char_type* __beg = __testin ? this->eback() : this->pbase();
68486 if ((__beg || !off_type(__sp)) && (__testin || __testout))
68487 {
68488 _M_update_egptr();
68489
68490 const off_type __pos(__sp);
68491 const bool __testpos = (0 <= __pos
68492 && __pos <= this->egptr() - __beg);
68493 if (__testpos)
68494 {
68495 if (__testin)
68496 this->setg(this->eback(), this->eback() + __pos,
68497 this->egptr());
68498 if (__testout)
68499 _M_pbump(this->pbase(), this->epptr(), __pos);
68500 __ret = __sp;
68501 }
68502 }
68503 return __ret;
68504 }
68505
68506 template <class _CharT, class _Traits, class _Alloc>
68507 void
68508 basic_stringbuf<_CharT, _Traits, _Alloc>::
68509 _M_sync(char_type* __base, __size_type __i, __size_type __o)
68510 {
68511 const bool __testin = _M_mode & ios_base::in;
68512 const bool __testout = _M_mode & ios_base::out;
68513 char_type* __endg = __base + _M_string.size();
68514 char_type* __endp = __base + _M_string.capacity();
68515
68516 if (__base != _M_string.data())
68517 {
68518
68519 __endg += __i;
68520 __i = 0;
68521 __endp = __endg;
68522 }
68523
68524 if (__testin)
68525 this->setg(__base, __base + __i, __endg);
68526 if (__testout)
68527 {
68528 _M_pbump(__base, __endp, __o);
68529
68530
68531
68532 if (!__testin)
68533 this->setg(__endg, __endg, __endg);
68534 }
68535 }
68536
68537 template <class _CharT, class _Traits, class _Alloc>
68538 void
68539 basic_stringbuf<_CharT, _Traits, _Alloc>::
68540 _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off)
68541 {
68542 this->setp(__pbeg, __pend);
68543 while (__off > __gnu_cxx::__numeric_traits<int>::__max)
68544 {
68545 this->pbump(__gnu_cxx::__numeric_traits<int>::__max);
68546 __off -= __gnu_cxx::__numeric_traits<int>::__max;
68547 }
68548 this->pbump(__off);
68549 }
68550
68551
68552
68553
68554 extern template class basic_stringbuf<char>;
68555 extern template class basic_istringstream<char>;
68556 extern template class basic_ostringstream<char>;
68557 extern template class basic_stringstream<char>;
68558
68559
68560 extern template class basic_stringbuf<wchar_t>;
68561 extern template class basic_istringstream<wchar_t>;
68562 extern template class basic_ostringstream<wchar_t>;
68563 extern template class basic_stringstream<wchar_t>;
68564
68565
68566
68567
68568 }
68569 # 581 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/sstream" 2 3
68570 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 2 3
68571
68572 namespace std __attribute__ ((__visibility__ ("default")))
68573 {
68574
68575 # 62 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
68576 template<typename _Tp> class complex;
68577 template<> class complex<float>;
68578 template<> class complex<double>;
68579 template<> class complex<long double>;
68580
68581
68582 template<typename _Tp> _Tp abs(const complex<_Tp>&);
68583
68584 template<typename _Tp> _Tp arg(const complex<_Tp>&);
68585
68586 template<typename _Tp> _Tp norm(const complex<_Tp>&);
68587
68588
68589 template<typename _Tp> complex<_Tp> conj(const complex<_Tp>&);
68590
68591 template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp& = 0);
68592
68593
68594
68595 template<typename _Tp> complex<_Tp> cos(const complex<_Tp>&);
68596
68597 template<typename _Tp> complex<_Tp> cosh(const complex<_Tp>&);
68598
68599 template<typename _Tp> complex<_Tp> exp(const complex<_Tp>&);
68600
68601 template<typename _Tp> complex<_Tp> log(const complex<_Tp>&);
68602
68603 template<typename _Tp> complex<_Tp> log10(const complex<_Tp>&);
68604
68605
68606
68607 template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, int);
68608
68609
68610 template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, const _Tp&);
68611
68612 template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&,
68613 const complex<_Tp>&);
68614
68615 template<typename _Tp> complex<_Tp> pow(const _Tp&, const complex<_Tp>&);
68616
68617 template<typename _Tp> complex<_Tp> sin(const complex<_Tp>&);
68618
68619 template<typename _Tp> complex<_Tp> sinh(const complex<_Tp>&);
68620
68621 template<typename _Tp> complex<_Tp> sqrt(const complex<_Tp>&);
68622
68623 template<typename _Tp> complex<_Tp> tan(const complex<_Tp>&);
68624
68625 template<typename _Tp> complex<_Tp> tanh(const complex<_Tp>&);
68626 # 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
68627 template<typename _Tp>
68628 struct complex
68629 {
68630
68631 typedef _Tp value_type;
68632
68633
68634
68635 complex(const _Tp& __r = _Tp(), const _Tp& __i = _Tp())
68636 : _M_real(__r), _M_imag(__i) { }
68637
68638
68639
68640
68641 template<typename _Up>
68642 complex(const complex<_Up>& __z)
68643 : _M_real(__z.real()), _M_imag(__z.imag()) { }
68644 # 151 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
68645 _Tp&
68646 real() { return _M_real; }
68647
68648
68649 const _Tp&
68650 real() const { return _M_real; }
68651
68652
68653 _Tp&
68654 imag() { return _M_imag; }
68655
68656
68657 const _Tp&
68658 imag() const { return _M_imag; }
68659
68660
68661
68662
68663 void
68664 real(_Tp __val) { _M_real = __val; }
68665
68666 void
68667 imag(_Tp __val) { _M_imag = __val; }
68668
68669
68670 complex<_Tp>& operator=(const _Tp&);
68671
68672
68673
68674 complex<_Tp>&
68675 operator+=(const _Tp& __t)
68676 {
68677 _M_real += __t;
68678 return *this;
68679 }
68680
68681
68682
68683 complex<_Tp>&
68684 operator-=(const _Tp& __t)
68685 {
68686 _M_real -= __t;
68687 return *this;
68688 }
68689
68690
68691 complex<_Tp>& operator*=(const _Tp&);
68692
68693 complex<_Tp>& operator/=(const _Tp&);
68694
68695
68696
68697
68698
68699 template<typename _Up>
68700 complex<_Tp>& operator=(const complex<_Up>&);
68701
68702 template<typename _Up>
68703 complex<_Tp>& operator+=(const complex<_Up>&);
68704
68705 template<typename _Up>
68706 complex<_Tp>& operator-=(const complex<_Up>&);
68707
68708 template<typename _Up>
68709 complex<_Tp>& operator*=(const complex<_Up>&);
68710
68711 template<typename _Up>
68712 complex<_Tp>& operator/=(const complex<_Up>&);
68713
68714 const complex __rep() const
68715 { return *this; }
68716
68717 private:
68718 _Tp _M_real;
68719 _Tp _M_imag;
68720 };
68721
68722 template<typename _Tp>
68723 complex<_Tp>&
68724 complex<_Tp>::operator=(const _Tp& __t)
68725 {
68726 _M_real = __t;
68727 _M_imag = _Tp();
68728 return *this;
68729 }
68730
68731
68732 template<typename _Tp>
68733 complex<_Tp>&
68734 complex<_Tp>::operator*=(const _Tp& __t)
68735 {
68736 _M_real *= __t;
68737 _M_imag *= __t;
68738 return *this;
68739 }
68740
68741
68742 template<typename _Tp>
68743 complex<_Tp>&
68744 complex<_Tp>::operator/=(const _Tp& __t)
68745 {
68746 _M_real /= __t;
68747 _M_imag /= __t;
68748 return *this;
68749 }
68750
68751 template<typename _Tp>
68752 template<typename _Up>
68753 complex<_Tp>&
68754 complex<_Tp>::operator=(const complex<_Up>& __z)
68755 {
68756 _M_real = __z.real();
68757 _M_imag = __z.imag();
68758 return *this;
68759 }
68760
68761
68762 template<typename _Tp>
68763 template<typename _Up>
68764 complex<_Tp>&
68765 complex<_Tp>::operator+=(const complex<_Up>& __z)
68766 {
68767 _M_real += __z.real();
68768 _M_imag += __z.imag();
68769 return *this;
68770 }
68771
68772
68773 template<typename _Tp>
68774 template<typename _Up>
68775 complex<_Tp>&
68776 complex<_Tp>::operator-=(const complex<_Up>& __z)
68777 {
68778 _M_real -= __z.real();
68779 _M_imag -= __z.imag();
68780 return *this;
68781 }
68782
68783
68784
68785 template<typename _Tp>
68786 template<typename _Up>
68787 complex<_Tp>&
68788 complex<_Tp>::operator*=(const complex<_Up>& __z)
68789 {
68790 const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag();
68791 _M_imag = _M_real * __z.imag() + _M_imag * __z.real();
68792 _M_real = __r;
68793 return *this;
68794 }
68795
68796
68797
68798 template<typename _Tp>
68799 template<typename _Up>
68800 complex<_Tp>&
68801 complex<_Tp>::operator/=(const complex<_Up>& __z)
68802 {
68803 const _Tp __r = _M_real * __z.real() + _M_imag * __z.imag();
68804 const _Tp __n = std::norm(__z);
68805 _M_imag = (_M_imag * __z.real() - _M_real * __z.imag()) / __n;
68806 _M_real = __r / __n;
68807 return *this;
68808 }
68809
68810
68811
68812
68813 template<typename _Tp>
68814 inline complex<_Tp>
68815 operator+(const complex<_Tp>& __x, const complex<_Tp>& __y)
68816 {
68817 complex<_Tp> __r = __x;
68818 __r += __y;
68819 return __r;
68820 }
68821
68822 template<typename _Tp>
68823 inline complex<_Tp>
68824 operator+(const complex<_Tp>& __x, const _Tp& __y)
68825 {
68826 complex<_Tp> __r = __x;
68827 __r += __y;
68828 return __r;
68829 }
68830
68831 template<typename _Tp>
68832 inline complex<_Tp>
68833 operator+(const _Tp& __x, const complex<_Tp>& __y)
68834 {
68835 complex<_Tp> __r = __y;
68836 __r += __x;
68837 return __r;
68838 }
68839
68840
68841
68842
68843 template<typename _Tp>
68844 inline complex<_Tp>
68845 operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
68846 {
68847 complex<_Tp> __r = __x;
68848 __r -= __y;
68849 return __r;
68850 }
68851
68852 template<typename _Tp>
68853 inline complex<_Tp>
68854 operator-(const complex<_Tp>& __x, const _Tp& __y)
68855 {
68856 complex<_Tp> __r = __x;
68857 __r -= __y;
68858 return __r;
68859 }
68860
68861 template<typename _Tp>
68862 inline complex<_Tp>
68863 operator-(const _Tp& __x, const complex<_Tp>& __y)
68864 {
68865 complex<_Tp> __r(__x, -__y.imag());
68866 __r -= __y.real();
68867 return __r;
68868 }
68869
68870
68871
68872
68873 template<typename _Tp>
68874 inline complex<_Tp>
68875 operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
68876 {
68877 complex<_Tp> __r = __x;
68878 __r *= __y;
68879 return __r;
68880 }
68881
68882 template<typename _Tp>
68883 inline complex<_Tp>
68884 operator*(const complex<_Tp>& __x, const _Tp& __y)
68885 {
68886 complex<_Tp> __r = __x;
68887 __r *= __y;
68888 return __r;
68889 }
68890
68891 template<typename _Tp>
68892 inline complex<_Tp>
68893 operator*(const _Tp& __x, const complex<_Tp>& __y)
68894 {
68895 complex<_Tp> __r = __y;
68896 __r *= __x;
68897 return __r;
68898 }
68899
68900
68901
68902
68903 template<typename _Tp>
68904 inline complex<_Tp>
68905 operator/(const complex<_Tp>& __x, const complex<_Tp>& __y)
68906 {
68907 complex<_Tp> __r = __x;
68908 __r /= __y;
68909 return __r;
68910 }
68911
68912 template<typename _Tp>
68913 inline complex<_Tp>
68914 operator/(const complex<_Tp>& __x, const _Tp& __y)
68915 {
68916 complex<_Tp> __r = __x;
68917 __r /= __y;
68918 return __r;
68919 }
68920
68921 template<typename _Tp>
68922 inline complex<_Tp>
68923 operator/(const _Tp& __x, const complex<_Tp>& __y)
68924 {
68925 complex<_Tp> __r = __x;
68926 __r /= __y;
68927 return __r;
68928 }
68929
68930
68931
68932 template<typename _Tp>
68933 inline complex<_Tp>
68934 operator+(const complex<_Tp>& __x)
68935 { return __x; }
68936
68937
68938 template<typename _Tp>
68939 inline complex<_Tp>
68940 operator-(const complex<_Tp>& __x)
68941 { return complex<_Tp>(-__x.real(), -__x.imag()); }
68942
68943
68944
68945 template<typename _Tp>
68946 inline bool
68947 operator==(const complex<_Tp>& __x, const complex<_Tp>& __y)
68948 { return __x.real() == __y.real() && __x.imag() == __y.imag(); }
68949
68950 template<typename _Tp>
68951 inline bool
68952 operator==(const complex<_Tp>& __x, const _Tp& __y)
68953 { return __x.real() == __y && __x.imag() == _Tp(); }
68954
68955 template<typename _Tp>
68956 inline bool
68957 operator==(const _Tp& __x, const complex<_Tp>& __y)
68958 { return __x == __y.real() && _Tp() == __y.imag(); }
68959
68960
68961
68962
68963 template<typename _Tp>
68964 inline bool
68965 operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y)
68966 { return __x.real() != __y.real() || __x.imag() != __y.imag(); }
68967
68968 template<typename _Tp>
68969 inline bool
68970 operator!=(const complex<_Tp>& __x, const _Tp& __y)
68971 { return __x.real() != __y || __x.imag() != _Tp(); }
68972
68973 template<typename _Tp>
68974 inline bool
68975 operator!=(const _Tp& __x, const complex<_Tp>& __y)
68976 { return __x != __y.real() || _Tp() != __y.imag(); }
68977
68978
68979
68980 template<typename _Tp, typename _CharT, class _Traits>
68981 basic_istream<_CharT, _Traits>&
68982 operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x)
68983 {
68984 _Tp __re_x, __im_x;
68985 _CharT __ch;
68986 __is >> __ch;
68987 if (__ch == '(')
68988 {
68989 __is >> __re_x >> __ch;
68990 if (__ch == ',')
68991 {
68992 __is >> __im_x >> __ch;
68993 if (__ch == ')')
68994 __x = complex<_Tp>(__re_x, __im_x);
68995 else
68996 __is.setstate(ios_base::failbit);
68997 }
68998 else if (__ch == ')')
68999 __x = __re_x;
69000 else
69001 __is.setstate(ios_base::failbit);
69002 }
69003 else
69004 {
69005 __is.putback(__ch);
69006 __is >> __re_x;
69007 __x = __re_x;
69008 }
69009 return __is;
69010 }
69011
69012
69013 template<typename _Tp, typename _CharT, class _Traits>
69014 basic_ostream<_CharT, _Traits>&
69015 operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
69016 {
69017 basic_ostringstream<_CharT, _Traits> __s;
69018 __s.flags(__os.flags());
69019 __s.imbue(__os.getloc());
69020 __s.precision(__os.precision());
69021 __s << '(' << __x.real() << ',' << __x.imag() << ')';
69022 return __os << __s.str();
69023 }
69024 # 543 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69025 template<typename _Tp>
69026 inline _Tp&
69027 real(complex<_Tp>& __z)
69028 { return __z.real(); }
69029
69030 template<typename _Tp>
69031 inline const _Tp&
69032 real(const complex<_Tp>& __z)
69033 { return __z.real(); }
69034
69035 template<typename _Tp>
69036 inline _Tp&
69037 imag(complex<_Tp>& __z)
69038 { return __z.imag(); }
69039
69040 template<typename _Tp>
69041 inline const _Tp&
69042 imag(const complex<_Tp>& __z)
69043 { return __z.imag(); }
69044
69045
69046
69047 template<typename _Tp>
69048 inline _Tp
69049 __complex_abs(const complex<_Tp>& __z)
69050 {
69051 _Tp __x = __z.real();
69052 _Tp __y = __z.imag();
69053 const _Tp __s = std::max(abs(__x), abs(__y));
69054 if (__s == _Tp())
69055 return __s;
69056 __x /= __s;
69057 __y /= __s;
69058 return __s * sqrt(__x * __x + __y * __y);
69059 }
69060
69061
69062 inline float
69063 __complex_abs(__complex__ float __z) { return __builtin_cabsf(__z); }
69064
69065 inline double
69066 __complex_abs(__complex__ double __z) { return __builtin_cabs(__z); }
69067
69068 inline long double
69069 __complex_abs(const __complex__ long double& __z)
69070 { return __builtin_cabsl(__z); }
69071
69072 template<typename _Tp>
69073 inline _Tp
69074 abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); }
69075 # 601 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69076 template<typename _Tp>
69077 inline _Tp
69078 __complex_arg(const complex<_Tp>& __z)
69079 { return atan2(__z.imag(), __z.real()); }
69080
69081
69082 inline float
69083 __complex_arg(__complex__ float __z) { return __builtin_cargf(__z); }
69084
69085 inline double
69086 __complex_arg(__complex__ double __z) { return __builtin_carg(__z); }
69087
69088 inline long double
69089 __complex_arg(const __complex__ long double& __z)
69090 { return __builtin_cargl(__z); }
69091
69092 template<typename _Tp>
69093 inline _Tp
69094 arg(const complex<_Tp>& __z) { return __complex_arg(__z.__rep()); }
69095 # 631 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69096 template<bool>
69097 struct _Norm_helper
69098 {
69099 template<typename _Tp>
69100 static inline _Tp _S_do_it(const complex<_Tp>& __z)
69101 {
69102 const _Tp __x = __z.real();
69103 const _Tp __y = __z.imag();
69104 return __x * __x + __y * __y;
69105 }
69106 };
69107
69108 template<>
69109 struct _Norm_helper<true>
69110 {
69111 template<typename _Tp>
69112 static inline _Tp _S_do_it(const complex<_Tp>& __z)
69113 {
69114 _Tp __res = std::abs(__z);
69115 return __res * __res;
69116 }
69117 };
69118
69119 template<typename _Tp>
69120 inline _Tp
69121 norm(const complex<_Tp>& __z)
69122 {
69123 return _Norm_helper<__is_floating<_Tp>::__value
69124 && !0>::_S_do_it(__z);
69125 }
69126
69127 template<typename _Tp>
69128 inline complex<_Tp>
69129 polar(const _Tp& __rho, const _Tp& __theta)
69130 { return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); }
69131
69132 template<typename _Tp>
69133 inline complex<_Tp>
69134 conj(const complex<_Tp>& __z)
69135 { return complex<_Tp>(__z.real(), -__z.imag()); }
69136
69137
69138
69139
69140 template<typename _Tp>
69141 inline complex<_Tp>
69142 __complex_cos(const complex<_Tp>& __z)
69143 {
69144 const _Tp __x = __z.real();
69145 const _Tp __y = __z.imag();
69146 return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y));
69147 }
69148
69149
69150 inline __complex__ float
69151 __complex_cos(__complex__ float __z) { return __builtin_ccosf(__z); }
69152
69153 inline __complex__ double
69154 __complex_cos(__complex__ double __z) { return __builtin_ccos(__z); }
69155
69156 inline __complex__ long double
69157 __complex_cos(const __complex__ long double& __z)
69158 { return __builtin_ccosl(__z); }
69159
69160 template<typename _Tp>
69161 inline complex<_Tp>
69162 cos(const complex<_Tp>& __z) { return __complex_cos(__z.__rep()); }
69163
69164
69165
69166
69167
69168
69169
69170 template<typename _Tp>
69171 inline complex<_Tp>
69172 __complex_cosh(const complex<_Tp>& __z)
69173 {
69174 const _Tp __x = __z.real();
69175 const _Tp __y = __z.imag();
69176 return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y));
69177 }
69178
69179
69180 inline __complex__ float
69181 __complex_cosh(__complex__ float __z) { return __builtin_ccoshf(__z); }
69182
69183 inline __complex__ double
69184 __complex_cosh(__complex__ double __z) { return __builtin_ccosh(__z); }
69185
69186 inline __complex__ long double
69187 __complex_cosh(const __complex__ long double& __z)
69188 { return __builtin_ccoshl(__z); }
69189
69190 template<typename _Tp>
69191 inline complex<_Tp>
69192 cosh(const complex<_Tp>& __z) { return __complex_cosh(__z.__rep()); }
69193
69194
69195
69196
69197
69198
69199
69200 template<typename _Tp>
69201 inline complex<_Tp>
69202 __complex_exp(const complex<_Tp>& __z)
69203 { return std::polar(exp(__z.real()), __z.imag()); }
69204
69205
69206 inline __complex__ float
69207 __complex_exp(__complex__ float __z) { return __builtin_cexpf(__z); }
69208
69209 inline __complex__ double
69210 __complex_exp(__complex__ double __z) { return __builtin_cexp(__z); }
69211
69212 inline __complex__ long double
69213 __complex_exp(const __complex__ long double& __z)
69214 { return __builtin_cexpl(__z); }
69215
69216 template<typename _Tp>
69217 inline complex<_Tp>
69218 exp(const complex<_Tp>& __z) { return __complex_exp(__z.__rep()); }
69219 # 762 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69220 template<typename _Tp>
69221 inline complex<_Tp>
69222 __complex_log(const complex<_Tp>& __z)
69223 { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); }
69224
69225
69226 inline __complex__ float
69227 __complex_log(__complex__ float __z) { return __builtin_clogf(__z); }
69228
69229 inline __complex__ double
69230 __complex_log(__complex__ double __z) { return __builtin_clog(__z); }
69231
69232 inline __complex__ long double
69233 __complex_log(const __complex__ long double& __z)
69234 { return __builtin_clogl(__z); }
69235
69236 template<typename _Tp>
69237 inline complex<_Tp>
69238 log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); }
69239
69240
69241
69242
69243
69244
69245 template<typename _Tp>
69246 inline complex<_Tp>
69247 log10(const complex<_Tp>& __z)
69248 { return std::log(__z) / log(_Tp(10.0)); }
69249
69250
69251 template<typename _Tp>
69252 inline complex<_Tp>
69253 __complex_sin(const complex<_Tp>& __z)
69254 {
69255 const _Tp __x = __z.real();
69256 const _Tp __y = __z.imag();
69257 return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y));
69258 }
69259
69260
69261 inline __complex__ float
69262 __complex_sin(__complex__ float __z) { return __builtin_csinf(__z); }
69263
69264 inline __complex__ double
69265 __complex_sin(__complex__ double __z) { return __builtin_csin(__z); }
69266
69267 inline __complex__ long double
69268 __complex_sin(const __complex__ long double& __z)
69269 { return __builtin_csinl(__z); }
69270
69271 template<typename _Tp>
69272 inline complex<_Tp>
69273 sin(const complex<_Tp>& __z) { return __complex_sin(__z.__rep()); }
69274
69275
69276
69277
69278
69279
69280
69281 template<typename _Tp>
69282 inline complex<_Tp>
69283 __complex_sinh(const complex<_Tp>& __z)
69284 {
69285 const _Tp __x = __z.real();
69286 const _Tp __y = __z.imag();
69287 return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y));
69288 }
69289
69290
69291 inline __complex__ float
69292 __complex_sinh(__complex__ float __z) { return __builtin_csinhf(__z); }
69293
69294 inline __complex__ double
69295 __complex_sinh(__complex__ double __z) { return __builtin_csinh(__z); }
69296
69297 inline __complex__ long double
69298 __complex_sinh(const __complex__ long double& __z)
69299 { return __builtin_csinhl(__z); }
69300
69301 template<typename _Tp>
69302 inline complex<_Tp>
69303 sinh(const complex<_Tp>& __z) { return __complex_sinh(__z.__rep()); }
69304 # 854 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69305 template<typename _Tp>
69306 complex<_Tp>
69307 __complex_sqrt(const complex<_Tp>& __z)
69308 {
69309 _Tp __x = __z.real();
69310 _Tp __y = __z.imag();
69311
69312 if (__x == _Tp())
69313 {
69314 _Tp __t = sqrt(abs(__y) / 2);
69315 return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
69316 }
69317 else
69318 {
69319 _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
69320 _Tp __u = __t / 2;
69321 return __x > _Tp()
69322 ? complex<_Tp>(__u, __y / __t)
69323 : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
69324 }
69325 }
69326
69327
69328 inline __complex__ float
69329 __complex_sqrt(__complex__ float __z) { return __builtin_csqrtf(__z); }
69330
69331 inline __complex__ double
69332 __complex_sqrt(__complex__ double __z) { return __builtin_csqrt(__z); }
69333
69334 inline __complex__ long double
69335 __complex_sqrt(const __complex__ long double& __z)
69336 { return __builtin_csqrtl(__z); }
69337
69338 template<typename _Tp>
69339 inline complex<_Tp>
69340 sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z.__rep()); }
69341 # 898 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69342 template<typename _Tp>
69343 inline complex<_Tp>
69344 __complex_tan(const complex<_Tp>& __z)
69345 { return std::sin(__z) / std::cos(__z); }
69346
69347
69348 inline __complex__ float
69349 __complex_tan(__complex__ float __z) { return __builtin_ctanf(__z); }
69350
69351 inline __complex__ double
69352 __complex_tan(__complex__ double __z) { return __builtin_ctan(__z); }
69353
69354 inline __complex__ long double
69355 __complex_tan(const __complex__ long double& __z)
69356 { return __builtin_ctanl(__z); }
69357
69358 template<typename _Tp>
69359 inline complex<_Tp>
69360 tan(const complex<_Tp>& __z) { return __complex_tan(__z.__rep()); }
69361 # 926 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69362 template<typename _Tp>
69363 inline complex<_Tp>
69364 __complex_tanh(const complex<_Tp>& __z)
69365 { return std::sinh(__z) / std::cosh(__z); }
69366
69367
69368 inline __complex__ float
69369 __complex_tanh(__complex__ float __z) { return __builtin_ctanhf(__z); }
69370
69371 inline __complex__ double
69372 __complex_tanh(__complex__ double __z) { return __builtin_ctanh(__z); }
69373
69374 inline __complex__ long double
69375 __complex_tanh(const __complex__ long double& __z)
69376 { return __builtin_ctanhl(__z); }
69377
69378 template<typename _Tp>
69379 inline complex<_Tp>
69380 tanh(const complex<_Tp>& __z) { return __complex_tanh(__z.__rep()); }
69381 # 956 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69382 template<typename _Tp>
69383 complex<_Tp>
69384 __complex_pow_unsigned(complex<_Tp> __x, unsigned __n)
69385 {
69386 complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1);
69387
69388 while (__n >>= 1)
69389 {
69390 __x *= __x;
69391 if (__n % 2)
69392 __y *= __x;
69393 }
69394
69395 return __y;
69396 }
69397
69398
69399
69400 template<typename _Tp>
69401 inline complex<_Tp>
69402 pow(const complex<_Tp>& __z, int __n)
69403 {
69404 return __n < 0
69405 ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -__n)
69406 : std::__complex_pow_unsigned(__z, __n);
69407 }
69408
69409
69410 template<typename _Tp>
69411 complex<_Tp>
69412 pow(const complex<_Tp>& __x, const _Tp& __y)
69413 {
69414
69415
69416
69417
69418 if (__x.imag() == _Tp() && __x.real() > _Tp())
69419 return pow(__x.real(), __y);
69420
69421 complex<_Tp> __t = std::log(__x);
69422 return std::polar(exp(__y * __t.real()), __y * __t.imag());
69423 }
69424
69425 template<typename _Tp>
69426 inline complex<_Tp>
69427 __complex_pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
69428 { return __x == _Tp() ? _Tp() : std::exp(__y * std::log(__x)); }
69429
69430
69431 inline __complex__ float
69432 __complex_pow(__complex__ float __x, __complex__ float __y)
69433 { return __builtin_cpowf(__x, __y); }
69434
69435 inline __complex__ double
69436 __complex_pow(__complex__ double __x, __complex__ double __y)
69437 { return __builtin_cpow(__x, __y); }
69438
69439 inline __complex__ long double
69440 __complex_pow(const __complex__ long double& __x,
69441 const __complex__ long double& __y)
69442 { return __builtin_cpowl(__x, __y); }
69443
69444 template<typename _Tp>
69445 inline complex<_Tp>
69446 pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
69447 { return __complex_pow(__x.__rep(), __y.__rep()); }
69448
69449
69450
69451
69452
69453
69454
69455 template<typename _Tp>
69456 inline complex<_Tp>
69457 pow(const _Tp& __x, const complex<_Tp>& __y)
69458 {
69459 return __x > _Tp() ? std::polar(pow(__x, __y.real()),
69460 __y.imag() * log(__x))
69461 : std::pow(complex<_Tp>(__x), __y);
69462 }
69463
69464
69465
69466 template<>
69467 struct complex<float>
69468 {
69469 typedef float value_type;
69470 typedef __complex__ float _ComplexT;
69471
69472 complex(_ComplexT __z) : _M_value(__z) { }
69473
69474 complex(float __r = 0.0f, float __i = 0.0f)
69475
69476
69477
69478
69479
69480
69481 {
69482 __real__ _M_value = __r;
69483 __imag__ _M_value = __i;
69484 }
69485
69486
69487 explicit complex(const complex<double>&);
69488 explicit complex(const complex<long double>&);
69489 # 1073 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69490 float&
69491 real() { return __real__ _M_value; }
69492
69493 const float&
69494 real() const { return __real__ _M_value; }
69495
69496 float&
69497 imag() { return __imag__ _M_value; }
69498
69499 const float&
69500 imag() const { return __imag__ _M_value; }
69501
69502
69503
69504
69505 void
69506 real(float __val) { __real__ _M_value = __val; }
69507
69508 void
69509 imag(float __val) { __imag__ _M_value = __val; }
69510
69511 complex&
69512 operator=(float __f)
69513 {
69514 _M_value = __f;
69515 return *this;
69516 }
69517
69518 complex&
69519 operator+=(float __f)
69520 {
69521 _M_value += __f;
69522 return *this;
69523 }
69524
69525 complex&
69526 operator-=(float __f)
69527 {
69528 _M_value -= __f;
69529 return *this;
69530 }
69531
69532 complex&
69533 operator*=(float __f)
69534 {
69535 _M_value *= __f;
69536 return *this;
69537 }
69538
69539 complex&
69540 operator/=(float __f)
69541 {
69542 _M_value /= __f;
69543 return *this;
69544 }
69545
69546
69547
69548
69549
69550 template<typename _Tp>
69551 complex&
69552 operator=(const complex<_Tp>& __z)
69553 {
69554 __real__ _M_value = __z.real();
69555 __imag__ _M_value = __z.imag();
69556 return *this;
69557 }
69558
69559 template<typename _Tp>
69560 complex&
69561 operator+=(const complex<_Tp>& __z)
69562 {
69563 __real__ _M_value += __z.real();
69564 __imag__ _M_value += __z.imag();
69565 return *this;
69566 }
69567
69568 template<class _Tp>
69569 complex&
69570 operator-=(const complex<_Tp>& __z)
69571 {
69572 __real__ _M_value -= __z.real();
69573 __imag__ _M_value -= __z.imag();
69574 return *this;
69575 }
69576
69577 template<class _Tp>
69578 complex&
69579 operator*=(const complex<_Tp>& __z)
69580 {
69581 _ComplexT __t;
69582 __real__ __t = __z.real();
69583 __imag__ __t = __z.imag();
69584 _M_value *= __t;
69585 return *this;
69586 }
69587
69588 template<class _Tp>
69589 complex&
69590 operator/=(const complex<_Tp>& __z)
69591 {
69592 _ComplexT __t;
69593 __real__ __t = __z.real();
69594 __imag__ __t = __z.imag();
69595 _M_value /= __t;
69596 return *this;
69597 }
69598
69599 const _ComplexT __rep() const { return _M_value; }
69600
69601 private:
69602 _ComplexT _M_value;
69603 };
69604
69605
69606
69607 template<>
69608 struct complex<double>
69609 {
69610 typedef double value_type;
69611 typedef __complex__ double _ComplexT;
69612
69613 complex(_ComplexT __z) : _M_value(__z) { }
69614
69615 complex(double __r = 0.0, double __i = 0.0)
69616
69617
69618
69619
69620
69621
69622 {
69623 __real__ _M_value = __r;
69624 __imag__ _M_value = __i;
69625 }
69626
69627
69628 complex(const complex<float>& __z)
69629 : _M_value(__z.__rep()) { }
69630
69631 explicit complex(const complex<long double>&);
69632 # 1225 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69633 double&
69634 real() { return __real__ _M_value; }
69635
69636 const double&
69637 real() const { return __real__ _M_value; }
69638
69639 double&
69640 imag() { return __imag__ _M_value; }
69641
69642 const double&
69643 imag() const { return __imag__ _M_value; }
69644
69645
69646
69647
69648 void
69649 real(double __val) { __real__ _M_value = __val; }
69650
69651 void
69652 imag(double __val) { __imag__ _M_value = __val; }
69653
69654 complex&
69655 operator=(double __d)
69656 {
69657 _M_value = __d;
69658 return *this;
69659 }
69660
69661 complex&
69662 operator+=(double __d)
69663 {
69664 _M_value += __d;
69665 return *this;
69666 }
69667
69668 complex&
69669 operator-=(double __d)
69670 {
69671 _M_value -= __d;
69672 return *this;
69673 }
69674
69675 complex&
69676 operator*=(double __d)
69677 {
69678 _M_value *= __d;
69679 return *this;
69680 }
69681
69682 complex&
69683 operator/=(double __d)
69684 {
69685 _M_value /= __d;
69686 return *this;
69687 }
69688
69689
69690
69691
69692 template<typename _Tp>
69693 complex&
69694 operator=(const complex<_Tp>& __z)
69695 {
69696 __real__ _M_value = __z.real();
69697 __imag__ _M_value = __z.imag();
69698 return *this;
69699 }
69700
69701 template<typename _Tp>
69702 complex&
69703 operator+=(const complex<_Tp>& __z)
69704 {
69705 __real__ _M_value += __z.real();
69706 __imag__ _M_value += __z.imag();
69707 return *this;
69708 }
69709
69710 template<typename _Tp>
69711 complex&
69712 operator-=(const complex<_Tp>& __z)
69713 {
69714 __real__ _M_value -= __z.real();
69715 __imag__ _M_value -= __z.imag();
69716 return *this;
69717 }
69718
69719 template<typename _Tp>
69720 complex&
69721 operator*=(const complex<_Tp>& __z)
69722 {
69723 _ComplexT __t;
69724 __real__ __t = __z.real();
69725 __imag__ __t = __z.imag();
69726 _M_value *= __t;
69727 return *this;
69728 }
69729
69730 template<typename _Tp>
69731 complex&
69732 operator/=(const complex<_Tp>& __z)
69733 {
69734 _ComplexT __t;
69735 __real__ __t = __z.real();
69736 __imag__ __t = __z.imag();
69737 _M_value /= __t;
69738 return *this;
69739 }
69740
69741 const _ComplexT __rep() const { return _M_value; }
69742
69743 private:
69744 _ComplexT _M_value;
69745 };
69746
69747
69748
69749 template<>
69750 struct complex<long double>
69751 {
69752 typedef long double value_type;
69753 typedef __complex__ long double _ComplexT;
69754
69755 complex(_ComplexT __z) : _M_value(__z) { }
69756
69757 complex(long double __r = 0.0L,
69758 long double __i = 0.0L)
69759
69760
69761
69762
69763
69764
69765 {
69766 __real__ _M_value = __r;
69767 __imag__ _M_value = __i;
69768 }
69769
69770
69771 complex(const complex<float>& __z)
69772 : _M_value(__z.__rep()) { }
69773
69774 complex(const complex<double>& __z)
69775 : _M_value(__z.__rep()) { }
69776 # 1378 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/complex" 3
69777 long double&
69778 real() { return __real__ _M_value; }
69779
69780 const long double&
69781 real() const { return __real__ _M_value; }
69782
69783 long double&
69784 imag() { return __imag__ _M_value; }
69785
69786 const long double&
69787 imag() const { return __imag__ _M_value; }
69788
69789
69790
69791
69792 void
69793 real(long double __val) { __real__ _M_value = __val; }
69794
69795 void
69796 imag(long double __val) { __imag__ _M_value = __val; }
69797
69798 complex&
69799 operator=(long double __r)
69800 {
69801 _M_value = __r;
69802 return *this;
69803 }
69804
69805 complex&
69806 operator+=(long double __r)
69807 {
69808 _M_value += __r;
69809 return *this;
69810 }
69811
69812 complex&
69813 operator-=(long double __r)
69814 {
69815 _M_value -= __r;
69816 return *this;
69817 }
69818
69819 complex&
69820 operator*=(long double __r)
69821 {
69822 _M_value *= __r;
69823 return *this;
69824 }
69825
69826 complex&
69827 operator/=(long double __r)
69828 {
69829 _M_value /= __r;
69830 return *this;
69831 }
69832
69833
69834
69835
69836 template<typename _Tp>
69837 complex&
69838 operator=(const complex<_Tp>& __z)
69839 {
69840 __real__ _M_value = __z.real();
69841 __imag__ _M_value = __z.imag();
69842 return *this;
69843 }
69844
69845 template<typename _Tp>
69846 complex&
69847 operator+=(const complex<_Tp>& __z)
69848 {
69849 __real__ _M_value += __z.real();
69850 __imag__ _M_value += __z.imag();
69851 return *this;
69852 }
69853
69854 template<typename _Tp>
69855 complex&
69856 operator-=(const complex<_Tp>& __z)
69857 {
69858 __real__ _M_value -= __z.real();
69859 __imag__ _M_value -= __z.imag();
69860 return *this;
69861 }
69862
69863 template<typename _Tp>
69864 complex&
69865 operator*=(const complex<_Tp>& __z)
69866 {
69867 _ComplexT __t;
69868 __real__ __t = __z.real();
69869 __imag__ __t = __z.imag();
69870 _M_value *= __t;
69871 return *this;
69872 }
69873
69874 template<typename _Tp>
69875 complex&
69876 operator/=(const complex<_Tp>& __z)
69877 {
69878 _ComplexT __t;
69879 __real__ __t = __z.real();
69880 __imag__ __t = __z.imag();
69881 _M_value /= __t;
69882 return *this;
69883 }
69884
69885 const _ComplexT __rep() const { return _M_value; }
69886
69887 private:
69888 _ComplexT _M_value;
69889 };
69890
69891
69892
69893 inline
69894 complex<float>::complex(const complex<double>& __z)
69895 : _M_value(__z.__rep()) { }
69896
69897 inline
69898 complex<float>::complex(const complex<long double>& __z)
69899 : _M_value(__z.__rep()) { }
69900
69901 inline
69902 complex<double>::complex(const complex<long double>& __z)
69903 : _M_value(__z.__rep()) { }
69904
69905
69906
69907
69908
69909 extern template istream& operator>>(istream&, complex<float>&);
69910 extern template ostream& operator<<(ostream&, const complex<float>&);
69911 extern template istream& operator>>(istream&, complex<double>&);
69912 extern template ostream& operator<<(ostream&, const complex<double>&);
69913 extern template istream& operator>>(istream&, complex<long double>&);
69914 extern template ostream& operator<<(ostream&, const complex<long double>&);
69915
69916
69917 extern template wistream& operator>>(wistream&, complex<float>&);
69918 extern template wostream& operator<<(wostream&, const complex<float>&);
69919 extern template wistream& operator>>(wistream&, complex<double>&);
69920 extern template wostream& operator<<(wostream&, const complex<double>&);
69921 extern template wistream& operator>>(wistream&, complex<long double>&);
69922 extern template wostream& operator<<(wostream&, const complex<long double>&);
69923
69924
69925
69926
69927
69928
69929 }
69930
69931 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
69932 {
69933
69934
69935
69936 template<typename _Tp, typename _Up>
69937 struct __promote_2<std::complex<_Tp>, _Up>
69938 {
69939 public:
69940 typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
69941 };
69942
69943 template<typename _Tp, typename _Up>
69944 struct __promote_2<_Tp, std::complex<_Up> >
69945 {
69946 public:
69947 typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
69948 };
69949
69950 template<typename _Tp, typename _Up>
69951 struct __promote_2<std::complex<_Tp>, std::complex<_Up> >
69952 {
69953 public:
69954 typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
69955 };
69956
69957
69958 }
69959 # 97 "../boost/detail/container_fwd.hpp" 2
69960 # 18 "../boost/functional/hash/extensions.hpp" 2
69961 # 31 "../boost/functional/hash/extensions.hpp"
69962 namespace boost
69963 {
69964 template <class A, class B>
69965 std::size_t hash_value(std::pair<A, B> const&);
69966 template <class T, class A>
69967 std::size_t hash_value(std::vector<T, A> const&);
69968 template <class T, class A>
69969 std::size_t hash_value(std::list<T, A> const& v);
69970 template <class T, class A>
69971 std::size_t hash_value(std::deque<T, A> const& v);
69972 template <class K, class C, class A>
69973 std::size_t hash_value(std::set<K, C, A> const& v);
69974 template <class K, class C, class A>
69975 std::size_t hash_value(std::multiset<K, C, A> const& v);
69976 template <class K, class T, class C, class A>
69977 std::size_t hash_value(std::map<K, T, C, A> const& v);
69978 template <class K, class T, class C, class A>
69979 std::size_t hash_value(std::multimap<K, T, C, A> const& v);
69980
69981 template <class T>
69982 std::size_t hash_value(std::complex<T> const&);
69983
69984 template <class A, class B>
69985 std::size_t hash_value(std::pair<A, B> const& v)
69986 {
69987 std::size_t seed = 0;
69988 hash_combine(seed, v.first);
69989 hash_combine(seed, v.second);
69990 return seed;
69991 }
69992
69993 template <class T, class A>
69994 std::size_t hash_value(std::vector<T, A> const& v)
69995 {
69996 return hash_range(v.begin(), v.end());
69997 }
69998
69999 template <class T, class A>
70000 std::size_t hash_value(std::list<T, A> const& v)
70001 {
70002 return hash_range(v.begin(), v.end());
70003 }
70004
70005 template <class T, class A>
70006 std::size_t hash_value(std::deque<T, A> const& v)
70007 {
70008 return hash_range(v.begin(), v.end());
70009 }
70010
70011 template <class K, class C, class A>
70012 std::size_t hash_value(std::set<K, C, A> const& v)
70013 {
70014 return hash_range(v.begin(), v.end());
70015 }
70016
70017 template <class K, class C, class A>
70018 std::size_t hash_value(std::multiset<K, C, A> const& v)
70019 {
70020 return hash_range(v.begin(), v.end());
70021 }
70022
70023 template <class K, class T, class C, class A>
70024 std::size_t hash_value(std::map<K, T, C, A> const& v)
70025 {
70026 return hash_range(v.begin(), v.end());
70027 }
70028
70029 template <class K, class T, class C, class A>
70030 std::size_t hash_value(std::multimap<K, T, C, A> const& v)
70031 {
70032 return hash_range(v.begin(), v.end());
70033 }
70034
70035 template <class T>
70036 std::size_t hash_value(std::complex<T> const& v)
70037 {
70038 boost::hash<T> hasher;
70039 std::size_t seed = hasher(v.imag());
70040 seed ^= hasher(v.real()) + (seed<<6) + (seed>>2);
70041 return seed;
70042 }
70043 # 170 "../boost/functional/hash/extensions.hpp"
70044 template <class T> struct hash
70045 : std::unary_function<T, std::size_t>
70046 {
70047
70048 std::size_t operator()(T const& val) const
70049 {
70050 return hash_value(val);
70051 }
70052
70053
70054
70055
70056
70057
70058 };
70059 # 284 "../boost/functional/hash/extensions.hpp"
70060 }
70061 # 536 "../boost/functional/hash/hash.hpp" 2
70062 # 7 "../boost/functional/hash.hpp" 2
70063 # 22 "../boost/unordered/unordered_map.hpp" 2
70064 # 37 "../boost/unordered/unordered_map.hpp"
70065 namespace boost
70066 {
70067 namespace unordered
70068 {
70069 template <class K, class T, class H, class P, class A>
70070 class unordered_map
70071 {
70072
70073
70074
70075
70076 public:
70077
70078 typedef K key_type;
70079 typedef std::pair<const K, T> value_type;
70080 typedef T mapped_type;
70081 typedef H hasher;
70082 typedef P key_equal;
70083 typedef A allocator_type;
70084
70085 private:
70086
70087 typedef boost::unordered::detail::map<A, K, T, H, P> types;
70088 typedef typename types::allocator value_allocator;
70089 typedef typename types::traits allocator_traits;
70090 typedef typename types::table table;
70091
70092 public:
70093
70094 typedef typename allocator_traits::pointer pointer;
70095 typedef typename allocator_traits::const_pointer const_pointer;
70096
70097 typedef value_type& reference;
70098 typedef value_type const& const_reference;
70099
70100 typedef std::size_t size_type;
70101 typedef std::ptrdiff_t difference_type;
70102
70103 typedef typename table::cl_iterator const_local_iterator;
70104 typedef typename table::l_iterator local_iterator;
70105 typedef typename table::c_iterator const_iterator;
70106 typedef typename table::iterator iterator;
70107
70108 private:
70109
70110 table table_;
70111
70112 public:
70113
70114
70115
70116 explicit unordered_map(
70117 size_type = boost::unordered::detail::default_bucket_count,
70118 const hasher& = hasher(),
70119 const key_equal& = key_equal(),
70120 const allocator_type& = allocator_type());
70121
70122 explicit unordered_map(allocator_type const&);
70123
70124 template <class InputIt>
70125 unordered_map(InputIt, InputIt);
70126
70127 template <class InputIt>
70128 unordered_map(
70129 InputIt, InputIt,
70130 size_type,
70131 const hasher& = hasher(),
70132 const key_equal& = key_equal());
70133
70134 template <class InputIt>
70135 unordered_map(
70136 InputIt, InputIt,
70137 size_type,
70138 const hasher&,
70139 const key_equal&,
70140 const allocator_type&);
70141
70142
70143
70144 unordered_map(unordered_map const&);
70145
70146 unordered_map(unordered_map const&, allocator_type const&);
70147 # 147 "../boost/unordered/unordered_map.hpp"
70148 ~unordered_map();
70149 # 164 "../boost/unordered/unordered_map.hpp"
70150 unordered_map& operator=(unordered_map const& x)
70151 {
70152 table_.assign(x.table_);
70153 return *this;
70154 }
70155 # 183 "../boost/unordered/unordered_map.hpp"
70156 allocator_type get_allocator() const
70157 {
70158 return table_.node_alloc();
70159 }
70160
70161
70162
70163 bool empty() const
70164 {
70165 return table_.size_ == 0;
70166 }
70167
70168 size_type size() const
70169 {
70170 return table_.size_;
70171 }
70172
70173 size_type max_size() const;
70174
70175
70176
70177 iterator begin()
70178 {
70179 return iterator(table_.begin());
70180 }
70181
70182 const_iterator begin() const
70183 {
70184 return const_iterator(table_.begin());
70185 }
70186
70187 iterator end()
70188 {
70189 return iterator();
70190 }
70191
70192 const_iterator end() const
70193 {
70194 return const_iterator();
70195 }
70196
70197 const_iterator cbegin() const
70198 {
70199 return const_iterator(table_.begin());
70200 }
70201
70202 const_iterator cend() const
70203 {
70204 return const_iterator();
70205 }
70206 # 256 "../boost/unordered/unordered_map.hpp"
70207 std::pair<iterator, bool> emplace(
70208 boost::unordered::detail::empty_emplace
70209 = boost::unordered::detail::empty_emplace(),
70210 value_type v = value_type())
70211 {
70212 return this->emplace(boost::move(v));
70213 }
70214
70215 iterator emplace_hint(const_iterator hint,
70216 boost::unordered::detail::empty_emplace
70217 = boost::unordered::detail::empty_emplace(),
70218 value_type v = value_type()
70219 )
70220 {
70221 return this->emplace_hint(hint, boost::move(v));
70222 }
70223
70224
70225
70226 template <typename A0>
70227 std::pair<iterator, bool> emplace(const A0 & a0)
70228 {
70229 return table_.emplace(
70230 boost::unordered::detail::create_emplace_args(
70231 boost::forward<A0>(a0))
70232 );
70233 }
70234
70235 template <typename A0>
70236 iterator emplace_hint(const_iterator, const A0 & a0)
70237 {
70238 return table_.emplace(
70239 boost::unordered::detail::create_emplace_args(
70240 boost::forward<A0>(a0))
70241 ).first;
70242 }
70243
70244 template <typename A0, typename A1>
70245 std::pair<iterator, bool> emplace(
70246 const A0 & a0,
70247 const A1 & a1)
70248 {
70249 return table_.emplace(
70250 boost::unordered::detail::create_emplace_args(
70251 boost::forward<A0>(a0),
70252 boost::forward<A1>(a1))
70253 );
70254 }
70255
70256 template <typename A0, typename A1>
70257 iterator emplace_hint(const_iterator,
70258 const A0 & a0,
70259 const A1 & a1)
70260 {
70261 return table_.emplace(
70262 boost::unordered::detail::create_emplace_args(
70263 boost::forward<A0>(a0),
70264 boost::forward<A1>(a1))
70265 ).first;
70266 }
70267
70268 template <typename A0, typename A1, typename A2>
70269 std::pair<iterator, bool> emplace(
70270 const A0 & a0,
70271 const A1 & a1,
70272 const A2 & a2)
70273 {
70274 return table_.emplace(
70275 boost::unordered::detail::create_emplace_args(
70276 boost::forward<A0>(a0),
70277 boost::forward<A1>(a1),
70278 boost::forward<A2>(a2))
70279 );
70280 }
70281
70282 template <typename A0, typename A1, typename A2>
70283 iterator emplace_hint(const_iterator,
70284 const A0 & a0,
70285 const A1 & a1,
70286 const A2 & a2)
70287 {
70288 return table_.emplace(
70289 boost::unordered::detail::create_emplace_args(
70290 boost::forward<A0>(a0),
70291 boost::forward<A1>(a1),
70292 boost::forward<A2>(a2))
70293 ).first;
70294 }
70295 # 375 "../boost/unordered/unordered_map.hpp"
70296
70297 template < typename A0 , typename A1 , typename A2 , typename A3 > std::pair<iterator, bool> emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) )); } template < typename A0 , typename A1 , typename A2 , typename A3 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) )).first; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > std::pair<iterator, bool> emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) )).first; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > std::pair<iterator, bool> emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) )).first; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > std::pair<iterator, bool> emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) )).first; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > std::pair<iterator, bool> emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) )).first; } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > std::pair<iterator, bool> emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 , const A8 & a8 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) , boost::forward<A8>(a8) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 , const A8 & a8 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) , boost::forward<A8>(a8) )).first; }
70298
70299
70300
70301
70302
70303 std::pair<iterator, bool> insert(value_type const& x)
70304 {
70305 return this->emplace(x);
70306 }
70307
70308 std::pair<iterator, bool> insert(::boost::rv< value_type >& x)
70309 {
70310 return this->emplace(boost::move(x));
70311 }
70312
70313 iterator insert(const_iterator hint, value_type const& x)
70314 {
70315 return this->emplace_hint(hint, x);
70316 }
70317
70318 iterator insert(const_iterator hint, ::boost::rv< value_type >& x)
70319 {
70320 return this->emplace_hint(hint, boost::move(x));
70321 }
70322
70323 template <class InputIt> void insert(InputIt, InputIt);
70324
70325
70326
70327
70328
70329 iterator erase(const_iterator);
70330 size_type erase(const key_type&);
70331 iterator erase(const_iterator, const_iterator);
70332 void quick_erase(const_iterator it) { erase(it); }
70333 void erase_return_void(const_iterator it) { erase(it); }
70334
70335 void clear();
70336 void swap(unordered_map&);
70337
70338
70339
70340 hasher hash_function() const;
70341 key_equal key_eq() const;
70342
70343 mapped_type& operator[](const key_type&);
70344 mapped_type& at(const key_type&);
70345 mapped_type const& at(const key_type&) const;
70346
70347
70348
70349 iterator find(const key_type&);
70350 const_iterator find(const key_type&) const;
70351
70352 template <class CompatibleKey, class CompatibleHash,
70353 class CompatiblePredicate>
70354 iterator find(
70355 CompatibleKey const&,
70356 CompatibleHash const&,
70357 CompatiblePredicate const&);
70358
70359 template <class CompatibleKey, class CompatibleHash,
70360 class CompatiblePredicate>
70361 const_iterator find(
70362 CompatibleKey const&,
70363 CompatibleHash const&,
70364 CompatiblePredicate const&) const;
70365
70366 size_type count(const key_type&) const;
70367
70368 std::pair<iterator, iterator>
70369 equal_range(const key_type&);
70370 std::pair<const_iterator, const_iterator>
70371 equal_range(const key_type&) const;
70372
70373
70374
70375 size_type bucket_count() const
70376 {
70377 return table_.bucket_count_;
70378 }
70379
70380 size_type max_bucket_count() const
70381 {
70382 return table_.max_bucket_count();
70383 }
70384
70385 size_type bucket_size(size_type) const;
70386
70387 size_type bucket(const key_type& k) const
70388 {
70389 return table_.hash_function()(k) % table_.bucket_count_;
70390 }
70391
70392 local_iterator begin(size_type n)
70393 {
70394 return table_.size_ ? local_iterator(
70395 table_.get_start(n), n, table_.bucket_count_) :
70396 local_iterator();
70397 }
70398
70399 const_local_iterator begin(size_type n) const
70400 {
70401 return table_.size_ ? const_local_iterator(
70402 table_.get_start(n), n, table_.bucket_count_) :
70403 const_local_iterator();
70404 }
70405
70406 local_iterator end(size_type)
70407 {
70408 return local_iterator();
70409 }
70410
70411 const_local_iterator end(size_type) const
70412 {
70413 return const_local_iterator();
70414 }
70415
70416 const_local_iterator cbegin(size_type n) const
70417 {
70418 return table_.size_ ? const_local_iterator(
70419 table_.get_start(n), n, table_.bucket_count_) :
70420 const_local_iterator();
70421 }
70422
70423 const_local_iterator cend(size_type) const
70424 {
70425 return const_local_iterator();
70426 }
70427
70428
70429
70430 float max_load_factor() const
70431 {
70432 return table_.mlf_;
70433 }
70434
70435 float load_factor() const;
70436 void max_load_factor(float);
70437 void rehash(size_type);
70438
70439
70440 friend bool operator==<K,T,H,P,A>(
70441 unordered_map const&, unordered_map const&);
70442 friend bool operator!=<K,T,H,P,A>(
70443 unordered_map const&, unordered_map const&);
70444
70445 };
70446
70447 template <class K, class T, class H, class P, class A>
70448 class unordered_multimap
70449 {
70450
70451
70452
70453 public:
70454
70455 typedef K key_type;
70456 typedef std::pair<const K, T> value_type;
70457 typedef T mapped_type;
70458 typedef H hasher;
70459 typedef P key_equal;
70460 typedef A allocator_type;
70461
70462 private:
70463
70464 typedef boost::unordered::detail::multimap<A, K, T, H, P> types;
70465 typedef typename types::allocator value_allocator;
70466 typedef typename types::traits allocator_traits;
70467 typedef typename types::table table;
70468
70469 public:
70470
70471 typedef typename allocator_traits::pointer pointer;
70472 typedef typename allocator_traits::const_pointer const_pointer;
70473
70474 typedef value_type& reference;
70475 typedef value_type const& const_reference;
70476
70477 typedef std::size_t size_type;
70478 typedef std::ptrdiff_t difference_type;
70479
70480 typedef typename table::cl_iterator const_local_iterator;
70481 typedef typename table::l_iterator local_iterator;
70482 typedef typename table::c_iterator const_iterator;
70483 typedef typename table::iterator iterator;
70484
70485 private:
70486
70487 table table_;
70488
70489 public:
70490
70491
70492
70493 explicit unordered_multimap(
70494 size_type = boost::unordered::detail::default_bucket_count,
70495 const hasher& = hasher(),
70496 const key_equal& = key_equal(),
70497 const allocator_type& = allocator_type());
70498
70499 explicit unordered_multimap(allocator_type const&);
70500
70501 template <class InputIt>
70502 unordered_multimap(InputIt, InputIt);
70503
70504 template <class InputIt>
70505 unordered_multimap(
70506 InputIt, InputIt,
70507 size_type,
70508 const hasher& = hasher(),
70509 const key_equal& = key_equal());
70510
70511 template <class InputIt>
70512 unordered_multimap(
70513 InputIt, InputIt,
70514 size_type,
70515 const hasher&,
70516 const key_equal&,
70517 const allocator_type&);
70518
70519
70520
70521 unordered_multimap(unordered_multimap const&);
70522
70523 unordered_multimap(unordered_multimap const&, allocator_type const&);
70524 # 631 "../boost/unordered/unordered_map.hpp"
70525 ~unordered_multimap();
70526 # 649 "../boost/unordered/unordered_map.hpp"
70527 unordered_multimap& operator=(unordered_multimap const& x)
70528 {
70529 table_.assign(x.table_);
70530 return *this;
70531 }
70532 # 668 "../boost/unordered/unordered_map.hpp"
70533 allocator_type get_allocator() const
70534 {
70535 return table_.node_alloc();
70536 }
70537
70538
70539
70540 bool empty() const
70541 {
70542 return table_.size_ == 0;
70543 }
70544
70545 size_type size() const
70546 {
70547 return table_.size_;
70548 }
70549
70550 size_type max_size() const;
70551
70552
70553
70554 iterator begin()
70555 {
70556 return iterator(table_.begin());
70557 }
70558
70559 const_iterator begin() const
70560 {
70561 return const_iterator(table_.begin());
70562 }
70563
70564 iterator end()
70565 {
70566 return iterator();
70567 }
70568
70569 const_iterator end() const
70570 {
70571 return const_iterator();
70572 }
70573
70574 const_iterator cbegin() const
70575 {
70576 return const_iterator(table_.begin());
70577 }
70578
70579 const_iterator cend() const
70580 {
70581 return const_iterator();
70582 }
70583 # 741 "../boost/unordered/unordered_map.hpp"
70584 iterator emplace(
70585 boost::unordered::detail::empty_emplace
70586 = boost::unordered::detail::empty_emplace(),
70587 value_type v = value_type())
70588 {
70589 return this->emplace(boost::move(v));
70590 }
70591
70592 iterator emplace_hint(const_iterator hint,
70593 boost::unordered::detail::empty_emplace
70594 = boost::unordered::detail::empty_emplace(),
70595 value_type v = value_type()
70596 )
70597 {
70598 return this->emplace_hint(hint, boost::move(v));
70599 }
70600
70601
70602
70603 template <typename A0>
70604 iterator emplace(const A0 & a0)
70605 {
70606 return table_.emplace(
70607 boost::unordered::detail::create_emplace_args(
70608 boost::forward<A0>(a0))
70609 );
70610 }
70611
70612 template <typename A0>
70613 iterator emplace_hint(const_iterator, const A0 & a0)
70614 {
70615 return table_.emplace(
70616 boost::unordered::detail::create_emplace_args(
70617 boost::forward<A0>(a0))
70618 );
70619 }
70620
70621 template <typename A0, typename A1>
70622 iterator emplace(
70623 const A0 & a0,
70624 const A1 & a1)
70625 {
70626 return table_.emplace(
70627 boost::unordered::detail::create_emplace_args(
70628 boost::forward<A0>(a0),
70629 boost::forward<A1>(a1))
70630 );
70631 }
70632
70633 template <typename A0, typename A1>
70634 iterator emplace_hint(const_iterator,
70635 const A0 & a0,
70636 const A1 & a1)
70637 {
70638 return table_.emplace(
70639 boost::unordered::detail::create_emplace_args(
70640 boost::forward<A0>(a0),
70641 boost::forward<A1>(a1))
70642 );
70643 }
70644
70645 template <typename A0, typename A1, typename A2>
70646 iterator emplace(
70647 const A0 & a0,
70648 const A1 & a1,
70649 const A2 & a2)
70650 {
70651 return table_.emplace(
70652 boost::unordered::detail::create_emplace_args(
70653 boost::forward<A0>(a0),
70654 boost::forward<A1>(a1),
70655 boost::forward<A2>(a2))
70656 );
70657 }
70658
70659 template <typename A0, typename A1, typename A2>
70660 iterator emplace_hint(const_iterator,
70661 const A0 & a0,
70662 const A1 & a1,
70663 const A2 & a2)
70664 {
70665 return table_.emplace(
70666 boost::unordered::detail::create_emplace_args(
70667 boost::forward<A0>(a0),
70668 boost::forward<A1>(a1),
70669 boost::forward<A2>(a2))
70670 );
70671 }
70672 # 860 "../boost/unordered/unordered_map.hpp"
70673
70674 template < typename A0 , typename A1 , typename A2 , typename A3 > iterator emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) )); } template < typename A0 , typename A1 , typename A2 , typename A3 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > iterator emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > iterator emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > iterator emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > iterator emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > iterator emplace( const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 , const A8 & a8 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) , boost::forward<A8>(a8) )); } template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > iterator emplace_hint( const_iterator, const A0 & a0 , const A1 & a1 , const A2 & a2 , const A3 & a3 , const A4 & a4 , const A5 & a5 , const A6 & a6 , const A7 & a7 , const A8 & a8 ) { return table_.emplace( boost::unordered::detail::create_emplace_args( boost::forward<A0>(a0) , boost::forward<A1>(a1) , boost::forward<A2>(a2) , boost::forward<A3>(a3) , boost::forward<A4>(a4) , boost::forward<A5>(a5) , boost::forward<A6>(a6) , boost::forward<A7>(a7) , boost::forward<A8>(a8) )); }
70675
70676
70677
70678
70679
70680 iterator insert(value_type const& x)
70681 {
70682 return this->emplace(x);
70683 }
70684
70685 iterator insert(::boost::rv< value_type >& x)
70686 {
70687 return this->emplace(boost::move(x));
70688 }
70689
70690 iterator insert(const_iterator hint, value_type const& x)
70691 {
70692 return this->emplace_hint(hint, x);
70693 }
70694
70695 iterator insert(const_iterator hint, ::boost::rv< value_type >& x)
70696 {
70697 return this->emplace_hint(hint, boost::move(x));
70698 }
70699
70700 template <class InputIt> void insert(InputIt, InputIt);
70701
70702
70703
70704
70705
70706 iterator erase(const_iterator);
70707 size_type erase(const key_type&);
70708 iterator erase(const_iterator, const_iterator);
70709 void quick_erase(const_iterator it) { erase(it); }
70710 void erase_return_void(const_iterator it) { erase(it); }
70711
70712 void clear();
70713 void swap(unordered_multimap&);
70714
70715
70716
70717 hasher hash_function() const;
70718 key_equal key_eq() const;
70719
70720
70721
70722 iterator find(const key_type&);
70723 const_iterator find(const key_type&) const;
70724
70725 template <class CompatibleKey, class CompatibleHash,
70726 class CompatiblePredicate>
70727 iterator find(
70728 CompatibleKey const&,
70729 CompatibleHash const&,
70730 CompatiblePredicate const&);
70731
70732 template <class CompatibleKey, class CompatibleHash,
70733 class CompatiblePredicate>
70734 const_iterator find(
70735 CompatibleKey const&,
70736 CompatibleHash const&,
70737 CompatiblePredicate const&) const;
70738
70739 size_type count(const key_type&) const;
70740
70741 std::pair<iterator, iterator>
70742 equal_range(const key_type&);
70743 std::pair<const_iterator, const_iterator>
70744 equal_range(const key_type&) const;
70745
70746
70747
70748 size_type bucket_count() const
70749 {
70750 return table_.bucket_count_;
70751 }
70752
70753 size_type max_bucket_count() const
70754 {
70755 return table_.max_bucket_count();
70756 }
70757
70758 size_type bucket_size(size_type) const;
70759
70760 size_type bucket(const key_type& k) const
70761 {
70762 return table_.hash_function()(k) % table_.bucket_count_;
70763 }
70764
70765 local_iterator begin(size_type n)
70766 {
70767 return table_.size_ ? local_iterator(
70768 table_.get_start(n), n, table_.bucket_count_) :
70769 local_iterator();
70770 }
70771
70772 const_local_iterator begin(size_type n) const
70773 {
70774 return table_.size_ ? const_local_iterator(
70775 table_.get_start(n), n, table_.bucket_count_) :
70776 const_local_iterator();
70777 }
70778
70779 local_iterator end(size_type)
70780 {
70781 return local_iterator();
70782 }
70783
70784 const_local_iterator end(size_type) const
70785 {
70786 return const_local_iterator();
70787 }
70788
70789 const_local_iterator cbegin(size_type n) const
70790 {
70791 return table_.size_ ? const_local_iterator(
70792 table_.get_start(n), n, table_.bucket_count_) :
70793 const_local_iterator();
70794 }
70795
70796 const_local_iterator cend(size_type) const
70797 {
70798 return const_local_iterator();
70799 }
70800
70801
70802
70803 float max_load_factor() const
70804 {
70805 return table_.mlf_;
70806 }
70807
70808 float load_factor() const;
70809 void max_load_factor(float);
70810 void rehash(size_type);
70811
70812
70813 friend bool operator==<K,T,H,P,A>(
70814 unordered_multimap const&, unordered_multimap const&);
70815 friend bool operator!=<K,T,H,P,A>(
70816 unordered_multimap const&, unordered_multimap const&);
70817
70818 };
70819
70820
70821
70822 template <class K, class T, class H, class P, class A>
70823 unordered_map<K,T,H,P,A>::unordered_map(
70824 size_type n, const hasher &hf, const key_equal &eql,
70825 const allocator_type &a)
70826 : table_(n, hf, eql, a)
70827 {
70828 }
70829
70830 template <class K, class T, class H, class P, class A>
70831 unordered_map<K,T,H,P,A>::unordered_map(allocator_type const& a)
70832 : table_(boost::unordered::detail::default_bucket_count,
70833 hasher(), key_equal(), a)
70834 {
70835 }
70836
70837 template <class K, class T, class H, class P, class A>
70838 unordered_map<K,T,H,P,A>::unordered_map(
70839 unordered_map const& other, allocator_type const& a)
70840 : table_(other.table_, a)
70841 {
70842 }
70843
70844 template <class K, class T, class H, class P, class A>
70845 template <class InputIt>
70846 unordered_map<K,T,H,P,A>::unordered_map(InputIt f, InputIt l)
70847 : table_(boost::unordered::detail::initial_size(f, l),
70848 hasher(), key_equal(), allocator_type())
70849 {
70850 table_.insert_range(f, l);
70851 }
70852
70853 template <class K, class T, class H, class P, class A>
70854 template <class InputIt>
70855 unordered_map<K,T,H,P,A>::unordered_map(
70856 InputIt f, InputIt l,
70857 size_type n,
70858 const hasher &hf,
70859 const key_equal &eql)
70860 : table_(boost::unordered::detail::initial_size(f, l, n),
70861 hf, eql, allocator_type())
70862 {
70863 table_.insert_range(f, l);
70864 }
70865
70866 template <class K, class T, class H, class P, class A>
70867 template <class InputIt>
70868 unordered_map<K,T,H,P,A>::unordered_map(
70869 InputIt f, InputIt l,
70870 size_type n,
70871 const hasher &hf,
70872 const key_equal &eql,
70873 const allocator_type &a)
70874 : table_(boost::unordered::detail::initial_size(f, l, n), hf, eql, a)
70875 {
70876 table_.insert_range(f, l);
70877 }
70878
70879 template <class K, class T, class H, class P, class A>
70880 unordered_map<K,T,H,P,A>::~unordered_map() {}
70881
70882 template <class K, class T, class H, class P, class A>
70883 unordered_map<K,T,H,P,A>::unordered_map(
70884 unordered_map const& other)
70885 : table_(other.table_)
70886 {
70887 }
70888 # 1114 "../boost/unordered/unordered_map.hpp"
70889 template <class K, class T, class H, class P, class A>
70890 std::size_t unordered_map<K,T,H,P,A>::max_size() const
70891 {
70892 return table_.max_size();
70893 }
70894
70895
70896
70897 template <class K, class T, class H, class P, class A>
70898 template <class InputIt>
70899 void unordered_map<K,T,H,P,A>::insert(InputIt first, InputIt last)
70900 {
70901 table_.insert_range(first, last);
70902 }
70903 # 1138 "../boost/unordered/unordered_map.hpp"
70904 template <class K, class T, class H, class P, class A>
70905 typename unordered_map<K,T,H,P,A>::iterator
70906 unordered_map<K,T,H,P,A>::erase(const_iterator position)
70907 {
70908 return iterator(table_.erase(position.node_));
70909 }
70910
70911 template <class K, class T, class H, class P, class A>
70912 typename unordered_map<K,T,H,P,A>::size_type
70913 unordered_map<K,T,H,P,A>::erase(const key_type& k)
70914 {
70915 return table_.erase_key(k);
70916 }
70917
70918 template <class K, class T, class H, class P, class A>
70919 typename unordered_map<K,T,H,P,A>::iterator
70920 unordered_map<K,T,H,P,A>::erase(
70921 const_iterator first, const_iterator last)
70922 {
70923 return iterator(table_.erase_range(first.node_, last.node_));
70924 }
70925
70926 template <class K, class T, class H, class P, class A>
70927 void unordered_map<K,T,H,P,A>::clear()
70928 {
70929 table_.clear();
70930 }
70931
70932 template <class K, class T, class H, class P, class A>
70933 void unordered_map<K,T,H,P,A>::swap(unordered_map& other)
70934 {
70935 table_.swap(other.table_);
70936 }
70937
70938
70939
70940 template <class K, class T, class H, class P, class A>
70941 typename unordered_map<K,T,H,P,A>::hasher
70942 unordered_map<K,T,H,P,A>::hash_function() const
70943 {
70944 return table_.hash_function();
70945 }
70946
70947 template <class K, class T, class H, class P, class A>
70948 typename unordered_map<K,T,H,P,A>::key_equal
70949 unordered_map<K,T,H,P,A>::key_eq() const
70950 {
70951 return table_.key_eq();
70952 }
70953
70954 template <class K, class T, class H, class P, class A>
70955 typename unordered_map<K,T,H,P,A>::mapped_type&
70956 unordered_map<K,T,H,P,A>::operator[](const key_type &k)
70957 {
70958 return table_[k].second;
70959 }
70960
70961 template <class K, class T, class H, class P, class A>
70962 typename unordered_map<K,T,H,P,A>::mapped_type&
70963 unordered_map<K,T,H,P,A>::at(const key_type& k)
70964 {
70965 return table_.at(k).second;
70966 }
70967
70968 template <class K, class T, class H, class P, class A>
70969 typename unordered_map<K,T,H,P,A>::mapped_type const&
70970 unordered_map<K,T,H,P,A>::at(const key_type& k) const
70971 {
70972 return table_.at(k).second;
70973 }
70974
70975
70976
70977 template <class K, class T, class H, class P, class A>
70978 typename unordered_map<K,T,H,P,A>::iterator
70979 unordered_map<K,T,H,P,A>::find(const key_type& k)
70980 {
70981 return iterator(table_.find_node(k));
70982 }
70983
70984 template <class K, class T, class H, class P, class A>
70985 typename unordered_map<K,T,H,P,A>::const_iterator
70986 unordered_map<K,T,H,P,A>::find(const key_type& k) const
70987 {
70988 return const_iterator(table_.find_node(k));
70989 }
70990
70991 template <class K, class T, class H, class P, class A>
70992 template <class CompatibleKey, class CompatibleHash,
70993 class CompatiblePredicate>
70994 typename unordered_map<K,T,H,P,A>::iterator
70995 unordered_map<K,T,H,P,A>::find(
70996 CompatibleKey const& k,
70997 CompatibleHash const& hash,
70998 CompatiblePredicate const& eq)
70999 {
71000 return iterator(table_.generic_find_node(k, hash, eq));
71001 }
71002
71003 template <class K, class T, class H, class P, class A>
71004 template <class CompatibleKey, class CompatibleHash,
71005 class CompatiblePredicate>
71006 typename unordered_map<K,T,H,P,A>::const_iterator
71007 unordered_map<K,T,H,P,A>::find(
71008 CompatibleKey const& k,
71009 CompatibleHash const& hash,
71010 CompatiblePredicate const& eq) const
71011 {
71012 return const_iterator(table_.generic_find_node(k, hash, eq));
71013 }
71014
71015 template <class K, class T, class H, class P, class A>
71016 typename unordered_map<K,T,H,P,A>::size_type
71017 unordered_map<K,T,H,P,A>::count(const key_type& k) const
71018 {
71019 return table_.count(k);
71020 }
71021
71022 template <class K, class T, class H, class P, class A>
71023 std::pair<
71024 typename unordered_map<K,T,H,P,A>::iterator,
71025 typename unordered_map<K,T,H,P,A>::iterator>
71026 unordered_map<K,T,H,P,A>::equal_range(const key_type& k)
71027 {
71028 return table_.equal_range(k);
71029 }
71030
71031 template <class K, class T, class H, class P, class A>
71032 std::pair<
71033 typename unordered_map<K,T,H,P,A>::const_iterator,
71034 typename unordered_map<K,T,H,P,A>::const_iterator>
71035 unordered_map<K,T,H,P,A>::equal_range(const key_type& k) const
71036 {
71037 return table_.equal_range(k);
71038 }
71039
71040 template <class K, class T, class H, class P, class A>
71041 typename unordered_map<K,T,H,P,A>::size_type
71042 unordered_map<K,T,H,P,A>::bucket_size(size_type n) const
71043 {
71044 return table_.bucket_size(n);
71045 }
71046
71047
71048
71049 template <class K, class T, class H, class P, class A>
71050 float unordered_map<K,T,H,P,A>::load_factor() const
71051 {
71052 return table_.load_factor();
71053 }
71054
71055 template <class K, class T, class H, class P, class A>
71056 void unordered_map<K,T,H,P,A>::max_load_factor(float m)
71057 {
71058 table_.max_load_factor(m);
71059 }
71060
71061 template <class K, class T, class H, class P, class A>
71062 void unordered_map<K,T,H,P,A>::rehash(size_type n)
71063 {
71064 table_.rehash(n);
71065 }
71066
71067 template <class K, class T, class H, class P, class A>
71068 inline bool operator==(
71069 unordered_map<K,T,H,P,A> const& m1,
71070 unordered_map<K,T,H,P,A> const& m2)
71071 {
71072
71073
71074
71075 return m1.table_.equals(m2.table_);
71076 }
71077
71078 template <class K, class T, class H, class P, class A>
71079 inline bool operator!=(
71080 unordered_map<K,T,H,P,A> const& m1,
71081 unordered_map<K,T,H,P,A> const& m2)
71082 {
71083
71084
71085
71086 return !m1.table_.equals(m2.table_);
71087 }
71088
71089 template <class K, class T, class H, class P, class A>
71090 inline void swap(
71091 unordered_map<K,T,H,P,A> &m1,
71092 unordered_map<K,T,H,P,A> &m2)
71093 {
71094
71095
71096
71097 m1.swap(m2);
71098 }
71099
71100
71101
71102 template <class K, class T, class H, class P, class A>
71103 unordered_multimap<K,T,H,P,A>::unordered_multimap(
71104 size_type n, const hasher &hf, const key_equal &eql,
71105 const allocator_type &a)
71106 : table_(n, hf, eql, a)
71107 {
71108 }
71109
71110 template <class K, class T, class H, class P, class A>
71111 unordered_multimap<K,T,H,P,A>::unordered_multimap(allocator_type const& a)
71112 : table_(boost::unordered::detail::default_bucket_count,
71113 hasher(), key_equal(), a)
71114 {
71115 }
71116
71117 template <class K, class T, class H, class P, class A>
71118 unordered_multimap<K,T,H,P,A>::unordered_multimap(
71119 unordered_multimap const& other, allocator_type const& a)
71120 : table_(other.table_, a)
71121 {
71122 }
71123
71124 template <class K, class T, class H, class P, class A>
71125 template <class InputIt>
71126 unordered_multimap<K,T,H,P,A>::unordered_multimap(InputIt f, InputIt l)
71127 : table_(boost::unordered::detail::initial_size(f, l),
71128 hasher(), key_equal(), allocator_type())
71129 {
71130 table_.insert_range(f, l);
71131 }
71132
71133 template <class K, class T, class H, class P, class A>
71134 template <class InputIt>
71135 unordered_multimap<K,T,H,P,A>::unordered_multimap(
71136 InputIt f, InputIt l,
71137 size_type n,
71138 const hasher &hf,
71139 const key_equal &eql)
71140 : table_(boost::unordered::detail::initial_size(f, l, n),
71141 hf, eql, allocator_type())
71142 {
71143 table_.insert_range(f, l);
71144 }
71145
71146 template <class K, class T, class H, class P, class A>
71147 template <class InputIt>
71148 unordered_multimap<K,T,H,P,A>::unordered_multimap(
71149 InputIt f, InputIt l,
71150 size_type n,
71151 const hasher &hf,
71152 const key_equal &eql,
71153 const allocator_type &a)
71154 : table_(boost::unordered::detail::initial_size(f, l, n), hf, eql, a)
71155 {
71156 table_.insert_range(f, l);
71157 }
71158
71159 template <class K, class T, class H, class P, class A>
71160 unordered_multimap<K,T,H,P,A>::~unordered_multimap() {}
71161
71162 template <class K, class T, class H, class P, class A>
71163 unordered_multimap<K,T,H,P,A>::unordered_multimap(
71164 unordered_multimap const& other)
71165 : table_(other.table_)
71166 {
71167 }
71168 # 1441 "../boost/unordered/unordered_map.hpp"
71169 template <class K, class T, class H, class P, class A>
71170 std::size_t unordered_multimap<K,T,H,P,A>::max_size() const
71171 {
71172 return table_.max_size();
71173 }
71174
71175
71176
71177 template <class K, class T, class H, class P, class A>
71178 template <class InputIt>
71179 void unordered_multimap<K,T,H,P,A>::insert(InputIt first, InputIt last)
71180 {
71181 table_.insert_range(first, last);
71182 }
71183 # 1465 "../boost/unordered/unordered_map.hpp"
71184 template <class K, class T, class H, class P, class A>
71185 typename unordered_multimap<K,T,H,P,A>::iterator
71186 unordered_multimap<K,T,H,P,A>::erase(const_iterator position)
71187 {
71188 return iterator(table_.erase(position.node_));
71189 }
71190
71191 template <class K, class T, class H, class P, class A>
71192 typename unordered_multimap<K,T,H,P,A>::size_type
71193 unordered_multimap<K,T,H,P,A>::erase(const key_type& k)
71194 {
71195 return table_.erase_key(k);
71196 }
71197
71198 template <class K, class T, class H, class P, class A>
71199 typename unordered_multimap<K,T,H,P,A>::iterator
71200 unordered_multimap<K,T,H,P,A>::erase(
71201 const_iterator first, const_iterator last)
71202 {
71203 return iterator(table_.erase_range(first.node_, last.node_));
71204 }
71205
71206 template <class K, class T, class H, class P, class A>
71207 void unordered_multimap<K,T,H,P,A>::clear()
71208 {
71209 table_.clear();
71210 }
71211
71212 template <class K, class T, class H, class P, class A>
71213 void unordered_multimap<K,T,H,P,A>::swap(unordered_multimap& other)
71214 {
71215 table_.swap(other.table_);
71216 }
71217
71218
71219
71220 template <class K, class T, class H, class P, class A>
71221 typename unordered_multimap<K,T,H,P,A>::hasher
71222 unordered_multimap<K,T,H,P,A>::hash_function() const
71223 {
71224 return table_.hash_function();
71225 }
71226
71227 template <class K, class T, class H, class P, class A>
71228 typename unordered_multimap<K,T,H,P,A>::key_equal
71229 unordered_multimap<K,T,H,P,A>::key_eq() const
71230 {
71231 return table_.key_eq();
71232 }
71233
71234
71235
71236 template <class K, class T, class H, class P, class A>
71237 typename unordered_multimap<K,T,H,P,A>::iterator
71238 unordered_multimap<K,T,H,P,A>::find(const key_type& k)
71239 {
71240 return iterator(table_.find_node(k));
71241 }
71242
71243 template <class K, class T, class H, class P, class A>
71244 typename unordered_multimap<K,T,H,P,A>::const_iterator
71245 unordered_multimap<K,T,H,P,A>::find(const key_type& k) const
71246 {
71247 return const_iterator(table_.find_node(k));
71248 }
71249
71250 template <class K, class T, class H, class P, class A>
71251 template <class CompatibleKey, class CompatibleHash,
71252 class CompatiblePredicate>
71253 typename unordered_multimap<K,T,H,P,A>::iterator
71254 unordered_multimap<K,T,H,P,A>::find(
71255 CompatibleKey const& k,
71256 CompatibleHash const& hash,
71257 CompatiblePredicate const& eq)
71258 {
71259 return iterator(table_.generic_find_node(k, hash, eq));
71260 }
71261
71262 template <class K, class T, class H, class P, class A>
71263 template <class CompatibleKey, class CompatibleHash,
71264 class CompatiblePredicate>
71265 typename unordered_multimap<K,T,H,P,A>::const_iterator
71266 unordered_multimap<K,T,H,P,A>::find(
71267 CompatibleKey const& k,
71268 CompatibleHash const& hash,
71269 CompatiblePredicate const& eq) const
71270 {
71271 return const_iterator(table_.generic_find_node(k, hash, eq));
71272 }
71273
71274 template <class K, class T, class H, class P, class A>
71275 typename unordered_multimap<K,T,H,P,A>::size_type
71276 unordered_multimap<K,T,H,P,A>::count(const key_type& k) const
71277 {
71278 return table_.count(k);
71279 }
71280
71281 template <class K, class T, class H, class P, class A>
71282 std::pair<
71283 typename unordered_multimap<K,T,H,P,A>::iterator,
71284 typename unordered_multimap<K,T,H,P,A>::iterator>
71285 unordered_multimap<K,T,H,P,A>::equal_range(const key_type& k)
71286 {
71287 return table_.equal_range(k);
71288 }
71289
71290 template <class K, class T, class H, class P, class A>
71291 std::pair<
71292 typename unordered_multimap<K,T,H,P,A>::const_iterator,
71293 typename unordered_multimap<K,T,H,P,A>::const_iterator>
71294 unordered_multimap<K,T,H,P,A>::equal_range(const key_type& k) const
71295 {
71296 return table_.equal_range(k);
71297 }
71298
71299 template <class K, class T, class H, class P, class A>
71300 typename unordered_multimap<K,T,H,P,A>::size_type
71301 unordered_multimap<K,T,H,P,A>::bucket_size(size_type n) const
71302 {
71303 return table_.bucket_size(n);
71304 }
71305
71306
71307
71308 template <class K, class T, class H, class P, class A>
71309 float unordered_multimap<K,T,H,P,A>::load_factor() const
71310 {
71311 return table_.load_factor();
71312 }
71313
71314 template <class K, class T, class H, class P, class A>
71315 void unordered_multimap<K,T,H,P,A>::max_load_factor(float m)
71316 {
71317 table_.max_load_factor(m);
71318 }
71319
71320 template <class K, class T, class H, class P, class A>
71321 void unordered_multimap<K,T,H,P,A>::rehash(size_type n)
71322 {
71323 table_.rehash(n);
71324 }
71325
71326 template <class K, class T, class H, class P, class A>
71327 inline bool operator==(
71328 unordered_multimap<K,T,H,P,A> const& m1,
71329 unordered_multimap<K,T,H,P,A> const& m2)
71330 {
71331
71332
71333
71334 return m1.table_.equals(m2.table_);
71335 }
71336
71337 template <class K, class T, class H, class P, class A>
71338 inline bool operator!=(
71339 unordered_multimap<K,T,H,P,A> const& m1,
71340 unordered_multimap<K,T,H,P,A> const& m2)
71341 {
71342
71343
71344
71345 return !m1.table_.equals(m2.table_);
71346 }
71347
71348 template <class K, class T, class H, class P, class A>
71349 inline void swap(
71350 unordered_multimap<K,T,H,P,A> &m1,
71351 unordered_multimap<K,T,H,P,A> &m2)
71352 {
71353
71354
71355
71356 m1.swap(m2);
71357 }
71358
71359 }
71360 }
71361 # 17 "../boost/unordered_map.hpp" 2
71362 # 15 "quickbook/src/id_manager.cpp" 2
71363 # 1 "../boost/lexical_cast.hpp" 1
71364 # 50 "../boost/lexical_cast.hpp"
71365 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 1 3
71366 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
71367
71368 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
71369
71370 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
71371 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 2 3
71372 # 51 "../boost/lexical_cast.hpp" 2
71373 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
71374 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
71375
71376 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
71377
71378
71379 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
71380 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
71381 # 52 "../boost/lexical_cast.hpp" 2
71382
71383
71384 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 1 3
71385 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
71386
71387 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
71388 # 55 "../boost/lexical_cast.hpp" 2
71389 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 1 3
71390 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 3
71391
71392 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 3
71393
71394
71395 # 1 "/usr/include/stdio.h" 1 3 4
71396 # 30 "/usr/include/stdio.h" 3 4
71397 extern "C" {
71398
71399
71400
71401 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
71402 # 35 "/usr/include/stdio.h" 2 3 4
71403 # 75 "/usr/include/stdio.h" 3 4
71404 # 1 "/usr/include/libio.h" 1 3 4
71405 # 32 "/usr/include/libio.h" 3 4
71406 # 1 "/usr/include/_G_config.h" 1 3 4
71407 # 15 "/usr/include/_G_config.h" 3 4
71408 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
71409 # 16 "/usr/include/_G_config.h" 2 3 4
71410
71411
71412
71413
71414 # 1 "/usr/include/wchar.h" 1 3 4
71415 # 21 "/usr/include/_G_config.h" 2 3 4
71416
71417 typedef struct
71418 {
71419 __off_t __pos;
71420 __mbstate_t __state;
71421 } _G_fpos_t;
71422 typedef struct
71423 {
71424 __off64_t __pos;
71425 __mbstate_t __state;
71426 } _G_fpos64_t;
71427 # 53 "/usr/include/_G_config.h" 3 4
71428 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
71429 typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
71430 typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
71431 typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
71432 # 33 "/usr/include/libio.h" 2 3 4
71433 # 53 "/usr/include/libio.h" 3 4
71434 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stdarg.h" 1 3 4
71435 # 54 "/usr/include/libio.h" 2 3 4
71436 # 170 "/usr/include/libio.h" 3 4
71437 struct _IO_jump_t; struct _IO_FILE;
71438 # 180 "/usr/include/libio.h" 3 4
71439 typedef void _IO_lock_t;
71440
71441
71442
71443
71444
71445 struct _IO_marker {
71446 struct _IO_marker *_next;
71447 struct _IO_FILE *_sbuf;
71448
71449
71450
71451 int _pos;
71452 # 203 "/usr/include/libio.h" 3 4
71453 };
71454
71455
71456 enum __codecvt_result
71457 {
71458 __codecvt_ok,
71459 __codecvt_partial,
71460 __codecvt_error,
71461 __codecvt_noconv
71462 };
71463 # 271 "/usr/include/libio.h" 3 4
71464 struct _IO_FILE {
71465 int _flags;
71466
71467
71468
71469
71470 char* _IO_read_ptr;
71471 char* _IO_read_end;
71472 char* _IO_read_base;
71473 char* _IO_write_base;
71474 char* _IO_write_ptr;
71475 char* _IO_write_end;
71476 char* _IO_buf_base;
71477 char* _IO_buf_end;
71478
71479 char *_IO_save_base;
71480 char *_IO_backup_base;
71481 char *_IO_save_end;
71482
71483 struct _IO_marker *_markers;
71484
71485 struct _IO_FILE *_chain;
71486
71487 int _fileno;
71488
71489
71490
71491 int _flags2;
71492
71493 __off_t _old_offset;
71494
71495
71496
71497 unsigned short _cur_column;
71498 signed char _vtable_offset;
71499 char _shortbuf[1];
71500
71501
71502
71503 _IO_lock_t *_lock;
71504 # 319 "/usr/include/libio.h" 3 4
71505 __off64_t _offset;
71506 # 328 "/usr/include/libio.h" 3 4
71507 void *__pad1;
71508 void *__pad2;
71509 void *__pad3;
71510 void *__pad4;
71511 size_t __pad5;
71512
71513 int _mode;
71514
71515 char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
71516
71517 };
71518
71519
71520
71521
71522
71523 struct _IO_FILE_plus;
71524
71525 extern struct _IO_FILE_plus _IO_2_1_stdin_;
71526 extern struct _IO_FILE_plus _IO_2_1_stdout_;
71527 extern struct _IO_FILE_plus _IO_2_1_stderr_;
71528 # 364 "/usr/include/libio.h" 3 4
71529 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
71530
71531
71532
71533
71534
71535
71536
71537 typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
71538 size_t __n);
71539
71540
71541
71542
71543
71544
71545
71546 typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
71547
71548
71549 typedef int __io_close_fn (void *__cookie);
71550
71551
71552
71553
71554 typedef __io_read_fn cookie_read_function_t;
71555 typedef __io_write_fn cookie_write_function_t;
71556 typedef __io_seek_fn cookie_seek_function_t;
71557 typedef __io_close_fn cookie_close_function_t;
71558
71559
71560 typedef struct
71561 {
71562 __io_read_fn *read;
71563 __io_write_fn *write;
71564 __io_seek_fn *seek;
71565 __io_close_fn *close;
71566 } _IO_cookie_io_functions_t;
71567 typedef _IO_cookie_io_functions_t cookie_io_functions_t;
71568
71569 struct _IO_cookie_file;
71570
71571
71572 extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
71573 void *__cookie, _IO_cookie_io_functions_t __fns);
71574
71575
71576
71577
71578 extern "C" {
71579
71580
71581 extern int __underflow (_IO_FILE *);
71582 extern int __uflow (_IO_FILE *);
71583 extern int __overflow (_IO_FILE *, int);
71584 # 460 "/usr/include/libio.h" 3 4
71585 extern int _IO_getc (_IO_FILE *__fp);
71586 extern int _IO_putc (int __c, _IO_FILE *__fp);
71587 extern int _IO_feof (_IO_FILE *__fp) throw ();
71588 extern int _IO_ferror (_IO_FILE *__fp) throw ();
71589
71590 extern int _IO_peekc_locked (_IO_FILE *__fp);
71591
71592
71593
71594
71595
71596 extern void _IO_flockfile (_IO_FILE *) throw ();
71597 extern void _IO_funlockfile (_IO_FILE *) throw ();
71598 extern int _IO_ftrylockfile (_IO_FILE *) throw ();
71599 # 490 "/usr/include/libio.h" 3 4
71600 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
71601 __gnuc_va_list, int *__restrict);
71602 extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
71603 __gnuc_va_list);
71604 extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
71605 extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
71606
71607 extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
71608 extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
71609
71610 extern void _IO_free_backup_area (_IO_FILE *) throw ();
71611 # 552 "/usr/include/libio.h" 3 4
71612 }
71613 # 76 "/usr/include/stdio.h" 2 3 4
71614
71615
71616
71617
71618 typedef __gnuc_va_list va_list;
71619 # 109 "/usr/include/stdio.h" 3 4
71620
71621
71622 typedef _G_fpos_t fpos_t;
71623
71624
71625
71626
71627
71628 typedef _G_fpos64_t fpos64_t;
71629 # 161 "/usr/include/stdio.h" 3 4
71630 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
71631 # 162 "/usr/include/stdio.h" 2 3 4
71632
71633
71634
71635 extern struct _IO_FILE *stdin;
71636 extern struct _IO_FILE *stdout;
71637 extern struct _IO_FILE *stderr;
71638
71639
71640
71641
71642
71643
71644
71645 extern int remove (__const char *__filename) throw ();
71646
71647 extern int rename (__const char *__old, __const char *__new) throw ();
71648
71649
71650
71651
71652 extern int renameat (int __oldfd, __const char *__old, int __newfd,
71653 __const char *__new) throw ();
71654
71655
71656
71657
71658
71659
71660
71661
71662 extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__));
71663 # 202 "/usr/include/stdio.h" 3 4
71664 extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__));
71665
71666
71667
71668 extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__));
71669
71670
71671
71672
71673
71674 extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__));
71675 # 224 "/usr/include/stdio.h" 3 4
71676 extern char *tempnam (__const char *__dir, __const char *__pfx)
71677 throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
71678
71679
71680
71681
71682
71683
71684
71685
71686 extern int fclose (FILE *__stream);
71687
71688
71689
71690
71691 extern int fflush (FILE *__stream);
71692
71693 # 249 "/usr/include/stdio.h" 3 4
71694 extern int fflush_unlocked (FILE *__stream);
71695 # 259 "/usr/include/stdio.h" 3 4
71696 extern int fcloseall (void);
71697
71698
71699
71700
71701
71702
71703
71704
71705
71706 extern FILE *fopen (__const char *__restrict __filename,
71707 __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
71708
71709
71710
71711
71712 extern FILE *freopen (__const char *__restrict __filename,
71713 __const char *__restrict __modes,
71714 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
71715 # 292 "/usr/include/stdio.h" 3 4
71716
71717
71718 extern FILE *fopen64 (__const char *__restrict __filename,
71719 __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
71720 extern FILE *freopen64 (__const char *__restrict __filename,
71721 __const char *__restrict __modes,
71722 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
71723
71724
71725
71726
71727 extern FILE *fdopen (int __fd, __const char *__modes) throw () __attribute__ ((__warn_unused_result__));
71728
71729
71730
71731
71732
71733 extern FILE *fopencookie (void *__restrict __magic_cookie,
71734 __const char *__restrict __modes,
71735 _IO_cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__));
71736
71737
71738
71739
71740 extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
71741 throw () __attribute__ ((__warn_unused_result__));
71742
71743
71744
71745
71746 extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__));
71747
71748
71749
71750
71751
71752
71753 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
71754
71755
71756
71757 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
71758 int __modes, size_t __n) throw ();
71759
71760
71761
71762
71763
71764 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
71765 size_t __size) throw ();
71766
71767
71768 extern void setlinebuf (FILE *__stream) throw ();
71769
71770
71771
71772
71773
71774
71775
71776
71777 extern int fprintf (FILE *__restrict __stream,
71778 __const char *__restrict __format, ...);
71779
71780
71781
71782
71783 extern int printf (__const char *__restrict __format, ...);
71784
71785 extern int sprintf (char *__restrict __s,
71786 __const char *__restrict __format, ...) throw ();
71787
71788
71789
71790
71791
71792 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
71793 __gnuc_va_list __arg);
71794
71795
71796
71797
71798 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
71799
71800 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
71801 __gnuc_va_list __arg) throw ();
71802
71803
71804
71805
71806
71807 extern int snprintf (char *__restrict __s, size_t __maxlen,
71808 __const char *__restrict __format, ...)
71809 throw () __attribute__ ((__format__ (__printf__, 3, 4)));
71810
71811 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
71812 __const char *__restrict __format, __gnuc_va_list __arg)
71813 throw () __attribute__ ((__format__ (__printf__, 3, 0)));
71814
71815
71816
71817
71818
71819
71820 extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
71821 __gnuc_va_list __arg)
71822 throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
71823 extern int __asprintf (char **__restrict __ptr,
71824 __const char *__restrict __fmt, ...)
71825 throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
71826 extern int asprintf (char **__restrict __ptr,
71827 __const char *__restrict __fmt, ...)
71828 throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
71829 # 414 "/usr/include/stdio.h" 3 4
71830 extern int vdprintf (int __fd, __const char *__restrict __fmt,
71831 __gnuc_va_list __arg)
71832 __attribute__ ((__format__ (__printf__, 2, 0)));
71833 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
71834 __attribute__ ((__format__ (__printf__, 2, 3)));
71835
71836
71837
71838
71839
71840
71841
71842
71843 extern int fscanf (FILE *__restrict __stream,
71844 __const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
71845
71846
71847
71848
71849 extern int scanf (__const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
71850
71851 extern int sscanf (__const char *__restrict __s,
71852 __const char *__restrict __format, ...) throw ();
71853 # 465 "/usr/include/stdio.h" 3 4
71854
71855
71856
71857
71858
71859
71860
71861
71862 extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
71863 __gnuc_va_list __arg)
71864 __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
71865
71866
71867
71868
71869
71870 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
71871 __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
71872
71873
71874 extern int vsscanf (__const char *__restrict __s,
71875 __const char *__restrict __format, __gnuc_va_list __arg)
71876 throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
71877 # 524 "/usr/include/stdio.h" 3 4
71878
71879
71880
71881
71882
71883
71884
71885
71886
71887 extern int fgetc (FILE *__stream);
71888 extern int getc (FILE *__stream);
71889
71890
71891
71892
71893
71894 extern int getchar (void);
71895
71896 # 552 "/usr/include/stdio.h" 3 4
71897 extern int getc_unlocked (FILE *__stream);
71898 extern int getchar_unlocked (void);
71899 # 563 "/usr/include/stdio.h" 3 4
71900 extern int fgetc_unlocked (FILE *__stream);
71901
71902
71903
71904
71905
71906
71907
71908
71909
71910
71911
71912 extern int fputc (int __c, FILE *__stream);
71913 extern int putc (int __c, FILE *__stream);
71914
71915
71916
71917
71918
71919 extern int putchar (int __c);
71920
71921 # 596 "/usr/include/stdio.h" 3 4
71922 extern int fputc_unlocked (int __c, FILE *__stream);
71923
71924
71925
71926
71927
71928
71929
71930 extern int putc_unlocked (int __c, FILE *__stream);
71931 extern int putchar_unlocked (int __c);
71932
71933
71934
71935
71936
71937
71938 extern int getw (FILE *__stream);
71939
71940
71941 extern int putw (int __w, FILE *__stream);
71942
71943
71944
71945
71946
71947
71948
71949
71950 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
71951 __attribute__ ((__warn_unused_result__));
71952
71953
71954
71955
71956
71957
71958 extern char *gets (char *__s) __attribute__ ((__warn_unused_result__));
71959
71960 # 642 "/usr/include/stdio.h" 3 4
71961 extern char *fgets_unlocked (char *__restrict __s, int __n,
71962 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
71963 # 658 "/usr/include/stdio.h" 3 4
71964 extern __ssize_t __getdelim (char **__restrict __lineptr,
71965 size_t *__restrict __n, int __delimiter,
71966 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
71967 extern __ssize_t getdelim (char **__restrict __lineptr,
71968 size_t *__restrict __n, int __delimiter,
71969 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
71970
71971
71972
71973
71974
71975
71976
71977 extern __ssize_t getline (char **__restrict __lineptr,
71978 size_t *__restrict __n,
71979 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
71980
71981
71982
71983
71984
71985
71986
71987
71988 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
71989
71990
71991
71992
71993
71994 extern int puts (__const char *__s);
71995
71996
71997
71998
71999
72000
72001 extern int ungetc (int __c, FILE *__stream);
72002
72003
72004
72005
72006
72007
72008 extern size_t fread (void *__restrict __ptr, size_t __size,
72009 size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72010
72011
72012
72013
72014 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
72015 size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));
72016
72017 # 719 "/usr/include/stdio.h" 3 4
72018 extern int fputs_unlocked (__const char *__restrict __s,
72019 FILE *__restrict __stream);
72020 # 730 "/usr/include/stdio.h" 3 4
72021 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
72022 size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72023 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
72024 size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72025
72026
72027
72028
72029
72030
72031
72032
72033 extern int fseek (FILE *__stream, long int __off, int __whence);
72034
72035
72036
72037
72038 extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__));
72039
72040
72041
72042
72043 extern void rewind (FILE *__stream);
72044
72045 # 766 "/usr/include/stdio.h" 3 4
72046 extern int fseeko (FILE *__stream, __off_t __off, int __whence);
72047
72048
72049
72050
72051 extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__));
72052 # 785 "/usr/include/stdio.h" 3 4
72053
72054
72055
72056
72057
72058
72059 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
72060
72061
72062
72063
72064 extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
72065 # 808 "/usr/include/stdio.h" 3 4
72066
72067
72068
72069 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
72070 extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__));
72071 extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
72072 extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
72073
72074
72075
72076
72077 extern void clearerr (FILE *__stream) throw ();
72078
72079 extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72080
72081 extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72082
72083
72084
72085
72086 extern void clearerr_unlocked (FILE *__stream) throw ();
72087 extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72088 extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72089
72090
72091
72092
72093
72094
72095
72096
72097 extern void perror (__const char *__s);
72098
72099
72100
72101
72102
72103
72104 # 1 "/usr/include/bits/sys_errlist.h" 1 3 4
72105 # 27 "/usr/include/bits/sys_errlist.h" 3 4
72106 extern int sys_nerr;
72107 extern __const char *__const sys_errlist[];
72108
72109
72110 extern int _sys_nerr;
72111 extern __const char *__const _sys_errlist[];
72112 # 847 "/usr/include/stdio.h" 2 3 4
72113
72114
72115
72116
72117 extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72118
72119
72120
72121
72122 extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72123 # 866 "/usr/include/stdio.h" 3 4
72124 extern FILE *popen (__const char *__command, __const char *__modes) __attribute__ ((__warn_unused_result__));
72125
72126
72127
72128
72129
72130 extern int pclose (FILE *__stream);
72131
72132
72133
72134
72135
72136 extern char *ctermid (char *__s) throw ();
72137
72138
72139
72140
72141
72142 extern char *cuserid (char *__s);
72143
72144
72145
72146
72147 struct obstack;
72148
72149
72150 extern int obstack_printf (struct obstack *__restrict __obstack,
72151 __const char *__restrict __format, ...)
72152 throw () __attribute__ ((__format__ (__printf__, 2, 3)));
72153 extern int obstack_vprintf (struct obstack *__restrict __obstack,
72154 __const char *__restrict __format,
72155 __gnuc_va_list __args)
72156 throw () __attribute__ ((__format__ (__printf__, 2, 0)));
72157
72158
72159
72160
72161
72162
72163
72164 extern void flockfile (FILE *__stream) throw ();
72165
72166
72167
72168 extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
72169
72170
72171 extern void funlockfile (FILE *__stream) throw ();
72172 # 927 "/usr/include/stdio.h" 3 4
72173 # 1 "/usr/include/bits/stdio.h" 1 3 4
72174 # 44 "/usr/include/bits/stdio.h" 3 4
72175 extern __inline __attribute__ ((__gnu_inline__)) int
72176 getchar (void)
72177 {
72178 return _IO_getc (stdin);
72179 }
72180
72181
72182
72183
72184 extern __inline __attribute__ ((__gnu_inline__)) int
72185 fgetc_unlocked (FILE *__fp)
72186 {
72187 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
72188 }
72189
72190
72191
72192
72193
72194 extern __inline __attribute__ ((__gnu_inline__)) int
72195 getc_unlocked (FILE *__fp)
72196 {
72197 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
72198 }
72199
72200
72201 extern __inline __attribute__ ((__gnu_inline__)) int
72202 getchar_unlocked (void)
72203 {
72204 return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
72205 }
72206
72207
72208
72209
72210 extern __inline __attribute__ ((__gnu_inline__)) int
72211 putchar (int __c)
72212 {
72213 return _IO_putc (__c, stdout);
72214 }
72215
72216
72217
72218
72219 extern __inline __attribute__ ((__gnu_inline__)) int
72220 fputc_unlocked (int __c, FILE *__stream)
72221 {
72222 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
72223 }
72224
72225
72226
72227
72228
72229 extern __inline __attribute__ ((__gnu_inline__)) int
72230 putc_unlocked (int __c, FILE *__stream)
72231 {
72232 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
72233 }
72234
72235
72236 extern __inline __attribute__ ((__gnu_inline__)) int
72237 putchar_unlocked (int __c)
72238 {
72239 return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
72240 }
72241
72242
72243
72244
72245
72246 extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
72247 getline (char **__lineptr, size_t *__n, FILE *__stream)
72248 {
72249 return __getdelim (__lineptr, __n, '\n', __stream);
72250 }
72251
72252
72253
72254
72255
72256 extern __inline __attribute__ ((__gnu_inline__)) int
72257 feof_unlocked (FILE *__stream) throw ()
72258 {
72259 return (((__stream)->_flags & 0x10) != 0);
72260 }
72261
72262
72263 extern __inline __attribute__ ((__gnu_inline__)) int
72264 ferror_unlocked (FILE *__stream) throw ()
72265 {
72266 return (((__stream)->_flags & 0x20) != 0);
72267 }
72268 # 928 "/usr/include/stdio.h" 2 3 4
72269
72270
72271 # 1 "/usr/include/bits/stdio2.h" 1 3 4
72272 # 24 "/usr/include/bits/stdio2.h" 3 4
72273 extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
72274 __const char *__restrict __format, ...) throw ();
72275 extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
72276 __const char *__restrict __format,
72277 __gnuc_va_list __ap) throw ();
72278
72279
72280 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72281 sprintf (char *__restrict __s, __const char *__restrict __fmt, ...) throw ()
72282 {
72283 return __builtin___sprintf_chk (__s, 2 - 1,
72284 __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
72285 }
72286
72287
72288
72289
72290
72291
72292 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72293 vsprintf (char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
72294
72295 {
72296 return __builtin___vsprintf_chk (__s, 2 - 1,
72297 __builtin_object_size (__s, 2 > 1), __fmt, __ap);
72298 }
72299
72300
72301
72302 extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
72303 size_t __slen, __const char *__restrict __format,
72304 ...) throw ();
72305 extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
72306 size_t __slen, __const char *__restrict __format,
72307 __gnuc_va_list __ap) throw ();
72308
72309
72310 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72311 snprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...) throw ()
72312
72313 {
72314 return __builtin___snprintf_chk (__s, __n, 2 - 1,
72315 __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
72316 }
72317
72318
72319
72320
72321
72322
72323 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72324 vsnprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
72325
72326 {
72327 return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
72328 __builtin_object_size (__s, 2 > 1), __fmt, __ap);
72329 }
72330
72331
72332
72333
72334
72335 extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
72336 __const char *__restrict __format, ...);
72337 extern int __printf_chk (int __flag, __const char *__restrict __format, ...);
72338 extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
72339 __const char *__restrict __format, __gnuc_va_list __ap);
72340 extern int __vprintf_chk (int __flag, __const char *__restrict __format,
72341 __gnuc_va_list __ap);
72342
72343
72344 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72345 fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
72346 {
72347 return __fprintf_chk (__stream, 2 - 1, __fmt,
72348 __builtin_va_arg_pack ());
72349 }
72350
72351 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72352 printf (__const char *__restrict __fmt, ...)
72353 {
72354 return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
72355 }
72356
72357
72358
72359
72360
72361
72362
72363 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72364 vprintf (__const char *__restrict __fmt, __gnuc_va_list __ap)
72365 {
72366
72367 return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
72368
72369
72370
72371 }
72372
72373 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72374 vfprintf (FILE *__restrict __stream,
72375 __const char *__restrict __fmt, __gnuc_va_list __ap)
72376 {
72377 return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
72378 }
72379
72380
72381
72382 extern int __asprintf_chk (char **__restrict __ptr, int __flag,
72383 __const char *__restrict __fmt, ...)
72384 throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
72385 extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
72386 __const char *__restrict __fmt, __gnuc_va_list __arg)
72387 throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
72388 extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt,
72389 ...) __attribute__ ((__format__ (__printf__, 3, 4)));
72390 extern int __vdprintf_chk (int __fd, int __flag,
72391 __const char *__restrict __fmt, __gnuc_va_list __arg)
72392 __attribute__ ((__format__ (__printf__, 3, 0)));
72393 extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
72394 int __flag, __const char *__restrict __format,
72395 ...)
72396 throw () __attribute__ ((__format__ (__printf__, 3, 4)));
72397 extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
72398 int __flag,
72399 __const char *__restrict __format,
72400 __gnuc_va_list __args)
72401 throw () __attribute__ ((__format__ (__printf__, 3, 0)));
72402
72403
72404 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72405 asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()
72406 {
72407 return __asprintf_chk (__ptr, 2 - 1, __fmt,
72408 __builtin_va_arg_pack ());
72409 }
72410
72411 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72412 __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()
72413
72414 {
72415 return __asprintf_chk (__ptr, 2 - 1, __fmt,
72416 __builtin_va_arg_pack ());
72417 }
72418
72419 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72420 dprintf (int __fd, __const char *__restrict __fmt, ...)
72421 {
72422 return __dprintf_chk (__fd, 2 - 1, __fmt,
72423 __builtin_va_arg_pack ());
72424 }
72425
72426 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72427 obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, ...) throw ()
72428
72429 {
72430 return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
72431 __builtin_va_arg_pack ());
72432 }
72433 # 195 "/usr/include/bits/stdio2.h" 3 4
72434 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72435 vasprintf (char **__restrict __ptr, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
72436
72437 {
72438 return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
72439 }
72440
72441 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72442 vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __ap)
72443 {
72444 return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
72445 }
72446
72447 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
72448 obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
72449
72450 {
72451 return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
72452 __ap);
72453 }
72454
72455
72456
72457
72458
72459 extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__));
72460 extern char *__gets_warn (char *__str) __asm__ ("" "gets")
72461 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size")))
72462 ;
72463
72464 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
72465 gets (char *__str)
72466 {
72467 if (__builtin_object_size (__str, 2 > 1) != (size_t) -1)
72468 return __gets_chk (__str, __builtin_object_size (__str, 2 > 1));
72469 return __gets_warn (__str);
72470 }
72471
72472 extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
72473 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72474 extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets")
72475
72476 __attribute__ ((__warn_unused_result__));
72477 extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
72478
72479
72480 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")))
72481 ;
72482
72483 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
72484 fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
72485 {
72486 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
72487 {
72488 if (!__builtin_constant_p (__n) || __n <= 0)
72489 return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
72490
72491 if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
72492 return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
72493 }
72494 return __fgets_alias (__s, __n, __stream);
72495 }
72496
72497 extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
72498 size_t __size, size_t __n,
72499 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72500 extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread")
72501
72502
72503 __attribute__ ((__warn_unused_result__));
72504 extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk")
72505
72506
72507
72508
72509 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")))
72510 ;
72511
72512 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
72513 fread (void *__restrict __ptr, size_t __size, size_t __n,
72514 FILE *__restrict __stream)
72515 {
72516 if (__builtin_object_size (__ptr, 0) != (size_t) -1)
72517 {
72518 if (!__builtin_constant_p (__size)
72519 || !__builtin_constant_p (__n)
72520 || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
72521 return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
72522
72523 if (__size * __n > __builtin_object_size (__ptr, 0))
72524 return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
72525 }
72526 return __fread_alias (__ptr, __size, __n, __stream);
72527 }
72528
72529
72530 extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
72531 int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72532 extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked")
72533
72534 __attribute__ ((__warn_unused_result__));
72535 extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
72536
72537
72538 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")))
72539 ;
72540
72541 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
72542 fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
72543 {
72544 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
72545 {
72546 if (!__builtin_constant_p (__n) || __n <= 0)
72547 return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
72548
72549 if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
72550 return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
72551 }
72552 return __fgets_unlocked_alias (__s, __n, __stream);
72553 }
72554
72555
72556
72557
72558 extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
72559 size_t __size, size_t __n,
72560 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
72561 extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked")
72562
72563
72564 __attribute__ ((__warn_unused_result__));
72565 extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
72566
72567
72568
72569
72570 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")))
72571 ;
72572
72573 extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
72574 fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
72575 FILE *__restrict __stream)
72576 {
72577 if (__builtin_object_size (__ptr, 0) != (size_t) -1)
72578 {
72579 if (!__builtin_constant_p (__size)
72580 || !__builtin_constant_p (__n)
72581 || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
72582 return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
72583 __stream);
72584
72585 if (__size * __n > __builtin_object_size (__ptr, 0))
72586 return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
72587 __stream);
72588 }
72589
72590
72591 if (__builtin_constant_p (__size)
72592 && __builtin_constant_p (__n)
72593 && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
72594 && __size * __n <= 8)
72595 {
72596 size_t __cnt = __size * __n;
72597 char *__cptr = (char *) __ptr;
72598 if (__cnt == 0)
72599 return 0;
72600
72601 for (; __cnt > 0; --__cnt)
72602 {
72603 int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++);
72604 if (__c == (-1))
72605 break;
72606 *__cptr++ = __c;
72607 }
72608 return (__cptr - (char *) __ptr) / __size;
72609 }
72610
72611 return __fread_unlocked_alias (__ptr, __size, __n, __stream);
72612 }
72613 # 931 "/usr/include/stdio.h" 2 3 4
72614
72615
72616
72617
72618
72619 }
72620 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 2 3
72621 # 92 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 3
72622 namespace std
72623 {
72624 using ::FILE;
72625 using ::fpos_t;
72626
72627 using ::clearerr;
72628 using ::fclose;
72629 using ::feof;
72630 using ::ferror;
72631 using ::fflush;
72632 using ::fgetc;
72633 using ::fgetpos;
72634 using ::fgets;
72635 using ::fopen;
72636 using ::fprintf;
72637 using ::fputc;
72638 using ::fputs;
72639 using ::fread;
72640 using ::freopen;
72641 using ::fscanf;
72642 using ::fseek;
72643 using ::fsetpos;
72644 using ::ftell;
72645 using ::fwrite;
72646 using ::getc;
72647 using ::getchar;
72648 using ::gets;
72649 using ::perror;
72650 using ::printf;
72651 using ::putc;
72652 using ::putchar;
72653 using ::puts;
72654 using ::remove;
72655 using ::rename;
72656 using ::rewind;
72657 using ::scanf;
72658 using ::setbuf;
72659 using ::setvbuf;
72660 using ::sprintf;
72661 using ::sscanf;
72662 using ::tmpfile;
72663 using ::tmpnam;
72664 using ::ungetc;
72665 using ::vfprintf;
72666 using ::vprintf;
72667 using ::vsprintf;
72668 }
72669 # 148 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 3
72670 namespace __gnu_cxx
72671 {
72672 # 166 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstdio" 3
72673 using ::snprintf;
72674 using ::vfscanf;
72675 using ::vscanf;
72676 using ::vsnprintf;
72677 using ::vsscanf;
72678
72679 }
72680
72681 namespace std
72682 {
72683 using ::__gnu_cxx::snprintf;
72684 using ::__gnu_cxx::vfscanf;
72685 using ::__gnu_cxx::vscanf;
72686 using ::__gnu_cxx::vsnprintf;
72687 using ::__gnu_cxx::vsscanf;
72688 }
72689 # 56 "../boost/lexical_cast.hpp" 2
72690
72691
72692 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 1 3
72693 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
72694
72695 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cmath" 3
72696 # 59 "../boost/lexical_cast.hpp" 2
72697
72698
72699
72700
72701
72702
72703
72704 # 1 "../boost/numeric/conversion/cast.hpp" 1
72705 # 32 "../boost/numeric/conversion/cast.hpp"
72706 # 1 "../boost/type.hpp" 1
72707 # 9 "../boost/type.hpp"
72708 namespace boost {
72709
72710
72711
72712 template <class T>
72713 struct type {};
72714
72715 }
72716 # 33 "../boost/numeric/conversion/cast.hpp" 2
72717 # 1 "../boost/numeric/conversion/converter.hpp" 1
72718 # 13 "../boost/numeric/conversion/converter.hpp"
72719 # 1 "../boost/numeric/conversion/conversion_traits.hpp" 1
72720 # 13 "../boost/numeric/conversion/conversion_traits.hpp"
72721 # 1 "../boost/numeric/conversion/detail/conversion_traits.hpp" 1
72722 # 17 "../boost/numeric/conversion/detail/conversion_traits.hpp"
72723 # 1 "../boost/numeric/conversion/detail/meta.hpp" 1
72724 # 17 "../boost/numeric/conversion/detail/meta.hpp"
72725 # 1 "../boost/mpl/equal_to.hpp" 1
72726 # 19 "../boost/mpl/equal_to.hpp"
72727 # 1 "../boost/mpl/aux_/comparison_op.hpp" 1
72728 # 27 "../boost/mpl/aux_/comparison_op.hpp"
72729 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
72730 # 21 "../boost/mpl/aux_/numeric_op.hpp"
72731 # 1 "../boost/mpl/numeric_cast.hpp" 1
72732 # 30 "../boost/mpl/numeric_cast.hpp"
72733 namespace boost { namespace mpl {
72734
72735
72736
72737 template< typename SourceTag, typename TargetTag > struct numeric_cast
72738 {
72739 template< typename N > struct apply;
72740 };
72741
72742 }}
72743 # 22 "../boost/mpl/aux_/numeric_op.hpp" 2
72744 # 1 "../boost/mpl/apply_wrap.hpp" 1
72745 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
72746
72747 # 1 "../boost/mpl/tag.hpp" 1
72748 # 19 "../boost/mpl/tag.hpp"
72749 # 1 "../boost/mpl/aux_/has_tag.hpp" 1
72750 # 19 "../boost/mpl/aux_/has_tag.hpp"
72751 namespace boost { namespace mpl { namespace aux {
72752 template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_tag { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::tag>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
72753 }}}
72754 # 20 "../boost/mpl/tag.hpp" 2
72755
72756
72757 namespace boost { namespace mpl {
72758
72759 namespace aux {
72760 template< typename T > struct tag_impl
72761 {
72762 typedef typename T::tag type;
72763 };
72764 }
72765
72766 template< typename T, typename Default = void_ > struct tag
72767
72768 : if_<
72769 aux::has_tag<T>
72770 , aux::tag_impl<T>
72771 , Default
72772 >::type
72773 {
72774 # 48 "../boost/mpl/tag.hpp"
72775 };
72776
72777 }}
72778 # 25 "../boost/mpl/aux_/numeric_op.hpp" 2
72779 # 1 "../boost/mpl/aux_/numeric_cast_utils.hpp" 1
72780 # 18 "../boost/mpl/aux_/numeric_cast_utils.hpp"
72781 # 1 "../boost/mpl/apply_wrap.hpp" 1
72782 # 19 "../boost/mpl/aux_/numeric_cast_utils.hpp" 2
72783 # 1 "../boost/mpl/aux_/config/forwarding.hpp" 1
72784 # 20 "../boost/mpl/aux_/numeric_cast_utils.hpp" 2
72785
72786 namespace boost { namespace mpl { namespace aux {
72787
72788 template<
72789 typename F
72790 , typename Tag1
72791 , typename Tag2
72792 >
72793 struct cast1st_impl
72794 {
72795 template< typename N1, typename N2 > struct apply
72796
72797 : apply_wrap2<
72798 F
72799 , typename apply_wrap1< numeric_cast<Tag1,Tag2>,N1 >::type
72800 , N2
72801 >
72802 {
72803 # 46 "../boost/mpl/aux_/numeric_cast_utils.hpp"
72804 };
72805 };
72806
72807 template<
72808 typename F
72809 , typename Tag1
72810 , typename Tag2
72811 >
72812 struct cast2nd_impl
72813 {
72814 template< typename N1, typename N2 > struct apply
72815
72816 : apply_wrap2<
72817 F
72818 , N1
72819 , typename apply_wrap1< numeric_cast<Tag2,Tag1>,N2 >::type
72820 >
72821 {
72822 # 72 "../boost/mpl/aux_/numeric_cast_utils.hpp"
72823 };
72824 };
72825
72826 }}}
72827 # 26 "../boost/mpl/aux_/numeric_op.hpp" 2
72828
72829
72830
72831 # 1 "../boost/mpl/aux_/msvc_eti_base.hpp" 1
72832 # 17 "../boost/mpl/aux_/msvc_eti_base.hpp"
72833 # 1 "../boost/mpl/aux_/is_msvc_eti_arg.hpp" 1
72834 # 21 "../boost/mpl/aux_/is_msvc_eti_arg.hpp"
72835 namespace boost { namespace mpl { namespace aux {
72836 # 62 "../boost/mpl/aux_/is_msvc_eti_arg.hpp"
72837 }}}
72838 # 18 "../boost/mpl/aux_/msvc_eti_base.hpp" 2
72839
72840
72841
72842
72843 namespace boost { namespace mpl { namespace aux {
72844 # 55 "../boost/mpl/aux_/msvc_eti_base.hpp"
72845 template< typename T > struct msvc_eti_base
72846 : T
72847 {
72848
72849 msvc_eti_base();
72850
72851 typedef T type;
72852 };
72853
72854
72855
72856 template<> struct msvc_eti_base<int>
72857 {
72858 typedef msvc_eti_base type;
72859 typedef msvc_eti_base first;
72860 typedef msvc_eti_base second;
72861 typedef msvc_eti_base tag;
72862 enum { value = 0 };
72863 };
72864
72865 }}}
72866 # 30 "../boost/mpl/aux_/numeric_op.hpp" 2
72867 # 28 "../boost/mpl/aux_/comparison_op.hpp" 2
72868
72869
72870
72871
72872
72873
72874
72875 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
72876 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
72877 # 1 "../boost/mpl/aux_/preprocessed/gcc/equal_to.hpp" 1
72878 # 12 "../boost/mpl/aux_/preprocessed/gcc/equal_to.hpp"
72879 namespace boost { namespace mpl {
72880
72881 template<
72882 typename Tag1
72883 , typename Tag2
72884 >
72885 struct equal_to_impl
72886 : if_c<
72887 ( Tag1::value
72888 > Tag2::value
72889 )
72890
72891 , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
72892 , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
72893 >::type
72894 {
72895 };
72896
72897
72898 template<> struct equal_to_impl< na,na >
72899 {
72900 template< typename U1, typename U2 > struct apply
72901 {
72902 typedef apply type;
72903 static const int value = 0;
72904 };
72905 };
72906
72907 template< typename Tag > struct equal_to_impl< na,Tag >
72908 {
72909 template< typename U1, typename U2 > struct apply
72910 {
72911 typedef apply type;
72912 static const int value = 0;
72913 };
72914 };
72915
72916 template< typename Tag > struct equal_to_impl< Tag,na >
72917 {
72918 template< typename U1, typename U2 > struct apply
72919 {
72920 typedef apply type;
72921 static const int value = 0;
72922 };
72923 };
72924
72925 template< typename T > struct equal_to_tag
72926 {
72927 typedef typename T::tag type;
72928 };
72929
72930 template<
72931 typename N1 = na
72932 , typename N2 = na
72933 >
72934 struct equal_to
72935
72936 : equal_to_impl<
72937 typename equal_to_tag<N1>::type
72938 , typename equal_to_tag<N2>::type
72939 >::template apply< N1,N2 >::type
72940 {
72941
72942
72943 };
72944
72945 template<> struct equal_to< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : equal_to< T1 , T2 > { }; }; template< typename Tag > struct lambda< equal_to< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef equal_to< na , na > result_; typedef equal_to< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< equal_to< T1 , T2 > > : int_<2> { }; template<> struct template_arity< equal_to< na , na > > : int_<-1> { }; }
72946
72947 }}
72948
72949 namespace boost { namespace mpl {
72950
72951 template<>
72952 struct equal_to_impl< integral_c_tag,integral_c_tag >
72953 {
72954 template< typename N1, typename N2 > struct apply
72955
72956 : bool_< ( N1::value == N2::value ) >
72957 {
72958 };
72959 };
72960
72961 }}
72962 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
72963 # 36 "../boost/mpl/aux_/comparison_op.hpp" 2
72964 # 20 "../boost/mpl/equal_to.hpp" 2
72965 # 18 "../boost/numeric/conversion/detail/meta.hpp" 2
72966
72967
72968
72969
72970
72971 namespace boost { namespace numeric { namespace convdetail
72972 {
72973 template< class T1, class T2>
72974 struct equal_to
72975 {
72976
72977
72978 enum { x = ( T1::value == T2::value ) };
72979
72980 static const bool value = x;
72981
72982 typedef mpl::bool_<value> type;
72983 # 48 "../boost/numeric/conversion/detail/meta.hpp"
72984 };
72985 # 59 "../boost/numeric/conversion/detail/meta.hpp"
72986 template<class Value,
72987 class Case0Val,
72988 class Case1Val,
72989 class Case2Val,
72990 class Case0Type,
72991 class Case1Type,
72992 class Case2Type,
72993 class DefaultType
72994 >
72995 struct ct_switch4
72996 {
72997 typedef mpl::identity<Case0Type> Case0TypeQ ;
72998 typedef mpl::identity<Case1Type> Case1TypeQ ;
72999
73000 typedef equal_to<Value,Case0Val> is_case0 ;
73001 typedef equal_to<Value,Case1Val> is_case1 ;
73002 typedef equal_to<Value,Case2Val> is_case2 ;
73003
73004 typedef mpl::if_<is_case2,Case2Type,DefaultType> choose_2_3Q ;
73005 typedef mpl::eval_if<is_case1,Case1TypeQ,choose_2_3Q> choose_1_2_3Q ;
73006
73007 typedef typename
73008 mpl::eval_if<is_case0,Case0TypeQ,choose_1_2_3Q>::type
73009 type ;
73010 } ;
73011 # 97 "../boost/numeric/conversion/detail/meta.hpp"
73012 template<class expr0, class expr1, class TT, class TF, class FT, class FF>
73013 struct for_both
73014 {
73015 typedef mpl::identity<TF> TF_Q ;
73016 typedef mpl::identity<TT> TT_Q ;
73017
73018 typedef typename mpl::not_<expr0>::type not_expr0 ;
73019 typedef typename mpl::not_<expr1>::type not_expr1 ;
73020
73021 typedef typename mpl::and_<expr0,expr1>::type caseTT ;
73022 typedef typename mpl::and_<expr0,not_expr1>::type caseTF ;
73023 typedef typename mpl::and_<not_expr0,expr1>::type caseFT ;
73024
73025 typedef mpl::if_<caseFT,FT,FF> choose_FT_FF_Q ;
73026 typedef mpl::eval_if<caseTF,TF_Q,choose_FT_FF_Q> choose_TF_FT_FF_Q ;
73027
73028 typedef typename mpl::eval_if<caseTT,TT_Q,choose_TF_FT_FF_Q>::type type ;
73029 } ;
73030
73031 } } }
73032 # 18 "../boost/numeric/conversion/detail/conversion_traits.hpp" 2
73033 # 1 "../boost/numeric/conversion/detail/int_float_mixture.hpp" 1
73034 # 16 "../boost/numeric/conversion/detail/int_float_mixture.hpp"
73035 # 1 "../boost/numeric/conversion/int_float_mixture_enum.hpp" 1
73036 # 13 "../boost/numeric/conversion/int_float_mixture_enum.hpp"
73037 namespace boost { namespace numeric
73038 {
73039 enum int_float_mixture_enum
73040 {
73041 integral_to_integral
73042 ,integral_to_float
73043 ,float_to_integral
73044 ,float_to_float
73045 } ;
73046
73047 } }
73048 # 17 "../boost/numeric/conversion/detail/int_float_mixture.hpp" 2
73049
73050
73051
73052
73053 namespace boost { namespace numeric { namespace convdetail
73054 {
73055
73056 typedef mpl::integral_c<int_float_mixture_enum, integral_to_integral> int2int_c ;
73057 typedef mpl::integral_c<int_float_mixture_enum, integral_to_float> int2float_c ;
73058 typedef mpl::integral_c<int_float_mixture_enum, float_to_integral> float2int_c ;
73059 typedef mpl::integral_c<int_float_mixture_enum, float_to_float> float2float_c ;
73060
73061
73062
73063
73064
73065
73066
73067 template<class T,class S>
73068 struct get_int_float_mixture
73069 {
73070 typedef mpl::bool_< ::std::numeric_limits<S>::is_integer > S_int ;
73071 typedef mpl::bool_< ::std::numeric_limits<T>::is_integer > T_int ;
73072
73073 typedef typename
73074 for_both<S_int, T_int, int2int_c, int2float_c, float2int_c, float2float_c>::type
73075 type ;
73076 } ;
73077 # 55 "../boost/numeric/conversion/detail/int_float_mixture.hpp"
73078 template<class IntFloatMixture, class Int2Int, class Int2Float, class Float2Int, class Float2Float>
73079 struct for_int_float_mixture
73080 {
73081 typedef typename
73082 ct_switch4<IntFloatMixture
73083 ,int2int_c, int2float_c, float2int_c
73084 ,Int2Int , Int2Float , Float2Int , Float2Float
73085 >::type
73086 type ;
73087 } ;
73088
73089 } } }
73090 # 19 "../boost/numeric/conversion/detail/conversion_traits.hpp" 2
73091 # 1 "../boost/numeric/conversion/detail/sign_mixture.hpp" 1
73092 # 16 "../boost/numeric/conversion/detail/sign_mixture.hpp"
73093 # 1 "../boost/numeric/conversion/sign_mixture_enum.hpp" 1
73094 # 13 "../boost/numeric/conversion/sign_mixture_enum.hpp"
73095 namespace boost { namespace numeric
73096 {
73097 enum sign_mixture_enum
73098 {
73099 unsigned_to_unsigned
73100 ,signed_to_signed
73101 ,signed_to_unsigned
73102 ,unsigned_to_signed
73103 } ;
73104
73105 } }
73106 # 17 "../boost/numeric/conversion/detail/sign_mixture.hpp" 2
73107
73108
73109
73110
73111 namespace boost { namespace numeric { namespace convdetail
73112 {
73113
73114 typedef mpl::integral_c<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
73115 typedef mpl::integral_c<sign_mixture_enum, signed_to_signed> sig2sig_c ;
73116 typedef mpl::integral_c<sign_mixture_enum, signed_to_unsigned> sig2unsig_c ;
73117 typedef mpl::integral_c<sign_mixture_enum, unsigned_to_signed> unsig2sig_c ;
73118
73119
73120
73121
73122
73123
73124
73125 template<class T,class S>
73126 struct get_sign_mixture
73127 {
73128 typedef mpl::bool_< ::std::numeric_limits<S>::is_signed > S_signed ;
73129 typedef mpl::bool_< ::std::numeric_limits<T>::is_signed > T_signed ;
73130
73131 typedef typename
73132 for_both<S_signed, T_signed, sig2sig_c, sig2unsig_c, unsig2sig_c, unsig2unsig_c>::type
73133 type ;
73134 } ;
73135 # 55 "../boost/numeric/conversion/detail/sign_mixture.hpp"
73136 template<class SignMixture, class Sig2Sig, class Sig2Unsig, class Unsig2Sig, class Unsig2Unsig>
73137 struct for_sign_mixture
73138 {
73139 typedef typename
73140 ct_switch4<SignMixture
73141 , sig2sig_c, sig2unsig_c, unsig2sig_c
73142 , Sig2Sig , Sig2Unsig , Unsig2Sig , Unsig2Unsig
73143 >::type
73144 type ;
73145 } ;
73146
73147 } } }
73148 # 20 "../boost/numeric/conversion/detail/conversion_traits.hpp" 2
73149 # 1 "../boost/numeric/conversion/detail/udt_builtin_mixture.hpp" 1
73150 # 15 "../boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
73151 # 1 "../boost/numeric/conversion/udt_builtin_mixture_enum.hpp" 1
73152 # 13 "../boost/numeric/conversion/udt_builtin_mixture_enum.hpp"
73153 namespace boost { namespace numeric
73154 {
73155 enum udt_builtin_mixture_enum
73156 {
73157 builtin_to_builtin
73158 ,builtin_to_udt
73159 ,udt_to_builtin
73160 ,udt_to_udt
73161 } ;
73162
73163 } }
73164 # 16 "../boost/numeric/conversion/detail/udt_builtin_mixture.hpp" 2
73165
73166
73167
73168
73169 namespace boost { namespace numeric { namespace convdetail
73170 {
73171
73172 typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
73173 typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_udt> builtin2udt_c ;
73174 typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_builtin> udt2builtin_c ;
73175 typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_udt> udt2udt_c ;
73176 # 37 "../boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
73177 template<class UdtMixture, class BuiltIn2BuiltIn, class BuiltIn2Udt, class Udt2BuiltIn, class Udt2Udt>
73178 struct for_udt_builtin_mixture
73179 {
73180 typedef typename
73181 ct_switch4<UdtMixture
73182 , builtin2builtin_c, builtin2udt_c, udt2builtin_c
73183 , BuiltIn2BuiltIn , BuiltIn2Udt , Udt2BuiltIn , Udt2Udt
73184 >::type
73185 type ;
73186 } ;
73187
73188
73189
73190
73191
73192
73193
73194 template<class T,class S>
73195 struct get_udt_builtin_mixture
73196 {
73197 typedef is_arithmetic<S> S_builtin ;
73198 typedef is_arithmetic<T> T_builtin ;
73199
73200 typedef typename
73201 for_both<S_builtin, T_builtin, builtin2builtin_c, builtin2udt_c, udt2builtin_c, udt2udt_c>::type
73202 type ;
73203 } ;
73204
73205 } } }
73206 # 21 "../boost/numeric/conversion/detail/conversion_traits.hpp" 2
73207 # 1 "../boost/numeric/conversion/detail/is_subranged.hpp" 1
73208 # 17 "../boost/numeric/conversion/detail/is_subranged.hpp"
73209 # 1 "../boost/mpl/multiplies.hpp" 1
73210 # 17 "../boost/mpl/multiplies.hpp"
73211 # 1 "../boost/mpl/times.hpp" 1
73212 # 19 "../boost/mpl/times.hpp"
73213 # 1 "../boost/mpl/aux_/arithmetic_op.hpp" 1
73214 # 18 "../boost/mpl/aux_/arithmetic_op.hpp"
73215 # 1 "../boost/mpl/aux_/largest_int.hpp" 1
73216 # 22 "../boost/mpl/aux_/largest_int.hpp"
73217 namespace boost { namespace mpl { namespace aux {
73218
73219 template< typename T > struct integral_rank;
73220
73221 template<> struct integral_rank<bool> : int_<1> {};
73222 template<> struct integral_rank<signed char> : int_<2> {};
73223 template<> struct integral_rank<char> : int_<3> {};
73224 template<> struct integral_rank<unsigned char> : int_<4> {};
73225
73226 template<> struct integral_rank<wchar_t> : int_<5> {};
73227
73228 template<> struct integral_rank<short> : int_<6> {};
73229 template<> struct integral_rank<unsigned short> : int_<7> {};
73230 template<> struct integral_rank<int> : int_<8> {};
73231 template<> struct integral_rank<unsigned int> : int_<9> {};
73232 template<> struct integral_rank<long> : int_<10> {};
73233 template<> struct integral_rank<unsigned long> : int_<11> {};
73234
73235
73236 template<> struct integral_rank<long_long_type> : int_<12> {};
73237 template<> struct integral_rank<ulong_long_type>: int_<13> {};
73238
73239
73240 template< typename T1, typename T2 > struct largest_int
73241
73242 : if_c<
73243 ( integral_rank<T1>::value >= integral_rank<T2>::value )
73244 , T1
73245 , T2
73246 >
73247 {
73248
73249
73250
73251
73252
73253
73254 };
73255
73256 }}}
73257 # 19 "../boost/mpl/aux_/arithmetic_op.hpp" 2
73258
73259
73260
73261
73262
73263
73264
73265 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
73266 # 22 "../boost/mpl/aux_/numeric_op.hpp"
73267 # 1 "../boost/mpl/apply_wrap.hpp" 1
73268 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
73269 # 27 "../boost/mpl/aux_/arithmetic_op.hpp" 2
73270
73271
73272
73273
73274
73275
73276
73277 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
73278 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
73279 # 1 "../boost/mpl/aux_/preprocessed/gcc/times.hpp" 1
73280 # 12 "../boost/mpl/aux_/preprocessed/gcc/times.hpp"
73281 namespace boost { namespace mpl {
73282
73283 template<
73284 typename Tag1
73285 , typename Tag2
73286 >
73287 struct times_impl
73288 : if_c<
73289 ( Tag1::value
73290 > Tag2::value
73291 )
73292
73293 , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
73294 , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
73295 >::type
73296 {
73297 };
73298
73299
73300 template<> struct times_impl< na,na >
73301 {
73302 template< typename U1, typename U2 > struct apply
73303 {
73304 typedef apply type;
73305 static const int value = 0;
73306 };
73307 };
73308
73309 template< typename Tag > struct times_impl< na,Tag >
73310 {
73311 template< typename U1, typename U2 > struct apply
73312 {
73313 typedef apply type;
73314 static const int value = 0;
73315 };
73316 };
73317
73318 template< typename Tag > struct times_impl< Tag,na >
73319 {
73320 template< typename U1, typename U2 > struct apply
73321 {
73322 typedef apply type;
73323 static const int value = 0;
73324 };
73325 };
73326
73327 template< typename T > struct times_tag
73328 {
73329 typedef typename T::tag type;
73330 };
73331
73332 template<
73333 typename N1 = na
73334 , typename N2 = na
73335 , typename N3 = na, typename N4 = na, typename N5 = na
73336 >
73337 struct times
73338 : times< times< times< times< N1,N2 >, N3>, N4>, N5>
73339 {
73340
73341
73342
73343
73344
73345 };
73346
73347 template<
73348 typename N1, typename N2, typename N3, typename N4
73349 >
73350 struct times< N1,N2,N3,N4,na >
73351
73352 : times< times< times< N1,N2 >, N3>, N4>
73353 {
73354
73355
73356
73357
73358
73359 };
73360
73361 template<
73362 typename N1, typename N2, typename N3
73363 >
73364 struct times< N1,N2,N3,na,na >
73365
73366 : times< times< N1,N2 >, N3>
73367 {
73368
73369
73370
73371
73372
73373 };
73374
73375 template<
73376 typename N1, typename N2
73377 >
73378 struct times< N1,N2,na,na,na >
73379 : times_impl<
73380 typename times_tag<N1>::type
73381 , typename times_tag<N2>::type
73382 >::template apply< N1,N2 >::type
73383 {
73384
73385
73386
73387
73388
73389
73390 };
73391
73392 template<> struct times< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : times< T1 , T2 > { }; }; template< typename Tag > struct lambda< times< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef times< na , na > result_; typedef times< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< times< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< times< na , na > > : int_<-1> { }; }
73393
73394 }}
73395
73396 namespace boost { namespace mpl {
73397 template<>
73398 struct times_impl< integral_c_tag,integral_c_tag >
73399 {
73400 template< typename N1, typename N2 > struct apply
73401
73402 : integral_c<
73403 typename aux::largest_int<
73404 typename N1::value_type
73405 , typename N2::value_type
73406 >::type
73407 , ( N1::value
73408 * N2::value
73409 )
73410 >
73411 {
73412 };
73413 };
73414
73415 }}
73416 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
73417 # 35 "../boost/mpl/aux_/arithmetic_op.hpp" 2
73418 # 20 "../boost/mpl/times.hpp" 2
73419 # 18 "../boost/mpl/multiplies.hpp" 2
73420
73421
73422 # 1 "../boost/mpl/aux_/preprocessor/default_params.hpp" 1
73423 # 21 "../boost/mpl/multiplies.hpp" 2
73424
73425
73426
73427
73428
73429 namespace boost { namespace mpl {
73430
73431
73432
73433
73434
73435
73436
73437 template<
73438 typename N1 = na , typename N2 = na , typename N3 = na , typename N4 = na , typename N5 = na
73439 >
73440 struct multiplies
73441 : times< N1 , N2 , N3 , N4 , N5 >
73442 {
73443
73444
73445
73446
73447
73448 };
73449
73450 template<> struct multiplies< na , na , na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct apply : multiplies< T1 , T2 , T3 , T4 , T5 > { }; }; template< typename Tag > struct lambda< multiplies< na , na , na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef multiplies< na , na , na , na , na > result_; typedef multiplies< na , na , na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< multiplies< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< multiplies< na , na , na , na , na > > : int_<-1> { }; }
73451
73452
73453
73454 }}
73455 # 18 "../boost/numeric/conversion/detail/is_subranged.hpp" 2
73456 # 1 "../boost/mpl/less.hpp" 1
73457 # 19 "../boost/mpl/less.hpp"
73458 # 1 "../boost/mpl/aux_/comparison_op.hpp" 1
73459 # 27 "../boost/mpl/aux_/comparison_op.hpp"
73460 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
73461 # 22 "../boost/mpl/aux_/numeric_op.hpp"
73462 # 1 "../boost/mpl/apply_wrap.hpp" 1
73463 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
73464 # 28 "../boost/mpl/aux_/comparison_op.hpp" 2
73465
73466
73467
73468
73469
73470
73471
73472 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
73473 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
73474 # 1 "../boost/mpl/aux_/preprocessed/gcc/less.hpp" 1
73475 # 12 "../boost/mpl/aux_/preprocessed/gcc/less.hpp"
73476 namespace boost { namespace mpl {
73477
73478 template<
73479 typename Tag1
73480 , typename Tag2
73481 >
73482 struct less_impl
73483 : if_c<
73484 ( Tag1::value
73485 > Tag2::value
73486 )
73487
73488 , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
73489 , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
73490 >::type
73491 {
73492 };
73493
73494
73495 template<> struct less_impl< na,na >
73496 {
73497 template< typename U1, typename U2 > struct apply
73498 {
73499 typedef apply type;
73500 static const int value = 0;
73501 };
73502 };
73503
73504 template< typename Tag > struct less_impl< na,Tag >
73505 {
73506 template< typename U1, typename U2 > struct apply
73507 {
73508 typedef apply type;
73509 static const int value = 0;
73510 };
73511 };
73512
73513 template< typename Tag > struct less_impl< Tag,na >
73514 {
73515 template< typename U1, typename U2 > struct apply
73516 {
73517 typedef apply type;
73518 static const int value = 0;
73519 };
73520 };
73521
73522 template< typename T > struct less_tag
73523 {
73524 typedef typename T::tag type;
73525 };
73526
73527 template<
73528 typename N1 = na
73529 , typename N2 = na
73530 >
73531 struct less
73532
73533 : less_impl<
73534 typename less_tag<N1>::type
73535 , typename less_tag<N2>::type
73536 >::template apply< N1,N2 >::type
73537 {
73538
73539
73540 };
73541
73542 template<> struct less< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : less< T1 , T2 > { }; }; template< typename Tag > struct lambda< less< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef less< na , na > result_; typedef less< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< less< T1 , T2 > > : int_<2> { }; template<> struct template_arity< less< na , na > > : int_<-1> { }; }
73543
73544 }}
73545
73546 namespace boost { namespace mpl {
73547
73548 template<>
73549 struct less_impl< integral_c_tag,integral_c_tag >
73550 {
73551 template< typename N1, typename N2 > struct apply
73552
73553 : bool_< ( N2::value > N1::value ) >
73554 {
73555 };
73556 };
73557
73558 }}
73559 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
73560 # 36 "../boost/mpl/aux_/comparison_op.hpp" 2
73561 # 20 "../boost/mpl/less.hpp" 2
73562 # 19 "../boost/numeric/conversion/detail/is_subranged.hpp" 2
73563 # 28 "../boost/numeric/conversion/detail/is_subranged.hpp"
73564 namespace boost { namespace numeric { namespace convdetail
73565 {
73566
73567
73568
73569
73570
73571 template<class T,class S>
73572 struct subranged_Sig2Unsig
73573 {
73574
73575
73576 typedef mpl::true_ type ;
73577 } ;
73578
73579
73580 template<class T,class S>
73581 struct subranged_Unsig2Sig
73582 {
73583 # 62 "../boost/numeric/conversion/detail/is_subranged.hpp"
73584 typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
73585 typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
73586
73587
73588 typedef typename T_digits::next u_T_digits ;
73589
73590 typedef mpl::int_<2> Two ;
73591
73592 typedef typename mpl::multiplies<S_digits,Two>::type S_digits_times_2 ;
73593
73594 typedef typename mpl::less<u_T_digits,S_digits_times_2>::type type ;
73595 } ;
73596
73597
73598 template<class T,class S>
73599 struct subranged_SameSign
73600 {
73601
73602
73603 typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
73604 typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
73605
73606 typedef typename mpl::less<T_digits,S_digits>::type type ;
73607 } ;
73608
73609
73610 template<class T,class S>
73611 struct subranged_Int2Float
73612 {
73613 typedef mpl::false_ type ;
73614 } ;
73615
73616
73617 template<class T,class S>
73618 struct subranged_Float2Int
73619 {
73620 typedef mpl::true_ type ;
73621 } ;
73622
73623
73624 template<class T,class S>
73625 struct subranged_Float2Float
73626 {
73627
73628
73629
73630 typedef mpl::int_< ::std::numeric_limits<S>::digits > S_mantisa ;
73631 typedef mpl::int_< ::std::numeric_limits<T>::digits > T_mantisa ;
73632
73633 typedef mpl::int_< ::std::numeric_limits<S>::max_exponent > S_exponent ;
73634 typedef mpl::int_< ::std::numeric_limits<T>::max_exponent > T_exponent ;
73635
73636 typedef typename mpl::less<T_exponent,S_exponent>::type T_smaller_exponent ;
73637
73638 typedef typename mpl::equal_to<T_exponent,S_exponent>::type equal_exponents ;
73639
73640 typedef mpl::less<T_mantisa,S_mantisa> T_smaller_mantisa ;
73641
73642 typedef mpl::eval_if<equal_exponents,T_smaller_mantisa,mpl::false_> not_bigger_exponent_case ;
73643
73644 typedef typename
73645 mpl::eval_if<T_smaller_exponent,mpl::true_,not_bigger_exponent_case>::type
73646 type ;
73647 } ;
73648
73649
73650 template<class T,class S>
73651 struct subranged_Udt2BuiltIn
73652 {
73653 typedef mpl::true_ type ;
73654 } ;
73655
73656
73657 template<class T,class S>
73658 struct subranged_BuiltIn2Udt
73659 {
73660 typedef mpl::false_ type ;
73661 } ;
73662
73663
73664 template<class T,class S>
73665 struct subranged_Udt2Udt
73666 {
73667 typedef mpl::false_ type ;
73668 } ;
73669
73670
73671
73672
73673
73674 template<class T,class S>
73675 struct get_subranged_Int2Int
73676 {
73677 typedef subranged_SameSign<T,S> Sig2Sig ;
73678 typedef subranged_Sig2Unsig<T,S> Sig2Unsig ;
73679 typedef subranged_Unsig2Sig<T,S> Unsig2Sig ;
73680 typedef Sig2Sig Unsig2Unsig ;
73681
73682 typedef typename get_sign_mixture<T,S>::type sign_mixture ;
73683
73684 typedef typename
73685 for_sign_mixture<sign_mixture, Sig2Sig, Sig2Unsig, Unsig2Sig, Unsig2Unsig>::type
73686 type ;
73687 } ;
73688
73689 template<class T,class S>
73690 struct get_subranged_BuiltIn2BuiltIn
73691 {
73692 typedef get_subranged_Int2Int<T,S> Int2IntQ ;
73693
73694 typedef subranged_Int2Float <T,S> Int2Float ;
73695 typedef subranged_Float2Int <T,S> Float2Int ;
73696 typedef subranged_Float2Float<T,S> Float2Float ;
73697
73698 typedef mpl::identity<Int2Float > Int2FloatQ ;
73699 typedef mpl::identity<Float2Int > Float2IntQ ;
73700 typedef mpl::identity<Float2Float> Float2FloatQ ;
73701
73702 typedef typename get_int_float_mixture<T,S>::type int_float_mixture ;
73703
73704 typedef for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ> for_ ;
73705
73706 typedef typename for_::type selected ;
73707
73708 typedef typename selected::type type ;
73709 } ;
73710
73711 template<class T,class S>
73712 struct get_subranged
73713 {
73714 typedef get_subranged_BuiltIn2BuiltIn<T,S> BuiltIn2BuiltInQ ;
73715
73716 typedef subranged_BuiltIn2Udt<T,S> BuiltIn2Udt ;
73717 typedef subranged_Udt2BuiltIn<T,S> Udt2BuiltIn ;
73718 typedef subranged_Udt2Udt<T,S> Udt2Udt ;
73719
73720 typedef mpl::identity<BuiltIn2Udt> BuiltIn2UdtQ ;
73721 typedef mpl::identity<Udt2BuiltIn> Udt2BuiltInQ ;
73722 typedef mpl::identity<Udt2Udt > Udt2UdtQ ;
73723
73724 typedef typename get_udt_builtin_mixture<T,S>::type udt_builtin_mixture ;
73725
73726 typedef typename
73727 for_udt_builtin_mixture<udt_builtin_mixture, BuiltIn2BuiltInQ, BuiltIn2UdtQ, Udt2BuiltInQ, Udt2UdtQ>::type
73728 selected ;
73729
73730 typedef typename selected::type selected2 ;
73731
73732 typedef typename selected2::type type ;
73733 } ;
73734
73735
73736
73737
73738
73739 template<class T, class S>
73740 struct get_is_subranged
73741 {
73742 typedef get_subranged<T,S> non_trivial_case ;
73743 typedef mpl::identity<mpl::false_> trivial_case ;
73744
73745 typedef is_same<T,S> is_trivial ;
73746
73747 typedef typename mpl::if_<is_trivial,trivial_case,non_trivial_case>::type selected ;
73748
73749 typedef typename selected::type type ;
73750 } ;
73751
73752 } } }
73753 # 22 "../boost/numeric/conversion/detail/conversion_traits.hpp" 2
73754
73755 namespace boost { namespace numeric { namespace convdetail
73756 {
73757
73758
73759
73760
73761
73762 template<class T,class S>
73763 struct non_trivial_traits_impl
73764 {
73765 typedef typename get_int_float_mixture <T,S>::type int_float_mixture ;
73766 typedef typename get_sign_mixture <T,S>::type sign_mixture ;
73767 typedef typename get_udt_builtin_mixture <T,S>::type udt_builtin_mixture ;
73768
73769 typedef typename get_is_subranged<T,S>::type subranged ;
73770
73771 typedef mpl::false_ trivial ;
73772
73773 typedef T target_type ;
73774 typedef S source_type ;
73775 typedef T result_type ;
73776
73777 typedef typename mpl::if_< is_arithmetic<S>, S, S const&>::type argument_type ;
73778
73779 typedef typename mpl::if_<subranged,S,T>::type supertype ;
73780 typedef typename mpl::if_<subranged,T,S>::type subtype ;
73781 } ;
73782
73783
73784
73785
73786
73787
73788 template<class N>
73789 struct trivial_traits_impl
73790 {
73791 typedef typename get_int_float_mixture <N,N>::type int_float_mixture ;
73792 typedef typename get_sign_mixture <N,N>::type sign_mixture ;
73793 typedef typename get_udt_builtin_mixture<N,N>::type udt_builtin_mixture ;
73794
73795 typedef mpl::false_ subranged ;
73796 typedef mpl::true_ trivial ;
73797
73798 typedef N target_type ;
73799 typedef N source_type ;
73800 typedef N const& result_type ;
73801 typedef N const& argument_type ;
73802
73803 typedef N supertype ;
73804 typedef N subtype ;
73805
73806 } ;
73807
73808
73809
73810
73811 template<class T, class S>
73812 struct get_conversion_traits
73813 {
73814 typedef typename remove_cv<T>::type target_type ;
73815 typedef typename remove_cv<S>::type source_type ;
73816
73817 typedef typename is_same<target_type,source_type>::type is_trivial ;
73818
73819 typedef trivial_traits_impl <target_type> trivial_imp ;
73820 typedef non_trivial_traits_impl<target_type,source_type> non_trivial_imp ;
73821
73822 typedef typename mpl::if_<is_trivial,trivial_imp,non_trivial_imp>::type type ;
73823 } ;
73824
73825 } } }
73826 # 14 "../boost/numeric/conversion/conversion_traits.hpp" 2
73827
73828
73829
73830 namespace boost { namespace numeric
73831 {
73832
73833 template<class T, class S>
73834 struct conversion_traits
73835 : convdetail::get_conversion_traits<T,S>::type
73836 {
73837
73838
73839
73840
73841
73842
73843
73844 } ;
73845
73846 } }
73847 # 14 "../boost/numeric/conversion/converter.hpp" 2
73848 # 1 "../boost/numeric/conversion/converter_policies.hpp" 1
73849 # 24 "../boost/numeric/conversion/converter_policies.hpp"
73850 namespace boost { namespace numeric
73851 {
73852
73853 template<class S>
73854 struct Trunc
73855 {
73856 typedef S source_type ;
73857
73858 typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
73859
73860 static source_type nearbyint ( argument_type s )
73861 {
73862
73863 using std::floor ;
73864 using std::ceil ;
73865
73866
73867 return s < static_cast<S>(0) ? ceil(s) : floor(s) ;
73868 }
73869
73870 typedef mpl::integral_c< std::float_round_style, std::round_toward_zero> round_style ;
73871 } ;
73872
73873
73874
73875 template<class S>
73876 struct Floor
73877 {
73878 typedef S source_type ;
73879
73880 typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
73881
73882 static source_type nearbyint ( argument_type s )
73883 {
73884
73885 using std::floor ;
73886
73887
73888 return floor(s) ;
73889 }
73890
73891 typedef mpl::integral_c< std::float_round_style, std::round_toward_neg_infinity> round_style ;
73892 } ;
73893
73894 template<class S>
73895 struct Ceil
73896 {
73897 typedef S source_type ;
73898
73899 typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
73900
73901 static source_type nearbyint ( argument_type s )
73902 {
73903
73904 using std::ceil ;
73905
73906
73907 return ceil(s) ;
73908 }
73909
73910 typedef mpl::integral_c< std::float_round_style, std::round_toward_infinity> round_style ;
73911 } ;
73912
73913 template<class S>
73914 struct RoundEven
73915 {
73916 typedef S source_type ;
73917
73918 typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
73919
73920 static source_type nearbyint ( argument_type s )
73921 {
73922
73923
73924
73925 using std::floor ;
73926 using std::ceil ;
73927
73928
73929
73930 S prev = floor(s);
73931 S next = ceil(s);
73932
73933 S rt = (s - prev) - (next - s);
73934
73935 S const zero(0.0);
73936 S const two(2.0);
73937
73938 if ( rt < zero )
73939 return prev;
73940 else if ( rt > zero )
73941 return next;
73942 else
73943 {
73944 bool is_prev_even = two * floor(prev / two) == prev ;
73945 return ( is_prev_even ? prev : next ) ;
73946 }
73947 }
73948
73949 typedef mpl::integral_c< std::float_round_style, std::round_to_nearest> round_style ;
73950 } ;
73951
73952
73953 enum range_check_result
73954 {
73955 cInRange = 0 ,
73956 cNegOverflow = 1 ,
73957 cPosOverflow = 2
73958 } ;
73959
73960 class bad_numeric_cast : public std::bad_cast
73961 {
73962 public:
73963
73964 virtual const char * what() const throw()
73965 { return "bad numeric conversion: overflow"; }
73966 };
73967
73968 class negative_overflow : public bad_numeric_cast
73969 {
73970 public:
73971
73972 virtual const char * what() const throw()
73973 { return "bad numeric conversion: negative overflow"; }
73974 };
73975 class positive_overflow : public bad_numeric_cast
73976 {
73977 public:
73978
73979 virtual const char * what() const throw()
73980 { return "bad numeric conversion: positive overflow"; }
73981 };
73982
73983 struct def_overflow_handler
73984 {
73985 void operator() ( range_check_result r )
73986 {
73987 if ( r == cNegOverflow )
73988 throw negative_overflow() ;
73989 else if ( r == cPosOverflow )
73990 throw positive_overflow() ;
73991 }
73992 } ;
73993
73994 struct silent_overflow_handler
73995 {
73996 void operator() ( range_check_result ) {}
73997 } ;
73998
73999 template<class Traits>
74000 struct raw_converter
74001 {
74002 typedef typename Traits::result_type result_type ;
74003 typedef typename Traits::argument_type argument_type ;
74004
74005 static result_type low_level_convert ( argument_type s ) { return static_cast<result_type>(s) ; }
74006 } ;
74007
74008 struct UseInternalRangeChecker {} ;
74009
74010 } }
74011 # 15 "../boost/numeric/conversion/converter.hpp" 2
74012
74013 # 1 "../boost/numeric/conversion/detail/converter.hpp" 1
74014 # 17 "../boost/numeric/conversion/detail/converter.hpp"
74015 # 1 "../boost/numeric/conversion/bounds.hpp" 1
74016 # 13 "../boost/numeric/conversion/bounds.hpp"
74017 # 1 "../boost/numeric/conversion/detail/bounds.hpp" 1
74018 # 17 "../boost/numeric/conversion/detail/bounds.hpp"
74019 namespace boost { namespace numeric { namespace boundsdetail
74020 {
74021 template<class N>
74022 class Integral
74023 {
74024 typedef std::numeric_limits<N> limits ;
74025
74026 public :
74027
74028 static N lowest () { return limits::min (); }
74029 static N highest () { return limits::max (); }
74030 static N smallest() { return static_cast<N>(1); }
74031 } ;
74032
74033 template<class N>
74034 class Float
74035 {
74036 typedef std::numeric_limits<N> limits ;
74037
74038 public :
74039
74040 static N lowest () { return static_cast<N>(-limits::max ()) ; }
74041 static N highest () { return limits::max (); }
74042 static N smallest() { return limits::min (); }
74043 } ;
74044
74045 template<class N>
74046 struct get_impl
74047 {
74048 typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
74049
74050 typedef Integral<N> impl_int ;
74051 typedef Float <N> impl_float ;
74052
74053 typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
74054 } ;
74055
74056 } } }
74057 # 14 "../boost/numeric/conversion/bounds.hpp" 2
74058
74059 namespace boost { namespace numeric
74060 {
74061
74062 template<class N>
74063 struct bounds : boundsdetail::get_impl<N>::type
74064 {} ;
74065
74066 } }
74067 # 18 "../boost/numeric/conversion/detail/converter.hpp" 2
74068
74069
74070
74071
74072
74073 namespace boost { namespace numeric { namespace convdetail
74074 {
74075
74076 typedef mpl::integral_c<std::float_round_style, std::round_toward_zero> round2zero_c ;
74077 typedef mpl::integral_c<std::float_round_style, std::round_to_nearest> round2nearest_c ;
74078 typedef mpl::integral_c<std::float_round_style, std::round_toward_infinity> round2inf_c ;
74079 typedef mpl::integral_c<std::float_round_style, std::round_toward_neg_infinity> round2neg_inf_c ;
74080 # 40 "../boost/numeric/conversion/detail/converter.hpp"
74081 template<class RoundStyle,class RoundToZero,class RoundToNearest,class RoundToInf,class RoundToNegInf>
74082 struct for_round_style
74083 {
74084 typedef ct_switch4<RoundStyle
74085 , round2zero_c, round2nearest_c, round2inf_c
74086 , RoundToZero , RoundToNearest , RoundToInf , RoundToNegInf
74087 > selector ;
74088
74089 typedef typename selector::type type ;
74090 } ;
74091 # 81 "../boost/numeric/conversion/detail/converter.hpp"
74092 struct non_applicable { typedef mpl::false_ do_apply ; } ;
74093 struct applicable { typedef mpl::true_ do_apply ; } ;
74094 # 96 "../boost/numeric/conversion/detail/converter.hpp"
74095 template<class Traits>
74096 struct LT_LoT : applicable
74097 {
74098 typedef typename Traits::target_type T ;
74099 typedef typename Traits::source_type S ;
74100 typedef typename Traits::argument_type argument_type ;
74101
74102 static range_check_result apply ( argument_type s )
74103 {
74104 return s < static_cast<S>(bounds<T>::lowest()) ? cNegOverflow : cInRange ;
74105 }
74106 } ;
74107
74108
74109
74110 template<class Traits>
74111 struct LT_Zero : applicable
74112 {
74113 typedef typename Traits::source_type S ;
74114 typedef typename Traits::argument_type argument_type ;
74115
74116 static range_check_result apply ( argument_type s )
74117 {
74118 return s < static_cast<S>(0) ? cNegOverflow : cInRange ;
74119 }
74120 } ;
74121
74122
74123
74124 template<class Traits>
74125 struct LE_PrevLoT : applicable
74126 {
74127 typedef typename Traits::target_type T ;
74128 typedef typename Traits::source_type S ;
74129 typedef typename Traits::argument_type argument_type ;
74130
74131 static range_check_result apply ( argument_type s )
74132 {
74133 return s <= static_cast<S>(bounds<T>::lowest()) - static_cast<S>(1.0)
74134 ? cNegOverflow : cInRange ;
74135 }
74136 } ;
74137
74138
74139
74140 template<class Traits>
74141 struct LT_HalfPrevLoT : applicable
74142 {
74143 typedef typename Traits::target_type T ;
74144 typedef typename Traits::source_type S ;
74145 typedef typename Traits::argument_type argument_type ;
74146
74147 static range_check_result apply ( argument_type s )
74148 {
74149 return s < static_cast<S>(bounds<T>::lowest()) - static_cast<S>(0.5)
74150 ? cNegOverflow : cInRange ;
74151 }
74152 } ;
74153
74154
74155
74156 template<class Traits>
74157 struct GT_HiT : applicable
74158 {
74159 typedef typename Traits::target_type T ;
74160 typedef typename Traits::source_type S ;
74161 typedef typename Traits::argument_type argument_type ;
74162
74163 static range_check_result apply ( argument_type s )
74164 {
74165 return s > static_cast<S>(bounds<T>::highest())
74166 ? cPosOverflow : cInRange ;
74167 }
74168 } ;
74169
74170
74171
74172 template<class Traits>
74173 struct GE_SuccHiT : applicable
74174 {
74175 typedef typename Traits::target_type T ;
74176 typedef typename Traits::source_type S ;
74177 typedef typename Traits::argument_type argument_type ;
74178
74179 static range_check_result apply ( argument_type s )
74180 {
74181 return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(1.0)
74182 ? cPosOverflow : cInRange ;
74183 }
74184 } ;
74185
74186
74187
74188 template<class Traits>
74189 struct GT_HalfSuccHiT : applicable
74190 {
74191 typedef typename Traits::target_type T ;
74192 typedef typename Traits::source_type S ;
74193 typedef typename Traits::argument_type argument_type ;
74194
74195 static range_check_result apply ( argument_type s )
74196 {
74197 return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(0.5)
74198 ? cPosOverflow : cInRange ;
74199 }
74200 } ;
74201 # 215 "../boost/numeric/conversion/detail/converter.hpp"
74202 template<class PredA, class PredB>
74203 struct applyBoth
74204 {
74205 typedef typename PredA::argument_type argument_type ;
74206
74207 static range_check_result apply ( argument_type s )
74208 {
74209 range_check_result r = PredA::apply(s) ;
74210 if ( r == cInRange )
74211 r = PredB::apply(s);
74212 return r ;
74213 }
74214 } ;
74215
74216 template<class PredA, class PredB>
74217 struct combine
74218 {
74219 typedef applyBoth<PredA,PredB> Both ;
74220 typedef void NNone ;
74221
74222 typedef typename PredA::do_apply do_applyA ;
74223 typedef typename PredB::do_apply do_applyB ;
74224
74225 typedef typename for_both<do_applyA, do_applyB, Both, PredA, PredB, NNone>::type type ;
74226 } ;
74227 # 262 "../boost/numeric/conversion/detail/converter.hpp"
74228 template<class Traits>
74229 struct dummy_range_checker
74230 {
74231 typedef typename Traits::argument_type argument_type ;
74232
74233 static range_check_result out_of_range ( argument_type ) { return cInRange ; }
74234 static void validate_range ( argument_type ) {}
74235 } ;
74236 # 279 "../boost/numeric/conversion/detail/converter.hpp"
74237 template<class Traits, class IsNegOverflow, class IsPosOverflow, class OverflowHandler>
74238 struct generic_range_checker
74239 {
74240 typedef OverflowHandler overflow_handler ;
74241
74242 typedef typename Traits::argument_type argument_type ;
74243
74244 static range_check_result out_of_range ( argument_type s )
74245 {
74246 typedef typename combine<IsNegOverflow,IsPosOverflow>::type Predicate ;
74247
74248 return Predicate::apply(s);
74249 }
74250
74251 static void validate_range ( argument_type s )
74252 { OverflowHandler()( out_of_range(s) ) ; }
74253 } ;
74254 # 305 "../boost/numeric/conversion/detail/converter.hpp"
74255 template<class Traits,class OverflowHandler>
74256 struct GetRC_Sig2Sig_or_Unsig2Unsig
74257 {
74258 typedef dummy_range_checker<Traits> Dummy ;
74259
74260 typedef LT_LoT<Traits> Pred1 ;
74261 typedef GT_HiT<Traits> Pred2 ;
74262
74263 typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
74264
74265 typedef typename Traits::subranged subranged ;
74266
74267 typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
74268 } ;
74269
74270 template<class Traits, class OverflowHandler>
74271 struct GetRC_Sig2Unsig
74272 {
74273 typedef LT_Zero<Traits> Pred1 ;
74274 typedef GT_HiT <Traits> Pred2 ;
74275
74276 typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ChoiceA ;
74277
74278 typedef generic_range_checker<Traits,Pred1,non_applicable,OverflowHandler> ChoiceB ;
74279
74280 typedef typename Traits::target_type T ;
74281 typedef typename Traits::source_type S ;
74282
74283 typedef typename subranged_Unsig2Sig<S,T>::type oposite_subranged ;
74284
74285 typedef typename mpl::not_<oposite_subranged>::type positively_subranged ;
74286
74287 typedef typename mpl::if_<positively_subranged,ChoiceA,ChoiceB>::type type ;
74288 } ;
74289
74290 template<class Traits, class OverflowHandler>
74291 struct GetRC_Unsig2Sig
74292 {
74293 typedef GT_HiT<Traits> Pred1 ;
74294
74295 typedef generic_range_checker<Traits,non_applicable,Pred1,OverflowHandler> type ;
74296 } ;
74297
74298 template<class Traits,class OverflowHandler>
74299 struct GetRC_Int2Int
74300 {
74301 typedef GetRC_Sig2Sig_or_Unsig2Unsig<Traits,OverflowHandler> Sig2SigQ ;
74302 typedef GetRC_Sig2Unsig <Traits,OverflowHandler> Sig2UnsigQ ;
74303 typedef GetRC_Unsig2Sig <Traits,OverflowHandler> Unsig2SigQ ;
74304 typedef Sig2SigQ Unsig2UnsigQ ;
74305
74306 typedef typename Traits::sign_mixture sign_mixture ;
74307
74308 typedef typename
74309 for_sign_mixture<sign_mixture,Sig2SigQ,Sig2UnsigQ,Unsig2SigQ,Unsig2UnsigQ>::type
74310 selector ;
74311
74312 typedef typename selector::type type ;
74313 } ;
74314
74315 template<class Traits>
74316 struct GetRC_Int2Float
74317 {
74318 typedef dummy_range_checker<Traits> type ;
74319 } ;
74320
74321 template<class Traits, class OverflowHandler, class Float2IntRounder>
74322 struct GetRC_Float2Int
74323 {
74324 typedef LE_PrevLoT <Traits> Pred1 ;
74325 typedef GE_SuccHiT <Traits> Pred2 ;
74326 typedef LT_HalfPrevLoT<Traits> Pred3 ;
74327 typedef GT_HalfSuccHiT<Traits> Pred4 ;
74328 typedef GT_HiT <Traits> Pred5 ;
74329 typedef LT_LoT <Traits> Pred6 ;
74330
74331 typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ToZero ;
74332 typedef generic_range_checker<Traits,Pred3,Pred4,OverflowHandler> ToNearest ;
74333 typedef generic_range_checker<Traits,Pred1,Pred5,OverflowHandler> ToInf ;
74334 typedef generic_range_checker<Traits,Pred6,Pred2,OverflowHandler> ToNegInf ;
74335
74336 typedef typename Float2IntRounder::round_style round_style ;
74337
74338 typedef typename for_round_style<round_style,ToZero,ToNearest,ToInf,ToNegInf>::type type ;
74339 } ;
74340
74341 template<class Traits, class OverflowHandler>
74342 struct GetRC_Float2Float
74343 {
74344 typedef dummy_range_checker<Traits> Dummy ;
74345
74346 typedef LT_LoT<Traits> Pred1 ;
74347 typedef GT_HiT<Traits> Pred2 ;
74348
74349 typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
74350
74351 typedef typename Traits::subranged subranged ;
74352
74353 typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
74354 } ;
74355
74356 template<class Traits, class OverflowHandler, class Float2IntRounder>
74357 struct GetRC_BuiltIn2BuiltIn
74358 {
74359 typedef GetRC_Int2Int<Traits,OverflowHandler> Int2IntQ ;
74360 typedef GetRC_Int2Float<Traits> Int2FloatQ ;
74361 typedef GetRC_Float2Int<Traits,OverflowHandler,Float2IntRounder> Float2IntQ ;
74362 typedef GetRC_Float2Float<Traits,OverflowHandler> Float2FloatQ ;
74363
74364 typedef typename Traits::int_float_mixture int_float_mixture ;
74365
74366 typedef typename for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ>::type selector ;
74367
74368 typedef typename selector::type type ;
74369 } ;
74370
74371 template<class Traits, class OverflowHandler, class Float2IntRounder>
74372 struct GetRC
74373 {
74374 typedef GetRC_BuiltIn2BuiltIn<Traits,OverflowHandler,Float2IntRounder> BuiltIn2BuiltInQ ;
74375
74376 typedef dummy_range_checker<Traits> Dummy ;
74377
74378 typedef mpl::identity<Dummy> DummyQ ;
74379
74380 typedef typename Traits::udt_builtin_mixture udt_builtin_mixture ;
74381
74382 typedef typename for_udt_builtin_mixture<udt_builtin_mixture,BuiltIn2BuiltInQ,DummyQ,DummyQ,DummyQ>::type selector ;
74383
74384 typedef typename selector::type type ;
74385 } ;
74386 # 452 "../boost/numeric/conversion/detail/converter.hpp"
74387 template<class Traits>
74388 struct trivial_converter_impl : public std::unary_function< typename Traits::argument_type
74389 ,typename Traits::result_type
74390 >
74391 ,public dummy_range_checker<Traits>
74392 {
74393 typedef Traits traits ;
74394
74395 typedef typename Traits::source_type source_type ;
74396 typedef typename Traits::argument_type argument_type ;
74397 typedef typename Traits::result_type result_type ;
74398
74399 static result_type low_level_convert ( argument_type s ) { return s ; }
74400 static source_type nearbyint ( argument_type s ) { return s ; }
74401 static result_type convert ( argument_type s ) { return s ; }
74402 } ;
74403
74404
74405
74406
74407
74408 template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
74409 struct rounding_converter : public std::unary_function< typename Traits::argument_type
74410 ,typename Traits::result_type
74411 >
74412 ,public RangeChecker
74413 ,public Float2IntRounder
74414 ,public RawConverter
74415 {
74416 typedef RangeChecker RangeCheckerBase ;
74417 typedef Float2IntRounder Float2IntRounderBase ;
74418 typedef RawConverter RawConverterBase ;
74419
74420 typedef Traits traits ;
74421
74422 typedef typename Traits::source_type source_type ;
74423 typedef typename Traits::argument_type argument_type ;
74424 typedef typename Traits::result_type result_type ;
74425
74426 static result_type convert ( argument_type s )
74427 {
74428 RangeCheckerBase::validate_range(s);
74429 source_type s1 = Float2IntRounderBase::nearbyint(s);
74430 return RawConverterBase::low_level_convert(s1);
74431 }
74432 } ;
74433
74434
74435
74436
74437
74438 template<class Traits,class RangeChecker,class RawConverter>
74439 struct non_rounding_converter : public std::unary_function< typename Traits::argument_type
74440 ,typename Traits::result_type
74441 >
74442 ,public RangeChecker
74443 ,public RawConverter
74444 {
74445 typedef RangeChecker RangeCheckerBase ;
74446 typedef RawConverter RawConverterBase ;
74447
74448 typedef Traits traits ;
74449
74450 typedef typename Traits::source_type source_type ;
74451 typedef typename Traits::argument_type argument_type ;
74452 typedef typename Traits::result_type result_type ;
74453
74454 static source_type nearbyint ( argument_type s ) { return s ; }
74455
74456 static result_type convert ( argument_type s )
74457 {
74458 RangeCheckerBase::validate_range(s);
74459 return RawConverterBase::low_level_convert(s);
74460 }
74461 } ;
74462 # 537 "../boost/numeric/conversion/detail/converter.hpp"
74463 template<class Traits,class OverflowHandler,class Float2IntRounder,class RawConverter, class UserRangeChecker>
74464 struct get_non_trivial_converter
74465 {
74466 typedef GetRC<Traits,OverflowHandler,Float2IntRounder> InternalRangeCheckerQ ;
74467
74468 typedef is_same<UserRangeChecker,UseInternalRangeChecker> use_internal_RC ;
74469
74470 typedef mpl::identity<UserRangeChecker> UserRangeCheckerQ ;
74471
74472 typedef typename
74473 mpl::eval_if<use_internal_RC,InternalRangeCheckerQ,UserRangeCheckerQ>::type
74474 RangeChecker ;
74475
74476 typedef non_rounding_converter<Traits,RangeChecker,RawConverter> NonRounding ;
74477 typedef rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder> Rounding ;
74478
74479 typedef mpl::identity<NonRounding> NonRoundingQ ;
74480 typedef mpl::identity<Rounding> RoundingQ ;
74481
74482 typedef typename Traits::int_float_mixture int_float_mixture ;
74483
74484 typedef typename
74485 for_int_float_mixture<int_float_mixture, NonRoundingQ, NonRoundingQ, RoundingQ, NonRoundingQ>::type
74486 selector ;
74487
74488 typedef typename selector::type type ;
74489 } ;
74490
74491 template< class Traits
74492 ,class OverflowHandler
74493 ,class Float2IntRounder
74494 ,class RawConverter
74495 ,class UserRangeChecker
74496 >
74497 struct get_converter_impl
74498 {
74499 # 583 "../boost/numeric/conversion/detail/converter.hpp"
74500 typedef trivial_converter_impl<Traits> Trivial ;
74501 typedef mpl::identity <Trivial> TrivialQ ;
74502
74503 typedef get_non_trivial_converter< Traits
74504 ,OverflowHandler
74505 ,Float2IntRounder
74506 ,RawConverter
74507 ,UserRangeChecker
74508 > NonTrivialQ ;
74509
74510 typedef typename Traits::trivial trivial ;
74511
74512 typedef typename mpl::eval_if<trivial,TrivialQ,NonTrivialQ>::type type ;
74513 } ;
74514
74515 } } }
74516 # 17 "../boost/numeric/conversion/converter.hpp" 2
74517
74518 namespace boost { namespace numeric
74519 {
74520
74521 template<class T,
74522 class S,
74523 class Traits = conversion_traits<T,S>,
74524 class OverflowHandler = def_overflow_handler,
74525 class Float2IntRounder = Trunc< typename Traits::source_type> ,
74526 class RawConverter = raw_converter<Traits>,
74527 class UserRangeChecker = UseInternalRangeChecker
74528 >
74529 struct converter : convdetail::get_converter_impl<Traits,
74530 OverflowHandler,
74531 Float2IntRounder,
74532 RawConverter,
74533 UserRangeChecker
74534 >::type
74535 {
74536 typedef Traits traits ;
74537
74538 typedef typename Traits::argument_type argument_type ;
74539 typedef typename Traits::result_type result_type ;
74540
74541 result_type operator() ( argument_type s ) const { return this->convert(s) ; }
74542 } ;
74543
74544
74545
74546 template<class S,
74547 class OverflowHandler = def_overflow_handler,
74548 class Float2IntRounder = Trunc<S> ,
74549 class UserRangeChecker = UseInternalRangeChecker
74550 >
74551 struct make_converter_from
74552 {
74553 template<class T,
74554 class Traits = conversion_traits<T,S>,
74555 class RawConverter = raw_converter<Traits>
74556 >
74557 struct to
74558 {
74559 typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
74560 } ;
74561
74562 } ;
74563
74564 } }
74565 # 34 "../boost/numeric/conversion/cast.hpp" 2
74566 # 1 "../boost/numeric/conversion/numeric_cast_traits.hpp" 1
74567 # 14 "../boost/numeric/conversion/numeric_cast_traits.hpp"
74568 namespace boost { namespace numeric {
74569
74570 template <typename Target, typename Source, typename EnableIf = void>
74571 struct numeric_cast_traits
74572 {
74573 typedef def_overflow_handler overflow_policy;
74574 typedef UseInternalRangeChecker range_checking_policy;
74575 typedef Trunc<Source> rounding_policy;
74576 };
74577
74578 }}
74579
74580
74581 # 1 "../boost/cstdint.hpp" 1
74582 # 28 "../boost/numeric/conversion/numeric_cast_traits.hpp" 2
74583 # 1 "../boost/numeric/conversion/detail/numeric_cast_traits.hpp" 1
74584 # 12 "../boost/numeric/conversion/detail/numeric_cast_traits.hpp"
74585 # 1 "../boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp" 1
74586 # 12 "../boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp"
74587 namespace boost { namespace numeric {
74588
74589 template <>
74590 struct numeric_cast_traits
74591 <
74592 char
74593 , char
74594 >
74595 {
74596 typedef def_overflow_handler overflow_policy;
74597 typedef UseInternalRangeChecker range_checking_policy;
74598 typedef Trunc<char> rounding_policy;
74599 };
74600
74601 template <>
74602 struct numeric_cast_traits
74603 <
74604 char
74605 , signed char
74606 >
74607 {
74608 typedef def_overflow_handler overflow_policy;
74609 typedef UseInternalRangeChecker range_checking_policy;
74610 typedef Trunc<signed char> rounding_policy;
74611 };
74612
74613 template <>
74614 struct numeric_cast_traits
74615 <
74616 char
74617 , unsigned char
74618 >
74619 {
74620 typedef def_overflow_handler overflow_policy;
74621 typedef UseInternalRangeChecker range_checking_policy;
74622 typedef Trunc<unsigned char> rounding_policy;
74623 };
74624
74625 template <>
74626 struct numeric_cast_traits
74627 <
74628 char
74629 , short
74630 >
74631 {
74632 typedef def_overflow_handler overflow_policy;
74633 typedef UseInternalRangeChecker range_checking_policy;
74634 typedef Trunc<short> rounding_policy;
74635 };
74636
74637 template <>
74638 struct numeric_cast_traits
74639 <
74640 char
74641 , unsigned short
74642 >
74643 {
74644 typedef def_overflow_handler overflow_policy;
74645 typedef UseInternalRangeChecker range_checking_policy;
74646 typedef Trunc<unsigned short> rounding_policy;
74647 };
74648
74649 template <>
74650 struct numeric_cast_traits
74651 <
74652 char
74653 , int
74654 >
74655 {
74656 typedef def_overflow_handler overflow_policy;
74657 typedef UseInternalRangeChecker range_checking_policy;
74658 typedef Trunc<int> rounding_policy;
74659 };
74660
74661 template <>
74662 struct numeric_cast_traits
74663 <
74664 char
74665 , unsigned int
74666 >
74667 {
74668 typedef def_overflow_handler overflow_policy;
74669 typedef UseInternalRangeChecker range_checking_policy;
74670 typedef Trunc<unsigned int> rounding_policy;
74671 };
74672
74673 template <>
74674 struct numeric_cast_traits
74675 <
74676 char
74677 , long
74678 >
74679 {
74680 typedef def_overflow_handler overflow_policy;
74681 typedef UseInternalRangeChecker range_checking_policy;
74682 typedef Trunc<long> rounding_policy;
74683 };
74684
74685 template <>
74686 struct numeric_cast_traits
74687 <
74688 char
74689 , unsigned long
74690 >
74691 {
74692 typedef def_overflow_handler overflow_policy;
74693 typedef UseInternalRangeChecker range_checking_policy;
74694 typedef Trunc<unsigned long> rounding_policy;
74695 };
74696
74697 template <>
74698 struct numeric_cast_traits
74699 <
74700 char
74701 , float
74702 >
74703 {
74704 typedef def_overflow_handler overflow_policy;
74705 typedef UseInternalRangeChecker range_checking_policy;
74706 typedef Trunc<float> rounding_policy;
74707 };
74708
74709 template <>
74710 struct numeric_cast_traits
74711 <
74712 char
74713 , double
74714 >
74715 {
74716 typedef def_overflow_handler overflow_policy;
74717 typedef UseInternalRangeChecker range_checking_policy;
74718 typedef Trunc<double> rounding_policy;
74719 };
74720
74721 template <>
74722 struct numeric_cast_traits
74723 <
74724 char
74725 , long double
74726 >
74727 {
74728 typedef def_overflow_handler overflow_policy;
74729 typedef UseInternalRangeChecker range_checking_policy;
74730 typedef Trunc<long double> rounding_policy;
74731 };
74732
74733 template <>
74734 struct numeric_cast_traits
74735 <
74736 signed char
74737 , char
74738 >
74739 {
74740 typedef def_overflow_handler overflow_policy;
74741 typedef UseInternalRangeChecker range_checking_policy;
74742 typedef Trunc<char> rounding_policy;
74743 };
74744
74745 template <>
74746 struct numeric_cast_traits
74747 <
74748 signed char
74749 , signed char
74750 >
74751 {
74752 typedef def_overflow_handler overflow_policy;
74753 typedef UseInternalRangeChecker range_checking_policy;
74754 typedef Trunc<signed char> rounding_policy;
74755 };
74756
74757 template <>
74758 struct numeric_cast_traits
74759 <
74760 signed char
74761 , unsigned char
74762 >
74763 {
74764 typedef def_overflow_handler overflow_policy;
74765 typedef UseInternalRangeChecker range_checking_policy;
74766 typedef Trunc<unsigned char> rounding_policy;
74767 };
74768
74769 template <>
74770 struct numeric_cast_traits
74771 <
74772 signed char
74773 , short
74774 >
74775 {
74776 typedef def_overflow_handler overflow_policy;
74777 typedef UseInternalRangeChecker range_checking_policy;
74778 typedef Trunc<short> rounding_policy;
74779 };
74780
74781 template <>
74782 struct numeric_cast_traits
74783 <
74784 signed char
74785 , unsigned short
74786 >
74787 {
74788 typedef def_overflow_handler overflow_policy;
74789 typedef UseInternalRangeChecker range_checking_policy;
74790 typedef Trunc<unsigned short> rounding_policy;
74791 };
74792
74793 template <>
74794 struct numeric_cast_traits
74795 <
74796 signed char
74797 , int
74798 >
74799 {
74800 typedef def_overflow_handler overflow_policy;
74801 typedef UseInternalRangeChecker range_checking_policy;
74802 typedef Trunc<int> rounding_policy;
74803 };
74804
74805 template <>
74806 struct numeric_cast_traits
74807 <
74808 signed char
74809 , unsigned int
74810 >
74811 {
74812 typedef def_overflow_handler overflow_policy;
74813 typedef UseInternalRangeChecker range_checking_policy;
74814 typedef Trunc<unsigned int> rounding_policy;
74815 };
74816
74817 template <>
74818 struct numeric_cast_traits
74819 <
74820 signed char
74821 , long
74822 >
74823 {
74824 typedef def_overflow_handler overflow_policy;
74825 typedef UseInternalRangeChecker range_checking_policy;
74826 typedef Trunc<long> rounding_policy;
74827 };
74828
74829 template <>
74830 struct numeric_cast_traits
74831 <
74832 signed char
74833 , unsigned long
74834 >
74835 {
74836 typedef def_overflow_handler overflow_policy;
74837 typedef UseInternalRangeChecker range_checking_policy;
74838 typedef Trunc<unsigned long> rounding_policy;
74839 };
74840
74841 template <>
74842 struct numeric_cast_traits
74843 <
74844 signed char
74845 , float
74846 >
74847 {
74848 typedef def_overflow_handler overflow_policy;
74849 typedef UseInternalRangeChecker range_checking_policy;
74850 typedef Trunc<float> rounding_policy;
74851 };
74852
74853 template <>
74854 struct numeric_cast_traits
74855 <
74856 signed char
74857 , double
74858 >
74859 {
74860 typedef def_overflow_handler overflow_policy;
74861 typedef UseInternalRangeChecker range_checking_policy;
74862 typedef Trunc<double> rounding_policy;
74863 };
74864
74865 template <>
74866 struct numeric_cast_traits
74867 <
74868 signed char
74869 , long double
74870 >
74871 {
74872 typedef def_overflow_handler overflow_policy;
74873 typedef UseInternalRangeChecker range_checking_policy;
74874 typedef Trunc<long double> rounding_policy;
74875 };
74876
74877 template <>
74878 struct numeric_cast_traits
74879 <
74880 unsigned char
74881 , char
74882 >
74883 {
74884 typedef def_overflow_handler overflow_policy;
74885 typedef UseInternalRangeChecker range_checking_policy;
74886 typedef Trunc<char> rounding_policy;
74887 };
74888
74889 template <>
74890 struct numeric_cast_traits
74891 <
74892 unsigned char
74893 , signed char
74894 >
74895 {
74896 typedef def_overflow_handler overflow_policy;
74897 typedef UseInternalRangeChecker range_checking_policy;
74898 typedef Trunc<signed char> rounding_policy;
74899 };
74900
74901 template <>
74902 struct numeric_cast_traits
74903 <
74904 unsigned char
74905 , unsigned char
74906 >
74907 {
74908 typedef def_overflow_handler overflow_policy;
74909 typedef UseInternalRangeChecker range_checking_policy;
74910 typedef Trunc<unsigned char> rounding_policy;
74911 };
74912
74913 template <>
74914 struct numeric_cast_traits
74915 <
74916 unsigned char
74917 , short
74918 >
74919 {
74920 typedef def_overflow_handler overflow_policy;
74921 typedef UseInternalRangeChecker range_checking_policy;
74922 typedef Trunc<short> rounding_policy;
74923 };
74924
74925 template <>
74926 struct numeric_cast_traits
74927 <
74928 unsigned char
74929 , unsigned short
74930 >
74931 {
74932 typedef def_overflow_handler overflow_policy;
74933 typedef UseInternalRangeChecker range_checking_policy;
74934 typedef Trunc<unsigned short> rounding_policy;
74935 };
74936
74937 template <>
74938 struct numeric_cast_traits
74939 <
74940 unsigned char
74941 , int
74942 >
74943 {
74944 typedef def_overflow_handler overflow_policy;
74945 typedef UseInternalRangeChecker range_checking_policy;
74946 typedef Trunc<int> rounding_policy;
74947 };
74948
74949 template <>
74950 struct numeric_cast_traits
74951 <
74952 unsigned char
74953 , unsigned int
74954 >
74955 {
74956 typedef def_overflow_handler overflow_policy;
74957 typedef UseInternalRangeChecker range_checking_policy;
74958 typedef Trunc<unsigned int> rounding_policy;
74959 };
74960
74961 template <>
74962 struct numeric_cast_traits
74963 <
74964 unsigned char
74965 , long
74966 >
74967 {
74968 typedef def_overflow_handler overflow_policy;
74969 typedef UseInternalRangeChecker range_checking_policy;
74970 typedef Trunc<long> rounding_policy;
74971 };
74972
74973 template <>
74974 struct numeric_cast_traits
74975 <
74976 unsigned char
74977 , unsigned long
74978 >
74979 {
74980 typedef def_overflow_handler overflow_policy;
74981 typedef UseInternalRangeChecker range_checking_policy;
74982 typedef Trunc<unsigned long> rounding_policy;
74983 };
74984
74985 template <>
74986 struct numeric_cast_traits
74987 <
74988 unsigned char
74989 , float
74990 >
74991 {
74992 typedef def_overflow_handler overflow_policy;
74993 typedef UseInternalRangeChecker range_checking_policy;
74994 typedef Trunc<float> rounding_policy;
74995 };
74996
74997 template <>
74998 struct numeric_cast_traits
74999 <
75000 unsigned char
75001 , double
75002 >
75003 {
75004 typedef def_overflow_handler overflow_policy;
75005 typedef UseInternalRangeChecker range_checking_policy;
75006 typedef Trunc<double> rounding_policy;
75007 };
75008
75009 template <>
75010 struct numeric_cast_traits
75011 <
75012 unsigned char
75013 , long double
75014 >
75015 {
75016 typedef def_overflow_handler overflow_policy;
75017 typedef UseInternalRangeChecker range_checking_policy;
75018 typedef Trunc<long double> rounding_policy;
75019 };
75020
75021 template <>
75022 struct numeric_cast_traits
75023 <
75024 short
75025 , char
75026 >
75027 {
75028 typedef def_overflow_handler overflow_policy;
75029 typedef UseInternalRangeChecker range_checking_policy;
75030 typedef Trunc<char> rounding_policy;
75031 };
75032
75033 template <>
75034 struct numeric_cast_traits
75035 <
75036 short
75037 , signed char
75038 >
75039 {
75040 typedef def_overflow_handler overflow_policy;
75041 typedef UseInternalRangeChecker range_checking_policy;
75042 typedef Trunc<signed char> rounding_policy;
75043 };
75044
75045 template <>
75046 struct numeric_cast_traits
75047 <
75048 short
75049 , unsigned char
75050 >
75051 {
75052 typedef def_overflow_handler overflow_policy;
75053 typedef UseInternalRangeChecker range_checking_policy;
75054 typedef Trunc<unsigned char> rounding_policy;
75055 };
75056
75057 template <>
75058 struct numeric_cast_traits
75059 <
75060 short
75061 , short
75062 >
75063 {
75064 typedef def_overflow_handler overflow_policy;
75065 typedef UseInternalRangeChecker range_checking_policy;
75066 typedef Trunc<short> rounding_policy;
75067 };
75068
75069 template <>
75070 struct numeric_cast_traits
75071 <
75072 short
75073 , unsigned short
75074 >
75075 {
75076 typedef def_overflow_handler overflow_policy;
75077 typedef UseInternalRangeChecker range_checking_policy;
75078 typedef Trunc<unsigned short> rounding_policy;
75079 };
75080
75081 template <>
75082 struct numeric_cast_traits
75083 <
75084 short
75085 , int
75086 >
75087 {
75088 typedef def_overflow_handler overflow_policy;
75089 typedef UseInternalRangeChecker range_checking_policy;
75090 typedef Trunc<int> rounding_policy;
75091 };
75092
75093 template <>
75094 struct numeric_cast_traits
75095 <
75096 short
75097 , unsigned int
75098 >
75099 {
75100 typedef def_overflow_handler overflow_policy;
75101 typedef UseInternalRangeChecker range_checking_policy;
75102 typedef Trunc<unsigned int> rounding_policy;
75103 };
75104
75105 template <>
75106 struct numeric_cast_traits
75107 <
75108 short
75109 , long
75110 >
75111 {
75112 typedef def_overflow_handler overflow_policy;
75113 typedef UseInternalRangeChecker range_checking_policy;
75114 typedef Trunc<long> rounding_policy;
75115 };
75116
75117 template <>
75118 struct numeric_cast_traits
75119 <
75120 short
75121 , unsigned long
75122 >
75123 {
75124 typedef def_overflow_handler overflow_policy;
75125 typedef UseInternalRangeChecker range_checking_policy;
75126 typedef Trunc<unsigned long> rounding_policy;
75127 };
75128
75129 template <>
75130 struct numeric_cast_traits
75131 <
75132 short
75133 , float
75134 >
75135 {
75136 typedef def_overflow_handler overflow_policy;
75137 typedef UseInternalRangeChecker range_checking_policy;
75138 typedef Trunc<float> rounding_policy;
75139 };
75140
75141 template <>
75142 struct numeric_cast_traits
75143 <
75144 short
75145 , double
75146 >
75147 {
75148 typedef def_overflow_handler overflow_policy;
75149 typedef UseInternalRangeChecker range_checking_policy;
75150 typedef Trunc<double> rounding_policy;
75151 };
75152
75153 template <>
75154 struct numeric_cast_traits
75155 <
75156 short
75157 , long double
75158 >
75159 {
75160 typedef def_overflow_handler overflow_policy;
75161 typedef UseInternalRangeChecker range_checking_policy;
75162 typedef Trunc<long double> rounding_policy;
75163 };
75164
75165 template <>
75166 struct numeric_cast_traits
75167 <
75168 unsigned short
75169 , char
75170 >
75171 {
75172 typedef def_overflow_handler overflow_policy;
75173 typedef UseInternalRangeChecker range_checking_policy;
75174 typedef Trunc<char> rounding_policy;
75175 };
75176
75177 template <>
75178 struct numeric_cast_traits
75179 <
75180 unsigned short
75181 , signed char
75182 >
75183 {
75184 typedef def_overflow_handler overflow_policy;
75185 typedef UseInternalRangeChecker range_checking_policy;
75186 typedef Trunc<signed char> rounding_policy;
75187 };
75188
75189 template <>
75190 struct numeric_cast_traits
75191 <
75192 unsigned short
75193 , unsigned char
75194 >
75195 {
75196 typedef def_overflow_handler overflow_policy;
75197 typedef UseInternalRangeChecker range_checking_policy;
75198 typedef Trunc<unsigned char> rounding_policy;
75199 };
75200
75201 template <>
75202 struct numeric_cast_traits
75203 <
75204 unsigned short
75205 , short
75206 >
75207 {
75208 typedef def_overflow_handler overflow_policy;
75209 typedef UseInternalRangeChecker range_checking_policy;
75210 typedef Trunc<short> rounding_policy;
75211 };
75212
75213 template <>
75214 struct numeric_cast_traits
75215 <
75216 unsigned short
75217 , unsigned short
75218 >
75219 {
75220 typedef def_overflow_handler overflow_policy;
75221 typedef UseInternalRangeChecker range_checking_policy;
75222 typedef Trunc<unsigned short> rounding_policy;
75223 };
75224
75225 template <>
75226 struct numeric_cast_traits
75227 <
75228 unsigned short
75229 , int
75230 >
75231 {
75232 typedef def_overflow_handler overflow_policy;
75233 typedef UseInternalRangeChecker range_checking_policy;
75234 typedef Trunc<int> rounding_policy;
75235 };
75236
75237 template <>
75238 struct numeric_cast_traits
75239 <
75240 unsigned short
75241 , unsigned int
75242 >
75243 {
75244 typedef def_overflow_handler overflow_policy;
75245 typedef UseInternalRangeChecker range_checking_policy;
75246 typedef Trunc<unsigned int> rounding_policy;
75247 };
75248
75249 template <>
75250 struct numeric_cast_traits
75251 <
75252 unsigned short
75253 , long
75254 >
75255 {
75256 typedef def_overflow_handler overflow_policy;
75257 typedef UseInternalRangeChecker range_checking_policy;
75258 typedef Trunc<long> rounding_policy;
75259 };
75260
75261 template <>
75262 struct numeric_cast_traits
75263 <
75264 unsigned short
75265 , unsigned long
75266 >
75267 {
75268 typedef def_overflow_handler overflow_policy;
75269 typedef UseInternalRangeChecker range_checking_policy;
75270 typedef Trunc<unsigned long> rounding_policy;
75271 };
75272
75273 template <>
75274 struct numeric_cast_traits
75275 <
75276 unsigned short
75277 , float
75278 >
75279 {
75280 typedef def_overflow_handler overflow_policy;
75281 typedef UseInternalRangeChecker range_checking_policy;
75282 typedef Trunc<float> rounding_policy;
75283 };
75284
75285 template <>
75286 struct numeric_cast_traits
75287 <
75288 unsigned short
75289 , double
75290 >
75291 {
75292 typedef def_overflow_handler overflow_policy;
75293 typedef UseInternalRangeChecker range_checking_policy;
75294 typedef Trunc<double> rounding_policy;
75295 };
75296
75297 template <>
75298 struct numeric_cast_traits
75299 <
75300 unsigned short
75301 , long double
75302 >
75303 {
75304 typedef def_overflow_handler overflow_policy;
75305 typedef UseInternalRangeChecker range_checking_policy;
75306 typedef Trunc<long double> rounding_policy;
75307 };
75308
75309 template <>
75310 struct numeric_cast_traits
75311 <
75312 int
75313 , char
75314 >
75315 {
75316 typedef def_overflow_handler overflow_policy;
75317 typedef UseInternalRangeChecker range_checking_policy;
75318 typedef Trunc<char> rounding_policy;
75319 };
75320
75321 template <>
75322 struct numeric_cast_traits
75323 <
75324 int
75325 , signed char
75326 >
75327 {
75328 typedef def_overflow_handler overflow_policy;
75329 typedef UseInternalRangeChecker range_checking_policy;
75330 typedef Trunc<signed char> rounding_policy;
75331 };
75332
75333 template <>
75334 struct numeric_cast_traits
75335 <
75336 int
75337 , unsigned char
75338 >
75339 {
75340 typedef def_overflow_handler overflow_policy;
75341 typedef UseInternalRangeChecker range_checking_policy;
75342 typedef Trunc<unsigned char> rounding_policy;
75343 };
75344
75345 template <>
75346 struct numeric_cast_traits
75347 <
75348 int
75349 , short
75350 >
75351 {
75352 typedef def_overflow_handler overflow_policy;
75353 typedef UseInternalRangeChecker range_checking_policy;
75354 typedef Trunc<short> rounding_policy;
75355 };
75356
75357 template <>
75358 struct numeric_cast_traits
75359 <
75360 int
75361 , unsigned short
75362 >
75363 {
75364 typedef def_overflow_handler overflow_policy;
75365 typedef UseInternalRangeChecker range_checking_policy;
75366 typedef Trunc<unsigned short> rounding_policy;
75367 };
75368
75369 template <>
75370 struct numeric_cast_traits
75371 <
75372 int
75373 , int
75374 >
75375 {
75376 typedef def_overflow_handler overflow_policy;
75377 typedef UseInternalRangeChecker range_checking_policy;
75378 typedef Trunc<int> rounding_policy;
75379 };
75380
75381 template <>
75382 struct numeric_cast_traits
75383 <
75384 int
75385 , unsigned int
75386 >
75387 {
75388 typedef def_overflow_handler overflow_policy;
75389 typedef UseInternalRangeChecker range_checking_policy;
75390 typedef Trunc<unsigned int> rounding_policy;
75391 };
75392
75393 template <>
75394 struct numeric_cast_traits
75395 <
75396 int
75397 , long
75398 >
75399 {
75400 typedef def_overflow_handler overflow_policy;
75401 typedef UseInternalRangeChecker range_checking_policy;
75402 typedef Trunc<long> rounding_policy;
75403 };
75404
75405 template <>
75406 struct numeric_cast_traits
75407 <
75408 int
75409 , unsigned long
75410 >
75411 {
75412 typedef def_overflow_handler overflow_policy;
75413 typedef UseInternalRangeChecker range_checking_policy;
75414 typedef Trunc<unsigned long> rounding_policy;
75415 };
75416
75417 template <>
75418 struct numeric_cast_traits
75419 <
75420 int
75421 , float
75422 >
75423 {
75424 typedef def_overflow_handler overflow_policy;
75425 typedef UseInternalRangeChecker range_checking_policy;
75426 typedef Trunc<float> rounding_policy;
75427 };
75428
75429 template <>
75430 struct numeric_cast_traits
75431 <
75432 int
75433 , double
75434 >
75435 {
75436 typedef def_overflow_handler overflow_policy;
75437 typedef UseInternalRangeChecker range_checking_policy;
75438 typedef Trunc<double> rounding_policy;
75439 };
75440
75441 template <>
75442 struct numeric_cast_traits
75443 <
75444 int
75445 , long double
75446 >
75447 {
75448 typedef def_overflow_handler overflow_policy;
75449 typedef UseInternalRangeChecker range_checking_policy;
75450 typedef Trunc<long double> rounding_policy;
75451 };
75452
75453 template <>
75454 struct numeric_cast_traits
75455 <
75456 unsigned int
75457 , char
75458 >
75459 {
75460 typedef def_overflow_handler overflow_policy;
75461 typedef UseInternalRangeChecker range_checking_policy;
75462 typedef Trunc<char> rounding_policy;
75463 };
75464
75465 template <>
75466 struct numeric_cast_traits
75467 <
75468 unsigned int
75469 , signed char
75470 >
75471 {
75472 typedef def_overflow_handler overflow_policy;
75473 typedef UseInternalRangeChecker range_checking_policy;
75474 typedef Trunc<signed char> rounding_policy;
75475 };
75476
75477 template <>
75478 struct numeric_cast_traits
75479 <
75480 unsigned int
75481 , unsigned char
75482 >
75483 {
75484 typedef def_overflow_handler overflow_policy;
75485 typedef UseInternalRangeChecker range_checking_policy;
75486 typedef Trunc<unsigned char> rounding_policy;
75487 };
75488
75489 template <>
75490 struct numeric_cast_traits
75491 <
75492 unsigned int
75493 , short
75494 >
75495 {
75496 typedef def_overflow_handler overflow_policy;
75497 typedef UseInternalRangeChecker range_checking_policy;
75498 typedef Trunc<short> rounding_policy;
75499 };
75500
75501 template <>
75502 struct numeric_cast_traits
75503 <
75504 unsigned int
75505 , unsigned short
75506 >
75507 {
75508 typedef def_overflow_handler overflow_policy;
75509 typedef UseInternalRangeChecker range_checking_policy;
75510 typedef Trunc<unsigned short> rounding_policy;
75511 };
75512
75513 template <>
75514 struct numeric_cast_traits
75515 <
75516 unsigned int
75517 , int
75518 >
75519 {
75520 typedef def_overflow_handler overflow_policy;
75521 typedef UseInternalRangeChecker range_checking_policy;
75522 typedef Trunc<int> rounding_policy;
75523 };
75524
75525 template <>
75526 struct numeric_cast_traits
75527 <
75528 unsigned int
75529 , unsigned int
75530 >
75531 {
75532 typedef def_overflow_handler overflow_policy;
75533 typedef UseInternalRangeChecker range_checking_policy;
75534 typedef Trunc<unsigned int> rounding_policy;
75535 };
75536
75537 template <>
75538 struct numeric_cast_traits
75539 <
75540 unsigned int
75541 , long
75542 >
75543 {
75544 typedef def_overflow_handler overflow_policy;
75545 typedef UseInternalRangeChecker range_checking_policy;
75546 typedef Trunc<long> rounding_policy;
75547 };
75548
75549 template <>
75550 struct numeric_cast_traits
75551 <
75552 unsigned int
75553 , unsigned long
75554 >
75555 {
75556 typedef def_overflow_handler overflow_policy;
75557 typedef UseInternalRangeChecker range_checking_policy;
75558 typedef Trunc<unsigned long> rounding_policy;
75559 };
75560
75561 template <>
75562 struct numeric_cast_traits
75563 <
75564 unsigned int
75565 , float
75566 >
75567 {
75568 typedef def_overflow_handler overflow_policy;
75569 typedef UseInternalRangeChecker range_checking_policy;
75570 typedef Trunc<float> rounding_policy;
75571 };
75572
75573 template <>
75574 struct numeric_cast_traits
75575 <
75576 unsigned int
75577 , double
75578 >
75579 {
75580 typedef def_overflow_handler overflow_policy;
75581 typedef UseInternalRangeChecker range_checking_policy;
75582 typedef Trunc<double> rounding_policy;
75583 };
75584
75585 template <>
75586 struct numeric_cast_traits
75587 <
75588 unsigned int
75589 , long double
75590 >
75591 {
75592 typedef def_overflow_handler overflow_policy;
75593 typedef UseInternalRangeChecker range_checking_policy;
75594 typedef Trunc<long double> rounding_policy;
75595 };
75596
75597 template <>
75598 struct numeric_cast_traits
75599 <
75600 long
75601 , char
75602 >
75603 {
75604 typedef def_overflow_handler overflow_policy;
75605 typedef UseInternalRangeChecker range_checking_policy;
75606 typedef Trunc<char> rounding_policy;
75607 };
75608
75609 template <>
75610 struct numeric_cast_traits
75611 <
75612 long
75613 , signed char
75614 >
75615 {
75616 typedef def_overflow_handler overflow_policy;
75617 typedef UseInternalRangeChecker range_checking_policy;
75618 typedef Trunc<signed char> rounding_policy;
75619 };
75620
75621 template <>
75622 struct numeric_cast_traits
75623 <
75624 long
75625 , unsigned char
75626 >
75627 {
75628 typedef def_overflow_handler overflow_policy;
75629 typedef UseInternalRangeChecker range_checking_policy;
75630 typedef Trunc<unsigned char> rounding_policy;
75631 };
75632
75633 template <>
75634 struct numeric_cast_traits
75635 <
75636 long
75637 , short
75638 >
75639 {
75640 typedef def_overflow_handler overflow_policy;
75641 typedef UseInternalRangeChecker range_checking_policy;
75642 typedef Trunc<short> rounding_policy;
75643 };
75644
75645 template <>
75646 struct numeric_cast_traits
75647 <
75648 long
75649 , unsigned short
75650 >
75651 {
75652 typedef def_overflow_handler overflow_policy;
75653 typedef UseInternalRangeChecker range_checking_policy;
75654 typedef Trunc<unsigned short> rounding_policy;
75655 };
75656
75657 template <>
75658 struct numeric_cast_traits
75659 <
75660 long
75661 , int
75662 >
75663 {
75664 typedef def_overflow_handler overflow_policy;
75665 typedef UseInternalRangeChecker range_checking_policy;
75666 typedef Trunc<int> rounding_policy;
75667 };
75668
75669 template <>
75670 struct numeric_cast_traits
75671 <
75672 long
75673 , unsigned int
75674 >
75675 {
75676 typedef def_overflow_handler overflow_policy;
75677 typedef UseInternalRangeChecker range_checking_policy;
75678 typedef Trunc<unsigned int> rounding_policy;
75679 };
75680
75681 template <>
75682 struct numeric_cast_traits
75683 <
75684 long
75685 , long
75686 >
75687 {
75688 typedef def_overflow_handler overflow_policy;
75689 typedef UseInternalRangeChecker range_checking_policy;
75690 typedef Trunc<long> rounding_policy;
75691 };
75692
75693 template <>
75694 struct numeric_cast_traits
75695 <
75696 long
75697 , unsigned long
75698 >
75699 {
75700 typedef def_overflow_handler overflow_policy;
75701 typedef UseInternalRangeChecker range_checking_policy;
75702 typedef Trunc<unsigned long> rounding_policy;
75703 };
75704
75705 template <>
75706 struct numeric_cast_traits
75707 <
75708 long
75709 , float
75710 >
75711 {
75712 typedef def_overflow_handler overflow_policy;
75713 typedef UseInternalRangeChecker range_checking_policy;
75714 typedef Trunc<float> rounding_policy;
75715 };
75716
75717 template <>
75718 struct numeric_cast_traits
75719 <
75720 long
75721 , double
75722 >
75723 {
75724 typedef def_overflow_handler overflow_policy;
75725 typedef UseInternalRangeChecker range_checking_policy;
75726 typedef Trunc<double> rounding_policy;
75727 };
75728
75729 template <>
75730 struct numeric_cast_traits
75731 <
75732 long
75733 , long double
75734 >
75735 {
75736 typedef def_overflow_handler overflow_policy;
75737 typedef UseInternalRangeChecker range_checking_policy;
75738 typedef Trunc<long double> rounding_policy;
75739 };
75740
75741 template <>
75742 struct numeric_cast_traits
75743 <
75744 unsigned long
75745 , char
75746 >
75747 {
75748 typedef def_overflow_handler overflow_policy;
75749 typedef UseInternalRangeChecker range_checking_policy;
75750 typedef Trunc<char> rounding_policy;
75751 };
75752
75753 template <>
75754 struct numeric_cast_traits
75755 <
75756 unsigned long
75757 , signed char
75758 >
75759 {
75760 typedef def_overflow_handler overflow_policy;
75761 typedef UseInternalRangeChecker range_checking_policy;
75762 typedef Trunc<signed char> rounding_policy;
75763 };
75764
75765 template <>
75766 struct numeric_cast_traits
75767 <
75768 unsigned long
75769 , unsigned char
75770 >
75771 {
75772 typedef def_overflow_handler overflow_policy;
75773 typedef UseInternalRangeChecker range_checking_policy;
75774 typedef Trunc<unsigned char> rounding_policy;
75775 };
75776
75777 template <>
75778 struct numeric_cast_traits
75779 <
75780 unsigned long
75781 , short
75782 >
75783 {
75784 typedef def_overflow_handler overflow_policy;
75785 typedef UseInternalRangeChecker range_checking_policy;
75786 typedef Trunc<short> rounding_policy;
75787 };
75788
75789 template <>
75790 struct numeric_cast_traits
75791 <
75792 unsigned long
75793 , unsigned short
75794 >
75795 {
75796 typedef def_overflow_handler overflow_policy;
75797 typedef UseInternalRangeChecker range_checking_policy;
75798 typedef Trunc<unsigned short> rounding_policy;
75799 };
75800
75801 template <>
75802 struct numeric_cast_traits
75803 <
75804 unsigned long
75805 , int
75806 >
75807 {
75808 typedef def_overflow_handler overflow_policy;
75809 typedef UseInternalRangeChecker range_checking_policy;
75810 typedef Trunc<int> rounding_policy;
75811 };
75812
75813 template <>
75814 struct numeric_cast_traits
75815 <
75816 unsigned long
75817 , unsigned int
75818 >
75819 {
75820 typedef def_overflow_handler overflow_policy;
75821 typedef UseInternalRangeChecker range_checking_policy;
75822 typedef Trunc<unsigned int> rounding_policy;
75823 };
75824
75825 template <>
75826 struct numeric_cast_traits
75827 <
75828 unsigned long
75829 , long
75830 >
75831 {
75832 typedef def_overflow_handler overflow_policy;
75833 typedef UseInternalRangeChecker range_checking_policy;
75834 typedef Trunc<long> rounding_policy;
75835 };
75836
75837 template <>
75838 struct numeric_cast_traits
75839 <
75840 unsigned long
75841 , unsigned long
75842 >
75843 {
75844 typedef def_overflow_handler overflow_policy;
75845 typedef UseInternalRangeChecker range_checking_policy;
75846 typedef Trunc<unsigned long> rounding_policy;
75847 };
75848
75849 template <>
75850 struct numeric_cast_traits
75851 <
75852 unsigned long
75853 , float
75854 >
75855 {
75856 typedef def_overflow_handler overflow_policy;
75857 typedef UseInternalRangeChecker range_checking_policy;
75858 typedef Trunc<float> rounding_policy;
75859 };
75860
75861 template <>
75862 struct numeric_cast_traits
75863 <
75864 unsigned long
75865 , double
75866 >
75867 {
75868 typedef def_overflow_handler overflow_policy;
75869 typedef UseInternalRangeChecker range_checking_policy;
75870 typedef Trunc<double> rounding_policy;
75871 };
75872
75873 template <>
75874 struct numeric_cast_traits
75875 <
75876 unsigned long
75877 , long double
75878 >
75879 {
75880 typedef def_overflow_handler overflow_policy;
75881 typedef UseInternalRangeChecker range_checking_policy;
75882 typedef Trunc<long double> rounding_policy;
75883 };
75884
75885 template <>
75886 struct numeric_cast_traits
75887 <
75888 float
75889 , char
75890 >
75891 {
75892 typedef def_overflow_handler overflow_policy;
75893 typedef UseInternalRangeChecker range_checking_policy;
75894 typedef Trunc<char> rounding_policy;
75895 };
75896
75897 template <>
75898 struct numeric_cast_traits
75899 <
75900 float
75901 , signed char
75902 >
75903 {
75904 typedef def_overflow_handler overflow_policy;
75905 typedef UseInternalRangeChecker range_checking_policy;
75906 typedef Trunc<signed char> rounding_policy;
75907 };
75908
75909 template <>
75910 struct numeric_cast_traits
75911 <
75912 float
75913 , unsigned char
75914 >
75915 {
75916 typedef def_overflow_handler overflow_policy;
75917 typedef UseInternalRangeChecker range_checking_policy;
75918 typedef Trunc<unsigned char> rounding_policy;
75919 };
75920
75921 template <>
75922 struct numeric_cast_traits
75923 <
75924 float
75925 , short
75926 >
75927 {
75928 typedef def_overflow_handler overflow_policy;
75929 typedef UseInternalRangeChecker range_checking_policy;
75930 typedef Trunc<short> rounding_policy;
75931 };
75932
75933 template <>
75934 struct numeric_cast_traits
75935 <
75936 float
75937 , unsigned short
75938 >
75939 {
75940 typedef def_overflow_handler overflow_policy;
75941 typedef UseInternalRangeChecker range_checking_policy;
75942 typedef Trunc<unsigned short> rounding_policy;
75943 };
75944
75945 template <>
75946 struct numeric_cast_traits
75947 <
75948 float
75949 , int
75950 >
75951 {
75952 typedef def_overflow_handler overflow_policy;
75953 typedef UseInternalRangeChecker range_checking_policy;
75954 typedef Trunc<int> rounding_policy;
75955 };
75956
75957 template <>
75958 struct numeric_cast_traits
75959 <
75960 float
75961 , unsigned int
75962 >
75963 {
75964 typedef def_overflow_handler overflow_policy;
75965 typedef UseInternalRangeChecker range_checking_policy;
75966 typedef Trunc<unsigned int> rounding_policy;
75967 };
75968
75969 template <>
75970 struct numeric_cast_traits
75971 <
75972 float
75973 , long
75974 >
75975 {
75976 typedef def_overflow_handler overflow_policy;
75977 typedef UseInternalRangeChecker range_checking_policy;
75978 typedef Trunc<long> rounding_policy;
75979 };
75980
75981 template <>
75982 struct numeric_cast_traits
75983 <
75984 float
75985 , unsigned long
75986 >
75987 {
75988 typedef def_overflow_handler overflow_policy;
75989 typedef UseInternalRangeChecker range_checking_policy;
75990 typedef Trunc<unsigned long> rounding_policy;
75991 };
75992
75993 template <>
75994 struct numeric_cast_traits
75995 <
75996 float
75997 , float
75998 >
75999 {
76000 typedef def_overflow_handler overflow_policy;
76001 typedef UseInternalRangeChecker range_checking_policy;
76002 typedef Trunc<float> rounding_policy;
76003 };
76004
76005 template <>
76006 struct numeric_cast_traits
76007 <
76008 float
76009 , double
76010 >
76011 {
76012 typedef def_overflow_handler overflow_policy;
76013 typedef UseInternalRangeChecker range_checking_policy;
76014 typedef Trunc<double> rounding_policy;
76015 };
76016
76017 template <>
76018 struct numeric_cast_traits
76019 <
76020 float
76021 , long double
76022 >
76023 {
76024 typedef def_overflow_handler overflow_policy;
76025 typedef UseInternalRangeChecker range_checking_policy;
76026 typedef Trunc<long double> rounding_policy;
76027 };
76028
76029 template <>
76030 struct numeric_cast_traits
76031 <
76032 double
76033 , char
76034 >
76035 {
76036 typedef def_overflow_handler overflow_policy;
76037 typedef UseInternalRangeChecker range_checking_policy;
76038 typedef Trunc<char> rounding_policy;
76039 };
76040
76041 template <>
76042 struct numeric_cast_traits
76043 <
76044 double
76045 , signed char
76046 >
76047 {
76048 typedef def_overflow_handler overflow_policy;
76049 typedef UseInternalRangeChecker range_checking_policy;
76050 typedef Trunc<signed char> rounding_policy;
76051 };
76052
76053 template <>
76054 struct numeric_cast_traits
76055 <
76056 double
76057 , unsigned char
76058 >
76059 {
76060 typedef def_overflow_handler overflow_policy;
76061 typedef UseInternalRangeChecker range_checking_policy;
76062 typedef Trunc<unsigned char> rounding_policy;
76063 };
76064
76065 template <>
76066 struct numeric_cast_traits
76067 <
76068 double
76069 , short
76070 >
76071 {
76072 typedef def_overflow_handler overflow_policy;
76073 typedef UseInternalRangeChecker range_checking_policy;
76074 typedef Trunc<short> rounding_policy;
76075 };
76076
76077 template <>
76078 struct numeric_cast_traits
76079 <
76080 double
76081 , unsigned short
76082 >
76083 {
76084 typedef def_overflow_handler overflow_policy;
76085 typedef UseInternalRangeChecker range_checking_policy;
76086 typedef Trunc<unsigned short> rounding_policy;
76087 };
76088
76089 template <>
76090 struct numeric_cast_traits
76091 <
76092 double
76093 , int
76094 >
76095 {
76096 typedef def_overflow_handler overflow_policy;
76097 typedef UseInternalRangeChecker range_checking_policy;
76098 typedef Trunc<int> rounding_policy;
76099 };
76100
76101 template <>
76102 struct numeric_cast_traits
76103 <
76104 double
76105 , unsigned int
76106 >
76107 {
76108 typedef def_overflow_handler overflow_policy;
76109 typedef UseInternalRangeChecker range_checking_policy;
76110 typedef Trunc<unsigned int> rounding_policy;
76111 };
76112
76113 template <>
76114 struct numeric_cast_traits
76115 <
76116 double
76117 , long
76118 >
76119 {
76120 typedef def_overflow_handler overflow_policy;
76121 typedef UseInternalRangeChecker range_checking_policy;
76122 typedef Trunc<long> rounding_policy;
76123 };
76124
76125 template <>
76126 struct numeric_cast_traits
76127 <
76128 double
76129 , unsigned long
76130 >
76131 {
76132 typedef def_overflow_handler overflow_policy;
76133 typedef UseInternalRangeChecker range_checking_policy;
76134 typedef Trunc<unsigned long> rounding_policy;
76135 };
76136
76137 template <>
76138 struct numeric_cast_traits
76139 <
76140 double
76141 , float
76142 >
76143 {
76144 typedef def_overflow_handler overflow_policy;
76145 typedef UseInternalRangeChecker range_checking_policy;
76146 typedef Trunc<float> rounding_policy;
76147 };
76148
76149 template <>
76150 struct numeric_cast_traits
76151 <
76152 double
76153 , double
76154 >
76155 {
76156 typedef def_overflow_handler overflow_policy;
76157 typedef UseInternalRangeChecker range_checking_policy;
76158 typedef Trunc<double> rounding_policy;
76159 };
76160
76161 template <>
76162 struct numeric_cast_traits
76163 <
76164 double
76165 , long double
76166 >
76167 {
76168 typedef def_overflow_handler overflow_policy;
76169 typedef UseInternalRangeChecker range_checking_policy;
76170 typedef Trunc<long double> rounding_policy;
76171 };
76172
76173 template <>
76174 struct numeric_cast_traits
76175 <
76176 long double
76177 , char
76178 >
76179 {
76180 typedef def_overflow_handler overflow_policy;
76181 typedef UseInternalRangeChecker range_checking_policy;
76182 typedef Trunc<char> rounding_policy;
76183 };
76184
76185 template <>
76186 struct numeric_cast_traits
76187 <
76188 long double
76189 , signed char
76190 >
76191 {
76192 typedef def_overflow_handler overflow_policy;
76193 typedef UseInternalRangeChecker range_checking_policy;
76194 typedef Trunc<signed char> rounding_policy;
76195 };
76196
76197 template <>
76198 struct numeric_cast_traits
76199 <
76200 long double
76201 , unsigned char
76202 >
76203 {
76204 typedef def_overflow_handler overflow_policy;
76205 typedef UseInternalRangeChecker range_checking_policy;
76206 typedef Trunc<unsigned char> rounding_policy;
76207 };
76208
76209 template <>
76210 struct numeric_cast_traits
76211 <
76212 long double
76213 , short
76214 >
76215 {
76216 typedef def_overflow_handler overflow_policy;
76217 typedef UseInternalRangeChecker range_checking_policy;
76218 typedef Trunc<short> rounding_policy;
76219 };
76220
76221 template <>
76222 struct numeric_cast_traits
76223 <
76224 long double
76225 , unsigned short
76226 >
76227 {
76228 typedef def_overflow_handler overflow_policy;
76229 typedef UseInternalRangeChecker range_checking_policy;
76230 typedef Trunc<unsigned short> rounding_policy;
76231 };
76232
76233 template <>
76234 struct numeric_cast_traits
76235 <
76236 long double
76237 , int
76238 >
76239 {
76240 typedef def_overflow_handler overflow_policy;
76241 typedef UseInternalRangeChecker range_checking_policy;
76242 typedef Trunc<int> rounding_policy;
76243 };
76244
76245 template <>
76246 struct numeric_cast_traits
76247 <
76248 long double
76249 , unsigned int
76250 >
76251 {
76252 typedef def_overflow_handler overflow_policy;
76253 typedef UseInternalRangeChecker range_checking_policy;
76254 typedef Trunc<unsigned int> rounding_policy;
76255 };
76256
76257 template <>
76258 struct numeric_cast_traits
76259 <
76260 long double
76261 , long
76262 >
76263 {
76264 typedef def_overflow_handler overflow_policy;
76265 typedef UseInternalRangeChecker range_checking_policy;
76266 typedef Trunc<long> rounding_policy;
76267 };
76268
76269 template <>
76270 struct numeric_cast_traits
76271 <
76272 long double
76273 , unsigned long
76274 >
76275 {
76276 typedef def_overflow_handler overflow_policy;
76277 typedef UseInternalRangeChecker range_checking_policy;
76278 typedef Trunc<unsigned long> rounding_policy;
76279 };
76280
76281 template <>
76282 struct numeric_cast_traits
76283 <
76284 long double
76285 , float
76286 >
76287 {
76288 typedef def_overflow_handler overflow_policy;
76289 typedef UseInternalRangeChecker range_checking_policy;
76290 typedef Trunc<float> rounding_policy;
76291 };
76292
76293 template <>
76294 struct numeric_cast_traits
76295 <
76296 long double
76297 , double
76298 >
76299 {
76300 typedef def_overflow_handler overflow_policy;
76301 typedef UseInternalRangeChecker range_checking_policy;
76302 typedef Trunc<double> rounding_policy;
76303 };
76304
76305 template <>
76306 struct numeric_cast_traits
76307 <
76308 long double
76309 , long double
76310 >
76311 {
76312 typedef def_overflow_handler overflow_policy;
76313 typedef UseInternalRangeChecker range_checking_policy;
76314 typedef Trunc<long double> rounding_policy;
76315 };
76316 }}
76317 # 13 "../boost/numeric/conversion/detail/numeric_cast_traits.hpp" 2
76318
76319
76320 # 1 "../boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp" 1
76321 # 9 "../boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp"
76322 namespace boost { namespace numeric {
76323
76324
76325 template <>
76326 struct numeric_cast_traits
76327 <
76328 char
76329 , boost::long_long_type
76330 >
76331 {
76332 typedef def_overflow_handler overflow_policy;
76333 typedef UseInternalRangeChecker range_checking_policy;
76334 typedef Trunc<boost::long_long_type> rounding_policy;
76335 };
76336
76337 template <>
76338 struct numeric_cast_traits
76339 <
76340 char
76341 , boost::ulong_long_type
76342 >
76343 {
76344 typedef def_overflow_handler overflow_policy;
76345 typedef UseInternalRangeChecker range_checking_policy;
76346 typedef Trunc<boost::ulong_long_type> rounding_policy;
76347 };
76348
76349 template <>
76350 struct numeric_cast_traits
76351 <
76352 signed char
76353 , boost::long_long_type
76354 >
76355 {
76356 typedef def_overflow_handler overflow_policy;
76357 typedef UseInternalRangeChecker range_checking_policy;
76358 typedef Trunc<boost::long_long_type> rounding_policy;
76359 };
76360
76361 template <>
76362 struct numeric_cast_traits
76363 <
76364 signed char
76365 , boost::ulong_long_type
76366 >
76367 {
76368 typedef def_overflow_handler overflow_policy;
76369 typedef UseInternalRangeChecker range_checking_policy;
76370 typedef Trunc<boost::ulong_long_type> rounding_policy;
76371 };
76372
76373 template <>
76374 struct numeric_cast_traits
76375 <
76376 unsigned char
76377 , boost::long_long_type
76378 >
76379 {
76380 typedef def_overflow_handler overflow_policy;
76381 typedef UseInternalRangeChecker range_checking_policy;
76382 typedef Trunc<boost::long_long_type> rounding_policy;
76383 };
76384
76385 template <>
76386 struct numeric_cast_traits
76387 <
76388 unsigned char
76389 , boost::ulong_long_type
76390 >
76391 {
76392 typedef def_overflow_handler overflow_policy;
76393 typedef UseInternalRangeChecker range_checking_policy;
76394 typedef Trunc<boost::ulong_long_type> rounding_policy;
76395 };
76396
76397 template <>
76398 struct numeric_cast_traits
76399 <
76400 short
76401 , boost::long_long_type
76402 >
76403 {
76404 typedef def_overflow_handler overflow_policy;
76405 typedef UseInternalRangeChecker range_checking_policy;
76406 typedef Trunc<boost::long_long_type> rounding_policy;
76407 };
76408
76409 template <>
76410 struct numeric_cast_traits
76411 <
76412 short
76413 , boost::ulong_long_type
76414 >
76415 {
76416 typedef def_overflow_handler overflow_policy;
76417 typedef UseInternalRangeChecker range_checking_policy;
76418 typedef Trunc<boost::ulong_long_type> rounding_policy;
76419 };
76420
76421 template <>
76422 struct numeric_cast_traits
76423 <
76424 unsigned short
76425 , boost::long_long_type
76426 >
76427 {
76428 typedef def_overflow_handler overflow_policy;
76429 typedef UseInternalRangeChecker range_checking_policy;
76430 typedef Trunc<boost::long_long_type> rounding_policy;
76431 };
76432
76433 template <>
76434 struct numeric_cast_traits
76435 <
76436 unsigned short
76437 , boost::ulong_long_type
76438 >
76439 {
76440 typedef def_overflow_handler overflow_policy;
76441 typedef UseInternalRangeChecker range_checking_policy;
76442 typedef Trunc<boost::ulong_long_type> rounding_policy;
76443 };
76444
76445 template <>
76446 struct numeric_cast_traits
76447 <
76448 int
76449 , boost::long_long_type
76450 >
76451 {
76452 typedef def_overflow_handler overflow_policy;
76453 typedef UseInternalRangeChecker range_checking_policy;
76454 typedef Trunc<boost::long_long_type> rounding_policy;
76455 };
76456
76457 template <>
76458 struct numeric_cast_traits
76459 <
76460 int
76461 , boost::ulong_long_type
76462 >
76463 {
76464 typedef def_overflow_handler overflow_policy;
76465 typedef UseInternalRangeChecker range_checking_policy;
76466 typedef Trunc<boost::ulong_long_type> rounding_policy;
76467 };
76468
76469 template <>
76470 struct numeric_cast_traits
76471 <
76472 unsigned int
76473 , boost::long_long_type
76474 >
76475 {
76476 typedef def_overflow_handler overflow_policy;
76477 typedef UseInternalRangeChecker range_checking_policy;
76478 typedef Trunc<boost::long_long_type> rounding_policy;
76479 };
76480
76481 template <>
76482 struct numeric_cast_traits
76483 <
76484 unsigned int
76485 , boost::ulong_long_type
76486 >
76487 {
76488 typedef def_overflow_handler overflow_policy;
76489 typedef UseInternalRangeChecker range_checking_policy;
76490 typedef Trunc<boost::ulong_long_type> rounding_policy;
76491 };
76492
76493 template <>
76494 struct numeric_cast_traits
76495 <
76496 long
76497 , boost::long_long_type
76498 >
76499 {
76500 typedef def_overflow_handler overflow_policy;
76501 typedef UseInternalRangeChecker range_checking_policy;
76502 typedef Trunc<boost::long_long_type> rounding_policy;
76503 };
76504
76505 template <>
76506 struct numeric_cast_traits
76507 <
76508 long
76509 , boost::ulong_long_type
76510 >
76511 {
76512 typedef def_overflow_handler overflow_policy;
76513 typedef UseInternalRangeChecker range_checking_policy;
76514 typedef Trunc<boost::ulong_long_type> rounding_policy;
76515 };
76516
76517 template <>
76518 struct numeric_cast_traits
76519 <
76520 unsigned long
76521 , boost::long_long_type
76522 >
76523 {
76524 typedef def_overflow_handler overflow_policy;
76525 typedef UseInternalRangeChecker range_checking_policy;
76526 typedef Trunc<boost::long_long_type> rounding_policy;
76527 };
76528
76529 template <>
76530 struct numeric_cast_traits
76531 <
76532 unsigned long
76533 , boost::ulong_long_type
76534 >
76535 {
76536 typedef def_overflow_handler overflow_policy;
76537 typedef UseInternalRangeChecker range_checking_policy;
76538 typedef Trunc<boost::ulong_long_type> rounding_policy;
76539 };
76540
76541 template <>
76542 struct numeric_cast_traits
76543 <
76544 float
76545 , boost::long_long_type
76546 >
76547 {
76548 typedef def_overflow_handler overflow_policy;
76549 typedef UseInternalRangeChecker range_checking_policy;
76550 typedef Trunc<boost::long_long_type> rounding_policy;
76551 };
76552
76553 template <>
76554 struct numeric_cast_traits
76555 <
76556 float
76557 , boost::ulong_long_type
76558 >
76559 {
76560 typedef def_overflow_handler overflow_policy;
76561 typedef UseInternalRangeChecker range_checking_policy;
76562 typedef Trunc<boost::ulong_long_type> rounding_policy;
76563 };
76564
76565 template <>
76566 struct numeric_cast_traits
76567 <
76568 double
76569 , boost::long_long_type
76570 >
76571 {
76572 typedef def_overflow_handler overflow_policy;
76573 typedef UseInternalRangeChecker range_checking_policy;
76574 typedef Trunc<boost::long_long_type> rounding_policy;
76575 };
76576
76577 template <>
76578 struct numeric_cast_traits
76579 <
76580 double
76581 , boost::ulong_long_type
76582 >
76583 {
76584 typedef def_overflow_handler overflow_policy;
76585 typedef UseInternalRangeChecker range_checking_policy;
76586 typedef Trunc<boost::ulong_long_type> rounding_policy;
76587 };
76588
76589 template <>
76590 struct numeric_cast_traits
76591 <
76592 long double
76593 , boost::long_long_type
76594 >
76595 {
76596 typedef def_overflow_handler overflow_policy;
76597 typedef UseInternalRangeChecker range_checking_policy;
76598 typedef Trunc<boost::long_long_type> rounding_policy;
76599 };
76600
76601 template <>
76602 struct numeric_cast_traits
76603 <
76604 long double
76605 , boost::ulong_long_type
76606 >
76607 {
76608 typedef def_overflow_handler overflow_policy;
76609 typedef UseInternalRangeChecker range_checking_policy;
76610 typedef Trunc<boost::ulong_long_type> rounding_policy;
76611 };
76612
76613 template <>
76614 struct numeric_cast_traits
76615 <
76616 boost::long_long_type
76617 , boost::long_long_type
76618 >
76619 {
76620 typedef def_overflow_handler overflow_policy;
76621 typedef UseInternalRangeChecker range_checking_policy;
76622 typedef Trunc<boost::long_long_type> rounding_policy;
76623 };
76624
76625 template <>
76626 struct numeric_cast_traits
76627 <
76628 boost::long_long_type
76629 , boost::ulong_long_type
76630 >
76631 {
76632 typedef def_overflow_handler overflow_policy;
76633 typedef UseInternalRangeChecker range_checking_policy;
76634 typedef Trunc<boost::ulong_long_type> rounding_policy;
76635 };
76636
76637 template <>
76638 struct numeric_cast_traits
76639 <
76640 boost::ulong_long_type
76641 , boost::long_long_type
76642 >
76643 {
76644 typedef def_overflow_handler overflow_policy;
76645 typedef UseInternalRangeChecker range_checking_policy;
76646 typedef Trunc<boost::long_long_type> rounding_policy;
76647 };
76648
76649 template <>
76650 struct numeric_cast_traits
76651 <
76652 boost::ulong_long_type
76653 , boost::ulong_long_type
76654 >
76655 {
76656 typedef def_overflow_handler overflow_policy;
76657 typedef UseInternalRangeChecker range_checking_policy;
76658 typedef Trunc<boost::ulong_long_type> rounding_policy;
76659 };
76660 }}
76661 # 16 "../boost/numeric/conversion/detail/numeric_cast_traits.hpp" 2
76662 # 29 "../boost/numeric/conversion/numeric_cast_traits.hpp" 2
76663 # 35 "../boost/numeric/conversion/cast.hpp" 2
76664
76665 namespace boost
76666 {
76667 template <typename Target, typename Source>
76668 inline Target numeric_cast( Source arg )
76669 {
76670 typedef numeric::conversion_traits<Target, Source> conv_traits;
76671 typedef numeric::numeric_cast_traits<Target, Source> cast_traits;
76672 typedef boost::numeric::converter
76673 <
76674 Target,
76675 Source,
76676 conv_traits,
76677 typename cast_traits::overflow_policy,
76678 typename cast_traits::rounding_policy,
76679 boost::numeric::raw_converter< conv_traits >,
76680 typename cast_traits::range_checking_policy
76681 > converter;
76682 return converter::convert(arg);
76683 }
76684
76685 using numeric::bad_numeric_cast;
76686 }
76687 # 67 "../boost/lexical_cast.hpp" 2
76688
76689 # 1 "../boost/type_traits/make_unsigned.hpp" 1
76690 # 14 "../boost/type_traits/make_unsigned.hpp"
76691 # 1 "../boost/type_traits/is_signed.hpp" 1
76692 # 19 "../boost/type_traits/is_signed.hpp"
76693 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
76694 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
76695 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
76696 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
76697 # 20 "../boost/type_traits/is_signed.hpp" 2
76698
76699 namespace boost {
76700
76701
76702
76703 namespace detail{
76704
76705
76706
76707 template <class T>
76708 struct is_signed_values
76709 {
76710
76711
76712
76713
76714
76715 typedef typename remove_cv<T>::type no_cv_t;
76716 static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
76717 static const no_cv_t zero = (static_cast<no_cv_t>(0));
76718 };
76719
76720 template <class T>
76721 struct is_signed_helper
76722 {
76723 typedef typename remove_cv<T>::type no_cv_t;
76724 static const bool value = (!(::boost::detail::is_signed_values<T>::minus_one > boost::detail::is_signed_values<T>::zero));
76725 };
76726
76727 template <bool integral_type>
76728 struct is_signed_select_helper
76729 {
76730 template <class T>
76731 struct rebind
76732 {
76733 typedef is_signed_helper<T> type;
76734 };
76735 };
76736
76737 template <>
76738 struct is_signed_select_helper<false>
76739 {
76740 template <class T>
76741 struct rebind
76742 {
76743 typedef false_type type;
76744 };
76745 };
76746
76747 template <class T>
76748 struct is_signed_imp
76749 {
76750 typedef is_signed_select_helper<
76751 ::boost::type_traits::ice_or<
76752 ::boost::is_integral<T>::value,
76753 ::boost::is_enum<T>::value>::value
76754 > selector;
76755 typedef typename selector::template rebind<T> binder;
76756 typedef typename binder::type type;
76757
76758
76759
76760 static const bool value = type::value;
76761
76762 };
76763 # 126 "../boost/type_traits/is_signed.hpp"
76764 }
76765
76766
76767
76768
76769
76770
76771 template< typename T > struct is_signed : public ::boost::integral_constant<bool,::boost::detail::is_signed_imp<T>::value> { public: };
76772
76773
76774 }
76775
76776 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
76777 # 139 "../boost/type_traits/is_signed.hpp" 2
76778 # 15 "../boost/type_traits/make_unsigned.hpp" 2
76779 # 1 "../boost/type_traits/is_unsigned.hpp" 1
76780 # 19 "../boost/type_traits/is_unsigned.hpp"
76781 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
76782 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
76783 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
76784 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
76785 # 20 "../boost/type_traits/is_unsigned.hpp" 2
76786
76787 namespace boost {
76788
76789
76790
76791 namespace detail{
76792
76793
76794
76795 template <class T>
76796 struct is_unsigned_values
76797 {
76798
76799
76800
76801
76802
76803 typedef typename remove_cv<T>::type no_cv_t;
76804 static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
76805 static const no_cv_t zero = (static_cast<no_cv_t>(0));
76806 };
76807
76808 template <class T>
76809 struct is_ununsigned_helper
76810 {
76811 static const bool value = (::boost::detail::is_unsigned_values<T>::minus_one > ::boost::detail::is_unsigned_values<T>::zero);
76812 };
76813
76814 template <bool integral_type>
76815 struct is_ununsigned_select_helper
76816 {
76817 template <class T>
76818 struct rebind
76819 {
76820 typedef is_ununsigned_helper<T> type;
76821 };
76822 };
76823
76824 template <>
76825 struct is_ununsigned_select_helper<false>
76826 {
76827 template <class T>
76828 struct rebind
76829 {
76830 typedef false_type type;
76831 };
76832 };
76833
76834 template <class T>
76835 struct is_unsigned_imp
76836 {
76837 typedef is_ununsigned_select_helper<
76838 ::boost::type_traits::ice_or<
76839 ::boost::is_integral<T>::value,
76840 ::boost::is_enum<T>::value>::value
76841 > selector;
76842 typedef typename selector::template rebind<T> binder;
76843 typedef typename binder::type type;
76844 static const bool value = type::value;
76845 };
76846 # 121 "../boost/type_traits/is_unsigned.hpp"
76847 }
76848
76849
76850
76851
76852
76853
76854 template< typename T > struct is_unsigned : public ::boost::integral_constant<bool,::boost::detail::is_unsigned_imp<T>::value> { public: };
76855
76856
76857 }
76858
76859 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
76860 # 134 "../boost/type_traits/is_unsigned.hpp" 2
76861 # 16 "../boost/type_traits/make_unsigned.hpp" 2
76862 # 29 "../boost/type_traits/make_unsigned.hpp"
76863 # 1 "../boost/type_traits/detail/type_trait_def.hpp" 1
76864 # 14 "../boost/type_traits/detail/type_trait_def.hpp"
76865 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
76866 # 15 "../boost/type_traits/detail/type_trait_def.hpp" 2
76867 # 30 "../boost/type_traits/make_unsigned.hpp" 2
76868
76869 namespace boost {
76870
76871 namespace detail {
76872
76873 template <class T>
76874 struct make_unsigned_imp
76875 {
76876 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (((::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value)) == 0 ? false : true) >)>
76877 boost_static_assert_typedef_39;
76878
76879 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (((::boost::type_traits::ice_not< ::boost::is_same< typename remove_cv<T>::type, bool>::value>::value)) == 0 ? false : true) >)>
76880
76881 boost_static_assert_typedef_43;
76882
76883
76884 typedef typename remove_cv<T>::type t_no_cv;
76885 typedef typename mpl::if_c<
76886 (::boost::type_traits::ice_and<
76887 ::boost::is_unsigned<T>::value,
76888 ::boost::is_integral<T>::value,
76889 ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
76890 ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
76891 ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
76892 T,
76893 typename mpl::if_c<
76894 (::boost::type_traits::ice_and<
76895 ::boost::is_integral<T>::value,
76896 ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
76897 ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
76898 ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
76899 ::value),
76900 typename mpl::if_<
76901 is_same<t_no_cv, signed char>,
76902 unsigned char,
76903 typename mpl::if_<
76904 is_same<t_no_cv, short>,
76905 unsigned short,
76906 typename mpl::if_<
76907 is_same<t_no_cv, int>,
76908 unsigned int,
76909 typename mpl::if_<
76910 is_same<t_no_cv, long>,
76911 unsigned long,
76912
76913 boost::ulong_long_type
76914
76915
76916
76917
76918
76919 >::type
76920 >::type
76921 >::type
76922 >::type,
76923
76924 typename mpl::if_c<
76925 sizeof(t_no_cv) == sizeof(unsigned char),
76926 unsigned char,
76927 typename mpl::if_c<
76928 sizeof(t_no_cv) == sizeof(unsigned short),
76929 unsigned short,
76930 typename mpl::if_c<
76931 sizeof(t_no_cv) == sizeof(unsigned int),
76932 unsigned int,
76933 typename mpl::if_c<
76934 sizeof(t_no_cv) == sizeof(unsigned long),
76935 unsigned long,
76936
76937 boost::ulong_long_type
76938
76939
76940
76941
76942
76943 >::type
76944 >::type
76945 >::type
76946 >::type
76947 >::type
76948 >::type base_integer_type;
76949
76950
76951 typedef typename mpl::if_<
76952 is_const<T>,
76953 typename add_const<base_integer_type>::type,
76954 base_integer_type
76955 >::type const_base_integer_type;
76956
76957
76958 typedef typename mpl::if_<
76959 is_volatile<T>,
76960 typename add_volatile<const_base_integer_type>::type,
76961 const_base_integer_type
76962 >::type type;
76963 };
76964
76965
76966 }
76967
76968 template< typename T > struct make_unsigned { public: typedef typename boost::detail::make_unsigned_imp<T>::type type; };
76969
76970 }
76971
76972 # 1 "../boost/type_traits/detail/type_trait_undef.hpp" 1
76973 # 135 "../boost/type_traits/make_unsigned.hpp" 2
76974 # 69 "../boost/lexical_cast.hpp" 2
76975
76976 # 1 "../boost/math/special_functions/sign.hpp" 1
76977 # 16 "../boost/math/special_functions/sign.hpp"
76978 # 1 "../boost/math/tools/config.hpp" 1
76979 # 14 "../boost/math/tools/config.hpp"
76980 # 1 "../boost/cstdint.hpp" 1
76981 # 15 "../boost/math/tools/config.hpp" 2
76982
76983
76984
76985 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 1 3
76986 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
76987
76988 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
76989
76990 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
76991 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 2 3
76992 # 19 "../boost/math/tools/config.hpp" 2
76993
76994
76995
76996
76997 # 1 "../boost/math/tools/user.hpp" 1
76998 # 24 "../boost/math/tools/config.hpp" 2
76999 # 1 "../boost/math/special_functions/detail/round_fwd.hpp" 1
77000 # 17 "../boost/math/special_functions/detail/round_fwd.hpp"
77001 namespace boost
77002 {
77003 namespace math
77004 {
77005
77006 template <class T, class Policy>
77007 T trunc(const T& v, const Policy& pol);
77008 template <class T>
77009 T trunc(const T& v);
77010 template <class T, class Policy>
77011 int itrunc(const T& v, const Policy& pol);
77012 template <class T>
77013 int itrunc(const T& v);
77014 template <class T, class Policy>
77015 long ltrunc(const T& v, const Policy& pol);
77016 template <class T>
77017 long ltrunc(const T& v);
77018
77019 template <class T, class Policy>
77020 boost::long_long_type lltrunc(const T& v, const Policy& pol);
77021 template <class T>
77022 boost::long_long_type lltrunc(const T& v);
77023
77024 template <class T, class Policy>
77025 T round(const T& v, const Policy& pol);
77026 template <class T>
77027 T round(const T& v);
77028 template <class T, class Policy>
77029 int iround(const T& v, const Policy& pol);
77030 template <class T>
77031 int iround(const T& v);
77032 template <class T, class Policy>
77033 long lround(const T& v, const Policy& pol);
77034 template <class T>
77035 long lround(const T& v);
77036
77037 template <class T, class Policy>
77038 boost::long_long_type llround(const T& v, const Policy& pol);
77039 template <class T>
77040 boost::long_long_type llround(const T& v);
77041
77042 template <class T, class Policy>
77043 T modf(const T& v, T* ipart, const Policy& pol);
77044 template <class T>
77045 T modf(const T& v, T* ipart);
77046 template <class T, class Policy>
77047 T modf(const T& v, int* ipart, const Policy& pol);
77048 template <class T>
77049 T modf(const T& v, int* ipart);
77050 template <class T, class Policy>
77051 T modf(const T& v, long* ipart, const Policy& pol);
77052 template <class T>
77053 T modf(const T& v, long* ipart);
77054
77055 template <class T, class Policy>
77056 T modf(const T& v, boost::long_long_type* ipart, const Policy& pol);
77057 template <class T>
77058 T modf(const T& v, boost::long_long_type* ipart);
77059
77060
77061 }
77062 }
77063 # 25 "../boost/math/tools/config.hpp" 2
77064 # 240 "../boost/math/tools/config.hpp"
77065 namespace boost{ namespace math{
77066 namespace tools
77067 {
77068
77069 template <class T>
77070 inline T max (T a, T b, T c)
77071 {
77072 return (std::max)((std::max)(a, b), c);
77073 }
77074
77075 template <class T>
77076 inline T max (T a, T b, T c, T d)
77077 {
77078 return (std::max)((std::max)(a, b), (std::max)(c, d));
77079 }
77080
77081 }
77082
77083 template <class T>
77084 void suppress_unused_variable_warning(const T&)
77085 {
77086 }
77087
77088 }}
77089
77090
77091
77092 # 1 "../boost/detail/fenv.hpp" 1
77093 # 69 "../boost/detail/fenv.hpp"
77094 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/fenv.h" 1 3
77095 # 32 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/fenv.h" 3
77096
77097 # 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/fenv.h" 3
77098
77099
77100
77101 # 1 "/usr/include/fenv.h" 1 3 4
77102 # 58 "/usr/include/fenv.h" 3 4
77103 # 1 "/usr/include/bits/fenv.h" 1 3 4
77104 # 23 "/usr/include/bits/fenv.h" 3 4
77105 # 1 "/usr/include/bits/wordsize.h" 1 3 4
77106 # 24 "/usr/include/bits/fenv.h" 2 3 4
77107
77108
77109
77110
77111 enum
77112 {
77113 FE_INVALID = 0x01,
77114
77115 __FE_DENORM = 0x02,
77116 FE_DIVBYZERO = 0x04,
77117
77118 FE_OVERFLOW = 0x08,
77119
77120 FE_UNDERFLOW = 0x10,
77121
77122 FE_INEXACT = 0x20
77123
77124 };
77125
77126
77127
77128
77129
77130
77131
77132 enum
77133 {
77134 FE_TONEAREST = 0,
77135
77136 FE_DOWNWARD = 0x400,
77137
77138 FE_UPWARD = 0x800,
77139
77140 FE_TOWARDZERO = 0xc00
77141
77142 };
77143
77144
77145
77146 typedef unsigned short int fexcept_t;
77147
77148
77149
77150
77151
77152
77153 typedef struct
77154 {
77155 unsigned short int __control_word;
77156 unsigned short int __unused1;
77157 unsigned short int __status_word;
77158 unsigned short int __unused2;
77159 unsigned short int __tags;
77160 unsigned short int __unused3;
77161 unsigned int __eip;
77162 unsigned short int __cs_selector;
77163 unsigned int __opcode:11;
77164 unsigned int __unused4:5;
77165 unsigned int __data_offset;
77166 unsigned short int __data_selector;
77167 unsigned short int __unused5;
77168
77169 unsigned int __mxcsr;
77170
77171 }
77172 fenv_t;
77173 # 59 "/usr/include/fenv.h" 2 3 4
77174
77175 extern "C" {
77176
77177
77178
77179
77180 extern int feclearexcept (int __excepts) throw ();
77181
77182
77183
77184 extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) throw ();
77185
77186
77187 extern int feraiseexcept (int __excepts) throw ();
77188
77189
77190
77191 extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) throw ();
77192
77193
77194
77195 extern int fetestexcept (int __excepts) throw ();
77196
77197
77198
77199
77200
77201 extern int fegetround (void) throw ();
77202
77203
77204 extern int fesetround (int __rounding_direction) throw ();
77205
77206
77207
77208
77209
77210
77211 extern int fegetenv (fenv_t *__envp) throw ();
77212
77213
77214
77215
77216 extern int feholdexcept (fenv_t *__envp) throw ();
77217
77218
77219
77220 extern int fesetenv (__const fenv_t *__envp) throw ();
77221
77222
77223
77224
77225 extern int feupdateenv (__const fenv_t *__envp) throw ();
77226
77227
77228
77229
77230 # 1 "/usr/include/bits/fenvinline.h" 1 3 4
77231 # 116 "/usr/include/fenv.h" 2 3 4
77232
77233
77234
77235
77236
77237
77238
77239 extern int feenableexcept (int __excepts) throw ();
77240
77241
77242
77243
77244 extern int fedisableexcept (int __excepts) throw ();
77245
77246
77247 extern int fegetexcept (void) throw ();
77248
77249
77250 }
77251 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/fenv.h" 2 3
77252 # 70 "../boost/detail/fenv.hpp" 2
77253 # 268 "../boost/math/tools/config.hpp" 2
77254
77255
77256
77257 namespace boost{ namespace math{
77258 namespace detail
77259 {
77260 struct fpu_guard
77261 {
77262 fpu_guard()
77263 {
77264 fegetexceptflag(&m_flags, (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID));
77265 feclearexcept((FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID));
77266 }
77267 ~fpu_guard()
77268 {
77269 fesetexceptflag(&m_flags, (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID));
77270 }
77271 private:
77272 fexcept_t m_flags;
77273 };
77274
77275 }
77276 }}
77277 # 17 "../boost/math/special_functions/sign.hpp" 2
77278 # 1 "../boost/math/special_functions/math_fwd.hpp" 1
77279 # 27 "../boost/math/special_functions/math_fwd.hpp"
77280 # 1 "../boost/math/tools/promotion.hpp" 1
77281 # 27 "../boost/math/tools/promotion.hpp"
77282 # 1 "../boost/type_traits/is_floating_point.hpp" 1
77283 # 13 "../boost/type_traits/is_floating_point.hpp"
77284 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
77285 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
77286 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
77287 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
77288 # 14 "../boost/type_traits/is_floating_point.hpp" 2
77289
77290 namespace boost {
77291
77292
77293 template< typename T > struct is_floating_point : public ::boost::integral_constant<bool,false> { public: };
77294 template<> struct is_floating_point< float > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< float const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< float volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< float const volatile > : public ::boost::integral_constant<bool,true> { public: };
77295 template<> struct is_floating_point< double > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< double const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< double volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< double const volatile > : public ::boost::integral_constant<bool,true> { public: };
77296 template<> struct is_floating_point< long double > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< long double const > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< long double volatile > : public ::boost::integral_constant<bool,true> { public: }; template<> struct is_floating_point< long double const volatile > : public ::boost::integral_constant<bool,true> { public: };
77297
77298 }
77299
77300 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
77301 # 26 "../boost/type_traits/is_floating_point.hpp" 2
77302 # 28 "../boost/math/tools/promotion.hpp" 2
77303 # 42 "../boost/math/tools/promotion.hpp"
77304 namespace boost
77305 {
77306 namespace math
77307 {
77308 namespace tools
77309 {
77310 # 68 "../boost/math/tools/promotion.hpp"
77311 template <class T>
77312 struct promote_arg
77313 {
77314 typedef typename mpl::if_<is_integral<T>, double, T>::type type;
77315 };
77316
77317
77318 template <> struct promote_arg<float> { typedef float type; };
77319 template <> struct promote_arg<double>{ typedef double type; };
77320 template <> struct promote_arg<long double> { typedef long double type; };
77321 template <> struct promote_arg<int> { typedef double type; };
77322
77323 template <class T1, class T2>
77324 struct promote_args_2
77325 {
77326
77327 typedef typename promote_arg<T1>::type T1P;
77328 typedef typename promote_arg<T2>::type T2P;
77329
77330 typedef typename mpl::if_<
77331 typename mpl::and_<is_floating_point<T1P>, is_floating_point<T2P> >::type,
77332 typename mpl::if_< typename mpl::or_<is_same<long double, T1P>, is_same<long double, T2P> >::type,
77333 long double,
77334 typename mpl::if_< typename mpl::or_<is_same<double, T1P>, is_same<double, T2P> >::type,
77335 double,
77336 float
77337 >::type
77338 >::type,
77339
77340 typename mpl::if_< typename mpl::and_<mpl::not_<is_floating_point<T2P> >, ::boost::is_convertible<T1P, T2P> >, T2P, T1P>::type>::type type;
77341 };
77342
77343
77344 template <> struct promote_args_2<float, float> { typedef float type; };
77345 template <> struct promote_args_2<double, double>{ typedef double type; };
77346 template <> struct promote_args_2<long double, long double> { typedef long double type; };
77347 template <> struct promote_args_2<int, int> { typedef double type; };
77348 template <> struct promote_args_2<int, float> { typedef double type; };
77349 template <> struct promote_args_2<float, int> { typedef double type; };
77350 template <> struct promote_args_2<int, double> { typedef double type; };
77351 template <> struct promote_args_2<double, int> { typedef double type; };
77352 template <> struct promote_args_2<int, long double> { typedef long double type; };
77353 template <> struct promote_args_2<long double, int> { typedef long double type; };
77354 template <> struct promote_args_2<float, double> { typedef double type; };
77355 template <> struct promote_args_2<double, float> { typedef double type; };
77356 template <> struct promote_args_2<float, long double> { typedef long double type; };
77357 template <> struct promote_args_2<long double, float> { typedef long double type; };
77358 template <> struct promote_args_2<double, long double> { typedef long double type; };
77359 template <> struct promote_args_2<long double, double> { typedef long double type; };
77360
77361 template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float>
77362 struct promote_args
77363 {
77364 typedef typename promote_args_2<
77365 typename remove_cv<T1>::type,
77366 typename promote_args_2<
77367 typename remove_cv<T2>::type,
77368 typename promote_args_2<
77369 typename remove_cv<T3>::type,
77370 typename promote_args_2<
77371 typename remove_cv<T4>::type,
77372 typename promote_args_2<
77373 typename remove_cv<T5>::type, typename remove_cv<T6>::type
77374 >::type
77375 >::type
77376 >::type
77377 >::type
77378 >::type type;
77379
77380
77381
77382
77383
77384
77385
77386 };
77387
77388 }
77389 }
77390 }
77391 # 28 "../boost/math/special_functions/math_fwd.hpp" 2
77392 # 1 "../boost/math/policies/policy.hpp" 1
77393 # 9 "../boost/math/policies/policy.hpp"
77394 # 1 "../boost/mpl/list.hpp" 1
77395 # 18 "../boost/mpl/list.hpp"
77396 # 1 "../boost/mpl/limits/list.hpp" 1
77397 # 19 "../boost/mpl/list.hpp" 2
77398 # 36 "../boost/mpl/list.hpp"
77399 # 1 "../boost/mpl/list/list20.hpp" 1
77400 # 18 "../boost/mpl/list/list20.hpp"
77401 # 1 "../boost/mpl/list/list10.hpp" 1
77402 # 18 "../boost/mpl/list/list10.hpp"
77403 # 1 "../boost/mpl/list/list0.hpp" 1
77404 # 17 "../boost/mpl/list/list0.hpp"
77405 # 1 "../boost/mpl/long.hpp" 1
77406 # 17 "../boost/mpl/long.hpp"
77407 # 1 "../boost/mpl/long_fwd.hpp" 1
77408 # 20 "../boost/mpl/long_fwd.hpp"
77409 namespace mpl_ {
77410
77411 template< long N > struct long_;
77412
77413 }
77414 namespace boost { namespace mpl { using ::mpl_::long_; } }
77415 # 18 "../boost/mpl/long.hpp" 2
77416
77417
77418 # 1 "../boost/mpl/aux_/integral_wrapper.hpp" 1
77419 # 40 "../boost/mpl/aux_/integral_wrapper.hpp"
77420 namespace mpl_ {
77421
77422 template< long N >
77423 struct long_
77424 {
77425 static const long value = N;
77426
77427
77428
77429
77430
77431 typedef long_ type;
77432
77433 typedef long value_type;
77434 typedef integral_c_tag tag;
77435 # 72 "../boost/mpl/aux_/integral_wrapper.hpp"
77436 typedef mpl_::long_< static_cast<long>((value + 1)) > next;
77437 typedef mpl_::long_< static_cast<long>((value - 1)) > prior;
77438
77439
77440
77441
77442
77443
77444 operator long() const { return static_cast<long>(this->value); }
77445 };
77446
77447
77448 template< long N >
77449 long const mpl_::long_< N >::value;
77450
77451
77452 }
77453 # 21 "../boost/mpl/long.hpp" 2
77454 # 18 "../boost/mpl/list/list0.hpp" 2
77455
77456 # 1 "../boost/mpl/list/aux_/push_front.hpp" 1
77457 # 17 "../boost/mpl/list/aux_/push_front.hpp"
77458 # 1 "../boost/mpl/push_front_fwd.hpp" 1
77459 # 17 "../boost/mpl/push_front_fwd.hpp"
77460 namespace boost { namespace mpl {
77461
77462 template< typename Tag > struct push_front_impl;
77463 template< typename Sequence, typename T > struct push_front;
77464
77465 }}
77466 # 18 "../boost/mpl/list/aux_/push_front.hpp" 2
77467
77468 # 1 "../boost/mpl/list/aux_/item.hpp" 1
77469 # 18 "../boost/mpl/list/aux_/item.hpp"
77470 # 1 "../boost/mpl/list/aux_/tag.hpp" 1
77471 # 17 "../boost/mpl/list/aux_/tag.hpp"
77472 namespace boost { namespace mpl { namespace aux {
77473
77474 struct list_tag;
77475 struct l_iter_tag;
77476
77477 }}}
77478 # 19 "../boost/mpl/list/aux_/item.hpp" 2
77479
77480
77481
77482 namespace boost { namespace mpl {
77483
77484 template<
77485 typename Size
77486 , typename T
77487 , typename Next
77488 >
77489 struct l_item
77490 {
77491
77492
77493
77494
77495 typedef aux::list_tag tag;
77496 typedef l_item type;
77497
77498 typedef Size size;
77499 typedef T item;
77500 typedef Next next;
77501 };
77502
77503 struct l_end
77504 {
77505
77506
77507
77508 typedef aux::list_tag tag;
77509 typedef l_end type;
77510 typedef long_<0> size;
77511 };
77512
77513 }}
77514 # 20 "../boost/mpl/list/aux_/push_front.hpp" 2
77515
77516
77517 namespace boost { namespace mpl {
77518
77519 template<>
77520 struct push_front_impl< aux::list_tag >
77521 {
77522 template< typename List, typename T > struct apply
77523 {
77524 typedef l_item<
77525 typename next<typename List::size>::type
77526 , T
77527 , typename List::type
77528 > type;
77529 };
77530 };
77531
77532 }}
77533 # 20 "../boost/mpl/list/list0.hpp" 2
77534 # 1 "../boost/mpl/list/aux_/pop_front.hpp" 1
77535 # 17 "../boost/mpl/list/aux_/pop_front.hpp"
77536 # 1 "../boost/mpl/pop_front_fwd.hpp" 1
77537 # 17 "../boost/mpl/pop_front_fwd.hpp"
77538 namespace boost { namespace mpl {
77539
77540 template< typename Tag > struct pop_front_impl;
77541 template< typename Sequence > struct pop_front;
77542
77543 }}
77544 # 18 "../boost/mpl/list/aux_/pop_front.hpp" 2
77545
77546
77547
77548 namespace boost { namespace mpl {
77549
77550 template<>
77551 struct pop_front_impl< aux::list_tag >
77552 {
77553 template< typename List > struct apply
77554 {
77555 typedef typename mpl::next<List>::type type;
77556 };
77557 };
77558
77559 }}
77560 # 21 "../boost/mpl/list/list0.hpp" 2
77561 # 1 "../boost/mpl/list/aux_/push_back.hpp" 1
77562 # 17 "../boost/mpl/list/aux_/push_back.hpp"
77563 # 1 "../boost/mpl/push_back_fwd.hpp" 1
77564 # 17 "../boost/mpl/push_back_fwd.hpp"
77565 namespace boost { namespace mpl {
77566
77567 template< typename Tag > struct push_back_impl;
77568 template< typename Sequence, typename T > struct push_back;
77569
77570 }}
77571 # 18 "../boost/mpl/list/aux_/push_back.hpp" 2
77572
77573
77574
77575 namespace boost { namespace mpl {
77576
77577 template< typename Tag > struct has_push_back_impl;
77578
77579 template<>
77580 struct has_push_back_impl< aux::list_tag >
77581 {
77582 template< typename Seq > struct apply
77583 : false_
77584 {
77585 };
77586 };
77587
77588 }}
77589 # 22 "../boost/mpl/list/list0.hpp" 2
77590 # 1 "../boost/mpl/list/aux_/front.hpp" 1
77591 # 17 "../boost/mpl/list/aux_/front.hpp"
77592 # 1 "../boost/mpl/front_fwd.hpp" 1
77593 # 17 "../boost/mpl/front_fwd.hpp"
77594 namespace boost { namespace mpl {
77595
77596 template< typename Tag > struct front_impl;
77597 template< typename Sequence > struct front;
77598
77599 }}
77600 # 18 "../boost/mpl/list/aux_/front.hpp" 2
77601
77602
77603 namespace boost { namespace mpl {
77604
77605 template<>
77606 struct front_impl< aux::list_tag >
77607 {
77608 template< typename List > struct apply
77609 {
77610 typedef typename List::item type;
77611 };
77612 };
77613
77614 }}
77615 # 23 "../boost/mpl/list/list0.hpp" 2
77616 # 1 "../boost/mpl/list/aux_/clear.hpp" 1
77617 # 17 "../boost/mpl/list/aux_/clear.hpp"
77618 # 1 "../boost/mpl/clear_fwd.hpp" 1
77619 # 17 "../boost/mpl/clear_fwd.hpp"
77620 namespace boost { namespace mpl {
77621
77622 template< typename Tag > struct clear_impl;
77623 template< typename Sequence > struct clear;
77624
77625 }}
77626 # 18 "../boost/mpl/list/aux_/clear.hpp" 2
77627
77628
77629
77630 namespace boost { namespace mpl {
77631
77632 template<>
77633 struct clear_impl< aux::list_tag >
77634 {
77635 template< typename List > struct apply
77636 {
77637 typedef l_end type;
77638 };
77639 };
77640
77641 }}
77642 # 24 "../boost/mpl/list/list0.hpp" 2
77643 # 1 "../boost/mpl/list/aux_/O1_size.hpp" 1
77644 # 17 "../boost/mpl/list/aux_/O1_size.hpp"
77645 # 1 "../boost/mpl/O1_size_fwd.hpp" 1
77646 # 17 "../boost/mpl/O1_size_fwd.hpp"
77647 namespace boost { namespace mpl {
77648
77649 template< typename Tag > struct O1_size_impl;
77650 template< typename Sequence > struct O1_size;
77651
77652 }}
77653 # 18 "../boost/mpl/list/aux_/O1_size.hpp" 2
77654
77655
77656 namespace boost { namespace mpl {
77657
77658 template<>
77659 struct O1_size_impl< aux::list_tag >
77660 {
77661 template< typename List > struct apply
77662 : List::size
77663 {
77664 };
77665 };
77666
77667 }}
77668 # 25 "../boost/mpl/list/list0.hpp" 2
77669 # 1 "../boost/mpl/list/aux_/size.hpp" 1
77670 # 17 "../boost/mpl/list/aux_/size.hpp"
77671 # 1 "../boost/mpl/size_fwd.hpp" 1
77672 # 17 "../boost/mpl/size_fwd.hpp"
77673 namespace boost { namespace mpl {
77674
77675 template< typename Tag > struct size_impl;
77676 template< typename Sequence > struct size;
77677
77678 }}
77679 # 18 "../boost/mpl/list/aux_/size.hpp" 2
77680
77681
77682 namespace boost { namespace mpl {
77683
77684 template<>
77685 struct size_impl< aux::list_tag >
77686 {
77687 template< typename List > struct apply
77688 : List::size
77689 {
77690 };
77691 };
77692
77693 }}
77694 # 26 "../boost/mpl/list/list0.hpp" 2
77695 # 1 "../boost/mpl/list/aux_/empty.hpp" 1
77696 # 17 "../boost/mpl/list/aux_/empty.hpp"
77697 # 1 "../boost/mpl/empty_fwd.hpp" 1
77698 # 17 "../boost/mpl/empty_fwd.hpp"
77699 namespace boost { namespace mpl {
77700
77701 template< typename Tag > struct empty_impl;
77702 template< typename Sequence > struct empty;
77703
77704 }}
77705 # 18 "../boost/mpl/list/aux_/empty.hpp" 2
77706
77707
77708
77709 namespace boost { namespace mpl {
77710
77711 template<>
77712 struct empty_impl< aux::list_tag >
77713 {
77714 template< typename List > struct apply
77715 : not_<typename List::size>
77716 {
77717 };
77718 };
77719
77720 }}
77721 # 27 "../boost/mpl/list/list0.hpp" 2
77722 # 1 "../boost/mpl/list/aux_/begin_end.hpp" 1
77723 # 17 "../boost/mpl/list/aux_/begin_end.hpp"
77724 # 1 "../boost/mpl/begin_end_fwd.hpp" 1
77725 # 17 "../boost/mpl/begin_end_fwd.hpp"
77726 namespace boost { namespace mpl {
77727
77728 template< typename Tag > struct begin_impl;
77729 template< typename Tag > struct end_impl;
77730
77731 template< typename Sequence > struct begin;
77732 template< typename Sequence > struct end;
77733
77734 }}
77735 # 18 "../boost/mpl/list/aux_/begin_end.hpp" 2
77736 # 1 "../boost/mpl/list/aux_/iterator.hpp" 1
77737 # 17 "../boost/mpl/list/aux_/iterator.hpp"
77738 # 1 "../boost/mpl/iterator_tags.hpp" 1
77739 # 19 "../boost/mpl/iterator_tags.hpp"
77740 namespace boost { namespace mpl {
77741
77742 struct forward_iterator_tag : int_<0> { typedef forward_iterator_tag type; };
77743 struct bidirectional_iterator_tag : int_<1> { typedef bidirectional_iterator_tag type; };
77744 struct random_access_iterator_tag : int_<2> { typedef random_access_iterator_tag type; };
77745
77746 }}
77747 # 18 "../boost/mpl/list/aux_/iterator.hpp" 2
77748
77749 # 1 "../boost/mpl/deref.hpp" 1
77750 # 17 "../boost/mpl/deref.hpp"
77751 # 1 "../boost/mpl/aux_/msvc_type.hpp" 1
77752 # 20 "../boost/mpl/aux_/msvc_type.hpp"
77753 namespace boost { namespace mpl { namespace aux {
77754 # 48 "../boost/mpl/aux_/msvc_type.hpp"
77755 template< typename T > struct msvc_type
77756 {
77757 typedef typename T::type type;
77758 };
77759
77760 template<> struct msvc_type<int>
77761 {
77762 typedef int type;
77763 };
77764
77765
77766
77767 }}}
77768 # 18 "../boost/mpl/deref.hpp" 2
77769
77770
77771
77772
77773 namespace boost { namespace mpl {
77774
77775 template<
77776 typename Iterator = na
77777 >
77778 struct deref
77779 {
77780
77781 typedef typename Iterator::type type;
77782
77783
77784
77785
77786 };
77787
77788 template<> struct deref< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : deref< T1 > { }; }; template< typename Tag > struct lambda< deref< na > , Tag , int_<-1> > { typedef false_ is_le; typedef deref< na > result_; typedef deref< na > type; }; namespace aux { template< typename T1 > struct template_arity< deref< T1 > > : int_<1> { }; template<> struct template_arity< deref< na > > : int_<-1> { }; }
77789
77790 }}
77791 # 20 "../boost/mpl/list/aux_/iterator.hpp" 2
77792
77793
77794 # 1 "../boost/mpl/aux_/lambda_spec.hpp" 1
77795 # 23 "../boost/mpl/list/aux_/iterator.hpp" 2
77796
77797
77798 namespace boost { namespace mpl {
77799
77800
77801
77802 template< typename Node >
77803 struct l_iter
77804 {
77805 typedef aux::l_iter_tag tag;
77806 typedef forward_iterator_tag category;
77807 };
77808
77809 template< typename Node >
77810 struct deref< l_iter<Node> >
77811 {
77812 typedef typename Node::item type;
77813 };
77814
77815 template< typename Node >
77816 struct next< l_iter<Node> >
77817 {
77818 typedef l_iter< typename Node::next > type;
77819 };
77820 # 62 "../boost/mpl/list/aux_/iterator.hpp"
77821 template<> struct l_iter<l_end>
77822 {
77823 typedef aux::l_iter_tag tag;
77824 typedef forward_iterator_tag category;
77825
77826
77827
77828
77829 };
77830
77831 template< typename T1 , typename Tag > struct lambda< l_iter< T1 > , Tag , int_<1> > { typedef false_ is_le; typedef l_iter< T1 > result_; typedef result_ type; };
77832
77833 }}
77834 # 19 "../boost/mpl/list/aux_/begin_end.hpp" 2
77835
77836
77837
77838 namespace boost { namespace mpl {
77839
77840 template<>
77841 struct begin_impl< aux::list_tag >
77842 {
77843 template< typename List > struct apply
77844 {
77845 typedef l_iter<typename List::type> type;
77846 };
77847 };
77848
77849 template<>
77850 struct end_impl< aux::list_tag >
77851 {
77852 template< typename > struct apply
77853 {
77854 typedef l_iter<l_end> type;
77855 };
77856 };
77857
77858 }}
77859 # 28 "../boost/mpl/list/list0.hpp" 2
77860
77861
77862 namespace boost { namespace mpl {
77863
77864 template< typename Dummy = na > struct list0;
77865
77866 template<> struct list0<na>
77867 : l_end
77868 {
77869 typedef l_end type;
77870 };
77871
77872 }}
77873 # 19 "../boost/mpl/list/list10.hpp" 2
77874 # 27 "../boost/mpl/list/list10.hpp"
77875 # 1 "../boost/mpl/list/aux_/include_preprocessed.hpp" 1
77876 # 30 "../boost/mpl/list/aux_/include_preprocessed.hpp"
77877 # 1 "../boost/mpl/list/aux_/preprocessed/plain/list10.hpp" 1
77878 # 12 "../boost/mpl/list/aux_/preprocessed/plain/list10.hpp"
77879 namespace boost { namespace mpl {
77880
77881 template<
77882 typename T0
77883 >
77884 struct list1
77885 : l_item<
77886 long_<1>
77887 , T0
77888 , l_end
77889 >
77890 {
77891 typedef list1 type;
77892 };
77893
77894 template<
77895 typename T0, typename T1
77896 >
77897 struct list2
77898 : l_item<
77899 long_<2>
77900 , T0
77901 , list1<T1>
77902 >
77903 {
77904 typedef list2 type;
77905 };
77906
77907 template<
77908 typename T0, typename T1, typename T2
77909 >
77910 struct list3
77911 : l_item<
77912 long_<3>
77913 , T0
77914 , list2< T1,T2 >
77915 >
77916 {
77917 typedef list3 type;
77918 };
77919
77920 template<
77921 typename T0, typename T1, typename T2, typename T3
77922 >
77923 struct list4
77924 : l_item<
77925 long_<4>
77926 , T0
77927 , list3< T1,T2,T3 >
77928 >
77929 {
77930 typedef list4 type;
77931 };
77932
77933 template<
77934 typename T0, typename T1, typename T2, typename T3, typename T4
77935 >
77936 struct list5
77937 : l_item<
77938 long_<5>
77939 , T0
77940 , list4< T1,T2,T3,T4 >
77941 >
77942 {
77943 typedef list5 type;
77944 };
77945
77946 template<
77947 typename T0, typename T1, typename T2, typename T3, typename T4
77948 , typename T5
77949 >
77950 struct list6
77951 : l_item<
77952 long_<6>
77953 , T0
77954 , list5< T1,T2,T3,T4,T5 >
77955 >
77956 {
77957 typedef list6 type;
77958 };
77959
77960 template<
77961 typename T0, typename T1, typename T2, typename T3, typename T4
77962 , typename T5, typename T6
77963 >
77964 struct list7
77965 : l_item<
77966 long_<7>
77967 , T0
77968 , list6< T1,T2,T3,T4,T5,T6 >
77969 >
77970 {
77971 typedef list7 type;
77972 };
77973
77974 template<
77975 typename T0, typename T1, typename T2, typename T3, typename T4
77976 , typename T5, typename T6, typename T7
77977 >
77978 struct list8
77979 : l_item<
77980 long_<8>
77981 , T0
77982 , list7< T1,T2,T3,T4,T5,T6,T7 >
77983 >
77984 {
77985 typedef list8 type;
77986 };
77987
77988 template<
77989 typename T0, typename T1, typename T2, typename T3, typename T4
77990 , typename T5, typename T6, typename T7, typename T8
77991 >
77992 struct list9
77993 : l_item<
77994 long_<9>
77995 , T0
77996 , list8< T1,T2,T3,T4,T5,T6,T7,T8 >
77997 >
77998 {
77999 typedef list9 type;
78000 };
78001
78002 template<
78003 typename T0, typename T1, typename T2, typename T3, typename T4
78004 , typename T5, typename T6, typename T7, typename T8, typename T9
78005 >
78006 struct list10
78007 : l_item<
78008 long_<10>
78009 , T0
78010 , list9< T1,T2,T3,T4,T5,T6,T7,T8,T9 >
78011 >
78012 {
78013 typedef list10 type;
78014 };
78015
78016 }}
78017 # 31 "../boost/mpl/list/aux_/include_preprocessed.hpp" 2
78018 # 28 "../boost/mpl/list/list10.hpp" 2
78019 # 19 "../boost/mpl/list/list20.hpp" 2
78020 # 27 "../boost/mpl/list/list20.hpp"
78021 # 1 "../boost/mpl/list/aux_/include_preprocessed.hpp" 1
78022 # 30 "../boost/mpl/list/aux_/include_preprocessed.hpp"
78023 # 1 "../boost/mpl/list/aux_/preprocessed/plain/list20.hpp" 1
78024 # 12 "../boost/mpl/list/aux_/preprocessed/plain/list20.hpp"
78025 namespace boost { namespace mpl {
78026
78027 template<
78028 typename T0, typename T1, typename T2, typename T3, typename T4
78029 , typename T5, typename T6, typename T7, typename T8, typename T9
78030 , typename T10
78031 >
78032 struct list11
78033 : l_item<
78034 long_<11>
78035 , T0
78036 , list10< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
78037 >
78038 {
78039 typedef list11 type;
78040 };
78041
78042 template<
78043 typename T0, typename T1, typename T2, typename T3, typename T4
78044 , typename T5, typename T6, typename T7, typename T8, typename T9
78045 , typename T10, typename T11
78046 >
78047 struct list12
78048 : l_item<
78049 long_<12>
78050 , T0
78051 , list11< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
78052 >
78053 {
78054 typedef list12 type;
78055 };
78056
78057 template<
78058 typename T0, typename T1, typename T2, typename T3, typename T4
78059 , typename T5, typename T6, typename T7, typename T8, typename T9
78060 , typename T10, typename T11, typename T12
78061 >
78062 struct list13
78063 : l_item<
78064 long_<13>
78065 , T0
78066 , list12< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
78067 >
78068 {
78069 typedef list13 type;
78070 };
78071
78072 template<
78073 typename T0, typename T1, typename T2, typename T3, typename T4
78074 , typename T5, typename T6, typename T7, typename T8, typename T9
78075 , typename T10, typename T11, typename T12, typename T13
78076 >
78077 struct list14
78078 : l_item<
78079 long_<14>
78080 , T0
78081 , list13< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
78082 >
78083 {
78084 typedef list14 type;
78085 };
78086
78087 template<
78088 typename T0, typename T1, typename T2, typename T3, typename T4
78089 , typename T5, typename T6, typename T7, typename T8, typename T9
78090 , typename T10, typename T11, typename T12, typename T13, typename T14
78091 >
78092 struct list15
78093 : l_item<
78094 long_<15>
78095 , T0
78096 , list14< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >
78097 >
78098 {
78099 typedef list15 type;
78100 };
78101
78102 template<
78103 typename T0, typename T1, typename T2, typename T3, typename T4
78104 , typename T5, typename T6, typename T7, typename T8, typename T9
78105 , typename T10, typename T11, typename T12, typename T13, typename T14
78106 , typename T15
78107 >
78108 struct list16
78109 : l_item<
78110 long_<16>
78111 , T0
78112 , list15< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >
78113 >
78114 {
78115 typedef list16 type;
78116 };
78117
78118 template<
78119 typename T0, typename T1, typename T2, typename T3, typename T4
78120 , typename T5, typename T6, typename T7, typename T8, typename T9
78121 , typename T10, typename T11, typename T12, typename T13, typename T14
78122 , typename T15, typename T16
78123 >
78124 struct list17
78125 : l_item<
78126 long_<17>
78127 , T0
78128 , list16< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >
78129 >
78130 {
78131 typedef list17 type;
78132 };
78133
78134 template<
78135 typename T0, typename T1, typename T2, typename T3, typename T4
78136 , typename T5, typename T6, typename T7, typename T8, typename T9
78137 , typename T10, typename T11, typename T12, typename T13, typename T14
78138 , typename T15, typename T16, typename T17
78139 >
78140 struct list18
78141 : l_item<
78142 long_<18>
78143 , T0
78144 , list17< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >
78145 >
78146 {
78147 typedef list18 type;
78148 };
78149
78150 template<
78151 typename T0, typename T1, typename T2, typename T3, typename T4
78152 , typename T5, typename T6, typename T7, typename T8, typename T9
78153 , typename T10, typename T11, typename T12, typename T13, typename T14
78154 , typename T15, typename T16, typename T17, typename T18
78155 >
78156 struct list19
78157 : l_item<
78158 long_<19>
78159 , T0
78160 , list18< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >
78161 >
78162 {
78163 typedef list19 type;
78164 };
78165
78166 template<
78167 typename T0, typename T1, typename T2, typename T3, typename T4
78168 , typename T5, typename T6, typename T7, typename T8, typename T9
78169 , typename T10, typename T11, typename T12, typename T13, typename T14
78170 , typename T15, typename T16, typename T17, typename T18, typename T19
78171 >
78172 struct list20
78173 : l_item<
78174 long_<20>
78175 , T0
78176 , list19< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >
78177 >
78178 {
78179 typedef list20 type;
78180 };
78181
78182 }}
78183 # 31 "../boost/mpl/list/aux_/include_preprocessed.hpp" 2
78184 # 28 "../boost/mpl/list/list20.hpp" 2
78185 # 37 "../boost/mpl/list.hpp" 2
78186 # 46 "../boost/mpl/list.hpp"
78187 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
78188 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
78189 # 1 "../boost/mpl/aux_/preprocessed/gcc/list.hpp" 1
78190 # 12 "../boost/mpl/aux_/preprocessed/gcc/list.hpp"
78191 namespace boost { namespace mpl {
78192
78193 template<
78194 typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
78195 , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
78196 , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
78197 , typename T12 = na, typename T13 = na, typename T14 = na
78198 , typename T15 = na, typename T16 = na, typename T17 = na
78199 , typename T18 = na, typename T19 = na
78200 >
78201 struct list;
78202
78203 template<
78204
78205 >
78206 struct list<
78207 na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
78208 , na, na, na
78209 >
78210 : list0< >
78211 {
78212 typedef list0< >::type type;
78213 };
78214
78215 template<
78216 typename T0
78217 >
78218 struct list<
78219 T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
78220 , na, na, na
78221 >
78222 : list1<T0>
78223 {
78224 typedef typename list1<T0>::type type;
78225 };
78226
78227 template<
78228 typename T0, typename T1
78229 >
78230 struct list<
78231 T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
78232 , na, na, na
78233 >
78234 : list2< T0,T1 >
78235 {
78236 typedef typename list2< T0,T1 >::type type;
78237 };
78238
78239 template<
78240 typename T0, typename T1, typename T2
78241 >
78242 struct list<
78243 T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
78244 , na, na, na
78245 >
78246 : list3< T0,T1,T2 >
78247 {
78248 typedef typename list3< T0,T1,T2 >::type type;
78249 };
78250
78251 template<
78252 typename T0, typename T1, typename T2, typename T3
78253 >
78254 struct list<
78255 T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
78256 , na, na, na
78257 >
78258 : list4< T0,T1,T2,T3 >
78259 {
78260 typedef typename list4< T0,T1,T2,T3 >::type type;
78261 };
78262
78263 template<
78264 typename T0, typename T1, typename T2, typename T3, typename T4
78265 >
78266 struct list<
78267 T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
78268 , na, na, na
78269 >
78270 : list5< T0,T1,T2,T3,T4 >
78271 {
78272 typedef typename list5< T0,T1,T2,T3,T4 >::type type;
78273 };
78274
78275 template<
78276 typename T0, typename T1, typename T2, typename T3, typename T4
78277 , typename T5
78278 >
78279 struct list<
78280 T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
78281 , na, na, na
78282 >
78283 : list6< T0,T1,T2,T3,T4,T5 >
78284 {
78285 typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
78286 };
78287
78288 template<
78289 typename T0, typename T1, typename T2, typename T3, typename T4
78290 , typename T5, typename T6
78291 >
78292 struct list<
78293 T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
78294 , na, na, na
78295 >
78296 : list7< T0,T1,T2,T3,T4,T5,T6 >
78297 {
78298 typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
78299 };
78300
78301 template<
78302 typename T0, typename T1, typename T2, typename T3, typename T4
78303 , typename T5, typename T6, typename T7
78304 >
78305 struct list<
78306 T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
78307 , na, na, na
78308 >
78309 : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
78310 {
78311 typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
78312 };
78313
78314 template<
78315 typename T0, typename T1, typename T2, typename T3, typename T4
78316 , typename T5, typename T6, typename T7, typename T8
78317 >
78318 struct list<
78319 T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
78320 , na, na, na
78321 >
78322 : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
78323 {
78324 typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
78325 };
78326
78327 template<
78328 typename T0, typename T1, typename T2, typename T3, typename T4
78329 , typename T5, typename T6, typename T7, typename T8, typename T9
78330 >
78331 struct list<
78332 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
78333 , na, na, na
78334 >
78335 : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
78336 {
78337 typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
78338 };
78339
78340 template<
78341 typename T0, typename T1, typename T2, typename T3, typename T4
78342 , typename T5, typename T6, typename T7, typename T8, typename T9
78343 , typename T10
78344 >
78345 struct list<
78346 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
78347 , na, na, na
78348 >
78349 : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
78350 {
78351 typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
78352 };
78353
78354 template<
78355 typename T0, typename T1, typename T2, typename T3, typename T4
78356 , typename T5, typename T6, typename T7, typename T8, typename T9
78357 , typename T10, typename T11
78358 >
78359 struct list<
78360 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
78361 , na, na, na, na
78362 >
78363 : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
78364 {
78365 typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
78366 };
78367
78368 template<
78369 typename T0, typename T1, typename T2, typename T3, typename T4
78370 , typename T5, typename T6, typename T7, typename T8, typename T9
78371 , typename T10, typename T11, typename T12
78372 >
78373 struct list<
78374 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
78375 , na, na, na, na
78376 >
78377 : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
78378 {
78379 typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
78380 };
78381
78382 template<
78383 typename T0, typename T1, typename T2, typename T3, typename T4
78384 , typename T5, typename T6, typename T7, typename T8, typename T9
78385 , typename T10, typename T11, typename T12, typename T13
78386 >
78387 struct list<
78388 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
78389 , na, na, na, na
78390 >
78391 : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
78392 {
78393 typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
78394 };
78395
78396 template<
78397 typename T0, typename T1, typename T2, typename T3, typename T4
78398 , typename T5, typename T6, typename T7, typename T8, typename T9
78399 , typename T10, typename T11, typename T12, typename T13, typename T14
78400 >
78401 struct list<
78402 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
78403 , na, na, na, na
78404 >
78405 : list15<
78406 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78407 >
78408 {
78409 typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
78410 };
78411
78412 template<
78413 typename T0, typename T1, typename T2, typename T3, typename T4
78414 , typename T5, typename T6, typename T7, typename T8, typename T9
78415 , typename T10, typename T11, typename T12, typename T13, typename T14
78416 , typename T15
78417 >
78418 struct list<
78419 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78420 , T15, na, na, na, na
78421 >
78422 : list16<
78423 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78424 , T15
78425 >
78426 {
78427 typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
78428 };
78429
78430 template<
78431 typename T0, typename T1, typename T2, typename T3, typename T4
78432 , typename T5, typename T6, typename T7, typename T8, typename T9
78433 , typename T10, typename T11, typename T12, typename T13, typename T14
78434 , typename T15, typename T16
78435 >
78436 struct list<
78437 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78438 , T15, T16, na, na, na
78439 >
78440 : list17<
78441 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78442 , T15, T16
78443 >
78444 {
78445 typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
78446 };
78447
78448 template<
78449 typename T0, typename T1, typename T2, typename T3, typename T4
78450 , typename T5, typename T6, typename T7, typename T8, typename T9
78451 , typename T10, typename T11, typename T12, typename T13, typename T14
78452 , typename T15, typename T16, typename T17
78453 >
78454 struct list<
78455 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78456 , T15, T16, T17, na, na
78457 >
78458 : list18<
78459 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78460 , T15, T16, T17
78461 >
78462 {
78463 typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
78464 };
78465
78466 template<
78467 typename T0, typename T1, typename T2, typename T3, typename T4
78468 , typename T5, typename T6, typename T7, typename T8, typename T9
78469 , typename T10, typename T11, typename T12, typename T13, typename T14
78470 , typename T15, typename T16, typename T17, typename T18
78471 >
78472 struct list<
78473 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78474 , T15, T16, T17, T18, na
78475 >
78476 : list19<
78477 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78478 , T15, T16, T17, T18
78479 >
78480 {
78481 typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
78482 };
78483
78484
78485
78486 template<
78487 typename T0, typename T1, typename T2, typename T3, typename T4
78488 , typename T5, typename T6, typename T7, typename T8, typename T9
78489 , typename T10, typename T11, typename T12, typename T13, typename T14
78490 , typename T15, typename T16, typename T17, typename T18, typename T19
78491 >
78492 struct list
78493 : list20<
78494 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
78495 , T15, T16, T17, T18, T19
78496 >
78497 {
78498 typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
78499 };
78500
78501 }}
78502 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
78503 # 47 "../boost/mpl/list.hpp" 2
78504 # 10 "../boost/math/policies/policy.hpp" 2
78505 # 1 "../boost/mpl/contains.hpp" 1
78506 # 18 "../boost/mpl/contains.hpp"
78507 # 1 "../boost/mpl/contains_fwd.hpp" 1
78508 # 18 "../boost/mpl/contains_fwd.hpp"
78509 namespace boost { namespace mpl {
78510
78511 template< typename Tag > struct contains_impl;
78512 template< typename Sequence, typename T > struct contains;
78513
78514 }}
78515 # 19 "../boost/mpl/contains.hpp" 2
78516 # 1 "../boost/mpl/sequence_tag.hpp" 1
78517 # 17 "../boost/mpl/sequence_tag.hpp"
78518 # 1 "../boost/mpl/sequence_tag_fwd.hpp" 1
78519 # 17 "../boost/mpl/sequence_tag_fwd.hpp"
78520 namespace boost { namespace mpl {
78521
78522 struct nested_begin_end_tag;
78523 struct non_sequence_tag;
78524
78525 template< typename Sequence > struct sequence_tag;
78526
78527 }}
78528 # 18 "../boost/mpl/sequence_tag.hpp" 2
78529
78530 # 1 "../boost/mpl/aux_/has_begin.hpp" 1
78531 # 19 "../boost/mpl/aux_/has_begin.hpp"
78532 namespace boost { namespace mpl { namespace aux {
78533 template< typename T, typename fallback_ = boost::mpl::bool_<true> > struct has_begin { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::begin>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
78534 }}}
78535 # 20 "../boost/mpl/sequence_tag.hpp" 2
78536
78537
78538
78539
78540
78541
78542 namespace boost { namespace mpl {
78543 # 78 "../boost/mpl/sequence_tag.hpp"
78544 namespace aux {
78545
78546 template< bool has_tag_, bool has_begin_ >
78547 struct sequence_tag_impl
78548 {
78549
78550
78551 template< typename Sequence > struct result2_;
78552 };
78553 # 98 "../boost/mpl/sequence_tag.hpp"
78554 template<> struct sequence_tag_impl<true,true> { template< typename Sequence > struct result2_ { typedef typename Sequence::tag type; }; };
78555 template<> struct sequence_tag_impl<true,false> { template< typename Sequence > struct result2_ { typedef typename Sequence::tag type; }; };
78556 template<> struct sequence_tag_impl<false,true> { template< typename Sequence > struct result2_ { typedef nested_begin_end_tag type; }; };
78557 template<> struct sequence_tag_impl<false,false> { template< typename Sequence > struct result2_ { typedef non_sequence_tag type; }; };
78558
78559
78560
78561 }
78562
78563 template<
78564 typename Sequence = na
78565 >
78566 struct sequence_tag
78567 : aux::sequence_tag_impl<
78568 ::boost::mpl::aux::has_tag<Sequence>::value
78569 , ::boost::mpl::aux::has_begin<Sequence>::value
78570 >::template result2_<Sequence>
78571 {
78572 };
78573
78574
78575
78576 template<> struct sequence_tag< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : sequence_tag< T1 > { }; }; template< typename Tag > struct lambda< sequence_tag< na > , Tag , int_<-1> > { typedef false_ is_le; typedef sequence_tag< na > result_; typedef sequence_tag< na > type; }; namespace aux { template< typename T1 > struct template_arity< sequence_tag< T1 > > : int_<1> { }; template<> struct template_arity< sequence_tag< na > > : int_<-1> { }; }
78577
78578 }}
78579 # 20 "../boost/mpl/contains.hpp" 2
78580 # 1 "../boost/mpl/aux_/contains_impl.hpp" 1
78581 # 19 "../boost/mpl/aux_/contains_impl.hpp"
78582 # 1 "../boost/mpl/begin_end.hpp" 1
78583 # 18 "../boost/mpl/begin_end.hpp"
78584 # 1 "../boost/mpl/aux_/begin_end_impl.hpp" 1
78585 # 23 "../boost/mpl/aux_/begin_end_impl.hpp"
78586 # 1 "../boost/mpl/aux_/traits_lambda_spec.hpp" 1
78587 # 24 "../boost/mpl/aux_/begin_end_impl.hpp" 2
78588
78589
78590 namespace boost { namespace mpl {
78591
78592
78593 namespace aux {
78594
78595 template< typename Sequence >
78596 struct begin_type
78597 {
78598 typedef typename Sequence::begin type;
78599 };
78600 template< typename Sequence >
78601 struct end_type
78602 {
78603 typedef typename Sequence::end type;
78604 };
78605
78606 }
78607
78608
78609
78610
78611
78612 template< typename Tag >
78613 struct begin_impl
78614 {
78615 template< typename Sequence > struct apply
78616 {
78617 typedef typename eval_if<aux::has_begin<Sequence, true_>,
78618 aux::begin_type<Sequence>, void_>::type type;
78619 };
78620 };
78621
78622 template< typename Tag >
78623 struct end_impl
78624 {
78625 template< typename Sequence > struct apply
78626 {
78627 typedef typename eval_if<aux::has_begin<Sequence, true_>,
78628 aux::end_type<Sequence>, void_>::type type;
78629 };
78630 };
78631 # 82 "../boost/mpl/aux_/begin_end_impl.hpp"
78632 template<> struct begin_impl<nested_begin_end_tag> { template< typename Sequence > struct apply { typedef typename Sequence::begin type; }; };
78633 template<> struct end_impl<nested_begin_end_tag> { template< typename Sequence > struct apply { typedef typename Sequence::end type; }; };
78634
78635
78636
78637
78638 template<> struct begin_impl<non_sequence_tag> { template< typename Sequence > struct apply { typedef void_ type; }; };
78639 template<> struct end_impl<non_sequence_tag> { template< typename Sequence > struct apply { typedef void_ type; }; };
78640 template<> struct begin_impl<na> { template< typename Sequence > struct apply { typedef void_ type; }; };
78641 template<> struct end_impl<na> { template< typename Sequence > struct apply { typedef void_ type; }; };
78642
78643
78644
78645
78646
78647
78648
78649 }}
78650 # 19 "../boost/mpl/begin_end.hpp" 2
78651
78652
78653
78654
78655 namespace boost { namespace mpl {
78656
78657
78658
78659
78660 template<
78661 typename Sequence = na
78662 >
78663 struct begin
78664 {
78665 typedef typename sequence_tag<Sequence>::type tag_;
78666 typedef typename begin_impl< tag_ >
78667 ::template apply< Sequence >::type type;
78668
78669
78670 };
78671
78672 template<
78673 typename Sequence = na
78674 >
78675 struct end
78676 {
78677 typedef typename sequence_tag<Sequence>::type tag_;
78678 typedef typename end_impl< tag_ >
78679 ::template apply< Sequence >::type type;
78680
78681
78682 };
78683
78684 template<> struct begin< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : begin< T1 > { }; }; template< typename Tag > struct lambda< begin< na > , Tag , int_<-1> > { typedef false_ is_le; typedef begin< na > result_; typedef begin< na > type; }; namespace aux { template< typename T1 > struct template_arity< begin< T1 > > : int_<1> { }; template<> struct template_arity< begin< na > > : int_<-1> { }; }
78685 template<> struct end< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : end< T1 > { }; }; template< typename Tag > struct lambda< end< na > , Tag , int_<-1> > { typedef false_ is_le; typedef end< na > result_; typedef end< na > type; }; namespace aux { template< typename T1 > struct template_arity< end< T1 > > : int_<1> { }; template<> struct template_arity< end< na > > : int_<-1> { }; }
78686
78687 }}
78688 # 20 "../boost/mpl/aux_/contains_impl.hpp" 2
78689 # 1 "../boost/mpl/find.hpp" 1
78690 # 17 "../boost/mpl/find.hpp"
78691 # 1 "../boost/mpl/find_if.hpp" 1
78692 # 17 "../boost/mpl/find_if.hpp"
78693 # 1 "../boost/mpl/aux_/find_if_pred.hpp" 1
78694 # 14 "../boost/mpl/aux_/find_if_pred.hpp"
78695 # 1 "../boost/mpl/aux_/iter_apply.hpp" 1
78696 # 17 "../boost/mpl/aux_/iter_apply.hpp"
78697 # 1 "../boost/mpl/apply.hpp" 1
78698 # 18 "../boost/mpl/aux_/iter_apply.hpp" 2
78699
78700
78701 namespace boost { namespace mpl { namespace aux {
78702
78703 template<
78704 typename F
78705 , typename Iterator
78706 >
78707 struct iter_apply1
78708 : apply1< F,typename deref<Iterator>::type >
78709 {
78710 };
78711
78712 template<
78713 typename F
78714 , typename Iterator1
78715 , typename Iterator2
78716 >
78717 struct iter_apply2
78718 : apply2<
78719 F
78720 , typename deref<Iterator1>::type
78721 , typename deref<Iterator2>::type
78722 >
78723 {
78724 };
78725
78726 }}}
78727 # 15 "../boost/mpl/aux_/find_if_pred.hpp" 2
78728
78729
78730 namespace boost { namespace mpl { namespace aux {
78731
78732 template< typename Predicate >
78733 struct find_if_pred
78734 {
78735 template< typename Iterator >
78736 struct apply
78737 {
78738 typedef not_< aux::iter_apply1<Predicate,Iterator> > type;
78739 };
78740 };
78741
78742 }}}
78743 # 18 "../boost/mpl/find_if.hpp" 2
78744 # 1 "../boost/mpl/arg.hpp" 1
78745 # 19 "../boost/mpl/find_if.hpp" 2
78746 # 1 "../boost/mpl/iter_fold_if.hpp" 1
78747 # 19 "../boost/mpl/iter_fold_if.hpp"
78748 # 1 "../boost/mpl/logical.hpp" 1
78749 # 20 "../boost/mpl/iter_fold_if.hpp" 2
78750
78751
78752
78753 # 1 "../boost/mpl/pair.hpp" 1
78754 # 22 "../boost/mpl/pair.hpp"
78755 namespace boost { namespace mpl {
78756
78757 template<
78758 typename T1 = na
78759 , typename T2 = na
78760 >
78761 struct pair
78762 {
78763 typedef pair type;
78764 typedef T1 first;
78765 typedef T2 second;
78766
78767
78768 };
78769
78770 template<
78771 typename P = na
78772 >
78773 struct first
78774 {
78775
78776 typedef typename P::first type;
78777
78778
78779
78780
78781 };
78782
78783 template<
78784 typename P = na
78785 >
78786 struct second
78787 {
78788
78789 typedef typename P::second type;
78790
78791
78792
78793
78794 };
78795
78796
78797 template<> struct pair< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : pair< T1 , T2 > { }; }; template< typename Tag > struct lambda< pair< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef pair< na , na > result_; typedef pair< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< pair< T1 , T2 > > : int_<2> { }; template<> struct template_arity< pair< na , na > > : int_<-1> { }; }
78798 template<> struct first< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : first< T1 > { }; }; template< typename Tag > struct lambda< first< na > , Tag , int_<-1> > { typedef false_ is_le; typedef first< na > result_; typedef first< na > type; }; namespace aux { template< typename T1 > struct template_arity< first< T1 > > : int_<1> { }; template<> struct template_arity< first< na > > : int_<-1> { }; }
78799 template<> struct second< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : second< T1 > { }; }; template< typename Tag > struct lambda< second< na > , Tag , int_<-1> > { typedef false_ is_le; typedef second< na > result_; typedef second< na > type; }; namespace aux { template< typename T1 > struct template_arity< second< T1 > > : int_<1> { }; template<> struct template_arity< second< na > > : int_<-1> { }; }
78800
78801 }}
78802 # 24 "../boost/mpl/iter_fold_if.hpp" 2
78803 # 1 "../boost/mpl/apply.hpp" 1
78804 # 25 "../boost/mpl/iter_fold_if.hpp" 2
78805 # 1 "../boost/mpl/aux_/iter_fold_if_impl.hpp" 1
78806 # 22 "../boost/mpl/aux_/iter_fold_if_impl.hpp"
78807 # 1 "../boost/mpl/apply.hpp" 1
78808 # 23 "../boost/mpl/aux_/iter_fold_if_impl.hpp" 2
78809 # 32 "../boost/mpl/aux_/iter_fold_if_impl.hpp"
78810 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
78811 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
78812 # 1 "../boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp" 1
78813 # 13 "../boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp"
78814 namespace boost { namespace mpl { namespace aux {
78815
78816 template< typename Iterator, typename State >
78817 struct iter_fold_if_null_step
78818 {
78819 typedef State state;
78820 typedef Iterator iterator;
78821 };
78822
78823 template< bool >
78824 struct iter_fold_if_step_impl
78825 {
78826 template<
78827 typename Iterator
78828 , typename State
78829 , typename StateOp
78830 , typename IteratorOp
78831 >
78832 struct result_
78833 {
78834 typedef typename apply2< StateOp,State,Iterator >::type state;
78835 typedef typename IteratorOp::type iterator;
78836 };
78837 };
78838
78839 template<>
78840 struct iter_fold_if_step_impl<false>
78841 {
78842 template<
78843 typename Iterator
78844 , typename State
78845 , typename StateOp
78846 , typename IteratorOp
78847 >
78848 struct result_
78849 {
78850 typedef State state;
78851 typedef Iterator iterator;
78852 };
78853 };
78854
78855 template<
78856 typename Iterator
78857 , typename State
78858 , typename ForwardOp
78859 , typename Predicate
78860 >
78861 struct iter_fold_if_forward_step
78862 {
78863 typedef typename apply2< Predicate,State,Iterator >::type not_last;
78864 typedef typename iter_fold_if_step_impl<
78865 not_last::value
78866 >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
78867
78868 typedef typename impl_::state state;
78869 typedef typename impl_::iterator iterator;
78870 };
78871
78872 template<
78873 typename Iterator
78874 , typename State
78875 , typename BackwardOp
78876 , typename Predicate
78877 >
78878 struct iter_fold_if_backward_step
78879 {
78880 typedef typename apply2< Predicate,State,Iterator >::type not_last;
78881 typedef typename iter_fold_if_step_impl<
78882 not_last::value
78883 >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
78884
78885 typedef typename impl_::state state;
78886 typedef typename impl_::iterator iterator;
78887 };
78888
78889 template<
78890 typename Iterator
78891 , typename State
78892 , typename ForwardOp
78893 , typename ForwardPredicate
78894 , typename BackwardOp
78895 , typename BackwardPredicate
78896 >
78897 struct iter_fold_if_impl
78898 {
78899 private:
78900 typedef iter_fold_if_null_step< Iterator,State > forward_step0;
78901 typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
78902 typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
78903 typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
78904 typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
78905
78906
78907 typedef typename if_<
78908 typename forward_step4::not_last
78909 , iter_fold_if_impl<
78910 typename forward_step4::iterator
78911 , typename forward_step4::state
78912 , ForwardOp
78913 , ForwardPredicate
78914 , BackwardOp
78915 , BackwardPredicate
78916 >
78917 , iter_fold_if_null_step<
78918 typename forward_step4::iterator
78919 , typename forward_step4::state
78920 >
78921 >::type backward_step4;
78922
78923 typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
78924 typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
78925 typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
78926 typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
78927
78928
78929 public:
78930 typedef typename backward_step0::state state;
78931 typedef typename backward_step4::iterator iterator;
78932 };
78933
78934 }}}
78935 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
78936 # 33 "../boost/mpl/aux_/iter_fold_if_impl.hpp" 2
78937 # 26 "../boost/mpl/iter_fold_if.hpp" 2
78938
78939
78940
78941
78942
78943
78944
78945 namespace boost { namespace mpl {
78946
78947 namespace aux {
78948
78949 template< typename Predicate, typename LastIterator >
78950 struct iter_fold_if_pred
78951 {
78952 template< typename State, typename Iterator > struct apply
78953
78954 : and_<
78955 not_< is_same<Iterator,LastIterator> >
78956 , apply1<Predicate,Iterator>
78957 >
78958 {
78959
78960
78961
78962
78963
78964
78965
78966 };
78967 };
78968
78969 }
78970
78971 template<
78972 typename Sequence = na
78973 , typename State = na
78974 , typename ForwardOp = na
78975 , typename ForwardPredicate = na
78976 , typename BackwardOp = na
78977 , typename BackwardPredicate = na
78978 >
78979 struct iter_fold_if
78980 {
78981
78982 typedef typename begin<Sequence>::type first_;
78983 typedef typename end<Sequence>::type last_;
78984
78985 typedef typename eval_if<
78986 is_na<BackwardPredicate>
78987 , if_< is_na<BackwardOp>, always<false_>, always<true_> >
78988 , identity<BackwardPredicate>
78989 >::type backward_pred_;
78990
78991
78992
78993 struct result_ :
78994
78995
78996
78997 aux::iter_fold_if_impl<
78998 first_
78999 , State
79000 , ForwardOp
79001 , protect< aux::iter_fold_if_pred< ForwardPredicate,last_ > >
79002 , BackwardOp
79003 , backward_pred_
79004 >
79005
79006 { };
79007
79008
79009
79010
79011 public:
79012
79013 typedef pair<
79014 typename result_::state
79015 , typename result_::iterator
79016 > type;
79017
79018
79019
79020
79021
79022
79023 };
79024
79025 template<> struct iter_fold_if< na , na , na , na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > struct apply : iter_fold_if< T1 , T2 , T3 , T4 , T5 , T6 > { }; }; template< typename Tag > struct lambda< iter_fold_if< na , na , na , na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef iter_fold_if< na , na , na , na , na , na > result_; typedef iter_fold_if< na , na , na , na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > struct template_arity< iter_fold_if< T1 , T2 , T3 , T4 , T5 , T6 > > : int_<6> { }; template<> struct template_arity< iter_fold_if< na , na , na , na , na , na > > : int_<-1> { }; }
79026
79027 }}
79028 # 20 "../boost/mpl/find_if.hpp" 2
79029
79030
79031
79032
79033 namespace boost { namespace mpl {
79034
79035
79036
79037 template<
79038 typename Sequence = na
79039 , typename Predicate = na
79040 >
79041 struct find_if
79042 {
79043 typedef typename iter_fold_if<
79044 Sequence
79045 , void
79046 , mpl::arg<1>
79047 , protect< aux::find_if_pred<Predicate> >
79048 >::type result_;
79049
79050 typedef typename second<result_>::type type;
79051
79052
79053 };
79054
79055 template<> struct find_if< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : find_if< T1 , T2 > { }; }; template< typename Tag > struct lambda< find_if< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef find_if< na , na > result_; typedef find_if< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< find_if< T1 , T2 > > : int_<2> { }; template<> struct template_arity< find_if< na , na > > : int_<-1> { }; }
79056
79057 }}
79058 # 18 "../boost/mpl/find.hpp" 2
79059 # 1 "../boost/mpl/same_as.hpp" 1
79060 # 23 "../boost/mpl/same_as.hpp"
79061 namespace boost { namespace mpl {
79062
79063 template< typename T1 >
79064 struct same_as
79065 {
79066 template< typename T2 > struct apply
79067
79068 : is_same<T1,T2>
79069 {
79070
79071
79072
79073
79074 };
79075 };
79076
79077 template< typename T1 >
79078 struct not_same_as
79079 {
79080 template< typename T2 > struct apply
79081
79082 : not_< is_same<T1,T2> >
79083 {
79084
79085
79086
79087
79088 };
79089 };
79090
79091 }}
79092 # 19 "../boost/mpl/find.hpp" 2
79093
79094
79095
79096 namespace boost { namespace mpl {
79097
79098 template<
79099 typename Sequence = na
79100 , typename T = na
79101 >
79102 struct find
79103 : find_if< Sequence,same_as<T> >
79104 {
79105
79106 };
79107
79108 template<> struct find< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : find< T1 , T2 > { }; }; template< typename Tag > struct lambda< find< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef find< na , na > result_; typedef find< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< find< T1 , T2 > > : int_<2> { }; template<> struct template_arity< find< na , na > > : int_<-1> { }; }
79109
79110 }}
79111 # 21 "../boost/mpl/aux_/contains_impl.hpp" 2
79112
79113
79114
79115
79116
79117
79118
79119 namespace boost { namespace mpl {
79120
79121 template< typename Tag >
79122 struct contains_impl
79123 {
79124 template< typename Sequence, typename T > struct apply
79125
79126 : not_< is_same<
79127 typename find<Sequence,T>::type
79128 , typename end<Sequence>::type
79129 > >
79130 {
79131 # 54 "../boost/mpl/aux_/contains_impl.hpp"
79132 };
79133 };
79134
79135 template<> struct contains_impl<non_sequence_tag> {};
79136
79137 }}
79138 # 21 "../boost/mpl/contains.hpp" 2
79139
79140
79141
79142 namespace boost { namespace mpl {
79143
79144 template<
79145 typename Sequence = na
79146 , typename T = na
79147 >
79148 struct contains
79149 : contains_impl< typename sequence_tag<Sequence>::type >
79150 ::template apply< Sequence,T >
79151 {
79152
79153 };
79154
79155 template<> struct contains< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : contains< T1 , T2 > { }; }; template< typename Tag > struct lambda< contains< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef contains< na , na > result_; typedef contains< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< contains< T1 , T2 > > : int_<2> { }; template<> struct template_arity< contains< na , na > > : int_<-1> { }; }
79156
79157 }}
79158 # 11 "../boost/math/policies/policy.hpp" 2
79159
79160
79161 # 1 "../boost/mpl/remove_if.hpp" 1
79162 # 18 "../boost/mpl/remove_if.hpp"
79163 # 1 "../boost/mpl/fold.hpp" 1
79164 # 19 "../boost/mpl/fold.hpp"
79165 # 1 "../boost/mpl/O1_size.hpp" 1
79166 # 19 "../boost/mpl/O1_size.hpp"
79167 # 1 "../boost/mpl/aux_/O1_size_impl.hpp" 1
79168 # 20 "../boost/mpl/aux_/O1_size_impl.hpp"
79169 # 1 "../boost/mpl/aux_/has_size.hpp" 1
79170 # 19 "../boost/mpl/aux_/has_size.hpp"
79171 namespace boost { namespace mpl { namespace aux {
79172 template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_size { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::size>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
79173 }}}
79174 # 21 "../boost/mpl/aux_/O1_size_impl.hpp" 2
79175
79176
79177
79178
79179
79180 namespace boost { namespace mpl {
79181 # 35 "../boost/mpl/aux_/O1_size_impl.hpp"
79182 namespace aux {
79183 template< typename Sequence > struct O1_size_impl
79184 : Sequence::size
79185 {
79186 };
79187 }
79188
79189 template< typename Tag >
79190 struct O1_size_impl
79191 {
79192 template< typename Sequence > struct apply
79193
79194 : if_<
79195 aux::has_size<Sequence>
79196 , aux::O1_size_impl<Sequence>
79197 , long_<-1>
79198 >::type
79199 {
79200 # 69 "../boost/mpl/aux_/O1_size_impl.hpp"
79201 };
79202 };
79203 # 85 "../boost/mpl/aux_/O1_size_impl.hpp"
79204 }}
79205 # 20 "../boost/mpl/O1_size.hpp" 2
79206
79207
79208
79209 namespace boost { namespace mpl {
79210
79211
79212 template<
79213 typename Sequence = na
79214 >
79215 struct O1_size
79216 : O1_size_impl< typename sequence_tag<Sequence>::type >
79217 ::template apply< Sequence >
79218 {
79219
79220 };
79221
79222 template<> struct O1_size< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : O1_size< T1 > { }; }; template< typename Tag > struct lambda< O1_size< na > , Tag , int_<-1> > { typedef false_ is_le; typedef O1_size< na > result_; typedef O1_size< na > type; }; namespace aux { template< typename T1 > struct template_arity< O1_size< T1 > > : int_<1> { }; template<> struct template_arity< O1_size< na > > : int_<-1> { }; }
79223
79224 }}
79225 # 20 "../boost/mpl/fold.hpp" 2
79226 # 1 "../boost/mpl/aux_/fold_impl.hpp" 1
79227 # 19 "../boost/mpl/aux_/fold_impl.hpp"
79228 # 1 "../boost/mpl/apply.hpp" 1
79229 # 20 "../boost/mpl/aux_/fold_impl.hpp" 2
79230 # 34 "../boost/mpl/aux_/fold_impl.hpp"
79231 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
79232 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
79233 # 1 "../boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp" 1
79234 # 12 "../boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp"
79235 namespace boost { namespace mpl { namespace aux {
79236
79237
79238
79239 template<
79240 int N
79241 , typename First
79242 , typename Last
79243 , typename State
79244 , typename ForwardOp
79245 >
79246 struct fold_impl;
79247
79248 template<
79249 typename First
79250 , typename Last
79251 , typename State
79252 , typename ForwardOp
79253 >
79254 struct fold_impl< 0,First,Last,State,ForwardOp >
79255 {
79256 typedef First iter0;
79257 typedef State state0;
79258 typedef state0 state;
79259 typedef iter0 iterator;
79260 };
79261
79262 template<
79263 typename First
79264 , typename Last
79265 , typename State
79266 , typename ForwardOp
79267 >
79268 struct fold_impl< 1,First,Last,State,ForwardOp >
79269 {
79270 typedef First iter0;
79271 typedef State state0;
79272 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
79273 typedef typename mpl::next<iter0>::type iter1;
79274
79275
79276 typedef state1 state;
79277 typedef iter1 iterator;
79278 };
79279
79280 template<
79281 typename First
79282 , typename Last
79283 , typename State
79284 , typename ForwardOp
79285 >
79286 struct fold_impl< 2,First,Last,State,ForwardOp >
79287 {
79288 typedef First iter0;
79289 typedef State state0;
79290 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
79291 typedef typename mpl::next<iter0>::type iter1;
79292 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
79293 typedef typename mpl::next<iter1>::type iter2;
79294
79295
79296 typedef state2 state;
79297 typedef iter2 iterator;
79298 };
79299
79300 template<
79301 typename First
79302 , typename Last
79303 , typename State
79304 , typename ForwardOp
79305 >
79306 struct fold_impl< 3,First,Last,State,ForwardOp >
79307 {
79308 typedef First iter0;
79309 typedef State state0;
79310 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
79311 typedef typename mpl::next<iter0>::type iter1;
79312 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
79313 typedef typename mpl::next<iter1>::type iter2;
79314 typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
79315 typedef typename mpl::next<iter2>::type iter3;
79316
79317
79318 typedef state3 state;
79319 typedef iter3 iterator;
79320 };
79321
79322 template<
79323 typename First
79324 , typename Last
79325 , typename State
79326 , typename ForwardOp
79327 >
79328 struct fold_impl< 4,First,Last,State,ForwardOp >
79329 {
79330 typedef First iter0;
79331 typedef State state0;
79332 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
79333 typedef typename mpl::next<iter0>::type iter1;
79334 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
79335 typedef typename mpl::next<iter1>::type iter2;
79336 typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
79337 typedef typename mpl::next<iter2>::type iter3;
79338 typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
79339 typedef typename mpl::next<iter3>::type iter4;
79340
79341
79342 typedef state4 state;
79343 typedef iter4 iterator;
79344 };
79345
79346 template<
79347 int N
79348 , typename First
79349 , typename Last
79350 , typename State
79351 , typename ForwardOp
79352 >
79353 struct fold_impl
79354 {
79355 typedef fold_impl<
79356 4
79357 , First
79358 , Last
79359 , State
79360 , ForwardOp
79361 > chunk_;
79362
79363 typedef fold_impl<
79364 ( (N - 4) < 0 ? 0 : N - 4 )
79365 , typename chunk_::iterator
79366 , Last
79367 , typename chunk_::state
79368 , ForwardOp
79369 > res_;
79370
79371 typedef typename res_::state state;
79372 typedef typename res_::iterator iterator;
79373 };
79374
79375 template<
79376 typename First
79377 , typename Last
79378 , typename State
79379 , typename ForwardOp
79380 >
79381 struct fold_impl< -1,First,Last,State,ForwardOp >
79382 : fold_impl<
79383 -1
79384 , typename mpl::next<First>::type
79385 , Last
79386 , typename apply2<ForwardOp,State, typename deref<First>::type>::type
79387 , ForwardOp
79388 >
79389 {
79390 };
79391
79392 template<
79393 typename Last
79394 , typename State
79395 , typename ForwardOp
79396 >
79397 struct fold_impl< -1,Last,Last,State,ForwardOp >
79398 {
79399 typedef State state;
79400 typedef Last iterator;
79401 };
79402
79403 }}}
79404 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
79405 # 35 "../boost/mpl/aux_/fold_impl.hpp" 2
79406 # 21 "../boost/mpl/fold.hpp" 2
79407
79408
79409
79410 namespace boost { namespace mpl {
79411
79412 template<
79413 typename Sequence = na
79414 , typename State = na
79415 , typename ForwardOp = na
79416 >
79417 struct fold
79418 {
79419 typedef typename aux::fold_impl<
79420 ::boost::mpl::O1_size<Sequence>::value
79421 , typename begin<Sequence>::type
79422 , typename end<Sequence>::type
79423 , State
79424 , ForwardOp
79425 >::state type;
79426
79427
79428 };
79429
79430 template<> struct fold< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : fold< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< fold< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef fold< na , na , na > result_; typedef fold< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< fold< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< fold< na , na , na > > : int_<-1> { }; }
79431
79432 }}
79433 # 19 "../boost/mpl/remove_if.hpp" 2
79434 # 1 "../boost/mpl/reverse_fold.hpp" 1
79435 # 20 "../boost/mpl/reverse_fold.hpp"
79436 # 1 "../boost/mpl/arg.hpp" 1
79437 # 21 "../boost/mpl/reverse_fold.hpp" 2
79438 # 1 "../boost/mpl/aux_/reverse_fold_impl.hpp" 1
79439 # 20 "../boost/mpl/aux_/reverse_fold_impl.hpp"
79440 # 1 "../boost/mpl/apply.hpp" 1
79441 # 21 "../boost/mpl/aux_/reverse_fold_impl.hpp" 2
79442 # 35 "../boost/mpl/aux_/reverse_fold_impl.hpp"
79443 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
79444 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
79445 # 1 "../boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp" 1
79446 # 12 "../boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp"
79447 namespace boost { namespace mpl { namespace aux {
79448
79449
79450
79451 template<
79452 long N
79453 , typename First
79454 , typename Last
79455 , typename State
79456 , typename BackwardOp
79457 , typename ForwardOp
79458 >
79459 struct reverse_fold_impl;
79460
79461 template<
79462 typename First
79463 , typename Last
79464 , typename State
79465 , typename BackwardOp
79466 , typename ForwardOp
79467 >
79468 struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
79469 {
79470 typedef First iter0;
79471 typedef State fwd_state0;
79472 typedef fwd_state0 bkwd_state0;
79473 typedef bkwd_state0 state;
79474 typedef iter0 iterator;
79475 };
79476
79477 template<
79478 typename First
79479 , typename Last
79480 , typename State
79481 , typename BackwardOp
79482 , typename ForwardOp
79483 >
79484 struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
79485 {
79486 typedef First iter0;
79487 typedef State fwd_state0;
79488 typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
79489 typedef typename mpl::next<iter0>::type iter1;
79490
79491
79492 typedef fwd_state1 bkwd_state1;
79493 typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
79494 typedef bkwd_state0 state;
79495 typedef iter1 iterator;
79496 };
79497
79498 template<
79499 typename First
79500 , typename Last
79501 , typename State
79502 , typename BackwardOp
79503 , typename ForwardOp
79504 >
79505 struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
79506 {
79507 typedef First iter0;
79508 typedef State fwd_state0;
79509 typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
79510 typedef typename mpl::next<iter0>::type iter1;
79511 typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
79512 typedef typename mpl::next<iter1>::type iter2;
79513
79514
79515 typedef fwd_state2 bkwd_state2;
79516 typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
79517 typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
79518
79519
79520 typedef bkwd_state0 state;
79521 typedef iter2 iterator;
79522 };
79523
79524 template<
79525 typename First
79526 , typename Last
79527 , typename State
79528 , typename BackwardOp
79529 , typename ForwardOp
79530 >
79531 struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
79532 {
79533 typedef First iter0;
79534 typedef State fwd_state0;
79535 typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
79536 typedef typename mpl::next<iter0>::type iter1;
79537 typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
79538 typedef typename mpl::next<iter1>::type iter2;
79539 typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
79540 typedef typename mpl::next<iter2>::type iter3;
79541
79542
79543 typedef fwd_state3 bkwd_state3;
79544 typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
79545 typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
79546 typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
79547
79548
79549 typedef bkwd_state0 state;
79550 typedef iter3 iterator;
79551 };
79552
79553 template<
79554 typename First
79555 , typename Last
79556 , typename State
79557 , typename BackwardOp
79558 , typename ForwardOp
79559 >
79560 struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
79561 {
79562 typedef First iter0;
79563 typedef State fwd_state0;
79564 typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
79565 typedef typename mpl::next<iter0>::type iter1;
79566 typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
79567 typedef typename mpl::next<iter1>::type iter2;
79568 typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
79569 typedef typename mpl::next<iter2>::type iter3;
79570 typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
79571 typedef typename mpl::next<iter3>::type iter4;
79572
79573
79574 typedef fwd_state4 bkwd_state4;
79575 typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
79576 typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
79577 typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
79578 typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
79579
79580
79581 typedef bkwd_state0 state;
79582 typedef iter4 iterator;
79583 };
79584
79585 template<
79586 long N
79587 , typename First
79588 , typename Last
79589 , typename State
79590 , typename BackwardOp
79591 , typename ForwardOp
79592 >
79593 struct reverse_fold_impl
79594 {
79595 typedef First iter0;
79596 typedef State fwd_state0;
79597 typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
79598 typedef typename mpl::next<iter0>::type iter1;
79599 typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
79600 typedef typename mpl::next<iter1>::type iter2;
79601 typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
79602 typedef typename mpl::next<iter2>::type iter3;
79603 typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
79604 typedef typename mpl::next<iter3>::type iter4;
79605
79606
79607 typedef reverse_fold_impl<
79608 ( (N - 4) < 0 ? 0 : N - 4 )
79609 , iter4
79610 , Last
79611 , fwd_state4
79612 , BackwardOp
79613 , ForwardOp
79614 > nested_chunk;
79615
79616 typedef typename nested_chunk::state bkwd_state4;
79617 typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
79618 typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
79619 typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
79620 typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
79621
79622
79623 typedef bkwd_state0 state;
79624 typedef typename nested_chunk::iterator iterator;
79625 };
79626
79627 template<
79628 typename First
79629 , typename Last
79630 , typename State
79631 , typename BackwardOp
79632 , typename ForwardOp
79633 >
79634 struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
79635 {
79636 typedef reverse_fold_impl<
79637 -1
79638 , typename mpl::next<First>::type
79639 , Last
79640 , typename apply2<ForwardOp,State, typename deref<First>::type>::type
79641 , BackwardOp
79642 , ForwardOp
79643 > nested_step;
79644
79645 typedef typename apply2<
79646 BackwardOp
79647 , typename nested_step::state
79648 , typename deref<First>::type
79649 >::type state;
79650
79651 typedef typename nested_step::iterator iterator;
79652 };
79653
79654 template<
79655 typename Last
79656 , typename State
79657 , typename BackwardOp
79658 , typename ForwardOp
79659 >
79660 struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
79661 {
79662 typedef State state;
79663 typedef Last iterator;
79664 };
79665
79666 }}}
79667 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
79668 # 36 "../boost/mpl/aux_/reverse_fold_impl.hpp" 2
79669 # 22 "../boost/mpl/reverse_fold.hpp" 2
79670
79671
79672 namespace boost { namespace mpl {
79673
79674 template<
79675 typename Sequence = na
79676 , typename State = na
79677 , typename BackwardOp = na
79678 , typename ForwardOp = arg<1>
79679 >
79680 struct reverse_fold
79681 {
79682 typedef typename aux::reverse_fold_impl<
79683 ::boost::mpl::O1_size<Sequence>::value
79684 , typename begin<Sequence>::type
79685 , typename end<Sequence>::type
79686 , State
79687 , BackwardOp
79688 , ForwardOp
79689 >::state type;
79690
79691
79692 };
79693
79694 template<> struct reverse_fold< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : reverse_fold< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< reverse_fold< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef reverse_fold< na , na , na > result_; typedef reverse_fold< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< reverse_fold< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< reverse_fold< na , na , na > > : int_<-1> { }; }
79695
79696 }}
79697 # 20 "../boost/mpl/remove_if.hpp" 2
79698
79699
79700
79701
79702 # 1 "../boost/mpl/apply.hpp" 1
79703 # 25 "../boost/mpl/remove_if.hpp" 2
79704 # 1 "../boost/mpl/aux_/inserter_algorithm.hpp" 1
79705 # 18 "../boost/mpl/aux_/inserter_algorithm.hpp"
79706 # 1 "../boost/mpl/back_inserter.hpp" 1
79707 # 18 "../boost/mpl/back_inserter.hpp"
79708 # 1 "../boost/mpl/push_back.hpp" 1
79709 # 18 "../boost/mpl/push_back.hpp"
79710 # 1 "../boost/mpl/aux_/push_back_impl.hpp" 1
79711 # 26 "../boost/mpl/aux_/push_back_impl.hpp"
79712 namespace boost { namespace mpl {
79713
79714 struct has_push_back_arg {};
79715
79716
79717
79718 template< typename Tag >
79719 struct push_back_impl
79720 {
79721 template< typename Sequence, typename T > struct apply
79722 {
79723
79724
79725
79726 struct REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST; typedef struct
79727
79728
79729
79730 REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST44
79731 # 40 "../boost/mpl/aux_/push_back_impl.hpp"
79732 : boost::mpl::assert_ { static boost::mpl::failed ************ (REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST::************ assert_arg()) ( Sequence ) { return 0; } }
79733
79734
79735
79736 mpl_assert_arg44
79737 # 40 "../boost/mpl/aux_/push_back_impl.hpp"
79738 ; enum { mpl_assertion_in_line_44 = sizeof( boost::mpl::assertion_failed<(( boost::is_same< T, has_push_back_arg >::value ))>( mpl_assert_arg44::assert_arg() ) ) }
79739
79740
79741
79742 ;
79743 };
79744 };
79745
79746 template< typename Tag >
79747 struct has_push_back_impl
79748 {
79749 template< typename Seq > struct apply
79750
79751 : aux::has_type< push_back< Seq, has_push_back_arg > >
79752 {
79753
79754
79755
79756
79757
79758
79759
79760 };
79761 };
79762
79763 template<> struct push_back_impl<non_sequence_tag> {};
79764 template<> struct has_push_back_impl<non_sequence_tag> {};
79765
79766 }}
79767 # 19 "../boost/mpl/push_back.hpp" 2
79768
79769
79770
79771
79772 namespace boost { namespace mpl {
79773
79774 template<
79775 typename Sequence = na
79776 , typename T = na
79777 >
79778 struct push_back
79779 : push_back_impl< typename sequence_tag<Sequence>::type >
79780 ::template apply< Sequence,T >
79781 {
79782
79783 };
79784
79785
79786 template<
79787 typename Sequence = na
79788 >
79789 struct has_push_back
79790 : has_push_back_impl< typename sequence_tag<Sequence>::type >
79791 ::template apply< Sequence >
79792 {
79793
79794 };
79795
79796
79797 template<> struct push_back< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : push_back< T1 , T2 > { }; }; template< typename Tag > struct lambda< push_back< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef push_back< na , na > result_; typedef push_back< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< push_back< T1 , T2 > > : int_<2> { }; template<> struct template_arity< push_back< na , na > > : int_<-1> { }; }
79798 template<> struct has_push_back< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : has_push_back< T1 > { }; }; template< typename Tag > struct lambda< has_push_back< na > , Tag , int_<-1> > { typedef false_ is_le; typedef has_push_back< na > result_; typedef has_push_back< na > type; }; namespace aux { template< typename T1 > struct template_arity< has_push_back< T1 > > : int_<1> { }; template<> struct template_arity< has_push_back< na > > : int_<-1> { }; }
79799
79800 }}
79801 # 19 "../boost/mpl/back_inserter.hpp" 2
79802 # 1 "../boost/mpl/inserter.hpp" 1
79803 # 18 "../boost/mpl/inserter.hpp"
79804 namespace boost { namespace mpl {
79805
79806 template<
79807 typename Sequence
79808 , typename Operation
79809 >
79810 struct inserter
79811 {
79812 typedef Sequence state;
79813 typedef Operation operation;
79814 };
79815
79816 }}
79817 # 20 "../boost/mpl/back_inserter.hpp" 2
79818
79819 namespace boost {
79820 namespace mpl {
79821
79822 template<
79823 typename Sequence
79824 >
79825 struct back_inserter
79826 : inserter< Sequence,push_back<> >
79827 {
79828 };
79829
79830 }}
79831 # 19 "../boost/mpl/aux_/inserter_algorithm.hpp" 2
79832 # 1 "../boost/mpl/front_inserter.hpp" 1
79833 # 18 "../boost/mpl/front_inserter.hpp"
79834 # 1 "../boost/mpl/push_front.hpp" 1
79835 # 18 "../boost/mpl/push_front.hpp"
79836 # 1 "../boost/mpl/aux_/push_front_impl.hpp" 1
79837 # 26 "../boost/mpl/aux_/push_front_impl.hpp"
79838 namespace boost { namespace mpl {
79839
79840 struct has_push_front_arg {};
79841
79842
79843
79844
79845 template< typename Tag >
79846 struct push_front_impl
79847 {
79848 template< typename Sequence, typename T > struct apply
79849 {
79850
79851
79852
79853 struct REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST; typedef struct
79854
79855
79856
79857 REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST45
79858 # 41 "../boost/mpl/aux_/push_front_impl.hpp"
79859 : boost::mpl::assert_ { static boost::mpl::failed ************ (REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST::************ assert_arg()) ( Sequence ) { return 0; } }
79860
79861
79862
79863 mpl_assert_arg45
79864 # 41 "../boost/mpl/aux_/push_front_impl.hpp"
79865 ; enum { mpl_assertion_in_line_45 = sizeof( boost::mpl::assertion_failed<(( boost::is_same< T, has_push_front_arg >::value ))>( mpl_assert_arg45::assert_arg() ) ) }
79866
79867
79868
79869 ;
79870 };
79871 };
79872
79873 template< typename Tag >
79874 struct has_push_front_impl
79875 {
79876 template< typename Seq > struct apply
79877
79878 : aux::has_type< push_front< Seq, has_push_front_arg > >
79879 {
79880
79881
79882
79883
79884
79885
79886
79887 };
79888 };
79889
79890 template<> struct push_front_impl<non_sequence_tag> {};
79891 template<> struct has_push_front_impl<non_sequence_tag> {};
79892
79893 }}
79894 # 19 "../boost/mpl/push_front.hpp" 2
79895
79896
79897
79898
79899 namespace boost { namespace mpl {
79900
79901 template<
79902 typename Sequence = na
79903 , typename T = na
79904 >
79905 struct push_front
79906 : push_front_impl< typename sequence_tag<Sequence>::type >
79907 ::template apply< Sequence,T >
79908 {
79909
79910 };
79911
79912
79913 template<
79914 typename Sequence = na
79915 >
79916 struct has_push_front
79917 : has_push_front_impl< typename sequence_tag<Sequence>::type >
79918 ::template apply< Sequence >
79919 {
79920
79921 };
79922
79923 template<> struct push_front< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : push_front< T1 , T2 > { }; }; template< typename Tag > struct lambda< push_front< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef push_front< na , na > result_; typedef push_front< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< push_front< T1 , T2 > > : int_<2> { }; template<> struct template_arity< push_front< na , na > > : int_<-1> { }; }
79924 template<> struct has_push_front< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : has_push_front< T1 > { }; }; template< typename Tag > struct lambda< has_push_front< na > , Tag , int_<-1> > { typedef false_ is_le; typedef has_push_front< na > result_; typedef has_push_front< na > type; }; namespace aux { template< typename T1 > struct template_arity< has_push_front< T1 > > : int_<1> { }; template<> struct template_arity< has_push_front< na > > : int_<-1> { }; }
79925
79926 }}
79927 # 19 "../boost/mpl/front_inserter.hpp" 2
79928
79929
79930 namespace boost { namespace mpl {
79931
79932 template<
79933 typename Sequence
79934 >
79935 struct front_inserter
79936 : inserter< Sequence,push_front<> >
79937 {
79938 };
79939
79940 }}
79941 # 20 "../boost/mpl/aux_/inserter_algorithm.hpp" 2
79942
79943
79944
79945
79946 # 1 "../boost/mpl/clear.hpp" 1
79947 # 18 "../boost/mpl/clear.hpp"
79948 # 1 "../boost/mpl/aux_/clear_impl.hpp" 1
79949 # 21 "../boost/mpl/aux_/clear_impl.hpp"
79950 namespace boost { namespace mpl {
79951
79952
79953
79954 template< typename Tag >
79955 struct clear_impl
79956 {
79957 template< typename Sequence > struct apply;
79958 };
79959
79960 template<> struct clear_impl<non_sequence_tag> {};
79961
79962 }}
79963 # 19 "../boost/mpl/clear.hpp" 2
79964
79965
79966
79967
79968 namespace boost { namespace mpl {
79969
79970 template<
79971 typename Sequence = na
79972 >
79973 struct clear
79974 : clear_impl< typename sequence_tag<Sequence>::type >
79975 ::template apply< Sequence >
79976 {
79977
79978 };
79979
79980 template<> struct clear< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : clear< T1 > { }; }; template< typename Tag > struct lambda< clear< na > , Tag , int_<-1> > { typedef false_ is_le; typedef clear< na > result_; typedef clear< na > type; }; namespace aux { template< typename T1 > struct template_arity< clear< T1 > > : int_<1> { }; template<> struct template_arity< clear< na > > : int_<-1> { }; }
79981
79982 }}
79983 # 25 "../boost/mpl/aux_/inserter_algorithm.hpp" 2
79984 # 26 "../boost/mpl/remove_if.hpp" 2
79985
79986 namespace boost { namespace mpl {
79987
79988 namespace aux {
79989
79990 template< typename Pred, typename InsertOp > struct remove_if_helper
79991 {
79992 template< typename Sequence, typename U > struct apply
79993 {
79994 typedef typename eval_if<
79995 typename apply1<Pred,U>::type
79996 , identity<Sequence>
79997 , apply2<InsertOp,Sequence,U>
79998 >::type type;
79999 };
80000 };
80001
80002 template<
80003 typename Sequence
80004 , typename Predicate
80005 , typename Inserter
80006 >
80007 struct remove_if_impl
80008 : fold<
80009 Sequence
80010 , typename Inserter::state
80011 , protect< aux::remove_if_helper<
80012 typename lambda<Predicate>::type
80013 , typename Inserter::operation
80014 > >
80015 >
80016 {
80017 };
80018
80019 template<
80020 typename Sequence
80021 , typename Predicate
80022 , typename Inserter
80023 >
80024 struct reverse_remove_if_impl
80025 : reverse_fold<
80026 Sequence
80027 , typename Inserter::state
80028 , protect< aux::remove_if_helper<
80029 typename lambda<Predicate>::type
80030 , typename Inserter::operation
80031 > >
80032 >
80033 {
80034 };
80035
80036 }
80037
80038 template< typename P1 = na , typename P2 = na , typename P3 = na > struct remove_if : aux::remove_if_impl< P1 , P2 , P3> { }; template< typename P1 , typename P2 > struct remove_if< P1 , P2,na > : if_< has_push_back< typename clear<P1>::type> , aux::remove_if_impl< P1 , P2 , back_inserter< typename clear<P1>::type > > , aux::reverse_remove_if_impl< P1 , P2 , front_inserter< typename clear<P1>::type > > >::type { }; template< typename P1 = na , typename P2 = na , typename P3 = na > struct reverse_remove_if : aux::reverse_remove_if_impl< P1 , P2 , P3> { }; template< typename P1 , typename P2 > struct reverse_remove_if< P1 , P2,na > : if_< has_push_back<P1> , aux::reverse_remove_if_impl< P1 , P2 , back_inserter< typename clear<P1>::type > > , aux::remove_if_impl< P1 , P2 , front_inserter< typename clear<P1>::type > > >::type { }; template<> struct remove_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : remove_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< remove_if< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef remove_if< na , na , na > result_; typedef remove_if< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< remove_if< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< remove_if< na , na , na > > : int_<-1> { }; } template<> struct reverse_remove_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : reverse_remove_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< reverse_remove_if< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef reverse_remove_if< na , na , na > result_; typedef reverse_remove_if< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< reverse_remove_if< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< reverse_remove_if< na , na , na > > : int_<-1> { }; }
80039
80040 }}
80041 # 14 "../boost/math/policies/policy.hpp" 2
80042 # 1 "../boost/mpl/vector.hpp" 1
80043 # 18 "../boost/mpl/vector.hpp"
80044 # 1 "../boost/mpl/limits/vector.hpp" 1
80045 # 19 "../boost/mpl/vector.hpp" 2
80046 # 36 "../boost/mpl/vector.hpp"
80047 # 1 "../boost/mpl/vector/vector20.hpp" 1
80048 # 18 "../boost/mpl/vector/vector20.hpp"
80049 # 1 "../boost/mpl/vector/vector10.hpp" 1
80050 # 18 "../boost/mpl/vector/vector10.hpp"
80051 # 1 "../boost/mpl/vector/vector0.hpp" 1
80052 # 17 "../boost/mpl/vector/vector0.hpp"
80053 # 1 "../boost/mpl/vector/aux_/at.hpp" 1
80054 # 17 "../boost/mpl/vector/aux_/at.hpp"
80055 # 1 "../boost/mpl/at_fwd.hpp" 1
80056 # 17 "../boost/mpl/at_fwd.hpp"
80057 namespace boost { namespace mpl {
80058
80059 template< typename Tag > struct at_impl;
80060 template< typename Sequence, typename N > struct at;
80061
80062 }}
80063 # 18 "../boost/mpl/vector/aux_/at.hpp" 2
80064 # 1 "../boost/mpl/vector/aux_/tag.hpp" 1
80065 # 17 "../boost/mpl/vector/aux_/tag.hpp"
80066 # 1 "../boost/mpl/aux_/config/typeof.hpp" 1
80067 # 18 "../boost/mpl/vector/aux_/tag.hpp" 2
80068
80069
80070 namespace boost { namespace mpl { namespace aux {
80071
80072 struct v_iter_tag;
80073
80074
80075 struct vector_tag;
80076
80077
80078
80079
80080 }}}
80081 # 19 "../boost/mpl/vector/aux_/at.hpp" 2
80082 # 27 "../boost/mpl/vector/aux_/at.hpp"
80083 namespace boost { namespace mpl {
80084
80085
80086
80087 template< typename Vector, long n_ >
80088 struct v_at_impl
80089 {
80090 typedef long_< (Vector::lower_bound_::value + n_) > index_;
80091 typedef __typeof__( Vector::item_(index_()) ) type;
80092 };
80093
80094
80095 template< typename Vector, long n_ >
80096 struct v_at
80097 : aux::wrapped_type< typename v_at_impl<Vector,n_>::type >
80098 {
80099 };
80100
80101 template<>
80102 struct at_impl< aux::vector_tag >
80103 {
80104 template< typename Vector, typename N > struct apply
80105 : v_at<
80106 Vector
80107 , N::value
80108 >
80109 {
80110 };
80111 };
80112 # 114 "../boost/mpl/vector/aux_/at.hpp"
80113 }}
80114 # 18 "../boost/mpl/vector/vector0.hpp" 2
80115 # 1 "../boost/mpl/vector/aux_/front.hpp" 1
80116 # 24 "../boost/mpl/vector/aux_/front.hpp"
80117 namespace boost { namespace mpl {
80118
80119
80120
80121 template<>
80122 struct front_impl< aux::vector_tag >
80123 {
80124 template< typename Vector > struct apply
80125 : v_at<Vector,0>
80126 {
80127 };
80128 };
80129 # 54 "../boost/mpl/vector/aux_/front.hpp"
80130 }}
80131 # 19 "../boost/mpl/vector/vector0.hpp" 2
80132 # 1 "../boost/mpl/vector/aux_/push_front.hpp" 1
80133 # 22 "../boost/mpl/vector/aux_/push_front.hpp"
80134 # 1 "../boost/mpl/vector/aux_/item.hpp" 1
80135 # 24 "../boost/mpl/vector/aux_/item.hpp"
80136 namespace boost { namespace mpl {
80137
80138
80139
80140 template<
80141 typename T
80142 , typename Base
80143 , int at_front = 0
80144 >
80145 struct v_item
80146 : Base
80147 {
80148 typedef typename Base::upper_bound_ index_;
80149 typedef typename next<index_>::type upper_bound_;
80150 typedef typename next<typename Base::size>::type size;
80151 typedef Base base;
80152 typedef v_item type;
80153
80154
80155
80156 static aux::type_wrapper<T> item_(index_);
80157 using Base::item_;
80158 };
80159
80160 template<
80161 typename T
80162 , typename Base
80163 >
80164 struct v_item<T,Base,1>
80165 : Base
80166 {
80167 typedef typename prior<typename Base::lower_bound_>::type index_;
80168 typedef index_ lower_bound_;
80169 typedef typename next<typename Base::size>::type size;
80170 typedef Base base;
80171 typedef v_item type;
80172
80173 static aux::type_wrapper<T> item_(index_);
80174 using Base::item_;
80175 };
80176
80177
80178 template<
80179 typename Base
80180 , int at_front
80181 >
80182 struct v_mask
80183 : Base
80184 {
80185 typedef typename prior<typename Base::upper_bound_>::type index_;
80186 typedef index_ upper_bound_;
80187 typedef typename prior<typename Base::size>::type size;
80188 typedef Base base;
80189 typedef v_mask type;
80190
80191 static aux::type_wrapper<void_> item_(index_);
80192 using Base::item_;
80193 };
80194
80195 template<
80196 typename Base
80197 >
80198 struct v_mask<Base,1>
80199 : Base
80200 {
80201 typedef typename Base::lower_bound_ index_;
80202 typedef typename next<index_>::type lower_bound_;
80203 typedef typename prior<typename Base::size>::type size;
80204 typedef Base base;
80205 typedef v_mask type;
80206
80207 static aux::type_wrapper<void_> item_(index_);
80208 using Base::item_;
80209 };
80210
80211
80212
80213 }}
80214 # 23 "../boost/mpl/vector/aux_/push_front.hpp" 2
80215
80216
80217 namespace boost { namespace mpl {
80218
80219 template<>
80220 struct push_front_impl< aux::vector_tag >
80221 {
80222 template< typename Vector, typename T > struct apply
80223 {
80224 typedef v_item<T,Vector,1> type;
80225 };
80226 };
80227
80228 }}
80229 # 20 "../boost/mpl/vector/vector0.hpp" 2
80230 # 1 "../boost/mpl/vector/aux_/pop_front.hpp" 1
80231 # 25 "../boost/mpl/vector/aux_/pop_front.hpp"
80232 namespace boost { namespace mpl {
80233
80234 template<>
80235 struct pop_front_impl< aux::vector_tag >
80236 {
80237 template< typename Vector > struct apply
80238 {
80239 typedef v_mask<Vector,1> type;
80240 };
80241 };
80242
80243 }}
80244 # 21 "../boost/mpl/vector/vector0.hpp" 2
80245 # 1 "../boost/mpl/vector/aux_/push_back.hpp" 1
80246 # 25 "../boost/mpl/vector/aux_/push_back.hpp"
80247 namespace boost { namespace mpl {
80248
80249 template<>
80250 struct push_back_impl< aux::vector_tag >
80251 {
80252 template< typename Vector, typename T > struct apply
80253 {
80254 typedef v_item<T,Vector,0> type;
80255 };
80256 };
80257
80258 }}
80259 # 22 "../boost/mpl/vector/vector0.hpp" 2
80260 # 1 "../boost/mpl/vector/aux_/pop_back.hpp" 1
80261 # 17 "../boost/mpl/vector/aux_/pop_back.hpp"
80262 # 1 "../boost/mpl/pop_back_fwd.hpp" 1
80263 # 17 "../boost/mpl/pop_back_fwd.hpp"
80264 namespace boost { namespace mpl {
80265
80266 template< typename Tag > struct pop_back_impl;
80267 template< typename Sequence > struct pop_back;
80268
80269 }}
80270 # 18 "../boost/mpl/vector/aux_/pop_back.hpp" 2
80271
80272
80273
80274
80275
80276
80277
80278 namespace boost { namespace mpl {
80279
80280 template<>
80281 struct pop_back_impl< aux::vector_tag >
80282 {
80283 template< typename Vector > struct apply
80284 {
80285 typedef v_mask<Vector,0> type;
80286 };
80287 };
80288
80289 }}
80290 # 23 "../boost/mpl/vector/vector0.hpp" 2
80291 # 1 "../boost/mpl/vector/aux_/back.hpp" 1
80292 # 17 "../boost/mpl/vector/aux_/back.hpp"
80293 # 1 "../boost/mpl/back_fwd.hpp" 1
80294 # 17 "../boost/mpl/back_fwd.hpp"
80295 namespace boost { namespace mpl {
80296
80297 template< typename Tag > struct back_impl;
80298 template< typename Sequence > struct back;
80299
80300 }}
80301 # 18 "../boost/mpl/vector/aux_/back.hpp" 2
80302
80303
80304
80305
80306
80307
80308 namespace boost { namespace mpl {
80309
80310
80311
80312 template<>
80313 struct back_impl< aux::vector_tag >
80314 {
80315 template< typename Vector > struct apply
80316 : v_at<
80317 Vector
80318 , prior<typename Vector::size>::type::value
80319 >
80320 {
80321 };
80322 };
80323 # 57 "../boost/mpl/vector/aux_/back.hpp"
80324 }}
80325 # 24 "../boost/mpl/vector/vector0.hpp" 2
80326 # 1 "../boost/mpl/vector/aux_/clear.hpp" 1
80327 # 18 "../boost/mpl/vector/aux_/clear.hpp"
80328 # 1 "../boost/mpl/vector/aux_/vector0.hpp" 1
80329 # 22 "../boost/mpl/vector/aux_/vector0.hpp"
80330 # 1 "../boost/mpl/vector/aux_/iterator.hpp" 1
80331 # 19 "../boost/mpl/vector/aux_/iterator.hpp"
80332 # 1 "../boost/mpl/plus.hpp" 1
80333 # 19 "../boost/mpl/plus.hpp"
80334 # 1 "../boost/mpl/aux_/arithmetic_op.hpp" 1
80335 # 26 "../boost/mpl/aux_/arithmetic_op.hpp"
80336 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
80337 # 22 "../boost/mpl/aux_/numeric_op.hpp"
80338 # 1 "../boost/mpl/apply_wrap.hpp" 1
80339 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
80340 # 27 "../boost/mpl/aux_/arithmetic_op.hpp" 2
80341
80342
80343
80344
80345
80346
80347
80348 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
80349 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
80350 # 1 "../boost/mpl/aux_/preprocessed/gcc/plus.hpp" 1
80351 # 12 "../boost/mpl/aux_/preprocessed/gcc/plus.hpp"
80352 namespace boost { namespace mpl {
80353
80354 template<
80355 typename Tag1
80356 , typename Tag2
80357 >
80358 struct plus_impl
80359 : if_c<
80360 ( Tag1::value
80361 > Tag2::value
80362 )
80363
80364 , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
80365 , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
80366 >::type
80367 {
80368 };
80369
80370
80371 template<> struct plus_impl< na,na >
80372 {
80373 template< typename U1, typename U2 > struct apply
80374 {
80375 typedef apply type;
80376 static const int value = 0;
80377 };
80378 };
80379
80380 template< typename Tag > struct plus_impl< na,Tag >
80381 {
80382 template< typename U1, typename U2 > struct apply
80383 {
80384 typedef apply type;
80385 static const int value = 0;
80386 };
80387 };
80388
80389 template< typename Tag > struct plus_impl< Tag,na >
80390 {
80391 template< typename U1, typename U2 > struct apply
80392 {
80393 typedef apply type;
80394 static const int value = 0;
80395 };
80396 };
80397
80398 template< typename T > struct plus_tag
80399 {
80400 typedef typename T::tag type;
80401 };
80402
80403 template<
80404 typename N1 = na
80405 , typename N2 = na
80406 , typename N3 = na, typename N4 = na, typename N5 = na
80407 >
80408 struct plus
80409 : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
80410 {
80411
80412
80413
80414
80415
80416 };
80417
80418 template<
80419 typename N1, typename N2, typename N3, typename N4
80420 >
80421 struct plus< N1,N2,N3,N4,na >
80422
80423 : plus< plus< plus< N1,N2 >, N3>, N4>
80424 {
80425
80426
80427
80428
80429
80430 };
80431
80432 template<
80433 typename N1, typename N2, typename N3
80434 >
80435 struct plus< N1,N2,N3,na,na >
80436
80437 : plus< plus< N1,N2 >, N3>
80438 {
80439
80440
80441
80442
80443
80444 };
80445
80446 template<
80447 typename N1, typename N2
80448 >
80449 struct plus< N1,N2,na,na,na >
80450 : plus_impl<
80451 typename plus_tag<N1>::type
80452 , typename plus_tag<N2>::type
80453 >::template apply< N1,N2 >::type
80454 {
80455
80456
80457
80458
80459
80460
80461 };
80462
80463 template<> struct plus< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : plus< T1 , T2 > { }; }; template< typename Tag > struct lambda< plus< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef plus< na , na > result_; typedef plus< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< plus< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< plus< na , na > > : int_<-1> { }; }
80464
80465 }}
80466
80467 namespace boost { namespace mpl {
80468 template<>
80469 struct plus_impl< integral_c_tag,integral_c_tag >
80470 {
80471 template< typename N1, typename N2 > struct apply
80472
80473 : integral_c<
80474 typename aux::largest_int<
80475 typename N1::value_type
80476 , typename N2::value_type
80477 >::type
80478 , ( N1::value
80479 + N2::value
80480 )
80481 >
80482 {
80483 };
80484 };
80485
80486 }}
80487 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
80488 # 35 "../boost/mpl/aux_/arithmetic_op.hpp" 2
80489 # 20 "../boost/mpl/plus.hpp" 2
80490 # 20 "../boost/mpl/vector/aux_/iterator.hpp" 2
80491 # 1 "../boost/mpl/minus.hpp" 1
80492 # 19 "../boost/mpl/minus.hpp"
80493 # 1 "../boost/mpl/aux_/arithmetic_op.hpp" 1
80494 # 26 "../boost/mpl/aux_/arithmetic_op.hpp"
80495 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
80496 # 22 "../boost/mpl/aux_/numeric_op.hpp"
80497 # 1 "../boost/mpl/apply_wrap.hpp" 1
80498 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
80499 # 27 "../boost/mpl/aux_/arithmetic_op.hpp" 2
80500
80501
80502
80503
80504
80505
80506
80507 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
80508 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
80509 # 1 "../boost/mpl/aux_/preprocessed/gcc/minus.hpp" 1
80510 # 12 "../boost/mpl/aux_/preprocessed/gcc/minus.hpp"
80511 namespace boost { namespace mpl {
80512
80513 template<
80514 typename Tag1
80515 , typename Tag2
80516 >
80517 struct minus_impl
80518 : if_c<
80519 ( Tag1::value
80520 > Tag2::value
80521 )
80522
80523 , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
80524 , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
80525 >::type
80526 {
80527 };
80528
80529
80530 template<> struct minus_impl< na,na >
80531 {
80532 template< typename U1, typename U2 > struct apply
80533 {
80534 typedef apply type;
80535 static const int value = 0;
80536 };
80537 };
80538
80539 template< typename Tag > struct minus_impl< na,Tag >
80540 {
80541 template< typename U1, typename U2 > struct apply
80542 {
80543 typedef apply type;
80544 static const int value = 0;
80545 };
80546 };
80547
80548 template< typename Tag > struct minus_impl< Tag,na >
80549 {
80550 template< typename U1, typename U2 > struct apply
80551 {
80552 typedef apply type;
80553 static const int value = 0;
80554 };
80555 };
80556
80557 template< typename T > struct minus_tag
80558 {
80559 typedef typename T::tag type;
80560 };
80561
80562 template<
80563 typename N1 = na
80564 , typename N2 = na
80565 , typename N3 = na, typename N4 = na, typename N5 = na
80566 >
80567 struct minus
80568 : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
80569 {
80570
80571
80572
80573
80574
80575 };
80576
80577 template<
80578 typename N1, typename N2, typename N3, typename N4
80579 >
80580 struct minus< N1,N2,N3,N4,na >
80581
80582 : minus< minus< minus< N1,N2 >, N3>, N4>
80583 {
80584
80585
80586
80587
80588
80589 };
80590
80591 template<
80592 typename N1, typename N2, typename N3
80593 >
80594 struct minus< N1,N2,N3,na,na >
80595
80596 : minus< minus< N1,N2 >, N3>
80597 {
80598
80599
80600
80601
80602
80603 };
80604
80605 template<
80606 typename N1, typename N2
80607 >
80608 struct minus< N1,N2,na,na,na >
80609 : minus_impl<
80610 typename minus_tag<N1>::type
80611 , typename minus_tag<N2>::type
80612 >::template apply< N1,N2 >::type
80613 {
80614
80615
80616
80617
80618
80619
80620 };
80621
80622 template<> struct minus< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : minus< T1 , T2 > { }; }; template< typename Tag > struct lambda< minus< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef minus< na , na > result_; typedef minus< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< minus< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< minus< na , na > > : int_<-1> { }; }
80623
80624 }}
80625
80626 namespace boost { namespace mpl {
80627 template<>
80628 struct minus_impl< integral_c_tag,integral_c_tag >
80629 {
80630 template< typename N1, typename N2 > struct apply
80631
80632 : integral_c<
80633 typename aux::largest_int<
80634 typename N1::value_type
80635 , typename N2::value_type
80636 >::type
80637 , ( N1::value
80638 - N2::value
80639 )
80640 >
80641 {
80642 };
80643 };
80644
80645 }}
80646 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
80647 # 35 "../boost/mpl/aux_/arithmetic_op.hpp" 2
80648 # 20 "../boost/mpl/minus.hpp" 2
80649 # 21 "../boost/mpl/vector/aux_/iterator.hpp" 2
80650 # 1 "../boost/mpl/advance_fwd.hpp" 1
80651 # 19 "../boost/mpl/advance_fwd.hpp"
80652 namespace boost { namespace mpl {
80653
80654
80655
80656 template< typename Tag > struct advance_impl;
80657 template< typename Iterator, typename N > struct advance;
80658
80659 }}
80660 # 22 "../boost/mpl/vector/aux_/iterator.hpp" 2
80661 # 1 "../boost/mpl/distance_fwd.hpp" 1
80662 # 19 "../boost/mpl/distance_fwd.hpp"
80663 namespace boost { namespace mpl {
80664
80665
80666
80667 template< typename Tag > struct distance_impl;
80668 template< typename First, typename Last > struct distance;
80669
80670 }}
80671 # 23 "../boost/mpl/vector/aux_/iterator.hpp" 2
80672
80673 # 1 "../boost/mpl/prior.hpp" 1
80674 # 25 "../boost/mpl/vector/aux_/iterator.hpp" 2
80675
80676
80677
80678
80679
80680 namespace boost { namespace mpl {
80681
80682 template<
80683 typename Vector
80684 , long n_
80685 >
80686 struct v_iter
80687 {
80688 typedef aux::v_iter_tag tag;
80689 typedef random_access_iterator_tag category;
80690 typedef typename v_at<Vector,n_>::type type;
80691
80692 typedef Vector vector_;
80693 typedef mpl::long_<n_> pos;
80694 # 56 "../boost/mpl/vector/aux_/iterator.hpp"
80695 };
80696
80697
80698
80699
80700 template<
80701 typename Vector
80702 , long n_
80703 >
80704 struct next< v_iter<Vector,n_> >
80705 {
80706 typedef v_iter<Vector,(n_ + 1)> type;
80707 };
80708
80709 template<
80710 typename Vector
80711 , long n_
80712 >
80713 struct prior< v_iter<Vector,n_> >
80714 {
80715 typedef v_iter<Vector,(n_ - 1)> type;
80716 };
80717
80718 template<
80719 typename Vector
80720 , long n_
80721 , typename Distance
80722 >
80723 struct advance< v_iter<Vector,n_>,Distance>
80724 {
80725 typedef v_iter<
80726 Vector
80727 , (n_ + Distance::value)
80728 > type;
80729 };
80730
80731 template<
80732 typename Vector
80733 , long n_
80734 , long m_
80735 >
80736 struct distance< v_iter<Vector,n_>, v_iter<Vector,m_> >
80737 : mpl::long_<(m_ - n_)>
80738 {
80739 };
80740 # 128 "../boost/mpl/vector/aux_/iterator.hpp"
80741 }}
80742 # 23 "../boost/mpl/vector/aux_/vector0.hpp" 2
80743
80744
80745
80746 namespace boost { namespace mpl {
80747
80748 template< typename Dummy = na > struct vector0;
80749
80750 template<> struct vector0<na>
80751 {
80752
80753 typedef aux::vector_tag tag;
80754 typedef vector0 type;
80755 typedef long_<32768> lower_bound_;
80756 typedef lower_bound_ upper_bound_;
80757 typedef long_<0> size;
80758
80759 static aux::type_wrapper<void_> item_(...);
80760 # 48 "../boost/mpl/vector/aux_/vector0.hpp"
80761 };
80762
80763 }}
80764 # 19 "../boost/mpl/vector/aux_/clear.hpp" 2
80765
80766
80767
80768
80769 namespace boost { namespace mpl {
80770
80771
80772
80773 template<>
80774 struct clear_impl< aux::vector_tag >
80775 {
80776 template< typename Vector > struct apply
80777 {
80778 typedef vector0<> type;
80779 };
80780 };
80781 # 53 "../boost/mpl/vector/aux_/clear.hpp"
80782 }}
80783 # 25 "../boost/mpl/vector/vector0.hpp" 2
80784 # 1 "../boost/mpl/vector/aux_/O1_size.hpp" 1
80785 # 24 "../boost/mpl/vector/aux_/O1_size.hpp"
80786 namespace boost { namespace mpl {
80787
80788
80789
80790 template<>
80791 struct O1_size_impl< aux::vector_tag >
80792 {
80793 template< typename Vector > struct apply
80794 : Vector::size
80795 {
80796 };
80797 };
80798 # 54 "../boost/mpl/vector/aux_/O1_size.hpp"
80799 }}
80800 # 26 "../boost/mpl/vector/vector0.hpp" 2
80801 # 1 "../boost/mpl/vector/aux_/size.hpp" 1
80802 # 23 "../boost/mpl/vector/aux_/size.hpp"
80803 namespace boost { namespace mpl {
80804
80805
80806
80807 template<>
80808 struct size_impl< aux::vector_tag >
80809 : O1_size_impl< aux::vector_tag >
80810 {
80811 };
80812 # 47 "../boost/mpl/vector/aux_/size.hpp"
80813 }}
80814 # 27 "../boost/mpl/vector/vector0.hpp" 2
80815 # 1 "../boost/mpl/vector/aux_/empty.hpp" 1
80816 # 24 "../boost/mpl/vector/aux_/empty.hpp"
80817 namespace boost { namespace mpl {
80818
80819
80820
80821 template<>
80822 struct empty_impl< aux::vector_tag >
80823 {
80824 template< typename Vector > struct apply
80825 : is_same<
80826 typename Vector::lower_bound_
80827 , typename Vector::upper_bound_
80828 >
80829 {
80830 };
80831 };
80832 # 66 "../boost/mpl/vector/aux_/empty.hpp"
80833 }}
80834 # 28 "../boost/mpl/vector/vector0.hpp" 2
80835
80836
80837
80838 # 1 "../boost/mpl/vector/aux_/begin_end.hpp" 1
80839 # 25 "../boost/mpl/vector/aux_/begin_end.hpp"
80840 namespace boost { namespace mpl {
80841
80842 template<>
80843 struct begin_impl< aux::vector_tag >
80844 {
80845 template< typename Vector > struct apply
80846 {
80847 typedef v_iter<Vector,0> type;
80848 };
80849 };
80850
80851 template<>
80852 struct end_impl< aux::vector_tag >
80853 {
80854 template< typename Vector > struct apply
80855 {
80856 typedef v_iter<Vector,Vector::size::value> type;
80857 };
80858 };
80859
80860 }}
80861 # 32 "../boost/mpl/vector/vector0.hpp" 2
80862 # 19 "../boost/mpl/vector/vector10.hpp" 2
80863 # 27 "../boost/mpl/vector/vector10.hpp"
80864 # 1 "../boost/mpl/vector/aux_/include_preprocessed.hpp" 1
80865 # 49 "../boost/mpl/vector/aux_/include_preprocessed.hpp"
80866 # 1 "../boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp" 1
80867 # 12 "../boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp"
80868 namespace boost { namespace mpl {
80869
80870 template<
80871 typename T0
80872 >
80873 struct vector1
80874 : v_item<
80875 T0
80876 , vector0< >
80877 >
80878 {
80879 typedef vector1 type;
80880 };
80881
80882 template<
80883 typename T0, typename T1
80884 >
80885 struct vector2
80886 : v_item<
80887 T1
80888 , vector1<T0>
80889 >
80890 {
80891 typedef vector2 type;
80892 };
80893
80894 template<
80895 typename T0, typename T1, typename T2
80896 >
80897 struct vector3
80898 : v_item<
80899 T2
80900 , vector2< T0,T1 >
80901 >
80902 {
80903 typedef vector3 type;
80904 };
80905
80906 template<
80907 typename T0, typename T1, typename T2, typename T3
80908 >
80909 struct vector4
80910 : v_item<
80911 T3
80912 , vector3< T0,T1,T2 >
80913 >
80914 {
80915 typedef vector4 type;
80916 };
80917
80918 template<
80919 typename T0, typename T1, typename T2, typename T3, typename T4
80920 >
80921 struct vector5
80922 : v_item<
80923 T4
80924 , vector4< T0,T1,T2,T3 >
80925 >
80926 {
80927 typedef vector5 type;
80928 };
80929
80930 template<
80931 typename T0, typename T1, typename T2, typename T3, typename T4
80932 , typename T5
80933 >
80934 struct vector6
80935 : v_item<
80936 T5
80937 , vector5< T0,T1,T2,T3,T4 >
80938 >
80939 {
80940 typedef vector6 type;
80941 };
80942
80943 template<
80944 typename T0, typename T1, typename T2, typename T3, typename T4
80945 , typename T5, typename T6
80946 >
80947 struct vector7
80948 : v_item<
80949 T6
80950 , vector6< T0,T1,T2,T3,T4,T5 >
80951 >
80952 {
80953 typedef vector7 type;
80954 };
80955
80956 template<
80957 typename T0, typename T1, typename T2, typename T3, typename T4
80958 , typename T5, typename T6, typename T7
80959 >
80960 struct vector8
80961 : v_item<
80962 T7
80963 , vector7< T0,T1,T2,T3,T4,T5,T6 >
80964 >
80965 {
80966 typedef vector8 type;
80967 };
80968
80969 template<
80970 typename T0, typename T1, typename T2, typename T3, typename T4
80971 , typename T5, typename T6, typename T7, typename T8
80972 >
80973 struct vector9
80974 : v_item<
80975 T8
80976 , vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
80977 >
80978 {
80979 typedef vector9 type;
80980 };
80981
80982 template<
80983 typename T0, typename T1, typename T2, typename T3, typename T4
80984 , typename T5, typename T6, typename T7, typename T8, typename T9
80985 >
80986 struct vector10
80987 : v_item<
80988 T9
80989 , vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
80990 >
80991 {
80992 typedef vector10 type;
80993 };
80994
80995 }}
80996 # 50 "../boost/mpl/vector/aux_/include_preprocessed.hpp" 2
80997 # 28 "../boost/mpl/vector/vector10.hpp" 2
80998 # 19 "../boost/mpl/vector/vector20.hpp" 2
80999 # 27 "../boost/mpl/vector/vector20.hpp"
81000 # 1 "../boost/mpl/vector/aux_/include_preprocessed.hpp" 1
81001 # 49 "../boost/mpl/vector/aux_/include_preprocessed.hpp"
81002 # 1 "../boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp" 1
81003 # 12 "../boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp"
81004 namespace boost { namespace mpl {
81005
81006 template<
81007 typename T0, typename T1, typename T2, typename T3, typename T4
81008 , typename T5, typename T6, typename T7, typename T8, typename T9
81009 , typename T10
81010 >
81011 struct vector11
81012 : v_item<
81013 T10
81014 , vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
81015 >
81016 {
81017 typedef vector11 type;
81018 };
81019
81020 template<
81021 typename T0, typename T1, typename T2, typename T3, typename T4
81022 , typename T5, typename T6, typename T7, typename T8, typename T9
81023 , typename T10, typename T11
81024 >
81025 struct vector12
81026 : v_item<
81027 T11
81028 , vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
81029 >
81030 {
81031 typedef vector12 type;
81032 };
81033
81034 template<
81035 typename T0, typename T1, typename T2, typename T3, typename T4
81036 , typename T5, typename T6, typename T7, typename T8, typename T9
81037 , typename T10, typename T11, typename T12
81038 >
81039 struct vector13
81040 : v_item<
81041 T12
81042 , vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
81043 >
81044 {
81045 typedef vector13 type;
81046 };
81047
81048 template<
81049 typename T0, typename T1, typename T2, typename T3, typename T4
81050 , typename T5, typename T6, typename T7, typename T8, typename T9
81051 , typename T10, typename T11, typename T12, typename T13
81052 >
81053 struct vector14
81054 : v_item<
81055 T13
81056 , vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
81057 >
81058 {
81059 typedef vector14 type;
81060 };
81061
81062 template<
81063 typename T0, typename T1, typename T2, typename T3, typename T4
81064 , typename T5, typename T6, typename T7, typename T8, typename T9
81065 , typename T10, typename T11, typename T12, typename T13, typename T14
81066 >
81067 struct vector15
81068 : v_item<
81069 T14
81070 , vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
81071 >
81072 {
81073 typedef vector15 type;
81074 };
81075
81076 template<
81077 typename T0, typename T1, typename T2, typename T3, typename T4
81078 , typename T5, typename T6, typename T7, typename T8, typename T9
81079 , typename T10, typename T11, typename T12, typename T13, typename T14
81080 , typename T15
81081 >
81082 struct vector16
81083 : v_item<
81084 T15
81085 , vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >
81086 >
81087 {
81088 typedef vector16 type;
81089 };
81090
81091 template<
81092 typename T0, typename T1, typename T2, typename T3, typename T4
81093 , typename T5, typename T6, typename T7, typename T8, typename T9
81094 , typename T10, typename T11, typename T12, typename T13, typename T14
81095 , typename T15, typename T16
81096 >
81097 struct vector17
81098 : v_item<
81099 T16
81100 , vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >
81101 >
81102 {
81103 typedef vector17 type;
81104 };
81105
81106 template<
81107 typename T0, typename T1, typename T2, typename T3, typename T4
81108 , typename T5, typename T6, typename T7, typename T8, typename T9
81109 , typename T10, typename T11, typename T12, typename T13, typename T14
81110 , typename T15, typename T16, typename T17
81111 >
81112 struct vector18
81113 : v_item<
81114 T17
81115 , vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >
81116 >
81117 {
81118 typedef vector18 type;
81119 };
81120
81121 template<
81122 typename T0, typename T1, typename T2, typename T3, typename T4
81123 , typename T5, typename T6, typename T7, typename T8, typename T9
81124 , typename T10, typename T11, typename T12, typename T13, typename T14
81125 , typename T15, typename T16, typename T17, typename T18
81126 >
81127 struct vector19
81128 : v_item<
81129 T18
81130 , vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >
81131 >
81132 {
81133 typedef vector19 type;
81134 };
81135
81136 template<
81137 typename T0, typename T1, typename T2, typename T3, typename T4
81138 , typename T5, typename T6, typename T7, typename T8, typename T9
81139 , typename T10, typename T11, typename T12, typename T13, typename T14
81140 , typename T15, typename T16, typename T17, typename T18, typename T19
81141 >
81142 struct vector20
81143 : v_item<
81144 T19
81145 , vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >
81146 >
81147 {
81148 typedef vector20 type;
81149 };
81150
81151 }}
81152 # 50 "../boost/mpl/vector/aux_/include_preprocessed.hpp" 2
81153 # 28 "../boost/mpl/vector/vector20.hpp" 2
81154 # 37 "../boost/mpl/vector.hpp" 2
81155 # 46 "../boost/mpl/vector.hpp"
81156 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
81157 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
81158 # 1 "../boost/mpl/aux_/preprocessed/gcc/vector.hpp" 1
81159 # 12 "../boost/mpl/aux_/preprocessed/gcc/vector.hpp"
81160 namespace boost { namespace mpl {
81161
81162 template<
81163 typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
81164 , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
81165 , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
81166 , typename T12 = na, typename T13 = na, typename T14 = na
81167 , typename T15 = na, typename T16 = na, typename T17 = na
81168 , typename T18 = na, typename T19 = na
81169 >
81170 struct vector;
81171
81172 template<
81173
81174 >
81175 struct vector<
81176 na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
81177 , na, na, na
81178 >
81179 : vector0< >
81180 {
81181 typedef vector0< >::type type;
81182 };
81183
81184 template<
81185 typename T0
81186 >
81187 struct vector<
81188 T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
81189 , na, na, na
81190 >
81191 : vector1<T0>
81192 {
81193 typedef typename vector1<T0>::type type;
81194 };
81195
81196 template<
81197 typename T0, typename T1
81198 >
81199 struct vector<
81200 T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
81201 , na, na, na
81202 >
81203 : vector2< T0,T1 >
81204 {
81205 typedef typename vector2< T0,T1 >::type type;
81206 };
81207
81208 template<
81209 typename T0, typename T1, typename T2
81210 >
81211 struct vector<
81212 T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
81213 , na, na, na
81214 >
81215 : vector3< T0,T1,T2 >
81216 {
81217 typedef typename vector3< T0,T1,T2 >::type type;
81218 };
81219
81220 template<
81221 typename T0, typename T1, typename T2, typename T3
81222 >
81223 struct vector<
81224 T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
81225 , na, na, na
81226 >
81227 : vector4< T0,T1,T2,T3 >
81228 {
81229 typedef typename vector4< T0,T1,T2,T3 >::type type;
81230 };
81231
81232 template<
81233 typename T0, typename T1, typename T2, typename T3, typename T4
81234 >
81235 struct vector<
81236 T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
81237 , na, na, na
81238 >
81239 : vector5< T0,T1,T2,T3,T4 >
81240 {
81241 typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
81242 };
81243
81244 template<
81245 typename T0, typename T1, typename T2, typename T3, typename T4
81246 , typename T5
81247 >
81248 struct vector<
81249 T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
81250 , na, na, na
81251 >
81252 : vector6< T0,T1,T2,T3,T4,T5 >
81253 {
81254 typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
81255 };
81256
81257 template<
81258 typename T0, typename T1, typename T2, typename T3, typename T4
81259 , typename T5, typename T6
81260 >
81261 struct vector<
81262 T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
81263 , na, na, na
81264 >
81265 : vector7< T0,T1,T2,T3,T4,T5,T6 >
81266 {
81267 typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
81268 };
81269
81270 template<
81271 typename T0, typename T1, typename T2, typename T3, typename T4
81272 , typename T5, typename T6, typename T7
81273 >
81274 struct vector<
81275 T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
81276 , na, na, na
81277 >
81278 : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
81279 {
81280 typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
81281 };
81282
81283 template<
81284 typename T0, typename T1, typename T2, typename T3, typename T4
81285 , typename T5, typename T6, typename T7, typename T8
81286 >
81287 struct vector<
81288 T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
81289 , na, na, na
81290 >
81291 : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
81292 {
81293 typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
81294 };
81295
81296 template<
81297 typename T0, typename T1, typename T2, typename T3, typename T4
81298 , typename T5, typename T6, typename T7, typename T8, typename T9
81299 >
81300 struct vector<
81301 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
81302 , na, na, na
81303 >
81304 : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
81305 {
81306 typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
81307 };
81308
81309 template<
81310 typename T0, typename T1, typename T2, typename T3, typename T4
81311 , typename T5, typename T6, typename T7, typename T8, typename T9
81312 , typename T10
81313 >
81314 struct vector<
81315 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
81316 , na, na, na
81317 >
81318 : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
81319 {
81320 typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
81321 };
81322
81323 template<
81324 typename T0, typename T1, typename T2, typename T3, typename T4
81325 , typename T5, typename T6, typename T7, typename T8, typename T9
81326 , typename T10, typename T11
81327 >
81328 struct vector<
81329 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
81330 , na, na, na, na
81331 >
81332 : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
81333 {
81334 typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
81335 };
81336
81337 template<
81338 typename T0, typename T1, typename T2, typename T3, typename T4
81339 , typename T5, typename T6, typename T7, typename T8, typename T9
81340 , typename T10, typename T11, typename T12
81341 >
81342 struct vector<
81343 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
81344 , na, na, na, na
81345 >
81346 : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
81347 {
81348 typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
81349 };
81350
81351 template<
81352 typename T0, typename T1, typename T2, typename T3, typename T4
81353 , typename T5, typename T6, typename T7, typename T8, typename T9
81354 , typename T10, typename T11, typename T12, typename T13
81355 >
81356 struct vector<
81357 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
81358 , na, na, na, na
81359 >
81360 : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
81361 {
81362 typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
81363 };
81364
81365 template<
81366 typename T0, typename T1, typename T2, typename T3, typename T4
81367 , typename T5, typename T6, typename T7, typename T8, typename T9
81368 , typename T10, typename T11, typename T12, typename T13, typename T14
81369 >
81370 struct vector<
81371 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
81372 , na, na, na, na
81373 >
81374 : vector15<
81375 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81376 >
81377 {
81378 typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
81379 };
81380
81381 template<
81382 typename T0, typename T1, typename T2, typename T3, typename T4
81383 , typename T5, typename T6, typename T7, typename T8, typename T9
81384 , typename T10, typename T11, typename T12, typename T13, typename T14
81385 , typename T15
81386 >
81387 struct vector<
81388 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81389 , T15, na, na, na, na
81390 >
81391 : vector16<
81392 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81393 , T15
81394 >
81395 {
81396 typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
81397 };
81398
81399 template<
81400 typename T0, typename T1, typename T2, typename T3, typename T4
81401 , typename T5, typename T6, typename T7, typename T8, typename T9
81402 , typename T10, typename T11, typename T12, typename T13, typename T14
81403 , typename T15, typename T16
81404 >
81405 struct vector<
81406 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81407 , T15, T16, na, na, na
81408 >
81409 : vector17<
81410 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81411 , T15, T16
81412 >
81413 {
81414 typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
81415 };
81416
81417 template<
81418 typename T0, typename T1, typename T2, typename T3, typename T4
81419 , typename T5, typename T6, typename T7, typename T8, typename T9
81420 , typename T10, typename T11, typename T12, typename T13, typename T14
81421 , typename T15, typename T16, typename T17
81422 >
81423 struct vector<
81424 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81425 , T15, T16, T17, na, na
81426 >
81427 : vector18<
81428 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81429 , T15, T16, T17
81430 >
81431 {
81432 typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
81433 };
81434
81435 template<
81436 typename T0, typename T1, typename T2, typename T3, typename T4
81437 , typename T5, typename T6, typename T7, typename T8, typename T9
81438 , typename T10, typename T11, typename T12, typename T13, typename T14
81439 , typename T15, typename T16, typename T17, typename T18
81440 >
81441 struct vector<
81442 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81443 , T15, T16, T17, T18, na
81444 >
81445 : vector19<
81446 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81447 , T15, T16, T17, T18
81448 >
81449 {
81450 typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
81451 };
81452
81453
81454
81455 template<
81456 typename T0, typename T1, typename T2, typename T3, typename T4
81457 , typename T5, typename T6, typename T7, typename T8, typename T9
81458 , typename T10, typename T11, typename T12, typename T13, typename T14
81459 , typename T15, typename T16, typename T17, typename T18, typename T19
81460 >
81461 struct vector
81462 : vector20<
81463 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
81464 , T15, T16, T17, T18, T19
81465 >
81466 {
81467 typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
81468 };
81469
81470 }}
81471 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
81472 # 47 "../boost/mpl/vector.hpp" 2
81473 # 15 "../boost/math/policies/policy.hpp" 2
81474
81475 # 1 "../boost/mpl/at.hpp" 1
81476 # 18 "../boost/mpl/at.hpp"
81477 # 1 "../boost/mpl/aux_/at_impl.hpp" 1
81478 # 18 "../boost/mpl/aux_/at_impl.hpp"
81479 # 1 "../boost/mpl/advance.hpp" 1
81480 # 19 "../boost/mpl/advance.hpp"
81481 # 1 "../boost/mpl/negate.hpp" 1
81482 # 25 "../boost/mpl/negate.hpp"
81483 namespace boost { namespace mpl {
81484
81485 template< typename Tag > struct negate_impl;
81486
81487 template< typename T > struct negate_tag
81488 {
81489 typedef typename T::tag type;
81490 };
81491
81492 template<
81493 typename N = na
81494 >
81495 struct negate
81496
81497 : negate_impl<
81498 typename negate_tag<N>::type
81499 >::template apply<N>::type
81500
81501
81502
81503
81504
81505
81506 {
81507
81508 };
81509
81510 template<> struct negate< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : negate< T1 > { }; }; template< typename Tag > struct lambda< negate< na > , Tag , int_<-1> > { typedef false_ is_le; typedef negate< na > result_; typedef negate< na > type; }; namespace aux { template< typename T1 > struct template_arity< negate< T1 > > : int_<1> { }; template<> struct template_arity< negate< na > > : int_<-1> { }; }
81511 # 65 "../boost/mpl/negate.hpp"
81512 template<>
81513 struct negate_impl<integral_c_tag>
81514 {
81515
81516
81517
81518
81519 template< typename N > struct apply
81520 : integral_c< typename N::value_type, (-N::value) >
81521
81522 {
81523 };
81524 };
81525
81526 }}
81527 # 20 "../boost/mpl/advance.hpp" 2
81528
81529
81530
81531 # 1 "../boost/mpl/apply_wrap.hpp" 1
81532 # 24 "../boost/mpl/advance.hpp" 2
81533 # 1 "../boost/mpl/aux_/advance_forward.hpp" 1
81534 # 23 "../boost/mpl/aux_/advance_forward.hpp"
81535 # 1 "../boost/mpl/apply_wrap.hpp" 1
81536 # 24 "../boost/mpl/aux_/advance_forward.hpp" 2
81537 # 32 "../boost/mpl/aux_/advance_forward.hpp"
81538 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
81539 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
81540 # 1 "../boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp" 1
81541 # 12 "../boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp"
81542 namespace boost { namespace mpl { namespace aux {
81543
81544 template< long N > struct advance_forward;
81545 template<>
81546 struct advance_forward<0>
81547 {
81548 template< typename Iterator > struct apply
81549 {
81550 typedef Iterator iter0;
81551 typedef iter0 type;
81552 };
81553 };
81554
81555 template<>
81556 struct advance_forward<1>
81557 {
81558 template< typename Iterator > struct apply
81559 {
81560 typedef Iterator iter0;
81561 typedef typename next<iter0>::type iter1;
81562 typedef iter1 type;
81563 };
81564 };
81565
81566 template<>
81567 struct advance_forward<2>
81568 {
81569 template< typename Iterator > struct apply
81570 {
81571 typedef Iterator iter0;
81572 typedef typename next<iter0>::type iter1;
81573 typedef typename next<iter1>::type iter2;
81574 typedef iter2 type;
81575 };
81576 };
81577
81578 template<>
81579 struct advance_forward<3>
81580 {
81581 template< typename Iterator > struct apply
81582 {
81583 typedef Iterator iter0;
81584 typedef typename next<iter0>::type iter1;
81585 typedef typename next<iter1>::type iter2;
81586 typedef typename next<iter2>::type iter3;
81587 typedef iter3 type;
81588 };
81589 };
81590
81591 template<>
81592 struct advance_forward<4>
81593 {
81594 template< typename Iterator > struct apply
81595 {
81596 typedef Iterator iter0;
81597 typedef typename next<iter0>::type iter1;
81598 typedef typename next<iter1>::type iter2;
81599 typedef typename next<iter2>::type iter3;
81600 typedef typename next<iter3>::type iter4;
81601 typedef iter4 type;
81602 };
81603 };
81604
81605 template< long N >
81606 struct advance_forward
81607 {
81608 template< typename Iterator > struct apply
81609 {
81610 typedef typename apply_wrap1<
81611 advance_forward<4>
81612 , Iterator
81613 >::type chunk_result_;
81614
81615 typedef typename apply_wrap1<
81616 advance_forward<(
81617 (N - 4) < 0
81618 ? 0
81619 : N - 4
81620 )>
81621 , chunk_result_
81622 >::type type;
81623 };
81624 };
81625
81626 }}}
81627 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
81628 # 33 "../boost/mpl/aux_/advance_forward.hpp" 2
81629 # 25 "../boost/mpl/advance.hpp" 2
81630 # 1 "../boost/mpl/aux_/advance_backward.hpp" 1
81631 # 23 "../boost/mpl/aux_/advance_backward.hpp"
81632 # 1 "../boost/mpl/apply_wrap.hpp" 1
81633 # 24 "../boost/mpl/aux_/advance_backward.hpp" 2
81634 # 32 "../boost/mpl/aux_/advance_backward.hpp"
81635 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
81636 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
81637 # 1 "../boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp" 1
81638 # 12 "../boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp"
81639 namespace boost { namespace mpl { namespace aux {
81640
81641 template< long N > struct advance_backward;
81642 template<>
81643 struct advance_backward<0>
81644 {
81645 template< typename Iterator > struct apply
81646 {
81647 typedef Iterator iter0;
81648 typedef iter0 type;
81649 };
81650 };
81651
81652 template<>
81653 struct advance_backward<1>
81654 {
81655 template< typename Iterator > struct apply
81656 {
81657 typedef Iterator iter0;
81658 typedef typename prior<iter0>::type iter1;
81659 typedef iter1 type;
81660 };
81661 };
81662
81663 template<>
81664 struct advance_backward<2>
81665 {
81666 template< typename Iterator > struct apply
81667 {
81668 typedef Iterator iter0;
81669 typedef typename prior<iter0>::type iter1;
81670 typedef typename prior<iter1>::type iter2;
81671 typedef iter2 type;
81672 };
81673 };
81674
81675 template<>
81676 struct advance_backward<3>
81677 {
81678 template< typename Iterator > struct apply
81679 {
81680 typedef Iterator iter0;
81681 typedef typename prior<iter0>::type iter1;
81682 typedef typename prior<iter1>::type iter2;
81683 typedef typename prior<iter2>::type iter3;
81684 typedef iter3 type;
81685 };
81686 };
81687
81688 template<>
81689 struct advance_backward<4>
81690 {
81691 template< typename Iterator > struct apply
81692 {
81693 typedef Iterator iter0;
81694 typedef typename prior<iter0>::type iter1;
81695 typedef typename prior<iter1>::type iter2;
81696 typedef typename prior<iter2>::type iter3;
81697 typedef typename prior<iter3>::type iter4;
81698 typedef iter4 type;
81699 };
81700 };
81701
81702 template< long N >
81703 struct advance_backward
81704 {
81705 template< typename Iterator > struct apply
81706 {
81707 typedef typename apply_wrap1<
81708 advance_backward<4>
81709 , Iterator
81710 >::type chunk_result_;
81711
81712 typedef typename apply_wrap1<
81713 advance_backward<(
81714 (N - 4) < 0
81715 ? 0
81716 : N - 4
81717 )>
81718 , chunk_result_
81719 >::type type;
81720 };
81721 };
81722
81723 }}}
81724 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
81725 # 33 "../boost/mpl/aux_/advance_backward.hpp" 2
81726 # 26 "../boost/mpl/advance.hpp" 2
81727
81728
81729
81730
81731 namespace boost { namespace mpl {
81732
81733
81734 template< typename Tag >
81735 struct advance_impl
81736 {
81737 template< typename Iterator, typename N > struct apply
81738 {
81739 typedef typename less< N,long_<0> >::type backward_;
81740 typedef typename if_< backward_, negate<N>, N >::type offset_;
81741
81742 typedef typename if_<
81743 backward_
81744 , aux::advance_backward< offset_::value >
81745 , aux::advance_forward< offset_::value >
81746 >::type f_;
81747
81748 typedef typename apply_wrap1<f_,Iterator>::type type;
81749 };
81750 };
81751
81752
81753 template<
81754 typename Iterator = na
81755 , typename N = na
81756 >
81757 struct advance
81758 : advance_impl< typename tag<Iterator>::type >
81759 ::template apply<Iterator,N>
81760 {
81761 };
81762
81763 template<
81764 typename Iterator
81765 , long N
81766 >
81767 struct advance_c
81768 : advance_impl< typename tag<Iterator>::type >
81769 ::template apply<Iterator,long_<N> >
81770 {
81771 };
81772
81773 template<> struct advance< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : advance< T1 , T2 > { }; }; template< typename Tag > struct lambda< advance< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef advance< na , na > result_; typedef advance< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< advance< T1 , T2 > > : int_<2> { }; template<> struct template_arity< advance< na , na > > : int_<-1> { }; }
81774
81775 }}
81776 # 19 "../boost/mpl/aux_/at_impl.hpp" 2
81777
81778
81779
81780 namespace boost { namespace mpl {
81781
81782
81783
81784
81785 template< typename Tag >
81786 struct at_impl
81787 {
81788 template< typename Sequence, typename N > struct apply
81789 {
81790 typedef typename advance<
81791 typename begin<Sequence>::type
81792 , N
81793 >::type iter_;
81794
81795 typedef typename deref<iter_>::type type;
81796 };
81797 };
81798
81799 template<> struct at_impl<non_sequence_tag> {};
81800
81801 }}
81802 # 19 "../boost/mpl/at.hpp" 2
81803
81804
81805
81806
81807
81808
81809 namespace boost { namespace mpl {
81810
81811 template<
81812 typename Sequence = na
81813 , typename N = na
81814 >
81815 struct at
81816 : at_impl< typename sequence_tag<Sequence>::type >
81817 ::template apply< Sequence,N >
81818 {
81819
81820 };
81821
81822 template<
81823 typename Sequence
81824 , long N
81825 >
81826 struct at_c
81827 : at_impl< typename sequence_tag<Sequence>::type >
81828 ::template apply< Sequence,mpl::long_<N> >
81829 {
81830 };
81831
81832 template<> struct at< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : at< T1 , T2 > { }; }; template< typename Tag > struct lambda< at< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef at< na , na > result_; typedef at< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< at< T1 , T2 > > : int_<2> { }; template<> struct template_arity< at< na , na > > : int_<-1> { }; }
81833
81834 }}
81835 # 17 "../boost/math/policies/policy.hpp" 2
81836 # 1 "../boost/mpl/size.hpp" 1
81837 # 19 "../boost/mpl/size.hpp"
81838 # 1 "../boost/mpl/aux_/size_impl.hpp" 1
81839 # 19 "../boost/mpl/aux_/size_impl.hpp"
81840 # 1 "../boost/mpl/distance.hpp" 1
81841 # 18 "../boost/mpl/distance.hpp"
81842 # 1 "../boost/mpl/iter_fold.hpp" 1
81843 # 21 "../boost/mpl/iter_fold.hpp"
81844 # 1 "../boost/mpl/aux_/iter_fold_impl.hpp" 1
81845 # 19 "../boost/mpl/aux_/iter_fold_impl.hpp"
81846 # 1 "../boost/mpl/apply.hpp" 1
81847 # 20 "../boost/mpl/aux_/iter_fold_impl.hpp" 2
81848 # 33 "../boost/mpl/aux_/iter_fold_impl.hpp"
81849 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
81850 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
81851 # 1 "../boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp" 1
81852 # 12 "../boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp"
81853 namespace boost { namespace mpl { namespace aux {
81854
81855
81856
81857 template<
81858 int N
81859 , typename First
81860 , typename Last
81861 , typename State
81862 , typename ForwardOp
81863 >
81864 struct iter_fold_impl;
81865
81866 template<
81867 typename First
81868 , typename Last
81869 , typename State
81870 , typename ForwardOp
81871 >
81872 struct iter_fold_impl< 0,First,Last,State,ForwardOp >
81873 {
81874 typedef First iter0;
81875 typedef State state0;
81876 typedef state0 state;
81877 typedef iter0 iterator;
81878 };
81879
81880 template<
81881 typename First
81882 , typename Last
81883 , typename State
81884 , typename ForwardOp
81885 >
81886 struct iter_fold_impl< 1,First,Last,State,ForwardOp >
81887 {
81888 typedef First iter0;
81889 typedef State state0;
81890 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
81891 typedef typename mpl::next<iter0>::type iter1;
81892
81893
81894 typedef state1 state;
81895 typedef iter1 iterator;
81896 };
81897
81898 template<
81899 typename First
81900 , typename Last
81901 , typename State
81902 , typename ForwardOp
81903 >
81904 struct iter_fold_impl< 2,First,Last,State,ForwardOp >
81905 {
81906 typedef First iter0;
81907 typedef State state0;
81908 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
81909 typedef typename mpl::next<iter0>::type iter1;
81910 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
81911 typedef typename mpl::next<iter1>::type iter2;
81912
81913
81914 typedef state2 state;
81915 typedef iter2 iterator;
81916 };
81917
81918 template<
81919 typename First
81920 , typename Last
81921 , typename State
81922 , typename ForwardOp
81923 >
81924 struct iter_fold_impl< 3,First,Last,State,ForwardOp >
81925 {
81926 typedef First iter0;
81927 typedef State state0;
81928 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
81929 typedef typename mpl::next<iter0>::type iter1;
81930 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
81931 typedef typename mpl::next<iter1>::type iter2;
81932 typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
81933 typedef typename mpl::next<iter2>::type iter3;
81934
81935
81936 typedef state3 state;
81937 typedef iter3 iterator;
81938 };
81939
81940 template<
81941 typename First
81942 , typename Last
81943 , typename State
81944 , typename ForwardOp
81945 >
81946 struct iter_fold_impl< 4,First,Last,State,ForwardOp >
81947 {
81948 typedef First iter0;
81949 typedef State state0;
81950 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
81951 typedef typename mpl::next<iter0>::type iter1;
81952 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
81953 typedef typename mpl::next<iter1>::type iter2;
81954 typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
81955 typedef typename mpl::next<iter2>::type iter3;
81956 typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
81957 typedef typename mpl::next<iter3>::type iter4;
81958
81959
81960 typedef state4 state;
81961 typedef iter4 iterator;
81962 };
81963
81964 template<
81965 int N
81966 , typename First
81967 , typename Last
81968 , typename State
81969 , typename ForwardOp
81970 >
81971 struct iter_fold_impl
81972 {
81973 typedef iter_fold_impl<
81974 4
81975 , First
81976 , Last
81977 , State
81978 , ForwardOp
81979 > chunk_;
81980
81981 typedef iter_fold_impl<
81982 ( (N - 4) < 0 ? 0 : N - 4 )
81983 , typename chunk_::iterator
81984 , Last
81985 , typename chunk_::state
81986 , ForwardOp
81987 > res_;
81988
81989 typedef typename res_::state state;
81990 typedef typename res_::iterator iterator;
81991 };
81992
81993 template<
81994 typename First
81995 , typename Last
81996 , typename State
81997 , typename ForwardOp
81998 >
81999 struct iter_fold_impl< -1,First,Last,State,ForwardOp >
82000 : iter_fold_impl<
82001 -1
82002 , typename mpl::next<First>::type
82003 , Last
82004 , typename apply2< ForwardOp,State,First >::type
82005 , ForwardOp
82006 >
82007 {
82008 };
82009
82010 template<
82011 typename Last
82012 , typename State
82013 , typename ForwardOp
82014 >
82015 struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
82016 {
82017 typedef State state;
82018 typedef Last iterator;
82019 };
82020
82021 }}}
82022 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
82023 # 34 "../boost/mpl/aux_/iter_fold_impl.hpp" 2
82024 # 22 "../boost/mpl/iter_fold.hpp" 2
82025
82026
82027
82028 namespace boost { namespace mpl {
82029
82030 template<
82031 typename Sequence = na
82032 , typename State = na
82033 , typename ForwardOp = na
82034 >
82035 struct iter_fold
82036 {
82037 typedef typename aux::iter_fold_impl<
82038 ::boost::mpl::O1_size<Sequence>::value
82039 , typename begin<Sequence>::type
82040 , typename end<Sequence>::type
82041 , State
82042 , typename lambda<ForwardOp>::type
82043 >::state type;
82044
82045
82046 };
82047
82048 template<> struct iter_fold< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : iter_fold< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< iter_fold< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef iter_fold< na , na , na > result_; typedef iter_fold< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< iter_fold< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< iter_fold< na , na , na > > : int_<-1> { }; }
82049
82050 }}
82051 # 19 "../boost/mpl/distance.hpp" 2
82052 # 1 "../boost/mpl/iterator_range.hpp" 1
82053 # 20 "../boost/mpl/iterator_range.hpp"
82054 namespace boost { namespace mpl {
82055
82056 struct iterator_range_tag;
82057
82058 template<
82059 typename First = na
82060 , typename Last = na
82061 >
82062 struct iterator_range
82063 {
82064 typedef iterator_range_tag tag;
82065 typedef iterator_range type;
82066 typedef First begin;
82067 typedef Last end;
82068
82069
82070 };
82071
82072 template<> struct iterator_range< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : iterator_range< T1 , T2 > { }; }; template< typename Tag > struct lambda< iterator_range< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef iterator_range< na , na > result_; typedef iterator_range< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< iterator_range< T1 , T2 > > : int_<2> { }; template<> struct template_arity< iterator_range< na , na > > : int_<-1> { }; }
82073
82074 }}
82075 # 20 "../boost/mpl/distance.hpp" 2
82076
82077
82078
82079 # 1 "../boost/mpl/apply_wrap.hpp" 1
82080 # 24 "../boost/mpl/distance.hpp" 2
82081
82082
82083
82084
82085
82086
82087
82088 namespace boost { namespace mpl {
82089
82090
82091 template< typename Tag > struct distance_impl
82092 {
82093 template< typename First, typename Last > struct apply
82094
82095 : aux::msvc_eti_base< typename iter_fold<
82096 iterator_range<First,Last>
82097 , mpl::long_<0>
82098 , next<>
82099 >::type >
82100 {
82101 # 60 "../boost/mpl/distance.hpp"
82102 };
82103 };
82104
82105 template<
82106 typename First = na
82107 , typename Last = na
82108 >
82109 struct distance
82110 : distance_impl< typename tag<First>::type >
82111 ::template apply<First, Last>
82112 {
82113
82114 };
82115
82116 template<> struct distance< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : distance< T1 , T2 > { }; }; template< typename Tag > struct lambda< distance< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef distance< na , na > result_; typedef distance< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< distance< T1 , T2 > > : int_<2> { }; template<> struct template_arity< distance< na , na > > : int_<-1> { }; }
82117
82118 }}
82119 # 20 "../boost/mpl/aux_/size_impl.hpp" 2
82120
82121
82122
82123 namespace boost { namespace mpl {
82124
82125
82126
82127
82128 template< typename Tag >
82129 struct size_impl
82130 {
82131 template< typename Sequence > struct apply
82132
82133 : distance<
82134 typename begin<Sequence>::type
82135 , typename end<Sequence>::type
82136 >
82137 {
82138
82139
82140
82141
82142
82143
82144
82145 };
82146 };
82147
82148 template<> struct size_impl<non_sequence_tag> {};
82149
82150 }}
82151 # 20 "../boost/mpl/size.hpp" 2
82152
82153
82154
82155
82156 namespace boost { namespace mpl {
82157
82158 template<
82159 typename Sequence = na
82160 >
82161 struct size
82162 : aux::msvc_eti_base<
82163 typename size_impl< typename sequence_tag<Sequence>::type >
82164 ::template apply< Sequence >::type
82165 >::type
82166 {
82167
82168 };
82169
82170 template<> struct size< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : size< T1 > { }; }; template< typename Tag > struct lambda< size< na > , Tag , int_<-1> > { typedef false_ is_le; typedef size< na > result_; typedef size< na > type; }; namespace aux { template< typename T1 > struct template_arity< size< T1 > > : int_<1> { }; template<> struct template_arity< size< na > > : int_<-1> { }; }
82171
82172 }}
82173 # 18 "../boost/math/policies/policy.hpp" 2
82174 # 1 "../boost/mpl/comparison.hpp" 1
82175 # 18 "../boost/mpl/comparison.hpp"
82176 # 1 "../boost/mpl/not_equal_to.hpp" 1
82177 # 19 "../boost/mpl/not_equal_to.hpp"
82178 # 1 "../boost/mpl/aux_/comparison_op.hpp" 1
82179 # 27 "../boost/mpl/aux_/comparison_op.hpp"
82180 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
82181 # 22 "../boost/mpl/aux_/numeric_op.hpp"
82182 # 1 "../boost/mpl/apply_wrap.hpp" 1
82183 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
82184 # 28 "../boost/mpl/aux_/comparison_op.hpp" 2
82185
82186
82187
82188
82189
82190
82191
82192 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
82193 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
82194 # 1 "../boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp" 1
82195 # 12 "../boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp"
82196 namespace boost { namespace mpl {
82197
82198 template<
82199 typename Tag1
82200 , typename Tag2
82201 >
82202 struct not_equal_to_impl
82203 : if_c<
82204 ( Tag1::value
82205 > Tag2::value
82206 )
82207
82208 , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
82209 , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
82210 >::type
82211 {
82212 };
82213
82214
82215 template<> struct not_equal_to_impl< na,na >
82216 {
82217 template< typename U1, typename U2 > struct apply
82218 {
82219 typedef apply type;
82220 static const int value = 0;
82221 };
82222 };
82223
82224 template< typename Tag > struct not_equal_to_impl< na,Tag >
82225 {
82226 template< typename U1, typename U2 > struct apply
82227 {
82228 typedef apply type;
82229 static const int value = 0;
82230 };
82231 };
82232
82233 template< typename Tag > struct not_equal_to_impl< Tag,na >
82234 {
82235 template< typename U1, typename U2 > struct apply
82236 {
82237 typedef apply type;
82238 static const int value = 0;
82239 };
82240 };
82241
82242 template< typename T > struct not_equal_to_tag
82243 {
82244 typedef typename T::tag type;
82245 };
82246
82247 template<
82248 typename N1 = na
82249 , typename N2 = na
82250 >
82251 struct not_equal_to
82252
82253 : not_equal_to_impl<
82254 typename not_equal_to_tag<N1>::type
82255 , typename not_equal_to_tag<N2>::type
82256 >::template apply< N1,N2 >::type
82257 {
82258
82259
82260 };
82261
82262 template<> struct not_equal_to< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : not_equal_to< T1 , T2 > { }; }; template< typename Tag > struct lambda< not_equal_to< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef not_equal_to< na , na > result_; typedef not_equal_to< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< not_equal_to< T1 , T2 > > : int_<2> { }; template<> struct template_arity< not_equal_to< na , na > > : int_<-1> { }; }
82263
82264 }}
82265
82266 namespace boost { namespace mpl {
82267
82268 template<>
82269 struct not_equal_to_impl< integral_c_tag,integral_c_tag >
82270 {
82271 template< typename N1, typename N2 > struct apply
82272
82273 : bool_< ( N1::value != N2::value ) >
82274 {
82275 };
82276 };
82277
82278 }}
82279 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
82280 # 36 "../boost/mpl/aux_/comparison_op.hpp" 2
82281 # 20 "../boost/mpl/not_equal_to.hpp" 2
82282 # 19 "../boost/mpl/comparison.hpp" 2
82283
82284 # 1 "../boost/mpl/greater.hpp" 1
82285 # 19 "../boost/mpl/greater.hpp"
82286 # 1 "../boost/mpl/aux_/comparison_op.hpp" 1
82287 # 27 "../boost/mpl/aux_/comparison_op.hpp"
82288 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
82289 # 22 "../boost/mpl/aux_/numeric_op.hpp"
82290 # 1 "../boost/mpl/apply_wrap.hpp" 1
82291 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
82292 # 28 "../boost/mpl/aux_/comparison_op.hpp" 2
82293
82294
82295
82296
82297
82298
82299
82300 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
82301 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
82302 # 1 "../boost/mpl/aux_/preprocessed/gcc/greater.hpp" 1
82303 # 12 "../boost/mpl/aux_/preprocessed/gcc/greater.hpp"
82304 namespace boost { namespace mpl {
82305
82306 template<
82307 typename Tag1
82308 , typename Tag2
82309 >
82310 struct greater_impl
82311 : if_c<
82312 ( Tag1::value
82313 > Tag2::value
82314 )
82315
82316 , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
82317 , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
82318 >::type
82319 {
82320 };
82321
82322
82323 template<> struct greater_impl< na,na >
82324 {
82325 template< typename U1, typename U2 > struct apply
82326 {
82327 typedef apply type;
82328 static const int value = 0;
82329 };
82330 };
82331
82332 template< typename Tag > struct greater_impl< na,Tag >
82333 {
82334 template< typename U1, typename U2 > struct apply
82335 {
82336 typedef apply type;
82337 static const int value = 0;
82338 };
82339 };
82340
82341 template< typename Tag > struct greater_impl< Tag,na >
82342 {
82343 template< typename U1, typename U2 > struct apply
82344 {
82345 typedef apply type;
82346 static const int value = 0;
82347 };
82348 };
82349
82350 template< typename T > struct greater_tag
82351 {
82352 typedef typename T::tag type;
82353 };
82354
82355 template<
82356 typename N1 = na
82357 , typename N2 = na
82358 >
82359 struct greater
82360
82361 : greater_impl<
82362 typename greater_tag<N1>::type
82363 , typename greater_tag<N2>::type
82364 >::template apply< N1,N2 >::type
82365 {
82366
82367
82368 };
82369
82370 template<> struct greater< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : greater< T1 , T2 > { }; }; template< typename Tag > struct lambda< greater< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef greater< na , na > result_; typedef greater< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< greater< T1 , T2 > > : int_<2> { }; template<> struct template_arity< greater< na , na > > : int_<-1> { }; }
82371
82372 }}
82373
82374 namespace boost { namespace mpl {
82375
82376 template<>
82377 struct greater_impl< integral_c_tag,integral_c_tag >
82378 {
82379 template< typename N1, typename N2 > struct apply
82380
82381 : bool_< ( N1::value > N2::value ) >
82382 {
82383 };
82384 };
82385
82386 }}
82387 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
82388 # 36 "../boost/mpl/aux_/comparison_op.hpp" 2
82389 # 20 "../boost/mpl/greater.hpp" 2
82390 # 21 "../boost/mpl/comparison.hpp" 2
82391 # 1 "../boost/mpl/less_equal.hpp" 1
82392 # 19 "../boost/mpl/less_equal.hpp"
82393 # 1 "../boost/mpl/aux_/comparison_op.hpp" 1
82394 # 27 "../boost/mpl/aux_/comparison_op.hpp"
82395 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
82396 # 22 "../boost/mpl/aux_/numeric_op.hpp"
82397 # 1 "../boost/mpl/apply_wrap.hpp" 1
82398 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
82399 # 28 "../boost/mpl/aux_/comparison_op.hpp" 2
82400
82401
82402
82403
82404
82405
82406
82407 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
82408 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
82409 # 1 "../boost/mpl/aux_/preprocessed/gcc/less_equal.hpp" 1
82410 # 12 "../boost/mpl/aux_/preprocessed/gcc/less_equal.hpp"
82411 namespace boost { namespace mpl {
82412
82413 template<
82414 typename Tag1
82415 , typename Tag2
82416 >
82417 struct less_equal_impl
82418 : if_c<
82419 ( Tag1::value
82420 > Tag2::value
82421 )
82422
82423 , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
82424 , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
82425 >::type
82426 {
82427 };
82428
82429
82430 template<> struct less_equal_impl< na,na >
82431 {
82432 template< typename U1, typename U2 > struct apply
82433 {
82434 typedef apply type;
82435 static const int value = 0;
82436 };
82437 };
82438
82439 template< typename Tag > struct less_equal_impl< na,Tag >
82440 {
82441 template< typename U1, typename U2 > struct apply
82442 {
82443 typedef apply type;
82444 static const int value = 0;
82445 };
82446 };
82447
82448 template< typename Tag > struct less_equal_impl< Tag,na >
82449 {
82450 template< typename U1, typename U2 > struct apply
82451 {
82452 typedef apply type;
82453 static const int value = 0;
82454 };
82455 };
82456
82457 template< typename T > struct less_equal_tag
82458 {
82459 typedef typename T::tag type;
82460 };
82461
82462 template<
82463 typename N1 = na
82464 , typename N2 = na
82465 >
82466 struct less_equal
82467
82468 : less_equal_impl<
82469 typename less_equal_tag<N1>::type
82470 , typename less_equal_tag<N2>::type
82471 >::template apply< N1,N2 >::type
82472 {
82473
82474
82475 };
82476
82477 template<> struct less_equal< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : less_equal< T1 , T2 > { }; }; template< typename Tag > struct lambda< less_equal< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef less_equal< na , na > result_; typedef less_equal< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< less_equal< T1 , T2 > > : int_<2> { }; template<> struct template_arity< less_equal< na , na > > : int_<-1> { }; }
82478
82479 }}
82480
82481 namespace boost { namespace mpl {
82482
82483 template<>
82484 struct less_equal_impl< integral_c_tag,integral_c_tag >
82485 {
82486 template< typename N1, typename N2 > struct apply
82487
82488 : bool_< ( N1::value <= N2::value ) >
82489 {
82490 };
82491 };
82492
82493 }}
82494 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
82495 # 36 "../boost/mpl/aux_/comparison_op.hpp" 2
82496 # 20 "../boost/mpl/less_equal.hpp" 2
82497 # 22 "../boost/mpl/comparison.hpp" 2
82498 # 1 "../boost/mpl/greater_equal.hpp" 1
82499 # 19 "../boost/mpl/greater_equal.hpp"
82500 # 1 "../boost/mpl/aux_/comparison_op.hpp" 1
82501 # 27 "../boost/mpl/aux_/comparison_op.hpp"
82502 # 1 "../boost/mpl/aux_/numeric_op.hpp" 1
82503 # 22 "../boost/mpl/aux_/numeric_op.hpp"
82504 # 1 "../boost/mpl/apply_wrap.hpp" 1
82505 # 23 "../boost/mpl/aux_/numeric_op.hpp" 2
82506 # 28 "../boost/mpl/aux_/comparison_op.hpp" 2
82507
82508
82509
82510
82511
82512
82513
82514 # 1 "../boost/mpl/aux_/include_preprocessed.hpp" 1
82515 # 37 "../boost/mpl/aux_/include_preprocessed.hpp"
82516 # 1 "../boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp" 1
82517 # 12 "../boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp"
82518 namespace boost { namespace mpl {
82519
82520 template<
82521 typename Tag1
82522 , typename Tag2
82523 >
82524 struct greater_equal_impl
82525 : if_c<
82526 ( Tag1::value
82527 > Tag2::value
82528 )
82529
82530 , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
82531 , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
82532 >::type
82533 {
82534 };
82535
82536
82537 template<> struct greater_equal_impl< na,na >
82538 {
82539 template< typename U1, typename U2 > struct apply
82540 {
82541 typedef apply type;
82542 static const int value = 0;
82543 };
82544 };
82545
82546 template< typename Tag > struct greater_equal_impl< na,Tag >
82547 {
82548 template< typename U1, typename U2 > struct apply
82549 {
82550 typedef apply type;
82551 static const int value = 0;
82552 };
82553 };
82554
82555 template< typename Tag > struct greater_equal_impl< Tag,na >
82556 {
82557 template< typename U1, typename U2 > struct apply
82558 {
82559 typedef apply type;
82560 static const int value = 0;
82561 };
82562 };
82563
82564 template< typename T > struct greater_equal_tag
82565 {
82566 typedef typename T::tag type;
82567 };
82568
82569 template<
82570 typename N1 = na
82571 , typename N2 = na
82572 >
82573 struct greater_equal
82574
82575 : greater_equal_impl<
82576 typename greater_equal_tag<N1>::type
82577 , typename greater_equal_tag<N2>::type
82578 >::template apply< N1,N2 >::type
82579 {
82580
82581
82582 };
82583
82584 template<> struct greater_equal< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : greater_equal< T1 , T2 > { }; }; template< typename Tag > struct lambda< greater_equal< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef greater_equal< na , na > result_; typedef greater_equal< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< greater_equal< T1 , T2 > > : int_<2> { }; template<> struct template_arity< greater_equal< na , na > > : int_<-1> { }; }
82585
82586 }}
82587
82588 namespace boost { namespace mpl {
82589
82590 template<>
82591 struct greater_equal_impl< integral_c_tag,integral_c_tag >
82592 {
82593 template< typename N1, typename N2 > struct apply
82594
82595 : bool_< ( N1::value >= N2::value ) >
82596 {
82597 };
82598 };
82599
82600 }}
82601 # 38 "../boost/mpl/aux_/include_preprocessed.hpp" 2
82602 # 36 "../boost/mpl/aux_/comparison_op.hpp" 2
82603 # 20 "../boost/mpl/greater_equal.hpp" 2
82604 # 23 "../boost/mpl/comparison.hpp" 2
82605 # 19 "../boost/math/policies/policy.hpp" 2
82606
82607
82608 # 1 "../boost/assert.hpp" 1
82609 # 50 "../boost/assert.hpp"
82610 # 1 "/usr/include/assert.h" 1 3 4
82611 # 51 "../boost/assert.hpp" 2
82612 # 22 "../boost/math/policies/policy.hpp" 2
82613
82614
82615
82616
82617 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
82618 # 27 "../boost/math/policies/policy.hpp" 2
82619
82620 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
82621 # 29 "../boost/math/policies/policy.hpp" 2
82622
82623
82624 namespace boost{ namespace math{
82625
82626 namespace tools{
82627
82628 template <class T>
82629 int digits();
82630 template <class T>
82631 T epsilon();
82632
82633 }
82634
82635 namespace policies{
82636 # 176 "../boost/math/policies/policy.hpp"
82637 enum error_policy_type
82638 {
82639 throw_on_error = 0,
82640 errno_on_error = 1,
82641 ignore_error = 2,
82642 user_error = 3
82643 };
82644
82645 template <error_policy_type N = throw_on_error> struct domain_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const domain_error<N>*); char test_is_default_arg(const domain_error<throw_on_error>*); template <class T> struct is_domain_error_imp { template <error_policy_type N> static char test(const domain_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_domain_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_domain_error_imp<T>::value>{};
82646 template <error_policy_type N = throw_on_error> struct pole_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const pole_error<N>*); char test_is_default_arg(const pole_error<throw_on_error>*); template <class T> struct is_pole_error_imp { template <error_policy_type N> static char test(const pole_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_pole_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_pole_error_imp<T>::value>{};
82647 template <error_policy_type N = throw_on_error> struct overflow_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const overflow_error<N>*); char test_is_default_arg(const overflow_error<throw_on_error>*); template <class T> struct is_overflow_error_imp { template <error_policy_type N> static char test(const overflow_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_overflow_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_overflow_error_imp<T>::value>{};
82648 template <error_policy_type N = ignore_error> struct underflow_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const underflow_error<N>*); char test_is_default_arg(const underflow_error<ignore_error>*); template <class T> struct is_underflow_error_imp { template <error_policy_type N> static char test(const underflow_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_underflow_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_underflow_error_imp<T>::value>{};
82649 template <error_policy_type N = ignore_error> struct denorm_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const denorm_error<N>*); char test_is_default_arg(const denorm_error<ignore_error>*); template <class T> struct is_denorm_error_imp { template <error_policy_type N> static char test(const denorm_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_denorm_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_denorm_error_imp<T>::value>{};
82650 template <error_policy_type N = throw_on_error> struct evaluation_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const evaluation_error<N>*); char test_is_default_arg(const evaluation_error<throw_on_error>*); template <class T> struct is_evaluation_error_imp { template <error_policy_type N> static char test(const evaluation_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_evaluation_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_evaluation_error_imp<T>::value>{};
82651 template <error_policy_type N = throw_on_error> struct rounding_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const rounding_error<N>*); char test_is_default_arg(const rounding_error<throw_on_error>*); template <class T> struct is_rounding_error_imp { template <error_policy_type N> static char test(const rounding_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_rounding_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_rounding_error_imp<T>::value>{};
82652 template <error_policy_type N = ignore_error> struct indeterminate_result_error : public boost::mpl::int_<N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const indeterminate_result_error<N>*); char test_is_default_arg(const indeterminate_result_error<ignore_error>*); template <class T> struct is_indeterminate_result_error_imp { template <error_policy_type N> static char test(const indeterminate_result_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_indeterminate_result_error : public boost::mpl::bool_< ::boost::math::policies::detail::is_indeterminate_result_error_imp<T>::value>{};
82653
82654
82655
82656
82657 template <bool N = true> struct promote_float : public boost::mpl::bool_<N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const promote_float<N>*); char test_is_default_arg(const promote_float<true>*); template <class T> struct is_promote_float_imp { template <bool N> static char test(const promote_float<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_promote_float : public boost::mpl::bool_< ::boost::math::policies::detail::is_promote_float_imp<T>::value>{};
82658 template <bool N = true> struct promote_double : public boost::mpl::bool_<N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const promote_double<N>*); char test_is_default_arg(const promote_double<true>*); template <class T> struct is_promote_double_imp { template <bool N> static char test(const promote_double<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_promote_double : public boost::mpl::bool_< ::boost::math::policies::detail::is_promote_double_imp<T>::value>{};
82659 template <bool N = true> struct assert_undefined : public boost::mpl::bool_<N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const assert_undefined<N>*); char test_is_default_arg(const assert_undefined<true>*); template <class T> struct is_assert_undefined_imp { template <bool N> static char test(const assert_undefined<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_assert_undefined : public boost::mpl::bool_< ::boost::math::policies::detail::is_assert_undefined_imp<T>::value>{};
82660
82661
82662
82663 enum discrete_quantile_policy_type
82664 {
82665 real,
82666 integer_round_outwards,
82667 integer_round_inwards,
82668 integer_round_down,
82669 integer_round_up,
82670 integer_round_nearest
82671 };
82672
82673 template <discrete_quantile_policy_type N = integer_round_outwards> struct discrete_quantile : public boost::mpl::int_<N>{}; namespace detail{ template <discrete_quantile_policy_type N> char test_is_valid_arg(const discrete_quantile<N>*); char test_is_default_arg(const discrete_quantile<integer_round_outwards>*); template <class T> struct is_discrete_quantile_imp { template <discrete_quantile_policy_type N> static char test(const discrete_quantile<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_discrete_quantile : public boost::mpl::bool_< ::boost::math::policies::detail::is_discrete_quantile_imp<T>::value>{};
82674
82675
82676
82677 template <int N = 0> struct digits10 : public boost::mpl::int_<N>{}; namespace detail{ template <int N> char test_is_valid_arg(const digits10<N>*); char test_is_default_arg(const digits10<0>*); template <class T> struct is_digits10_imp { template <int N> static char test(const digits10<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_digits10 : public boost::mpl::bool_< ::boost::math::policies::detail::is_digits10_imp<T>::value>{};
82678 template <int N = 0> struct digits2 : public boost::mpl::int_<N>{}; namespace detail{ template <int N> char test_is_valid_arg(const digits2<N>*); char test_is_default_arg(const digits2<0>*); template <class T> struct is_digits2_imp { template <int N> static char test(const digits2<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_digits2 : public boost::mpl::bool_< ::boost::math::policies::detail::is_digits2_imp<T>::value>{};
82679
82680
82681
82682 template <unsigned long N = 1000000> struct max_series_iterations : public boost::mpl::int_<N>{}; namespace detail{ template <unsigned long N> char test_is_valid_arg(const max_series_iterations<N>*); char test_is_default_arg(const max_series_iterations<1000000>*); template <class T> struct is_max_series_iterations_imp { template <unsigned long N> static char test(const max_series_iterations<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_max_series_iterations : public boost::mpl::bool_< ::boost::math::policies::detail::is_max_series_iterations_imp<T>::value>{};
82683 template <unsigned long N = 200> struct max_root_iterations : public boost::mpl::int_<N>{}; namespace detail{ template <unsigned long N> char test_is_valid_arg(const max_root_iterations<N>*); char test_is_default_arg(const max_root_iterations<200>*); template <class T> struct is_max_root_iterations_imp { template <unsigned long N> static char test(const max_root_iterations<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_max_root_iterations : public boost::mpl::bool_< ::boost::math::policies::detail::is_max_root_iterations_imp<T>::value>{};
82684
82685
82686
82687
82688
82689
82690
82691 struct default_policy{};
82692
82693 namespace detail{
82694
82695
82696
82697 template <class Digits10, class Digits2>
82698 struct precision
82699 {
82700
82701
82702
82703 typedef typename mpl::if_c<
82704 (Digits10::value == 0),
82705 digits2<0>,
82706 digits2<((Digits10::value + 1) * 1000L) / 301L>
82707 >::type digits2_type;
82708 public:
82709
82710
82711
82712
82713
82714 typedef typename mpl::if_c<
82715 (Digits2::value > digits2_type::value),
82716 Digits2, digits2_type>::type type;
82717
82718 };
82719
82720 template <class A, class B, bool b>
82721 struct select_result
82722 {
82723 typedef A type;
82724 };
82725 template <class A, class B>
82726 struct select_result<A, B, false>
82727 {
82728 typedef typename mpl::deref<B>::type type;
82729 };
82730
82731 template <class Seq, class Pred, class DefaultType>
82732 struct find_arg
82733 {
82734 private:
82735 typedef typename mpl::find_if<Seq, Pred>::type iter;
82736 typedef typename mpl::end<Seq>::type end_type;
82737 public:
82738 typedef typename select_result<
82739 DefaultType, iter,
82740 ::boost::is_same<iter, end_type>::value>::type type;
82741 };
82742
82743 double test_is_valid_arg(...);
82744 double test_is_default_arg(...);
82745 char test_is_valid_arg(const default_policy*);
82746 char test_is_default_arg(const default_policy*);
82747
82748 template <class T>
82749 struct is_valid_policy_imp
82750 {
82751 static const bool value = sizeof(::boost::math::policies::detail::test_is_valid_arg(static_cast<T*>(0))) == 1;
82752 };
82753
82754 template <class T>
82755 struct is_default_policy_imp
82756 {
82757 static const bool value = sizeof(::boost::math::policies::detail::test_is_default_arg(static_cast<T*>(0))) == 1;
82758 };
82759
82760 template <class T> struct is_valid_policy
82761 : public mpl::bool_<
82762 ::boost::math::policies::detail::is_valid_policy_imp<T>::value>
82763 {};
82764
82765 template <class T> struct is_default_policy
82766 : public mpl::bool_<
82767 ::boost::math::policies::detail::is_default_policy_imp<T>::value>
82768 {
82769 template <class U>
82770 struct apply
82771 {
82772 typedef is_default_policy<U> type;
82773 };
82774 };
82775
82776 template <class Seq, class T, int N>
82777 struct append_N
82778 {
82779 typedef typename mpl::push_back<Seq, T>::type new_seq;
82780 typedef typename append_N<new_seq, T, N-1>::type type;
82781 };
82782
82783 template <class Seq, class T>
82784 struct append_N<Seq, T, 0>
82785 {
82786 typedef Seq type;
82787 };
82788
82789
82790
82791
82792
82793 template <bool f, bool d>
82794 struct default_args
82795 {
82796 typedef promote_float<false> arg1;
82797 typedef promote_double<false> arg2;
82798 };
82799
82800 template <>
82801 struct default_args<false, false>
82802 {
82803 typedef default_policy arg1;
82804 typedef default_policy arg2;
82805 };
82806
82807 template <>
82808 struct default_args<true, false>
82809 {
82810 typedef promote_float<false> arg1;
82811 typedef default_policy arg2;
82812 };
82813
82814 template <>
82815 struct default_args<false, true>
82816 {
82817 typedef promote_double<false> arg1;
82818 typedef default_policy arg2;
82819 };
82820
82821 typedef default_args<true, true>::arg1 forwarding_arg1;
82822 typedef default_args<true, true>::arg2 forwarding_arg2;
82823
82824 }
82825
82826
82827
82828
82829 template <class A1 = default_policy,
82830 class A2 = default_policy,
82831 class A3 = default_policy,
82832 class A4 = default_policy,
82833 class A5 = default_policy,
82834 class A6 = default_policy,
82835 class A7 = default_policy,
82836 class A8 = default_policy,
82837 class A9 = default_policy,
82838 class A10 = default_policy,
82839 class A11 = default_policy,
82840 class A12 = default_policy,
82841 class A13 = default_policy>
82842 struct policy
82843 {
82844 private:
82845
82846
82847
82848 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A1>::value) == 0 ? false : true) >)> boost_static_assert_typedef_387;
82849 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A2>::value) == 0 ? false : true) >)> boost_static_assert_typedef_388;
82850 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A3>::value) == 0 ? false : true) >)> boost_static_assert_typedef_389;
82851 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A4>::value) == 0 ? false : true) >)> boost_static_assert_typedef_390;
82852 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A5>::value) == 0 ? false : true) >)> boost_static_assert_typedef_391;
82853 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A6>::value) == 0 ? false : true) >)> boost_static_assert_typedef_392;
82854 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A7>::value) == 0 ? false : true) >)> boost_static_assert_typedef_393;
82855 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A8>::value) == 0 ? false : true) >)> boost_static_assert_typedef_394;
82856 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A9>::value) == 0 ? false : true) >)> boost_static_assert_typedef_395;
82857 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A10>::value) == 0 ? false : true) >)> boost_static_assert_typedef_396;
82858 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A11>::value) == 0 ? false : true) >)> boost_static_assert_typedef_397;
82859 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A12>::value) == 0 ? false : true) >)> boost_static_assert_typedef_398;
82860 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::boost::math::policies::detail::is_valid_policy<A13>::value) == 0 ? false : true) >)> boost_static_assert_typedef_399;
82861
82862
82863
82864 typedef mpl::list<A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13> arg_list;
82865
82866 public:
82867 typedef typename detail::find_arg<arg_list, is_domain_error<mpl::_1>, domain_error<> >::type domain_error_type;
82868 typedef typename detail::find_arg<arg_list, is_pole_error<mpl::_1>, pole_error<> >::type pole_error_type;
82869 typedef typename detail::find_arg<arg_list, is_overflow_error<mpl::_1>, overflow_error<> >::type overflow_error_type;
82870 typedef typename detail::find_arg<arg_list, is_underflow_error<mpl::_1>, underflow_error<> >::type underflow_error_type;
82871 typedef typename detail::find_arg<arg_list, is_denorm_error<mpl::_1>, denorm_error<> >::type denorm_error_type;
82872 typedef typename detail::find_arg<arg_list, is_evaluation_error<mpl::_1>, evaluation_error<> >::type evaluation_error_type;
82873 typedef typename detail::find_arg<arg_list, is_rounding_error<mpl::_1>, rounding_error<> >::type rounding_error_type;
82874 typedef typename detail::find_arg<arg_list, is_indeterminate_result_error<mpl::_1>, indeterminate_result_error<> >::type indeterminate_result_error_type;
82875 private:
82876
82877
82878
82879 typedef typename detail::find_arg<arg_list, is_digits10<mpl::_1>, digits10<> >::type digits10_type;
82880 typedef typename detail::find_arg<arg_list, is_digits2<mpl::_1>, digits2<> >::type bits_precision_type;
82881 public:
82882 typedef typename detail::precision<digits10_type, bits_precision_type>::type precision_type;
82883
82884
82885
82886 typedef typename detail::find_arg<arg_list, is_promote_float<mpl::_1>, promote_float<> >::type promote_float_type;
82887 typedef typename detail::find_arg<arg_list, is_promote_double<mpl::_1>, promote_double<> >::type promote_double_type;
82888
82889
82890
82891 typedef typename detail::find_arg<arg_list, is_discrete_quantile<mpl::_1>, discrete_quantile<> >::type discrete_quantile_type;
82892
82893
82894
82895 typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, discrete_quantile<> >::type assert_undefined_type;
82896
82897
82898
82899 typedef typename detail::find_arg<arg_list, is_max_series_iterations<mpl::_1>, max_series_iterations<> >::type max_series_iterations_type;
82900 typedef typename detail::find_arg<arg_list, is_max_root_iterations<mpl::_1>, max_root_iterations<> >::type max_root_iterations_type;
82901 };
82902
82903
82904
82905
82906
82907 template <>
82908 struct policy<default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
82909 {
82910 public:
82911 typedef domain_error<> domain_error_type;
82912 typedef pole_error<> pole_error_type;
82913 typedef overflow_error<> overflow_error_type;
82914 typedef underflow_error<> underflow_error_type;
82915 typedef denorm_error<> denorm_error_type;
82916 typedef evaluation_error<> evaluation_error_type;
82917 typedef rounding_error<> rounding_error_type;
82918 typedef indeterminate_result_error<> indeterminate_result_error_type;
82919
82920 typedef digits2<> precision_type;
82921
82922
82923
82924 typedef promote_float<> promote_float_type;
82925 typedef promote_double<> promote_double_type;
82926 typedef discrete_quantile<> discrete_quantile_type;
82927 typedef assert_undefined<> assert_undefined_type;
82928 typedef max_series_iterations<> max_series_iterations_type;
82929 typedef max_root_iterations<> max_root_iterations_type;
82930 };
82931
82932 template <>
82933 struct policy<detail::forwarding_arg1, detail::forwarding_arg2, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
82934 {
82935 public:
82936 typedef domain_error<> domain_error_type;
82937 typedef pole_error<> pole_error_type;
82938 typedef overflow_error<> overflow_error_type;
82939 typedef underflow_error<> underflow_error_type;
82940 typedef denorm_error<> denorm_error_type;
82941 typedef evaluation_error<> evaluation_error_type;
82942 typedef rounding_error<> rounding_error_type;
82943 typedef indeterminate_result_error<> indeterminate_result_error_type;
82944
82945 typedef digits2<> precision_type;
82946
82947
82948
82949 typedef promote_float<false> promote_float_type;
82950 typedef promote_double<false> promote_double_type;
82951 typedef discrete_quantile<> discrete_quantile_type;
82952 typedef assert_undefined<> assert_undefined_type;
82953 typedef max_series_iterations<> max_series_iterations_type;
82954 typedef max_root_iterations<> max_root_iterations_type;
82955 };
82956
82957 template <class Policy,
82958 class A1 = default_policy,
82959 class A2 = default_policy,
82960 class A3 = default_policy,
82961 class A4 = default_policy,
82962 class A5 = default_policy,
82963 class A6 = default_policy,
82964 class A7 = default_policy,
82965 class A8 = default_policy,
82966 class A9 = default_policy,
82967 class A10 = default_policy,
82968 class A11 = default_policy,
82969 class A12 = default_policy,
82970 class A13 = default_policy>
82971 struct normalise
82972 {
82973 private:
82974 typedef mpl::list<A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13> arg_list;
82975 typedef typename detail::find_arg<arg_list, is_domain_error<mpl::_1>, typename Policy::domain_error_type >::type domain_error_type;
82976 typedef typename detail::find_arg<arg_list, is_pole_error<mpl::_1>, typename Policy::pole_error_type >::type pole_error_type;
82977 typedef typename detail::find_arg<arg_list, is_overflow_error<mpl::_1>, typename Policy::overflow_error_type >::type overflow_error_type;
82978 typedef typename detail::find_arg<arg_list, is_underflow_error<mpl::_1>, typename Policy::underflow_error_type >::type underflow_error_type;
82979 typedef typename detail::find_arg<arg_list, is_denorm_error<mpl::_1>, typename Policy::denorm_error_type >::type denorm_error_type;
82980 typedef typename detail::find_arg<arg_list, is_evaluation_error<mpl::_1>, typename Policy::evaluation_error_type >::type evaluation_error_type;
82981 typedef typename detail::find_arg<arg_list, is_rounding_error<mpl::_1>, typename Policy::rounding_error_type >::type rounding_error_type;
82982 typedef typename detail::find_arg<arg_list, is_indeterminate_result_error<mpl::_1>, typename Policy::indeterminate_result_error_type >::type indeterminate_result_error_type;
82983
82984
82985
82986 typedef typename detail::find_arg<arg_list, is_digits10<mpl::_1>, digits10<> >::type digits10_type;
82987 typedef typename detail::find_arg<arg_list, is_digits2<mpl::_1>, typename Policy::precision_type >::type bits_precision_type;
82988 typedef typename detail::precision<digits10_type, bits_precision_type>::type precision_type;
82989
82990
82991
82992 typedef typename detail::find_arg<arg_list, is_promote_float<mpl::_1>, typename Policy::promote_float_type >::type promote_float_type;
82993 typedef typename detail::find_arg<arg_list, is_promote_double<mpl::_1>, typename Policy::promote_double_type >::type promote_double_type;
82994
82995
82996
82997 typedef typename detail::find_arg<arg_list, is_discrete_quantile<mpl::_1>, typename Policy::discrete_quantile_type >::type discrete_quantile_type;
82998
82999
83000
83001 typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, discrete_quantile<> >::type assert_undefined_type;
83002
83003
83004
83005 typedef typename detail::find_arg<arg_list, is_max_series_iterations<mpl::_1>, max_series_iterations<> >::type max_series_iterations_type;
83006 typedef typename detail::find_arg<arg_list, is_max_root_iterations<mpl::_1>, max_root_iterations<> >::type max_root_iterations_type;
83007
83008
83009
83010 typedef mpl::vector<
83011 domain_error_type,
83012 pole_error_type,
83013 overflow_error_type,
83014 underflow_error_type,
83015 denorm_error_type,
83016 evaluation_error_type,
83017 rounding_error_type,
83018 indeterminate_result_error_type,
83019 precision_type,
83020 promote_float_type,
83021 promote_double_type,
83022 discrete_quantile_type,
83023 assert_undefined_type,
83024 max_series_iterations_type,
83025 max_root_iterations_type> result_list;
83026
83027
83028
83029 typedef typename mpl::remove_if<result_list, detail::is_default_policy<mpl::_> >::type reduced_list;
83030
83031
83032
83033 typedef typename detail::append_N<reduced_list, default_policy, (14 - ::boost::mpl::size<reduced_list>::value)>::type result_type;
83034 public:
83035 typedef policy<
83036 typename mpl::at<result_type, mpl::int_<0> >::type,
83037 typename mpl::at<result_type, mpl::int_<1> >::type,
83038 typename mpl::at<result_type, mpl::int_<2> >::type,
83039 typename mpl::at<result_type, mpl::int_<3> >::type,
83040 typename mpl::at<result_type, mpl::int_<4> >::type,
83041 typename mpl::at<result_type, mpl::int_<5> >::type,
83042 typename mpl::at<result_type, mpl::int_<6> >::type,
83043 typename mpl::at<result_type, mpl::int_<7> >::type,
83044 typename mpl::at<result_type, mpl::int_<8> >::type,
83045 typename mpl::at<result_type, mpl::int_<9> >::type,
83046 typename mpl::at<result_type, mpl::int_<10> >::type,
83047 typename mpl::at<result_type, mpl::int_<11> >::type,
83048 typename mpl::at<result_type, mpl::int_<12> >::type > type;
83049 };
83050
83051
83052
83053 template <>
83054 struct normalise<policy<>,
83055 promote_float<false>,
83056 promote_double<false>,
83057 discrete_quantile<>,
83058 assert_undefined<>,
83059 default_policy,
83060 default_policy,
83061 default_policy,
83062 default_policy,
83063 default_policy,
83064 default_policy,
83065 default_policy>
83066 {
83067 typedef policy<detail::forwarding_arg1, detail::forwarding_arg2> type;
83068 };
83069
83070 template <>
83071 struct normalise<policy<detail::forwarding_arg1, detail::forwarding_arg2>,
83072 promote_float<false>,
83073 promote_double<false>,
83074 discrete_quantile<>,
83075 assert_undefined<>,
83076 default_policy,
83077 default_policy,
83078 default_policy,
83079 default_policy,
83080 default_policy,
83081 default_policy,
83082 default_policy>
83083 {
83084 typedef policy<detail::forwarding_arg1, detail::forwarding_arg2> type;
83085 };
83086
83087 inline policy<> make_policy()
83088 { return policy<>(); }
83089
83090 template <class A1>
83091 inline typename normalise<policy<>, A1>::type make_policy(const A1&)
83092 {
83093 typedef typename normalise<policy<>, A1>::type result_type;
83094 return result_type();
83095 }
83096
83097 template <class A1, class A2>
83098 inline typename normalise<policy<>, A1, A2>::type make_policy(const A1&, const A2&)
83099 {
83100 typedef typename normalise<policy<>, A1, A2>::type result_type;
83101 return result_type();
83102 }
83103
83104 template <class A1, class A2, class A3>
83105 inline typename normalise<policy<>, A1, A2, A3>::type make_policy(const A1&, const A2&, const A3&)
83106 {
83107 typedef typename normalise<policy<>, A1, A2, A3>::type result_type;
83108 return result_type();
83109 }
83110
83111 template <class A1, class A2, class A3, class A4>
83112 inline typename normalise<policy<>, A1, A2, A3, A4>::type make_policy(const A1&, const A2&, const A3&, const A4&)
83113 {
83114 typedef typename normalise<policy<>, A1, A2, A3, A4>::type result_type;
83115 return result_type();
83116 }
83117
83118 template <class A1, class A2, class A3, class A4, class A5>
83119 inline typename normalise<policy<>, A1, A2, A3, A4, A5>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&)
83120 {
83121 typedef typename normalise<policy<>, A1, A2, A3, A4, A5>::type result_type;
83122 return result_type();
83123 }
83124
83125 template <class A1, class A2, class A3, class A4, class A5, class A6>
83126 inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&)
83127 {
83128 typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
83129 return result_type();
83130 }
83131
83132 template <class A1, class A2, class A3, class A4, class A5, class A6, class A7>
83133 inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&)
83134 {
83135 typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7>::type result_type;
83136 return result_type();
83137 }
83138
83139 template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
83140 inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&)
83141 {
83142 typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8>::type result_type;
83143 return result_type();
83144 }
83145
83146 template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
83147 inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&)
83148 {
83149 typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type result_type;
83150 return result_type();
83151 }
83152
83153 template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
83154 inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&, const A10&)
83155 {
83156 typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type result_type;
83157 return result_type();
83158 }
83159
83160 template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
83161 inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&, const A10&, const A11&)
83162 {
83163 typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type result_type;
83164 return result_type();
83165 }
83166
83167
83168
83169
83170 template <class Real, class Policy>
83171 struct evaluation
83172 {
83173 typedef Real type;
83174 };
83175
83176 template <class Policy>
83177 struct evaluation<float, Policy>
83178 {
83179 typedef typename mpl::if_<typename Policy::promote_float_type, double, float>::type type;
83180 };
83181
83182 template <class Policy>
83183 struct evaluation<double, Policy>
83184 {
83185 typedef typename mpl::if_<typename Policy::promote_double_type, long double, double>::type type;
83186 };
83187 # 776 "../boost/math/policies/policy.hpp"
83188 template <class Real, class Policy>
83189 struct precision
83190 {
83191 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (((::std::numeric_limits<Real>::radix == 2) || ((::std::numeric_limits<Real>::is_specialized == 0) || (::std::numeric_limits<Real>::digits == 0))) == 0 ? false : true) >)> boost_static_assert_typedef_779;
83192
83193 typedef typename Policy::precision_type precision_type;
83194 typedef typename mpl::if_c<
83195 ((::std::numeric_limits<Real>::is_specialized == 0) || (::std::numeric_limits<Real>::digits == 0)),
83196
83197 precision_type,
83198 typename mpl::if_c<
83199 ((::std::numeric_limits<Real>::digits <= precision_type::value)
83200 || (Policy::precision_type::value <= 0)),
83201
83202 digits2< ::std::numeric_limits<Real>::digits>,
83203
83204 precision_type
83205 >::type
83206 >::type type;
83207 # 812 "../boost/math/policies/policy.hpp"
83208 };
83209
83210
83211
83212 namespace detail{
83213
83214 template <class T, class Policy>
83215 inline int digits_imp(mpl::true_ const&)
83216 {
83217
83218 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::std::numeric_limits<T>::is_specialized) == 0 ? false : true) >)> boost_static_assert_typedef_822;
83219
83220
83221
83222 typedef typename boost::math::policies::precision<T, Policy>::type p_t;
83223 return p_t::value;
83224 }
83225
83226 template <class T, class Policy>
83227 inline int digits_imp(mpl::false_ const&)
83228 {
83229 return tools::digits<T>();
83230 }
83231
83232 }
83233
83234 template <class T, class Policy>
83235 inline int digits()
83236 {
83237 typedef mpl::bool_< std::numeric_limits<T>::is_specialized > tag_type;
83238 return detail::digits_imp<T, Policy>(tag_type());
83239 }
83240
83241 template <class Policy>
83242 inline unsigned long get_max_series_iterations()
83243 {
83244 typedef typename Policy::max_series_iterations_type iter_type;
83245 return iter_type::value;
83246 }
83247
83248 template <class Policy>
83249 inline unsigned long get_max_root_iterations()
83250 {
83251 typedef typename Policy::max_root_iterations_type iter_type;
83252 return iter_type::value;
83253 }
83254
83255 namespace detail{
83256
83257 template <class T, class Digits, class Small, class Default>
83258 struct series_factor_calc
83259 {
83260 static T get()
83261 {
83262 return ldexp(T(1.0), 1 - Digits::value);
83263 }
83264 };
83265
83266 template <class T, class Digits>
83267 struct series_factor_calc<T, Digits, mpl::true_, mpl::true_>
83268 {
83269 static T get()
83270 {
83271 return boost::math::tools::epsilon<T>();
83272 }
83273 };
83274 template <class T, class Digits>
83275 struct series_factor_calc<T, Digits, mpl::true_, mpl::false_>
83276 {
83277 static T get()
83278 {
83279 static const boost::uintmax_t v = static_cast<boost::uintmax_t>(1u) << (Digits::value - 1);
83280 return 1 / static_cast<T>(v);
83281 }
83282 };
83283 template <class T, class Digits>
83284 struct series_factor_calc<T, Digits, mpl::false_, mpl::true_>
83285 {
83286 static T get()
83287 {
83288 return boost::math::tools::epsilon<T>();
83289 }
83290 };
83291
83292 template <class T, class Policy>
83293 inline T get_epsilon_imp(mpl::true_ const&)
83294 {
83295
83296 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::std::numeric_limits<T>::is_specialized) == 0 ? false : true) >)> boost_static_assert_typedef_900;
83297 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((::std::numeric_limits<T>::radix == 2) == 0 ? false : true) >)> boost_static_assert_typedef_901;
83298
83299
83300
83301
83302 typedef typename boost::math::policies::precision<T, Policy>::type p_t;
83303 typedef mpl::bool_<p_t::value <= std::numeric_limits<boost::uintmax_t>::digits> is_small_int;
83304 typedef mpl::bool_<p_t::value >= std::numeric_limits<T>::digits> is_default_value;
83305 return series_factor_calc<T, p_t, is_small_int, is_default_value>::get();
83306 }
83307
83308 template <class T, class Policy>
83309 inline T get_epsilon_imp(mpl::false_ const&)
83310 {
83311 return tools::epsilon<T>();
83312 }
83313
83314 }
83315
83316 template <class T, class Policy>
83317 inline T get_epsilon()
83318 {
83319 typedef mpl::bool_< (std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::radix == 2)) > tag_type;
83320 return detail::get_epsilon_imp<T, Policy>(tag_type());
83321 }
83322
83323 namespace detail{
83324
83325 template <class A1,
83326 class A2,
83327 class A3,
83328 class A4,
83329 class A5,
83330 class A6,
83331 class A7,
83332 class A8,
83333 class A9,
83334 class A10,
83335 class A11>
83336 char test_is_policy(const policy<A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11>*);
83337 double test_is_policy(...);
83338
83339 template <class P>
83340 struct is_policy_imp
83341 {
83342 static const bool value = (sizeof(::boost::math::policies::detail::test_is_policy(static_cast<P*>(0))) == 1);
83343 };
83344
83345 }
83346
83347 template <class P>
83348 struct is_policy : public mpl::bool_< ::boost::math::policies::detail::is_policy_imp<P>::value> {};
83349
83350
83351
83352
83353 template <class Policy>
83354 struct constructor_error_check
83355 {
83356 typedef typename Policy::domain_error_type domain_error_type;
83357 typedef typename mpl::if_c<
83358 (domain_error_type::value == throw_on_error) || (domain_error_type::value == user_error),
83359 mpl::true_,
83360 mpl::false_>::type type;
83361 };
83362
83363 template <class Policy>
83364 struct method_error_check
83365 {
83366 typedef typename Policy::domain_error_type domain_error_type;
83367 typedef typename mpl::if_c<
83368 (domain_error_type::value == throw_on_error) && (domain_error_type::value != user_error),
83369 mpl::false_,
83370 mpl::true_>::type type;
83371 };
83372
83373 }}}
83374 # 29 "../boost/math/special_functions/math_fwd.hpp" 2
83375
83376 # 1 "../boost/config/no_tr1/complex.hpp" 1
83377 # 31 "../boost/math/special_functions/math_fwd.hpp" 2
83378
83379
83380
83381 namespace boost
83382 {
83383 namespace math
83384 {
83385
83386
83387 template <class RT1, class RT2>
83388 typename tools::promote_args<RT1, RT2>::type
83389 beta(RT1 a, RT2 b);
83390
83391 template <class RT1, class RT2, class A>
83392 typename tools::promote_args<RT1, RT2, A>::type
83393 beta(RT1 a, RT2 b, A x);
83394
83395 template <class RT1, class RT2, class RT3, class Policy>
83396 typename tools::promote_args<RT1, RT2, RT3>::type
83397 beta(RT1 a, RT2 b, RT3 x, const Policy& pol);
83398
83399 template <class RT1, class RT2, class RT3>
83400 typename tools::promote_args<RT1, RT2, RT3>::type
83401 betac(RT1 a, RT2 b, RT3 x);
83402
83403 template <class RT1, class RT2, class RT3, class Policy>
83404 typename tools::promote_args<RT1, RT2, RT3>::type
83405 betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
83406
83407 template <class RT1, class RT2, class RT3>
83408 typename tools::promote_args<RT1, RT2, RT3>::type
83409 ibeta(RT1 a, RT2 b, RT3 x);
83410
83411 template <class RT1, class RT2, class RT3, class Policy>
83412 typename tools::promote_args<RT1, RT2, RT3>::type
83413 ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol);
83414
83415 template <class RT1, class RT2, class RT3>
83416 typename tools::promote_args<RT1, RT2, RT3>::type
83417 ibetac(RT1 a, RT2 b, RT3 x);
83418
83419 template <class RT1, class RT2, class RT3, class Policy>
83420 typename tools::promote_args<RT1, RT2, RT3>::type
83421 ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol);
83422
83423 template <class T1, class T2, class T3, class T4>
83424 typename tools::promote_args<T1, T2, T3, T4>::type
83425 ibeta_inv(T1 a, T2 b, T3 p, T4* py);
83426
83427 template <class T1, class T2, class T3, class T4, class Policy>
83428 typename tools::promote_args<T1, T2, T3, T4>::type
83429 ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
83430
83431 template <class RT1, class RT2, class RT3>
83432 typename tools::promote_args<RT1, RT2, RT3>::type
83433 ibeta_inv(RT1 a, RT2 b, RT3 p);
83434
83435 template <class RT1, class RT2, class RT3, class Policy>
83436 typename tools::promote_args<RT1, RT2, RT3>::type
83437 ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&);
83438
83439 template <class RT1, class RT2, class RT3>
83440 typename tools::promote_args<RT1, RT2, RT3>::type
83441 ibeta_inva(RT1 a, RT2 b, RT3 p);
83442
83443 template <class RT1, class RT2, class RT3, class Policy>
83444 typename tools::promote_args<RT1, RT2, RT3>::type
83445 ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&);
83446
83447 template <class RT1, class RT2, class RT3>
83448 typename tools::promote_args<RT1, RT2, RT3>::type
83449 ibeta_invb(RT1 a, RT2 b, RT3 p);
83450
83451 template <class RT1, class RT2, class RT3, class Policy>
83452 typename tools::promote_args<RT1, RT2, RT3>::type
83453 ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&);
83454
83455 template <class T1, class T2, class T3, class T4>
83456 typename tools::promote_args<T1, T2, T3, T4>::type
83457 ibetac_inv(T1 a, T2 b, T3 q, T4* py);
83458
83459 template <class T1, class T2, class T3, class T4, class Policy>
83460 typename tools::promote_args<T1, T2, T3, T4>::type
83461 ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
83462
83463 template <class RT1, class RT2, class RT3>
83464 typename tools::promote_args<RT1, RT2, RT3>::type
83465 ibetac_inv(RT1 a, RT2 b, RT3 q);
83466
83467 template <class RT1, class RT2, class RT3, class Policy>
83468 typename tools::promote_args<RT1, RT2, RT3>::type
83469 ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&);
83470
83471 template <class RT1, class RT2, class RT3>
83472 typename tools::promote_args<RT1, RT2, RT3>::type
83473 ibetac_inva(RT1 a, RT2 b, RT3 q);
83474
83475 template <class RT1, class RT2, class RT3, class Policy>
83476 typename tools::promote_args<RT1, RT2, RT3>::type
83477 ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&);
83478
83479 template <class RT1, class RT2, class RT3>
83480 typename tools::promote_args<RT1, RT2, RT3>::type
83481 ibetac_invb(RT1 a, RT2 b, RT3 q);
83482
83483 template <class RT1, class RT2, class RT3, class Policy>
83484 typename tools::promote_args<RT1, RT2, RT3>::type
83485 ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&);
83486
83487 template <class RT1, class RT2, class RT3>
83488 typename tools::promote_args<RT1, RT2, RT3>::type
83489 ibeta_derivative(RT1 a, RT2 b, RT3 x);
83490
83491 template <class RT1, class RT2, class RT3, class Policy>
83492 typename tools::promote_args<RT1, RT2, RT3>::type
83493 ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol);
83494
83495
83496 template <class RT>
83497 typename tools::promote_args<RT>::type erf(RT z);
83498 template <class RT, class Policy>
83499 typename tools::promote_args<RT>::type erf(RT z, const Policy&);
83500
83501 template <class RT>
83502 typename tools::promote_args<RT>::type erfc(RT z);
83503 template <class RT, class Policy>
83504 typename tools::promote_args<RT>::type erfc(RT z, const Policy&);
83505
83506 template <class RT>
83507 typename tools::promote_args<RT>::type erf_inv(RT z);
83508 template <class RT, class Policy>
83509 typename tools::promote_args<RT>::type erf_inv(RT z, const Policy& pol);
83510
83511 template <class RT>
83512 typename tools::promote_args<RT>::type erfc_inv(RT z);
83513 template <class RT, class Policy>
83514 typename tools::promote_args<RT>::type erfc_inv(RT z, const Policy& pol);
83515
83516
83517 template <class T1, class T2, class T3>
83518 typename tools::promote_args<T1, T2, T3>::type
83519 legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
83520
83521 template <class T>
83522 typename tools::promote_args<T>::type
83523 legendre_p(int l, T x);
83524
83525 template <class T, class Policy>
83526 typename tools::promote_args<T>::type
83527 legendre_p(int l, T x, const Policy& pol);
83528
83529 template <class T>
83530 typename tools::promote_args<T>::type
83531 legendre_q(unsigned l, T x);
83532
83533 template <class T, class Policy>
83534 typename tools::promote_args<T>::type
83535 legendre_q(unsigned l, T x, const Policy& pol);
83536
83537 template <class T1, class T2, class T3>
83538 typename tools::promote_args<T1, T2, T3>::type
83539 legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
83540
83541 template <class T>
83542 typename tools::promote_args<T>::type
83543 legendre_p(int l, int m, T x);
83544
83545 template <class T, class Policy>
83546 typename tools::promote_args<T>::type
83547 legendre_p(int l, int m, T x, const Policy& pol);
83548
83549 template <class T1, class T2, class T3>
83550 typename tools::promote_args<T1, T2, T3>::type
83551 laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
83552
83553 template <class T1, class T2, class T3>
83554 typename tools::promote_args<T1, T2, T3>::type
83555 laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
83556
83557 template <class T>
83558 typename tools::promote_args<T>::type
83559 laguerre(unsigned n, T x);
83560
83561 template <class T, class Policy>
83562 typename tools::promote_args<T>::type
83563 laguerre(unsigned n, unsigned m, T x, const Policy& pol);
83564
83565 template <class T1, class T2>
83566 struct laguerre_result
83567 {
83568 typedef typename mpl::if_<
83569 policies::is_policy<T2>,
83570 typename tools::promote_args<T1>::type,
83571 typename tools::promote_args<T2>::type
83572 >::type type;
83573 };
83574
83575 template <class T1, class T2>
83576 typename laguerre_result<T1, T2>::type
83577 laguerre(unsigned n, T1 m, T2 x);
83578
83579 template <class T>
83580 typename tools::promote_args<T>::type
83581 hermite(unsigned n, T x);
83582
83583 template <class T, class Policy>
83584 typename tools::promote_args<T>::type
83585 hermite(unsigned n, T x, const Policy& pol);
83586
83587 template <class T1, class T2, class T3>
83588 typename tools::promote_args<T1, T2, T3>::type
83589 hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
83590
83591 template <class T1, class T2>
83592 std::complex<typename tools::promote_args<T1, T2>::type>
83593 spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
83594
83595 template <class T1, class T2, class Policy>
83596 std::complex<typename tools::promote_args<T1, T2>::type>
83597 spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
83598
83599 template <class T1, class T2>
83600 typename tools::promote_args<T1, T2>::type
83601 spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
83602
83603 template <class T1, class T2, class Policy>
83604 typename tools::promote_args<T1, T2>::type
83605 spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
83606
83607 template <class T1, class T2>
83608 typename tools::promote_args<T1, T2>::type
83609 spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
83610
83611 template <class T1, class T2, class Policy>
83612 typename tools::promote_args<T1, T2>::type
83613 spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
83614
83615
83616 template <class T1, class T2, class T3>
83617 typename tools::promote_args<T1, T2, T3>::type
83618 ellint_rf(T1 x, T2 y, T3 z);
83619
83620 template <class T1, class T2, class T3, class Policy>
83621 typename tools::promote_args<T1, T2, T3>::type
83622 ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
83623
83624 template <class T1, class T2, class T3>
83625 typename tools::promote_args<T1, T2, T3>::type
83626 ellint_rd(T1 x, T2 y, T3 z);
83627
83628 template <class T1, class T2, class T3, class Policy>
83629 typename tools::promote_args<T1, T2, T3>::type
83630 ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
83631
83632 template <class T1, class T2>
83633 typename tools::promote_args<T1, T2>::type
83634 ellint_rc(T1 x, T2 y);
83635
83636 template <class T1, class T2, class Policy>
83637 typename tools::promote_args<T1, T2>::type
83638 ellint_rc(T1 x, T2 y, const Policy& pol);
83639
83640 template <class T1, class T2, class T3, class T4>
83641 typename tools::promote_args<T1, T2, T3, T4>::type
83642 ellint_rj(T1 x, T2 y, T3 z, T4 p);
83643
83644 template <class T1, class T2, class T3, class T4, class Policy>
83645 typename tools::promote_args<T1, T2, T3, T4>::type
83646 ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
83647
83648 template <typename T>
83649 typename tools::promote_args<T>::type ellint_2(T k);
83650
83651 template <class T1, class T2>
83652 typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi);
83653
83654 template <class T1, class T2, class Policy>
83655 typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol);
83656
83657 template <typename T>
83658 typename tools::promote_args<T>::type ellint_1(T k);
83659
83660 template <class T1, class T2>
83661 typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi);
83662
83663 template <class T1, class T2, class Policy>
83664 typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol);
83665
83666 namespace detail{
83667
83668 template <class T, class U, class V>
83669 struct ellint_3_result
83670 {
83671 typedef typename mpl::if_<
83672 policies::is_policy<V>,
83673 typename tools::promote_args<T, U>::type,
83674 typename tools::promote_args<T, U, V>::type
83675 >::type type;
83676 };
83677
83678 }
83679
83680
83681 template <class T1, class T2, class T3>
83682 typename detail::ellint_3_result<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi);
83683
83684 template <class T1, class T2, class T3, class Policy>
83685 typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol);
83686
83687 template <class T1, class T2>
83688 typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v);
83689
83690
83691
83692 template <class RT>
83693 struct max_factorial;
83694 template <class RT>
83695 RT factorial(unsigned int);
83696 template <class RT, class Policy>
83697 RT factorial(unsigned int, const Policy& pol);
83698 template <class RT>
83699 RT unchecked_factorial(unsigned int );
83700 template <class RT>
83701 RT double_factorial(unsigned i);
83702 template <class RT, class Policy>
83703 RT double_factorial(unsigned i, const Policy& pol);
83704
83705 template <class RT>
83706 typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n);
83707
83708 template <class RT, class Policy>
83709 typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n, const Policy& pol);
83710
83711 template <class RT>
83712 typename tools::promote_args<RT>::type rising_factorial(RT x, int n);
83713
83714 template <class RT, class Policy>
83715 typename tools::promote_args<RT>::type rising_factorial(RT x, int n, const Policy& pol);
83716
83717
83718 template <class RT>
83719 typename tools::promote_args<RT>::type tgamma(RT z);
83720
83721 template <class RT>
83722 typename tools::promote_args<RT>::type tgamma1pm1(RT z);
83723
83724 template <class RT, class Policy>
83725 typename tools::promote_args<RT>::type tgamma1pm1(RT z, const Policy& pol);
83726
83727 template <class RT1, class RT2>
83728 typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z);
83729
83730 template <class RT1, class RT2, class Policy>
83731 typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z, const Policy& pol);
83732
83733 template <class RT>
83734 typename tools::promote_args<RT>::type lgamma(RT z, int* sign);
83735
83736 template <class RT, class Policy>
83737 typename tools::promote_args<RT>::type lgamma(RT z, int* sign, const Policy& pol);
83738
83739 template <class RT>
83740 typename tools::promote_args<RT>::type lgamma(RT x);
83741
83742 template <class RT, class Policy>
83743 typename tools::promote_args<RT>::type lgamma(RT x, const Policy& pol);
83744
83745 template <class RT1, class RT2>
83746 typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z);
83747
83748 template <class RT1, class RT2, class Policy>
83749 typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z, const Policy&);
83750
83751 template <class RT1, class RT2>
83752 typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z);
83753
83754 template <class RT1, class RT2, class Policy>
83755 typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z, const Policy&);
83756
83757 template <class RT1, class RT2>
83758 typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z);
83759
83760 template <class RT1, class RT2, class Policy>
83761 typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z, const Policy&);
83762
83763 template <class T1, class T2>
83764 typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta);
83765
83766 template <class T1, class T2, class Policy>
83767 typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta, const Policy&);
83768
83769 template <class T1, class T2>
83770 typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b);
83771
83772 template <class T1, class T2, class Policy>
83773 typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b, const Policy&);
83774
83775 template <class T1, class T2>
83776 typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x);
83777
83778 template <class T1, class T2, class Policy>
83779 typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x, const Policy&);
83780
83781
83782 template <class T1, class T2>
83783 typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p);
83784
83785 template <class T1, class T2, class Policy>
83786 typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p, const Policy&);
83787
83788 template <class T1, class T2>
83789 typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p);
83790
83791 template <class T1, class T2, class Policy>
83792 typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p, const Policy&);
83793
83794 template <class T1, class T2>
83795 typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q);
83796
83797 template <class T1, class T2, class Policy>
83798 typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q, const Policy&);
83799
83800 template <class T1, class T2>
83801 typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q);
83802
83803 template <class T1, class T2, class Policy>
83804 typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q, const Policy&);
83805
83806
83807 template <class T>
83808 typename tools::promote_args<T>::type digamma(T x);
83809
83810 template <class T, class Policy>
83811 typename tools::promote_args<T>::type digamma(T x, const Policy&);
83812
83813
83814 template <class T1, class T2>
83815 typename tools::promote_args<T1, T2>::type
83816 hypot(T1 x, T2 y);
83817
83818 template <class T1, class T2, class Policy>
83819 typename tools::promote_args<T1, T2>::type
83820 hypot(T1 x, T2 y, const Policy&);
83821
83822
83823 template <class RT>
83824 typename tools::promote_args<RT>::type cbrt(RT z);
83825
83826 template <class RT, class Policy>
83827 typename tools::promote_args<RT>::type cbrt(RT z, const Policy&);
83828
83829
83830 template <class T>
83831 typename tools::promote_args<T>::type log1p(T);
83832
83833 template <class T, class Policy>
83834 typename tools::promote_args<T>::type log1p(T, const Policy&);
83835
83836
83837 template <class T>
83838 typename tools::promote_args<T>::type log1pmx(T);
83839
83840 template <class T, class Policy>
83841 typename tools::promote_args<T>::type log1pmx(T, const Policy&);
83842
83843
83844 template <class T>
83845 typename tools::promote_args<T>::type expm1(T);
83846
83847 template <class T, class Policy>
83848 typename tools::promote_args<T>::type expm1(T, const Policy&);
83849
83850
83851 template <class T1, class T2>
83852 typename tools::promote_args<T1, T2>::type
83853 powm1(const T1 a, const T2 z);
83854
83855 template <class T1, class T2, class Policy>
83856 typename tools::promote_args<T1, T2>::type
83857 powm1(const T1 a, const T2 z, const Policy&);
83858
83859
83860 template <class T>
83861 typename tools::promote_args<T>::type sqrt1pm1(const T& val);
83862
83863 template <class T, class Policy>
83864 typename tools::promote_args<T>::type sqrt1pm1(const T& val, const Policy&);
83865
83866
83867 template <class T>
83868 typename tools::promote_args<T>::type sinc_pi(T x);
83869
83870 template <class T, class Policy>
83871 typename tools::promote_args<T>::type sinc_pi(T x, const Policy&);
83872
83873 template <class T>
83874 typename tools::promote_args<T>::type sinhc_pi(T x);
83875
83876 template <class T, class Policy>
83877 typename tools::promote_args<T>::type sinhc_pi(T x, const Policy&);
83878
83879
83880 template<typename T>
83881 typename tools::promote_args<T>::type asinh(T x);
83882
83883 template<typename T, class Policy>
83884 typename tools::promote_args<T>::type asinh(T x, const Policy&);
83885
83886 template<typename T>
83887 typename tools::promote_args<T>::type acosh(T x);
83888
83889 template<typename T, class Policy>
83890 typename tools::promote_args<T>::type acosh(T x, const Policy&);
83891
83892 template<typename T>
83893 typename tools::promote_args<T>::type atanh(T x);
83894
83895 template<typename T, class Policy>
83896 typename tools::promote_args<T>::type atanh(T x, const Policy&);
83897
83898 namespace detail{
83899
83900 typedef mpl::int_<0> bessel_no_int_tag;
83901 typedef mpl::int_<1> bessel_maybe_int_tag;
83902 typedef mpl::int_<2> bessel_int_tag;
83903
83904 template <class T1, class T2, class Policy>
83905 struct bessel_traits
83906 {
83907 typedef typename tools::promote_args<
83908 T1, T2
83909 >::type result_type;
83910
83911 typedef typename policies::precision<result_type, Policy>::type precision_type;
83912
83913 typedef typename mpl::if_<
83914 mpl::or_<
83915 mpl::less_equal<precision_type, mpl::int_<0> >,
83916 mpl::greater<precision_type, mpl::int_<64> > >,
83917 bessel_no_int_tag,
83918 typename mpl::if_<
83919 is_integral<T1>,
83920 bessel_int_tag,
83921 bessel_maybe_int_tag
83922 >::type
83923 >::type optimisation_tag;
83924 };
83925 }
83926
83927
83928 template <class T1, class T2, class Policy>
83929 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j(T1 v, T2 x, const Policy& pol);
83930
83931 template <class T1, class T2>
83932 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j(T1 v, T2 x);
83933
83934 template <class T, class Policy>
83935 typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel(unsigned v, T x, const Policy& pol);
83936
83937 template <class T>
83938 typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x);
83939
83940 template <class T1, class T2, class Policy>
83941 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i(T1 v, T2 x, const Policy& pol);
83942
83943 template <class T1, class T2>
83944 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i(T1 v, T2 x);
83945
83946 template <class T1, class T2, class Policy>
83947 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k(T1 v, T2 x, const Policy& pol);
83948
83949 template <class T1, class T2>
83950 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k(T1 v, T2 x);
83951
83952 template <class T1, class T2, class Policy>
83953 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann(T1 v, T2 x, const Policy& pol);
83954
83955 template <class T1, class T2>
83956 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann(T1 v, T2 x);
83957
83958 template <class T, class Policy>
83959 typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann(unsigned v, T x, const Policy& pol);
83960
83961 template <class T>
83962 typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
83963
83964 template <class T, class Policy>
83965 typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
83966
83967 template <class T>
83968 typename tools::promote_args<T>::type sin_pi(T x);
83969
83970 template <class T, class Policy>
83971 typename tools::promote_args<T>::type cos_pi(T x, const Policy&);
83972
83973 template <class T>
83974 typename tools::promote_args<T>::type cos_pi(T x);
83975
83976 template <class T>
83977 int fpclassify (T t);
83978
83979 template <class T>
83980 bool isfinite (T z);
83981
83982 template <class T>
83983 bool isinf (T t);
83984
83985 template <class T>
83986 bool isnan (T t);
83987
83988 template <class T>
83989 bool isnormal (T t);
83990
83991 template<class T>
83992 int signbit (T x);
83993
83994 template <class T>
83995 int sign (const T& z);
83996
83997 template <class T>
83998 T copysign (const T& x, const T& y);
83999
84000 template <class T>
84001 T changesign (const T& z);
84002
84003
84004 namespace detail{
84005
84006 template <class T, class U>
84007 struct expint_result
84008 {
84009 typedef typename mpl::if_<
84010 policies::is_policy<U>,
84011 typename tools::promote_args<T>::type,
84012 typename tools::promote_args<U>::type
84013 >::type type;
84014 };
84015
84016 }
84017
84018 template <class T, class Policy>
84019 typename tools::promote_args<T>::type expint(unsigned n, T z, const Policy&);
84020
84021 template <class T, class U>
84022 typename detail::expint_result<T, U>::type expint(T const z, U const u);
84023
84024 template <class T>
84025 typename tools::promote_args<T>::type expint(T z);
84026
84027
84028 template <class T, class Policy>
84029 typename tools::promote_args<T>::type zeta(T s, const Policy&);
84030
84031 template <class T>
84032 typename tools::promote_args<T>::type zeta(T s);
84033
84034
84035 template <int N, typename T, class Policy>
84036 typename tools::promote_args<T>::type pow(T base, const Policy& policy);
84037
84038 template <int N, typename T>
84039 typename tools::promote_args<T>::type pow(T base);
84040
84041
84042 template <class T, class Policy>
84043 T nextafter(const T&, const T&, const Policy&);
84044 template <class T>
84045 T nextafter(const T&, const T&);
84046 template <class T, class Policy>
84047 T float_next(const T&, const Policy&);
84048 template <class T>
84049 T float_next(const T&);
84050 template <class T, class Policy>
84051 T float_prior(const T&, const Policy&);
84052 template <class T>
84053 T float_prior(const T&);
84054 template <class T, class Policy>
84055 T float_distance(const T&, const T&, const Policy&);
84056 template <class T>
84057 T float_distance(const T&, const T&);
84058
84059 }
84060 }
84061 # 18 "../boost/math/special_functions/sign.hpp" 2
84062 # 1 "../boost/math/special_functions/detail/fp_traits.hpp" 1
84063 # 23 "../boost/math/special_functions/detail/fp_traits.hpp"
84064 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 1 3
84065 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
84066
84067 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstring" 3
84068 # 24 "../boost/math/special_functions/detail/fp_traits.hpp" 2
84069
84070 # 1 "../boost/assert.hpp" 1
84071 # 50 "../boost/assert.hpp"
84072 # 1 "/usr/include/assert.h" 1 3 4
84073 # 51 "../boost/assert.hpp" 2
84074 # 26 "../boost/math/special_functions/detail/fp_traits.hpp" 2
84075 # 1 "../boost/cstdint.hpp" 1
84076 # 27 "../boost/math/special_functions/detail/fp_traits.hpp" 2
84077 # 1 "../boost/detail/endian.hpp" 1
84078 # 28 "../boost/math/special_functions/detail/fp_traits.hpp" 2
84079 # 81 "../boost/math/special_functions/detail/fp_traits.hpp"
84080 namespace boost {
84081 namespace math {
84082 namespace detail {
84083 # 92 "../boost/math/special_functions/detail/fp_traits.hpp"
84084 struct native_tag {};
84085 template <bool has_limits>
84086 struct generic_tag {};
84087 struct ieee_tag {};
84088 struct ieee_copy_all_bits_tag : public ieee_tag {};
84089 struct ieee_copy_leading_bits_tag : public ieee_tag {};
84090 # 125 "../boost/math/special_functions/detail/fp_traits.hpp"
84091 struct unknown_precision{};
84092 struct single_precision {};
84093 struct double_precision {};
84094 struct extended_double_precision {};
84095
84096
84097
84098 template<class T> struct fp_traits_native
84099 {
84100 typedef native_tag method;
84101 };
84102
84103
84104
84105 template<class T, class U> struct fp_traits_non_native
84106 {
84107
84108 typedef generic_tag<std::numeric_limits<T>::is_specialized> method;
84109
84110
84111
84112 };
84113 # 177 "../boost/math/special_functions/detail/fp_traits.hpp"
84114 template<> struct fp_traits_non_native<float, single_precision>
84115 {
84116 typedef ieee_copy_all_bits_tag method;
84117
84118 static const uint32_t sign = 0x80000000u;
84119 static const uint32_t exponent = 0x7f800000;
84120 static const uint32_t flag = 0x00000000;
84121 static const uint32_t significand = 0x007fffff;
84122
84123 typedef uint32_t bits;
84124 static void get_bits(float x, uint32_t& a) { std::memcpy(&a, &x, 4); }
84125 static void set_bits(float& x, uint32_t a) { std::memcpy(&x, &a, 4); }
84126 };
84127 # 232 "../boost/math/special_functions/detail/fp_traits.hpp"
84128 template<> struct fp_traits_non_native<double, double_precision>
84129 {
84130 typedef ieee_copy_all_bits_tag method;
84131
84132 static const uint64_t sign = ((uint64_t)0x80000000u) << 32;
84133 static const uint64_t exponent = ((uint64_t)0x7ff00000) << 32;
84134 static const uint64_t flag = 0;
84135 static const uint64_t significand
84136 = (((uint64_t)0x000fffff) << 32) + ((uint64_t)0xffffffffu);
84137
84138 typedef uint64_t bits;
84139 static void get_bits(double x, uint64_t& a) { std::memcpy(&a, &x, 8); }
84140 static void set_bits(double& x, uint64_t a) { std::memcpy(&x, &a, 8); }
84141 };
84142 # 292 "../boost/math/special_functions/detail/fp_traits.hpp"
84143 template<> struct fp_traits_non_native<long double, double_precision>
84144 {
84145 typedef ieee_copy_all_bits_tag method;
84146
84147 static const uint64_t sign = (uint64_t)0x80000000u << 32;
84148 static const uint64_t exponent = (uint64_t)0x7ff00000 << 32;
84149 static const uint64_t flag = 0;
84150 static const uint64_t significand
84151 = ((uint64_t)0x000fffff << 32) + (uint64_t)0xffffffffu;
84152
84153 typedef uint64_t bits;
84154 static void get_bits(long double x, uint64_t& a) { std::memcpy(&a, &x, 8); }
84155 static void set_bits(long double& x, uint64_t a) { std::memcpy(&x, &a, 8); }
84156 };
84157 # 318 "../boost/math/special_functions/detail/fp_traits.hpp"
84158 template<>
84159 struct fp_traits_non_native<long double, extended_double_precision>
84160 {
84161 typedef ieee_copy_leading_bits_tag method;
84162
84163 static const uint32_t sign = 0x80000000u;
84164 static const uint32_t exponent = 0x7fff0000;
84165 static const uint32_t flag = 0x00008000;
84166 static const uint32_t significand = 0x00007fff;
84167
84168 typedef uint32_t bits;
84169
84170 static void get_bits(long double x, uint32_t& a)
84171 {
84172 std::memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + 6, 4);
84173 }
84174
84175 static void set_bits(long double& x, uint32_t a)
84176 {
84177 std::memcpy(reinterpret_cast<unsigned char*>(&x) + 6, &a, 4);
84178 }
84179 };
84180 # 483 "../boost/math/special_functions/detail/fp_traits.hpp"
84181 template<int n, bool fp> struct size_to_precision
84182 {
84183 typedef unknown_precision type;
84184 };
84185
84186 template<> struct size_to_precision<4, true>
84187 {
84188 typedef single_precision type;
84189 };
84190
84191 template<> struct size_to_precision<8, true>
84192 {
84193 typedef double_precision type;
84194 };
84195
84196 template<> struct size_to_precision<10, true>
84197 {
84198 typedef extended_double_precision type;
84199 };
84200
84201 template<> struct size_to_precision<12, true>
84202 {
84203 typedef extended_double_precision type;
84204 };
84205
84206 template<> struct size_to_precision<16, true>
84207 {
84208 typedef extended_double_precision type;
84209 };
84210
84211
84212
84213
84214
84215
84216 template <class T>
84217 struct select_native
84218 {
84219 typedef typename size_to_precision<sizeof(T), ::boost::is_floating_point<T>::value>::type precision;
84220 typedef fp_traits_non_native<T, precision> type;
84221 };
84222 template<>
84223 struct select_native<float>
84224 {
84225 typedef fp_traits_native<float> type;
84226 };
84227 template<>
84228 struct select_native<double>
84229 {
84230 typedef fp_traits_native<double> type;
84231 };
84232 template<>
84233 struct select_native<long double>
84234 {
84235 typedef fp_traits_native<long double> type;
84236 };
84237 # 553 "../boost/math/special_functions/detail/fp_traits.hpp"
84238 template<class T> struct fp_traits
84239 {
84240 typedef typename size_to_precision<sizeof(T), ::boost::is_floating_point<T>::value>::type precision;
84241
84242 typedef typename select_native<T>::type type;
84243
84244
84245
84246 typedef fp_traits_non_native<T, precision> sign_change_type;
84247 };
84248
84249
84250
84251 }
84252 }
84253 }
84254 # 19 "../boost/math/special_functions/sign.hpp" 2
84255
84256 namespace boost{ namespace math{
84257
84258 namespace detail {
84259
84260
84261
84262
84263 template<class T>
84264 inline int signbit_impl(T x, native_tag const&)
84265 {
84266 return (std::signbit)(x);
84267 }
84268
84269
84270 template<class T>
84271 inline int signbit_impl(T x, generic_tag<true> const&)
84272 {
84273 return x < 0;
84274 }
84275
84276 template<class T>
84277 inline int signbit_impl(T x, generic_tag<false> const&)
84278 {
84279 return x < 0;
84280 }
84281
84282 template<class T>
84283 inline int signbit_impl(T x, ieee_copy_all_bits_tag const&)
84284 {
84285 typedef typename fp_traits<T>::type traits;
84286
84287 typename traits::bits a;
84288 traits::get_bits(x,a);
84289 return a & traits::sign ? 1 : 0;
84290 }
84291
84292 template<class T>
84293 inline int signbit_impl(T x, ieee_copy_leading_bits_tag const&)
84294 {
84295 typedef typename fp_traits<T>::type traits;
84296
84297 typename traits::bits a;
84298 traits::get_bits(x,a);
84299
84300 return a & traits::sign ? 1 : 0;
84301 }
84302
84303
84304
84305 template<class T>
84306 inline T (changesign_impl)(T x, generic_tag<true> const&)
84307 {
84308 return -x;
84309 }
84310
84311 template<class T>
84312 inline T (changesign_impl)(T x, generic_tag<false> const&)
84313 {
84314 return -x;
84315 }
84316
84317
84318 template<class T>
84319 inline T changesign_impl(T x, ieee_copy_all_bits_tag const&)
84320 {
84321 typedef typename fp_traits<T>::sign_change_type traits;
84322
84323 typename traits::bits a;
84324 traits::get_bits(x,a);
84325 a ^= traits::sign;
84326 traits::set_bits(x,a);
84327 return x;
84328 }
84329
84330 template<class T>
84331 inline T (changesign_impl)(T x, ieee_copy_leading_bits_tag const&)
84332 {
84333 typedef typename fp_traits<T>::sign_change_type traits;
84334
84335 typename traits::bits a;
84336 traits::get_bits(x,a);
84337 a ^= traits::sign;
84338 traits::set_bits(x,a);
84339 return x;
84340 }
84341
84342
84343 }
84344
84345 template<class T> int (signbit)(T x)
84346 {
84347 typedef typename detail::fp_traits<T>::type traits;
84348 typedef typename traits::method method;
84349 typedef typename boost::is_floating_point<T>::type fp_tag;
84350 return detail::signbit_impl(x, method());
84351 }
84352
84353 template <class T>
84354 inline int sign (const T& z)
84355 {
84356 return (z == 0) ? 0 : (boost::math::signbit)(z) ? -1 : 1;
84357 }
84358
84359 template<class T> T (changesign)(const T& x)
84360 {
84361 typedef typename detail::fp_traits<T>::sign_change_type traits;
84362 typedef typename traits::method method;
84363 typedef typename boost::is_floating_point<T>::type fp_tag;
84364
84365 return detail::changesign_impl(x, method());
84366 }
84367
84368 template <class T>
84369 inline T copysign (const T& x, const T& y)
84370 {
84371 using std::abs; using std::acos; using std::cos; using std::fmod; using std::modf; using std::tan; using std::asin; using std::cosh; using std::frexp; using std::pow; using std::tanh; using std::atan; using std::exp; using std::ldexp; using std::sin; using std::atan2; using std::fabs; using std::log; using std::sinh; using std::ceil; using std::floor; using std::log10; using std::sqrt; using boost::math::round; using boost::math::iround; using boost::math::lround; using boost::math::trunc; using boost::math::itrunc; using boost::math::ltrunc; using boost::math::modf;
84372 return (boost::math::signbit)(x) != (boost::math::signbit)(y) ? (boost::math::changesign)(x) : x;
84373 }
84374
84375 }
84376 }
84377 # 71 "../boost/lexical_cast.hpp" 2
84378 # 1 "../boost/math/special_functions/fpclassify.hpp" 1
84379 # 17 "../boost/math/special_functions/fpclassify.hpp"
84380 # 1 "../boost/math/tools/real_cast.hpp" 1
84381 # 13 "../boost/math/tools/real_cast.hpp"
84382 namespace boost{ namespace math
84383 {
84384 namespace tools
84385 {
84386 template <class To, class T>
84387 inline To real_cast(T t)
84388 {
84389 return static_cast<To>(t);
84390 }
84391 }
84392 }
84393 }
84394 # 18 "../boost/math/special_functions/fpclassify.hpp" 2
84395 # 88 "../boost/math/special_functions/fpclassify.hpp"
84396 namespace boost{
84397
84398
84399
84400
84401
84402
84403 namespace math_detail{
84404
84405 template <class T>
84406 inline bool is_nan_helper(T t, const boost::true_type&)
84407 {
84408
84409
84410
84411
84412
84413 return (::std:: fpclassify(t) == (int)FP_NAN);
84414
84415 }
84416
84417 template <class T>
84418 inline bool is_nan_helper(T, const boost::false_type&)
84419 {
84420 return false;
84421 }
84422
84423 }
84424
84425 namespace math{
84426
84427 namespace detail{
84428
84429
84430 template <class T>
84431 inline int fpclassify_imp (T t, const native_tag&)
84432 {
84433 return (std::fpclassify)(t);
84434 }
84435
84436
84437 template <class T>
84438 inline int fpclassify_imp (T t, const generic_tag<true>&)
84439 {
84440 ;
84441
84442
84443
84444 if(::boost::math_detail::is_nan_helper(t, ::boost::is_floating_point<T>()))
84445 return FP_NAN;
84446 # 146 "../boost/math/special_functions/fpclassify.hpp"
84447 T at = (t < T(0)) ? -t : t;
84448
84449
84450
84451
84452
84453
84454
84455 if(at <= (std::numeric_limits<T>::max)())
84456 {
84457 if(at >= (std::numeric_limits<T>::min)())
84458 return FP_NORMAL;
84459 return (at != 0) ? FP_SUBNORMAL : FP_ZERO;
84460 }
84461 else if(at > (std::numeric_limits<T>::max)())
84462 return FP_INFINITE;
84463 return FP_NAN;
84464 }
84465
84466 template <class T>
84467 inline int fpclassify_imp (T t, const generic_tag<false>&)
84468 {
84469 # 176 "../boost/math/special_functions/fpclassify.hpp"
84470 ;
84471
84472 return t == 0 ? FP_ZERO : FP_NORMAL;
84473 }
84474
84475 template<class T>
84476 int fpclassify_imp (T x, ieee_copy_all_bits_tag)
84477 {
84478 typedef typename fp_traits<T>::type traits;
84479
84480 ;
84481
84482 typename traits::bits a;
84483 traits::get_bits(x,a);
84484 ;
84485 a &= traits::exponent | traits::flag | traits::significand;
84486 ;
84487 ;
84488
84489 if(a <= traits::significand) {
84490 if(a == 0)
84491 return FP_ZERO;
84492 else
84493 return FP_SUBNORMAL;
84494 }
84495
84496 if(a < traits::exponent) return FP_NORMAL;
84497
84498 a &= traits::significand;
84499 if(a == 0) return FP_INFINITE;
84500
84501 return FP_NAN;
84502 }
84503
84504 template<class T>
84505 int fpclassify_imp (T x, ieee_copy_leading_bits_tag)
84506 {
84507 typedef typename fp_traits<T>::type traits;
84508
84509 ;
84510
84511 typename traits::bits a;
84512 traits::get_bits(x,a);
84513 a &= traits::exponent | traits::flag | traits::significand;
84514
84515 if(a <= traits::significand) {
84516 if(x == 0)
84517 return FP_ZERO;
84518 else
84519 return FP_SUBNORMAL;
84520 }
84521
84522 if(a < traits::exponent) return FP_NORMAL;
84523
84524 a &= traits::significand;
84525 traits::set_bits(x,a);
84526 if(x == 0) return FP_INFINITE;
84527
84528 return FP_NAN;
84529 }
84530 # 245 "../boost/math/special_functions/fpclassify.hpp"
84531 }
84532
84533 template <class T>
84534 inline int fpclassify (T t)
84535 {
84536 typedef typename detail::fp_traits<T>::type traits;
84537 typedef typename traits::method method;
84538
84539
84540
84541
84542
84543 return detail::fpclassify_imp(t, method());
84544
84545 }
84546
84547 namespace detail {
84548
84549
84550 template<class T>
84551 inline bool isfinite_impl(T x, native_tag const&)
84552 {
84553 return (std::isfinite)(x);
84554 }
84555
84556
84557 template<class T>
84558 inline bool isfinite_impl(T x, generic_tag<true> const&)
84559 {
84560 return x >= -(std::numeric_limits<T>::max)()
84561 && x <= (std::numeric_limits<T>::max)();
84562 }
84563
84564 template<class T>
84565 inline bool isfinite_impl(T x, generic_tag<false> const&)
84566 {
84567
84568
84569
84570
84571 (void)x;
84572 return true;
84573 }
84574
84575 template<class T>
84576 inline bool isfinite_impl(T x, ieee_tag const&)
84577 {
84578 typedef typename detail::fp_traits<T>::type traits;
84579 typename traits::bits a;
84580 traits::get_bits(x,a);
84581 a &= traits::exponent;
84582 return a != traits::exponent;
84583 }
84584 # 307 "../boost/math/special_functions/fpclassify.hpp"
84585 }
84586
84587 template<class T>
84588 inline bool (isfinite)(T x)
84589 {
84590 typedef typename detail::fp_traits<T>::type traits;
84591 typedef typename traits::method method;
84592 typedef typename boost::is_floating_point<T>::type fp_tag;
84593 return detail::isfinite_impl(x, method());
84594 }
84595
84596
84597
84598 namespace detail {
84599
84600
84601 template<class T>
84602 inline bool isnormal_impl(T x, native_tag const&)
84603 {
84604 return (std::isnormal)(x);
84605 }
84606
84607
84608 template<class T>
84609 inline bool isnormal_impl(T x, generic_tag<true> const&)
84610 {
84611 if(x < 0) x = -x;
84612 return x >= (std::numeric_limits<T>::min)()
84613 && x <= (std::numeric_limits<T>::max)();
84614 }
84615
84616 template<class T>
84617 inline bool isnormal_impl(T x, generic_tag<false> const&)
84618 {
84619
84620
84621
84622
84623 return !(x == 0);
84624 }
84625
84626 template<class T>
84627 inline bool isnormal_impl(T x, ieee_tag const&)
84628 {
84629 typedef typename detail::fp_traits<T>::type traits;
84630 typename traits::bits a;
84631 traits::get_bits(x,a);
84632 a &= traits::exponent | traits::flag;
84633 return (a != 0) && (a < traits::exponent);
84634 }
84635 # 366 "../boost/math/special_functions/fpclassify.hpp"
84636 }
84637
84638 template<class T>
84639 inline bool (isnormal)(T x)
84640 {
84641 typedef typename detail::fp_traits<T>::type traits;
84642 typedef typename traits::method method;
84643 typedef typename boost::is_floating_point<T>::type fp_tag;
84644 return detail::isnormal_impl(x, method());
84645 }
84646
84647
84648
84649 namespace detail {
84650
84651
84652 template<class T>
84653 inline bool isinf_impl(T x, native_tag const&)
84654 {
84655 return (std::isinf)(x);
84656 }
84657
84658
84659 template<class T>
84660 inline bool isinf_impl(T x, generic_tag<true> const&)
84661 {
84662 (void)x;
84663 return std::numeric_limits<T>::has_infinity
84664 && ( x == std::numeric_limits<T>::infinity()
84665 || x == -std::numeric_limits<T>::infinity());
84666 }
84667
84668 template<class T>
84669 inline bool isinf_impl(T x, generic_tag<false> const&)
84670 {
84671
84672
84673
84674
84675 (void)x;
84676 return false;
84677 }
84678
84679 template<class T>
84680 inline bool isinf_impl(T x, ieee_copy_all_bits_tag const&)
84681 {
84682 typedef typename fp_traits<T>::type traits;
84683
84684 typename traits::bits a;
84685 traits::get_bits(x,a);
84686 a &= traits::exponent | traits::significand;
84687 return a == traits::exponent;
84688 }
84689
84690 template<class T>
84691 inline bool isinf_impl(T x, ieee_copy_leading_bits_tag const&)
84692 {
84693 typedef typename fp_traits<T>::type traits;
84694
84695 typename traits::bits a;
84696 traits::get_bits(x,a);
84697 a &= traits::exponent | traits::significand;
84698 if(a != traits::exponent)
84699 return false;
84700
84701 traits::set_bits(x,0);
84702 return x == 0;
84703 }
84704 # 443 "../boost/math/special_functions/fpclassify.hpp"
84705 }
84706
84707 template<class T>
84708 inline bool (isinf)(T x)
84709 {
84710 typedef typename detail::fp_traits<T>::type traits;
84711 typedef typename traits::method method;
84712 typedef typename boost::is_floating_point<T>::type fp_tag;
84713 return detail::isinf_impl(x, method());
84714 }
84715
84716
84717
84718 namespace detail {
84719
84720
84721 template<class T>
84722 inline bool isnan_impl(T x, native_tag const&)
84723 {
84724 return (std::isnan)(x);
84725 }
84726
84727
84728 template<class T>
84729 inline bool isnan_impl(T x, generic_tag<true> const&)
84730 {
84731 return std::numeric_limits<T>::has_infinity
84732 ? !(x <= std::numeric_limits<T>::infinity())
84733 : x != x;
84734 }
84735
84736 template<class T>
84737 inline bool isnan_impl(T x, generic_tag<false> const&)
84738 {
84739
84740
84741
84742
84743 (void)x;
84744 return false;
84745 }
84746
84747 template<class T>
84748 inline bool isnan_impl(T x, ieee_copy_all_bits_tag const&)
84749 {
84750 typedef typename fp_traits<T>::type traits;
84751
84752 typename traits::bits a;
84753 traits::get_bits(x,a);
84754 a &= traits::exponent | traits::significand;
84755 return a > traits::exponent;
84756 }
84757
84758 template<class T>
84759 inline bool isnan_impl(T x, ieee_copy_leading_bits_tag const&)
84760 {
84761 typedef typename fp_traits<T>::type traits;
84762
84763 typename traits::bits a;
84764 traits::get_bits(x,a);
84765
84766 a &= traits::exponent | traits::significand;
84767 if(a < traits::exponent)
84768 return false;
84769
84770 a &= traits::significand;
84771 traits::set_bits(x,a);
84772 return x != 0;
84773 }
84774
84775 }
84776
84777 template<class T> bool (isnan)(T x)
84778 {
84779 typedef typename detail::fp_traits<T>::type traits;
84780 typedef typename traits::method method;
84781 typedef typename boost::is_floating_point<T>::type fp_tag;
84782 return detail::isnan_impl(x, method());
84783 }
84784
84785
84786
84787
84788
84789
84790
84791 }
84792 }
84793 # 72 "../boost/lexical_cast.hpp" 2
84794
84795 # 1 "../boost/detail/lcast_precision.hpp" 1
84796 # 11 "../boost/detail/lcast_precision.hpp"
84797 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 1 3
84798 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
84799
84800 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 3
84801
84802 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
84803 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/climits" 2 3
84804 # 12 "../boost/detail/lcast_precision.hpp" 2
84805
84806
84807
84808
84809 # 1 "../boost/integer_traits.hpp" 1
84810 # 23 "../boost/integer_traits.hpp"
84811 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include-fixed/limits.h" 1 3 4
84812 # 24 "../boost/integer_traits.hpp" 2
84813
84814
84815
84816 # 1 "/usr/include/wchar.h" 1 3 4
84817 # 28 "../boost/integer_traits.hpp" 2
84818 # 39 "../boost/integer_traits.hpp"
84819
84820 # 40 "../boost/integer_traits.hpp" 3
84821
84822
84823 namespace boost {
84824 template<class T>
84825 class integer_traits : public std::numeric_limits<T>
84826 {
84827 public:
84828 static const bool is_integral = false;
84829 };
84830
84831 namespace detail {
84832 template<class T, T min_val, T max_val>
84833 class integer_traits_base
84834 {
84835 public:
84836 static const bool is_integral = true;
84837 static const T const_min = min_val;
84838 static const T const_max = max_val;
84839 };
84840
84841
84842
84843 template<class T, T min_val, T max_val>
84844 const bool integer_traits_base<T, min_val, max_val>::is_integral;
84845
84846 template<class T, T min_val, T max_val>
84847 const T integer_traits_base<T, min_val, max_val>::const_min;
84848
84849 template<class T, T min_val, T max_val>
84850 const T integer_traits_base<T, min_val, max_val>::const_max;
84851
84852
84853 }
84854
84855 template<>
84856 class integer_traits<bool>
84857 : public std::numeric_limits<bool>,
84858 public detail::integer_traits_base<bool, false, true>
84859 { };
84860
84861 template<>
84862 class integer_traits<char>
84863 : public std::numeric_limits<char>,
84864 public detail::integer_traits_base<char, (-127 - 1), 127>
84865 { };
84866
84867 template<>
84868 class integer_traits<signed char>
84869 : public std::numeric_limits<signed char>,
84870 public detail::integer_traits_base<signed char, (-127 - 1), 127>
84871 { };
84872
84873 template<>
84874 class integer_traits<unsigned char>
84875 : public std::numeric_limits<unsigned char>,
84876 public detail::integer_traits_base<unsigned char, 0, (127 * 2 + 1)>
84877 { };
84878
84879
84880 template<>
84881 class integer_traits<wchar_t>
84882 : public std::numeric_limits<wchar_t>,
84883
84884
84885
84886 public detail::integer_traits_base<wchar_t, (-2147483647 - 1), (2147483647)>
84887 # 130 "../boost/integer_traits.hpp" 3
84888 { };
84889
84890
84891 template<>
84892 class integer_traits<short>
84893 : public std::numeric_limits<short>,
84894 public detail::integer_traits_base<short, (-32767 - 1), 32767>
84895 { };
84896
84897 template<>
84898 class integer_traits<unsigned short>
84899 : public std::numeric_limits<unsigned short>,
84900 public detail::integer_traits_base<unsigned short, 0, (32767 * 2 + 1)>
84901 { };
84902
84903 template<>
84904 class integer_traits<int>
84905 : public std::numeric_limits<int>,
84906 public detail::integer_traits_base<int, (-2147483647 - 1), 2147483647>
84907 { };
84908
84909 template<>
84910 class integer_traits<unsigned int>
84911 : public std::numeric_limits<unsigned int>,
84912 public detail::integer_traits_base<unsigned int, 0, (2147483647 * 2U + 1U)>
84913 { };
84914
84915 template<>
84916 class integer_traits<long>
84917 : public std::numeric_limits<long>,
84918 public detail::integer_traits_base<long, (-9223372036854775807L - 1L), 9223372036854775807L>
84919 { };
84920
84921 template<>
84922 class integer_traits<unsigned long>
84923 : public std::numeric_limits<unsigned long>,
84924 public detail::integer_traits_base<unsigned long, 0, (9223372036854775807L * 2UL + 1UL)>
84925 { };
84926
84927
84928
84929
84930 template<>
84931 class integer_traits< ::boost::long_long_type>
84932 : public std::numeric_limits< ::boost::long_long_type>,
84933 public detail::integer_traits_base< ::boost::long_long_type, (-9223372036854775807LL -1), 9223372036854775807LL>
84934 { };
84935
84936 template<>
84937 class integer_traits< ::boost::ulong_long_type>
84938 : public std::numeric_limits< ::boost::ulong_long_type>,
84939 public detail::integer_traits_base< ::boost::ulong_long_type, 0, (9223372036854775807LL * 2ULL + 1)>
84940 { };
84941 # 256 "../boost/integer_traits.hpp" 3
84942 }
84943 # 17 "../boost/detail/lcast_precision.hpp" 2
84944 # 36 "../boost/detail/lcast_precision.hpp"
84945 namespace boost { namespace detail {
84946
84947 class lcast_abstract_stub {};
84948
84949
84950
84951
84952
84953 template<class T>
84954 struct lcast_precision
84955 {
84956
84957
84958
84959 typedef typename boost::mpl::if_<
84960 boost::is_abstract<T>
84961 , std::numeric_limits<lcast_abstract_stub>
84962 , std::numeric_limits<T>
84963 >::type limits;
84964
84965
84966 static const bool use_default_precision = !limits::is_specialized || limits::is_exact
84967
84968 ;
84969
84970 static const bool is_specialized_bin = !use_default_precision && limits::radix == 2 && limits::digits > 0
84971
84972
84973 ;
84974
84975 static const bool is_specialized_dec = !use_default_precision && limits::radix == 10 && limits::digits10 > 0
84976
84977
84978 ;
84979
84980 static const std::streamsize streamsize_max = boost::integer_traits<std::streamsize>::const_max
84981
84982 ;
84983
84984 static const unsigned int precision_dec = limits::digits10 + 1U;
84985
84986 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((!is_specialized_dec || precision_dec <= streamsize_max + 0UL) == 0 ? false : true) >)>
84987
84988 boost_static_assert_typedef_79;
84989
84990 static const unsigned long precision_bin = 2UL + limits::digits * 30103UL / 100000UL
84991
84992 ;
84993
84994 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((!is_specialized_bin || (limits::digits + 0UL < (9223372036854775807L * 2UL + 1UL) / 30103UL && precision_bin > limits::digits10 + 0UL && precision_bin <= streamsize_max + 0UL)) == 0 ? false : true) >)>
84995
84996
84997
84998 boost_static_assert_typedef_89;
84999
85000 static const std::streamsize value = is_specialized_bin ? precision_bin : is_specialized_dec ? precision_dec : 6
85001
85002
85003 ;
85004 };
85005
85006
85007 template<class T>
85008 inline std::streamsize lcast_get_precision(T* = 0)
85009 {
85010
85011 return lcast_precision<T>::value;
85012 # 165 "../boost/detail/lcast_precision.hpp"
85013 }
85014
85015 template<class T>
85016 inline void lcast_set_precision(std::ios_base& stream, T*)
85017 {
85018 stream.precision(lcast_get_precision<T>());
85019 }
85020
85021 template<class Source, class Target>
85022 inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
85023 {
85024 std::streamsize const s = lcast_get_precision(static_cast<Source*>(0));
85025 std::streamsize const t = lcast_get_precision(static_cast<Target*>(0));
85026 stream.precision(s > t ? s : t);
85027 }
85028
85029 }}
85030 # 74 "../boost/lexical_cast.hpp" 2
85031
85032
85033 # 1 "../boost/container/container_fwd.hpp" 1
85034 # 24 "../boost/container/container_fwd.hpp"
85035 namespace boost{
85036 namespace intrusive{
85037
85038 }}
85039
85040 namespace boost{ namespace container{ namespace container_detail{
85041
85042 namespace bi = boost::intrusive;
85043
85044 }}}
85045 # 47 "../boost/container/container_fwd.hpp"
85046 namespace boost {
85047 namespace container {
85048
85049
85050 template <class T
85051 ,class A = std::allocator<T> >
85052 class vector;
85053
85054
85055 template <class T
85056 ,class A = std::allocator<T> >
85057 class stable_vector;
85058
85059
85060 template <class T
85061 ,class A = std::allocator<T> >
85062 class deque;
85063
85064
85065 template <class T
85066 ,class A = std::allocator<T> >
85067 class list;
85068
85069
85070 template <class T
85071 ,class A = std::allocator<T> >
85072 class slist;
85073
85074
85075 template <class T
85076 ,class Pred = std::less<T>
85077 ,class A = std::allocator<T> >
85078 class set;
85079
85080
85081 template <class T
85082 ,class Pred = std::less<T>
85083 ,class A = std::allocator<T> >
85084 class multiset;
85085
85086
85087 template <class Key
85088 ,class T
85089 ,class Pred = std::less<Key>
85090 ,class A = std::allocator<std::pair<const Key, T> > >
85091 class map;
85092
85093
85094 template <class Key
85095 ,class T
85096 ,class Pred = std::less<Key>
85097 ,class A = std::allocator<std::pair<const Key, T> > >
85098 class multimap;
85099
85100
85101 template <class T
85102 ,class Pred = std::less<T>
85103 ,class A = std::allocator<T> >
85104 class flat_set;
85105
85106
85107 template <class T
85108 ,class Pred = std::less<T>
85109 ,class A = std::allocator<T> >
85110 class flat_multiset;
85111
85112
85113 template <class Key
85114 ,class T
85115 ,class Pred = std::less<Key>
85116 ,class A = std::allocator<std::pair<Key, T> > >
85117 class flat_map;
85118
85119
85120 template <class Key
85121 ,class T
85122 ,class Pred = std::less<Key>
85123 ,class A = std::allocator<std::pair<Key, T> > >
85124 class flat_multimap;
85125
85126
85127 template <class CharT
85128 ,class Traits = std::char_traits<CharT>
85129 ,class A = std::allocator<CharT> >
85130 class basic_string;
85131
85132
85133
85134 struct ordered_range_impl_t {};
85135
85136
85137
85138 struct ordered_unique_range_impl_t{};
85139
85140
85141
85142 typedef ordered_range_impl_t * ordered_range_t;
85143 typedef ordered_unique_range_impl_t *ordered_unique_range_t;
85144
85145
85146
85147
85148
85149 static const ordered_range_t ordered_range = 0;
85150
85151
85152
85153 static const ordered_unique_range_t ordered_unique_range = 0;
85154
85155
85156
85157 namespace detail_really_deep_namespace {
85158
85159
85160
85161 struct dummy
85162 {
85163 dummy()
85164 {
85165 (void)ordered_range;
85166 (void)ordered_unique_range;
85167 }
85168 };
85169
85170 }
85171
85172
85173
85174 }}
85175 # 77 "../boost/lexical_cast.hpp" 2
85176
85177
85178 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 1 3
85179 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
85180
85181 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 3
85182
85183
85184
85185
85186 # 1 "/usr/include/wchar.h" 1 3 4
85187 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cwchar" 2 3
85188 # 80 "../boost/lexical_cast.hpp" 2
85189 # 104 "../boost/lexical_cast.hpp"
85190 namespace boost
85191 {
85192
85193 class bad_lexical_cast :
85194
85195
85196
85197
85198 public std::bad_cast
85199
85200
85201
85202
85203
85204
85205
85206 {
85207 public:
85208 bad_lexical_cast() :
85209
85210 source(&typeid(void)), target(&typeid(void))
85211
85212
85213
85214 {
85215 }
85216
85217 bad_lexical_cast(
85218 const std::type_info &source_type_arg,
85219 const std::type_info &target_type_arg) :
85220 source(&source_type_arg), target(&target_type_arg)
85221 {
85222 }
85223
85224 const std::type_info &source_type() const
85225 {
85226 return *source;
85227 }
85228 const std::type_info &target_type() const
85229 {
85230 return *target;
85231 }
85232
85233 virtual const char *what() const throw()
85234 {
85235 return "bad lexical cast: "
85236 "source type value could not be interpreted as target";
85237 }
85238 virtual ~bad_lexical_cast() throw()
85239 {
85240 }
85241 private:
85242 const std::type_info *source;
85243 const std::type_info *target;
85244 };
85245
85246 namespace detail
85247 {
85248 template<typename Type>
85249 struct stream_char
85250 {
85251 typedef char type;
85252 };
85253
85254
85255 template<class CharT, class Traits, class Alloc>
85256 struct stream_char< std::basic_string<CharT,Traits,Alloc> >
85257 {
85258 typedef CharT type;
85259 };
85260
85261
85262 template<class CharT, class Traits, class Alloc>
85263 struct stream_char< ::boost::container::basic_string<CharT,Traits,Alloc> >
85264 {
85265 typedef CharT type;
85266 };
85267
85268
85269
85270
85271
85272 template<>
85273 struct stream_char<wchar_t>
85274 {
85275 typedef wchar_t type;
85276 };
85277
85278
85279 template<>
85280 struct stream_char<wchar_t *>
85281 {
85282 typedef wchar_t type;
85283 };
85284
85285 template<>
85286 struct stream_char<const wchar_t *>
85287 {
85288 typedef wchar_t type;
85289 };
85290 # 259 "../boost/lexical_cast.hpp"
85291 template<typename TargetChar, typename SourceChar>
85292 struct widest_char
85293 {
85294 typedef typename boost::mpl::if_c<
85295 (sizeof(TargetChar) > sizeof(SourceChar))
85296 , TargetChar
85297 , SourceChar >::type type;
85298 };
85299 }
85300
85301 namespace detail
85302 {
85303
85304 template<class CharT, class Target, class Source>
85305 struct deduce_char_traits
85306 {
85307 typedef std::char_traits<CharT> type;
85308 };
85309
85310 template<class CharT, class Traits, class Alloc, class Source>
85311 struct deduce_char_traits< CharT
85312 , std::basic_string<CharT,Traits,Alloc>
85313 , Source
85314 >
85315 {
85316 typedef Traits type;
85317 };
85318
85319 template<class CharT, class Target, class Traits, class Alloc>
85320 struct deduce_char_traits< CharT
85321 , Target
85322 , std::basic_string<CharT,Traits,Alloc>
85323 >
85324 {
85325 typedef Traits type;
85326 };
85327
85328
85329 template<class CharT, class Traits, class Alloc, class Source>
85330 struct deduce_char_traits< CharT
85331 , ::boost::container::basic_string<CharT,Traits,Alloc>
85332 , Source
85333 >
85334 {
85335 typedef Traits type;
85336 };
85337
85338 template<class CharT, class Target, class Traits, class Alloc>
85339 struct deduce_char_traits< CharT
85340 , Target
85341 , ::boost::container::basic_string<CharT,Traits,Alloc>
85342 >
85343 {
85344 typedef Traits type;
85345 };
85346
85347 template<class CharT, class Traits, class Alloc1, class Alloc2>
85348 struct deduce_char_traits< CharT
85349 , std::basic_string<CharT,Traits,Alloc1>
85350 , std::basic_string<CharT,Traits,Alloc2>
85351 >
85352 {
85353 typedef Traits type;
85354 };
85355
85356 template<class CharT, class Traits, class Alloc1, class Alloc2>
85357 struct deduce_char_traits< CharT
85358 , ::boost::container::basic_string<CharT,Traits,Alloc1>
85359 , ::boost::container::basic_string<CharT,Traits,Alloc2>
85360 >
85361 {
85362 typedef Traits type;
85363 };
85364
85365 template<class CharT, class Traits, class Alloc1, class Alloc2>
85366 struct deduce_char_traits< CharT
85367 , ::boost::container::basic_string<CharT,Traits,Alloc1>
85368 , std::basic_string<CharT,Traits,Alloc2>
85369 >
85370 {
85371 typedef Traits type;
85372 };
85373
85374 template<class CharT, class Traits, class Alloc1, class Alloc2>
85375 struct deduce_char_traits< CharT
85376 , std::basic_string<CharT,Traits,Alloc1>
85377 , ::boost::container::basic_string<CharT,Traits,Alloc2>
85378 >
85379 {
85380 typedef Traits type;
85381 };
85382
85383
85384 }
85385
85386 namespace detail
85387 {
85388
85389 template< class Source
85390 >
85391 struct lcast_src_length
85392 {
85393 static const std::size_t value = 1;
85394
85395
85396 static void check_coverage() {}
85397 };
85398 # 380 "../boost/lexical_cast.hpp"
85399 template<class Source>
85400 struct lcast_src_length_integral
85401 {
85402
85403 static const std::size_t value = std::numeric_limits<Source>::is_signed + std::numeric_limits<Source>::is_specialized + std::numeric_limits<Source>::digits10 * 2
85404
85405
85406
85407 ;
85408
85409
85410
85411
85412 };
85413
85414
85415
85416
85417
85418
85419 template<> struct lcast_src_length<short> : lcast_src_length_integral<short> { static void check_coverage() {} };
85420 template<> struct lcast_src_length<unsigned short> : lcast_src_length_integral<unsigned short> { static void check_coverage() {} };
85421 template<> struct lcast_src_length<int> : lcast_src_length_integral<int> { static void check_coverage() {} };
85422 template<> struct lcast_src_length<unsigned int> : lcast_src_length_integral<unsigned int> { static void check_coverage() {} };
85423 template<> struct lcast_src_length<long> : lcast_src_length_integral<long> { static void check_coverage() {} };
85424 template<> struct lcast_src_length<unsigned long> : lcast_src_length_integral<unsigned long> { static void check_coverage() {} };
85425
85426 template<> struct lcast_src_length<boost::ulong_long_type> : lcast_src_length_integral<boost::ulong_long_type> { static void check_coverage() {} };
85427 template<> struct lcast_src_length<boost::long_long_type> : lcast_src_length_integral<boost::long_long_type> { static void check_coverage() {} };
85428 # 427 "../boost/lexical_cast.hpp"
85429 template<class Source>
85430 struct lcast_src_length_floating
85431 {
85432 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((std::numeric_limits<Source>::max_exponent10 <= 999999L && std::numeric_limits<Source>::min_exponent10 >= -999999L) == 0 ? false : true) >)>
85433
85434
85435 boost_static_assert_typedef_433;
85436 static const std::size_t value = 5 + lcast_precision<Source>::value + 6
85437
85438 ;
85439 };
85440
85441 template<>
85442 struct lcast_src_length<float>
85443 : lcast_src_length_floating<float>
85444 {
85445 static void check_coverage() {}
85446 };
85447
85448 template<>
85449 struct lcast_src_length<double>
85450 : lcast_src_length_floating<double>
85451 {
85452 static void check_coverage() {}
85453 };
85454
85455 template<>
85456 struct lcast_src_length<long double>
85457 : lcast_src_length_floating<long double>
85458 {
85459 static void check_coverage() {}
85460 };
85461
85462
85463 }
85464
85465 namespace detail
85466 {
85467 template<typename CharT> struct lcast_char_constants;
85468
85469 template<>
85470 struct lcast_char_constants<char>
85471 {
85472 static const char zero = '0';
85473 static const char minus = '-';
85474 static const char plus = '+';
85475 static const char lowercase_e = 'e';
85476 static const char capital_e = 'E';
85477 static const char c_decimal_separator = '.';
85478 };
85479
85480
85481 template<>
85482 struct lcast_char_constants<wchar_t>
85483 {
85484 static const wchar_t zero = L'0';
85485 static const wchar_t minus = L'-';
85486 static const wchar_t plus = L'+';
85487 static const wchar_t lowercase_e = L'e';
85488 static const wchar_t capital_e = L'E';
85489 static const wchar_t c_decimal_separator = L'.';
85490 };
85491 # 516 "../boost/lexical_cast.hpp"
85492 }
85493
85494 namespace detail
85495 {
85496
85497
85498
85499
85500
85501
85502
85503 template<class T>
85504 inline
85505 typename make_unsigned<T>::type lcast_to_unsigned(T value)
85506 {
85507 typedef typename make_unsigned<T>::type result_type;
85508 result_type uvalue = static_cast<result_type>(value);
85509 return value < 0 ? -uvalue : uvalue;
85510 }
85511
85512
85513
85514
85515
85516 }
85517
85518 namespace detail
85519 {
85520 template<class Traits, class T, class CharT>
85521 CharT* lcast_put_unsigned(const T n_param, CharT* finish)
85522 {
85523
85524 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((!std::numeric_limits<T>::is_signed) == 0 ? false : true) >)> boost_static_assert_typedef_548;
85525
85526
85527 typedef typename Traits::int_type int_type;
85528 CharT const czero = lcast_char_constants<CharT>::zero;
85529 int_type const zero = Traits::to_int_type(czero);
85530 typename boost::mpl::if_c<
85531 (sizeof(int_type) > sizeof(T))
85532 , int_type
85533 , T
85534 >::type n = n_param;
85535
85536
85537 std::locale loc;
85538 if (loc != std::locale::classic()) {
85539 typedef std::numpunct<CharT> numpunct;
85540 numpunct const& np = std::use_facet< numpunct >(loc);
85541 std::string const grouping = np.grouping();
85542 std::string::size_type const grouping_size = grouping.size();
85543
85544 if ( grouping_size && grouping[0] > 0 )
85545 {
85546
85547
85548
85549 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((std::numeric_limits<T>::digits10 < 127) == 0 ? false : true) >)> boost_static_assert_typedef_573;
85550
85551 CharT thousands_sep = np.thousands_sep();
85552 std::string::size_type group = 0;
85553 char last_grp_size = grouping[0];
85554 char left = last_grp_size;
85555
85556 do
85557 {
85558 if(left == 0)
85559 {
85560 ++group;
85561 if(group < grouping_size)
85562 {
85563 char const grp_size = grouping[group];
85564 last_grp_size = grp_size <= 0 ? 127 : grp_size;
85565 }
85566
85567 left = last_grp_size;
85568 --finish;
85569 Traits::assign(*finish, thousands_sep);
85570 }
85571
85572 --left;
85573
85574 --finish;
85575 int_type const digit = static_cast<int_type>(n % 10U);
85576 Traits::assign(*finish, Traits::to_char_type(zero + digit));
85577 n /= 10;
85578 } while(n);
85579 return finish;
85580 }
85581 }
85582
85583 {
85584 do
85585 {
85586 --finish;
85587 int_type const digit = static_cast<int_type>(n % 10U);
85588 Traits::assign(*finish, Traits::to_char_type(zero + digit));
85589 n /= 10;
85590 } while(n);
85591 }
85592
85593 return finish;
85594 }
85595 }
85596
85597 namespace detail
85598 {
85599 template<class Traits, class T, class CharT>
85600 inline bool lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end)
85601 {
85602
85603 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((!std::numeric_limits<T>::is_signed) == 0 ? false : true) >)> boost_static_assert_typedef_627;
85604
85605 typedef typename Traits::int_type int_type;
85606 CharT const czero = lcast_char_constants<CharT>::zero;
85607 --end;
85608 value = 0;
85609
85610 if (begin > end || *end < czero || *end >= czero + 10)
85611 return false;
85612 value = *end - czero;
85613 --end;
85614 T multiplier = 1;
85615 bool multiplier_overflowed = false;
85616
85617
85618 std::locale loc;
85619 if (loc != std::locale::classic()) {
85620 typedef std::numpunct<CharT> numpunct;
85621 numpunct const& np = std::use_facet< numpunct >(loc);
85622 std::string const& grouping = np.grouping();
85623 std::string::size_type const grouping_size = grouping.size();
85624
85625
85626
85627
85628 if (grouping_size && grouping[0] > 0)
85629 {
85630 unsigned char current_grouping = 0;
85631 CharT const thousands_sep = np.thousands_sep();
85632 char remained = grouping[current_grouping] - 1;
85633 bool shall_we_return = true;
85634
85635 for(;end>=begin; --end)
85636 {
85637 if (remained) {
85638 T const multiplier_10 = multiplier * 10;
85639 if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
85640
85641 T const dig_value = *end - czero;
85642 T const new_sub_value = multiplier_10 * dig_value;
85643
85644 if (*end < czero || *end >= czero + 10
85645
85646 || (dig_value && new_sub_value / dig_value != multiplier_10)
85647 || static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
85648 || (multiplier_overflowed && dig_value)
85649 )
85650 return false;
85651
85652 value += new_sub_value;
85653 multiplier *= 10;
85654 --remained;
85655 } else {
85656 if ( !Traits::eq(*end, thousands_sep) )
85657 {
85658 # 693 "../boost/lexical_cast.hpp"
85659 shall_we_return = false;
85660 break;
85661 } else {
85662 if ( begin == end ) return false;
85663 if (current_grouping < grouping_size-1 ) ++current_grouping;
85664 remained = grouping[current_grouping];
85665 }
85666 }
85667 }
85668
85669 if (shall_we_return) return true;
85670 }
85671 }
85672
85673 {
85674 while ( begin <= end )
85675 {
85676 T const multiplier_10 = multiplier * 10;
85677 if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
85678
85679 T const dig_value = *end - czero;
85680 T const new_sub_value = multiplier_10 * dig_value;
85681
85682 if (*end < czero || *end >= czero + 10
85683
85684 || (dig_value && new_sub_value / dig_value != multiplier_10)
85685 || static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
85686 || (multiplier_overflowed && dig_value)
85687 )
85688 return false;
85689
85690 value += new_sub_value;
85691 multiplier *= 10;
85692 --end;
85693 }
85694 }
85695 return true;
85696 }
85697 }
85698
85699 namespace detail
85700 {
85701
85702 template <class CharT, class T>
85703 inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
85704 , const CharT* lc_NAN, const CharT* lc_nan
85705 , const CharT* lc_INFINITY, const CharT* lc_infinity
85706 , const CharT opening_brace, const CharT closing_brace)
85707 {
85708 using namespace std;
85709 if (begin == end) return false;
85710 const CharT minus = lcast_char_constants<CharT>::minus;
85711 const CharT plus = lcast_char_constants<CharT>::plus;
85712 const int inifinity_size = 8;
85713
85714 bool has_minus = false;
85715
85716 if( *begin == minus)
85717 {
85718 ++ begin;
85719 has_minus = true;
85720 }
85721 else if( *begin == plus ) ++begin;
85722
85723 if( end-begin < 3 ) return false;
85724 if( !memcmp(begin, lc_nan, 3*sizeof(CharT)) || !memcmp(begin, lc_NAN, 3*sizeof(CharT)) )
85725 {
85726 begin += 3;
85727 if (end != begin)
85728 {
85729 if(end-begin<2) return false;
85730 -- end;
85731 if( *begin != opening_brace || *end != closing_brace) return false;
85732 }
85733
85734 if( !has_minus ) value = std::numeric_limits<T>::quiet_NaN();
85735 else value = (boost::math::changesign) (std::numeric_limits<T>::quiet_NaN());
85736 return true;
85737 } else
85738 if ((
85739 end-begin==3
85740 &&
85741 (!memcmp(begin, lc_infinity, 3*sizeof(CharT)) || !memcmp(begin, lc_INFINITY, 3*sizeof(CharT)))
85742 )
85743 ||
85744 (
85745 end-begin==inifinity_size
85746 &&
85747 (!memcmp(begin, lc_infinity, inifinity_size)|| !memcmp(begin, lc_INFINITY, inifinity_size))
85748 )
85749 )
85750 {
85751 if( !has_minus ) value = std::numeric_limits<T>::infinity();
85752 else value = (boost::math::changesign) (std::numeric_limits<T>::infinity());
85753 return true;
85754 }
85755
85756 return false;
85757 }
85758
85759
85760 template <class T>
85761 bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value)
85762 {
85763 return parse_inf_nan_impl(begin, end, value
85764 , L"NAN", L"nan"
85765 , L"INFINITY", L"infinity"
85766 , L'(', L')');
85767 }
85768 # 824 "../boost/lexical_cast.hpp"
85769 template <class CharT, class T>
85770 bool parse_inf_nan(const CharT* begin, const CharT* end, T& value)
85771 {
85772 return parse_inf_nan_impl(begin, end, value
85773 , "NAN", "nan"
85774 , "INFINITY", "infinity"
85775 , '(', ')');
85776 }
85777
85778 template <class T>
85779 bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value)
85780 {
85781 using namespace std;
85782 if ( (boost::math::isnan)(value) )
85783 {
85784 if ( (boost::math::signbit)(value) )
85785 {
85786 memcpy(begin,L"-nan", sizeof(L"-nan"));
85787 end = begin + 4;
85788 } else
85789 {
85790 memcpy(begin,L"nan", sizeof(L"nan"));
85791 end = begin + 3;
85792 }
85793 return true;
85794 } else if ( (boost::math::isinf)(value) )
85795 {
85796 if ( (boost::math::signbit)(value) )
85797 {
85798 memcpy(begin,L"-inf", sizeof(L"-inf"));
85799 end = begin + 4;
85800 } else
85801 {
85802 memcpy(begin,L"inf", sizeof(L"inf"));
85803 end = begin + 3;
85804 }
85805 return true;
85806 }
85807
85808 return false;
85809 }
85810
85811 template <class CharT, class T>
85812 bool put_inf_nan(CharT* begin, CharT*& end, const T& value)
85813 {
85814 using namespace std;
85815 if ( (boost::math::isnan)(value) )
85816 {
85817 if ( (boost::math::signbit)(value) )
85818 {
85819 memcpy(begin,"-nan", sizeof("-nan"));
85820 end = begin + 4;
85821 } else
85822 {
85823 memcpy(begin,"nan", sizeof("nan"));
85824 end = begin + 3;
85825 }
85826 return true;
85827 } else if ( (boost::math::isinf)(value) )
85828 {
85829 if ( (boost::math::signbit)(value) )
85830 {
85831 memcpy(begin,"-inf", sizeof("-inf"));
85832 end = begin + 4;
85833 } else
85834 {
85835 memcpy(begin,"inf", sizeof("inf"));
85836 end = begin + 3;
85837 }
85838 return true;
85839 }
85840
85841 return false;
85842 }
85843
85844 }
85845
85846
85847 namespace detail
85848 {
85849 template <class T>
85850 struct mantissa_holder_type
85851 {
85852
85853 };
85854
85855 template <>
85856 struct mantissa_holder_type<float>
85857 {
85858 typedef unsigned int type;
85859 };
85860
85861 template <>
85862 struct mantissa_holder_type<double>
85863 {
85864
85865 typedef boost::ulong_long_type type;
85866
85867
85868
85869 };
85870
85871 template<class Traits, class T, class CharT>
85872 inline bool lcast_ret_float(T& value, const CharT* begin, const CharT* end)
85873 {
85874
85875
85876 std::locale loc;
85877 typedef std::numpunct<CharT> numpunct;
85878 numpunct const& np = std::use_facet< numpunct >(loc);
85879 std::string const grouping(
85880 (loc == std::locale::classic())
85881 ? std::string()
85882 : np.grouping()
85883 );
85884 std::string::size_type const grouping_size = grouping.size();
85885 CharT const thousands_sep = grouping_size ? np.thousands_sep() : 0;
85886 CharT const decimal_point = np.decimal_point();
85887 bool found_grouping = false;
85888 std::string::size_type last_grouping_pos = grouping_size - 1;
85889
85890
85891
85892
85893 CharT const czero = lcast_char_constants<CharT>::zero;
85894 CharT const minus = lcast_char_constants<CharT>::minus;
85895 CharT const plus = lcast_char_constants<CharT>::plus;
85896 CharT const capital_e = lcast_char_constants<CharT>::capital_e;
85897 CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
85898
85899 value = 0.0;
85900
85901 if (parse_inf_nan(begin, end, value)) return true;
85902
85903 typedef typename Traits::int_type int_type;
85904 typedef typename mantissa_holder_type<T>::type mantissa_type;
85905 int_type const zero = Traits::to_int_type(czero);
85906 if (begin == end) return false;
85907
85908
85909 bool has_minus = false;
85910 if ( *begin == minus ) {
85911 ++ begin;
85912 has_minus = true;
85913 if (begin == end) return false;
85914 } else if ( *begin == plus ) {
85915 ++begin;
85916 if (begin == end) return false;
85917 }
85918
85919 bool found_decimal = false;
85920 bool found_number_before_exp = false;
85921 int pow_of_10 = 0;
85922 mantissa_type mantissa=0;
85923 bool is_mantissa_full = false;
85924
85925 char length_since_last_delim = 0;
85926
85927 while ( begin != end )
85928 {
85929 if (found_decimal) {
85930
85931
85932 mantissa_type tmp_mantissa = mantissa * 10u;
85933 if ( *begin == lowercase_e || *begin == capital_e ) break;
85934 if ( *begin < czero || *begin >= czero + 10 ) return false;
85935 if ( is_mantissa_full
85936 || tmp_mantissa / 10u != mantissa
85937 || (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) < tmp_mantissa
85938 ) {
85939 is_mantissa_full = true;
85940 ++ begin;
85941 continue;
85942 }
85943
85944 -- pow_of_10;
85945 mantissa = tmp_mantissa;
85946 mantissa += *begin - zero;
85947
85948 found_number_before_exp = true;
85949 } else {
85950
85951 if (*begin >= czero && *begin < czero + 10) {
85952
85953
85954
85955
85956 mantissa_type tmp_mantissa = mantissa * 10u;
85957 if( !is_mantissa_full
85958 && tmp_mantissa / 10u == mantissa
85959 && (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) >= tmp_mantissa
85960 )
85961 {
85962 mantissa = tmp_mantissa;
85963 mantissa += *begin - zero;
85964 } else
85965 {
85966 is_mantissa_full = true;
85967 ++ pow_of_10;
85968 }
85969
85970 found_number_before_exp = true;
85971 ++ length_since_last_delim;
85972 } else if ( *begin == decimal_point || *begin == lowercase_e || *begin == capital_e) {
85973 # 1036 "../boost/lexical_cast.hpp"
85974 if( grouping_size && found_grouping
85975 && (
85976 length_since_last_delim != grouping[0]
85977 || last_grouping_pos>1
85978 || (last_grouping_pos==0 && grouping_size>1)
85979 )
85980 ) return false;
85981
85982
85983 if(*begin == decimal_point){
85984 ++ begin;
85985 found_decimal = true;
85986 continue;
85987 }else {
85988 if (!found_number_before_exp) return false;
85989 break;
85990 }
85991 }
85992
85993 else if (grouping_size && *begin == thousands_sep){
85994 if(found_grouping)
85995 {
85996
85997
85998
85999
86000 if (length_since_last_delim != grouping[last_grouping_pos] )
86001 {
86002 if (!last_grouping_pos) return false;
86003 else
86004 {
86005 -- last_grouping_pos;
86006 if (length_since_last_delim != grouping[last_grouping_pos]) return false;
86007 }
86008 } else
86009
86010 if (grouping_size>1u && last_grouping_pos+1<grouping_size) return false;
86011
86012 } else {
86013
86014 if (!length_since_last_delim) return false;
86015
86016 found_grouping = true;
86017 if (length_since_last_delim > grouping[last_grouping_pos] ) return false;
86018 }
86019
86020 length_since_last_delim = 0;
86021 ++ begin;
86022
86023
86024 if (begin == end) return false;
86025 continue;
86026 }
86027
86028 else return false;
86029 }
86030
86031 ++begin;
86032 }
86033
86034
86035 if ( begin != end && ( *begin == lowercase_e || *begin == capital_e ) ) {
86036 ++ begin;
86037 if ( begin == end ) return false;
86038
86039 bool exp_has_minus = false;
86040 if( *begin == minus ) {
86041 exp_has_minus = true;
86042 ++ begin;
86043 if ( begin == end ) return false;
86044 } else if (*begin == plus ) {
86045 ++ begin;
86046 if ( begin == end ) return false;
86047 }
86048
86049 int exp_pow_of_10 = 0;
86050 while ( begin != end )
86051 {
86052 if ( *begin < czero
86053 || *begin >= czero + 10
86054 || exp_pow_of_10 * 10 < exp_pow_of_10)
86055 return false;
86056
86057 exp_pow_of_10 *= 10;
86058 exp_pow_of_10 += *begin - zero;
86059 ++ begin;
86060 };
86061
86062 if ( exp_pow_of_10 ) {
86063
86064 if ( exp_has_minus ) {
86065 pow_of_10 -= exp_pow_of_10;
86066 } else {
86067 pow_of_10 += exp_pow_of_10;
86068 }
86069 }
86070 }
86071
86072
86073
86074
86075 long double result = std::pow(10.0L, pow_of_10) * mantissa;
86076 value = static_cast<T>( has_minus ? (boost::math::changesign)(result) : result);
86077
86078 if ( (boost::math::isinf)(value) || (boost::math::isnan)(value) ) return false;
86079
86080 return true;
86081 }
86082 }
86083
86084 namespace detail
86085 {
86086 template< class BufferType, class CharT >
86087 class stl_buf_unlocker: public BufferType{
86088 public:
86089 typedef BufferType base_class;
86090
86091 using base_class::pptr;
86092 using base_class::pbase;
86093 using base_class::setg;
86094 using base_class::setp;
86095
86096
86097
86098
86099
86100
86101 };
86102 }
86103
86104 namespace detail
86105 {
86106 struct do_not_construct_stringbuffer_t{};
86107 }
86108
86109 namespace detail
86110 {
86111
86112 template< class CharT
86113 , class Traits
86114 , bool RequiresStringbuffer
86115 >
86116 class lexical_stream_limited_src
86117 {
86118 typedef stl_buf_unlocker<std::basic_streambuf<CharT, Traits>, CharT > local_streambuffer_t;
86119
86120
86121
86122
86123
86124
86125 typedef stl_buf_unlocker<std::basic_stringbuf<CharT, Traits>, CharT > local_stringbuffer_t;
86126
86127 typedef typename ::boost::mpl::if_c<
86128 RequiresStringbuffer,
86129 local_stringbuffer_t,
86130 do_not_construct_stringbuffer_t
86131 >::type deduced_stringbuffer_t;
86132
86133
86134 CharT* start;
86135 CharT* finish;
86136 deduced_stringbuffer_t stringbuffer;
86137
86138 public:
86139 lexical_stream_limited_src(CharT* sta, CharT* fin)
86140 : start(sta)
86141 , finish(fin)
86142 {}
86143
86144 private:
86145
86146 lexical_stream_limited_src(lexical_stream_limited_src const&);
86147 void operator=(lexical_stream_limited_src const&);
86148
86149
86150 bool shl_char(CharT ch)
86151 {
86152 Traits::assign(*start, ch);
86153 finish = start + 1;
86154 return true;
86155 }
86156
86157
86158 template <class T>
86159 bool shl_char(T ch)
86160 {
86161 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( sizeof(T) <= sizeof(CharT))) == 0 ? false : true) >)>
86162
86163 boost_static_assert_typedef_1225;
86164
86165 std::locale loc;
86166 wchar_t w = std::use_facet< std::ctype<wchar_t> >(loc).widen(ch);
86167
86168
86169
86170 Traits::assign(*start, w);
86171 finish = start + 1;
86172 return true;
86173 }
86174
86175
86176 bool shl_char_array(CharT const* str)
86177 {
86178 start = const_cast<CharT*>(str);
86179 finish = start + Traits::length(str);
86180 return true;
86181 }
86182
86183
86184 template <class T>
86185 bool shl_char_array(T const* str)
86186 {
86187 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( sizeof(T) <= sizeof(CharT))) == 0 ? false : true) >)>
86188
86189 boost_static_assert_typedef_1251;
86190 return shl_input_streamable(str);
86191 }
86192
86193
86194 template<typename InputStreamable>
86195 bool shl_input_streamable(InputStreamable& input)
86196 {
86197 std::basic_ostream<CharT> stream(&stringbuffer);
86198 bool const result = !(stream << input).fail();
86199 start = stringbuffer.pbase();
86200 finish = stringbuffer.pptr();
86201 return result;
86202 }
86203
86204 template <class T>
86205 inline bool shl_signed(T n)
86206 {
86207 start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
86208 if(n < 0)
86209 {
86210 --start;
86211 CharT const minus = lcast_char_constants<CharT>::minus;
86212 Traits::assign(*start, minus);
86213 }
86214 return true;
86215 }
86216
86217
86218
86219
86220
86221
86222
86223 template <class T>
86224 bool shl_float(float val,T* out)
86225 { using namespace std;
86226 if (put_inf_nan(start,finish,val)) return true;
86227 finish = start + sprintf(out,"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val );
86228 return finish > start;
86229 }
86230
86231 template <class T>
86232 bool shl_double(double val,T* out)
86233 { using namespace std;
86234 if (put_inf_nan(start,finish,val)) return true;
86235 finish = start + sprintf(out,"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
86236 return finish > start;
86237 }
86238
86239 template <class T>
86240 bool shl_long_double(long double val,T* out)
86241 { using namespace std;
86242 if (put_inf_nan(start,finish,val)) return true;
86243 finish = start + sprintf(out,"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
86244 return finish > start;
86245 }
86246 # 1316 "../boost/lexical_cast.hpp"
86247 bool shl_float(float val,wchar_t* out)
86248 { using namespace std;
86249 if (put_inf_nan(start,finish,val)) return true;
86250 finish = start + swprintf(out,
86251
86252 finish-start,
86253
86254 L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val );
86255
86256 return finish > start;
86257 }
86258
86259
86260 bool shl_double(double val,wchar_t* out)
86261 { using namespace std;
86262 if (put_inf_nan(start,finish,val)) return true;
86263 # 1340 "../boost/lexical_cast.hpp"
86264 finish = start + swprintf(out,
86265
86266 finish-start,
86267
86268 L"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
86269 return finish > start;
86270 }
86271
86272
86273 bool shl_long_double(long double val,wchar_t* out)
86274 { using namespace std;
86275 if (put_inf_nan(start,finish,val)) return true;
86276 finish = start + swprintf(out,
86277
86278 finish-start,
86279
86280 L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
86281 return finish > start;
86282 }
86283
86284
86285
86286
86287
86288 public:
86289 template<class Alloc>
86290 bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str)
86291 {
86292 start = const_cast<CharT*>(str.data());
86293 finish = start + str.length();
86294 return true;
86295 }
86296
86297
86298 template<class Alloc>
86299 bool operator<<(::boost::container::basic_string<CharT,Traits,Alloc> const& str)
86300 {
86301 start = const_cast<CharT*>(str.data());
86302 finish = start + str.length();
86303 return true;
86304 }
86305
86306 bool operator<<(bool value)
86307 {
86308 CharT const czero = lcast_char_constants<CharT>::zero;
86309 Traits::assign(*start, Traits::to_char_type(czero + value));
86310 finish = start + 1;
86311 return true;
86312 }
86313
86314 bool operator<<(char ch) { return shl_char(ch); }
86315 bool operator<<(unsigned char ch) { return ((*this) << static_cast<char>(ch)); }
86316 bool operator<<(signed char ch) { return ((*this) << static_cast<char>(ch)); }
86317
86318 bool operator<<(wchar_t const* str) { return shl_char_array(str); }
86319 bool operator<<(wchar_t * str) { return shl_char_array(str); }
86320
86321 bool operator<<(wchar_t ch) { return shl_char(ch); }
86322
86323
86324 bool operator<<(unsigned char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
86325 bool operator<<(unsigned char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
86326 bool operator<<(signed char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
86327 bool operator<<(signed char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
86328 bool operator<<(char const* str) { return shl_char_array(str); }
86329 bool operator<<(char* str) { return shl_char_array(str); }
86330 bool operator<<(short n) { return shl_signed(n); }
86331 bool operator<<(int n) { return shl_signed(n); }
86332 bool operator<<(long n) { return shl_signed(n); }
86333 bool operator<<(unsigned short n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
86334 bool operator<<(unsigned int n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
86335 bool operator<<(unsigned long n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
86336
86337
86338 bool operator<<(boost::ulong_long_type n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
86339 bool operator<<(boost::long_long_type n) { return shl_signed(n); }
86340
86341
86342
86343
86344 bool operator<<(float val) { return shl_float(val,start); }
86345 bool operator<<(double val) { return shl_double(val,start); }
86346 bool operator<<(long double val) {
86347
86348 return shl_long_double(val,start);
86349
86350
86351
86352 }
86353
86354 template<class InStreamable>
86355 bool operator<<(const InStreamable& input) { return shl_input_streamable(input); }
86356
86357
86358 private:
86359
86360 template <typename Type>
86361 bool shr_unsigned(Type& output)
86362 {
86363 if (start == finish) return false;
86364 CharT const minus = lcast_char_constants<CharT>::minus;
86365 CharT const plus = lcast_char_constants<CharT>::plus;
86366 bool has_minus = false;
86367
86368
86369 if ( Traits::eq(minus,*start) )
86370 {
86371 ++start;
86372 has_minus = true;
86373 } else if ( Traits::eq( plus, *start ) )
86374 {
86375 ++start;
86376 }
86377
86378 bool const succeed = lcast_ret_unsigned<Traits>(output, start, finish);
86379
86380
86381
86382
86383
86384
86385
86386 if (has_minus) output = static_cast<Type>(-output);
86387
86388
86389
86390
86391
86392 return succeed;
86393 }
86394
86395 template <typename Type>
86396 bool shr_signed(Type& output)
86397 {
86398 if (start == finish) return false;
86399 CharT const minus = lcast_char_constants<CharT>::minus;
86400 CharT const plus = lcast_char_constants<CharT>::plus;
86401 typedef typename make_unsigned<Type>::type utype;
86402 utype out_tmp =0;
86403 bool has_minus = false;
86404
86405
86406 if ( Traits::eq(minus,*start) )
86407 {
86408 ++start;
86409 has_minus = true;
86410 } else if ( Traits::eq(plus, *start) )
86411 {
86412 ++start;
86413 }
86414
86415 bool succeed = lcast_ret_unsigned<Traits>(out_tmp, start, finish);
86416 if (has_minus) {
86417
86418
86419
86420
86421
86422
86423
86424 utype const comp_val = static_cast<utype>(-(std::numeric_limits<Type>::min)());
86425 succeed = succeed && out_tmp<=comp_val;
86426 output = -out_tmp;
86427
86428
86429
86430
86431
86432 } else {
86433 utype const comp_val = static_cast<utype>((std::numeric_limits<Type>::max)());
86434 succeed = succeed && out_tmp<=comp_val;
86435 output = out_tmp;
86436 }
86437 return succeed;
86438 }
86439
86440 template<typename InputStreamable>
86441 bool shr_using_base_class(InputStreamable& output)
86442 {
86443
86444
86445
86446
86447
86448 if(is_pointer<InputStreamable>::value)
86449 return false;
86450
86451 local_streambuffer_t bb;
86452 bb.setg(start, start, finish);
86453 std::basic_istream<CharT> stream(&bb);
86454 stream.unsetf(std::ios::skipws);
86455 lcast_set_precision(stream, static_cast<InputStreamable*>(0));
86456
86457
86458
86459 return stream >> output &&
86460 stream.get() ==
86461
86462
86463
86464
86465
86466
86467
86468 Traits::eof();
86469
86470 }
86471
86472 template<class T>
86473 inline bool shr_xchar(T& output)
86474 {
86475 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< ((( sizeof(CharT) == sizeof(T) )) == 0 ? false : true) >)>
86476
86477 boost_static_assert_typedef_1553;
86478 bool const ok = (finish - start == 1);
86479 if(ok) {
86480 CharT out;
86481 Traits::assign(out, *start);
86482 output = static_cast<T>(out);
86483 }
86484 return ok;
86485 }
86486
86487
86488 public:
86489 bool operator>>(unsigned short& output) { return shr_unsigned(output); }
86490 bool operator>>(unsigned int& output) { return shr_unsigned(output); }
86491 bool operator>>(unsigned long int& output) { return shr_unsigned(output); }
86492 bool operator>>(short& output) { return shr_signed(output); }
86493 bool operator>>(int& output) { return shr_signed(output); }
86494 bool operator>>(long int& output) { return shr_signed(output); }
86495
86496 bool operator>>(boost::ulong_long_type& output) { return shr_unsigned(output); }
86497 bool operator>>(boost::long_long_type& output) { return shr_signed(output); }
86498
86499
86500
86501
86502 bool operator>>(char& output) { return shr_xchar(output); }
86503 bool operator>>(unsigned char& output) { return shr_xchar(output); }
86504 bool operator>>(signed char& output) { return shr_xchar(output); }
86505
86506 bool operator>>(wchar_t& output) { return shr_xchar(output); }
86507 # 1596 "../boost/lexical_cast.hpp"
86508 template<class Alloc>
86509 bool operator>>(std::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
86510
86511 template<class Alloc>
86512 bool operator>>(::boost::container::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
86513
86514
86515
86516
86517
86518
86519
86520 bool operator>>(bool& output)
86521 {
86522 CharT const zero = lcast_char_constants<CharT>::zero;
86523 CharT const plus = lcast_char_constants<CharT>::plus;
86524 CharT const minus = lcast_char_constants<CharT>::minus;
86525
86526 switch(finish-start)
86527 {
86528 case 1:
86529 output = Traits::eq(start[0], zero+1);
86530 return output || Traits::eq(start[0], zero );
86531 case 2:
86532 if ( Traits::eq( plus, *start) )
86533 {
86534 ++start;
86535 output = Traits::eq(start[0], zero +1);
86536 return output || Traits::eq(start[0], zero );
86537 } else
86538 {
86539 output = false;
86540 return Traits::eq( minus, *start)
86541 && Traits::eq( zero, start[1]);
86542 }
86543 default:
86544 output = false;
86545 return false;
86546 }
86547 }
86548
86549 bool operator>>(float& output) { return lcast_ret_float<Traits>(output,start,finish); }
86550
86551 private:
86552
86553 template <class T>
86554 bool float_types_converter_internal(T& output, int ) {
86555 if (parse_inf_nan(start, finish, output)) return true;
86556 bool return_value = shr_using_base_class(output);
86557
86558
86559
86560
86561
86562
86563
86564 CharT const minus = lcast_char_constants<CharT>::minus;
86565 CharT const plus = lcast_char_constants<CharT>::plus;
86566 CharT const capital_e = lcast_char_constants<CharT>::capital_e;
86567 CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
86568 if ( return_value &&
86569 (
86570 *(finish-1) == lowercase_e
86571 || *(finish-1) == capital_e
86572 || *(finish-1) == minus
86573 || *(finish-1) == plus
86574 )
86575 ) return false;
86576
86577 return return_value;
86578 }
86579
86580
86581 bool float_types_converter_internal(double& output,char ) {
86582 return lcast_ret_float<Traits>(output,start,finish);
86583 }
86584 public:
86585
86586 bool operator>>(double& output)
86587 {
86588
86589
86590
86591
86592
86593
86594 boost::mpl::if_c<
86595
86596 ::boost::type_traits::ice_eq< sizeof(double), sizeof(long double) >::value,
86597
86598
86599
86600 int,
86601 char
86602 >::type tag = 0;
86603
86604 return float_types_converter_internal(output, tag);
86605 }
86606
86607 bool operator>>(long double& output)
86608 {
86609 int tag = 0;
86610 return float_types_converter_internal(output, tag);
86611 }
86612
86613
86614
86615 template<typename InputStreamable>
86616 bool operator>>(InputStreamable& output) { return shr_using_base_class(output); }
86617 };
86618 }
86619
86620
86621
86622
86623
86624 namespace detail
86625 {
86626 template<class T>
86627 struct array_to_pointer_decay
86628 {
86629 typedef T type;
86630 };
86631
86632 template<class T, std::size_t N>
86633 struct array_to_pointer_decay<T[N]>
86634 {
86635 typedef const T * type;
86636 };
86637
86638 template<typename T>
86639 struct is_stdstring
86640 {
86641 static const bool value = false;
86642 };
86643
86644 template<typename CharT, typename Traits, typename Alloc>
86645 struct is_stdstring< std::basic_string<CharT, Traits, Alloc> >
86646 {
86647 static const bool value = true;
86648 };
86649
86650 template<typename CharT, typename Traits, typename Alloc>
86651 struct is_stdstring< ::boost::container::basic_string<CharT, Traits, Alloc> >
86652 {
86653 static const bool value = true;
86654 };
86655
86656 template<typename T>
86657 struct is_char_or_wchar
86658 {
86659 private:
86660
86661 typedef wchar_t wchar_t_if_supported;
86662
86663
86664
86665
86666
86667
86668
86669 typedef char char16_t_if_supported;
86670
86671
86672
86673
86674
86675 typedef char char32_t_if_supported;
86676
86677 public:
86678
86679 static const bool value = ( ::boost::type_traits::ice_or< is_same< T, char >::value, is_same< T, wchar_t_if_supported >::value, is_same< T, char16_t_if_supported >::value, is_same< T, char32_t_if_supported >::value, is_same< T, unsigned char >::value, is_same< T, signed char >::value >::value )
86680 # 1778 "../boost/lexical_cast.hpp"
86681 ;
86682 };
86683
86684 template<typename Target, typename Source>
86685 struct is_arithmetic_and_not_xchars
86686 {
86687 static const bool value = ( ::boost::type_traits::ice_and< is_arithmetic<Source>::value, is_arithmetic<Target>::value, ::boost::type_traits::ice_not< detail::is_char_or_wchar<Target>::value >::value, ::boost::type_traits::ice_not< detail::is_char_or_wchar<Source>::value >::value >::value )
86688 # 1797 "../boost/lexical_cast.hpp"
86689 ;
86690 };
86691
86692
86693
86694
86695
86696
86697 template<typename Target, typename Source>
86698 struct is_xchar_to_xchar
86699 {
86700 static const bool value = ( ::boost::type_traits::ice_or< ::boost::type_traits::ice_and< is_same<Source,Target>::value, is_char_or_wchar<Target>::value >::value, ::boost::type_traits::ice_and< ::boost::type_traits::ice_eq< sizeof(char),sizeof(Target)>::value, ::boost::type_traits::ice_eq< sizeof(char),sizeof(Source)>::value, is_char_or_wchar<Target>::value, is_char_or_wchar<Source>::value >::value >::value )
86701 # 1823 "../boost/lexical_cast.hpp"
86702 ;
86703 };
86704
86705 template<typename Target, typename Source>
86706 struct is_char_array_to_stdstring
86707 {
86708 static const bool value = false;
86709 };
86710
86711 template<typename CharT, typename Traits, typename Alloc>
86712 struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, CharT* >
86713 {
86714 static const bool value = true;
86715 };
86716
86717 template<typename CharT, typename Traits, typename Alloc>
86718 struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, const CharT* >
86719 {
86720 static const bool value = true;
86721 };
86722
86723 template<typename CharT, typename Traits, typename Alloc>
86724 struct is_char_array_to_stdstring< ::boost::container::basic_string<CharT, Traits, Alloc>, CharT* >
86725 {
86726 static const bool value = true;
86727 };
86728
86729 template<typename CharT, typename Traits, typename Alloc>
86730 struct is_char_array_to_stdstring< ::boost::container::basic_string<CharT, Traits, Alloc>, const CharT* >
86731 {
86732 static const bool value = true;
86733 };
86734 # 1863 "../boost/lexical_cast.hpp"
86735 template<typename Target, typename Source>
86736 struct lexical_cast_do_cast
86737 {
86738 static inline Target lexical_cast_impl(const Source& arg)
86739 {
86740 typedef typename detail::array_to_pointer_decay<Source>::type src;
86741
86742 typedef typename detail::widest_char<
86743 typename detail::stream_char<Target>::type
86744 , typename detail::stream_char<src>::type
86745 >::type char_type;
86746
86747 typedef detail::lcast_src_length<src> lcast_src_length;
86748 std::size_t const src_len = lcast_src_length::value;
86749 char_type buf[src_len + 1];
86750 lcast_src_length::check_coverage();
86751
86752 typedef typename
86753 deduce_char_traits<char_type,Target,Source>::type traits;
86754
86755 typedef typename remove_pointer<src >::type removed_ptr_t;
86756
86757
86758
86759
86760
86761 const bool is_char_types_match =
86762 (::boost::type_traits::ice_or<
86763 ::boost::type_traits::ice_and<
86764 ::boost::type_traits::ice_eq<sizeof(char_type), sizeof(char) >::value,
86765 ::boost::type_traits::ice_or<
86766 ::boost::is_same<char, removed_ptr_t>::value,
86767 ::boost::is_same<unsigned char, removed_ptr_t>::value,
86768 ::boost::is_same<signed char, removed_ptr_t>::value
86769 >::value
86770 >::value,
86771 is_same<char_type, removed_ptr_t>::value
86772 >::value);
86773
86774 const bool requires_stringbuf =
86775 !(
86776 ::boost::type_traits::ice_or<
86777 is_stdstring<src >::value,
86778 is_arithmetic<src >::value,
86779 ::boost::type_traits::ice_and<
86780 is_pointer<src >::value,
86781 is_char_or_wchar<removed_ptr_t >::value,
86782 is_char_types_match
86783 >::value
86784 >::value
86785 );
86786
86787 detail::lexical_stream_limited_src<char_type,traits, requires_stringbuf >
86788 interpreter(buf, buf + src_len);
86789
86790 Target result;
86791
86792 if(!(interpreter.operator <<(arg) && interpreter.operator >>(result)))
86793 throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
86794 return result;
86795 }
86796 };
86797
86798
86799
86800
86801 template<typename Source>
86802 struct lexical_cast_copy
86803 {
86804 static inline Source lexical_cast_impl(const Source &arg)
86805 {
86806 return arg;
86807 }
86808 };
86809
86810 class precision_loss_error : public boost::numeric::bad_numeric_cast
86811 {
86812 public:
86813 virtual const char * what() const throw()
86814 { return "bad numeric conversion: precision loss error"; }
86815 };
86816
86817 template<class S >
86818 struct throw_on_precision_loss
86819 {
86820 typedef boost::numeric::Trunc<S> Rounder;
86821 typedef S source_type ;
86822
86823 typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
86824
86825 static source_type nearbyint ( argument_type s )
86826 {
86827 source_type orig_div_round = s / Rounder::nearbyint(s);
86828
86829 if ( (orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > std::numeric_limits<source_type>::epsilon() )
86830 ::boost::exception_detail::throw_exception_(precision_loss_error(),__PRETTY_FUNCTION__,"../boost/lexical_cast.hpp",1958);
86831 return s ;
86832 }
86833
86834 typedef typename Rounder::round_style round_style;
86835 } ;
86836
86837 template<typename Target, typename Source>
86838 struct lexical_cast_dynamic_num_not_ignoring_minus
86839 {
86840 static inline Target lexical_cast_impl(const Source &arg)
86841 {
86842 try{
86843 typedef boost::numeric::converter<
86844 Target,
86845 Source,
86846 boost::numeric::conversion_traits<Target,Source>,
86847 boost::numeric::def_overflow_handler,
86848 throw_on_precision_loss<Source>
86849 > Converter ;
86850
86851 return Converter::convert(arg);
86852 } catch( ::boost::numeric::bad_numeric_cast const& ) {
86853 throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
86854 }
86855 ;
86856 }
86857 };
86858
86859 template<typename Target, typename Source>
86860 struct lexical_cast_dynamic_num_ignoring_minus
86861 {
86862 static inline Target lexical_cast_impl(const Source &arg)
86863 {
86864 try{
86865 typedef boost::numeric::converter<
86866 Target,
86867 Source,
86868 boost::numeric::conversion_traits<Target,Source>,
86869 boost::numeric::def_overflow_handler,
86870 throw_on_precision_loss<Source>
86871 > Converter ;
86872
86873 bool has_minus = ( arg < 0);
86874 if ( has_minus ) {
86875 return static_cast<Target>(-Converter::convert(-arg));
86876 } else {
86877 return Converter::convert(arg);
86878 }
86879 } catch( ::boost::numeric::bad_numeric_cast const& ) {
86880 throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
86881 }
86882 ;
86883 }
86884 };
86885 # 2032 "../boost/lexical_cast.hpp"
86886 template<typename Target, typename Source>
86887 struct lexical_cast_dynamic_num
86888 {
86889 static inline Target lexical_cast_impl(const Source &arg)
86890 {
86891 typedef typename ::boost::mpl::if_c<
86892 ::boost::type_traits::ice_and<
86893 ::boost::type_traits::ice_or<
86894 ::boost::is_signed<Source>::value,
86895 ::boost::is_float<Source>::value
86896 >::value,
86897 ::boost::type_traits::ice_not<
86898 is_same<Source, bool>::value
86899 >::value,
86900 ::boost::type_traits::ice_not<
86901 is_same<Target, bool>::value
86902 >::value,
86903 ::boost::is_unsigned<Target>::value
86904 >::value,
86905 lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
86906 lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
86907 >::type caster_type;
86908
86909 return caster_type::lexical_cast_impl(arg);
86910 }
86911 };
86912 }
86913
86914 template<typename Target, typename Source>
86915 inline Target lexical_cast(const Source &arg)
86916 {
86917 typedef typename detail::array_to_pointer_decay<Source>::type src;
86918
86919 typedef typename ::boost::type_traits::ice_or<
86920 detail::is_xchar_to_xchar<Target, src>::value,
86921 detail::is_char_array_to_stdstring<Target,src>::value,
86922 ::boost::type_traits::ice_and<
86923 is_same<Target, src>::value,
86924 detail::is_stdstring<Target>::value
86925 >::value
86926 > do_copy_type;
86927
86928 typedef typename
86929 detail::is_arithmetic_and_not_xchars<Target, src> do_copy_with_dynamic_check_type;
86930
86931 typedef typename ::boost::mpl::if_c<
86932 do_copy_type::value,
86933 detail::lexical_cast_copy<src>,
86934 typename ::boost::mpl::if_c<
86935 do_copy_with_dynamic_check_type::value,
86936 detail::lexical_cast_dynamic_num<Target, src>,
86937 detail::lexical_cast_do_cast<Target, src>
86938 >::type
86939 >::type caster_type;
86940
86941 return caster_type::lexical_cast_impl(arg);
86942 }
86943 # 2184 "../boost/lexical_cast.hpp"
86944 }
86945 # 16 "quickbook/src/id_manager.cpp" 2
86946 # 1 "../boost/range/algorithm.hpp" 1
86947 # 32 "../boost/range/algorithm.hpp"
86948 # 1 "../boost/range/detail/range_return.hpp" 1
86949 # 16 "../boost/range/detail/range_return.hpp"
86950 namespace boost
86951 {
86952 enum range_return_value
86953 {
86954
86955 return_found,
86956 return_next,
86957 return_prior,
86958 return_begin_found,
86959 return_begin_next,
86960 return_begin_prior,
86961 return_found_end,
86962 return_next_end,
86963 return_prior_end,
86964 return_begin_end
86965 };
86966
86967 template< class SinglePassRange, range_return_value >
86968 struct range_return
86969 {
86970 typedef boost::iterator_range<
86971 typename range_iterator<SinglePassRange>::type > type;
86972
86973 static type pack(typename range_iterator<SinglePassRange>::type found,
86974 SinglePassRange& rng)
86975 {
86976 return type(found, boost::end(rng));
86977 }
86978 };
86979
86980 template< class SinglePassRange >
86981 struct range_return< SinglePassRange, return_found >
86982 {
86983 typedef typename range_iterator<SinglePassRange>::type type;
86984
86985 static type pack(type found, SinglePassRange&)
86986 {
86987 return found;
86988 }
86989 };
86990
86991 template< class SinglePassRange >
86992 struct range_return< SinglePassRange, return_next >
86993 {
86994 typedef typename range_iterator<SinglePassRange>::type type;
86995
86996 static type pack(type found, SinglePassRange& rng)
86997 {
86998 return found == boost::end(rng)
86999 ? found
87000 : boost::next(found);
87001 }
87002 };
87003
87004 template< class BidirectionalRange >
87005 struct range_return< BidirectionalRange, return_prior >
87006 {
87007 typedef typename range_iterator<BidirectionalRange>::type type;
87008
87009 static type pack(type found, BidirectionalRange& rng)
87010 {
87011 return found == boost::begin(rng)
87012 ? found
87013 : boost::prior(found);
87014 }
87015 };
87016
87017 template< class SinglePassRange >
87018 struct range_return< SinglePassRange, return_begin_found >
87019 {
87020 typedef boost::iterator_range<
87021 typename range_iterator<SinglePassRange>::type > type;
87022
87023 static type pack(typename range_iterator<SinglePassRange>::type found,
87024 SinglePassRange& rng)
87025 {
87026 return type(boost::begin(rng), found);
87027 }
87028 };
87029
87030 template< class SinglePassRange >
87031 struct range_return< SinglePassRange, return_begin_next >
87032 {
87033 typedef boost::iterator_range<
87034 typename range_iterator<SinglePassRange>::type > type;
87035
87036 static type pack(typename range_iterator<SinglePassRange>::type found,
87037 SinglePassRange& rng)
87038 {
87039 return type( boost::begin(rng),
87040 found == boost::end(rng) ? found : boost::next(found) );
87041 }
87042 };
87043
87044 template< class BidirectionalRange >
87045 struct range_return< BidirectionalRange, return_begin_prior >
87046 {
87047 typedef boost::iterator_range<
87048 typename range_iterator<BidirectionalRange>::type > type;
87049
87050 static type pack(typename range_iterator<BidirectionalRange>::type found,
87051 BidirectionalRange& rng)
87052 {
87053 return type( boost::begin(rng),
87054 found == boost::begin(rng) ? found : boost::prior(found) );
87055 }
87056 };
87057
87058 template< class SinglePassRange >
87059 struct range_return< SinglePassRange, return_found_end >
87060 {
87061 typedef boost::iterator_range<
87062 typename range_iterator<SinglePassRange>::type > type;
87063
87064 static type pack(typename range_iterator<SinglePassRange>::type found,
87065 SinglePassRange& rng)
87066 {
87067 return type(found, boost::end(rng));
87068 }
87069 };
87070
87071 template< class SinglePassRange >
87072 struct range_return< SinglePassRange, return_next_end >
87073 {
87074 typedef boost::iterator_range<
87075 typename range_iterator<SinglePassRange>::type > type;
87076
87077 static type pack(typename range_iterator<SinglePassRange>::type found,
87078 SinglePassRange& rng)
87079 {
87080 return type( found == boost::end(rng) ? found : boost::next(found),
87081 boost::end(rng) );
87082 }
87083 };
87084
87085 template< class BidirectionalRange >
87086 struct range_return< BidirectionalRange, return_prior_end >
87087 {
87088 typedef boost::iterator_range<
87089 typename range_iterator<BidirectionalRange>::type > type;
87090
87091 static type pack(typename range_iterator<BidirectionalRange>::type found,
87092 BidirectionalRange& rng)
87093 {
87094 return type( found == boost::begin(rng) ? found : boost::prior(found),
87095 boost::end(rng) );
87096 }
87097 };
87098
87099 template< class SinglePassRange >
87100 struct range_return< SinglePassRange, return_begin_end >
87101 {
87102 typedef boost::iterator_range<
87103 typename range_iterator<SinglePassRange>::type > type;
87104
87105 static type pack(typename range_iterator<SinglePassRange>::type found,
87106 SinglePassRange& rng)
87107 {
87108 return type(boost::begin(rng), boost::end(rng));
87109 }
87110 };
87111
87112 }
87113 # 33 "../boost/range/algorithm.hpp" 2
87114
87115
87116
87117
87118
87119 # 1 "../boost/range/algorithm/adjacent_find.hpp" 1
87120 # 20 "../boost/range/algorithm/adjacent_find.hpp"
87121 namespace boost
87122 {
87123 namespace range
87124 {
87125
87126
87127
87128
87129
87130
87131
87132 template< typename ForwardRange >
87133 inline typename range_iterator<ForwardRange>::type
87134 adjacent_find(ForwardRange & rng)
87135 {
87136 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check35;
87137 return std::adjacent_find(boost::begin(rng),boost::end(rng));
87138 }
87139
87140
87141 template< typename ForwardRange >
87142 inline typename range_iterator<const ForwardRange>::type
87143 adjacent_find(const ForwardRange& rng)
87144 {
87145 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check44;
87146 return std::adjacent_find(boost::begin(rng),boost::end(rng));
87147 }
87148
87149
87150 template< typename ForwardRange, typename BinaryPredicate >
87151 inline typename range_iterator<ForwardRange>::type
87152 adjacent_find(ForwardRange & rng, BinaryPredicate pred)
87153 {
87154 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check53;
87155 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<ForwardRange>::type, typename range_value<ForwardRange>::type>)>::failed>
87156
87157 boost_concept_check56;
87158 return std::adjacent_find(boost::begin(rng),boost::end(rng),pred);
87159 }
87160
87161
87162 template< typename ForwardRange, typename BinaryPredicate >
87163 inline typename range_iterator<const ForwardRange>::type
87164 adjacent_find(const ForwardRange& rng, BinaryPredicate pred)
87165 {
87166 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check65;
87167 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<const ForwardRange>::type, typename range_value<const ForwardRange>::type>)>::failed>
87168
87169 boost_concept_check68;
87170 return std::adjacent_find(boost::begin(rng),boost::end(rng),pred);
87171 }
87172
87173
87174
87175
87176 template< range_return_value re, typename ForwardRange >
87177 inline typename range_return<ForwardRange,re>::type
87178 adjacent_find(ForwardRange & rng)
87179 {
87180 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check79;
87181 return range_return<ForwardRange,re>::
87182 pack(std::adjacent_find(boost::begin(rng),boost::end(rng)),
87183 rng);
87184 }
87185
87186
87187 template< range_return_value re, typename ForwardRange >
87188 inline typename range_return<const ForwardRange,re>::type
87189 adjacent_find(const ForwardRange& rng)
87190 {
87191 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check90;
87192 return range_return<const ForwardRange,re>::
87193 pack(std::adjacent_find(boost::begin(rng),boost::end(rng)),
87194 rng);
87195 }
87196
87197
87198 template< range_return_value re, typename ForwardRange, typename BinaryPredicate >
87199 inline typename range_return<ForwardRange,re>::type
87200 adjacent_find(ForwardRange& rng, BinaryPredicate pred)
87201 {
87202 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check101;
87203 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<ForwardRange>::type, typename range_value<ForwardRange>::type>)>::failed>
87204
87205 boost_concept_check104;
87206 return range_return<ForwardRange,re>::
87207 pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred),
87208 rng);
87209 }
87210
87211
87212 template< range_return_value re, typename ForwardRange, typename BinaryPredicate >
87213 inline typename range_return<const ForwardRange,re>::type
87214 adjacent_find(const ForwardRange& rng, BinaryPredicate pred)
87215 {
87216 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check115;
87217 return range_return<const ForwardRange,re>::
87218 pack(std::adjacent_find(boost::begin(rng),boost::end(rng),pred),
87219 rng);
87220 }
87221
87222 }
87223 using range::adjacent_find;
87224 }
87225 # 39 "../boost/range/algorithm.hpp" 2
87226 # 1 "../boost/range/algorithm/count.hpp" 1
87227 # 19 "../boost/range/algorithm/count.hpp"
87228 namespace boost
87229 {
87230 namespace range
87231 {
87232
87233
87234
87235
87236
87237
87238 template< class SinglePassRange, class Value >
87239 inline typename range_difference<SinglePassRange>::type
87240 count(SinglePassRange& rng, const Value& val)
87241 {
87242 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check33;
87243 return std::count(boost::begin(rng), boost::end(rng), val);
87244 }
87245
87246
87247 template< class SinglePassRange, class Value >
87248 inline typename range_difference<SinglePassRange const>::type
87249 count(const SinglePassRange& rng, const Value& val)
87250 {
87251 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check42;
87252 return std::count(boost::begin(rng), boost::end(rng), val);
87253 }
87254
87255 }
87256 using range::count;
87257 }
87258 # 40 "../boost/range/algorithm.hpp" 2
87259 # 1 "../boost/range/algorithm/count_if.hpp" 1
87260 # 19 "../boost/range/algorithm/count_if.hpp"
87261 namespace boost
87262 {
87263 namespace range
87264 {
87265
87266
87267
87268
87269
87270
87271
87272 template< class SinglePassRange, class UnaryPredicate >
87273 inline typename boost::range_difference<SinglePassRange>::type
87274 count_if(SinglePassRange& rng, UnaryPredicate pred)
87275 {
87276 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check34;
87277 return std::count_if(boost::begin(rng), boost::end(rng), pred);
87278 }
87279
87280
87281 template< class SinglePassRange, class UnaryPredicate >
87282 inline typename boost::range_difference<const SinglePassRange>::type
87283 count_if(const SinglePassRange& rng, UnaryPredicate pred)
87284 {
87285 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check43;
87286 return std::count_if(boost::begin(rng), boost::end(rng), pred);
87287 }
87288
87289 }
87290 using range::count_if;
87291 }
87292 # 41 "../boost/range/algorithm.hpp" 2
87293
87294 # 1 "../boost/range/algorithm/for_each.hpp" 1
87295 # 24 "../boost/range/algorithm/for_each.hpp"
87296 namespace boost
87297 {
87298 namespace range
87299 {
87300 # 69 "../boost/range/algorithm/for_each.hpp"
87301 template< class SinglePassRange, class UnaryFunction >
87302 inline UnaryFunction for_each(SinglePassRange & rng, UnaryFunction fun)
87303 {
87304 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check72;
87305
87306
87307
87308
87309
87310
87311
87312 return std::for_each<
87313 typename range_iterator<SinglePassRange>::type,
87314 UnaryFunction
87315 >(boost::begin(rng),boost::end(rng),fun);
87316
87317 }
87318
87319
87320 template< class SinglePassRange, class UnaryFunction >
87321 inline UnaryFunction for_each(const SinglePassRange& rng, UnaryFunction fun)
87322 {
87323 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check91;
87324
87325
87326
87327
87328
87329
87330
87331 return std::for_each<
87332 typename range_iterator<const SinglePassRange>::type,
87333 UnaryFunction
87334 >(boost::begin(rng), boost::end(rng), fun);
87335
87336 }
87337
87338 }
87339 using range::for_each;
87340 }
87341 # 43 "../boost/range/algorithm.hpp" 2
87342 # 1 "../boost/range/algorithm/find.hpp" 1
87343 # 19 "../boost/range/algorithm/find.hpp"
87344 namespace boost
87345 {
87346 namespace range
87347 {
87348
87349
87350
87351
87352
87353
87354 template< class SinglePassRange, class Value >
87355 inline typename disable_if<
87356 is_const<SinglePassRange>,
87357 typename range_iterator<SinglePassRange>::type
87358 >::type
87359 find( SinglePassRange& rng, const Value& val )
87360 {
87361 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check36;
87362 return std::find(boost::begin(rng), boost::end(rng), val);
87363 }
87364
87365
87366 template< class SinglePassRange, class Value >
87367 inline typename range_iterator<const SinglePassRange>::type
87368 find( const SinglePassRange& rng, const Value& val )
87369 {
87370 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check45;
87371 return std::find(boost::begin(rng), boost::end(rng), val);
87372 }
87373
87374
87375
87376
87377 template< range_return_value re, class SinglePassRange, class Value >
87378 inline typename disable_if<
87379 is_const<SinglePassRange>,
87380 typename range_return<SinglePassRange,re>::type
87381 >::type
87382 find( SinglePassRange& rng, const Value& val )
87383 {
87384 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check59;
87385 return range_return<SinglePassRange,re>::
87386 pack(std::find(boost::begin(rng), boost::end(rng), val),
87387 rng);
87388 }
87389
87390
87391 template< range_return_value re, class SinglePassRange, class Value >
87392 inline typename range_return<const SinglePassRange,re>::type
87393 find( const SinglePassRange& rng, const Value& val )
87394 {
87395 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check70;
87396 return range_return<const SinglePassRange,re>::
87397 pack(std::find(boost::begin(rng), boost::end(rng), val),
87398 rng);
87399 }
87400
87401 }
87402 using range::find;
87403 }
87404 # 44 "../boost/range/algorithm.hpp" 2
87405 # 1 "../boost/range/algorithm/find_end.hpp" 1
87406 # 19 "../boost/range/algorithm/find_end.hpp"
87407 namespace boost
87408 {
87409 namespace range
87410 {
87411 # 31 "../boost/range/algorithm/find_end.hpp"
87412 template< class ForwardRange1, class ForwardRange2 >
87413 inline typename disable_if<
87414 is_const<ForwardRange1>,
87415 typename range_iterator< ForwardRange1 >::type
87416 >::type
87417 find_end(ForwardRange1 & rng1, const ForwardRange2& rng2)
87418 {
87419 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check38;
87420 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check39;
87421
87422 return std::find_end(boost::begin(rng1),boost::end(rng1),
87423 boost::begin(rng2),boost::end(rng2));
87424 }
87425
87426
87427 template< class ForwardRange1, class ForwardRange2 >
87428 inline typename range_iterator< const ForwardRange1 >::type
87429 find_end(const ForwardRange1 & rng1, const ForwardRange2& rng2)
87430 {
87431 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check50;
87432 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check51;
87433
87434 return std::find_end(boost::begin(rng1),boost::end(rng1),
87435 boost::begin(rng2),boost::end(rng2));
87436 }
87437
87438
87439 template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
87440 inline typename disable_if<
87441 is_const<ForwardRange1>,
87442 typename range_iterator<ForwardRange1>::type
87443 >::type
87444 find_end(ForwardRange1 & rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87445 {
87446 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check65;
87447 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check66;
87448
87449 return std::find_end(boost::begin(rng1),boost::end(rng1),
87450 boost::begin(rng2),boost::end(rng2),pred);
87451 }
87452
87453
87454 template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
87455 inline typename range_iterator<const ForwardRange1>::type
87456 find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87457 {
87458 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check77;
87459 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check78;
87460
87461 return std::find_end(boost::begin(rng1),boost::end(rng1),
87462 boost::begin(rng2),boost::end(rng2),pred);
87463 }
87464
87465
87466 template< range_return_value re, class ForwardRange1, class ForwardRange2 >
87467 inline typename disable_if<
87468 is_const<ForwardRange1>,
87469 typename range_return<ForwardRange1,re>::type
87470 >::type
87471 find_end(ForwardRange1& rng1, const ForwardRange2& rng2)
87472 {
87473 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check92;
87474 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check93;
87475
87476 return range_return<ForwardRange1,re>::
87477 pack(std::find_end(boost::begin(rng1), boost::end(rng1),
87478 boost::begin(rng2), boost::end(rng2)),
87479 rng1);
87480 }
87481
87482
87483 template< range_return_value re, class ForwardRange1, class ForwardRange2 >
87484 inline typename range_return<const ForwardRange1,re>::type
87485 find_end(const ForwardRange1& rng1, const ForwardRange2& rng2)
87486 {
87487 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check106;
87488 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check107;
87489
87490 return range_return<const ForwardRange1,re>::
87491 pack(std::find_end(boost::begin(rng1), boost::end(rng1),
87492 boost::begin(rng2), boost::end(rng2)),
87493 rng1);
87494 }
87495
87496
87497 template< range_return_value re, class ForwardRange1, class ForwardRange2,
87498 class BinaryPredicate >
87499 inline typename disable_if<
87500 is_const<ForwardRange1>,
87501 typename range_return<ForwardRange1,re>::type
87502 >::type
87503 find_end(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87504 {
87505 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check124;
87506 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check125;
87507
87508 return range_return<ForwardRange1,re>::
87509 pack(std::find_end(boost::begin(rng1), boost::end(rng1),
87510 boost::begin(rng2), boost::end(rng2), pred),
87511 rng1);
87512 }
87513
87514
87515 template< range_return_value re, class ForwardRange1, class ForwardRange2,
87516 class BinaryPredicate >
87517 inline typename range_return<const ForwardRange1,re>::type
87518 find_end(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87519 {
87520 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check139;
87521 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check140;
87522
87523 return range_return<const ForwardRange1,re>::
87524 pack(std::find_end(boost::begin(rng1), boost::end(rng1),
87525 boost::begin(rng2), boost::end(rng2), pred),
87526 rng1);
87527 }
87528
87529 }
87530 using range::find_end;
87531 }
87532 # 45 "../boost/range/algorithm.hpp" 2
87533 # 1 "../boost/range/algorithm/find_first_of.hpp" 1
87534 # 19 "../boost/range/algorithm/find_first_of.hpp"
87535 namespace boost
87536 {
87537 namespace range
87538 {
87539 # 31 "../boost/range/algorithm/find_first_of.hpp"
87540 template< class SinglePassRange1, class ForwardRange2 >
87541 inline typename disable_if<
87542 is_const<SinglePassRange1>,
87543 typename range_iterator<SinglePassRange1>::type
87544 >::type
87545 find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2)
87546 {
87547 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check38;
87548 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check39;
87549
87550 return std::find_first_of(boost::begin(rng1),boost::end(rng1),
87551 boost::begin(rng2),boost::end(rng2));
87552 }
87553
87554
87555 template< class SinglePassRange1, class ForwardRange2 >
87556 inline typename range_iterator<const SinglePassRange1>::type
87557 find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2)
87558 {
87559 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check50;
87560 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check51;
87561
87562 return std::find_first_of(boost::begin(rng1),boost::end(rng1),
87563 boost::begin(rng2),boost::end(rng2));
87564 }
87565
87566
87567 template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate >
87568 inline typename disable_if<
87569 is_const<SinglePassRange1>,
87570 typename range_iterator<SinglePassRange1>::type
87571 >::type
87572 find_first_of(SinglePassRange1 & rng1, ForwardRange2 const & rng2, BinaryPredicate pred)
87573 {
87574 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check65;
87575 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check66;
87576
87577 return std::find_first_of(boost::begin(rng1),boost::end(rng1),
87578 boost::begin(rng2),boost::end(rng2),pred);
87579 }
87580
87581
87582 template< class SinglePassRange1, class ForwardRange2, class BinaryPredicate >
87583 inline typename range_iterator<const SinglePassRange1>::type
87584 find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87585 {
87586 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check77;
87587 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check78;
87588
87589 return std::find_first_of(boost::begin(rng1),boost::end(rng1),
87590 boost::begin(rng2),boost::end(rng2),pred);
87591 }
87592
87593
87594
87595 template< range_return_value re, class SinglePassRange1, class ForwardRange2 >
87596 inline typename disable_if<
87597 is_const<SinglePassRange1>,
87598 typename range_return<SinglePassRange1,re>::type
87599 >::type
87600 find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2)
87601 {
87602 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check93;
87603 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check94;
87604
87605 return range_return<SinglePassRange1,re>::
87606 pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
87607 boost::begin(rng2), boost::end(rng2)),
87608 rng1);
87609 }
87610
87611
87612 template< range_return_value re, class SinglePassRange1, class ForwardRange2 >
87613 inline typename range_return<const SinglePassRange1,re>::type
87614 find_first_of(const SinglePassRange1& rng1, const ForwardRange2& rng2)
87615 {
87616 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check107;
87617 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check108;
87618
87619 return range_return<const SinglePassRange1,re>::
87620 pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
87621 boost::begin(rng2), boost::end(rng2)),
87622 rng1);
87623 }
87624
87625
87626 template< range_return_value re, class SinglePassRange1, class ForwardRange2,
87627 class BinaryPredicate >
87628 inline typename disable_if<
87629 is_const<SinglePassRange1>,
87630 typename range_return<SinglePassRange1,re>::type
87631 >::type
87632 find_first_of(SinglePassRange1 & rng1, const ForwardRange2& rng2,
87633 BinaryPredicate pred)
87634 {
87635 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check126;
87636 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check127;
87637
87638 return range_return<SinglePassRange1,re>::
87639 pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
87640 boost::begin(rng2), boost::end(rng2), pred),
87641 rng1);
87642 }
87643
87644
87645 template< range_return_value re, class SinglePassRange1, class ForwardRange2,
87646 class BinaryPredicate >
87647 inline typename range_return<const SinglePassRange1,re>::type
87648 find_first_of(const SinglePassRange1 & rng1, const ForwardRange2& rng2,
87649 BinaryPredicate pred)
87650 {
87651 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check142;
87652 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check143;
87653
87654 return range_return<const SinglePassRange1,re>::
87655 pack(std::find_first_of(boost::begin(rng1), boost::end(rng1),
87656 boost::begin(rng2), boost::end(rng2), pred),
87657 rng1);
87658 }
87659
87660 }
87661 using range::find_first_of;
87662 }
87663 # 46 "../boost/range/algorithm.hpp" 2
87664 # 1 "../boost/range/algorithm/find_if.hpp" 1
87665 # 19 "../boost/range/algorithm/find_if.hpp"
87666 namespace boost
87667 {
87668 namespace range
87669 {
87670
87671
87672
87673
87674
87675
87676
87677 template< class SinglePassRange, class UnaryPredicate >
87678 inline typename disable_if<
87679 is_const<SinglePassRange>,
87680 typename range_iterator<SinglePassRange>::type
87681 >::type
87682 find_if( SinglePassRange& rng, UnaryPredicate pred )
87683 {
87684 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check37;
87685 return std::find_if(boost::begin(rng), boost::end(rng), pred);
87686 }
87687
87688
87689 template< class SinglePassRange, class UnaryPredicate >
87690 inline typename range_iterator<const SinglePassRange>::type
87691 find_if( const SinglePassRange& rng, UnaryPredicate pred )
87692 {
87693 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check46;
87694 return std::find_if(boost::begin(rng), boost::end(rng), pred);
87695 }
87696
87697
87698
87699
87700 template< range_return_value re, class SinglePassRange, class UnaryPredicate >
87701 inline typename disable_if<
87702 is_const<SinglePassRange>,
87703 typename range_return<SinglePassRange,re>::type
87704 >::type
87705 find_if( SinglePassRange& rng, UnaryPredicate pred )
87706 {
87707 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange> )>::failed> boost_concept_check60;
87708 return range_return<SinglePassRange,re>::
87709 pack(std::find_if(boost::begin(rng), boost::end(rng), pred),
87710 rng);
87711 }
87712
87713
87714 template< range_return_value re, class SinglePassRange, class UnaryPredicate >
87715 inline typename range_return<const SinglePassRange,re>::type
87716 find_if( const SinglePassRange& rng, UnaryPredicate pred )
87717 {
87718 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check71;
87719 return range_return<const SinglePassRange,re>::
87720 pack(std::find_if(boost::begin(rng), boost::end(rng), pred),
87721 rng);
87722 }
87723
87724 }
87725 using range::find_if;
87726 }
87727 # 47 "../boost/range/algorithm.hpp" 2
87728 # 1 "../boost/range/algorithm/lexicographical_compare.hpp" 1
87729 # 18 "../boost/range/algorithm/lexicographical_compare.hpp"
87730 namespace boost
87731 {
87732 namespace range
87733 {
87734
87735
87736
87737
87738
87739
87740
87741 template<class SinglePassRange1, class SinglePassRange2>
87742 inline bool lexicographical_compare(const SinglePassRange1& rng1,
87743 const SinglePassRange2& rng2)
87744 {
87745 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check33;
87746 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check34;
87747 return std::lexicographical_compare(
87748 boost::begin(rng1), boost::end(rng1),
87749 boost::begin(rng2), boost::end(rng2));
87750 }
87751
87752
87753 template<class SinglePassRange1, class SinglePassRange2,
87754 class BinaryPredicate>
87755 inline bool lexicographical_compare(const SinglePassRange1& rng1,
87756 const SinglePassRange2& rng2,
87757 BinaryPredicate pred)
87758 {
87759 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check47;
87760 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check48;
87761 return std::lexicographical_compare(
87762 boost::begin(rng1), boost::end(rng1),
87763 boost::begin(rng2), boost::end(rng2), pred);
87764 }
87765
87766 }
87767 using range::lexicographical_compare;
87768 }
87769 # 48 "../boost/range/algorithm.hpp" 2
87770 # 1 "../boost/range/algorithm/mismatch.hpp" 1
87771 # 19 "../boost/range/algorithm/mismatch.hpp"
87772 namespace boost
87773 {
87774 namespace range_detail
87775 {
87776 template< class SinglePassTraversalReadableIterator1,
87777 class SinglePassTraversalReadableIterator2 >
87778 inline std::pair<SinglePassTraversalReadableIterator1,
87779 SinglePassTraversalReadableIterator2>
87780 mismatch_impl(SinglePassTraversalReadableIterator1 first1,
87781 SinglePassTraversalReadableIterator1 last1,
87782 SinglePassTraversalReadableIterator2 first2,
87783 SinglePassTraversalReadableIterator2 last2)
87784 {
87785 while (first1 != last1 && first2 != last2 && *first1 == *first2)
87786 {
87787 ++first1;
87788 ++first2;
87789 }
87790 return std::pair<SinglePassTraversalReadableIterator1,
87791 SinglePassTraversalReadableIterator2>(first1, first2);
87792 }
87793
87794 template< class SinglePassTraversalReadableIterator1,
87795 class SinglePassTraversalReadableIterator2,
87796 class BinaryPredicate >
87797 inline std::pair<SinglePassTraversalReadableIterator1,
87798 SinglePassTraversalReadableIterator2>
87799 mismatch_impl(SinglePassTraversalReadableIterator1 first1,
87800 SinglePassTraversalReadableIterator1 last1,
87801 SinglePassTraversalReadableIterator2 first2,
87802 SinglePassTraversalReadableIterator2 last2,
87803 BinaryPredicate pred)
87804 {
87805 while (first1 != last1 && first2 != last2 && pred(*first1, *first2))
87806 {
87807 ++first1;
87808 ++first2;
87809 }
87810 return std::pair<SinglePassTraversalReadableIterator1,
87811 SinglePassTraversalReadableIterator2>(first1, first2);
87812 }
87813 }
87814
87815 namespace range
87816 {
87817
87818
87819
87820
87821
87822
87823
87824 template< class SinglePassRange1, class SinglePassRange2 >
87825 inline std::pair<
87826 typename range_iterator<SinglePassRange1>::type,
87827 typename range_iterator<const SinglePassRange2>::type >
87828 mismatch(SinglePassRange1& rng1, const SinglePassRange2 & rng2)
87829 {
87830 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check77;
87831 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check78;
87832
87833 return ::boost::range_detail::mismatch_impl(
87834 ::boost::begin(rng1), ::boost::end(rng1),
87835 ::boost::begin(rng2), ::boost::end(rng2));
87836 }
87837
87838
87839 template< class SinglePassRange1, class SinglePassRange2 >
87840 inline std::pair<
87841 typename range_iterator<const SinglePassRange1>::type,
87842 typename range_iterator<const SinglePassRange2>::type >
87843 mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2)
87844 {
87845 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check92;
87846 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check93;
87847
87848 return ::boost::range_detail::mismatch_impl(
87849 ::boost::begin(rng1), ::boost::end(rng1),
87850 ::boost::begin(rng2), ::boost::end(rng2));
87851 }
87852
87853
87854 template< class SinglePassRange1, class SinglePassRange2 >
87855 inline std::pair<
87856 typename range_iterator<SinglePassRange1>::type,
87857 typename range_iterator<SinglePassRange2>::type >
87858 mismatch(SinglePassRange1& rng1, SinglePassRange2 & rng2)
87859 {
87860 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check107;
87861 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange2> )>::failed> boost_concept_check108;
87862
87863 return ::boost::range_detail::mismatch_impl(
87864 ::boost::begin(rng1), ::boost::end(rng1),
87865 ::boost::begin(rng2), ::boost::end(rng2));
87866 }
87867
87868
87869 template< class SinglePassRange1, class SinglePassRange2 >
87870 inline std::pair<
87871 typename range_iterator<const SinglePassRange1>::type,
87872 typename range_iterator<SinglePassRange2>::type >
87873 mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2)
87874 {
87875 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check122;
87876 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange2> )>::failed> boost_concept_check123;
87877
87878 return ::boost::range_detail::mismatch_impl(
87879 ::boost::begin(rng1), ::boost::end(rng1),
87880 ::boost::begin(rng2), ::boost::end(rng2));
87881 }
87882
87883
87884
87885 template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
87886 inline std::pair<
87887 typename range_iterator<SinglePassRange1>::type,
87888 typename range_iterator<const SinglePassRange2>::type >
87889 mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred)
87890 {
87891 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check138;
87892 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check139;
87893
87894 return ::boost::range_detail::mismatch_impl(
87895 ::boost::begin(rng1), ::boost::end(rng1),
87896 ::boost::begin(rng2), ::boost::end(rng2), pred);
87897 }
87898
87899
87900 template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
87901 inline std::pair<
87902 typename range_iterator<const SinglePassRange1>::type,
87903 typename range_iterator<const SinglePassRange2>::type >
87904 mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred)
87905 {
87906 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check153;
87907 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check154;
87908
87909 return ::boost::range_detail::mismatch_impl(
87910 ::boost::begin(rng1), ::boost::end(rng1),
87911 ::boost::begin(rng2), ::boost::end(rng2), pred);
87912 }
87913
87914
87915 template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
87916 inline std::pair<
87917 typename range_iterator<SinglePassRange1>::type,
87918 typename range_iterator<SinglePassRange2>::type >
87919 mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred)
87920 {
87921 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange1> )>::failed> boost_concept_check168;
87922 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange2> )>::failed> boost_concept_check169;
87923
87924 return ::boost::range_detail::mismatch_impl(
87925 ::boost::begin(rng1), ::boost::end(rng1),
87926 ::boost::begin(rng2), ::boost::end(rng2), pred);
87927 }
87928
87929
87930 template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
87931 inline std::pair<
87932 typename range_iterator<const SinglePassRange1>::type,
87933 typename range_iterator<SinglePassRange2>::type >
87934 mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2, BinaryPredicate pred)
87935 {
87936 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check183;
87937 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<SinglePassRange2> )>::failed> boost_concept_check184;
87938
87939 return ::boost::range_detail::mismatch_impl(
87940 ::boost::begin(rng1), ::boost::end(rng1),
87941 ::boost::begin(rng2), ::boost::end(rng2), pred);
87942 }
87943
87944 }
87945 using range::mismatch;
87946 }
87947 # 49 "../boost/range/algorithm.hpp" 2
87948 # 1 "../boost/range/algorithm/search.hpp" 1
87949 # 19 "../boost/range/algorithm/search.hpp"
87950 namespace boost
87951 {
87952 namespace range
87953 {
87954 # 31 "../boost/range/algorithm/search.hpp"
87955 template< class ForwardRange1, class ForwardRange2 >
87956 inline typename range_iterator<ForwardRange1>::type
87957 search(ForwardRange1& rng1, const ForwardRange2& rng2)
87958 {
87959 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check35;
87960 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check36;
87961 return std::search(boost::begin(rng1),boost::end(rng1),
87962 boost::begin(rng2),boost::end(rng2));
87963 }
87964
87965
87966 template< class ForwardRange1, class ForwardRange2 >
87967 inline typename range_iterator<const ForwardRange1>::type
87968 search(const ForwardRange1& rng1, const ForwardRange2& rng2)
87969 {
87970 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check46;
87971 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check47;
87972 return std::search(boost::begin(rng1), boost::end(rng1),
87973 boost::begin(rng2), boost::end(rng2));
87974 }
87975
87976
87977 template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
87978 inline typename range_iterator<ForwardRange1>::type
87979 search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87980 {
87981 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check57;
87982 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check58;
87983 return std::search(boost::begin(rng1),boost::end(rng1),
87984 boost::begin(rng2),boost::end(rng2),pred);
87985 }
87986
87987
87988 template< class ForwardRange1, class ForwardRange2, class BinaryPredicate >
87989 inline typename range_iterator<const ForwardRange1>::type
87990 search(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
87991 {
87992 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check68;
87993 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check69;
87994 return std::search(boost::begin(rng1), boost::end(rng1),
87995 boost::begin(rng2), boost::end(rng2), pred);
87996 }
87997
87998
87999
88000
88001 template< range_return_value re, class ForwardRange1, class ForwardRange2 >
88002 inline typename range_return<ForwardRange1,re>::type
88003 search(ForwardRange1& rng1, const ForwardRange2& rng2)
88004 {
88005 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check81;
88006 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check82;
88007 return range_return<ForwardRange1,re>::
88008 pack(std::search(boost::begin(rng1),boost::end(rng1),
88009 boost::begin(rng2),boost::end(rng2)),
88010 rng1);
88011 }
88012
88013
88014 template< range_return_value re, class ForwardRange1, class ForwardRange2 >
88015 inline typename range_return<const ForwardRange1,re>::type
88016 search(const ForwardRange1& rng1, const ForwardRange2& rng2)
88017 {
88018 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check94;
88019 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check95;
88020 return range_return<const ForwardRange1,re>::
88021 pack(std::search(boost::begin(rng1),boost::end(rng1),
88022 boost::begin(rng2),boost::end(rng2)),
88023 rng1);
88024 }
88025
88026
88027 template< range_return_value re, class ForwardRange1, class ForwardRange2,
88028 class BinaryPredicate >
88029 inline typename range_return<ForwardRange1,re>::type
88030 search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
88031 {
88032 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange1> )>::failed> boost_concept_check108;
88033 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check109;
88034 return range_return<ForwardRange1,re>::
88035 pack(std::search(boost::begin(rng1),boost::end(rng1),
88036 boost::begin(rng2),boost::end(rng2),pred),
88037 rng1);
88038 }
88039
88040
88041 template< range_return_value re, class ForwardRange1, class ForwardRange2,
88042 class BinaryPredicate >
88043 inline typename range_return<const ForwardRange1,re>::type
88044 search(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred)
88045 {
88046 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange1> )>::failed> boost_concept_check122;
88047 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange2> )>::failed> boost_concept_check123;
88048 return range_return<const ForwardRange1,re>::
88049 pack(std::search(boost::begin(rng1),boost::end(rng1),
88050 boost::begin(rng2),boost::end(rng2),pred),
88051 rng1);
88052 }
88053
88054 }
88055 using range::search;
88056 }
88057 # 50 "../boost/range/algorithm.hpp" 2
88058 # 1 "../boost/range/algorithm/search_n.hpp" 1
88059 # 21 "../boost/range/algorithm/search_n.hpp"
88060 namespace boost
88061 {
88062 namespace range
88063 {
88064
88065 namespace range_detail
88066 {
88067
88068
88069
88070
88071
88072 template<typename ForwardIterator, typename Integer, typename Value>
88073 inline ForwardIterator
88074 search_n_impl(ForwardIterator first, ForwardIterator last, Integer count,
88075 const Value& value, std::forward_iterator_tag)
88076 {
88077 first = std::find(first, last, value);
88078 while (first != last)
88079 {
88080 typename std::iterator_traits<ForwardIterator>::difference_type n = count;
88081 ForwardIterator i = first;
88082 ++i;
88083 while (i != last && n != 1 && *i==value)
88084 {
88085 ++i;
88086 --n;
88087 }
88088 if (n == 1)
88089 return first;
88090 if (i == last)
88091 return last;
88092 first = std::find(++i, last, value);
88093 }
88094 return last;
88095 }
88096
88097
88098 template<typename RandomAccessIterator, typename Integer, typename Value>
88099 inline RandomAccessIterator
88100 search_n_impl(RandomAccessIterator first, RandomAccessIterator last,
88101 Integer count, const Value& value,
88102 std::random_access_iterator_tag)
88103 {
88104 typedef typename std::iterator_traits<RandomAccessIterator>::difference_type difference_t;
88105
88106 difference_t tail_size = last - first;
88107 const difference_t pattern_size = count;
88108
88109 if (tail_size < pattern_size)
88110 return last;
88111
88112 const difference_t skip_offset = pattern_size - 1;
88113 RandomAccessIterator look_ahead = first + skip_offset;
88114 tail_size -= pattern_size;
88115
88116 while (1)
88117 {
88118
88119
88120 while (!(*look_ahead == value))
88121 {
88122 if (tail_size < pattern_size)
88123 return last;
88124 look_ahead += pattern_size;
88125 tail_size -= pattern_size;
88126 }
88127 difference_t remainder = skip_offset;
88128 for (RandomAccessIterator back_track = look_ahead - 1;
88129 *back_track == value; --back_track)
88130 {
88131 if (--remainder == 0)
88132 {
88133 return look_ahead - skip_offset;
88134 }
88135 }
88136 if (remainder > tail_size)
88137 return last;
88138 look_ahead += remainder;
88139 tail_size -= remainder;
88140 }
88141
88142 return last;
88143 }
88144
88145
88146
88147 template<typename ForwardIterator, typename Integer, typename Value,
88148 typename BinaryPredicate>
88149 inline ForwardIterator
88150 search_n_pred_impl(ForwardIterator first, ForwardIterator last,
88151 Integer count, const Value& value,
88152 BinaryPredicate pred, std::forward_iterator_tag)
88153 {
88154 typedef typename std::iterator_traits<ForwardIterator>::difference_type difference_t;
88155
88156 while (first != last && !static_cast<bool>(pred(*first, value)))
88157 ++first;
88158
88159 while (first != last)
88160 {
88161 difference_t n = count;
88162 ForwardIterator i = first;
88163 ++i;
88164 while (i != last && n != 1 && static_cast<bool>(pred(*i, value)))
88165 {
88166 ++i;
88167 --n;
88168 }
88169 if (n == 1)
88170 return first;
88171 if (i == last)
88172 return last;
88173 first = ++i;
88174 while (first != last && !static_cast<bool>(pred(*first, value)))
88175 ++first;
88176 }
88177 return last;
88178 }
88179
88180
88181
88182 template<typename RandomAccessIterator, typename Integer,
88183 typename Value, typename BinaryPredicate>
88184 inline RandomAccessIterator
88185 search_n_pred_impl(RandomAccessIterator first, RandomAccessIterator last,
88186 Integer count, const Value& value,
88187 BinaryPredicate pred, std::random_access_iterator_tag)
88188 {
88189 typedef typename std::iterator_traits<RandomAccessIterator>::difference_type difference_t;
88190
88191 difference_t tail_size = last - first;
88192 const difference_t pattern_size = count;
88193
88194 if (tail_size < pattern_size)
88195 return last;
88196
88197 const difference_t skip_offset = pattern_size - 1;
88198 RandomAccessIterator look_ahead = first + skip_offset;
88199 tail_size -= pattern_size;
88200
88201 while (1)
88202 {
88203
88204
88205 while (!static_cast<bool>(pred(*look_ahead, value)))
88206 {
88207 if (tail_size < pattern_size)
88208 return last;
88209 look_ahead += pattern_size;
88210 tail_size -= pattern_size;
88211 }
88212 difference_t remainder = skip_offset;
88213 for (RandomAccessIterator back_track = look_ahead - 1;
88214 pred(*back_track, value); --back_track)
88215 {
88216 if (--remainder == 0)
88217 return look_ahead -= skip_offset;
88218 }
88219 if (remainder > tail_size)
88220 {
88221 return last;
88222 }
88223 look_ahead += remainder;
88224 tail_size -= remainder;
88225 }
88226 }
88227
88228 template<typename ForwardIterator, typename Integer, typename Value>
88229 inline ForwardIterator
88230 search_n_impl(ForwardIterator first, ForwardIterator last,
88231 Integer count, const Value& value)
88232 {
88233 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardIteratorConcept<ForwardIterator>)>::failed> boost_concept_check194;
88234 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(EqualityComparableConcept<Value>)>::failed> boost_concept_check195;
88235 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(EqualityComparableConcept<typename std::iterator_traits<ForwardIterator>::value_type>)>::failed> boost_concept_check196;
88236
88237
88238 typedef typename std::iterator_traits<ForwardIterator>::iterator_category cat_t;
88239
88240 if (count <= 0)
88241 return first;
88242 if (count == 1)
88243 return std::find(first, last, value);
88244 return range_detail::search_n_impl(first, last, count, value, cat_t());
88245 }
88246
88247 template<typename ForwardIterator, typename Integer, typename Value,
88248 typename BinaryPredicate>
88249 inline ForwardIterator
88250 search_n_pred_impl(ForwardIterator first, ForwardIterator last,
88251 Integer count, const Value& value,
88252 BinaryPredicate pred)
88253 {
88254 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardIteratorConcept<ForwardIterator>)>::failed> boost_concept_check215;
88255 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BinaryPredicateConcept< BinaryPredicate, typename std::iterator_traits<ForwardIterator>::value_type, Value> )>::failed>
88256
88257
88258
88259
88260 boost_concept_check221;
88261
88262 typedef typename std::iterator_traits<ForwardIterator>::iterator_category cat_t;
88263
88264 if (count <= 0)
88265 return first;
88266 if (count == 1)
88267 {
88268 while (first != last && !static_cast<bool>(pred(*first, value)))
88269 ++first;
88270 return first;
88271 }
88272 return range_detail::search_n_pred_impl(first, last, count,
88273 value, pred, cat_t());
88274 }
88275 }
88276 # 247 "../boost/range/algorithm/search_n.hpp"
88277 template< class ForwardRange, class Integer, class Value >
88278 inline typename range_iterator<ForwardRange>::type
88279 search_n(ForwardRange& rng, Integer count, const Value& value)
88280 {
88281 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check251;
88282 return range_detail::search_n_impl(boost::begin(rng),boost::end(rng), count, value);
88283 }
88284
88285
88286 template< class ForwardRange, class Integer, class Value >
88287 inline typename range_iterator<const ForwardRange>::type
88288 search_n(const ForwardRange& rng, Integer count, const Value& value)
88289 {
88290 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<const ForwardRange>)>::failed> boost_concept_check260;
88291 return range_detail::search_n_impl(boost::begin(rng), boost::end(rng), count, value);
88292 }
88293
88294
88295 template< class ForwardRange, class Integer, class Value,
88296 class BinaryPredicate >
88297 inline typename range_iterator<ForwardRange>::type
88298 search_n(ForwardRange& rng, Integer count, const Value& value,
88299 BinaryPredicate binary_pred)
88300 {
88301 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check271;
88302 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<ForwardRange>::type, const Value&>)>::failed>
88303 boost_concept_check273;
88304 return range_detail::search_n_pred_impl(boost::begin(rng), boost::end(rng),
88305 count, value, binary_pred);
88306 }
88307
88308
88309 template< class ForwardRange, class Integer, class Value,
88310 class BinaryPredicate >
88311 inline typename range_iterator<const ForwardRange>::type
88312 search_n(const ForwardRange& rng, Integer count, const Value& value,
88313 BinaryPredicate binary_pred)
88314 {
88315 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<const ForwardRange>)>::failed> boost_concept_check285;
88316 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<const ForwardRange>::type, const Value&>)>::failed>
88317 boost_concept_check287;
88318 return range_detail::search_n_pred_impl(boost::begin(rng), boost::end(rng),
88319 count, value, binary_pred);
88320 }
88321
88322
88323
88324
88325 template< range_return_value re, class ForwardRange, class Integer,
88326 class Value >
88327 inline typename range_return<ForwardRange,re>::type
88328 search_n(ForwardRange& rng, Integer count, const Value& value)
88329 {
88330 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check300;
88331 return range_return<ForwardRange,re>::
88332 pack(range_detail::search_n_impl(boost::begin(rng),boost::end(rng),
88333 count, value),
88334 rng);
88335 }
88336
88337
88338 template< range_return_value re, class ForwardRange, class Integer,
88339 class Value >
88340 inline typename range_return<const ForwardRange,re>::type
88341 search_n(const ForwardRange& rng, Integer count, const Value& value)
88342 {
88343 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<const ForwardRange>)>::failed> boost_concept_check313;
88344 return range_return<const ForwardRange,re>::
88345 pack(range_detail::search_n_impl(boost::begin(rng), boost::end(rng),
88346 count, value),
88347 rng);
88348 }
88349
88350
88351 template< range_return_value re, class ForwardRange, class Integer,
88352 class Value, class BinaryPredicate >
88353 inline typename range_return<ForwardRange,re>::type
88354 search_n(ForwardRange& rng, Integer count, const Value& value,
88355 BinaryPredicate pred)
88356 {
88357 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<ForwardRange>)>::failed> boost_concept_check327;
88358 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<ForwardRange>::type, const Value&>)>::failed>
88359
88360 boost_concept_check330;
88361 return range_return<ForwardRange,re>::
88362 pack(range_detail::search_n_pred_impl(boost::begin(rng),
88363 boost::end(rng),
88364 count, value, pred),
88365 rng);
88366 }
88367
88368
88369 template< range_return_value re, class ForwardRange, class Integer,
88370 class Value, class BinaryPredicate >
88371 inline typename range_return<const ForwardRange,re>::type
88372 search_n(const ForwardRange& rng, Integer count, const Value& value,
88373 BinaryPredicate pred)
88374 {
88375 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(ForwardRangeConcept<const ForwardRange>)>::failed> boost_concept_check345;
88376 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicateConcept<BinaryPredicate, typename range_value<const ForwardRange>::type, const Value&>)>::failed>
88377
88378 boost_concept_check348;
88379 return range_return<const ForwardRange,re>::
88380 pack(range_detail::search_n_pred_impl(boost::begin(rng),
88381 boost::end(rng),
88382 count, value, pred),
88383 rng);
88384 }
88385
88386 }
88387 using range::search_n;
88388 }
88389 # 51 "../boost/range/algorithm.hpp" 2
88390
88391
88392 # 1 "../boost/range/algorithm/copy.hpp" 1
88393 # 19 "../boost/range/algorithm/copy.hpp"
88394 namespace boost
88395 {
88396 namespace range
88397 {
88398
88399
88400
88401
88402
88403
88404
88405 template< class SinglePassRange, class OutputIterator >
88406 inline OutputIterator copy(const SinglePassRange& rng, OutputIterator out)
88407 {
88408 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check33;
88409 return std::copy(boost::begin(rng),boost::end(rng),out);
88410 }
88411
88412 }
88413 using range::copy;
88414 }
88415 # 54 "../boost/range/algorithm.hpp" 2
88416 # 1 "../boost/range/algorithm/copy_backward.hpp" 1
88417 # 18 "../boost/range/algorithm/copy_backward.hpp"
88418 namespace boost
88419 {
88420 namespace range
88421 {
88422 # 30 "../boost/range/algorithm/copy_backward.hpp"
88423 template< class BidirectionalRange, class BidirectionalTraversalWriteableIterator >
88424 inline BidirectionalTraversalWriteableIterator
88425 copy_backward(const BidirectionalRange& rng,
88426 BidirectionalTraversalWriteableIterator out)
88427 {
88428 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check35;
88429 return std::copy_backward(boost::begin(rng), boost::end(rng), out);
88430 }
88431
88432 }
88433 using range::copy_backward;
88434 }
88435 # 55 "../boost/range/algorithm.hpp" 2
88436 # 1 "../boost/range/algorithm/fill.hpp" 1
88437 # 18 "../boost/range/algorithm/fill.hpp"
88438 namespace boost
88439 {
88440 namespace range
88441 {
88442
88443
88444
88445
88446
88447
88448 template< class ForwardRange, class Value >
88449 inline ForwardRange& fill(ForwardRange& rng, const Value& val)
88450 {
88451 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check31;
88452 std::fill(boost::begin(rng), boost::end(rng), val);
88453 return rng;
88454 }
88455
88456
88457 template< class ForwardRange, class Value >
88458 inline const ForwardRange& fill(const ForwardRange& rng, const Value& val)
88459 {
88460 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check40;
88461 std::fill(boost::begin(rng), boost::end(rng), val);
88462 return rng;
88463 }
88464
88465 }
88466 using range::fill;
88467 }
88468 # 56 "../boost/range/algorithm.hpp" 2
88469 # 1 "../boost/range/algorithm/fill_n.hpp" 1
88470 # 12 "../boost/range/algorithm/fill_n.hpp"
88471 # 1 "../boost/assert.hpp" 1
88472 # 50 "../boost/assert.hpp"
88473 # 1 "/usr/include/assert.h" 1 3 4
88474 # 51 "../boost/assert.hpp" 2
88475 # 13 "../boost/range/algorithm/fill_n.hpp" 2
88476
88477
88478
88479
88480
88481
88482 namespace boost
88483 {
88484 namespace range
88485 {
88486
88487
88488
88489
88490
88491
88492
88493 template< class ForwardRange, class Size, class Value >
88494 inline ForwardRange& fill_n(ForwardRange& rng, Size n, const Value& val)
88495 {
88496 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check33;
88497 (static_cast<void> (0));
88498 std::fill_n(boost::begin(rng), n, val);
88499 return rng;
88500 }
88501
88502
88503 template< class ForwardRange, class Size, class Value >
88504 inline const ForwardRange& fill_n(const ForwardRange& rng, Size n, const Value& val)
88505 {
88506 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check43;
88507 (static_cast<void> (0));
88508 std::fill_n(boost::begin(rng), n, val);
88509 return rng;
88510 }
88511
88512 }
88513 using range::fill_n;
88514 }
88515 # 57 "../boost/range/algorithm.hpp" 2
88516 # 1 "../boost/range/algorithm/generate.hpp" 1
88517 # 18 "../boost/range/algorithm/generate.hpp"
88518 namespace boost
88519 {
88520 namespace range
88521 {
88522
88523
88524
88525
88526
88527
88528 template< class ForwardRange, class Generator >
88529 inline ForwardRange& generate( ForwardRange& rng, Generator gen )
88530 {
88531 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check31;
88532 std::generate(boost::begin(rng), boost::end(rng), gen);
88533 return rng;
88534 }
88535
88536
88537 template< class ForwardRange, class Generator >
88538 inline const ForwardRange& generate( const ForwardRange& rng, Generator gen )
88539 {
88540 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check40;
88541 std::generate(boost::begin(rng), boost::end(rng), gen);
88542 return rng;
88543 }
88544
88545 }
88546 using range::generate;
88547 }
88548 # 58 "../boost/range/algorithm.hpp" 2
88549 # 1 "../boost/range/algorithm/inplace_merge.hpp" 1
88550 # 18 "../boost/range/algorithm/inplace_merge.hpp"
88551 namespace boost
88552 {
88553 namespace range
88554 {
88555
88556
88557
88558
88559
88560
88561
88562 template<class BidirectionalRange>
88563 inline BidirectionalRange& inplace_merge(BidirectionalRange& rng,
88564 typename range_iterator<BidirectionalRange>::type middle)
88565 {
88566 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check33;
88567 std::inplace_merge(boost::begin(rng), middle, boost::end(rng));
88568 return rng;
88569 }
88570
88571
88572 template<class BidirectionalRange>
88573 inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng,
88574 typename boost::range_iterator<const BidirectionalRange>::type middle)
88575 {
88576 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check43;
88577 std::inplace_merge(boost::begin(rng), middle, boost::end(rng));
88578 return rng;
88579 }
88580
88581
88582 template<class BidirectionalRange, class BinaryPredicate>
88583 inline BidirectionalRange& inplace_merge(BidirectionalRange& rng,
88584 typename boost::range_iterator<BidirectionalRange>::type middle,
88585 BinaryPredicate pred)
88586 {
88587 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check54;
88588 std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred);
88589 return rng;
88590 }
88591
88592
88593 template<class BidirectionalRange, class BinaryPredicate>
88594 inline const BidirectionalRange& inplace_merge(const BidirectionalRange& rng,
88595 typename boost::range_iterator<const BidirectionalRange>::type middle,
88596 BinaryPredicate pred)
88597 {
88598 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check65;
88599 std::inplace_merge(boost::begin(rng), middle, boost::end(rng), pred);
88600 return rng;
88601 }
88602
88603 }
88604 using range::inplace_merge;
88605 }
88606 # 59 "../boost/range/algorithm.hpp" 2
88607 # 1 "../boost/range/algorithm/merge.hpp" 1
88608 # 18 "../boost/range/algorithm/merge.hpp"
88609 namespace boost
88610 {
88611 namespace range
88612 {
88613 # 31 "../boost/range/algorithm/merge.hpp"
88614 template<class SinglePassRange1, class SinglePassRange2,
88615 class OutputIterator>
88616 inline OutputIterator merge(const SinglePassRange1& rng1,
88617 const SinglePassRange2& rng2,
88618 OutputIterator out)
88619 {
88620 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check37;
88621 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check38;
88622 return std::merge(boost::begin(rng1), boost::end(rng1),
88623 boost::begin(rng2), boost::end(rng2), out);
88624 }
88625
88626
88627 template<class SinglePassRange1, class SinglePassRange2,
88628 class OutputIterator, class BinaryPredicate>
88629 inline OutputIterator merge(const SinglePassRange1& rng1,
88630 const SinglePassRange2& rng2,
88631 OutputIterator out,
88632 BinaryPredicate pred)
88633 {
88634 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check51;
88635 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check52;
88636 return std::merge(boost::begin(rng1), boost::end(rng1),
88637 boost::begin(rng2), boost::end(rng2), out, pred);
88638 }
88639
88640 }
88641 using range::merge;
88642 }
88643 # 60 "../boost/range/algorithm.hpp" 2
88644 # 1 "../boost/range/algorithm/nth_element.hpp" 1
88645 # 18 "../boost/range/algorithm/nth_element.hpp"
88646 namespace boost
88647 {
88648 namespace range
88649 {
88650
88651
88652
88653
88654
88655
88656
88657 template<class RandomAccessRange>
88658 inline RandomAccessRange& nth_element(RandomAccessRange& rng,
88659 typename range_iterator<RandomAccessRange>::type nth)
88660 {
88661 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check33;
88662 std::nth_element(boost::begin(rng), nth, boost::end(rng));
88663 return rng;
88664 }
88665
88666
88667 template<class RandomAccessRange>
88668 inline const RandomAccessRange& nth_element(const RandomAccessRange& rng,
88669 typename range_iterator<const RandomAccessRange>::type nth)
88670 {
88671 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check43;
88672 std::nth_element(boost::begin(rng), nth, boost::end(rng));
88673 return rng;
88674 }
88675
88676
88677 template<class RandomAccessRange, class BinaryPredicate>
88678 inline RandomAccessRange& nth_element(RandomAccessRange& rng,
88679 typename range_iterator<RandomAccessRange>::type nth,
88680 BinaryPredicate sort_pred)
88681 {
88682 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check54;
88683 std::nth_element(boost::begin(rng), nth, boost::end(rng), sort_pred);
88684 return rng;
88685 }
88686
88687
88688 template<class RandomAccessRange, class BinaryPredicate>
88689 inline const RandomAccessRange& nth_element(const RandomAccessRange& rng,
88690 typename range_iterator<const RandomAccessRange>::type nth,
88691 BinaryPredicate sort_pred)
88692 {
88693 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check65;
88694 std::nth_element(boost::begin(rng), nth, boost::end(rng), sort_pred);
88695 return rng;
88696 }
88697
88698 }
88699 using range::nth_element;
88700 }
88701 # 61 "../boost/range/algorithm.hpp" 2
88702 # 1 "../boost/range/algorithm/partial_sort.hpp" 1
88703 # 18 "../boost/range/algorithm/partial_sort.hpp"
88704 namespace boost
88705 {
88706 namespace range
88707 {
88708
88709
88710
88711
88712
88713
88714
88715 template<class RandomAccessRange>
88716 inline RandomAccessRange& partial_sort(RandomAccessRange& rng,
88717 typename range_iterator<RandomAccessRange>::type middle)
88718 {
88719 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check33;
88720 std::partial_sort(boost::begin(rng), middle, boost::end(rng));
88721 return rng;
88722 }
88723
88724
88725 template<class RandomAccessRange>
88726 inline const RandomAccessRange& partial_sort(const RandomAccessRange& rng,
88727 typename range_iterator<const RandomAccessRange>::type middle)
88728 {
88729 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check43;
88730 std::partial_sort(boost::begin(rng), middle, boost::end(rng));
88731 return rng;
88732 }
88733
88734
88735 template<class RandomAccessRange, class BinaryPredicate>
88736 inline RandomAccessRange& partial_sort(RandomAccessRange& rng,
88737 typename range_iterator<RandomAccessRange>::type middle,
88738 BinaryPredicate sort_pred)
88739 {
88740 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check54;
88741 std::partial_sort(boost::begin(rng), middle, boost::end(rng),
88742 sort_pred);
88743 return rng;
88744 }
88745
88746
88747 template<class RandomAccessRange, class BinaryPredicate>
88748 inline const RandomAccessRange& partial_sort(const RandomAccessRange& rng,
88749 typename range_iterator<const RandomAccessRange>::type middle,
88750 BinaryPredicate sort_pred)
88751 {
88752 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check66;
88753 std::partial_sort(boost::begin(rng), middle, boost::end(rng),
88754 sort_pred);
88755 return rng;
88756 }
88757
88758 }
88759 using range::partial_sort;
88760 }
88761 # 62 "../boost/range/algorithm.hpp" 2
88762 # 1 "../boost/range/algorithm/partial_sort_copy.hpp" 1
88763 # 19 "../boost/range/algorithm/partial_sort_copy.hpp"
88764 namespace boost
88765 {
88766 namespace range
88767 {
88768 # 31 "../boost/range/algorithm/partial_sort_copy.hpp"
88769 template<class SinglePassRange, class RandomAccessRange>
88770 inline typename range_iterator<RandomAccessRange>::type
88771 partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2)
88772 {
88773 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassRangeConcept<const SinglePassRange>)>::failed> boost_concept_check35;
88774
88775 return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
88776 boost::begin(rng2), boost::end(rng2));
88777 }
88778
88779
88780 template<class SinglePassRange, class RandomAccessRange>
88781 inline typename range_iterator<RandomAccessRange>::type
88782 partial_sort_copy(const SinglePassRange& rng1, const RandomAccessRange& rng2)
88783 {
88784 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassRangeConcept<const SinglePassRange>)>::failed> boost_concept_check46;
88785
88786 return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
88787 boost::begin(rng2), boost::end(rng2));
88788 }
88789
88790
88791 template<class SinglePassRange, class RandomAccessRange,
88792 class BinaryPredicate>
88793 inline typename range_iterator<RandomAccessRange>::type
88794 partial_sort_copy(const SinglePassRange& rng1, RandomAccessRange& rng2,
88795 BinaryPredicate pred)
88796 {
88797 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassRangeConcept<const SinglePassRange>)>::failed> boost_concept_check59;
88798
88799 return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
88800 boost::begin(rng2), boost::end(rng2), pred);
88801 }
88802
88803
88804 template<class SinglePassRange, class RandomAccessRange,
88805 class BinaryPredicate>
88806 inline typename range_iterator<const RandomAccessRange>::type
88807 partial_sort_copy(const SinglePassRange& rng1, const RandomAccessRange& rng2,
88808 BinaryPredicate pred)
88809 {
88810 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassRangeConcept<const SinglePassRange>)>::failed> boost_concept_check72;
88811
88812 return std::partial_sort_copy(boost::begin(rng1), boost::end(rng1),
88813 boost::begin(rng2), boost::end(rng2), pred);
88814 }
88815
88816 }
88817 using range::partial_sort_copy;
88818 }
88819 # 63 "../boost/range/algorithm.hpp" 2
88820 # 1 "../boost/range/algorithm/partition.hpp" 1
88821 # 19 "../boost/range/algorithm/partition.hpp"
88822 namespace boost
88823 {
88824 namespace range
88825 {
88826
88827
88828
88829
88830
88831
88832 template<class ForwardRange, class UnaryPredicate>
88833 inline typename range_iterator<ForwardRange>::type
88834 partition(ForwardRange& rng, UnaryPredicate pred)
88835 {
88836 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check33;
88837 return std::partition(boost::begin(rng),boost::end(rng),pred);
88838 }
88839
88840
88841 template<class ForwardRange, class UnaryPredicate>
88842 inline typename range_iterator<ForwardRange>::type
88843 partition(const ForwardRange& rng, UnaryPredicate pred)
88844 {
88845 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check42;
88846 return std::partition(boost::begin(rng),boost::end(rng),pred);
88847 }
88848
88849
88850
88851
88852 template< range_return_value re, class ForwardRange,
88853 class UnaryPredicate >
88854 inline typename range_return<ForwardRange,re>::type
88855 partition(ForwardRange& rng, UnaryPredicate pred)
88856 {
88857 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check54;
88858 return boost::range_return<ForwardRange,re>::
88859 pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng);
88860 }
88861
88862
88863 template< range_return_value re, class ForwardRange,
88864 class UnaryPredicate >
88865 inline typename range_return<const ForwardRange,re>::type
88866 partition(const ForwardRange& rng, UnaryPredicate pred)
88867 {
88868 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check65;
88869 return boost::range_return<const ForwardRange,re>::
88870 pack(std::partition(boost::begin(rng), boost::end(rng), pred), rng);
88871 }
88872
88873 }
88874 using range::partition;
88875 }
88876 # 64 "../boost/range/algorithm.hpp" 2
88877 # 1 "../boost/range/algorithm/random_shuffle.hpp" 1
88878 # 18 "../boost/range/algorithm/random_shuffle.hpp"
88879 namespace boost
88880 {
88881 namespace range
88882 {
88883
88884
88885
88886
88887
88888
88889
88890 template<class RandomAccessRange>
88891 inline RandomAccessRange& random_shuffle(RandomAccessRange& rng)
88892 {
88893 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check32;
88894 std::random_shuffle(boost::begin(rng), boost::end(rng));
88895 return rng;
88896 }
88897
88898
88899 template<class RandomAccessRange>
88900 inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng)
88901 {
88902 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check41;
88903 std::random_shuffle(boost::begin(rng), boost::end(rng));
88904 return rng;
88905 }
88906
88907
88908 template<class RandomAccessRange, class Generator>
88909 inline RandomAccessRange& random_shuffle(RandomAccessRange& rng, Generator& gen)
88910 {
88911 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check50;
88912 std::random_shuffle(boost::begin(rng), boost::end(rng), gen);
88913 return rng;
88914 }
88915
88916
88917 template<class RandomAccessRange, class Generator>
88918 inline const RandomAccessRange& random_shuffle(const RandomAccessRange& rng, Generator& gen)
88919 {
88920 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check59;
88921 std::random_shuffle(boost::begin(rng), boost::end(rng), gen);
88922 return rng;
88923 }
88924
88925 }
88926 using range::random_shuffle;
88927 }
88928 # 65 "../boost/range/algorithm.hpp" 2
88929 # 1 "../boost/range/algorithm/remove.hpp" 1
88930 # 19 "../boost/range/algorithm/remove.hpp"
88931 namespace boost
88932 {
88933 namespace range
88934 {
88935
88936
88937
88938
88939
88940
88941 template< class ForwardRange, class Value >
88942 inline typename range_iterator<ForwardRange>::type
88943 remove(ForwardRange& rng, const Value& val)
88944 {
88945 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check33;
88946 return std::remove(boost::begin(rng),boost::end(rng),val);
88947 }
88948
88949
88950 template< class ForwardRange, class Value >
88951 inline typename range_iterator<const ForwardRange>::type
88952 remove(const ForwardRange& rng, const Value& val)
88953 {
88954 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check42;
88955 return std::remove(boost::begin(rng),boost::end(rng),val);
88956 }
88957
88958
88959
88960
88961 template< range_return_value re, class ForwardRange, class Value >
88962 inline typename range_return<ForwardRange,re>::type
88963 remove(ForwardRange& rng, const Value& val)
88964 {
88965 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check53;
88966 return range_return<ForwardRange,re>::pack(
88967 std::remove(boost::begin(rng), boost::end(rng), val),
88968 rng);
88969 }
88970
88971
88972 template< range_return_value re, class ForwardRange, class Value >
88973 inline typename range_return<const ForwardRange,re>::type
88974 remove(const ForwardRange& rng, const Value& val)
88975 {
88976 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check64;
88977 return range_return<const ForwardRange,re>::pack(
88978 std::remove(boost::begin(rng), boost::end(rng), val),
88979 rng);
88980 }
88981
88982 }
88983 using range::remove;
88984 }
88985 # 66 "../boost/range/algorithm.hpp" 2
88986 # 1 "../boost/range/algorithm/remove_copy.hpp" 1
88987 # 18 "../boost/range/algorithm/remove_copy.hpp"
88988 namespace boost
88989 {
88990 namespace range
88991 {
88992 # 32 "../boost/range/algorithm/remove_copy.hpp"
88993 template< class SinglePassRange, class OutputIterator, class Value >
88994 inline OutputIterator
88995 remove_copy(const SinglePassRange& rng, OutputIterator out_it, const Value& val)
88996 {
88997 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check36;
88998 return std::remove_copy(boost::begin(rng), boost::end(rng), out_it, val);
88999 }
89000
89001 }
89002 using range::remove_copy;
89003 }
89004 # 67 "../boost/range/algorithm.hpp" 2
89005 # 1 "../boost/range/algorithm/remove_copy_if.hpp" 1
89006 # 18 "../boost/range/algorithm/remove_copy_if.hpp"
89007 namespace boost
89008 {
89009 # 29 "../boost/range/algorithm/remove_copy_if.hpp"
89010 template< class SinglePassRange, class OutputIterator, class Predicate >
89011 inline OutputIterator
89012 remove_copy_if(const SinglePassRange& rng, OutputIterator out_it, Predicate pred)
89013 {
89014 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check33;
89015 return std::remove_copy_if(boost::begin(rng), boost::end(rng), out_it, pred);
89016 }
89017 }
89018 # 68 "../boost/range/algorithm.hpp" 2
89019 # 1 "../boost/range/algorithm/remove_if.hpp" 1
89020 # 19 "../boost/range/algorithm/remove_if.hpp"
89021 namespace boost
89022 {
89023 namespace range
89024 {
89025
89026
89027
89028
89029
89030
89031
89032 template< class ForwardRange, class UnaryPredicate >
89033 inline typename boost::range_iterator<ForwardRange>::type
89034 remove_if(ForwardRange& rng, UnaryPredicate pred)
89035 {
89036 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check34;
89037 return std::remove_if(boost::begin(rng), boost::end(rng), pred);
89038 }
89039
89040
89041 template< class ForwardRange, class UnaryPredicate >
89042 inline typename boost::range_iterator<const ForwardRange>::type
89043 remove_if(const ForwardRange& rng, UnaryPredicate pred)
89044 {
89045 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check43;
89046 return std::remove_if(boost::begin(rng), boost::end(rng), pred);
89047 }
89048
89049
89050
89051
89052 template< range_return_value re, class ForwardRange, class UnaryPredicate >
89053 inline typename range_return<ForwardRange,re>::type
89054 remove_if(ForwardRange& rng, UnaryPredicate pred)
89055 {
89056 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check54;
89057 return range_return<ForwardRange,re>::pack(
89058 std::remove_if(boost::begin(rng), boost::end(rng), pred),
89059 rng);
89060 }
89061
89062
89063 template< range_return_value re, class ForwardRange, class UnaryPredicate >
89064 inline typename range_return<const ForwardRange,re>::type
89065 remove_if(const ForwardRange& rng, UnaryPredicate pred)
89066 {
89067 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check65;
89068 return range_return<const ForwardRange,re>::pack(
89069 std::remove_if(boost::begin(rng), boost::end(rng), pred),
89070 rng);
89071 }
89072
89073 }
89074 using range::remove_if;
89075 }
89076 # 69 "../boost/range/algorithm.hpp" 2
89077 # 1 "../boost/range/algorithm/replace.hpp" 1
89078 # 18 "../boost/range/algorithm/replace.hpp"
89079 namespace boost
89080 {
89081 namespace range
89082 {
89083
89084
89085
89086
89087
89088
89089 template< class ForwardRange, class Value >
89090 inline ForwardRange&
89091 replace(ForwardRange& rng, const Value& what,
89092 const Value& with_what)
89093 {
89094 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check33;
89095 std::replace(boost::begin(rng), boost::end(rng), what, with_what);
89096 return rng;
89097 }
89098
89099
89100 template< class ForwardRange, class Value >
89101 inline const ForwardRange&
89102 replace(const ForwardRange& rng, const Value& what,
89103 const Value& with_what)
89104 {
89105 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check44;
89106 std::replace(boost::begin(rng), boost::end(rng), what, with_what);
89107 return rng;
89108 }
89109
89110 }
89111 using range::replace;
89112 }
89113 # 70 "../boost/range/algorithm.hpp" 2
89114 # 1 "../boost/range/algorithm/replace_copy.hpp" 1
89115 # 18 "../boost/range/algorithm/replace_copy.hpp"
89116 namespace boost
89117 {
89118 namespace range
89119 {
89120
89121
89122
89123
89124
89125
89126 template< class ForwardRange, class OutputIterator, class Value >
89127 inline OutputIterator
89128 replace_copy(const ForwardRange& rng, OutputIterator out_it, const Value& what,
89129 const Value& with_what)
89130 {
89131 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check33;
89132 return std::replace_copy(boost::begin(rng), boost::end(rng), out_it,
89133 what, with_what);
89134 }
89135
89136 }
89137 using range::replace_copy;
89138 }
89139 # 71 "../boost/range/algorithm.hpp" 2
89140 # 1 "../boost/range/algorithm/replace_copy_if.hpp" 1
89141 # 18 "../boost/range/algorithm/replace_copy_if.hpp"
89142 namespace boost
89143 {
89144 namespace range
89145 {
89146 # 32 "../boost/range/algorithm/replace_copy_if.hpp"
89147 template< class ForwardRange, class OutputIterator, class Predicate, class Value >
89148 inline OutputIterator
89149 replace_copy_if(const ForwardRange& rng, OutputIterator out_it, Predicate pred,
89150 const Value& with_what)
89151 {
89152 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check37;
89153 return std::replace_copy_if(boost::begin(rng), boost::end(rng), out_it,
89154 pred, with_what);
89155 }
89156
89157 }
89158 using range::replace_copy_if;
89159 }
89160 # 72 "../boost/range/algorithm.hpp" 2
89161 # 1 "../boost/range/algorithm/replace_if.hpp" 1
89162 # 18 "../boost/range/algorithm/replace_if.hpp"
89163 namespace boost
89164 {
89165 namespace range
89166 {
89167
89168
89169
89170
89171
89172
89173
89174 template< class ForwardRange, class UnaryPredicate, class Value >
89175 inline ForwardRange&
89176 replace_if(ForwardRange& rng, UnaryPredicate pred,
89177 const Value& val)
89178 {
89179 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check34;
89180 std::replace_if(boost::begin(rng), boost::end(rng), pred, val);
89181 return rng;
89182 }
89183
89184
89185 template< class ForwardRange, class UnaryPredicate, class Value >
89186 inline const ForwardRange&
89187 replace_if(const ForwardRange& rng, UnaryPredicate pred,
89188 const Value& val)
89189 {
89190 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check45;
89191 std::replace_if(boost::begin(rng), boost::end(rng), pred, val);
89192 return rng;
89193 }
89194
89195 }
89196 using range::replace_if;
89197 }
89198 # 73 "../boost/range/algorithm.hpp" 2
89199 # 1 "../boost/range/algorithm/reverse.hpp" 1
89200 # 19 "../boost/range/algorithm/reverse.hpp"
89201 namespace boost
89202 {
89203 namespace range
89204 {
89205
89206
89207
89208
89209
89210
89211 template<class BidirectionalRange>
89212 inline BidirectionalRange& reverse(BidirectionalRange& rng)
89213 {
89214 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check32;
89215 std::reverse(boost::begin(rng), boost::end(rng));
89216 return rng;
89217 }
89218
89219
89220 template<class BidirectionalRange>
89221 inline const BidirectionalRange& reverse(const BidirectionalRange& rng)
89222 {
89223 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check41;
89224 std::reverse(boost::begin(rng), boost::end(rng));
89225 return rng;
89226 }
89227
89228 }
89229 using range::reverse;
89230 }
89231 # 74 "../boost/range/algorithm.hpp" 2
89232 # 1 "../boost/range/algorithm/reverse_copy.hpp" 1
89233 # 19 "../boost/range/algorithm/reverse_copy.hpp"
89234 namespace boost
89235 {
89236 namespace range
89237 {
89238
89239
89240
89241
89242
89243
89244 template<class BidirectionalRange, class OutputIterator>
89245 inline OutputIterator reverse_copy(const BidirectionalRange& rng, OutputIterator out)
89246 {
89247 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check32;
89248 return std::reverse_copy(boost::begin(rng), boost::end(rng), out);
89249 }
89250
89251 }
89252 using range::reverse_copy;
89253 }
89254 # 75 "../boost/range/algorithm.hpp" 2
89255 # 1 "../boost/range/algorithm/rotate.hpp" 1
89256 # 18 "../boost/range/algorithm/rotate.hpp"
89257 namespace boost
89258 {
89259 namespace range
89260 {
89261
89262
89263
89264
89265
89266
89267 template<class ForwardRange>
89268 inline ForwardRange& rotate(ForwardRange& rng,
89269 typename range_iterator<ForwardRange>::type middle)
89270 {
89271 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check32;
89272 std::rotate(boost::begin(rng), middle, boost::end(rng));
89273 return rng;
89274 }
89275
89276
89277 template<class ForwardRange>
89278 inline const ForwardRange& rotate(const ForwardRange& rng,
89279 typename range_iterator<const ForwardRange>::type middle)
89280 {
89281 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check42;
89282 std::rotate(boost::begin(rng), middle, boost::end(rng));
89283 return rng;
89284 }
89285
89286 }
89287 using range::rotate;
89288 }
89289 # 76 "../boost/range/algorithm.hpp" 2
89290 # 1 "../boost/range/algorithm/rotate_copy.hpp" 1
89291 # 19 "../boost/range/algorithm/rotate_copy.hpp"
89292 namespace boost
89293 {
89294 namespace range
89295 {
89296
89297
89298
89299
89300
89301
89302 template<typename ForwardRange, typename OutputIterator>
89303 inline OutputIterator rotate_copy(
89304 const ForwardRange& rng,
89305 typename range_iterator<const ForwardRange>::type middle,
89306 OutputIterator target
89307 )
89308 {
89309 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check36;
89310 return std::rotate_copy(boost::begin(rng), middle, boost::end(rng), target);
89311 }
89312
89313 }
89314 using range::rotate_copy;
89315 }
89316 # 77 "../boost/range/algorithm.hpp" 2
89317 # 1 "../boost/range/algorithm/sort.hpp" 1
89318 # 18 "../boost/range/algorithm/sort.hpp"
89319 namespace boost
89320 {
89321 namespace range
89322 {
89323
89324
89325
89326
89327
89328
89329
89330 template<class RandomAccessRange>
89331 inline RandomAccessRange& sort(RandomAccessRange& rng)
89332 {
89333 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check32;
89334 std::sort(boost::begin(rng), boost::end(rng));
89335 return rng;
89336 }
89337
89338
89339 template<class RandomAccessRange>
89340 inline const RandomAccessRange& sort(const RandomAccessRange& rng)
89341 {
89342 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check41;
89343 std::sort(boost::begin(rng), boost::end(rng));
89344 return rng;
89345 }
89346
89347
89348 template<class RandomAccessRange, class BinaryPredicate>
89349 inline RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred)
89350 {
89351 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check50;
89352 std::sort(boost::begin(rng), boost::end(rng), pred);
89353 return rng;
89354 }
89355
89356
89357 template<class RandomAccessRange, class BinaryPredicate>
89358 inline const RandomAccessRange& sort(const RandomAccessRange& rng, BinaryPredicate pred)
89359 {
89360 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check59;
89361 std::sort(boost::begin(rng), boost::end(rng), pred);
89362 return rng;
89363 }
89364
89365 }
89366 using range::sort;
89367 }
89368 # 78 "../boost/range/algorithm.hpp" 2
89369 # 1 "../boost/range/algorithm/stable_partition.hpp" 1
89370 # 19 "../boost/range/algorithm/stable_partition.hpp"
89371 namespace boost
89372 {
89373 namespace range
89374 {
89375
89376
89377
89378
89379
89380
89381
89382 template<class BidirectionalRange, class UnaryPredicate>
89383 inline typename range_iterator<BidirectionalRange>::type
89384 stable_partition(BidirectionalRange& rng, UnaryPredicate pred)
89385 {
89386 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check34;
89387 return std::stable_partition(boost::begin(rng), boost::end(rng), pred);
89388 }
89389
89390
89391 template<class BidirectionalRange, class UnaryPredicate>
89392 inline typename range_iterator<const BidirectionalRange>::type
89393 stable_partition(const BidirectionalRange& rng, UnaryPredicate pred)
89394 {
89395 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check43;
89396 return std::stable_partition(boost::begin(rng),boost::end(rng),pred);
89397 }
89398
89399
89400 template<range_return_value re, class BidirectionalRange, class UnaryPredicate>
89401 inline typename range_return<BidirectionalRange,re>::type
89402 stable_partition(BidirectionalRange& rng, UnaryPredicate pred)
89403 {
89404 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check52;
89405 return range_return<BidirectionalRange,re>::pack(
89406 std::stable_partition(boost::begin(rng), boost::end(rng), pred),
89407 rng);
89408 }
89409
89410
89411 template<range_return_value re, class BidirectionalRange, class UnaryPredicate>
89412 inline typename range_return<const BidirectionalRange,re>::type
89413 stable_partition(const BidirectionalRange& rng, UnaryPredicate pred)
89414 {
89415 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check63;
89416 return range_return<const BidirectionalRange,re>::pack(
89417 std::stable_partition(boost::begin(rng),boost::end(rng),pred),
89418 rng);
89419 }
89420
89421 }
89422 using range::stable_partition;
89423 }
89424 # 79 "../boost/range/algorithm.hpp" 2
89425 # 1 "../boost/range/algorithm/stable_sort.hpp" 1
89426 # 18 "../boost/range/algorithm/stable_sort.hpp"
89427 namespace boost
89428 {
89429 namespace range
89430 {
89431
89432
89433
89434
89435
89436
89437
89438 template<class RandomAccessRange>
89439 inline RandomAccessRange& stable_sort(RandomAccessRange& rng)
89440 {
89441 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check32;
89442 std::stable_sort(boost::begin(rng), boost::end(rng));
89443 return rng;
89444 }
89445
89446
89447 template<class RandomAccessRange>
89448 inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng)
89449 {
89450 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check41;
89451 std::stable_sort(boost::begin(rng), boost::end(rng));
89452 return rng;
89453 }
89454
89455
89456 template<class RandomAccessRange, class BinaryPredicate>
89457 inline RandomAccessRange& stable_sort(RandomAccessRange& rng, BinaryPredicate sort_pred)
89458 {
89459 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check50;
89460 std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred);
89461 return rng;
89462 }
89463
89464
89465 template<class RandomAccessRange, class BinaryPredicate>
89466 inline const RandomAccessRange& stable_sort(const RandomAccessRange& rng, BinaryPredicate sort_pred)
89467 {
89468 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check59;
89469 std::stable_sort(boost::begin(rng), boost::end(rng), sort_pred);
89470 return rng;
89471 }
89472
89473 }
89474 using range::stable_sort;
89475 }
89476 # 80 "../boost/range/algorithm.hpp" 2
89477 # 1 "../boost/range/algorithm/transform.hpp" 1
89478 # 12 "../boost/range/algorithm/transform.hpp"
89479 # 1 "../boost/assert.hpp" 1
89480 # 50 "../boost/assert.hpp"
89481 # 1 "/usr/include/assert.h" 1 3 4
89482 # 51 "../boost/assert.hpp" 2
89483 # 13 "../boost/range/algorithm/transform.hpp" 2
89484
89485
89486
89487
89488
89489
89490 namespace boost
89491 {
89492 namespace range
89493 {
89494 # 33 "../boost/range/algorithm/transform.hpp"
89495 template< class SinglePassRange1,
89496 class OutputIterator,
89497 class UnaryOperation >
89498 inline OutputIterator
89499 transform(const SinglePassRange1& rng,
89500 OutputIterator out,
89501 UnaryOperation fun)
89502 {
89503 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check41;
89504 return std::transform(boost::begin(rng),boost::end(rng),out,fun);
89505 }
89506
89507 }
89508
89509 namespace range_detail
89510 {
89511 template< class SinglePassTraversalReadableIterator1,
89512 class SinglePassTraversalReadableIterator2,
89513 class OutputIterator,
89514 class BinaryFunction >
89515 inline OutputIterator
89516 transform_impl(SinglePassTraversalReadableIterator1 first1,
89517 SinglePassTraversalReadableIterator1 last1,
89518 SinglePassTraversalReadableIterator2 first2,
89519 SinglePassTraversalReadableIterator2 last2,
89520 OutputIterator out,
89521 BinaryFunction fn)
89522 {
89523 for (; first1 != last1; ++first1, ++first2)
89524 {
89525 (static_cast<void> (0));
89526 *out = fn(*first1, *first2);
89527 ++out;
89528 }
89529 return out;
89530 }
89531 }
89532
89533 namespace range
89534 {
89535
89536
89537 template< class SinglePassRange1,
89538 class SinglePassRange2,
89539 class OutputIterator,
89540 class BinaryOperation >
89541 inline OutputIterator
89542 transform(const SinglePassRange1& rng1,
89543 const SinglePassRange2& rng2,
89544 OutputIterator out,
89545 BinaryOperation fun)
89546 {
89547 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check85;
89548 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check86;
89549 return boost::range_detail::transform_impl(
89550 boost::begin(rng1), boost::end(rng1),
89551 boost::begin(rng2), boost::end(rng2),
89552 out, fun);
89553 }
89554
89555 }
89556 using range::transform;
89557 }
89558 # 81 "../boost/range/algorithm.hpp" 2
89559 # 1 "../boost/range/algorithm/unique.hpp" 1
89560 # 19 "../boost/range/algorithm/unique.hpp"
89561 namespace boost
89562 {
89563 namespace range
89564 {
89565
89566
89567
89568
89569
89570
89571 template< range_return_value re, class ForwardRange >
89572 inline typename range_return<ForwardRange,re>::type
89573 unique( ForwardRange& rng )
89574 {
89575 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check33;
89576 return range_return<ForwardRange,re>::
89577 pack( std::unique( boost::begin(rng),
89578 boost::end(rng)), rng );
89579 }
89580
89581
89582 template< range_return_value re, class ForwardRange >
89583 inline typename range_return<const ForwardRange,re>::type
89584 unique( const ForwardRange& rng )
89585 {
89586 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check44;
89587 return range_return<const ForwardRange,re>::
89588 pack( std::unique( boost::begin(rng),
89589 boost::end(rng)), rng );
89590 }
89591
89592 template< range_return_value re, class ForwardRange, class BinaryPredicate >
89593 inline typename range_return<ForwardRange,re>::type
89594 unique( ForwardRange& rng, BinaryPredicate pred )
89595 {
89596 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check54;
89597 return range_return<ForwardRange,re>::
89598 pack(std::unique(boost::begin(rng), boost::end(rng), pred),
89599 rng);
89600 }
89601
89602 template< range_return_value re, class ForwardRange, class BinaryPredicate >
89603 inline typename range_return<const ForwardRange,re>::type
89604 unique( const ForwardRange& rng, BinaryPredicate pred )
89605 {
89606 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check64;
89607 return range_return<const ForwardRange,re>::
89608 pack(std::unique(boost::begin(rng), boost::end(rng), pred),
89609 rng);
89610 }
89611
89612
89613 template< class ForwardRange >
89614 inline typename range_return<ForwardRange, return_begin_found>::type
89615 unique( ForwardRange& rng )
89616 {
89617 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check75;
89618 return ::boost::range::unique<return_begin_found>(rng);
89619 }
89620
89621 template< class ForwardRange >
89622 inline typename range_return<const ForwardRange, return_begin_found>::type
89623 unique( const ForwardRange& rng )
89624 {
89625 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check83;
89626 return ::boost::range::unique<return_begin_found>(rng);
89627 }
89628
89629 template< class ForwardRange, class BinaryPredicate >
89630 inline typename range_return<ForwardRange, return_begin_found>::type
89631 unique( ForwardRange& rng, BinaryPredicate pred )
89632 {
89633 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check91;
89634 return ::boost::range::unique<return_begin_found>(rng);
89635 }
89636
89637 template< class ForwardRange, class BinaryPredicate >
89638 inline typename range_iterator<const ForwardRange>::type
89639 unique( const ForwardRange& rng, BinaryPredicate pred )
89640 {
89641 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check99;
89642 return ::boost::range::unique<return_begin_found>(rng, pred);
89643 }
89644
89645 }
89646 using range::unique;
89647 }
89648 # 82 "../boost/range/algorithm.hpp" 2
89649 # 1 "../boost/range/algorithm/unique_copy.hpp" 1
89650 # 18 "../boost/range/algorithm/unique_copy.hpp"
89651 namespace boost
89652 {
89653 namespace range
89654 {
89655 # 30 "../boost/range/algorithm/unique_copy.hpp"
89656 template< class SinglePassRange, class OutputIterator >
89657 inline OutputIterator
89658 unique_copy( const SinglePassRange& rng, OutputIterator out_it )
89659 {
89660 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check34;
89661 return std::unique_copy(boost::begin(rng), boost::end(rng), out_it);
89662 }
89663
89664 template< class SinglePassRange, class OutputIterator, class BinaryPredicate >
89665 inline OutputIterator
89666 unique_copy( const SinglePassRange& rng, OutputIterator out_it,
89667 BinaryPredicate pred )
89668 {
89669 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange> )>::failed> boost_concept_check43;
89670 return std::unique_copy(boost::begin(rng), boost::end(rng), out_it, pred);
89671 }
89672
89673 }
89674 using range::unique_copy;
89675 }
89676 # 83 "../boost/range/algorithm.hpp" 2
89677
89678
89679 # 1 "../boost/range/algorithm/binary_search.hpp" 1
89680 # 18 "../boost/range/algorithm/binary_search.hpp"
89681 namespace boost
89682 {
89683 namespace range
89684 {
89685
89686
89687
89688
89689
89690
89691
89692 template<class ForwardRange, class Value>
89693 inline bool binary_search(const ForwardRange& rng, const Value& val)
89694 {
89695 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check32;
89696 return std::binary_search(boost::begin(rng), boost::end(rng), val);
89697 }
89698
89699
89700 template<class ForwardRange, class Value, class BinaryPredicate>
89701 inline bool binary_search(const ForwardRange& rng, const Value& val,
89702 BinaryPredicate pred)
89703 {
89704 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check41;
89705 return std::binary_search(boost::begin(rng), boost::end(rng), val, pred);
89706 }
89707
89708 }
89709 using range::binary_search;
89710 }
89711 # 86 "../boost/range/algorithm.hpp" 2
89712 # 1 "../boost/range/algorithm/equal_range.hpp" 1
89713 # 18 "../boost/range/algorithm/equal_range.hpp"
89714 namespace boost
89715 {
89716 namespace range
89717 {
89718
89719
89720
89721
89722
89723
89724
89725 template<class ForwardRange, class Value>
89726 inline std::pair<
89727 typename boost::range_iterator<ForwardRange>::type,
89728 typename boost::range_iterator<ForwardRange>::type
89729 >
89730 equal_range(ForwardRange& rng, const Value& val)
89731 {
89732 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check36;
89733 return std::equal_range(boost::begin(rng), boost::end(rng), val);
89734 }
89735
89736
89737 template<class ForwardRange, class Value>
89738 inline std::pair<
89739 typename boost::range_iterator<const ForwardRange>::type,
89740 typename boost::range_iterator<const ForwardRange>::type
89741 >
89742 equal_range(const ForwardRange& rng, const Value& val)
89743 {
89744 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check48;
89745 return std::equal_range(boost::begin(rng), boost::end(rng), val);
89746 }
89747
89748
89749 template<class ForwardRange, class Value, class SortPredicate>
89750 inline std::pair<
89751 typename boost::range_iterator<ForwardRange>::type,
89752 typename boost::range_iterator<ForwardRange>::type
89753 >
89754 equal_range(ForwardRange& rng, const Value& val, SortPredicate pred)
89755 {
89756 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check60;
89757 return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
89758 }
89759
89760
89761 template<class ForwardRange, class Value, class SortPredicate>
89762 inline std::pair<
89763 typename boost::range_iterator<const ForwardRange>::type,
89764 typename boost::range_iterator<const ForwardRange>::type
89765 >
89766 equal_range(const ForwardRange& rng, const Value& val, SortPredicate pred)
89767 {
89768 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check72;
89769 return std::equal_range(boost::begin(rng), boost::end(rng), val, pred);
89770 }
89771
89772 }
89773 using range::equal_range;
89774 }
89775 # 87 "../boost/range/algorithm.hpp" 2
89776 # 1 "../boost/range/algorithm/lower_bound.hpp" 1
89777 # 19 "../boost/range/algorithm/lower_bound.hpp"
89778 namespace boost
89779 {
89780 namespace range
89781 {
89782
89783
89784
89785
89786
89787
89788 template< class ForwardRange, class Value >
89789 inline typename disable_if<
89790 is_const<ForwardRange>,
89791 typename range_iterator<ForwardRange>::type
89792 >::type
89793 lower_bound( ForwardRange& rng, Value val )
89794 {
89795 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check36;
89796 return std::lower_bound(boost::begin(rng), boost::end(rng), val);
89797 }
89798
89799
89800 template< class ForwardRange, class Value >
89801 inline typename range_iterator<const ForwardRange>::type
89802 lower_bound( const ForwardRange& rng, Value val )
89803 {
89804 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check45;
89805 return std::lower_bound(boost::begin(rng), boost::end(rng), val);
89806 }
89807
89808
89809 template< class ForwardRange, class Value, class SortPredicate >
89810 inline typename disable_if<
89811 is_const<ForwardRange>,
89812 typename range_iterator<ForwardRange>::type
89813 >::type
89814 lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
89815 {
89816 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check57;
89817 return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
89818 }
89819
89820
89821 template< class ForwardRange, class Value, class SortPredicate >
89822 inline typename range_iterator<const ForwardRange>::type
89823 lower_bound( const ForwardRange& rng, Value val, SortPredicate pred )
89824 {
89825 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check66;
89826 return std::lower_bound(boost::begin(rng), boost::end(rng), val, pred);
89827 }
89828
89829
89830 template< range_return_value re, class ForwardRange, class Value >
89831 inline typename disable_if<
89832 is_const<ForwardRange>,
89833 typename range_return<ForwardRange,re>::type
89834 >::type
89835 lower_bound( ForwardRange& rng, Value val )
89836 {
89837 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check78;
89838 return range_return<ForwardRange,re>::
89839 pack(std::lower_bound(boost::begin(rng), boost::end(rng), val),
89840 rng);
89841 }
89842
89843
89844 template< range_return_value re, class ForwardRange, class Value >
89845 inline typename range_return<const ForwardRange,re>::type
89846 lower_bound( const ForwardRange& rng, Value val )
89847 {
89848 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check89;
89849 return range_return<const ForwardRange,re>::
89850 pack(std::lower_bound(boost::begin(rng), boost::end(rng), val),
89851 rng);
89852 }
89853
89854
89855 template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
89856 inline typename disable_if<
89857 is_const<ForwardRange>,
89858 typename range_return<ForwardRange,re>::type
89859 >::type
89860 lower_bound( ForwardRange& rng, Value val, SortPredicate pred )
89861 {
89862 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check103;
89863 return range_return<ForwardRange,re>::
89864 pack(std::lower_bound(boost::begin(rng), boost::end(rng), val, pred),
89865 rng);
89866 }
89867
89868
89869 template< range_return_value re, class ForwardRange, class Value, class SortPredicate >
89870 inline typename range_return<const ForwardRange,re>::type
89871 lower_bound( const ForwardRange& rng, Value val, SortPredicate pred )
89872 {
89873 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check114;
89874 return range_return<const ForwardRange,re>::
89875 pack(std::lower_bound(boost::begin(rng), boost::end(rng), val, pred),
89876 rng);
89877 }
89878
89879 }
89880 using range::lower_bound;
89881 }
89882 # 88 "../boost/range/algorithm.hpp" 2
89883 # 1 "../boost/range/algorithm/upper_bound.hpp" 1
89884 # 19 "../boost/range/algorithm/upper_bound.hpp"
89885 namespace boost
89886 {
89887 namespace range
89888 {
89889
89890
89891
89892
89893
89894
89895 template< class ForwardRange, class Value >
89896 inline
89897 typename disable_if<
89898 is_const<ForwardRange>,
89899 typename range_iterator<ForwardRange>::type
89900 >::type
89901 upper_bound( ForwardRange& rng, Value val )
89902 {
89903 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check37;
89904 return std::upper_bound(boost::begin(rng), boost::end(rng), val);
89905 }
89906
89907
89908 template< class ForwardRange, class Value >
89909 typename range_iterator<const ForwardRange>::type
89910 upper_bound( const ForwardRange& rng, Value val )
89911 {
89912 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check46;
89913 return std::upper_bound(boost::begin(rng), boost::end(rng), val);
89914 }
89915
89916
89917 template< class ForwardRange, class Value, class SortPredicate >
89918 inline typename disable_if<
89919 is_const<ForwardRange>,
89920 typename range_iterator<ForwardRange>::type
89921 >::type
89922 upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
89923 {
89924 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check58;
89925 return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
89926 }
89927
89928
89929 template< class ForwardRange, class Value, class SortPredicate >
89930 inline typename range_iterator<const ForwardRange>::type
89931 upper_bound( const ForwardRange& rng, Value val, SortPredicate pred )
89932 {
89933 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check67;
89934 return std::upper_bound(boost::begin(rng), boost::end(rng), val, pred);
89935 }
89936
89937
89938 template< range_return_value re, class ForwardRange, class Value >
89939 inline typename disable_if<
89940 is_const<ForwardRange>,
89941 typename range_return<ForwardRange,re>::type
89942 >::type
89943 upper_bound( ForwardRange& rng, Value val )
89944 {
89945 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check79;
89946 return range_return<ForwardRange,re>::
89947 pack(std::upper_bound(boost::begin(rng), boost::end(rng), val),
89948 rng);
89949 }
89950
89951
89952 template< range_return_value re, class ForwardRange, class Value >
89953 inline typename range_return<const ForwardRange,re>::type
89954 upper_bound( const ForwardRange& rng, Value val )
89955 {
89956 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check90;
89957 return range_return<const ForwardRange,re>::
89958 pack(std::upper_bound(boost::begin(rng), boost::end(rng), val),
89959 rng);
89960 }
89961
89962
89963 template< range_return_value re, class ForwardRange, class Value,
89964 class SortPredicate >
89965 inline typename disable_if<
89966 is_const<ForwardRange>,
89967 typename range_return<ForwardRange,re>::type
89968 >::type
89969 upper_bound( ForwardRange& rng, Value val, SortPredicate pred )
89970 {
89971 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check105;
89972 return range_return<ForwardRange,re>::
89973 pack(std::upper_bound(boost::begin(rng), boost::end(rng), val, pred),
89974 rng);
89975 }
89976
89977
89978 template< range_return_value re, class ForwardRange, class Value,
89979 class SortPredicate >
89980 inline typename range_return<const ForwardRange,re>::type
89981 upper_bound( const ForwardRange& rng, Value val, SortPredicate pred )
89982 {
89983 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check117;
89984 return range_return<const ForwardRange,re>::
89985 pack(std::upper_bound(boost::begin(rng), boost::end(rng), val, pred),
89986 rng);
89987 }
89988
89989 }
89990 using range::upper_bound;
89991 }
89992 # 89 "../boost/range/algorithm.hpp" 2
89993
89994
89995 # 1 "../boost/range/algorithm/set_algorithm.hpp" 1
89996 # 18 "../boost/range/algorithm/set_algorithm.hpp"
89997 namespace boost
89998 {
89999 namespace range
90000 {
90001 # 30 "../boost/range/algorithm/set_algorithm.hpp"
90002 template<class SinglePassRange1, class SinglePassRange2>
90003 inline bool includes(const SinglePassRange1& rng1,
90004 const SinglePassRange2& rng2)
90005 {
90006 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check34;
90007 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check35;
90008 return std::includes(boost::begin(rng1),boost::end(rng1),
90009 boost::begin(rng2),boost::end(rng2));
90010 }
90011
90012
90013 template<class SinglePassRange1, class SinglePassRange2,
90014 class BinaryPredicate>
90015 inline bool includes(const SinglePassRange1& rng1,
90016 const SinglePassRange2& rng2,
90017 BinaryPredicate pred)
90018 {
90019 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check47;
90020 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check48;
90021 return std::includes(boost::begin(rng1), boost::end(rng1),
90022 boost::begin(rng2), boost::end(rng2), pred);
90023 }
90024 # 60 "../boost/range/algorithm/set_algorithm.hpp"
90025 template<class SinglePassRange1, class SinglePassRange2,
90026 class OutputIterator>
90027 inline OutputIterator set_union(const SinglePassRange1& rng1,
90028 const SinglePassRange2& rng2,
90029 OutputIterator out)
90030 {
90031 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check66;
90032 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check67;
90033 return std::set_union(boost::begin(rng1), boost::end(rng1),
90034 boost::begin(rng2), boost::end(rng2), out);
90035 }
90036
90037
90038 template<class SinglePassRange1, class SinglePassRange2,
90039 class OutputIterator, class BinaryPredicate>
90040 inline OutputIterator set_union(const SinglePassRange1& rng1,
90041 const SinglePassRange2& rng2,
90042 OutputIterator out,
90043 BinaryPredicate pred)
90044 {
90045 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check80;
90046 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check81;
90047 return std::set_union(boost::begin(rng1), boost::end(rng1),
90048 boost::begin(rng2), boost::end(rng2), out, pred);
90049 }
90050 # 93 "../boost/range/algorithm/set_algorithm.hpp"
90051 template<class SinglePassRange1, class SinglePassRange2,
90052 class OutputIterator>
90053 inline OutputIterator set_intersection(const SinglePassRange1& rng1,
90054 const SinglePassRange2& rng2,
90055 OutputIterator out)
90056 {
90057 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check99;
90058 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check100;
90059 return std::set_intersection(boost::begin(rng1), boost::end(rng1),
90060 boost::begin(rng2), boost::end(rng2), out);
90061 }
90062
90063
90064 template<class SinglePassRange1, class SinglePassRange2,
90065 class OutputIterator, class BinaryPredicate>
90066 inline OutputIterator set_intersection(const SinglePassRange1& rng1,
90067 const SinglePassRange2& rng2,
90068 OutputIterator out,
90069 BinaryPredicate pred)
90070 {
90071 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check113;
90072 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check114;
90073 return std::set_intersection(boost::begin(rng1), boost::end(rng1),
90074 boost::begin(rng2), boost::end(rng2),
90075 out, pred);
90076 }
90077 # 127 "../boost/range/algorithm/set_algorithm.hpp"
90078 template<class SinglePassRange1, class SinglePassRange2,
90079 class OutputIterator>
90080 inline OutputIterator set_difference(const SinglePassRange1& rng1,
90081 const SinglePassRange2& rng2,
90082 OutputIterator out)
90083 {
90084 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check133;
90085 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check134;
90086 return std::set_difference(boost::begin(rng1), boost::end(rng1),
90087 boost::begin(rng2), boost::end(rng2), out);
90088 }
90089
90090
90091 template<class SinglePassRange1, class SinglePassRange2,
90092 class OutputIterator, class BinaryPredicate>
90093 inline OutputIterator set_difference(const SinglePassRange1& rng1,
90094 const SinglePassRange2& rng2,
90095 OutputIterator out,
90096 BinaryPredicate pred)
90097 {
90098 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check147;
90099 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check148;
90100 return std::set_difference(
90101 boost::begin(rng1), boost::end(rng1),
90102 boost::begin(rng2), boost::end(rng2), out, pred);
90103 }
90104 # 161 "../boost/range/algorithm/set_algorithm.hpp"
90105 template<class SinglePassRange1, class SinglePassRange2,
90106 class OutputIterator>
90107 inline OutputIterator
90108 set_symmetric_difference(const SinglePassRange1& rng1,
90109 const SinglePassRange2& rng2,
90110 OutputIterator out)
90111 {
90112 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check168;
90113 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check169;
90114 return std::set_symmetric_difference(boost::begin(rng1), boost::end(rng1),
90115 boost::begin(rng2), boost::end(rng2), out);
90116 }
90117
90118
90119 template<class SinglePassRange1, class SinglePassRange2,
90120 class OutputIterator, class BinaryPredicate>
90121 inline OutputIterator
90122 set_symmetric_difference(const SinglePassRange1& rng1,
90123 const SinglePassRange2& rng2,
90124 OutputIterator out,
90125 BinaryPredicate pred)
90126 {
90127 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check183;
90128 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check184;
90129 return std::set_symmetric_difference(
90130 boost::begin(rng1), boost::end(rng1),
90131 boost::begin(rng2), boost::end(rng2), out, pred);
90132 }
90133
90134 }
90135 using range::includes;
90136 using range::set_union;
90137 using range::set_intersection;
90138 using range::set_difference;
90139 using range::set_symmetric_difference;
90140 }
90141 # 92 "../boost/range/algorithm.hpp" 2
90142
90143
90144 # 1 "../boost/range/algorithm/heap_algorithm.hpp" 1
90145 # 18 "../boost/range/algorithm/heap_algorithm.hpp"
90146 namespace boost
90147 {
90148 namespace range
90149 {
90150
90151
90152
90153
90154
90155
90156
90157 template<class RandomAccessRange>
90158 inline RandomAccessRange& push_heap(RandomAccessRange& rng)
90159 {
90160 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check32;
90161 std::push_heap(boost::begin(rng), boost::end(rng));
90162 return rng;
90163 }
90164
90165
90166 template<class RandomAccessRange>
90167 inline const RandomAccessRange& push_heap(const RandomAccessRange& rng)
90168 {
90169 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check41;
90170 std::push_heap(boost::begin(rng), boost::end(rng));
90171 return rng;
90172 }
90173
90174
90175 template<class RandomAccessRange, class Compare>
90176 inline RandomAccessRange& push_heap(RandomAccessRange& rng, Compare comp_pred)
90177 {
90178 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check50;
90179 std::push_heap(boost::begin(rng), boost::end(rng), comp_pred);
90180 return rng;
90181 }
90182
90183
90184 template<class RandomAccessRange, class Compare>
90185 inline const RandomAccessRange& push_heap(const RandomAccessRange& rng, Compare comp_pred)
90186 {
90187 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check59;
90188 std::push_heap(boost::begin(rng), boost::end(rng), comp_pred);
90189 return rng;
90190 }
90191
90192
90193
90194
90195
90196
90197
90198 template<class RandomAccessRange>
90199 inline RandomAccessRange& pop_heap(RandomAccessRange& rng)
90200 {
90201 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check73;
90202 std::pop_heap(boost::begin(rng), boost::end(rng));
90203 return rng;
90204 }
90205
90206
90207 template<class RandomAccessRange>
90208 inline const RandomAccessRange& pop_heap(const RandomAccessRange& rng)
90209 {
90210 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check82;
90211 std::pop_heap(boost::begin(rng), boost::end(rng));
90212 return rng;
90213 }
90214
90215
90216 template<class RandomAccessRange, class Compare>
90217 inline RandomAccessRange& pop_heap(RandomAccessRange& rng, Compare comp_pred)
90218 {
90219 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check91;
90220 std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred);
90221 return rng;
90222 }
90223
90224
90225 template<class RandomAccessRange, class Compare>
90226 inline const RandomAccessRange& pop_heap(const RandomAccessRange& rng, Compare comp_pred)
90227 {
90228 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check100;
90229 std::pop_heap(boost::begin(rng), boost::end(rng), comp_pred);
90230 return rng;
90231 }
90232
90233
90234
90235
90236
90237
90238
90239 template<class RandomAccessRange>
90240 inline RandomAccessRange& make_heap(RandomAccessRange& rng)
90241 {
90242 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check114;
90243 std::make_heap(boost::begin(rng), boost::end(rng));
90244 return rng;
90245 }
90246
90247
90248 template<class RandomAccessRange>
90249 inline const RandomAccessRange& make_heap(const RandomAccessRange& rng)
90250 {
90251 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check123;
90252 std::make_heap(boost::begin(rng), boost::end(rng));
90253 return rng;
90254 }
90255
90256
90257 template<class RandomAccessRange, class Compare>
90258 inline RandomAccessRange& make_heap(RandomAccessRange& rng, Compare comp_pred)
90259 {
90260 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check132;
90261 std::make_heap(boost::begin(rng), boost::end(rng), comp_pred);
90262 return rng;
90263 }
90264
90265
90266 template<class RandomAccessRange, class Compare>
90267 inline const RandomAccessRange& make_heap(const RandomAccessRange& rng, Compare comp_pred)
90268 {
90269 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check141;
90270 std::make_heap(boost::begin(rng), boost::end(rng), comp_pred);
90271 return rng;
90272 }
90273
90274
90275
90276
90277
90278
90279
90280 template<class RandomAccessRange>
90281 inline RandomAccessRange& sort_heap(RandomAccessRange& rng)
90282 {
90283 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check155;
90284 std::sort_heap(boost::begin(rng), boost::end(rng));
90285 return rng;
90286 }
90287
90288
90289 template<class RandomAccessRange>
90290 inline const RandomAccessRange& sort_heap(const RandomAccessRange& rng)
90291 {
90292 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check164;
90293 std::sort_heap(boost::begin(rng), boost::end(rng));
90294 return rng;
90295 }
90296
90297
90298 template<class RandomAccessRange, class Compare>
90299 inline RandomAccessRange& sort_heap(RandomAccessRange& rng, Compare comp_pred)
90300 {
90301 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<RandomAccessRange> )>::failed> boost_concept_check173;
90302 std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred);
90303 return rng;
90304 }
90305
90306
90307 template<class RandomAccessRange, class Compare>
90308 inline const RandomAccessRange& sort_heap(const RandomAccessRange& rng, Compare comp_pred)
90309 {
90310 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessRangeConcept<const RandomAccessRange> )>::failed> boost_concept_check182;
90311 std::sort_heap(boost::begin(rng), boost::end(rng), comp_pred);
90312 return rng;
90313 }
90314
90315 }
90316 using range::push_heap;
90317 using range::pop_heap;
90318 using range::make_heap;
90319 using range::sort_heap;
90320 }
90321 # 95 "../boost/range/algorithm.hpp" 2
90322
90323
90324 # 1 "../boost/range/algorithm/max_element.hpp" 1
90325 # 19 "../boost/range/algorithm/max_element.hpp"
90326 namespace boost
90327 {
90328 namespace range
90329 {
90330
90331
90332
90333
90334
90335
90336
90337 template<class ForwardRange>
90338 inline typename range_iterator<ForwardRange>::type
90339 max_element(ForwardRange& rng)
90340 {
90341 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check34;
90342 return std::max_element(boost::begin(rng), boost::end(rng));
90343 }
90344
90345
90346 template<class ForwardRange>
90347 inline typename range_iterator<const ForwardRange>::type
90348 max_element(const ForwardRange& rng)
90349 {
90350 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check43;
90351 return std::max_element(boost::begin(rng), boost::end(rng));
90352 }
90353
90354
90355 template<class ForwardRange, class BinaryPredicate>
90356 inline typename range_iterator<ForwardRange>::type
90357 max_element(ForwardRange& rng, BinaryPredicate pred)
90358 {
90359 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check52;
90360 return std::max_element(boost::begin(rng), boost::end(rng), pred);
90361 }
90362
90363
90364 template<class ForwardRange, class BinaryPredicate>
90365 inline typename range_iterator<const ForwardRange>::type
90366 max_element(const ForwardRange& rng, BinaryPredicate pred)
90367 {
90368 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check61;
90369 return std::max_element(boost::begin(rng), boost::end(rng), pred);
90370 }
90371
90372
90373
90374
90375 template<range_return_value re, class ForwardRange>
90376 inline typename range_return<ForwardRange,re>::type
90377 max_element(ForwardRange& rng)
90378 {
90379 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check72;
90380 return range_return<ForwardRange,re>::pack(
90381 std::max_element(boost::begin(rng), boost::end(rng)),
90382 rng);
90383 }
90384
90385
90386 template<range_return_value re, class ForwardRange>
90387 inline typename range_return<const ForwardRange,re>::type
90388 max_element(const ForwardRange& rng)
90389 {
90390 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check83;
90391 return range_return<const ForwardRange,re>::pack(
90392 std::max_element(boost::begin(rng), boost::end(rng)),
90393 rng);
90394 }
90395
90396
90397 template<range_return_value re, class ForwardRange, class BinaryPredicate>
90398 inline typename range_return<ForwardRange,re>::type
90399 max_element(ForwardRange& rng, BinaryPredicate pred)
90400 {
90401 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check94;
90402 return range_return<ForwardRange,re>::pack(
90403 std::max_element(boost::begin(rng), boost::end(rng), pred),
90404 rng);
90405 }
90406
90407
90408 template<range_return_value re, class ForwardRange, class BinaryPredicate>
90409 inline typename range_return<const ForwardRange,re>::type
90410 max_element(const ForwardRange& rng, BinaryPredicate pred)
90411 {
90412 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check105;
90413 return range_return<const ForwardRange,re>::pack(
90414 std::max_element(boost::begin(rng), boost::end(rng), pred),
90415 rng);
90416 }
90417
90418 }
90419 using range::max_element;
90420 }
90421 # 98 "../boost/range/algorithm.hpp" 2
90422 # 1 "../boost/range/algorithm/min_element.hpp" 1
90423 # 19 "../boost/range/algorithm/min_element.hpp"
90424 namespace boost
90425 {
90426 namespace range
90427 {
90428
90429
90430
90431
90432
90433
90434
90435 template<class ForwardRange>
90436 inline typename range_iterator<ForwardRange>::type
90437 min_element(ForwardRange& rng)
90438 {
90439 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check34;
90440 return std::min_element(boost::begin(rng), boost::end(rng));
90441 }
90442
90443
90444 template<class ForwardRange>
90445 inline typename range_iterator<const ForwardRange>::type
90446 min_element(const ForwardRange& rng)
90447 {
90448 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check43;
90449 return std::min_element(boost::begin(rng), boost::end(rng));
90450 }
90451
90452
90453 template<class ForwardRange, class BinaryPredicate>
90454 inline typename range_iterator<ForwardRange>::type
90455 min_element(ForwardRange& rng, BinaryPredicate pred)
90456 {
90457 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check52;
90458 return std::min_element(boost::begin(rng), boost::end(rng), pred);
90459 }
90460
90461
90462 template<class ForwardRange, class BinaryPredicate>
90463 inline typename range_iterator<const ForwardRange>::type
90464 min_element(const ForwardRange& rng, BinaryPredicate pred)
90465 {
90466 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check61;
90467 return std::min_element(boost::begin(rng), boost::end(rng), pred);
90468 }
90469
90470
90471
90472
90473 template<range_return_value re, class ForwardRange>
90474 inline typename range_return<ForwardRange,re>::type
90475 min_element(ForwardRange& rng)
90476 {
90477 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check72;
90478 return range_return<ForwardRange,re>::pack(
90479 std::min_element(boost::begin(rng), boost::end(rng)),
90480 rng);
90481 }
90482
90483
90484 template<range_return_value re, class ForwardRange>
90485 inline typename range_return<const ForwardRange,re>::type
90486 min_element(const ForwardRange& rng)
90487 {
90488 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check83;
90489 return range_return<const ForwardRange,re>::pack(
90490 std::min_element(boost::begin(rng), boost::end(rng)),
90491 rng);
90492 }
90493
90494
90495 template<range_return_value re, class ForwardRange, class BinaryPredicate>
90496 inline typename range_return<ForwardRange,re>::type
90497 min_element(ForwardRange& rng, BinaryPredicate pred)
90498 {
90499 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<ForwardRange> )>::failed> boost_concept_check94;
90500 return range_return<ForwardRange,re>::pack(
90501 std::min_element(boost::begin(rng), boost::end(rng), pred),
90502 rng);
90503 }
90504
90505
90506 template<range_return_value re, class ForwardRange, class BinaryPredicate>
90507 inline typename range_return<const ForwardRange,re>::type
90508 min_element(const ForwardRange& rng, BinaryPredicate pred)
90509 {
90510 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardRangeConcept<const ForwardRange> )>::failed> boost_concept_check105;
90511 return range_return<const ForwardRange,re>::pack(
90512 std::min_element(boost::begin(rng), boost::end(rng), pred),
90513 rng);
90514 }
90515
90516 }
90517 using range::min_element;
90518 }
90519 # 99 "../boost/range/algorithm.hpp" 2
90520
90521
90522 # 1 "../boost/range/algorithm/permutation.hpp" 1
90523 # 18 "../boost/range/algorithm/permutation.hpp"
90524 namespace boost
90525 {
90526 namespace range
90527 {
90528
90529
90530
90531
90532
90533
90534
90535 template<class BidirectionalRange>
90536 inline bool next_permutation(BidirectionalRange& rng)
90537 {
90538 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check32;
90539 return std::next_permutation(boost::begin(rng), boost::end(rng));
90540 }
90541
90542
90543 template<class BidirectionalRange>
90544 inline bool next_permutation(const BidirectionalRange& rng)
90545 {
90546 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check40;
90547 return std::next_permutation(boost::begin(rng), boost::end(rng));
90548 }
90549
90550
90551 template<class BidirectionalRange, class Compare>
90552 inline bool next_permutation(BidirectionalRange& rng, Compare comp_pred)
90553 {
90554 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check48;
90555 return std::next_permutation(boost::begin(rng), boost::end(rng),
90556 comp_pred);
90557 }
90558
90559
90560 template<class BidirectionalRange, class Compare>
90561 inline bool next_permutation(const BidirectionalRange& rng,
90562 Compare comp_pred)
90563 {
90564 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check58;
90565 return std::next_permutation(boost::begin(rng), boost::end(rng),
90566 comp_pred);
90567 }
90568
90569
90570
90571
90572
90573
90574
90575 template<class BidirectionalRange>
90576 inline bool prev_permutation(BidirectionalRange& rng)
90577 {
90578 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check72;
90579 return std::prev_permutation(boost::begin(rng), boost::end(rng));
90580 }
90581
90582
90583 template<class BidirectionalRange>
90584 inline bool prev_permutation(const BidirectionalRange& rng)
90585 {
90586 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check80;
90587 return std::prev_permutation(boost::begin(rng), boost::end(rng));
90588 }
90589
90590
90591 template<class BidirectionalRange, class Compare>
90592 inline bool prev_permutation(BidirectionalRange& rng, Compare comp_pred)
90593 {
90594 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<BidirectionalRange> )>::failed> boost_concept_check88;
90595 return std::prev_permutation(boost::begin(rng), boost::end(rng),
90596 comp_pred);
90597 }
90598
90599
90600 template<class BidirectionalRange, class Compare>
90601 inline bool prev_permutation(const BidirectionalRange& rng,
90602 Compare comp_pred)
90603 {
90604 typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalRangeConcept<const BidirectionalRange> )>::failed> boost_concept_check98;
90605 return std::prev_permutation(boost::begin(rng), boost::end(rng),
90606 comp_pred);
90607 }
90608
90609 }
90610 using range::next_permutation;
90611 using range::prev_permutation;
90612 }
90613 # 102 "../boost/range/algorithm.hpp" 2
90614 # 17 "quickbook/src/id_manager.cpp" 2
90615 # 1 "../boost/foreach.hpp" 1
90616 # 27 "../boost/foreach.hpp"
90617 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 1 3
90618 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
90619
90620 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 3
90621
90622
90623 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/stddef.h" 1 3 4
90624 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cstddef" 2 3
90625 # 28 "../boost/foreach.hpp" 2
90626 # 85 "../boost/foreach.hpp"
90627 # 1 "../boost/type_traits/is_base_and_derived.hpp" 1
90628 # 24 "../boost/type_traits/is_base_and_derived.hpp"
90629 # 1 "../boost/type_traits/detail/bool_trait_def.hpp" 1
90630 # 14 "../boost/type_traits/detail/bool_trait_def.hpp"
90631 # 1 "../boost/type_traits/detail/template_arity_spec.hpp" 1
90632 # 15 "../boost/type_traits/detail/bool_trait_def.hpp" 2
90633 # 25 "../boost/type_traits/is_base_and_derived.hpp" 2
90634
90635 namespace boost {
90636
90637 namespace detail {
90638 # 222 "../boost/type_traits/is_base_and_derived.hpp"
90639 template <typename B, typename D>
90640 struct is_base_and_derived_impl
90641 {
90642 typedef typename remove_cv<B>::type ncvB;
90643 typedef typename remove_cv<D>::type ncvD;
90644
90645 static const bool value = ((__is_base_of(B,D) && !is_same<B,D>::value) && ! ::boost::is_same<ncvB,ncvD>::value);
90646 };
90647
90648 }
90649
90650 template< typename Base, typename Derived > struct is_base_and_derived : public ::boost::integral_constant<bool,(::boost::detail::is_base_and_derived_impl<Base,Derived>::value)> { public: };
90651
90652
90653
90654
90655
90656
90657
90658 template< typename Base, typename Derived > struct is_base_and_derived< Base&,Derived > : public ::boost::integral_constant<bool,false> { public: };
90659 template< typename Base, typename Derived > struct is_base_and_derived< Base,Derived& > : public ::boost::integral_constant<bool,false> { public: };
90660 template< typename Base, typename Derived > struct is_base_and_derived< Base&,Derived& > : public ::boost::integral_constant<bool,false> { public: };
90661
90662
90663
90664
90665
90666
90667 }
90668
90669 # 1 "../boost/type_traits/detail/bool_trait_undef.hpp" 1
90670 # 253 "../boost/type_traits/is_base_and_derived.hpp" 2
90671 # 86 "../boost/foreach.hpp" 2
90672
90673
90674
90675 # 1 "../boost/foreach_fwd.hpp" 1
90676 # 20 "../boost/foreach_fwd.hpp"
90677 enum boost_foreach_argument_dependent_lookup_hack
90678 {
90679 boost_foreach_argument_dependent_lookup_hack_value
90680 };
90681
90682 namespace boost
90683 {
90684
90685 namespace foreach
90686 {
90687 template<typename T>
90688 std::pair<T, T> in_range(T begin, T end);
90689
90690
90691
90692
90693 typedef boost_foreach_argument_dependent_lookup_hack tag;
90694
90695
90696
90697
90698
90699 template<typename T>
90700 struct is_lightweight_proxy;
90701
90702
90703
90704
90705
90706 template<typename T>
90707 struct is_noncopyable;
90708
90709 }
90710
90711
90712 namespace BOOST_FOREACH
90713 {
90714 using foreach::in_range;
90715 using foreach::tag;
90716
90717 template<typename T>
90718 struct is_lightweight_proxy
90719 : foreach::is_lightweight_proxy<T>
90720 {};
90721
90722 template<typename T>
90723 struct is_noncopyable
90724 : foreach::is_noncopyable<T>
90725 {};
90726
90727 }
90728
90729 }
90730 # 90 "../boost/foreach.hpp" 2
90731 # 98 "../boost/foreach.hpp"
90732 namespace boost
90733 {
90734
90735
90736 template<typename T>
90737 class iterator_range;
90738
90739
90740 template<typename T>
90741 class sub_range;
90742
90743 namespace foreach
90744 {
90745
90746
90747
90748 template<typename T>
90749 inline std::pair<T, T> in_range(T begin, T end)
90750 {
90751 return std::make_pair(begin, end);
90752 }
90753
90754
90755
90756
90757
90758 template<typename T>
90759 struct is_lightweight_proxy
90760 : boost::mpl::false_
90761 {
90762 };
90763
90764
90765
90766
90767
90768 template<typename T>
90769 struct is_noncopyable
90770
90771 : boost::mpl::or_<
90772 boost::is_abstract<T>
90773 , boost::is_base_and_derived<boost::noncopyable, T>
90774 >
90775
90776
90777
90778
90779
90780
90781
90782 {
90783 };
90784
90785 }
90786
90787 }
90788 # 167 "../boost/foreach.hpp"
90789 template<typename T>
90790 inline boost::BOOST_FOREACH::is_lightweight_proxy<T> *
90791 boost_foreach_is_lightweight_proxy(T *&, boost::foreach::tag) { return 0; }
90792
90793 template<typename T>
90794 inline boost::mpl::true_ *
90795 boost_foreach_is_lightweight_proxy(std::pair<T, T> *&, boost::foreach::tag) { return 0; }
90796
90797 template<typename T>
90798 inline boost::mpl::true_ *
90799 boost_foreach_is_lightweight_proxy(boost::iterator_range<T> *&, boost::foreach::tag) { return 0; }
90800
90801 template<typename T>
90802 inline boost::mpl::true_ *
90803 boost_foreach_is_lightweight_proxy(boost::sub_range<T> *&, boost::foreach::tag) { return 0; }
90804
90805 template<typename T>
90806 inline boost::mpl::true_ *
90807 boost_foreach_is_lightweight_proxy(T **&, boost::foreach::tag) { return 0; }
90808
90809
90810
90811
90812
90813
90814 template<typename T>
90815 inline boost::BOOST_FOREACH::is_noncopyable<T> *
90816 boost_foreach_is_noncopyable(T *&, boost::foreach::tag) { return 0; }
90817
90818 namespace boost
90819 {
90820
90821 namespace foreach_detail_
90822 {
90823
90824
90825
90826
90827 template<typename Bool1, typename Bool2>
90828 inline boost::mpl::and_<Bool1, Bool2> *and_(Bool1 *, Bool2 *) { return 0; }
90829
90830 template<typename Bool1, typename Bool2, typename Bool3>
90831 inline boost::mpl::and_<Bool1, Bool2, Bool3> *and_(Bool1 *, Bool2 *, Bool3 *) { return 0; }
90832
90833 template<typename Bool1, typename Bool2>
90834 inline boost::mpl::or_<Bool1, Bool2> *or_(Bool1 *, Bool2 *) { return 0; }
90835
90836 template<typename Bool1, typename Bool2, typename Bool3>
90837 inline boost::mpl::or_<Bool1, Bool2, Bool3> *or_(Bool1 *, Bool2 *, Bool3 *) { return 0; }
90838
90839 template<typename Bool1>
90840 inline boost::mpl::not_<Bool1> *not_(Bool1 *) { return 0; }
90841
90842 template<typename T>
90843 inline boost::is_array<T> *is_array_(T const &) { return 0; }
90844
90845 template<typename T>
90846 inline boost::is_const<T> *is_const_(T &) { return 0; }
90847
90848
90849 template<typename T>
90850 inline boost::mpl::true_ *is_const_(T const &) { return 0; }
90851
90852
90853
90854 template<typename T>
90855 inline boost::mpl::false_ *is_rvalue_(T &, int) { return 0; }
90856
90857 template<typename T>
90858 inline boost::mpl::true_ *is_rvalue_(T const &, ...) { return 0; }
90859 # 245 "../boost/foreach.hpp"
90860 struct auto_any_base
90861 {
90862
90863
90864 operator bool() const
90865 {
90866 return false;
90867 }
90868 };
90869
90870 template<typename T>
90871 struct auto_any : auto_any_base
90872 {
90873 explicit auto_any(T const &t)
90874 : item(t)
90875 {
90876 }
90877
90878
90879
90880
90881 mutable T item;
90882 };
90883
90884 typedef auto_any_base const &auto_any_t;
90885
90886 template<typename T, typename C>
90887 inline typename boost::mpl::if_<C, T const, T>::type &auto_any_cast(auto_any_t a)
90888 {
90889 return static_cast<auto_any<T> const &>(a).item;
90890 }
90891
90892 typedef boost::mpl::true_ const_;
90893
90894
90895
90896
90897 template<typename T, typename C = boost::mpl::false_>
90898 struct type2type
90899 : boost::mpl::if_<C, T const, T>
90900 {
90901 };
90902
90903 template<typename T>
90904 struct wrap_cstr
90905 {
90906 typedef T type;
90907 };
90908
90909 template<>
90910 struct wrap_cstr<char *>
90911 {
90912 typedef wrap_cstr<char *> type;
90913 typedef char *iterator;
90914 typedef char *const_iterator;
90915 };
90916
90917 template<>
90918 struct wrap_cstr<char const *>
90919 {
90920 typedef wrap_cstr<char const *> type;
90921 typedef char const *iterator;
90922 typedef char const *const_iterator;
90923 };
90924
90925 template<>
90926 struct wrap_cstr<wchar_t *>
90927 {
90928 typedef wrap_cstr<wchar_t *> type;
90929 typedef wchar_t *iterator;
90930 typedef wchar_t *const_iterator;
90931 };
90932
90933 template<>
90934 struct wrap_cstr<wchar_t const *>
90935 {
90936 typedef wrap_cstr<wchar_t const *> type;
90937 typedef wchar_t const *iterator;
90938 typedef wchar_t const *const_iterator;
90939 };
90940
90941 template<typename T>
90942 struct is_char_array
90943 : mpl::and_<
90944 is_array<T>
90945 , mpl::or_<
90946 is_convertible<T, char const *>
90947 , is_convertible<T, wchar_t const *>
90948 >
90949 >
90950 {};
90951
90952 template<typename T, typename C = boost::mpl::false_>
90953 struct foreach_iterator
90954 {
90955 # 353 "../boost/foreach.hpp"
90956 struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING; typedef struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING353 : boost::mpl::assert_ { static boost::mpl::failed ************ (IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING::************ assert_arg()) (T&) { return 0; } } mpl_assert_arg353; enum { mpl_assertion_in_line_353 = sizeof( boost::mpl::assertion_failed<((!is_char_array<T>::value))>( mpl_assert_arg353::assert_arg() ) ) };
90957
90958
90959
90960
90961 typedef typename wrap_cstr<T>::type container;
90962
90963 typedef typename boost::mpl::eval_if<
90964 C
90965 , range_const_iterator<container>
90966 , range_mutable_iterator<container>
90967 >::type type;
90968 };
90969
90970
90971 template<typename T, typename C = boost::mpl::false_>
90972 struct foreach_reverse_iterator
90973 {
90974 # 384 "../boost/foreach.hpp"
90975 struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING; typedef struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING384 : boost::mpl::assert_ { static boost::mpl::failed ************ (IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING::************ assert_arg()) (T&) { return 0; } } mpl_assert_arg384; enum { mpl_assertion_in_line_384 = sizeof( boost::mpl::assertion_failed<((!is_char_array<T>::value))>( mpl_assert_arg384::assert_arg() ) ) };
90976
90977
90978
90979
90980 typedef typename wrap_cstr<T>::type container;
90981
90982 typedef typename boost::mpl::eval_if<
90983 C
90984 , range_reverse_iterator<container const>
90985 , range_reverse_iterator<container>
90986 >::type type;
90987 };
90988
90989 template<typename T, typename C = boost::mpl::false_>
90990 struct foreach_reference
90991 : iterator_reference<typename foreach_iterator<T, C>::type>
90992 {
90993 };
90994
90995
90996
90997
90998 template<typename T>
90999 inline type2type<T> *encode_type(T &, boost::mpl::false_ *) { return 0; }
91000
91001 template<typename T>
91002 inline type2type<T, const_> *encode_type(T const &, boost::mpl::true_ *) { return 0; }
91003
91004
91005
91006
91007 inline bool set_false(bool &b)
91008 {
91009 b = false;
91010 return false;
91011 }
91012
91013
91014
91015
91016 template<typename T>
91017 inline T *&to_ptr(T const &)
91018 {
91019 static T *t = 0;
91020 return t;
91021 }
91022 # 445 "../boost/foreach.hpp"
91023 template<typename T>
91024 inline T &derefof(T *t)
91025 {
91026
91027
91028 return reinterpret_cast<T &>(
91029 *const_cast<char *>(
91030 reinterpret_cast<char const volatile *>(t)
91031 )
91032 );
91033 }
91034 # 513 "../boost/foreach.hpp"
91035 template<typename T>
91036 struct rvalue_probe
91037 {
91038 rvalue_probe(T &t, bool &b)
91039 : value(t)
91040 , is_rvalue(b)
91041 {
91042 }
91043
91044 struct private_type_ {};
91045
91046
91047
91048
91049
91050
91051 typedef typename boost::mpl::if_<
91052 boost::mpl::or_<boost::is_abstract<T>, boost::is_array<T> >, private_type_, T
91053 >::type value_type;
91054
91055
91056 operator value_type()
91057 {
91058 this->is_rvalue = true;
91059 return this->value;
91060 }
91061
91062 operator T &() const
91063 {
91064 return this->value;
91065 }
91066
91067 private:
91068 T &value;
91069 bool &is_rvalue;
91070 };
91071
91072 template<typename T>
91073 rvalue_probe<T> make_probe(T &t, bool &b) { return rvalue_probe<T>(t, b); }
91074
91075 template<typename T>
91076 rvalue_probe<T const> make_probe(T const &t, bool &b) { return rvalue_probe<T const>(t, b); }
91077
91078
91079
91080
91081 template<typename T>
91082 struct simple_variant
91083 {
91084 simple_variant(T const *t)
91085 : is_rvalue(false)
91086 {
91087 *static_cast<T const **>(this->data.address()) = t;
91088 }
91089
91090 simple_variant(T const &t)
91091 : is_rvalue(true)
91092 {
91093 ::new(this->data.address()) T(t);
91094 }
91095
91096 simple_variant(simple_variant const &that)
91097 : is_rvalue(that.is_rvalue)
91098 {
91099 if(this->is_rvalue)
91100 ::new(this->data.address()) T(*that.get());
91101 else
91102 *static_cast<T const **>(this->data.address()) = that.get();
91103 }
91104
91105 ~simple_variant()
91106 {
91107 if(this->is_rvalue)
91108 this->get()->~T();
91109 }
91110
91111 T const *get() const
91112 {
91113 if(this->is_rvalue)
91114 return static_cast<T const *>(this->data.address());
91115 else
91116 return *static_cast<T const * const *>(this->data.address());
91117 }
91118
91119 private:
91120 enum size_type { size = sizeof(T) > sizeof(T*) ? sizeof(T) : sizeof(T*) };
91121 simple_variant &operator =(simple_variant const &);
91122 bool const is_rvalue;
91123 aligned_storage<size> data;
91124 };
91125
91126
91127
91128
91129 template<typename LValue, typename IsProxy>
91130 inline typename boost::enable_if<boost::mpl::or_<LValue, IsProxy>, IsProxy>::type *
91131 should_copy_impl(LValue *, IsProxy *, bool *)
91132 {
91133 return 0;
91134 }
91135
91136
91137 inline bool *
91138 should_copy_impl(boost::mpl::false_ *, boost::mpl::false_ *, bool *is_rvalue)
91139 {
91140 return is_rvalue;
91141 }
91142
91143
91144
91145
91146
91147
91148 template<typename T>
91149 inline auto_any<T> contain(T const &t, boost::mpl::true_ *)
91150 {
91151 return auto_any<T>(t);
91152 }
91153
91154 template<typename T>
91155 inline auto_any<T *> contain(T &t, boost::mpl::false_ *)
91156 {
91157
91158
91159
91160
91161 return auto_any<T *>(boost::addressof(t));
91162
91163 }
91164
91165
91166 template<typename T>
91167 inline auto_any<simple_variant<T> >
91168 contain(T const &t, bool *rvalue)
91169 {
91170 return auto_any<simple_variant<T> >(*rvalue ? simple_variant<T>(t) : simple_variant<T>(&t));
91171 }
91172
91173
91174
91175
91176
91177 template<typename T, typename C>
91178 inline auto_any<typename foreach_iterator<T, C>::type>
91179 begin(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *)
91180 {
91181 return auto_any<typename foreach_iterator<T, C>::type>(
91182 boost::begin(auto_any_cast<T, C>(col)));
91183 }
91184
91185 template<typename T, typename C>
91186 inline auto_any<typename foreach_iterator<T, C>::type>
91187 begin(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *)
91188 {
91189 typedef typename type2type<T, C>::type type;
91190 typedef typename foreach_iterator<T, C>::type iterator;
91191 return auto_any<typename foreach_iterator<T, C>::type>(
91192 iterator(boost::begin(derefof(auto_any_cast<type *, boost::mpl::false_>(col)))));
91193 }
91194
91195
91196 template<typename T>
91197 inline auto_any<typename foreach_iterator<T, const_>::type>
91198 begin(auto_any_t col, type2type<T, const_> *, bool *)
91199 {
91200 return auto_any<typename foreach_iterator<T, const_>::type>(
91201 boost::begin(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
91202 }
91203
91204
91205
91206 template<typename T, typename C>
91207 inline auto_any<T *>
91208 begin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *)
91209 {
91210 return auto_any<T *>(auto_any_cast<T *, boost::mpl::false_>(col));
91211 }
91212
91213
91214
91215
91216
91217 template<typename T, typename C>
91218 inline auto_any<typename foreach_iterator<T, C>::type>
91219 end(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *)
91220 {
91221 return auto_any<typename foreach_iterator<T, C>::type>(
91222 boost::end(auto_any_cast<T, C>(col)));
91223 }
91224
91225 template<typename T, typename C>
91226 inline auto_any<typename foreach_iterator<T, C>::type>
91227 end(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *)
91228 {
91229 typedef typename type2type<T, C>::type type;
91230 typedef typename foreach_iterator<T, C>::type iterator;
91231 return auto_any<typename foreach_iterator<T, C>::type>(
91232 iterator(boost::end(derefof(auto_any_cast<type *, boost::mpl::false_>(col)))));
91233 }
91234
91235
91236 template<typename T>
91237 inline auto_any<typename foreach_iterator<T, const_>::type>
91238 end(auto_any_t col, type2type<T, const_> *, bool *)
91239 {
91240 return auto_any<typename foreach_iterator<T, const_>::type>(
91241 boost::end(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
91242 }
91243
91244
91245
91246 template<typename T, typename C>
91247 inline auto_any<int>
91248 end(auto_any_t, type2type<T *, C> *, boost::mpl::true_ *)
91249 {
91250 return auto_any<int>(0);
91251 }
91252
91253
91254
91255
91256
91257 template<typename T, typename C>
91258 inline bool done(auto_any_t cur, auto_any_t end, type2type<T, C> *)
91259 {
91260 typedef typename foreach_iterator<T, C>::type iter_t;
91261 return auto_any_cast<iter_t, boost::mpl::false_>(cur) == auto_any_cast<iter_t, boost::mpl::false_>(end);
91262 }
91263
91264
91265 template<typename T, typename C>
91266 inline bool done(auto_any_t cur, auto_any_t, type2type<T *, C> *)
91267 {
91268 return ! *auto_any_cast<T *, boost::mpl::false_>(cur);
91269 }
91270
91271
91272
91273
91274
91275 template<typename T, typename C>
91276 inline void next(auto_any_t cur, type2type<T, C> *)
91277 {
91278 typedef typename foreach_iterator<T, C>::type iter_t;
91279 ++auto_any_cast<iter_t, boost::mpl::false_>(cur);
91280 }
91281
91282
91283
91284
91285 template<typename T, typename C>
91286 inline typename foreach_reference<T, C>::type
91287 deref(auto_any_t cur, type2type<T, C> *)
91288 {
91289 typedef typename foreach_iterator<T, C>::type iter_t;
91290 return *auto_any_cast<iter_t, boost::mpl::false_>(cur);
91291 }
91292
91293
91294
91295
91296 template<typename T, typename C>
91297 inline auto_any<typename foreach_reverse_iterator<T, C>::type>
91298 rbegin(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *)
91299 {
91300 return auto_any<typename foreach_reverse_iterator<T, C>::type>(
91301 boost::rbegin(auto_any_cast<T, C>(col)));
91302 }
91303
91304 template<typename T, typename C>
91305 inline auto_any<typename foreach_reverse_iterator<T, C>::type>
91306 rbegin(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *)
91307 {
91308 typedef typename type2type<T, C>::type type;
91309 typedef typename foreach_reverse_iterator<T, C>::type iterator;
91310 return auto_any<typename foreach_reverse_iterator<T, C>::type>(
91311 iterator(boost::rbegin(derefof(auto_any_cast<type *, boost::mpl::false_>(col)))));
91312 }
91313
91314
91315 template<typename T>
91316 inline auto_any<typename foreach_reverse_iterator<T, const_>::type>
91317 rbegin(auto_any_t col, type2type<T, const_> *, bool *)
91318 {
91319 return auto_any<typename foreach_reverse_iterator<T, const_>::type>(
91320 boost::rbegin(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
91321 }
91322
91323
91324
91325 template<typename T, typename C>
91326 inline auto_any<reverse_iterator<T *> >
91327 rbegin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *)
91328 {
91329 T *p = auto_any_cast<T *, boost::mpl::false_>(col);
91330 while(0 != *p)
91331 ++p;
91332 return auto_any<reverse_iterator<T *> >(reverse_iterator<T *>(p));
91333 }
91334
91335
91336
91337
91338
91339 template<typename T, typename C>
91340 inline auto_any<typename foreach_reverse_iterator<T, C>::type>
91341 rend(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *)
91342 {
91343 return auto_any<typename foreach_reverse_iterator<T, C>::type>(
91344 boost::rend(auto_any_cast<T, C>(col)));
91345 }
91346
91347 template<typename T, typename C>
91348 inline auto_any<typename foreach_reverse_iterator<T, C>::type>
91349 rend(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *)
91350 {
91351 typedef typename type2type<T, C>::type type;
91352 typedef typename foreach_reverse_iterator<T, C>::type iterator;
91353 return auto_any<typename foreach_reverse_iterator<T, C>::type>(
91354 iterator(boost::rend(derefof(auto_any_cast<type *, boost::mpl::false_>(col)))));
91355 }
91356
91357
91358 template<typename T>
91359 inline auto_any<typename foreach_reverse_iterator<T, const_>::type>
91360 rend(auto_any_t col, type2type<T, const_> *, bool *)
91361 {
91362 return auto_any<typename foreach_reverse_iterator<T, const_>::type>(
91363 boost::rend(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get()));
91364 }
91365
91366
91367
91368 template<typename T, typename C>
91369 inline auto_any<reverse_iterator<T *> >
91370 rend(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *)
91371 {
91372 return auto_any<reverse_iterator<T *> >(
91373 reverse_iterator<T *>(auto_any_cast<T *, boost::mpl::false_>(col)));
91374 }
91375
91376
91377
91378
91379
91380 template<typename T, typename C>
91381 inline bool rdone(auto_any_t cur, auto_any_t end, type2type<T, C> *)
91382 {
91383 typedef typename foreach_reverse_iterator<T, C>::type iter_t;
91384 return auto_any_cast<iter_t, boost::mpl::false_>(cur) == auto_any_cast<iter_t, boost::mpl::false_>(end);
91385 }
91386
91387
91388
91389
91390 template<typename T, typename C>
91391 inline void rnext(auto_any_t cur, type2type<T, C> *)
91392 {
91393 typedef typename foreach_reverse_iterator<T, C>::type iter_t;
91394 ++auto_any_cast<iter_t, boost::mpl::false_>(cur);
91395 }
91396
91397
91398
91399
91400 template<typename T, typename C>
91401 inline typename foreach_reference<T, C>::type
91402 rderef(auto_any_t cur, type2type<T, C> *)
91403 {
91404 typedef typename foreach_reverse_iterator<T, C>::type iter_t;
91405 return *auto_any_cast<iter_t, boost::mpl::false_>(cur);
91406 }
91407
91408 }
91409 }
91410 # 18 "quickbook/src/id_manager.cpp" 2
91411
91412
91413 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 1 3
91414 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
91415
91416 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/cctype" 3
91417 # 21 "quickbook/src/id_manager.cpp" 2
91418
91419 namespace quickbook
91420 {
91421
91422
91423
91424
91425
91426
91427
91428 struct id_placeholder;
91429 struct id_data;
91430 std::string replace_ids(id_state& state, std::string const& xml,
91431 bool use_resolved_ids = true);
91432 std::string process_ids(id_state&, std::string const&);
91433
91434 static const std::size_t max_size = 32;
91435
91436
91437
91438
91439
91440 struct id_placeholder
91441 {
91442 enum state_enum { child, unresolved, resolved, generated };
91443
91444 unsigned index;
91445 state_enum generation_state;
91446
91447
91448 std::string unresolved_id;
91449
91450
91451 std::string id;
91452 id_placeholder* parent;
91453
91454 id_category category;
91455 unsigned num_dots;
91456
91457 unsigned order;
91458
91459
91460
91461
91462
91463 id_data* data;
91464
91465
91466
91467 id_placeholder(
91468 unsigned index,
91469 std::string const& id,
91470 id_category category,
91471 id_placeholder* parent_ = 0)
91472 : index(index),
91473 generation_state(parent_ ? child : unresolved),
91474 unresolved_id(parent_ ? parent_->unresolved_id + '.' + id : id),
91475 id(id),
91476 parent(parent_),
91477 category(category),
91478 num_dots(boost::range::count(id, '.') +
91479 (parent_ ? parent_->num_dots + 1 : 0)),
91480 order(0),
91481 data(0)
91482 {
91483 }
91484
91485 std::string to_string()
91486 {
91487 return '$' + boost::lexical_cast<std::string>(index);
91488 }
91489
91490 bool check_state() const
91491 {
91492 return (
91493 (generation_state == child) == (bool) parent &&
91494 (generation_state == resolved) == (bool) data);
91495 }
91496
91497 bool check_state(state_enum s) const
91498 {
91499 return s == generation_state && check_state();
91500 }
91501 };
91502
91503
91504
91505
91506
91507 struct file_info;
91508 struct doc_info;
91509 struct section_info;
91510
91511 struct id_state
91512 {
91513 boost::intrusive_ptr<file_info> current_file;
91514 std::deque<id_placeholder> placeholders;
91515
91516
91517
91518 id_placeholder* add_placeholder(
91519 std::string const&, id_category, id_placeholder* parent = 0);
91520
91521 id_placeholder* get_placeholder(string_ref);
91522
91523
91524
91525 id_placeholder* start_file(
91526 unsigned compatibility_version,
91527 bool document_root,
91528 std::string const& include_doc_id,
91529 std::string const& id,
91530 value const& title);
91531
91532 void end_file();
91533
91534 id_placeholder* add_id(
91535 std::string const& id,
91536 id_category category);
91537 id_placeholder* old_style_id(
91538 std::string const& id,
91539 id_category category);
91540 id_placeholder* begin_section(
91541 std::string const& id,
91542 id_category category);
91543 void end_section();
91544
91545 private:
91546 id_placeholder* add_id_to_section(
91547 std::string const& id,
91548 id_category category,
91549 boost::intrusive_ptr<section_info> const& section);
91550 id_placeholder* create_new_section(
91551 std::string const& id,
91552 id_category category);
91553
91554 void switch_section(id_placeholder*);
91555 void reswitch_sections(boost::intrusive_ptr<section_info> const&,
91556 boost::intrusive_ptr<section_info> const&);
91557 void restore_section();
91558 };
91559
91560 struct file_info : intrusive_base<file_info>
91561 {
91562 boost::intrusive_ptr<file_info> parent;
91563 boost::intrusive_ptr<doc_info> document;
91564
91565 bool document_root;
91566 unsigned compatibility_version;
91567 boost::intrusive_ptr<section_info> switched_section;
91568 id_placeholder* original_placeholder;
91569
91570
91571
91572
91573 std::string doc_id_1_1;
91574
91575 file_info(boost::intrusive_ptr<file_info> const& parent,
91576 unsigned compatibility_version) :
91577 parent(parent), document(parent->document), document_root(false),
91578 compatibility_version(compatibility_version),
91579 switched_section(), original_placeholder()
91580 {}
91581
91582 file_info(boost::intrusive_ptr<file_info> const& parent,
91583 boost::intrusive_ptr<doc_info> const& document,
91584 unsigned compatibility_version) :
91585 parent(parent), document(document), document_root(true),
91586 compatibility_version(compatibility_version),
91587 switched_section(), original_placeholder()
91588 {}
91589 };
91590
91591 struct doc_info : intrusive_base<doc_info>
91592 {
91593 boost::intrusive_ptr<section_info> current_section;
91594 std::string last_title_1_1;
91595 std::string section_id_1_1;
91596
91597 doc_info() :
91598 current_section(), last_title_1_1(), section_id_1_1()
91599 {}
91600 };
91601
91602 struct section_info : intrusive_base<section_info>
91603 {
91604 boost::intrusive_ptr<section_info> parent;
91605 unsigned compatibility_version;
91606 unsigned level;
91607 std::string id_1_1;
91608 id_placeholder* placeholder_1_6;
91609
91610 section_info(boost::intrusive_ptr<section_info> const& parent,
91611 unsigned compatibility_version, std::string const& id) :
91612 parent(parent), compatibility_version(compatibility_version),
91613 level(parent ? parent->level + 1 : 1),
91614 id_1_1(), placeholder_1_6(0)
91615 {
91616 if (parent && compatibility_version < 106u) {
91617 id_1_1 = parent->id_1_1;
91618 if (!id_1_1.empty() && !id.empty())
91619 id_1_1 += ".";
91620 id_1_1 += id;
91621 }
91622 }
91623 };
91624
91625
91626
91627
91628
91629 id_manager::id_manager()
91630 : state(new id_state)
91631 {
91632 }
91633
91634 id_manager::~id_manager() {}
91635
91636 void id_manager::start_file(
91637 unsigned compatibility_version,
91638 std::string const& include_doc_id,
91639 std::string const& id,
91640 value const& title)
91641 {
91642 state->start_file(compatibility_version, false, include_doc_id, id, title);
91643 }
91644
91645 std::string id_manager::start_file_with_docinfo(
91646 unsigned compatibility_version,
91647 std::string const& include_doc_id,
91648 std::string const& id,
91649 value const& title)
91650 {
91651 return state->start_file(compatibility_version, true, include_doc_id,
91652 id, title)->to_string();
91653 }
91654
91655 void id_manager::end_file()
91656 {
91657 state->end_file();
91658 }
91659
91660 std::string id_manager::begin_section(std::string const& id,
91661 id_category category)
91662 {
91663 return state->begin_section(id, category)->to_string();
91664 }
91665
91666 void id_manager::end_section()
91667 {
91668 return state->end_section();
91669 }
91670
91671 int id_manager::section_level() const
91672 {
91673 return state->current_file->document->current_section->level;
91674 }
91675
91676 std::string id_manager::old_style_id(std::string const& id, id_category category)
91677 {
91678 return state->old_style_id(id, category)->to_string();
91679 }
91680
91681 std::string id_manager::add_id(std::string const& id, id_category category)
91682 {
91683 return state->add_id(id, category)->to_string();
91684 }
91685
91686 std::string id_manager::add_anchor(std::string const& id, id_category category)
91687 {
91688 return state->add_placeholder(id, category)->to_string();
91689 }
91690
91691 std::string id_manager::replace_placeholders_with_unresolved_ids(
91692 std::string const& xml) const
91693 {
91694 return replace_ids(*state, xml, false);
91695 }
91696
91697 std::string id_manager::replace_placeholders(std::string const& xml) const
91698 {
91699 (static_cast<void> (0));
91700 return process_ids(*state, xml);
91701 }
91702
91703 unsigned id_manager::compatibility_version() const
91704 {
91705 return state->current_file->compatibility_version;
91706 }
91707
91708
91709
91710
91711
91712
91713
91714 namespace
91715 {
91716 std::string normalize_id(
91717 std::string src_id,
91718 std::size_t prefix = 0,
91719 std::size_t size = max_size)
91720 {
91721 std::string id;
91722 id.swap(src_id);
91723
91724 std::size_t src = prefix;
91725 std::size_t dst = prefix;
91726 size += prefix;
91727
91728 if (src >= id.length()) {
91729 return id;
91730 }
91731
91732 while (src < id.length() && id[src] == '_') {
91733 ++src;
91734 }
91735
91736 if (src >= id.length()) {
91737 id += '_';
91738 return id;
91739 }
91740
91741 while (src < id.length() && dst < size) {
91742 if (id[src] == '_') {
91743 do {
91744 ++src;
91745 } while(src < id.length() && id[src] == '_');
91746
91747 if (src < id.length()) id[dst++] = '_';
91748 }
91749 else {
91750 id[dst++] = id[src++];
91751 }
91752 }
91753
91754 id.erase(dst);
91755
91756 return id;
91757 }
91758 }
91759
91760
91761
91762
91763
91764 id_placeholder* id_state::add_placeholder(
91765 std::string const& id, id_category category,
91766 id_placeholder* parent)
91767 {
91768 placeholders.push_back(id_placeholder(
91769 placeholders.size(), id, category, parent));
91770 return &placeholders.back();
91771 }
91772
91773 id_placeholder* id_state::get_placeholder(string_ref value)
91774 {
91775
91776 if (value.size() <= 1 || *value.begin() != '$')
91777 return 0;
91778
91779 unsigned index = boost::lexical_cast<int>(std::string(
91780 value.begin() + 1, value.end()));
91781
91782 return &placeholders.at(index);
91783 }
91784
91785 void id_state::switch_section(id_placeholder* p)
91786 {
91787 (static_cast<void> (0));
91788 current_file->switched_section = current_file->document->current_section;
91789 current_file->original_placeholder = current_file->switched_section->placeholder_1_6;
91790 current_file->switched_section->placeholder_1_6 = p;
91791 }
91792
91793 void id_state::reswitch_sections(
91794 boost::intrusive_ptr<section_info> const& popped_section,
91795 boost::intrusive_ptr<section_info> const& parent_section)
91796 {
91797 boost::intrusive_ptr<file_info> file = current_file;
91798 boost::intrusive_ptr<file_info> first_switched_file;
91799
91800 for (;;) {
91801 if (file->switched_section == popped_section)
91802 {
91803 first_switched_file = file;
91804 file->switched_section = parent_section;
91805 }
91806
91807 if (file->document_root) break;
91808 file = file->parent;
91809 }
91810
91811 if (first_switched_file) {
91812 first_switched_file->original_placeholder =
91813 parent_section->placeholder_1_6;
91814 parent_section->placeholder_1_6 =
91815 popped_section->placeholder_1_6;
91816 }
91817 }
91818
91819 void id_state::restore_section()
91820 {
91821 if (current_file->original_placeholder) {
91822 current_file->switched_section->placeholder_1_6 =
91823 current_file->original_placeholder;
91824 }
91825 }
91826
91827 id_placeholder* id_state::start_file(
91828 unsigned compatibility_version,
91829 bool document_root,
91830 std::string const& include_doc_id,
91831 std::string const& id,
91832 value const& title)
91833 {
91834
91835
91836 boost::intrusive_ptr<file_info> parent = current_file;
91837
91838 if (document_root) {
91839 current_file = new file_info(parent, new doc_info(),
91840 compatibility_version);
91841 }
91842 else {
91843 current_file =
91844 new file_info(parent, compatibility_version);
91845 }
91846
91847
91848
91849
91850
91851 std::string initial_doc_id;
91852
91853 if (document_root ||
91854 compatibility_version >= 106u ||
91855 (parent && parent->compatibility_version >= 106u)) {
91856 initial_doc_id = !include_doc_id.empty() ? include_doc_id : id;
91857 }
91858 else {
91859 initial_doc_id = !id.empty() ? id : include_doc_id;
91860 }
91861
91862
91863
91864
91865 if (document_root || compatibility_version < 106u) {
91866
91867
91868
91869 if (title.check())
91870 current_file->document->last_title_1_1 =
91871 title.get_quickbook();
91872
91873 current_file->doc_id_1_1 = !initial_doc_id.empty() ? initial_doc_id :
91874 detail::make_identifier(current_file->document->last_title_1_1);
91875 }
91876 else if (parent) {
91877 current_file->doc_id_1_1 = parent->doc_id_1_1;
91878 }
91879
91880 if (document_root) {
91881 if (!initial_doc_id.empty()) {
91882 return create_new_section(id, id_category::explicit_section_id);
91883 }
91884 else if (!title.empty()) {
91885 return create_new_section(
91886 detail::make_identifier(title.get_quickbook()),
91887 id_category::generated_doc);
91888 }
91889 else if (compatibility_version >= 106u) {
91890 return create_new_section("doc", id_category::numbered);
91891 }
91892 else {
91893 return create_new_section("", id_category::generated_doc);
91894 }
91895 }
91896 else {
91897
91898
91899
91900
91901
91902 if (compatibility_version >= 106u && !initial_doc_id.empty()) {
91903 switch_section(add_id_to_section(initial_doc_id,
91904 id_category::explicit_section_id,
91905 boost::intrusive_ptr<section_info>()));
91906 }
91907
91908 return 0;
91909 }
91910 }
91911
91912 void id_state::end_file()
91913 {
91914 restore_section();
91915 current_file = current_file->parent;
91916 }
91917
91918 id_placeholder* id_state::add_id(
91919 std::string const& id,
91920 id_category category)
91921 {
91922 return add_id_to_section(id, category,
91923 current_file->document->current_section);
91924 }
91925
91926 id_placeholder* id_state::add_id_to_section(
91927 std::string const& id,
91928 id_category category,
91929 boost::intrusive_ptr<section_info> const& section)
91930 {
91931 std::string id_part = id;
91932
91933
91934
91935
91936 if (current_file->compatibility_version >= 106u &&
91937 category.c < id_category::explicit_id) {
91938 id_part = normalize_id(id);
91939 }
91940
91941 if(!section || section->compatibility_version >= 106u) {
91942 return add_placeholder(id_part, category,
91943 section ? section->placeholder_1_6 : 0);
91944 }
91945 else {
91946 std::string const& qualified_id = section->id_1_1;
91947
91948 std::string new_id;
91949 if (!section->placeholder_1_6)
91950 new_id = current_file->doc_id_1_1;
91951 if (!new_id.empty() && !qualified_id.empty()) new_id += '.';
91952 new_id += qualified_id;
91953 if (!new_id.empty() && !id_part.empty()) new_id += '.';
91954 new_id += id_part;
91955
91956 return add_placeholder(new_id, category,
91957 section->placeholder_1_6);
91958 }
91959 }
91960
91961 id_placeholder* id_state::old_style_id(
91962 std::string const& id,
91963 id_category category)
91964 {
91965 return current_file->compatibility_version < 103u ?
91966 add_placeholder(
91967 current_file->document->section_id_1_1 + "." + id, category) :
91968 add_id(id, category);
91969 }
91970
91971 id_placeholder* id_state::begin_section(
91972 std::string const& id,
91973 id_category category)
91974 {
91975 current_file->document->section_id_1_1 = id;
91976 return create_new_section(id, category);
91977 }
91978
91979 id_placeholder* id_state::create_new_section(
91980 std::string const& id,
91981 id_category category)
91982 {
91983 boost::intrusive_ptr<section_info> parent =
91984 current_file->document->current_section;
91985
91986 boost::intrusive_ptr<section_info> new_section =
91987 new section_info(parent, current_file->compatibility_version, id);
91988
91989 id_placeholder* p;
91990
91991 if (new_section->compatibility_version >= 106u) {
91992 p = add_id_to_section(id, category, parent);
91993 new_section->placeholder_1_6 = p;
91994 }
91995 else if (new_section->compatibility_version >= 103u) {
91996 if (parent)
91997 new_section->placeholder_1_6 = parent->placeholder_1_6;
91998
91999 std::string new_id;
92000 if (!new_section->placeholder_1_6) {
92001 new_id = current_file->doc_id_1_1;
92002 if (!new_section->id_1_1.empty()) new_id += '.';
92003 }
92004 new_id += new_section->id_1_1;
92005
92006 p = add_placeholder(new_id, category,
92007 new_section->placeholder_1_6);
92008 }
92009 else {
92010 if (parent)
92011 new_section->placeholder_1_6 = parent->placeholder_1_6;
92012
92013 std::string new_id;
92014 if (parent && !new_section->placeholder_1_6)
92015 new_id = current_file->doc_id_1_1 + '.';
92016
92017 new_id += id;
92018
92019 p = add_placeholder(new_id, category,
92020 new_section->placeholder_1_6);
92021 }
92022
92023 current_file->document->current_section = new_section;
92024
92025 return p;
92026 }
92027
92028 void id_state::end_section()
92029 {
92030 boost::intrusive_ptr<section_info> popped_section =
92031 current_file->document->current_section;
92032 current_file->document->current_section = popped_section->parent;
92033
92034 reswitch_sections(popped_section, popped_section->parent);
92035 }
92036 # 649 "quickbook/src/id_manager.cpp"
92037 struct xml_processor
92038 {
92039 xml_processor();
92040
92041 std::vector<std::string> id_attributes;
92042
92043 struct callback {
92044 virtual void start(string_ref) {}
92045 virtual void id_value(string_ref) {}
92046 virtual void finish(string_ref) {}
92047 virtual ~callback() {}
92048 };
92049
92050 void parse(std::string const&, callback&);
92051 };
92052
92053 namespace
92054 {
92055 char const* id_attributes_[] =
92056 {
92057 "id",
92058 "linkend",
92059 "linkends",
92060 "arearefs"
92061 };
92062 }
92063
92064 xml_processor::xml_processor()
92065 {
92066 static int const n_id_attributes = sizeof(id_attributes_)/sizeof(char const*);
92067 for (int i = 0; i != n_id_attributes; ++i)
92068 {
92069 id_attributes.push_back(id_attributes_[i]);
92070 }
92071
92072 boost::sort(id_attributes);
92073 }
92074
92075 template <typename Iterator>
92076 bool read(Iterator& it, Iterator end, char const* text)
92077 {
92078 for(Iterator it2 = it;; ++it2, ++text) {
92079 if (!*text) {
92080 it = it2;
92081 return true;
92082 }
92083
92084 if (it2 == end || *it2 != *text)
92085 return false;
92086 }
92087 }
92088
92089 template <typename Iterator>
92090 void read_past(Iterator& it, Iterator end, char const* text)
92091 {
92092 while (it != end && !read(it, end, text)) ++it;
92093 }
92094
92095 bool find_char(char const* text, char c)
92096 {
92097 for(;*text; ++text)
92098 if (c == *text) return true;
92099 return false;
92100 }
92101
92102 template <typename Iterator>
92103 void read_some_of(Iterator& it, Iterator end, char const* text)
92104 {
92105 while(it != end && find_char(text, *it)) ++it;
92106 }
92107
92108 template <typename Iterator>
92109 void read_to_one_of(Iterator& it, Iterator end, char const* text)
92110 {
92111 while(it != end && !find_char(text, *it)) ++it;
92112 }
92113
92114 void xml_processor::parse(std::string const& source, callback& c)
92115 {
92116 typedef std::string::const_iterator iterator;
92117
92118 string_ref source_ref(source.begin(), source.end());
92119 c.start(source_ref);
92120
92121 iterator it = source_ref.begin(), end = source_ref.end();
92122
92123 for(;;)
92124 {
92125 read_past(it, end, "<");
92126 if (it == end) break;
92127
92128 if (read(it, end, "!--quickbook-escape-prefix-->"))
92129 {
92130 read_past(it, end, "<!--quickbook-escape-postfix-->");
92131 continue;
92132 }
92133
92134 switch(*it)
92135 {
92136 case '?':
92137 ++it;
92138 read_past(it, end, "?>");
92139 break;
92140
92141 case '!':
92142 if (read(it, end, "!--"))
92143 read_past(it, end, "-->");
92144 else
92145 read_past(it, end, ">");
92146 break;
92147
92148 default:
92149 if ((*it >= 'a' && *it <= 'z') ||
92150 (*it >= 'A' && *it <= 'Z') ||
92151 *it == '_' || *it == ':')
92152 {
92153 read_to_one_of(it, end, " \t\n\r>");
92154
92155 for (;;) {
92156 read_some_of(it, end, " \t\n\r");
92157 iterator name_start = it;
92158 read_to_one_of(it, end, "= \t\n\r>");
92159 if (it == end || *it == '>') break;
92160 string_ref name(name_start, it);
92161 ++it;
92162
92163 read_some_of(it, end, "= \t\n\r");
92164 if (it == end || (*it != '"' && *it != '\'')) break;
92165
92166 char delim = *it;
92167 ++it;
92168
92169 iterator value_start = it;
92170
92171 it = std::find(it, end, delim);
92172 if (it == end) break;
92173 string_ref value(value_start, it);
92174 ++it;
92175
92176 if (boost::find(id_attributes, name)
92177 != id_attributes.end())
92178 {
92179 c.id_value(value);
92180 }
92181 }
92182 }
92183 else
92184 {
92185 read_past(it, end, ">");
92186 }
92187 }
92188 }
92189
92190 c.finish(source_ref);
92191 }
92192 # 813 "quickbook/src/id_manager.cpp"
92193 struct id_generation_data : intrusive_base<id_generation_data>
92194 {
92195 id_generation_data(std::string const& src_id)
92196 : child_start(src_id.rfind('.') + 1),
92197 id(normalize_id(src_id, child_start, max_size - 1)),
92198
92199
92200 count(0)
92201 {
92202 if (std::isdigit(id[id.length() - 1]))
92203 {
92204 if (child_length() < max_size - 1)
92205 id += '_';
92206 else
92207 reduce_id();
92208 }
92209 }
92210
92211 void reduce_id()
92212 {
92213 (static_cast<void> (0));
92214 std::size_t length = id.length() - 1;
92215 while(length > child_start && std::isdigit(id[length - 1])) --length;
92216 id.erase(length);
92217 count = 0;
92218 }
92219
92220 std::size_t child_length() const
92221 {
92222 return id.length() - child_start;
92223 }
92224
92225 std::size_t child_start;
92226 std::string id;
92227 int count;
92228 };
92229
92230
92231
92232 struct id_data
92233 {
92234 id_data()
92235 : category(id_category::numbered),
92236 used(false),
92237 generation_data()
92238 {}
92239
92240 void update_category(id_category c)
92241 {
92242 if (c.c > category.c) category = c;
92243 }
92244
92245 id_category category;
92246
92247 bool used;
92248 boost::intrusive_ptr<id_generation_data> generation_data;
92249
92250
92251
92252
92253
92254
92255 };
92256
92257 typedef boost::unordered_map<std::string, id_data> allocated_ids;
92258 typedef std::vector<id_placeholder*> placeholder_index;
92259
92260 placeholder_index index_placeholders(id_state&, std::string const& xml);
92261 void resolve_id(id_placeholder&, allocated_ids&);
92262 void generate_id(id_placeholder&, allocated_ids&);
92263
92264 std::string process_ids(id_state& state, std::string const& xml)
92265 {
92266 placeholder_index placeholders = index_placeholders(state, xml);
92267
92268 typedef std::vector<id_placeholder*>::iterator iterator;
92269
92270 iterator it = placeholders.begin(),
92271 end = placeholders.end();
92272
92273
92274
92275 while (it != end) {
92276 unsigned num_dots = (*it)->num_dots;
92277
92278
92279
92280
92281 allocated_ids ids;
92282
92283 iterator it2 = it;
92284 do {
92285 resolve_id(**it2++, ids);
92286 } while(it2 != end && (*it2)->num_dots == num_dots);
92287
92288 do {
92289 generate_id(**it++, ids);
92290 } while(it != it2);
92291 }
92292
92293 return replace_ids(state, xml);
92294 }
92295 # 923 "quickbook/src/id_manager.cpp"
92296 struct placeholder_compare
92297 {
92298 bool operator()(id_placeholder* x, id_placeholder* y) const
92299 {
92300 bool x_explicit = x->category.c >= id_category::explicit_id;
92301 bool y_explicit = y->category.c >= id_category::explicit_id;
92302
92303 return
92304 x->num_dots < y->num_dots ? true :
92305 x->num_dots > y->num_dots ? false :
92306 x_explicit > y_explicit ? true :
92307 x_explicit < y_explicit ? false :
92308 x->order < y->order;
92309 }
92310 };
92311
92312 struct number_placeholders_callback : xml_processor::callback
92313 {
92314 id_state& state;
92315 unsigned count;
92316
92317 number_placeholders_callback(id_state& state)
92318 : state(state),
92319 count(0)
92320 {}
92321
92322 void id_value(string_ref value)
92323 {
92324 id_placeholder* p = state.get_placeholder(value);
92325 number(p);
92326 }
92327
92328 void number(id_placeholder* p)
92329 {
92330 if (p && !p->order) {
92331 number(p->parent);
92332 p->order = ++count;
92333 }
92334 }
92335 };
92336
92337 placeholder_index index_placeholders(
92338 id_state& state,
92339 std::string const& xml)
92340 {
92341 xml_processor processor;
92342 number_placeholders_callback callback(state);
92343 processor.parse(xml, callback);
92344
92345 placeholder_index sorted_placeholders;
92346 sorted_placeholders.reserve(state.placeholders.size());
92347 if (bool _foreach_is_rvalue974 = false) {} else if (boost::foreach_detail_::auto_any_t _foreach_col974 = boost::foreach_detail_::contain( (true ? boost::foreach_detail_::make_probe((state.placeholders), _foreach_is_rvalue974) : (state.placeholders)) , (boost::foreach_detail_::should_copy_impl( true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::is_array_(state.placeholders) , boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value) , boost::foreach_detail_::not_(boost::foreach_detail_::is_const_(state.placeholders))) , true ? 0 : boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value)) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value)) , &_foreach_is_rvalue974)))) {} else if (boost::foreach_detail_::auto_any_t _foreach_cur974 = boost::foreach_detail_::begin( _foreach_col974 , (true ? 0 : boost::foreach_detail_::encode_type(state.placeholders, boost::foreach_detail_::is_const_(state.placeholders))) , (boost::foreach_detail_::should_copy_impl( true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::is_array_(state.placeholders) , boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value) , boost::foreach_detail_::not_(boost::foreach_detail_::is_const_(state.placeholders))) , true ? 0 : boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value)) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value)) , &_foreach_is_rvalue974)))) {} else if (boost::foreach_detail_::auto_any_t _foreach_end974 = boost::foreach_detail_::end( _foreach_col974 , (true ? 0 : boost::foreach_detail_::encode_type(state.placeholders, boost::foreach_detail_::is_const_(state.placeholders))) , (boost::foreach_detail_::should_copy_impl( true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::is_array_(state.placeholders) , boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value) , boost::foreach_detail_::not_(boost::foreach_detail_::is_const_(state.placeholders))) , true ? 0 : boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value)) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr(state.placeholders) , boost_foreach_argument_dependent_lookup_hack_value)) , &_foreach_is_rvalue974)))) {} else for (bool _foreach_continue974 = true; _foreach_continue974 && !boost::foreach_detail_::done( _foreach_cur974 , _foreach_end974 , (true ? 0 : boost::foreach_detail_::encode_type(state.placeholders, boost::foreach_detail_::is_const_(state.placeholders)))); _foreach_continue974 ? boost::foreach_detail_::next( _foreach_cur974 , (true ? 0 : boost::foreach_detail_::encode_type(state.placeholders, boost::foreach_detail_::is_const_(state.placeholders)))) : (void)0) if (boost::foreach_detail_::set_false(_foreach_continue974)) {} else for (id_placeholder& p = boost::foreach_detail_::deref( _foreach_cur974 , (true ? 0 : boost::foreach_detail_::encode_type(state.placeholders, boost::foreach_detail_::is_const_(state.placeholders)))); !_foreach_continue974; _foreach_continue974 = true)
92348 if (p.order) sorted_placeholders.push_back(&p);
92349 boost::sort(sorted_placeholders, placeholder_compare());
92350
92351 return sorted_placeholders;
92352 }
92353 # 992 "quickbook/src/id_manager.cpp"
92354 void resolve_id(id_placeholder& p, allocated_ids& ids)
92355 {
92356 if (p.generation_state == id_placeholder::child)
92357 {
92358 (static_cast<void> (0));
92359
92360 (static_cast<void> (0));
92361
92362 p.id = p.parent->id + "." + p.id;
92363 p.generation_state = id_placeholder::unresolved;
92364 p.parent = 0;
92365 }
92366
92367 (static_cast<void> (0));
92368
92369 id_data& data = ids.emplace(p.id, id_data()).first->second;
92370 data.update_category(p.category);
92371
92372 p.data = &data;
92373 p.generation_state = id_placeholder::resolved;
92374 }
92375
92376
92377
92378
92379
92380
92381
92382 void register_generation_data(id_placeholder&, allocated_ids&);
92383
92384 void generate_id(id_placeholder& p, allocated_ids& ids)
92385 {
92386 (static_cast<void> (0));
92387
92388
92389
92390 if (p.category == p.data->category && !p.data->used &&
92391 p.category.c != id_category::numbered)
92392 {
92393 p.data->used = true;
92394 p.generation_state = id_placeholder::generated;
92395 p.data = 0;
92396 return;
92397 }
92398
92399 if (!p.data->generation_data)
92400 {
92401 p.data->generation_data.reset(new id_generation_data(p.id));
92402 register_generation_data(p, ids);
92403 }
92404
92405
92406 for(;;)
92407 {
92408 id_generation_data& generation_data = *p.data->generation_data;
92409
92410 std::string postfix =
92411 boost::lexical_cast<std::string>(generation_data.count++);
92412
92413 if (generation_data.child_length() + postfix.length() > max_size) {
92414
92415 generation_data.reduce_id();
92416 register_generation_data(p, ids);
92417 }
92418 else {
92419 std::string id = generation_data.id + postfix;
92420
92421 if (ids.find(id) == ids.end()) {
92422 p.id.swap(id);
92423 p.generation_state = id_placeholder::generated;
92424 p.data = 0;
92425 return;
92426 }
92427 }
92428 }
92429 }
92430
92431
92432
92433 void register_generation_data(id_placeholder& p, allocated_ids& ids)
92434 {
92435 std::string const& id = p.data->generation_data->id;
92436
92437 id_data& new_data = ids.emplace(id, id_data()).first->second;
92438
92439
92440
92441 if (new_data.generation_data)
92442 p.data->generation_data = new_data.generation_data;
92443 else
92444 new_data.generation_data = p.data->generation_data;
92445 }
92446 # 1092 "quickbook/src/id_manager.cpp"
92447 struct replace_ids_callback : xml_processor::callback
92448 {
92449 id_state& state;
92450 bool use_resolved_ids;
92451 std::string::const_iterator source_pos;
92452 std::string result;
92453
92454 replace_ids_callback(id_state& state, bool resolved)
92455 : state(state),
92456 use_resolved_ids(resolved),
92457 source_pos(),
92458 result()
92459 {}
92460
92461 void start(string_ref xml)
92462 {
92463 source_pos = xml.begin();
92464 }
92465
92466 void id_value(string_ref value)
92467 {
92468 if (id_placeholder* p = state.get_placeholder(value))
92469 {
92470 (static_cast<void> (0))
92471 ;
92472 std::string const& id = use_resolved_ids ?
92473 p->id : p->unresolved_id;
92474
92475 result.append(source_pos, value.begin());
92476 result.append(id.begin(), id.end());
92477 source_pos = value.end();
92478 }
92479 }
92480
92481 void finish(string_ref xml)
92482 {
92483 result.append(source_pos, xml.end());
92484 source_pos = xml.end();
92485 }
92486 };
92487
92488 std::string replace_ids(id_state& state, std::string const& xml,
92489 bool use_unresolved_ids)
92490 {
92491 xml_processor processor;
92492 replace_ids_callback callback(state, use_unresolved_ids);
92493 processor.parse(xml, callback);
92494 return callback.result;
92495 }
92496 }