]> git.wh0rd.org - ICEs.git/blame - 198528/ice.ii.0
initial import
[ICEs.git] / 198528 / ice.ii.0
CommitLineData
45516216 1// /usr/libexec/gcc/x86_64-pc-linux-gnu/4.2.2/cc1plus -quiet -D_GNU_SOURCE -D_REENTRANT genfield.cxx -quiet -dumpbase genfield.cxx -mtune=generic -auxbase-strip genfield.o -O3 -fopenmp -o - -frandom-seed=0
2# 1 "genfield.cxx"
3# 1 "<built-in>"
4# 1 "<command-line>"
5# 1 "genfield.cxx"
6
7# 1 "/usr/include/boost/array.hpp" 1 3 4
8# 27 "/usr/include/boost/array.hpp" 3 4
9# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 1 3 4
10# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 3 4
11
12# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 3
13
14# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 1 3
15# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3
16# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3
17# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 3
18# 1 "/usr/include/features.h" 1 3 4
19
20
21
22
23
24
25
26# 1 "/usr/include/gentoo-multilib/amd64/features.h" 1 3 4
27# 322 "/usr/include/gentoo-multilib/amd64/features.h" 3 4
28# 1 "/usr/include/sys/cdefs.h" 1 3 4
29
30
31
32
33
34
35
36# 1 "/usr/include/gentoo-multilib/amd64/sys/cdefs.h" 1 3 4
37# 324 "/usr/include/gentoo-multilib/amd64/sys/cdefs.h" 3 4
38# 1 "/usr/include/bits/wordsize.h" 1 3 4
39
40
41
42
43
44
45
46# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
47# 9 "/usr/include/bits/wordsize.h" 2 3 4
48# 325 "/usr/include/gentoo-multilib/amd64/sys/cdefs.h" 2 3 4
49# 9 "/usr/include/sys/cdefs.h" 2 3 4
50# 323 "/usr/include/gentoo-multilib/amd64/features.h" 2 3 4
51# 345 "/usr/include/gentoo-multilib/amd64/features.h" 3 4
52# 1 "/usr/include/gnu/stubs.h" 1 3 4
53
54
55
56
57
58
59
60# 1 "/usr/include/gentoo-multilib/amd64/gnu/stubs.h" 1 3 4
61
62
63
64# 1 "/usr/include/bits/wordsize.h" 1 3 4
65
66
67
68
69
70
71
72# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
73# 9 "/usr/include/bits/wordsize.h" 2 3 4
74# 5 "/usr/include/gentoo-multilib/amd64/gnu/stubs.h" 2 3 4
75
76
77
78
79# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
80
81
82
83# 1 "/usr/include/gentoo-multilib/amd64/gnu/stubs-64.h" 1 3 4
84# 5 "/usr/include/gnu/stubs-64.h" 2 3 4
85# 10 "/usr/include/gentoo-multilib/amd64/gnu/stubs.h" 2 3 4
86# 9 "/usr/include/gnu/stubs.h" 2 3 4
87# 346 "/usr/include/gentoo-multilib/amd64/features.h" 2 3 4
88# 9 "/usr/include/features.h" 2 3 4
89# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 2 3
90# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 2 3
91
92
93# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3
94# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 2 3
95# 149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3
96namespace std __attribute__ ((__visibility__ ("default"))) {
97# 161 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3
98}
99# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 2 3
100# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
101# 152 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 3 4
102typedef long int ptrdiff_t;
103# 214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 3 4
104typedef long unsigned int size_t;
105# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 2 3
106
107namespace std __attribute__ ((__visibility__ ("default"))) {
108
109 using ::ptrdiff_t;
110 using ::size_t;
111
112}
113# 28 "/usr/include/boost/array.hpp" 2 3 4
114# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/stdexcept" 1 3 4
115# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/stdexcept" 3 4
116
117# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/stdexcept" 3
118
119# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 1 3
120# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
121#pragma GCC visibility push(default)
122
123
124
125extern "C++" {
126
127namespace std
128{
129# 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
130 class exception
131 {
132 public:
133 exception() throw() { }
134 virtual ~exception() throw();
135
136
137
138 virtual const char* what() const throw();
139 };
140
141
142
143 class bad_exception : public exception
144 {
145 public:
146 bad_exception() throw() { }
147
148
149
150 virtual ~bad_exception() throw();
151
152
153 virtual const char* what() const throw();
154 };
155
156
157 typedef void (*terminate_handler) ();
158
159
160 typedef void (*unexpected_handler) ();
161
162
163 terminate_handler set_terminate(terminate_handler) throw();
164
165
166
167 void terminate() __attribute__ ((__noreturn__));
168
169
170 unexpected_handler set_unexpected(unexpected_handler) throw();
171
172
173
174 void unexpected() __attribute__ ((__noreturn__));
175# 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
176 bool uncaught_exception() throw();
177}
178
179namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
180# 127 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
181 void __verbose_terminate_handler ();
182
183}
184
185}
186
187#pragma GCC visibility pop
188# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/stdexcept" 2 3
189# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 1 3
190# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 3
191
192# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 3
193
194
195# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stringfwd.h" 1 3
196# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stringfwd.h" 3
197
198# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stringfwd.h" 3
199
200
201
202namespace std __attribute__ ((__visibility__ ("default"))) {
203
204 template<typename _Alloc>
205 class allocator;
206
207 template<class _CharT>
208 struct char_traits;
209
210 template<typename _CharT, typename _Traits = char_traits<_CharT>,
211 typename _Alloc = allocator<_CharT> >
212 class basic_string;
213
214 template<> struct char_traits<char>;
215
216 typedef basic_string<char> string;
217
218
219 template<> struct char_traits<wchar_t>;
220
221 typedef basic_string<wchar_t> wstring;
222
223
224}
225# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
226# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 1 3
227# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
228
229# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
230
231# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstring" 1 3
232# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstring" 3
233
234# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstring" 3
235
236
237
238# 1 "/usr/include/string.h" 1 3 4
239
240
241
242
243
244
245
246# 1 "/usr/include/gentoo-multilib/amd64/string.h" 1 3 4
247# 26 "/usr/include/gentoo-multilib/amd64/string.h" 3 4
248# 1 "/usr/include/features.h" 1 3 4
249# 27 "/usr/include/gentoo-multilib/amd64/string.h" 2 3 4
250
251extern "C" {
252
253
254
255
256# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
257# 34 "/usr/include/gentoo-multilib/amd64/string.h" 2 3 4
258
259
260
261
262extern void *memcpy (void *__restrict __dest,
263 __const void *__restrict __src, size_t __n)
264 throw () __attribute__ ((__nonnull__ (1, 2)));
265
266
267extern void *memmove (void *__dest, __const void *__src, size_t __n)
268 throw () __attribute__ ((__nonnull__ (1, 2)));
269
270
271
272
273
274
275extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
276 int __c, size_t __n)
277 throw () __attribute__ ((__nonnull__ (1, 2)));
278
279
280
281
282
283extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
284
285
286extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
287 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
288
289
290extern void *memchr (__const void *__s, int __c, size_t __n)
291 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
292
293
294
295
296
297extern void *rawmemchr (__const void *__s, int __c)
298 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
299
300
301extern void *memrchr (__const void *__s, int __c, size_t __n)
302 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
303
304
305
306
307
308extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
309 throw () __attribute__ ((__nonnull__ (1, 2)));
310
311extern char *strncpy (char *__restrict __dest,
312 __const char *__restrict __src, size_t __n)
313 throw () __attribute__ ((__nonnull__ (1, 2)));
314
315
316extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
317 throw () __attribute__ ((__nonnull__ (1, 2)));
318
319extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
320 size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
321
322
323extern int strcmp (__const char *__s1, __const char *__s2)
324 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
325
326extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
327 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
328
329
330extern int strcoll (__const char *__s1, __const char *__s2)
331 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
332
333extern size_t strxfrm (char *__restrict __dest,
334 __const char *__restrict __src, size_t __n)
335 throw () __attribute__ ((__nonnull__ (2)));
336
337
338
339
340
341
342# 1 "/usr/include/xlocale.h" 1 3 4
343
344
345
346
347
348
349
350# 1 "/usr/include/gentoo-multilib/amd64/xlocale.h" 1 3 4
351# 28 "/usr/include/gentoo-multilib/amd64/xlocale.h" 3 4
352typedef struct __locale_struct
353{
354
355 struct locale_data *__locales[13];
356
357
358 const unsigned short int *__ctype_b;
359 const int *__ctype_tolower;
360 const int *__ctype_toupper;
361
362
363 const char *__names[13];
364} *__locale_t;
365# 9 "/usr/include/xlocale.h" 2 3 4
366# 119 "/usr/include/gentoo-multilib/amd64/string.h" 2 3 4
367
368
369extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
370 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
371
372extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
373 __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4)));
374
375
376
377
378extern char *strdup (__const char *__s)
379 throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
380
381
382
383
384
385
386extern char *strndup (__const char *__string, size_t __n)
387 throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
388# 165 "/usr/include/gentoo-multilib/amd64/string.h" 3 4
389
390
391extern char *strchr (__const char *__s, int __c)
392 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
393
394extern char *strrchr (__const char *__s, int __c)
395 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
396
397
398
399
400
401extern char *strchrnul (__const char *__s, int __c)
402 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
403
404
405
406
407
408extern size_t strcspn (__const char *__s, __const char *__reject)
409 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
410
411
412extern size_t strspn (__const char *__s, __const char *__accept)
413 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
414
415extern char *strpbrk (__const char *__s, __const char *__accept)
416 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
417
418extern char *strstr (__const char *__haystack, __const char *__needle)
419 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
420
421
422
423extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
424 throw () __attribute__ ((__nonnull__ (2)));
425
426
427
428
429extern char *__strtok_r (char *__restrict __s,
430 __const char *__restrict __delim,
431 char **__restrict __save_ptr)
432 throw () __attribute__ ((__nonnull__ (2, 3)));
433
434extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
435 char **__restrict __save_ptr)
436 throw () __attribute__ ((__nonnull__ (2, 3)));
437
438
439
440
441extern char *strcasestr (__const char *__haystack, __const char *__needle)
442 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
443
444
445
446
447
448
449extern void *memmem (__const void *__haystack, size_t __haystacklen,
450 __const void *__needle, size_t __needlelen)
451 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
452
453
454
455extern void *__mempcpy (void *__restrict __dest,
456 __const void *__restrict __src, size_t __n)
457 throw () __attribute__ ((__nonnull__ (1, 2)));
458extern void *mempcpy (void *__restrict __dest,
459 __const void *__restrict __src, size_t __n)
460 throw () __attribute__ ((__nonnull__ (1, 2)));
461
462
463
464
465
466extern size_t strlen (__const char *__s)
467 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
468
469
470
471
472
473extern size_t strnlen (__const char *__string, size_t __maxlen)
474 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
475
476
477
478
479
480extern char *strerror (int __errnum) throw ();
481
482# 281 "/usr/include/gentoo-multilib/amd64/string.h" 3 4
483extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
484 throw () __attribute__ ((__nonnull__ (2)));
485
486
487
488
489
490extern char *strerror_l (int __errnum, __locale_t __l) throw ();
491
492
493
494
495
496extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
497
498
499
500extern void bcopy (__const void *__src, void *__dest, size_t __n)
501 throw () __attribute__ ((__nonnull__ (1, 2)));
502
503
504extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
505
506
507extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
508 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
509
510
511extern char *index (__const char *__s, int __c)
512 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
513
514
515extern char *rindex (__const char *__s, int __c)
516 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
517
518
519
520extern int ffs (int __i) throw () __attribute__ ((__const__));
521
522
523
524
525extern int ffsl (long int __l) throw () __attribute__ ((__const__));
526
527__extension__ extern int ffsll (long long int __ll)
528 throw () __attribute__ ((__const__));
529
530
531
532
533extern int strcasecmp (__const char *__s1, __const char *__s2)
534 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
535
536
537extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
538 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
539
540
541
542
543
544extern int strcasecmp_l (__const char *__s1, __const char *__s2,
545 __locale_t __loc)
546 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
547
548extern int strncasecmp_l (__const char *__s1, __const char *__s2,
549 size_t __n, __locale_t __loc)
550 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
551
552
553
554
555
556extern char *strsep (char **__restrict __stringp,
557 __const char *__restrict __delim)
558 throw () __attribute__ ((__nonnull__ (1, 2)));
559
560
561
562
563extern int strverscmp (__const char *__s1, __const char *__s2)
564 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
565
566
567extern char *strsignal (int __sig) throw ();
568
569
570extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
571 throw () __attribute__ ((__nonnull__ (1, 2)));
572extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
573 throw () __attribute__ ((__nonnull__ (1, 2)));
574
575
576
577extern char *__stpncpy (char *__restrict __dest,
578 __const char *__restrict __src, size_t __n)
579 throw () __attribute__ ((__nonnull__ (1, 2)));
580extern char *stpncpy (char *__restrict __dest,
581 __const char *__restrict __src, size_t __n)
582 throw () __attribute__ ((__nonnull__ (1, 2)));
583
584
585extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1)));
586
587
588extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
589
590
591
592
593
594
595extern char *basename (__const char *__filename) throw () __attribute__ ((__nonnull__ (1)));
596# 432 "/usr/include/gentoo-multilib/amd64/string.h" 3 4
597}
598# 9 "/usr/include/string.h" 2 3 4
599# 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstring" 2 3
600# 78 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstring" 3
601namespace std __attribute__ ((__visibility__ ("default"))) {
602
603 using ::memcpy;
604 using ::memmove;
605 using ::strcpy;
606 using ::strncpy;
607 using ::strcat;
608 using ::strncat;
609 using ::memcmp;
610 using ::strcmp;
611 using ::strcoll;
612 using ::strncmp;
613 using ::strxfrm;
614 using ::strcspn;
615 using ::strspn;
616 using ::strtok;
617 using ::memset;
618 using ::strerror;
619 using ::strlen;
620
621 using ::memchr;
622
623 inline void*
624 memchr(void* __p, int __c, size_t __n)
625 { return memchr(const_cast<const void*>(__p), __c, __n); }
626
627 using ::strchr;
628
629 inline char*
630 strchr(char* __s1, int __n)
631 { return __builtin_strchr(const_cast<const char*>(__s1), __n); }
632
633 using ::strpbrk;
634
635 inline char*
636 strpbrk(char* __s1, const char* __s2)
637 { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); }
638
639 using ::strrchr;
640
641 inline char*
642 strrchr(char* __s1, int __n)
643 { return __builtin_strrchr(const_cast<const char*>(__s1), __n); }
644
645 using ::strstr;
646
647 inline char*
648 strstr(char* __s1, const char* __s2)
649 { return __builtin_strstr(const_cast<const char*>(__s1), __s2); }
650
651}
652# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 2 3
653# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 1 3
654# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
655# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/climits" 1 3
656# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/climits" 3
657
658# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/climits" 3
659
660# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/limits.h" 1 3 4
661# 11 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/limits.h" 3 4
662# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/syslimits.h" 1 3 4
663
664
665
666
667
668
669# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/limits.h" 1 3 4
670# 122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/limits.h" 3 4
671# 1 "/usr/include/limits.h" 1 3 4
672
673
674
675
676
677
678
679# 1 "/usr/include/gentoo-multilib/amd64/limits.h" 1 3 4
680# 27 "/usr/include/gentoo-multilib/amd64/limits.h" 3 4
681# 1 "/usr/include/features.h" 1 3 4
682# 28 "/usr/include/gentoo-multilib/amd64/limits.h" 2 3 4
683# 145 "/usr/include/gentoo-multilib/amd64/limits.h" 3 4
684# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
685
686
687
688
689
690
691
692# 1 "/usr/include/gentoo-multilib/amd64/bits/posix1_lim.h" 1 3 4
693# 153 "/usr/include/gentoo-multilib/amd64/bits/posix1_lim.h" 3 4
694# 1 "/usr/include/bits/local_lim.h" 1 3 4
695
696
697
698
699
700
701
702# 1 "/usr/include/gentoo-multilib/amd64/bits/local_lim.h" 1 3 4
703# 36 "/usr/include/gentoo-multilib/amd64/bits/local_lim.h" 3 4
704# 1 "/usr/include/linux/limits.h" 1 3 4
705# 37 "/usr/include/gentoo-multilib/amd64/bits/local_lim.h" 2 3 4
706# 9 "/usr/include/bits/local_lim.h" 2 3 4
707# 154 "/usr/include/gentoo-multilib/amd64/bits/posix1_lim.h" 2 3 4
708# 9 "/usr/include/bits/posix1_lim.h" 2 3 4
709# 146 "/usr/include/gentoo-multilib/amd64/limits.h" 2 3 4
710
711
712
713# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
714
715
716
717
718
719
720
721# 1 "/usr/include/gentoo-multilib/amd64/bits/posix2_lim.h" 1 3 4
722# 9 "/usr/include/bits/posix2_lim.h" 2 3 4
723# 150 "/usr/include/gentoo-multilib/amd64/limits.h" 2 3 4
724
725
726
727# 1 "/usr/include/bits/xopen_lim.h" 1 3 4
728
729
730
731
732
733
734
735# 1 "/usr/include/gentoo-multilib/amd64/bits/xopen_lim.h" 1 3 4
736# 34 "/usr/include/gentoo-multilib/amd64/bits/xopen_lim.h" 3 4
737# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
738
739
740
741
742
743
744
745# 1 "/usr/include/gentoo-multilib/amd64/bits/stdio_lim.h" 1 3 4
746# 9 "/usr/include/bits/stdio_lim.h" 2 3 4
747# 35 "/usr/include/gentoo-multilib/amd64/bits/xopen_lim.h" 2 3 4
748# 9 "/usr/include/bits/xopen_lim.h" 2 3 4
749# 154 "/usr/include/gentoo-multilib/amd64/limits.h" 2 3 4
750# 9 "/usr/include/limits.h" 2 3 4
751# 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/limits.h" 2 3 4
752# 8 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/syslimits.h" 2 3 4
753# 12 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/limits.h" 2 3 4
754# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/climits" 2 3
755# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
756# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 1 3
757# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 3
758
759# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 3
760# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 3
761# 1 "/usr/include/stdlib.h" 1 3 4
762
763
764
765
766
767
768
769# 1 "/usr/include/gentoo-multilib/amd64/stdlib.h" 1 3 4
770# 25 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
771# 1 "/usr/include/features.h" 1 3 4
772# 26 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
773
774
775
776
777
778
779
780# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
781# 34 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
782
783extern "C" {
784
785
786
787
788
789
790# 1 "/usr/include/bits/waitflags.h" 1 3 4
791
792
793
794
795
796
797
798# 1 "/usr/include/gentoo-multilib/amd64/bits/waitflags.h" 1 3 4
799# 9 "/usr/include/bits/waitflags.h" 2 3 4
800# 43 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
801# 1 "/usr/include/bits/waitstatus.h" 1 3 4
802
803
804
805
806
807
808
809# 1 "/usr/include/gentoo-multilib/amd64/bits/waitstatus.h" 1 3 4
810# 65 "/usr/include/gentoo-multilib/amd64/bits/waitstatus.h" 3 4
811# 1 "/usr/include/endian.h" 1 3 4
812
813
814
815
816
817
818
819# 1 "/usr/include/gentoo-multilib/amd64/endian.h" 1 3 4
820# 22 "/usr/include/gentoo-multilib/amd64/endian.h" 3 4
821# 1 "/usr/include/features.h" 1 3 4
822# 23 "/usr/include/gentoo-multilib/amd64/endian.h" 2 3 4
823# 37 "/usr/include/gentoo-multilib/amd64/endian.h" 3 4
824# 1 "/usr/include/bits/endian.h" 1 3 4
825
826
827
828
829
830
831
832# 1 "/usr/include/gentoo-multilib/amd64/bits/endian.h" 1 3 4
833# 9 "/usr/include/bits/endian.h" 2 3 4
834# 38 "/usr/include/gentoo-multilib/amd64/endian.h" 2 3 4
835# 9 "/usr/include/endian.h" 2 3 4
836# 66 "/usr/include/gentoo-multilib/amd64/bits/waitstatus.h" 2 3 4
837
838union wait
839 {
840 int w_status;
841 struct
842 {
843
844 unsigned int __w_termsig:7;
845 unsigned int __w_coredump:1;
846 unsigned int __w_retcode:8;
847 unsigned int:16;
848
849
850
851
852
853
854
855 } __wait_terminated;
856 struct
857 {
858
859 unsigned int __w_stopval:8;
860 unsigned int __w_stopsig:8;
861 unsigned int:16;
862
863
864
865
866
867
868 } __wait_stopped;
869 };
870# 9 "/usr/include/bits/waitstatus.h" 2 3 4
871# 44 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
872# 96 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
873
874
875typedef struct
876 {
877 int quot;
878 int rem;
879 } div_t;
880
881
882
883typedef struct
884 {
885 long int quot;
886 long int rem;
887 } ldiv_t;
888
889
890
891
892
893
894
895__extension__ typedef struct
896 {
897 long long int quot;
898 long long int rem;
899 } lldiv_t;
900
901
902# 140 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
903extern size_t __ctype_get_mb_cur_max (void) throw () ;
904
905
906
907
908extern double atof (__const char *__nptr)
909 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
910
911extern int atoi (__const char *__nptr)
912 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
913
914extern long int atol (__const char *__nptr)
915 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
916
917
918
919
920
921__extension__ extern long long int atoll (__const char *__nptr)
922 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
923
924
925
926
927
928extern double strtod (__const char *__restrict __nptr,
929 char **__restrict __endptr)
930 throw () __attribute__ ((__nonnull__ (1))) ;
931
932
933
934
935
936extern float strtof (__const char *__restrict __nptr,
937 char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) ;
938
939extern long double strtold (__const char *__restrict __nptr,
940 char **__restrict __endptr)
941 throw () __attribute__ ((__nonnull__ (1))) ;
942
943
944
945
946
947extern long int strtol (__const char *__restrict __nptr,
948 char **__restrict __endptr, int __base)
949 throw () __attribute__ ((__nonnull__ (1))) ;
950
951extern unsigned long int strtoul (__const char *__restrict __nptr,
952 char **__restrict __endptr, int __base)
953 throw () __attribute__ ((__nonnull__ (1))) ;
954
955
956
957
958__extension__
959extern long long int strtoq (__const char *__restrict __nptr,
960 char **__restrict __endptr, int __base)
961 throw () __attribute__ ((__nonnull__ (1))) ;
962
963__extension__
964extern unsigned long long int strtouq (__const char *__restrict __nptr,
965 char **__restrict __endptr, int __base)
966 throw () __attribute__ ((__nonnull__ (1))) ;
967
968
969
970
971
972__extension__
973extern long long int strtoll (__const char *__restrict __nptr,
974 char **__restrict __endptr, int __base)
975 throw () __attribute__ ((__nonnull__ (1))) ;
976
977__extension__
978extern unsigned long long int strtoull (__const char *__restrict __nptr,
979 char **__restrict __endptr, int __base)
980 throw () __attribute__ ((__nonnull__ (1))) ;
981
982# 236 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
983# 1 "/usr/include/xlocale.h" 1 3 4
984# 237 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
985
986
987
988extern long int strtol_l (__const char *__restrict __nptr,
989 char **__restrict __endptr, int __base,
990 __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))) ;
991
992extern unsigned long int strtoul_l (__const char *__restrict __nptr,
993 char **__restrict __endptr,
994 int __base, __locale_t __loc)
995 throw () __attribute__ ((__nonnull__ (1, 4))) ;
996
997__extension__
998extern long long int strtoll_l (__const char *__restrict __nptr,
999 char **__restrict __endptr, int __base,
1000 __locale_t __loc)
1001 throw () __attribute__ ((__nonnull__ (1, 4))) ;
1002
1003__extension__
1004extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
1005 char **__restrict __endptr,
1006 int __base, __locale_t __loc)
1007 throw () __attribute__ ((__nonnull__ (1, 4))) ;
1008
1009extern double strtod_l (__const char *__restrict __nptr,
1010 char **__restrict __endptr, __locale_t __loc)
1011 throw () __attribute__ ((__nonnull__ (1, 3))) ;
1012
1013extern float strtof_l (__const char *__restrict __nptr,
1014 char **__restrict __endptr, __locale_t __loc)
1015 throw () __attribute__ ((__nonnull__ (1, 3))) ;
1016
1017extern long double strtold_l (__const char *__restrict __nptr,
1018 char **__restrict __endptr,
1019 __locale_t __loc)
1020 throw () __attribute__ ((__nonnull__ (1, 3))) ;
1021
1022
1023
1024
1025
1026
1027extern double __strtod_internal (__const char *__restrict __nptr,
1028 char **__restrict __endptr, int __group)
1029 throw () __attribute__ ((__nonnull__ (1))) ;
1030extern float __strtof_internal (__const char *__restrict __nptr,
1031 char **__restrict __endptr, int __group)
1032 throw () __attribute__ ((__nonnull__ (1))) ;
1033extern long double __strtold_internal (__const char *__restrict __nptr,
1034 char **__restrict __endptr,
1035 int __group)
1036 throw () __attribute__ ((__nonnull__ (1))) ;
1037
1038extern long int __strtol_internal (__const char *__restrict __nptr,
1039 char **__restrict __endptr,
1040 int __base, int __group)
1041 throw () __attribute__ ((__nonnull__ (1))) ;
1042
1043
1044
1045extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
1046 char **__restrict __endptr,
1047 int __base, int __group)
1048 throw () __attribute__ ((__nonnull__ (1))) ;
1049
1050
1051
1052
1053__extension__
1054extern long long int __strtoll_internal (__const char *__restrict __nptr,
1055 char **__restrict __endptr,
1056 int __base, int __group)
1057 throw () __attribute__ ((__nonnull__ (1))) ;
1058
1059
1060
1061__extension__
1062extern unsigned long long int __strtoull_internal (__const char *
1063 __restrict __nptr,
1064 char **__restrict __endptr,
1065 int __base, int __group)
1066 throw () __attribute__ ((__nonnull__ (1))) ;
1067
1068
1069
1070
1071
1072
1073
1074
1075extern __inline double
1076strtod (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
1077{
1078 return __strtod_internal (__nptr, __endptr, 0);
1079}
1080extern __inline long int
1081strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ()
1082
1083{
1084 return __strtol_internal (__nptr, __endptr, __base, 0);
1085}
1086extern __inline unsigned long int
1087strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ()
1088
1089{
1090 return __strtoul_internal (__nptr, __endptr, __base, 0);
1091}
1092
1093
1094
1095
1096extern __inline float
1097strtof (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
1098{
1099 return __strtof_internal (__nptr, __endptr, 0);
1100}
1101
1102extern __inline long double
1103strtold (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
1104{
1105 return __strtold_internal (__nptr, __endptr, 0);
1106}
1107
1108
1109
1110
1111
1112__extension__ extern __inline long long int
1113strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ()
1114
1115{
1116 return __strtoll_internal (__nptr, __endptr, __base, 0);
1117}
1118__extension__ extern __inline unsigned long long int
1119strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ()
1120
1121{
1122 return __strtoull_internal (__nptr, __endptr, __base, 0);
1123}
1124
1125
1126
1127
1128__extension__ extern __inline long long int
1129strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ()
1130
1131{
1132 return __strtoll_internal (__nptr, __endptr, __base, 0);
1133}
1134__extension__ extern __inline unsigned long long int
1135strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) throw ()
1136
1137{
1138 return __strtoull_internal (__nptr, __endptr, __base, 0);
1139}
1140
1141
1142
1143
1144extern __inline double
1145atof (__const char *__nptr) throw ()
1146{
1147 return strtod (__nptr, (char **) __null);
1148}
1149extern __inline int
1150atoi (__const char *__nptr) throw ()
1151{
1152 return (int) strtol (__nptr, (char **) __null, 10);
1153}
1154extern __inline long int
1155atol (__const char *__nptr) throw ()
1156{
1157 return strtol (__nptr, (char **) __null, 10);
1158}
1159
1160
1161
1162
1163__extension__ extern __inline long long int
1164atoll (__const char *__nptr) throw ()
1165{
1166 return strtoll (__nptr, (char **) __null, 10);
1167}
1168
1169# 429 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
1170extern char *l64a (long int __n) throw () ;
1171
1172
1173extern long int a64l (__const char *__s)
1174 throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
1175
1176
1177
1178
1179# 1 "/usr/include/sys/types.h" 1 3 4
1180
1181
1182
1183
1184
1185
1186
1187# 1 "/usr/include/gentoo-multilib/amd64/sys/types.h" 1 3 4
1188# 27 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1189# 1 "/usr/include/features.h" 1 3 4
1190# 28 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1191
1192extern "C" {
1193
1194# 1 "/usr/include/bits/types.h" 1 3 4
1195
1196
1197
1198
1199
1200
1201
1202# 1 "/usr/include/gentoo-multilib/amd64/bits/types.h" 1 3 4
1203# 27 "/usr/include/gentoo-multilib/amd64/bits/types.h" 3 4
1204# 1 "/usr/include/features.h" 1 3 4
1205# 28 "/usr/include/gentoo-multilib/amd64/bits/types.h" 2 3 4
1206# 1 "/usr/include/bits/wordsize.h" 1 3 4
1207
1208
1209
1210
1211
1212
1213
1214# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
1215# 9 "/usr/include/bits/wordsize.h" 2 3 4
1216# 29 "/usr/include/gentoo-multilib/amd64/bits/types.h" 2 3 4
1217
1218
1219# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
1220# 32 "/usr/include/gentoo-multilib/amd64/bits/types.h" 2 3 4
1221
1222
1223typedef unsigned char __u_char;
1224typedef unsigned short int __u_short;
1225typedef unsigned int __u_int;
1226typedef unsigned long int __u_long;
1227
1228
1229typedef signed char __int8_t;
1230typedef unsigned char __uint8_t;
1231typedef signed short int __int16_t;
1232typedef unsigned short int __uint16_t;
1233typedef signed int __int32_t;
1234typedef unsigned int __uint32_t;
1235
1236typedef signed long int __int64_t;
1237typedef unsigned long int __uint64_t;
1238
1239
1240
1241
1242
1243
1244
1245typedef long int __quad_t;
1246typedef unsigned long int __u_quad_t;
1247# 134 "/usr/include/gentoo-multilib/amd64/bits/types.h" 3 4
1248# 1 "/usr/include/bits/typesizes.h" 1 3 4
1249
1250
1251
1252
1253
1254
1255
1256# 1 "/usr/include/gentoo-multilib/amd64/bits/typesizes.h" 1 3 4
1257# 9 "/usr/include/bits/typesizes.h" 2 3 4
1258# 135 "/usr/include/gentoo-multilib/amd64/bits/types.h" 2 3 4
1259
1260
1261typedef unsigned long int __dev_t;
1262typedef unsigned int __uid_t;
1263typedef unsigned int __gid_t;
1264typedef unsigned long int __ino_t;
1265typedef unsigned long int __ino64_t;
1266typedef unsigned int __mode_t;
1267typedef unsigned long int __nlink_t;
1268typedef long int __off_t;
1269typedef long int __off64_t;
1270typedef int __pid_t;
1271typedef struct { int __val[2]; } __fsid_t;
1272typedef long int __clock_t;
1273typedef unsigned long int __rlim_t;
1274typedef unsigned long int __rlim64_t;
1275typedef unsigned int __id_t;
1276typedef long int __time_t;
1277typedef unsigned int __useconds_t;
1278typedef long int __suseconds_t;
1279
1280typedef int __daddr_t;
1281typedef long int __swblk_t;
1282typedef int __key_t;
1283
1284
1285typedef int __clockid_t;
1286
1287
1288typedef void * __timer_t;
1289
1290
1291typedef long int __blksize_t;
1292
1293
1294
1295
1296typedef long int __blkcnt_t;
1297typedef long int __blkcnt64_t;
1298
1299
1300typedef unsigned long int __fsblkcnt_t;
1301typedef unsigned long int __fsblkcnt64_t;
1302
1303
1304typedef unsigned long int __fsfilcnt_t;
1305typedef unsigned long int __fsfilcnt64_t;
1306
1307typedef long int __ssize_t;
1308
1309
1310
1311typedef __off64_t __loff_t;
1312typedef __quad_t *__qaddr_t;
1313typedef char *__caddr_t;
1314
1315
1316typedef long int __intptr_t;
1317
1318
1319typedef unsigned int __socklen_t;
1320# 9 "/usr/include/bits/types.h" 2 3 4
1321# 32 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1322
1323
1324
1325typedef __u_char u_char;
1326typedef __u_short u_short;
1327typedef __u_int u_int;
1328typedef __u_long u_long;
1329typedef __quad_t quad_t;
1330typedef __u_quad_t u_quad_t;
1331typedef __fsid_t fsid_t;
1332
1333
1334
1335
1336typedef __loff_t loff_t;
1337
1338
1339
1340typedef __ino_t ino_t;
1341
1342
1343
1344
1345
1346
1347typedef __ino64_t ino64_t;
1348
1349
1350
1351
1352typedef __dev_t dev_t;
1353
1354
1355
1356
1357typedef __gid_t gid_t;
1358
1359
1360
1361
1362typedef __mode_t mode_t;
1363
1364
1365
1366
1367typedef __nlink_t nlink_t;
1368
1369
1370
1371
1372typedef __uid_t uid_t;
1373
1374
1375
1376
1377
1378typedef __off_t off_t;
1379
1380
1381
1382
1383
1384
1385typedef __off64_t off64_t;
1386
1387
1388
1389
1390typedef __pid_t pid_t;
1391
1392
1393
1394
1395typedef __id_t id_t;
1396
1397
1398
1399
1400typedef __ssize_t ssize_t;
1401
1402
1403
1404
1405
1406typedef __daddr_t daddr_t;
1407typedef __caddr_t caddr_t;
1408
1409
1410
1411
1412
1413typedef __key_t key_t;
1414# 133 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1415# 1 "/usr/include/time.h" 1 3 4
1416
1417
1418
1419
1420
1421
1422
1423# 1 "/usr/include/gentoo-multilib/amd64/time.h" 1 3 4
1424# 57 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
1425# 1 "/usr/include/bits/types.h" 1 3 4
1426# 58 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
1427
1428
1429
1430typedef __clock_t clock_t;
1431
1432
1433
1434# 73 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
1435# 1 "/usr/include/bits/types.h" 1 3 4
1436# 74 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
1437
1438
1439
1440typedef __time_t time_t;
1441
1442
1443
1444# 90 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
1445# 1 "/usr/include/bits/types.h" 1 3 4
1446# 91 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
1447
1448
1449typedef __clockid_t clockid_t;
1450# 102 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
1451# 1 "/usr/include/bits/types.h" 1 3 4
1452# 103 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
1453
1454
1455typedef __timer_t timer_t;
1456# 9 "/usr/include/time.h" 2 3 4
1457# 134 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1458
1459
1460
1461typedef __useconds_t useconds_t;
1462
1463
1464
1465typedef __suseconds_t suseconds_t;
1466
1467
1468
1469
1470
1471# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
1472# 148 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1473
1474
1475
1476typedef unsigned long int ulong;
1477typedef unsigned short int ushort;
1478typedef unsigned int uint;
1479# 195 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1480typedef int int8_t __attribute__ ((__mode__ (__QI__)));
1481typedef int int16_t __attribute__ ((__mode__ (__HI__)));
1482typedef int int32_t __attribute__ ((__mode__ (__SI__)));
1483typedef int int64_t __attribute__ ((__mode__ (__DI__)));
1484
1485
1486typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
1487typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
1488typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
1489typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
1490
1491typedef int register_t __attribute__ ((__mode__ (__word__)));
1492# 217 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1493# 1 "/usr/include/endian.h" 1 3 4
1494# 218 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1495
1496
1497# 1 "/usr/include/sys/select.h" 1 3 4
1498
1499
1500
1501
1502
1503
1504
1505# 1 "/usr/include/gentoo-multilib/amd64/sys/select.h" 1 3 4
1506# 25 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1507# 1 "/usr/include/features.h" 1 3 4
1508# 26 "/usr/include/gentoo-multilib/amd64/sys/select.h" 2 3 4
1509
1510
1511# 1 "/usr/include/bits/types.h" 1 3 4
1512# 29 "/usr/include/gentoo-multilib/amd64/sys/select.h" 2 3 4
1513
1514
1515# 1 "/usr/include/bits/select.h" 1 3 4
1516
1517
1518
1519
1520
1521
1522
1523# 1 "/usr/include/gentoo-multilib/amd64/bits/select.h" 1 3 4
1524# 9 "/usr/include/bits/select.h" 2 3 4
1525# 32 "/usr/include/gentoo-multilib/amd64/sys/select.h" 2 3 4
1526
1527
1528# 1 "/usr/include/bits/sigset.h" 1 3 4
1529
1530
1531
1532
1533
1534
1535
1536# 1 "/usr/include/gentoo-multilib/amd64/bits/sigset.h" 1 3 4
1537# 24 "/usr/include/gentoo-multilib/amd64/bits/sigset.h" 3 4
1538typedef int __sig_atomic_t;
1539
1540
1541
1542
1543typedef struct
1544 {
1545 unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
1546 } __sigset_t;
1547# 9 "/usr/include/bits/sigset.h" 2 3 4
1548# 35 "/usr/include/gentoo-multilib/amd64/sys/select.h" 2 3 4
1549
1550
1551
1552typedef __sigset_t sigset_t;
1553
1554
1555
1556
1557
1558# 1 "/usr/include/time.h" 1 3 4
1559
1560
1561
1562
1563
1564
1565
1566# 1 "/usr/include/gentoo-multilib/amd64/time.h" 1 3 4
1567# 117 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
1568# 1 "/usr/include/bits/types.h" 1 3 4
1569# 118 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
1570
1571
1572
1573struct timespec
1574 {
1575 __time_t tv_sec;
1576 long int tv_nsec;
1577 };
1578# 9 "/usr/include/time.h" 2 3 4
1579# 45 "/usr/include/gentoo-multilib/amd64/sys/select.h" 2 3 4
1580
1581# 1 "/usr/include/bits/time.h" 1 3 4
1582
1583
1584
1585
1586
1587
1588
1589# 1 "/usr/include/gentoo-multilib/amd64/bits/time.h" 1 3 4
1590# 65 "/usr/include/gentoo-multilib/amd64/bits/time.h" 3 4
1591# 1 "/usr/include/bits/types.h" 1 3 4
1592# 66 "/usr/include/gentoo-multilib/amd64/bits/time.h" 2 3 4
1593
1594
1595
1596struct timeval
1597 {
1598 __time_t tv_sec;
1599 __suseconds_t tv_usec;
1600 };
1601# 9 "/usr/include/bits/time.h" 2 3 4
1602# 47 "/usr/include/gentoo-multilib/amd64/sys/select.h" 2 3 4
1603# 55 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1604typedef long int __fd_mask;
1605# 67 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1606typedef struct
1607 {
1608
1609
1610
1611 __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
1612
1613
1614
1615
1616
1617 } fd_set;
1618
1619
1620
1621
1622
1623
1624typedef __fd_mask fd_mask;
1625# 99 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1626extern "C" {
1627# 109 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1628extern int select (int __nfds, fd_set *__restrict __readfds,
1629 fd_set *__restrict __writefds,
1630 fd_set *__restrict __exceptfds,
1631 struct timeval *__restrict __timeout);
1632# 121 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1633extern int pselect (int __nfds, fd_set *__restrict __readfds,
1634 fd_set *__restrict __writefds,
1635 fd_set *__restrict __exceptfds,
1636 const struct timespec *__restrict __timeout,
1637 const __sigset_t *__restrict __sigmask);
1638
1639
1640}
1641# 9 "/usr/include/sys/select.h" 2 3 4
1642# 221 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1643
1644
1645# 1 "/usr/include/sys/sysmacros.h" 1 3 4
1646
1647
1648
1649
1650
1651
1652
1653# 1 "/usr/include/gentoo-multilib/amd64/sys/sysmacros.h" 1 3 4
1654# 24 "/usr/include/gentoo-multilib/amd64/sys/sysmacros.h" 3 4
1655# 1 "/usr/include/features.h" 1 3 4
1656# 25 "/usr/include/gentoo-multilib/amd64/sys/sysmacros.h" 2 3 4
1657
1658
1659
1660
1661
1662__extension__
1663extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
1664 throw ();
1665__extension__
1666extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
1667 throw ();
1668__extension__
1669extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
1670 unsigned int __minor)
1671 throw ();
1672
1673
1674__extension__ extern __inline unsigned int
1675gnu_dev_major (unsigned long long int __dev) throw ()
1676{
1677 return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
1678}
1679
1680__extension__ extern __inline unsigned int
1681gnu_dev_minor (unsigned long long int __dev) throw ()
1682{
1683 return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
1684}
1685
1686__extension__ extern __inline unsigned long long int
1687gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw ()
1688{
1689 return ((__minor & 0xff) | ((__major & 0xfff) << 8)
1690 | (((unsigned long long int) (__minor & ~0xff)) << 12)
1691 | (((unsigned long long int) (__major & ~0xfff)) << 32));
1692}
1693# 9 "/usr/include/sys/sysmacros.h" 2 3 4
1694# 224 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1695
1696
1697
1698
1699typedef __blksize_t blksize_t;
1700
1701
1702
1703
1704
1705
1706typedef __blkcnt_t blkcnt_t;
1707
1708
1709
1710typedef __fsblkcnt_t fsblkcnt_t;
1711
1712
1713
1714typedef __fsfilcnt_t fsfilcnt_t;
1715# 262 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1716typedef __blkcnt64_t blkcnt64_t;
1717typedef __fsblkcnt64_t fsblkcnt64_t;
1718typedef __fsfilcnt64_t fsfilcnt64_t;
1719
1720
1721
1722
1723
1724# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
1725
1726
1727
1728
1729
1730
1731
1732# 1 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 1 3 4
1733# 23 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
1734# 1 "/usr/include/bits/wordsize.h" 1 3 4
1735
1736
1737
1738
1739
1740
1741
1742# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
1743# 9 "/usr/include/bits/wordsize.h" 2 3 4
1744# 24 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 2 3 4
1745# 50 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
1746typedef unsigned long int pthread_t;
1747
1748
1749typedef union
1750{
1751 char __size[56];
1752 long int __align;
1753} pthread_attr_t;
1754
1755
1756
1757typedef struct __pthread_internal_list
1758{
1759 struct __pthread_internal_list *__prev;
1760 struct __pthread_internal_list *__next;
1761} __pthread_list_t;
1762# 76 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
1763typedef union
1764{
1765 struct __pthread_mutex_s
1766 {
1767 int __lock;
1768 unsigned int __count;
1769 int __owner;
1770
1771 unsigned int __nusers;
1772
1773
1774
1775 int __kind;
1776
1777 int __spins;
1778 __pthread_list_t __list;
1779# 101 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
1780 } __data;
1781 char __size[40];
1782 long int __align;
1783} pthread_mutex_t;
1784
1785typedef union
1786{
1787 char __size[4];
1788 int __align;
1789} pthread_mutexattr_t;
1790
1791
1792
1793
1794typedef union
1795{
1796 struct
1797 {
1798 int __lock;
1799 unsigned int __futex;
1800 __extension__ unsigned long long int __total_seq;
1801 __extension__ unsigned long long int __wakeup_seq;
1802 __extension__ unsigned long long int __woken_seq;
1803 void *__mutex;
1804 unsigned int __nwaiters;
1805 unsigned int __broadcast_seq;
1806 } __data;
1807 char __size[48];
1808 __extension__ long long int __align;
1809} pthread_cond_t;
1810
1811typedef union
1812{
1813 char __size[4];
1814 int __align;
1815} pthread_condattr_t;
1816
1817
1818
1819typedef unsigned int pthread_key_t;
1820
1821
1822
1823typedef int pthread_once_t;
1824
1825
1826
1827
1828
1829typedef union
1830{
1831
1832 struct
1833 {
1834 int __lock;
1835 unsigned int __nr_readers;
1836 unsigned int __readers_wakeup;
1837 unsigned int __writer_wakeup;
1838 unsigned int __nr_readers_queued;
1839 unsigned int __nr_writers_queued;
1840 int __writer;
1841 int __pad1;
1842 unsigned long int __pad2;
1843 unsigned long int __pad3;
1844
1845
1846 unsigned int __flags;
1847 } __data;
1848# 184 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
1849 char __size[56];
1850 long int __align;
1851} pthread_rwlock_t;
1852
1853typedef union
1854{
1855 char __size[8];
1856 long int __align;
1857} pthread_rwlockattr_t;
1858
1859
1860
1861
1862
1863typedef volatile int pthread_spinlock_t;
1864
1865
1866
1867
1868typedef union
1869{
1870 char __size[32];
1871 long int __align;
1872} pthread_barrier_t;
1873
1874typedef union
1875{
1876 char __size[4];
1877 int __align;
1878} pthread_barrierattr_t;
1879# 9 "/usr/include/bits/pthreadtypes.h" 2 3 4
1880# 271 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
1881
1882
1883}
1884# 9 "/usr/include/sys/types.h" 2 3 4
1885# 439 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
1886
1887
1888
1889
1890
1891
1892extern long int random (void) throw ();
1893
1894
1895extern void srandom (unsigned int __seed) throw ();
1896
1897
1898
1899
1900
1901extern char *initstate (unsigned int __seed, char *__statebuf,
1902 size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
1903
1904
1905
1906extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
1907
1908
1909
1910
1911
1912
1913
1914struct random_data
1915 {
1916 int32_t *fptr;
1917 int32_t *rptr;
1918 int32_t *state;
1919 int rand_type;
1920 int rand_deg;
1921 int rand_sep;
1922 int32_t *end_ptr;
1923 };
1924
1925extern int random_r (struct random_data *__restrict __buf,
1926 int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
1927
1928extern int srandom_r (unsigned int __seed, struct random_data *__buf)
1929 throw () __attribute__ ((__nonnull__ (2)));
1930
1931extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
1932 size_t __statelen,
1933 struct random_data *__restrict __buf)
1934 throw () __attribute__ ((__nonnull__ (2, 4)));
1935
1936extern int setstate_r (char *__restrict __statebuf,
1937 struct random_data *__restrict __buf)
1938 throw () __attribute__ ((__nonnull__ (1, 2)));
1939
1940
1941
1942
1943
1944
1945extern int rand (void) throw ();
1946
1947extern void srand (unsigned int __seed) throw ();
1948
1949
1950
1951
1952extern int rand_r (unsigned int *__seed) throw ();
1953
1954
1955
1956
1957
1958
1959
1960extern double drand48 (void) throw ();
1961extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
1962
1963
1964extern long int lrand48 (void) throw ();
1965extern long int nrand48 (unsigned short int __xsubi[3])
1966 throw () __attribute__ ((__nonnull__ (1)));
1967
1968
1969extern long int mrand48 (void) throw ();
1970extern long int jrand48 (unsigned short int __xsubi[3])
1971 throw () __attribute__ ((__nonnull__ (1)));
1972
1973
1974extern void srand48 (long int __seedval) throw ();
1975extern unsigned short int *seed48 (unsigned short int __seed16v[3])
1976 throw () __attribute__ ((__nonnull__ (1)));
1977extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
1978
1979
1980
1981
1982
1983struct drand48_data
1984 {
1985 unsigned short int __x[3];
1986 unsigned short int __old_x[3];
1987 unsigned short int __c;
1988 unsigned short int __init;
1989 unsigned long long int __a;
1990 };
1991
1992
1993extern int drand48_r (struct drand48_data *__restrict __buffer,
1994 double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
1995extern int erand48_r (unsigned short int __xsubi[3],
1996 struct drand48_data *__restrict __buffer,
1997 double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
1998
1999
2000extern int lrand48_r (struct drand48_data *__restrict __buffer,
2001 long int *__restrict __result)
2002 throw () __attribute__ ((__nonnull__ (1, 2)));
2003extern int nrand48_r (unsigned short int __xsubi[3],
2004 struct drand48_data *__restrict __buffer,
2005 long int *__restrict __result)
2006 throw () __attribute__ ((__nonnull__ (1, 2)));
2007
2008
2009extern int mrand48_r (struct drand48_data *__restrict __buffer,
2010 long int *__restrict __result)
2011 throw () __attribute__ ((__nonnull__ (1, 2)));
2012extern int jrand48_r (unsigned short int __xsubi[3],
2013 struct drand48_data *__restrict __buffer,
2014 long int *__restrict __result)
2015 throw () __attribute__ ((__nonnull__ (1, 2)));
2016
2017
2018extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
2019 throw () __attribute__ ((__nonnull__ (2)));
2020
2021extern int seed48_r (unsigned short int __seed16v[3],
2022 struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
2023
2024extern int lcong48_r (unsigned short int __param[7],
2025 struct drand48_data *__buffer)
2026 throw () __attribute__ ((__nonnull__ (1, 2)));
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
2037
2038extern void *calloc (size_t __nmemb, size_t __size)
2039 throw () __attribute__ ((__malloc__)) ;
2040
2041
2042
2043
2044
2045
2046
2047extern void *realloc (void *__ptr, size_t __size)
2048 throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
2049
2050extern void free (void *__ptr) throw ();
2051
2052
2053
2054
2055extern void cfree (void *__ptr) throw ();
2056
2057
2058
2059# 1 "/usr/include/alloca.h" 1 3 4
2060
2061
2062
2063
2064
2065
2066
2067# 1 "/usr/include/gentoo-multilib/amd64/alloca.h" 1 3 4
2068# 22 "/usr/include/gentoo-multilib/amd64/alloca.h" 3 4
2069# 1 "/usr/include/features.h" 1 3 4
2070# 23 "/usr/include/gentoo-multilib/amd64/alloca.h" 2 3 4
2071
2072
2073# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
2074# 26 "/usr/include/gentoo-multilib/amd64/alloca.h" 2 3 4
2075
2076extern "C" {
2077
2078
2079
2080
2081
2082extern void *alloca (size_t __size) throw ();
2083
2084
2085
2086
2087
2088}
2089# 9 "/usr/include/alloca.h" 2 3 4
2090# 613 "/usr/include/gentoo-multilib/amd64/stdlib.h" 2 3 4
2091
2092
2093
2094
2095extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
2096
2097
2098
2099
2100extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
2101 throw () __attribute__ ((__nonnull__ (1))) ;
2102
2103
2104
2105
2106extern void abort (void) throw () __attribute__ ((__noreturn__));
2107
2108
2109
2110extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
2111
2112
2113
2114
2115
2116extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
2117 throw () __attribute__ ((__nonnull__ (1)));
2118
2119
2120
2121
2122
2123
2124extern void exit (int __status) throw () __attribute__ ((__noreturn__));
2125
2126
2127
2128
2129
2130
2131extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
2132
2133
2134
2135
2136
2137
2138extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) ;
2139
2140
2141
2142
2143extern char *__secure_getenv (__const char *__name)
2144 throw () __attribute__ ((__nonnull__ (1))) ;
2145
2146
2147
2148
2149
2150extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
2151
2152
2153
2154
2155
2156extern int setenv (__const char *__name, __const char *__value, int __replace)
2157 throw () __attribute__ ((__nonnull__ (2)));
2158
2159
2160extern int unsetenv (__const char *__name) throw ();
2161
2162
2163
2164
2165
2166
2167extern int clearenv (void) throw ();
2168# 698 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2169extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
2170# 709 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2171extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
2172# 719 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2173extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
2174# 729 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2175extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
2176
2177
2178
2179
2180
2181
2182
2183
2184extern int system (__const char *__command) ;
2185
2186
2187
2188
2189
2190
2191extern char *canonicalize_file_name (__const char *__name)
2192 throw () __attribute__ ((__nonnull__ (1))) ;
2193# 755 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2194extern char *realpath (__const char *__restrict __name,
2195 char *__restrict __resolved) throw () ;
2196
2197
2198
2199
2200
2201
2202typedef int (*__compar_fn_t) (__const void *, __const void *);
2203
2204
2205typedef __compar_fn_t comparison_fn_t;
2206
2207
2208
2209
2210
2211
2212extern void *bsearch (__const void *__key, __const void *__base,
2213 size_t __nmemb, size_t __size, __compar_fn_t __compar)
2214 __attribute__ ((__nonnull__ (1, 2, 5))) ;
2215
2216
2217
2218extern void qsort (void *__base, size_t __nmemb, size_t __size,
2219 __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
2220
2221
2222
2223extern int abs (int __x) throw () __attribute__ ((__const__)) ;
2224extern long int labs (long int __x) throw () __attribute__ ((__const__)) ;
2225
2226
2227
2228__extension__ extern long long int llabs (long long int __x)
2229 throw () __attribute__ ((__const__)) ;
2230
2231
2232
2233
2234
2235
2236
2237extern div_t div (int __numer, int __denom)
2238 throw () __attribute__ ((__const__)) ;
2239extern ldiv_t ldiv (long int __numer, long int __denom)
2240 throw () __attribute__ ((__const__)) ;
2241
2242
2243
2244
2245__extension__ extern lldiv_t lldiv (long long int __numer,
2246 long long int __denom)
2247 throw () __attribute__ ((__const__)) ;
2248
2249# 820 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2250extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
2251 int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ;
2252
2253
2254
2255
2256extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
2257 int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ;
2258
2259
2260
2261
2262extern char *gcvt (double __value, int __ndigit, char *__buf)
2263 throw () __attribute__ ((__nonnull__ (3))) ;
2264
2265
2266
2267
2268extern char *qecvt (long double __value, int __ndigit,
2269 int *__restrict __decpt, int *__restrict __sign)
2270 throw () __attribute__ ((__nonnull__ (3, 4))) ;
2271extern char *qfcvt (long double __value, int __ndigit,
2272 int *__restrict __decpt, int *__restrict __sign)
2273 throw () __attribute__ ((__nonnull__ (3, 4))) ;
2274extern char *qgcvt (long double __value, int __ndigit, char *__buf)
2275 throw () __attribute__ ((__nonnull__ (3))) ;
2276
2277
2278
2279
2280extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
2281 int *__restrict __sign, char *__restrict __buf,
2282 size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
2283extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
2284 int *__restrict __sign, char *__restrict __buf,
2285 size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
2286
2287extern int qecvt_r (long double __value, int __ndigit,
2288 int *__restrict __decpt, int *__restrict __sign,
2289 char *__restrict __buf, size_t __len)
2290 throw () __attribute__ ((__nonnull__ (3, 4, 5)));
2291extern int qfcvt_r (long double __value, int __ndigit,
2292 int *__restrict __decpt, int *__restrict __sign,
2293 char *__restrict __buf, size_t __len)
2294 throw () __attribute__ ((__nonnull__ (3, 4, 5)));
2295
2296
2297
2298
2299
2300
2301
2302extern int mblen (__const char *__s, size_t __n) throw () ;
2303
2304
2305extern int mbtowc (wchar_t *__restrict __pwc,
2306 __const char *__restrict __s, size_t __n) throw () ;
2307
2308
2309extern int wctomb (char *__s, wchar_t __wchar) throw () ;
2310
2311
2312
2313extern size_t mbstowcs (wchar_t *__restrict __pwcs,
2314 __const char *__restrict __s, size_t __n) throw ();
2315
2316extern size_t wcstombs (char *__restrict __s,
2317 __const wchar_t *__restrict __pwcs, size_t __n)
2318 throw ();
2319
2320
2321
2322
2323
2324
2325
2326
2327extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) ;
2328# 908 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2329extern int getsubopt (char **__restrict __optionp,
2330 char *__const *__restrict __tokens,
2331 char **__restrict __valuep)
2332 throw () __attribute__ ((__nonnull__ (1, 2, 3))) ;
2333
2334
2335
2336
2337
2338extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1)));
2339
2340
2341
2342
2343
2344
2345
2346extern int posix_openpt (int __oflag) ;
2347
2348
2349
2350
2351
2352
2353
2354extern int grantpt (int __fd) throw ();
2355
2356
2357
2358extern int unlockpt (int __fd) throw ();
2359
2360
2361
2362
2363extern char *ptsname (int __fd) throw () ;
2364
2365
2366
2367
2368
2369
2370extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
2371 throw () __attribute__ ((__nonnull__ (2)));
2372
2373
2374extern int getpt (void);
2375
2376
2377
2378
2379
2380
2381extern int getloadavg (double __loadavg[], int __nelem)
2382 throw () __attribute__ ((__nonnull__ (1)));
2383# 976 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2384}
2385# 9 "/usr/include/stdlib.h" 2 3 4
2386# 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 2 3
2387# 104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 3
2388namespace std __attribute__ ((__visibility__ ("default"))) {
2389
2390 using ::div_t;
2391 using ::ldiv_t;
2392
2393 using ::abort;
2394 using ::abs;
2395 using ::atexit;
2396 using ::atof;
2397 using ::atoi;
2398 using ::atol;
2399 using ::bsearch;
2400 using ::calloc;
2401 using ::div;
2402 using ::exit;
2403 using ::free;
2404 using ::getenv;
2405 using ::labs;
2406 using ::ldiv;
2407 using ::malloc;
2408
2409 using ::mblen;
2410 using ::mbstowcs;
2411 using ::mbtowc;
2412
2413 using ::qsort;
2414 using ::rand;
2415 using ::realloc;
2416 using ::srand;
2417 using ::strtod;
2418 using ::strtol;
2419 using ::strtoul;
2420 using ::system;
2421
2422 using ::wcstombs;
2423 using ::wctomb;
2424
2425
2426 inline long
2427 abs(long __i) { return labs(__i); }
2428
2429 inline ldiv_t
2430 div(long __i, long __j) { return ldiv(__i, __j); }
2431
2432}
2433# 161 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 3
2434namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
2435
2436
2437 using ::lldiv_t;
2438
2439
2440
2441
2442
2443 using ::_Exit;
2444
2445
2446 inline long long
2447 abs(long long __x) { return __x >= 0 ? __x : -__x; }
2448
2449
2450 using ::llabs;
2451
2452 inline lldiv_t
2453 div(long long __n, long long __d)
2454 { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
2455
2456 using ::lldiv;
2457# 194 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdlib" 3
2458 using ::atoll;
2459 using ::strtoll;
2460 using ::strtoull;
2461
2462 using ::strtof;
2463 using ::strtold;
2464
2465}
2466
2467namespace std __attribute__ ((__visibility__ ("default"))) {
2468
2469
2470 using ::__gnu_cxx::lldiv_t;
2471
2472 using ::__gnu_cxx::_Exit;
2473 using ::__gnu_cxx::abs;
2474
2475 using ::__gnu_cxx::llabs;
2476 using ::__gnu_cxx::div;
2477 using ::__gnu_cxx::lldiv;
2478
2479 using ::__gnu_cxx::atoll;
2480 using ::__gnu_cxx::strtof;
2481 using ::__gnu_cxx::strtoll;
2482 using ::__gnu_cxx::strtoull;
2483 using ::__gnu_cxx::strtold;
2484
2485}
2486# 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
2487
2488# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 1 3
2489# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 3
2490
2491# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 3
2492
2493
2494# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 1 3
2495# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 3
2496
2497# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 3
2498
2499
2500# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 1 3
2501# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
2502
2503# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
2504
2505
2506
2507
2508# 1 "/usr/include/stdio.h" 1 3 4
2509
2510
2511
2512
2513
2514
2515
2516# 1 "/usr/include/gentoo-multilib/amd64/stdio.h" 1 3 4
2517# 28 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
2518# 1 "/usr/include/features.h" 1 3 4
2519# 29 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
2520
2521extern "C" {
2522
2523
2524
2525# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
2526# 35 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
2527
2528# 1 "/usr/include/bits/types.h" 1 3 4
2529# 37 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
2530# 45 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
2531struct _IO_FILE;
2532
2533
2534
2535typedef struct _IO_FILE FILE;
2536
2537
2538
2539
2540
2541# 65 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
2542typedef struct _IO_FILE __FILE;
2543# 75 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
2544# 1 "/usr/include/libio.h" 1 3 4
2545
2546
2547
2548
2549
2550
2551
2552# 1 "/usr/include/gentoo-multilib/amd64/libio.h" 1 3 4
2553# 32 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2554# 1 "/usr/include/_G_config.h" 1 3 4
2555
2556
2557
2558
2559
2560
2561
2562# 1 "/usr/include/gentoo-multilib/amd64/_G_config.h" 1 3 4
2563# 9 "/usr/include/gentoo-multilib/amd64/_G_config.h" 3 4
2564# 1 "/usr/include/bits/types.h" 1 3 4
2565# 10 "/usr/include/gentoo-multilib/amd64/_G_config.h" 2 3 4
2566
2567
2568
2569
2570# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
2571# 355 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 3 4
2572typedef unsigned int wint_t;
2573# 15 "/usr/include/gentoo-multilib/amd64/_G_config.h" 2 3 4
2574# 24 "/usr/include/gentoo-multilib/amd64/_G_config.h" 3 4
2575# 1 "/usr/include/wchar.h" 1 3 4
2576
2577
2578
2579
2580
2581
2582
2583# 1 "/usr/include/gentoo-multilib/amd64/wchar.h" 1 3 4
2584# 48 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
2585# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
2586# 49 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
2587
2588# 1 "/usr/include/bits/wchar.h" 1 3 4
2589
2590
2591
2592
2593
2594
2595
2596# 1 "/usr/include/gentoo-multilib/amd64/bits/wchar.h" 1 3 4
2597# 9 "/usr/include/bits/wchar.h" 2 3 4
2598# 51 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
2599# 76 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
2600typedef struct
2601{
2602 int __count;
2603 union
2604 {
2605 wint_t __wch;
2606 char __wchb[4];
2607 } __value;
2608} __mbstate_t;
2609# 9 "/usr/include/wchar.h" 2 3 4
2610# 25 "/usr/include/gentoo-multilib/amd64/_G_config.h" 2 3 4
2611
2612typedef struct
2613{
2614 __off_t __pos;
2615 __mbstate_t __state;
2616} _G_fpos_t;
2617typedef struct
2618{
2619 __off64_t __pos;
2620 __mbstate_t __state;
2621} _G_fpos64_t;
2622# 44 "/usr/include/gentoo-multilib/amd64/_G_config.h" 3 4
2623# 1 "/usr/include/gconv.h" 1 3 4
2624
2625
2626
2627
2628
2629
2630
2631# 1 "/usr/include/gentoo-multilib/amd64/gconv.h" 1 3 4
2632# 26 "/usr/include/gentoo-multilib/amd64/gconv.h" 3 4
2633# 1 "/usr/include/features.h" 1 3 4
2634# 27 "/usr/include/gentoo-multilib/amd64/gconv.h" 2 3 4
2635
2636# 1 "/usr/include/wchar.h" 1 3 4
2637
2638
2639
2640
2641
2642
2643
2644# 1 "/usr/include/gentoo-multilib/amd64/wchar.h" 1 3 4
2645# 48 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
2646# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
2647# 49 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
2648
2649# 1 "/usr/include/bits/wchar.h" 1 3 4
2650# 51 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
2651# 9 "/usr/include/wchar.h" 2 3 4
2652# 29 "/usr/include/gentoo-multilib/amd64/gconv.h" 2 3 4
2653
2654
2655# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
2656# 32 "/usr/include/gentoo-multilib/amd64/gconv.h" 2 3 4
2657
2658
2659
2660
2661
2662enum
2663{
2664 __GCONV_OK = 0,
2665 __GCONV_NOCONV,
2666 __GCONV_NODB,
2667 __GCONV_NOMEM,
2668
2669 __GCONV_EMPTY_INPUT,
2670 __GCONV_FULL_OUTPUT,
2671 __GCONV_ILLEGAL_INPUT,
2672 __GCONV_INCOMPLETE_INPUT,
2673
2674 __GCONV_ILLEGAL_DESCRIPTOR,
2675 __GCONV_INTERNAL_ERROR
2676};
2677
2678
2679
2680enum
2681{
2682 __GCONV_IS_LAST = 0x0001,
2683 __GCONV_IGNORE_ERRORS = 0x0002
2684};
2685
2686
2687
2688struct __gconv_step;
2689struct __gconv_step_data;
2690struct __gconv_loaded_object;
2691struct __gconv_trans_data;
2692
2693
2694
2695typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
2696 __const unsigned char **, __const unsigned char *,
2697 unsigned char **, size_t *, int, int);
2698
2699
2700typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
2701
2702
2703typedef int (*__gconv_init_fct) (struct __gconv_step *);
2704typedef void (*__gconv_end_fct) (struct __gconv_step *);
2705
2706
2707
2708typedef int (*__gconv_trans_fct) (struct __gconv_step *,
2709 struct __gconv_step_data *, void *,
2710 __const unsigned char *,
2711 __const unsigned char **,
2712 __const unsigned char *, unsigned char **,
2713 size_t *);
2714
2715
2716typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
2717 __const unsigned char *,
2718 unsigned char *, unsigned char *);
2719
2720
2721typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
2722 size_t *);
2723
2724
2725typedef int (*__gconv_trans_init_fct) (void **, const char *);
2726typedef void (*__gconv_trans_end_fct) (void *);
2727
2728struct __gconv_trans_data
2729{
2730
2731 __gconv_trans_fct __trans_fct;
2732 __gconv_trans_context_fct __trans_context_fct;
2733 __gconv_trans_end_fct __trans_end_fct;
2734 void *__data;
2735 struct __gconv_trans_data *__next;
2736};
2737
2738
2739
2740struct __gconv_step
2741{
2742 struct __gconv_loaded_object *__shlib_handle;
2743 __const char *__modname;
2744
2745 int __counter;
2746
2747 char *__from_name;
2748 char *__to_name;
2749
2750 __gconv_fct __fct;
2751 __gconv_btowc_fct __btowc_fct;
2752 __gconv_init_fct __init_fct;
2753 __gconv_end_fct __end_fct;
2754
2755
2756
2757 int __min_needed_from;
2758 int __max_needed_from;
2759 int __min_needed_to;
2760 int __max_needed_to;
2761
2762
2763 int __stateful;
2764
2765 void *__data;
2766};
2767
2768
2769
2770struct __gconv_step_data
2771{
2772 unsigned char *__outbuf;
2773 unsigned char *__outbufend;
2774
2775
2776
2777 int __flags;
2778
2779
2780
2781 int __invocation_counter;
2782
2783
2784
2785 int __internal_use;
2786
2787 __mbstate_t *__statep;
2788 __mbstate_t __state;
2789
2790
2791
2792 struct __gconv_trans_data *__trans;
2793};
2794
2795
2796
2797typedef struct __gconv_info
2798{
2799 size_t __nsteps;
2800 struct __gconv_step *__steps;
2801 __extension__ struct __gconv_step_data __data [];
2802} *__gconv_t;
2803# 9 "/usr/include/gconv.h" 2 3 4
2804# 45 "/usr/include/gentoo-multilib/amd64/_G_config.h" 2 3 4
2805typedef union
2806{
2807 struct __gconv_info __cd;
2808 struct
2809 {
2810 struct __gconv_info __cd;
2811 struct __gconv_step_data __data;
2812 } __combined;
2813} _G_iconv_t;
2814
2815typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
2816typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
2817typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
2818typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
2819# 9 "/usr/include/_G_config.h" 2 3 4
2820# 33 "/usr/include/gentoo-multilib/amd64/libio.h" 2 3 4
2821# 53 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2822# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stdarg.h" 1 3 4
2823# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stdarg.h" 3 4
2824typedef __builtin_va_list __gnuc_va_list;
2825# 54 "/usr/include/gentoo-multilib/amd64/libio.h" 2 3 4
2826# 167 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2827struct _IO_jump_t; struct _IO_FILE;
2828# 177 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2829typedef void _IO_lock_t;
2830
2831
2832
2833
2834
2835struct _IO_marker {
2836 struct _IO_marker *_next;
2837 struct _IO_FILE *_sbuf;
2838
2839
2840
2841 int _pos;
2842# 200 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2843};
2844
2845
2846enum __codecvt_result
2847{
2848 __codecvt_ok,
2849 __codecvt_partial,
2850 __codecvt_error,
2851 __codecvt_noconv
2852};
2853# 268 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2854struct _IO_FILE {
2855 int _flags;
2856
2857
2858
2859
2860 char* _IO_read_ptr;
2861 char* _IO_read_end;
2862 char* _IO_read_base;
2863 char* _IO_write_base;
2864 char* _IO_write_ptr;
2865 char* _IO_write_end;
2866 char* _IO_buf_base;
2867 char* _IO_buf_end;
2868
2869 char *_IO_save_base;
2870 char *_IO_backup_base;
2871 char *_IO_save_end;
2872
2873 struct _IO_marker *_markers;
2874
2875 struct _IO_FILE *_chain;
2876
2877 int _fileno;
2878
2879
2880
2881 int _flags2;
2882
2883 __off_t _old_offset;
2884
2885
2886
2887 unsigned short _cur_column;
2888 signed char _vtable_offset;
2889 char _shortbuf[1];
2890
2891
2892
2893 _IO_lock_t *_lock;
2894# 316 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2895 __off64_t _offset;
2896# 325 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2897 void *__pad1;
2898 void *__pad2;
2899 void *__pad3;
2900 void *__pad4;
2901 size_t __pad5;
2902
2903 int _mode;
2904
2905 char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
2906
2907};
2908
2909
2910
2911
2912
2913struct _IO_FILE_plus;
2914
2915extern struct _IO_FILE_plus _IO_2_1_stdin_;
2916extern struct _IO_FILE_plus _IO_2_1_stdout_;
2917extern struct _IO_FILE_plus _IO_2_1_stderr_;
2918# 361 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2919typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
2920
2921
2922
2923
2924
2925
2926
2927typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
2928 size_t __n);
2929
2930
2931
2932
2933
2934
2935
2936typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
2937
2938
2939typedef int __io_close_fn (void *__cookie);
2940
2941
2942
2943
2944typedef __io_read_fn cookie_read_function_t;
2945typedef __io_write_fn cookie_write_function_t;
2946typedef __io_seek_fn cookie_seek_function_t;
2947typedef __io_close_fn cookie_close_function_t;
2948
2949
2950typedef struct
2951{
2952 __io_read_fn *read;
2953 __io_write_fn *write;
2954 __io_seek_fn *seek;
2955 __io_close_fn *close;
2956} _IO_cookie_io_functions_t;
2957typedef _IO_cookie_io_functions_t cookie_io_functions_t;
2958
2959struct _IO_cookie_file;
2960
2961
2962extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
2963 void *__cookie, _IO_cookie_io_functions_t __fns);
2964
2965
2966
2967
2968extern "C" {
2969
2970
2971extern int __underflow (_IO_FILE *);
2972extern int __uflow (_IO_FILE *);
2973extern int __overflow (_IO_FILE *, int);
2974extern wint_t __wunderflow (_IO_FILE *);
2975extern wint_t __wuflow (_IO_FILE *);
2976extern wint_t __woverflow (_IO_FILE *, wint_t);
2977# 451 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2978extern int _IO_getc (_IO_FILE *__fp);
2979extern int _IO_putc (int __c, _IO_FILE *__fp);
2980extern int _IO_feof (_IO_FILE *__fp) throw ();
2981extern int _IO_ferror (_IO_FILE *__fp) throw ();
2982
2983extern int _IO_peekc_locked (_IO_FILE *__fp);
2984
2985
2986
2987
2988
2989extern void _IO_flockfile (_IO_FILE *) throw ();
2990extern void _IO_funlockfile (_IO_FILE *) throw ();
2991extern int _IO_ftrylockfile (_IO_FILE *) throw ();
2992# 481 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2993extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
2994 __gnuc_va_list, int *__restrict);
2995extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
2996 __gnuc_va_list);
2997extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
2998extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
2999
3000extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
3001extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
3002
3003extern void _IO_free_backup_area (_IO_FILE *) throw ();
3004# 543 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
3005}
3006# 9 "/usr/include/libio.h" 2 3 4
3007# 76 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
3008
3009
3010
3011
3012typedef __gnuc_va_list va_list;
3013# 89 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3014
3015
3016typedef _G_fpos_t fpos_t;
3017
3018
3019
3020
3021
3022typedef _G_fpos64_t fpos64_t;
3023# 141 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3024# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
3025
3026
3027
3028
3029
3030
3031
3032# 1 "/usr/include/gentoo-multilib/amd64/bits/stdio_lim.h" 1 3 4
3033# 9 "/usr/include/bits/stdio_lim.h" 2 3 4
3034# 142 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
3035
3036
3037
3038extern struct _IO_FILE *stdin;
3039extern struct _IO_FILE *stdout;
3040extern struct _IO_FILE *stderr;
3041
3042
3043
3044
3045
3046
3047
3048extern int remove (__const char *__filename) throw ();
3049
3050extern int rename (__const char *__old, __const char *__new) throw ();
3051
3052
3053
3054
3055extern int renameat (int __oldfd, __const char *__old, int __newfd,
3056 __const char *__new) throw ();
3057
3058
3059
3060
3061
3062
3063
3064
3065extern FILE *tmpfile (void) ;
3066# 182 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3067extern FILE *tmpfile64 (void) ;
3068
3069
3070
3071extern char *tmpnam (char *__s) throw () ;
3072
3073
3074
3075
3076
3077extern char *tmpnam_r (char *__s) throw () ;
3078# 204 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3079extern char *tempnam (__const char *__dir, __const char *__pfx)
3080 throw () __attribute__ ((__malloc__)) ;
3081
3082
3083
3084
3085
3086
3087
3088
3089extern int fclose (FILE *__stream);
3090
3091
3092
3093
3094extern int fflush (FILE *__stream);
3095
3096# 229 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3097extern int fflush_unlocked (FILE *__stream);
3098# 239 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3099extern int fcloseall (void);
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109extern FILE *fopen (__const char *__restrict __filename,
3110 __const char *__restrict __modes) ;
3111
3112
3113
3114
3115extern FILE *freopen (__const char *__restrict __filename,
3116 __const char *__restrict __modes,
3117 FILE *__restrict __stream) ;
3118# 272 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3119
3120
3121extern FILE *fopen64 (__const char *__restrict __filename,
3122 __const char *__restrict __modes) ;
3123extern FILE *freopen64 (__const char *__restrict __filename,
3124 __const char *__restrict __modes,
3125 FILE *__restrict __stream) ;
3126
3127
3128
3129
3130extern FILE *fdopen (int __fd, __const char *__modes) throw () ;
3131
3132
3133
3134
3135
3136extern FILE *fopencookie (void *__restrict __magic_cookie,
3137 __const char *__restrict __modes,
3138 _IO_cookie_io_functions_t __io_funcs) throw () ;
3139
3140
3141extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
3142 throw () ;
3143
3144
3145
3146
3147extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ;
3148
3149
3150
3151
3152
3153
3154extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
3155
3156
3157
3158extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
3159 int __modes, size_t __n) throw ();
3160
3161
3162
3163
3164
3165extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
3166 size_t __size) throw ();
3167
3168
3169extern void setlinebuf (FILE *__stream) throw ();
3170
3171
3172
3173
3174
3175
3176
3177
3178extern int fprintf (FILE *__restrict __stream,
3179 __const char *__restrict __format, ...);
3180
3181
3182
3183
3184extern int printf (__const char *__restrict __format, ...);
3185
3186extern int sprintf (char *__restrict __s,
3187 __const char *__restrict __format, ...) throw ();
3188
3189
3190
3191
3192
3193extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
3194 __gnuc_va_list __arg);
3195
3196
3197
3198
3199extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
3200
3201extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
3202 __gnuc_va_list __arg) throw ();
3203
3204
3205
3206
3207
3208extern int snprintf (char *__restrict __s, size_t __maxlen,
3209 __const char *__restrict __format, ...)
3210 throw () __attribute__ ((__format__ (__printf__, 3, 4)));
3211
3212extern int vsnprintf (char *__restrict __s, size_t __maxlen,
3213 __const char *__restrict __format, __gnuc_va_list __arg)
3214 throw () __attribute__ ((__format__ (__printf__, 3, 0)));
3215
3216
3217
3218
3219
3220
3221extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
3222 __gnuc_va_list __arg)
3223 throw () __attribute__ ((__format__ (__printf__, 2, 0))) ;
3224extern int __asprintf (char **__restrict __ptr,
3225 __const char *__restrict __fmt, ...)
3226 throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
3227extern int asprintf (char **__restrict __ptr,
3228 __const char *__restrict __fmt, ...)
3229 throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
3230
3231
3232
3233
3234
3235
3236
3237extern int vdprintf (int __fd, __const char *__restrict __fmt,
3238 __gnuc_va_list __arg)
3239 __attribute__ ((__format__ (__printf__, 2, 0)));
3240extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
3241 __attribute__ ((__format__ (__printf__, 2, 3)));
3242
3243
3244
3245
3246
3247
3248
3249
3250extern int fscanf (FILE *__restrict __stream,
3251 __const char *__restrict __format, ...) ;
3252
3253
3254
3255
3256extern int scanf (__const char *__restrict __format, ...) ;
3257
3258extern int sscanf (__const char *__restrict __s,
3259 __const char *__restrict __format, ...) throw ();
3260
3261
3262
3263
3264
3265
3266
3267
3268extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
3269 __gnuc_va_list __arg)
3270 __attribute__ ((__format__ (__scanf__, 2, 0))) ;
3271
3272
3273
3274
3275
3276extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
3277 __attribute__ ((__format__ (__scanf__, 1, 0))) ;
3278
3279
3280extern int vsscanf (__const char *__restrict __s,
3281 __const char *__restrict __format, __gnuc_va_list __arg)
3282 throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292extern int fgetc (FILE *__stream);
3293extern int getc (FILE *__stream);
3294
3295
3296
3297
3298
3299extern int getchar (void);
3300
3301# 464 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3302extern int getc_unlocked (FILE *__stream);
3303extern int getchar_unlocked (void);
3304# 475 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3305extern int fgetc_unlocked (FILE *__stream);
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317extern int fputc (int __c, FILE *__stream);
3318extern int putc (int __c, FILE *__stream);
3319
3320
3321
3322
3323
3324extern int putchar (int __c);
3325
3326# 508 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3327extern int fputc_unlocked (int __c, FILE *__stream);
3328
3329
3330
3331
3332
3333
3334
3335extern int putc_unlocked (int __c, FILE *__stream);
3336extern int putchar_unlocked (int __c);
3337
3338
3339
3340
3341
3342
3343extern int getw (FILE *__stream);
3344
3345
3346extern int putw (int __w, FILE *__stream);
3347
3348
3349
3350
3351
3352
3353
3354
3355extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
3356 ;
3357
3358
3359
3360
3361
3362
3363extern char *gets (char *__s) ;
3364
3365# 554 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3366extern char *fgets_unlocked (char *__restrict __s, int __n,
3367 FILE *__restrict __stream) ;
3368# 570 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3369extern __ssize_t __getdelim (char **__restrict __lineptr,
3370 size_t *__restrict __n, int __delimiter,
3371 FILE *__restrict __stream) ;
3372extern __ssize_t getdelim (char **__restrict __lineptr,
3373 size_t *__restrict __n, int __delimiter,
3374 FILE *__restrict __stream) ;
3375
3376
3377
3378
3379
3380
3381
3382extern __ssize_t getline (char **__restrict __lineptr,
3383 size_t *__restrict __n,
3384 FILE *__restrict __stream) ;
3385
3386
3387
3388
3389
3390
3391
3392
3393extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
3394
3395
3396
3397
3398
3399extern int puts (__const char *__s);
3400
3401
3402
3403
3404
3405
3406extern int ungetc (int __c, FILE *__stream);
3407
3408
3409
3410
3411
3412
3413extern size_t fread (void *__restrict __ptr, size_t __size,
3414 size_t __n, FILE *__restrict __stream) ;
3415
3416
3417
3418
3419extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
3420 size_t __n, FILE *__restrict __s) ;
3421
3422# 631 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3423extern int fputs_unlocked (__const char *__restrict __s,
3424 FILE *__restrict __stream);
3425# 642 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3426extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
3427 size_t __n, FILE *__restrict __stream) ;
3428extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
3429 size_t __n, FILE *__restrict __stream) ;
3430
3431
3432
3433
3434
3435
3436
3437
3438extern int fseek (FILE *__stream, long int __off, int __whence);
3439
3440
3441
3442
3443extern long int ftell (FILE *__stream) ;
3444
3445
3446
3447
3448extern void rewind (FILE *__stream);
3449
3450# 678 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3451extern int fseeko (FILE *__stream, __off_t __off, int __whence);
3452
3453
3454
3455
3456extern __off_t ftello (FILE *__stream) ;
3457# 697 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3458
3459
3460
3461
3462
3463
3464extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
3465
3466
3467
3468
3469extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
3470# 720 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3471
3472
3473
3474extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
3475extern __off64_t ftello64 (FILE *__stream) ;
3476extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
3477extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
3478
3479
3480
3481
3482extern void clearerr (FILE *__stream) throw ();
3483
3484extern int feof (FILE *__stream) throw () ;
3485
3486extern int ferror (FILE *__stream) throw () ;
3487
3488
3489
3490
3491extern void clearerr_unlocked (FILE *__stream) throw ();
3492extern int feof_unlocked (FILE *__stream) throw () ;
3493extern int ferror_unlocked (FILE *__stream) throw () ;
3494
3495
3496
3497
3498
3499
3500
3501
3502extern void perror (__const char *__s);
3503
3504
3505
3506
3507
3508
3509# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
3510
3511
3512
3513
3514
3515
3516
3517# 1 "/usr/include/gentoo-multilib/amd64/bits/sys_errlist.h" 1 3 4
3518# 27 "/usr/include/gentoo-multilib/amd64/bits/sys_errlist.h" 3 4
3519extern int sys_nerr;
3520extern __const char *__const sys_errlist[];
3521
3522
3523extern int _sys_nerr;
3524extern __const char *__const _sys_errlist[];
3525# 9 "/usr/include/bits/sys_errlist.h" 2 3 4
3526# 759 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
3527
3528
3529
3530
3531extern int fileno (FILE *__stream) throw () ;
3532
3533
3534
3535
3536extern int fileno_unlocked (FILE *__stream) throw () ;
3537# 778 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3538extern FILE *popen (__const char *__command, __const char *__modes) ;
3539
3540
3541
3542
3543
3544extern int pclose (FILE *__stream);
3545
3546
3547
3548
3549
3550extern char *ctermid (char *__s) throw ();
3551
3552
3553
3554
3555
3556extern char *cuserid (char *__s);
3557
3558
3559
3560
3561struct obstack;
3562
3563
3564extern int obstack_printf (struct obstack *__restrict __obstack,
3565 __const char *__restrict __format, ...)
3566 throw () __attribute__ ((__format__ (__printf__, 2, 3)));
3567extern int obstack_vprintf (struct obstack *__restrict __obstack,
3568 __const char *__restrict __format,
3569 __gnuc_va_list __args)
3570 throw () __attribute__ ((__format__ (__printf__, 2, 0)));
3571
3572
3573
3574
3575
3576
3577
3578extern void flockfile (FILE *__stream) throw ();
3579
3580
3581
3582extern int ftrylockfile (FILE *__stream) throw () ;
3583
3584
3585extern void funlockfile (FILE *__stream) throw ();
3586# 839 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3587# 1 "/usr/include/bits/stdio.h" 1 3 4
3588
3589
3590
3591
3592
3593
3594
3595# 1 "/usr/include/gentoo-multilib/amd64/bits/stdio.h" 1 3 4
3596# 33 "/usr/include/gentoo-multilib/amd64/bits/stdio.h" 3 4
3597inline int
3598vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
3599{
3600 return vfprintf (stdout, __fmt, __arg);
3601}
3602
3603
3604inline int
3605getchar (void)
3606{
3607 return _IO_getc (stdin);
3608}
3609
3610
3611
3612
3613inline int
3614fgetc_unlocked (FILE *__fp)
3615{
3616 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
3617}
3618
3619
3620
3621
3622
3623inline int
3624getc_unlocked (FILE *__fp)
3625{
3626 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
3627}
3628
3629
3630inline int
3631getchar_unlocked (void)
3632{
3633 return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
3634}
3635
3636
3637
3638
3639inline int
3640putchar (int __c)
3641{
3642 return _IO_putc (__c, stdout);
3643}
3644
3645
3646
3647
3648inline int
3649fputc_unlocked (int __c, FILE *__stream)
3650{
3651 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
3652}
3653
3654
3655
3656
3657
3658inline int
3659putc_unlocked (int __c, FILE *__stream)
3660{
3661 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
3662}
3663
3664
3665inline int
3666putchar_unlocked (int __c)
3667{
3668 return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
3669}
3670
3671
3672
3673
3674
3675inline __ssize_t
3676getline (char **__lineptr, size_t *__n, FILE *__stream)
3677{
3678 return __getdelim (__lineptr, __n, '\n', __stream);
3679}
3680
3681
3682
3683
3684
3685inline int
3686feof_unlocked (FILE *__stream) throw ()
3687{
3688 return (((__stream)->_flags & 0x10) != 0);
3689}
3690
3691
3692inline int
3693ferror_unlocked (FILE *__stream) throw ()
3694{
3695 return (((__stream)->_flags & 0x20) != 0);
3696}
3697# 9 "/usr/include/bits/stdio.h" 2 3 4
3698# 840 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
3699# 848 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3700}
3701# 9 "/usr/include/stdio.h" 2 3 4
3702# 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 2 3
3703# 98 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
3704namespace std __attribute__ ((__visibility__ ("default"))) {
3705
3706 using ::FILE;
3707 using ::fpos_t;
3708
3709 using ::clearerr;
3710 using ::fclose;
3711 using ::feof;
3712 using ::ferror;
3713 using ::fflush;
3714 using ::fgetc;
3715 using ::fgetpos;
3716 using ::fgets;
3717 using ::fopen;
3718 using ::fprintf;
3719 using ::fputc;
3720 using ::fputs;
3721 using ::fread;
3722 using ::freopen;
3723 using ::fscanf;
3724 using ::fseek;
3725 using ::fsetpos;
3726 using ::ftell;
3727 using ::fwrite;
3728 using ::getc;
3729 using ::getchar;
3730 using ::gets;
3731 using ::perror;
3732 using ::printf;
3733 using ::putc;
3734 using ::putchar;
3735 using ::puts;
3736 using ::remove;
3737 using ::rename;
3738 using ::rewind;
3739 using ::scanf;
3740 using ::setbuf;
3741 using ::setvbuf;
3742 using ::sprintf;
3743 using ::sscanf;
3744 using ::tmpfile;
3745 using ::tmpnam;
3746 using ::ungetc;
3747 using ::vfprintf;
3748 using ::vprintf;
3749 using ::vsprintf;
3750
3751}
3752# 155 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
3753namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
3754# 170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
3755 using ::snprintf;
3756 using ::vfscanf;
3757 using ::vscanf;
3758 using ::vsnprintf;
3759 using ::vsscanf;
3760
3761
3762}
3763
3764namespace std __attribute__ ((__visibility__ ("default"))) {
3765
3766 using ::__gnu_cxx::snprintf;
3767 using ::__gnu_cxx::vfscanf;
3768 using ::__gnu_cxx::vscanf;
3769 using ::__gnu_cxx::vsnprintf;
3770 using ::__gnu_cxx::vsscanf;
3771
3772}
3773# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
3774# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/clocale" 1 3
3775# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/clocale" 3
3776
3777# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/clocale" 3
3778
3779
3780# 1 "/usr/include/locale.h" 1 3 4
3781
3782
3783
3784
3785
3786
3787
3788# 1 "/usr/include/gentoo-multilib/amd64/locale.h" 1 3 4
3789# 26 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
3790# 1 "/usr/include/features.h" 1 3 4
3791# 27 "/usr/include/gentoo-multilib/amd64/locale.h" 2 3 4
3792
3793
3794# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
3795# 30 "/usr/include/gentoo-multilib/amd64/locale.h" 2 3 4
3796# 1 "/usr/include/bits/locale.h" 1 3 4
3797
3798
3799
3800
3801
3802
3803
3804# 1 "/usr/include/gentoo-multilib/amd64/bits/locale.h" 1 3 4
3805# 27 "/usr/include/gentoo-multilib/amd64/bits/locale.h" 3 4
3806enum
3807{
3808 __LC_CTYPE = 0,
3809 __LC_NUMERIC = 1,
3810 __LC_TIME = 2,
3811 __LC_COLLATE = 3,
3812 __LC_MONETARY = 4,
3813 __LC_MESSAGES = 5,
3814 __LC_ALL = 6,
3815 __LC_PAPER = 7,
3816 __LC_NAME = 8,
3817 __LC_ADDRESS = 9,
3818 __LC_TELEPHONE = 10,
3819 __LC_MEASUREMENT = 11,
3820 __LC_IDENTIFICATION = 12
3821};
3822# 9 "/usr/include/bits/locale.h" 2 3 4
3823# 31 "/usr/include/gentoo-multilib/amd64/locale.h" 2 3 4
3824
3825extern "C" {
3826# 51 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
3827
3828
3829
3830struct lconv
3831{
3832
3833
3834 char *decimal_point;
3835 char *thousands_sep;
3836
3837
3838
3839
3840
3841 char *grouping;
3842
3843
3844
3845
3846
3847 char *int_curr_symbol;
3848 char *currency_symbol;
3849 char *mon_decimal_point;
3850 char *mon_thousands_sep;
3851 char *mon_grouping;
3852 char *positive_sign;
3853 char *negative_sign;
3854 char int_frac_digits;
3855 char frac_digits;
3856
3857 char p_cs_precedes;
3858
3859 char p_sep_by_space;
3860
3861 char n_cs_precedes;
3862
3863 char n_sep_by_space;
3864
3865
3866
3867
3868
3869
3870 char p_sign_posn;
3871 char n_sign_posn;
3872
3873
3874 char int_p_cs_precedes;
3875
3876 char int_p_sep_by_space;
3877
3878 char int_n_cs_precedes;
3879
3880 char int_n_sep_by_space;
3881
3882
3883
3884
3885
3886
3887 char int_p_sign_posn;
3888 char int_n_sign_posn;
3889# 121 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
3890};
3891
3892
3893
3894extern char *setlocale (int __category, __const char *__locale) throw ();
3895
3896
3897extern struct lconv *localeconv (void) throw ();
3898
3899
3900# 146 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
3901# 1 "/usr/include/xlocale.h" 1 3 4
3902# 147 "/usr/include/gentoo-multilib/amd64/locale.h" 2 3 4
3903
3904typedef __locale_t locale_t;
3905
3906
3907
3908
3909
3910extern __locale_t newlocale (int __category_mask, __const char *__locale,
3911 __locale_t __base) throw ();
3912# 189 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
3913extern __locale_t duplocale (__locale_t __dataset) throw ();
3914
3915
3916
3917extern void freelocale (__locale_t __dataset) throw ();
3918
3919
3920
3921
3922
3923
3924extern __locale_t uselocale (__locale_t __dataset) throw ();
3925
3926
3927
3928
3929
3930
3931
3932}
3933# 9 "/usr/include/locale.h" 2 3 4
3934# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/clocale" 2 3
3935
3936
3937
3938
3939
3940namespace std __attribute__ ((__visibility__ ("default"))) {
3941
3942 using ::lconv;
3943 using ::setlocale;
3944 using ::localeconv;
3945
3946}
3947# 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
3948# 1 "/usr/include/langinfo.h" 1 3 4
3949
3950
3951
3952
3953
3954
3955
3956# 1 "/usr/include/gentoo-multilib/amd64/langinfo.h" 1 3 4
3957# 24 "/usr/include/gentoo-multilib/amd64/langinfo.h" 3 4
3958# 1 "/usr/include/nl_types.h" 1 3 4
3959
3960
3961
3962
3963
3964
3965
3966# 1 "/usr/include/gentoo-multilib/amd64/nl_types.h" 1 3 4
3967# 22 "/usr/include/gentoo-multilib/amd64/nl_types.h" 3 4
3968# 1 "/usr/include/features.h" 1 3 4
3969# 23 "/usr/include/gentoo-multilib/amd64/nl_types.h" 2 3 4
3970# 31 "/usr/include/gentoo-multilib/amd64/nl_types.h" 3 4
3971extern "C" {
3972
3973
3974typedef void *nl_catd;
3975
3976
3977typedef int nl_item;
3978
3979
3980
3981
3982
3983extern nl_catd catopen (__const char *__cat_name, int __flag) __attribute__ ((__nonnull__ (1)));
3984
3985
3986
3987extern char *catgets (nl_catd __catalog, int __set, int __number,
3988 __const char *__string) throw () __attribute__ ((__nonnull__ (1)));
3989
3990
3991extern int catclose (nl_catd __catalog) throw () __attribute__ ((__nonnull__ (1)));
3992
3993}
3994# 9 "/usr/include/nl_types.h" 2 3 4
3995# 25 "/usr/include/gentoo-multilib/amd64/langinfo.h" 2 3 4
3996
3997# 1 "/usr/include/bits/locale.h" 1 3 4
3998
3999
4000
4001
4002
4003
4004
4005# 1 "/usr/include/gentoo-multilib/amd64/bits/locale.h" 1 3 4
4006# 9 "/usr/include/bits/locale.h" 2 3 4
4007# 27 "/usr/include/gentoo-multilib/amd64/langinfo.h" 2 3 4
4008
4009
4010extern "C" {
4011# 42 "/usr/include/gentoo-multilib/amd64/langinfo.h" 3 4
4012enum
4013{
4014
4015
4016
4017 ABDAY_1 = (((__LC_TIME) << 16) | (0)),
4018
4019 ABDAY_2,
4020
4021 ABDAY_3,
4022
4023 ABDAY_4,
4024
4025 ABDAY_5,
4026
4027 ABDAY_6,
4028
4029 ABDAY_7,
4030
4031
4032
4033 DAY_1,
4034
4035 DAY_2,
4036
4037 DAY_3,
4038
4039 DAY_4,
4040
4041 DAY_5,
4042
4043 DAY_6,
4044
4045 DAY_7,
4046
4047
4048
4049 ABMON_1,
4050
4051 ABMON_2,
4052
4053 ABMON_3,
4054
4055 ABMON_4,
4056
4057 ABMON_5,
4058
4059 ABMON_6,
4060
4061 ABMON_7,
4062
4063 ABMON_8,
4064
4065 ABMON_9,
4066
4067 ABMON_10,
4068
4069 ABMON_11,
4070
4071 ABMON_12,
4072
4073
4074
4075 MON_1,
4076
4077 MON_2,
4078
4079 MON_3,
4080
4081 MON_4,
4082
4083 MON_5,
4084
4085 MON_6,
4086
4087 MON_7,
4088
4089 MON_8,
4090
4091 MON_9,
4092
4093 MON_10,
4094
4095 MON_11,
4096
4097 MON_12,
4098
4099
4100 AM_STR,
4101
4102 PM_STR,
4103
4104
4105 D_T_FMT,
4106
4107 D_FMT,
4108
4109 T_FMT,
4110
4111 T_FMT_AMPM,
4112
4113
4114 ERA,
4115
4116 __ERA_YEAR,
4117
4118
4119
4120 ERA_D_FMT,
4121
4122 ALT_DIGITS,
4123
4124 ERA_D_T_FMT,
4125
4126 ERA_T_FMT,
4127
4128
4129 _NL_TIME_ERA_NUM_ENTRIES,
4130 _NL_TIME_ERA_ENTRIES,
4131
4132 _NL_WABDAY_1,
4133 _NL_WABDAY_2,
4134 _NL_WABDAY_3,
4135 _NL_WABDAY_4,
4136 _NL_WABDAY_5,
4137 _NL_WABDAY_6,
4138 _NL_WABDAY_7,
4139
4140
4141 _NL_WDAY_1,
4142 _NL_WDAY_2,
4143 _NL_WDAY_3,
4144 _NL_WDAY_4,
4145 _NL_WDAY_5,
4146 _NL_WDAY_6,
4147 _NL_WDAY_7,
4148
4149
4150 _NL_WABMON_1,
4151 _NL_WABMON_2,
4152 _NL_WABMON_3,
4153 _NL_WABMON_4,
4154 _NL_WABMON_5,
4155 _NL_WABMON_6,
4156 _NL_WABMON_7,
4157 _NL_WABMON_8,
4158 _NL_WABMON_9,
4159 _NL_WABMON_10,
4160 _NL_WABMON_11,
4161 _NL_WABMON_12,
4162
4163
4164 _NL_WMON_1,
4165 _NL_WMON_2,
4166 _NL_WMON_3,
4167 _NL_WMON_4,
4168 _NL_WMON_5,
4169 _NL_WMON_6,
4170 _NL_WMON_7,
4171 _NL_WMON_8,
4172 _NL_WMON_9,
4173 _NL_WMON_10,
4174 _NL_WMON_11,
4175 _NL_WMON_12,
4176
4177 _NL_WAM_STR,
4178 _NL_WPM_STR,
4179
4180 _NL_WD_T_FMT,
4181 _NL_WD_FMT,
4182 _NL_WT_FMT,
4183 _NL_WT_FMT_AMPM,
4184
4185 _NL_WERA_YEAR,
4186 _NL_WERA_D_FMT,
4187 _NL_WALT_DIGITS,
4188 _NL_WERA_D_T_FMT,
4189 _NL_WERA_T_FMT,
4190
4191 _NL_TIME_WEEK_NDAYS,
4192 _NL_TIME_WEEK_1STDAY,
4193 _NL_TIME_WEEK_1STWEEK,
4194 _NL_TIME_FIRST_WEEKDAY,
4195 _NL_TIME_FIRST_WORKDAY,
4196 _NL_TIME_CAL_DIRECTION,
4197 _NL_TIME_TIMEZONE,
4198
4199 _DATE_FMT,
4200
4201 _NL_W_DATE_FMT,
4202
4203 _NL_TIME_CODESET,
4204
4205 _NL_NUM_LC_TIME,
4206
4207
4208
4209
4210 _NL_COLLATE_NRULES = (((__LC_COLLATE) << 16) | (0)),
4211 _NL_COLLATE_RULESETS,
4212 _NL_COLLATE_TABLEMB,
4213 _NL_COLLATE_WEIGHTMB,
4214 _NL_COLLATE_EXTRAMB,
4215 _NL_COLLATE_INDIRECTMB,
4216 _NL_COLLATE_GAP1,
4217 _NL_COLLATE_GAP2,
4218 _NL_COLLATE_GAP3,
4219 _NL_COLLATE_TABLEWC,
4220 _NL_COLLATE_WEIGHTWC,
4221 _NL_COLLATE_EXTRAWC,
4222 _NL_COLLATE_INDIRECTWC,
4223 _NL_COLLATE_SYMB_HASH_SIZEMB,
4224 _NL_COLLATE_SYMB_TABLEMB,
4225 _NL_COLLATE_SYMB_EXTRAMB,
4226 _NL_COLLATE_COLLSEQMB,
4227 _NL_COLLATE_COLLSEQWC,
4228 _NL_COLLATE_CODESET,
4229 _NL_NUM_LC_COLLATE,
4230
4231
4232
4233
4234 _NL_CTYPE_CLASS = (((__LC_CTYPE) << 16) | (0)),
4235 _NL_CTYPE_TOUPPER,
4236 _NL_CTYPE_GAP1,
4237 _NL_CTYPE_TOLOWER,
4238 _NL_CTYPE_GAP2,
4239 _NL_CTYPE_CLASS32,
4240 _NL_CTYPE_GAP3,
4241 _NL_CTYPE_GAP4,
4242 _NL_CTYPE_GAP5,
4243 _NL_CTYPE_GAP6,
4244 _NL_CTYPE_CLASS_NAMES,
4245 _NL_CTYPE_MAP_NAMES,
4246 _NL_CTYPE_WIDTH,
4247 _NL_CTYPE_MB_CUR_MAX,
4248 _NL_CTYPE_CODESET_NAME,
4249 CODESET = _NL_CTYPE_CODESET_NAME,
4250
4251 _NL_CTYPE_TOUPPER32,
4252 _NL_CTYPE_TOLOWER32,
4253 _NL_CTYPE_CLASS_OFFSET,
4254 _NL_CTYPE_MAP_OFFSET,
4255 _NL_CTYPE_INDIGITS_MB_LEN,
4256 _NL_CTYPE_INDIGITS0_MB,
4257 _NL_CTYPE_INDIGITS1_MB,
4258 _NL_CTYPE_INDIGITS2_MB,
4259 _NL_CTYPE_INDIGITS3_MB,
4260 _NL_CTYPE_INDIGITS4_MB,
4261 _NL_CTYPE_INDIGITS5_MB,
4262 _NL_CTYPE_INDIGITS6_MB,
4263 _NL_CTYPE_INDIGITS7_MB,
4264 _NL_CTYPE_INDIGITS8_MB,
4265 _NL_CTYPE_INDIGITS9_MB,
4266 _NL_CTYPE_INDIGITS_WC_LEN,
4267 _NL_CTYPE_INDIGITS0_WC,
4268 _NL_CTYPE_INDIGITS1_WC,
4269 _NL_CTYPE_INDIGITS2_WC,
4270 _NL_CTYPE_INDIGITS3_WC,
4271 _NL_CTYPE_INDIGITS4_WC,
4272 _NL_CTYPE_INDIGITS5_WC,
4273 _NL_CTYPE_INDIGITS6_WC,
4274 _NL_CTYPE_INDIGITS7_WC,
4275 _NL_CTYPE_INDIGITS8_WC,
4276 _NL_CTYPE_INDIGITS9_WC,
4277 _NL_CTYPE_OUTDIGIT0_MB,
4278 _NL_CTYPE_OUTDIGIT1_MB,
4279 _NL_CTYPE_OUTDIGIT2_MB,
4280 _NL_CTYPE_OUTDIGIT3_MB,
4281 _NL_CTYPE_OUTDIGIT4_MB,
4282 _NL_CTYPE_OUTDIGIT5_MB,
4283 _NL_CTYPE_OUTDIGIT6_MB,
4284 _NL_CTYPE_OUTDIGIT7_MB,
4285 _NL_CTYPE_OUTDIGIT8_MB,
4286 _NL_CTYPE_OUTDIGIT9_MB,
4287 _NL_CTYPE_OUTDIGIT0_WC,
4288 _NL_CTYPE_OUTDIGIT1_WC,
4289 _NL_CTYPE_OUTDIGIT2_WC,
4290 _NL_CTYPE_OUTDIGIT3_WC,
4291 _NL_CTYPE_OUTDIGIT4_WC,
4292 _NL_CTYPE_OUTDIGIT5_WC,
4293 _NL_CTYPE_OUTDIGIT6_WC,
4294 _NL_CTYPE_OUTDIGIT7_WC,
4295 _NL_CTYPE_OUTDIGIT8_WC,
4296 _NL_CTYPE_OUTDIGIT9_WC,
4297 _NL_CTYPE_TRANSLIT_TAB_SIZE,
4298 _NL_CTYPE_TRANSLIT_FROM_IDX,
4299 _NL_CTYPE_TRANSLIT_FROM_TBL,
4300 _NL_CTYPE_TRANSLIT_TO_IDX,
4301 _NL_CTYPE_TRANSLIT_TO_TBL,
4302 _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN,
4303 _NL_CTYPE_TRANSLIT_DEFAULT_MISSING,
4304 _NL_CTYPE_TRANSLIT_IGNORE_LEN,
4305 _NL_CTYPE_TRANSLIT_IGNORE,
4306 _NL_CTYPE_MAP_TO_NONASCII,
4307 _NL_CTYPE_EXTRA_MAP_1,
4308 _NL_CTYPE_EXTRA_MAP_2,
4309 _NL_CTYPE_EXTRA_MAP_3,
4310 _NL_CTYPE_EXTRA_MAP_4,
4311 _NL_CTYPE_EXTRA_MAP_5,
4312 _NL_CTYPE_EXTRA_MAP_6,
4313 _NL_CTYPE_EXTRA_MAP_7,
4314 _NL_CTYPE_EXTRA_MAP_8,
4315 _NL_CTYPE_EXTRA_MAP_9,
4316 _NL_CTYPE_EXTRA_MAP_10,
4317 _NL_CTYPE_EXTRA_MAP_11,
4318 _NL_CTYPE_EXTRA_MAP_12,
4319 _NL_CTYPE_EXTRA_MAP_13,
4320 _NL_CTYPE_EXTRA_MAP_14,
4321 _NL_NUM_LC_CTYPE,
4322
4323
4324
4325
4326 __INT_CURR_SYMBOL = (((__LC_MONETARY) << 16) | (0)),
4327
4328
4329
4330 __CURRENCY_SYMBOL,
4331
4332
4333
4334 __MON_DECIMAL_POINT,
4335
4336
4337
4338 __MON_THOUSANDS_SEP,
4339
4340
4341
4342 __MON_GROUPING,
4343
4344
4345
4346 __POSITIVE_SIGN,
4347
4348
4349
4350 __NEGATIVE_SIGN,
4351
4352
4353
4354 __INT_FRAC_DIGITS,
4355
4356
4357
4358 __FRAC_DIGITS,
4359
4360
4361
4362 __P_CS_PRECEDES,
4363
4364
4365
4366 __P_SEP_BY_SPACE,
4367
4368
4369
4370 __N_CS_PRECEDES,
4371
4372
4373
4374 __N_SEP_BY_SPACE,
4375
4376
4377
4378 __P_SIGN_POSN,
4379
4380
4381
4382 __N_SIGN_POSN,
4383
4384
4385
4386 _NL_MONETARY_CRNCYSTR,
4387
4388 __INT_P_CS_PRECEDES,
4389
4390
4391
4392 __INT_P_SEP_BY_SPACE,
4393
4394
4395
4396 __INT_N_CS_PRECEDES,
4397
4398
4399
4400 __INT_N_SEP_BY_SPACE,
4401
4402
4403
4404 __INT_P_SIGN_POSN,
4405
4406
4407
4408 __INT_N_SIGN_POSN,
4409
4410
4411
4412 _NL_MONETARY_DUO_INT_CURR_SYMBOL,
4413 _NL_MONETARY_DUO_CURRENCY_SYMBOL,
4414 _NL_MONETARY_DUO_INT_FRAC_DIGITS,
4415 _NL_MONETARY_DUO_FRAC_DIGITS,
4416 _NL_MONETARY_DUO_P_CS_PRECEDES,
4417 _NL_MONETARY_DUO_P_SEP_BY_SPACE,
4418 _NL_MONETARY_DUO_N_CS_PRECEDES,
4419 _NL_MONETARY_DUO_N_SEP_BY_SPACE,
4420 _NL_MONETARY_DUO_INT_P_CS_PRECEDES,
4421 _NL_MONETARY_DUO_INT_P_SEP_BY_SPACE,
4422 _NL_MONETARY_DUO_INT_N_CS_PRECEDES,
4423 _NL_MONETARY_DUO_INT_N_SEP_BY_SPACE,
4424 _NL_MONETARY_DUO_P_SIGN_POSN,
4425 _NL_MONETARY_DUO_N_SIGN_POSN,
4426 _NL_MONETARY_DUO_INT_P_SIGN_POSN,
4427 _NL_MONETARY_DUO_INT_N_SIGN_POSN,
4428 _NL_MONETARY_UNO_VALID_FROM,
4429 _NL_MONETARY_UNO_VALID_TO,
4430 _NL_MONETARY_DUO_VALID_FROM,
4431 _NL_MONETARY_DUO_VALID_TO,
4432 _NL_MONETARY_CONVERSION_RATE,
4433 _NL_MONETARY_DECIMAL_POINT_WC,
4434 _NL_MONETARY_THOUSANDS_SEP_WC,
4435 _NL_MONETARY_CODESET,
4436 _NL_NUM_LC_MONETARY,
4437
4438
4439
4440 __DECIMAL_POINT = (((__LC_NUMERIC) << 16) | (0)),
4441
4442
4443
4444 RADIXCHAR = __DECIMAL_POINT,
4445
4446 __THOUSANDS_SEP,
4447
4448
4449
4450 THOUSEP = __THOUSANDS_SEP,
4451
4452 __GROUPING,
4453
4454
4455
4456 _NL_NUMERIC_DECIMAL_POINT_WC,
4457 _NL_NUMERIC_THOUSANDS_SEP_WC,
4458 _NL_NUMERIC_CODESET,
4459 _NL_NUM_LC_NUMERIC,
4460
4461 __YESEXPR = (((__LC_MESSAGES) << 16) | (0)),
4462
4463 __NOEXPR,
4464
4465 __YESSTR,
4466
4467
4468
4469 __NOSTR,
4470
4471
4472
4473 _NL_MESSAGES_CODESET,
4474 _NL_NUM_LC_MESSAGES,
4475
4476 _NL_PAPER_HEIGHT = (((__LC_PAPER) << 16) | (0)),
4477 _NL_PAPER_WIDTH,
4478 _NL_PAPER_CODESET,
4479 _NL_NUM_LC_PAPER,
4480
4481 _NL_NAME_NAME_FMT = (((__LC_NAME) << 16) | (0)),
4482 _NL_NAME_NAME_GEN,
4483 _NL_NAME_NAME_MR,
4484 _NL_NAME_NAME_MRS,
4485 _NL_NAME_NAME_MISS,
4486 _NL_NAME_NAME_MS,
4487 _NL_NAME_CODESET,
4488 _NL_NUM_LC_NAME,
4489
4490 _NL_ADDRESS_POSTAL_FMT = (((__LC_ADDRESS) << 16) | (0)),
4491 _NL_ADDRESS_COUNTRY_NAME,
4492 _NL_ADDRESS_COUNTRY_POST,
4493 _NL_ADDRESS_COUNTRY_AB2,
4494 _NL_ADDRESS_COUNTRY_AB3,
4495 _NL_ADDRESS_COUNTRY_CAR,
4496 _NL_ADDRESS_COUNTRY_NUM,
4497 _NL_ADDRESS_COUNTRY_ISBN,
4498 _NL_ADDRESS_LANG_NAME,
4499 _NL_ADDRESS_LANG_AB,
4500 _NL_ADDRESS_LANG_TERM,
4501 _NL_ADDRESS_LANG_LIB,
4502 _NL_ADDRESS_CODESET,
4503 _NL_NUM_LC_ADDRESS,
4504
4505 _NL_TELEPHONE_TEL_INT_FMT = (((__LC_TELEPHONE) << 16) | (0)),
4506 _NL_TELEPHONE_TEL_DOM_FMT,
4507 _NL_TELEPHONE_INT_SELECT,
4508 _NL_TELEPHONE_INT_PREFIX,
4509 _NL_TELEPHONE_CODESET,
4510 _NL_NUM_LC_TELEPHONE,
4511
4512 _NL_MEASUREMENT_MEASUREMENT = (((__LC_MEASUREMENT) << 16) | (0)),
4513 _NL_MEASUREMENT_CODESET,
4514 _NL_NUM_LC_MEASUREMENT,
4515
4516 _NL_IDENTIFICATION_TITLE = (((__LC_IDENTIFICATION) << 16) | (0)),
4517 _NL_IDENTIFICATION_SOURCE,
4518 _NL_IDENTIFICATION_ADDRESS,
4519 _NL_IDENTIFICATION_CONTACT,
4520 _NL_IDENTIFICATION_EMAIL,
4521 _NL_IDENTIFICATION_TEL,
4522 _NL_IDENTIFICATION_FAX,
4523 _NL_IDENTIFICATION_LANGUAGE,
4524 _NL_IDENTIFICATION_TERRITORY,
4525 _NL_IDENTIFICATION_AUDIENCE,
4526 _NL_IDENTIFICATION_APPLICATION,
4527 _NL_IDENTIFICATION_ABBREVIATION,
4528 _NL_IDENTIFICATION_REVISION,
4529 _NL_IDENTIFICATION_DATE,
4530 _NL_IDENTIFICATION_CATEGORY,
4531 _NL_IDENTIFICATION_CODESET,
4532 _NL_NUM_LC_IDENTIFICATION,
4533
4534
4535 _NL_NUM
4536};
4537# 582 "/usr/include/gentoo-multilib/amd64/langinfo.h" 3 4
4538extern char *nl_langinfo (nl_item __item) throw ();
4539
4540
4541
4542
4543
4544
4545
4546# 1 "/usr/include/xlocale.h" 1 3 4
4547# 591 "/usr/include/gentoo-multilib/amd64/langinfo.h" 2 3 4
4548
4549
4550extern char *nl_langinfo_l (nl_item __item, __locale_t l);
4551
4552
4553}
4554# 9 "/usr/include/langinfo.h" 2 3 4
4555# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
4556# 1 "/usr/include/iconv.h" 1 3 4
4557
4558
4559
4560
4561
4562
4563
4564# 1 "/usr/include/gentoo-multilib/amd64/iconv.h" 1 3 4
4565# 22 "/usr/include/gentoo-multilib/amd64/iconv.h" 3 4
4566# 1 "/usr/include/features.h" 1 3 4
4567# 23 "/usr/include/gentoo-multilib/amd64/iconv.h" 2 3 4
4568
4569# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
4570# 25 "/usr/include/gentoo-multilib/amd64/iconv.h" 2 3 4
4571
4572
4573extern "C" {
4574
4575
4576typedef void *iconv_t;
4577
4578
4579
4580
4581
4582
4583
4584extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
4585
4586
4587
4588
4589extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
4590 size_t *__restrict __inbytesleft,
4591 char **__restrict __outbuf,
4592 size_t *__restrict __outbytesleft);
4593
4594
4595
4596
4597
4598extern int iconv_close (iconv_t __cd);
4599
4600}
4601# 9 "/usr/include/iconv.h" 2 3 4
4602# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
4603# 1 "/usr/include/libintl.h" 1 3 4
4604
4605
4606
4607
4608
4609
4610
4611# 1 "/usr/include/gentoo-multilib/amd64/libintl.h" 1 3 4
4612# 24 "/usr/include/gentoo-multilib/amd64/libintl.h" 3 4
4613# 1 "/usr/include/features.h" 1 3 4
4614# 25 "/usr/include/gentoo-multilib/amd64/libintl.h" 2 3 4
4615# 35 "/usr/include/gentoo-multilib/amd64/libintl.h" 3 4
4616extern "C" {
4617
4618
4619
4620
4621extern char *gettext (__const char *__msgid)
4622 throw () __attribute__ ((__format_arg__ (1)));
4623
4624
4625
4626extern char *dgettext (__const char *__domainname, __const char *__msgid)
4627 throw () __attribute__ ((__format_arg__ (2)));
4628extern char *__dgettext (__const char *__domainname, __const char *__msgid)
4629 throw () __attribute__ ((__format_arg__ (2)));
4630
4631
4632
4633extern char *dcgettext (__const char *__domainname,
4634 __const char *__msgid, int __category)
4635 throw () __attribute__ ((__format_arg__ (2)));
4636extern char *__dcgettext (__const char *__domainname,
4637 __const char *__msgid, int __category)
4638 throw () __attribute__ ((__format_arg__ (2)));
4639
4640
4641
4642
4643extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
4644 unsigned long int __n)
4645 throw () __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));
4646
4647
4648
4649extern char *dngettext (__const char *__domainname, __const char *__msgid1,
4650 __const char *__msgid2, unsigned long int __n)
4651 throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
4652
4653
4654
4655extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
4656 __const char *__msgid2, unsigned long int __n,
4657 int __category)
4658 throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
4659
4660
4661
4662
4663
4664extern char *textdomain (__const char *__domainname) throw ();
4665
4666
4667
4668extern char *bindtextdomain (__const char *__domainname,
4669 __const char *__dirname) throw ();
4670
4671
4672
4673extern char *bind_textdomain_codeset (__const char *__domainname,
4674 __const char *__codeset) throw ();
4675# 122 "/usr/include/gentoo-multilib/amd64/libintl.h" 3 4
4676}
4677# 9 "/usr/include/libintl.h" 2 3 4
4678# 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
4679# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdarg" 1 3
4680# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdarg" 3
4681
4682# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdarg" 3
4683
4684
4685# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stdarg.h" 1 3 4
4686# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdarg" 2 3
4687
4688
4689
4690
4691
4692
4693namespace std __attribute__ ((__visibility__ ("default"))) {
4694
4695 using ::va_list;
4696
4697}
4698# 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
4699
4700
4701
4702
4703
4704
4705namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
4706
4707 extern "C" __typeof(uselocale) __uselocale;
4708
4709}
4710
4711
4712namespace std __attribute__ ((__visibility__ ("default"))) {
4713
4714 typedef __locale_t __c_locale;
4715
4716
4717
4718
4719
4720 inline int
4721 __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
4722 char* __out,
4723 const int __size __attribute__ ((__unused__)),
4724 const char* __fmt, ...)
4725 {
4726
4727 __c_locale __old = __gnu_cxx::__uselocale(__cloc);
4728
4729
4730
4731
4732
4733
4734
4735 va_list __args;
4736 __builtin_va_start(__args,__fmt);
4737
4738
4739 const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
4740
4741
4742
4743
4744 __builtin_va_end(__args);
4745
4746
4747 __gnu_cxx::__uselocale(__old);
4748
4749
4750
4751
4752 return __ret;
4753 }
4754
4755}
4756# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
4757# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++io.h" 1 3
4758# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++io.h" 3
4759# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 1 3
4760# 33 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 3
4761#pragma GCC visibility push(default)
4762# 114 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 3
4763# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 1 3
4764# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
4765# 1 "/usr/include/pthread.h" 1 3 4
4766
4767
4768
4769
4770
4771
4772
4773# 1 "/usr/include/gentoo-multilib/amd64/pthread.h" 1 3 4
4774# 23 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
4775# 1 "/usr/include/features.h" 1 3 4
4776# 24 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
4777# 1 "/usr/include/sched.h" 1 3 4
4778
4779
4780
4781
4782
4783
4784
4785# 1 "/usr/include/gentoo-multilib/amd64/sched.h" 1 3 4
4786# 23 "/usr/include/gentoo-multilib/amd64/sched.h" 3 4
4787# 1 "/usr/include/features.h" 1 3 4
4788# 24 "/usr/include/gentoo-multilib/amd64/sched.h" 2 3 4
4789
4790
4791# 1 "/usr/include/bits/types.h" 1 3 4
4792# 27 "/usr/include/gentoo-multilib/amd64/sched.h" 2 3 4
4793
4794
4795# 1 "/usr/include/time.h" 1 3 4
4796
4797
4798
4799
4800
4801
4802
4803# 1 "/usr/include/gentoo-multilib/amd64/time.h" 1 3 4
4804# 9 "/usr/include/time.h" 2 3 4
4805# 30 "/usr/include/gentoo-multilib/amd64/sched.h" 2 3 4
4806
4807
4808# 1 "/usr/include/bits/sched.h" 1 3 4
4809
4810
4811
4812
4813
4814
4815
4816# 1 "/usr/include/gentoo-multilib/amd64/bits/sched.h" 1 3 4
4817# 66 "/usr/include/gentoo-multilib/amd64/bits/sched.h" 3 4
4818struct sched_param
4819 {
4820 int __sched_priority;
4821 };
4822
4823extern "C" {
4824
4825
4826
4827extern int clone (int (*__fn) (void *__arg), void *__child_stack,
4828 int __flags, void *__arg, ...) throw ();
4829
4830
4831extern int unshare (int __flags) throw ();
4832
4833
4834extern int sched_getcpu (void) throw ();
4835
4836
4837}
4838
4839
4840
4841
4842
4843
4844
4845struct __sched_param
4846 {
4847 int __sched_priority;
4848 };
4849# 108 "/usr/include/gentoo-multilib/amd64/bits/sched.h" 3 4
4850typedef unsigned long int __cpu_mask;
4851
4852
4853
4854
4855
4856
4857typedef struct
4858{
4859 __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
4860} cpu_set_t;
4861# 134 "/usr/include/gentoo-multilib/amd64/bits/sched.h" 3 4
4862extern int __sched_cpucount (size_t __setsize, cpu_set_t *__setp) throw ();
4863# 9 "/usr/include/bits/sched.h" 2 3 4
4864# 33 "/usr/include/gentoo-multilib/amd64/sched.h" 2 3 4
4865
4866
4867
4868
4869extern "C" {
4870
4871
4872extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
4873 throw ();
4874
4875
4876extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
4877
4878
4879extern int sched_setscheduler (__pid_t __pid, int __policy,
4880 __const struct sched_param *__param) throw ();
4881
4882
4883extern int sched_getscheduler (__pid_t __pid) throw ();
4884
4885
4886extern int sched_yield (void) throw ();
4887
4888
4889extern int sched_get_priority_max (int __algorithm) throw ();
4890
4891
4892extern int sched_get_priority_min (int __algorithm) throw ();
4893
4894
4895extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
4896# 77 "/usr/include/gentoo-multilib/amd64/sched.h" 3 4
4897extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
4898 __const cpu_set_t *__cpuset) throw ();
4899
4900
4901extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
4902 cpu_set_t *__cpuset) throw ();
4903
4904
4905}
4906# 9 "/usr/include/sched.h" 2 3 4
4907# 25 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
4908# 1 "/usr/include/time.h" 1 3 4
4909
4910
4911
4912
4913
4914
4915
4916# 1 "/usr/include/gentoo-multilib/amd64/time.h" 1 3 4
4917# 29 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
4918# 1 "/usr/include/features.h" 1 3 4
4919# 30 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
4920
4921extern "C" {
4922
4923
4924
4925
4926
4927
4928
4929# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
4930# 40 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
4931
4932
4933
4934# 1 "/usr/include/bits/time.h" 1 3 4
4935
4936
4937
4938
4939
4940
4941
4942# 1 "/usr/include/gentoo-multilib/amd64/bits/time.h" 1 3 4
4943# 9 "/usr/include/bits/time.h" 2 3 4
4944# 44 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
4945# 132 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
4946
4947
4948struct tm
4949{
4950 int tm_sec;
4951 int tm_min;
4952 int tm_hour;
4953 int tm_mday;
4954 int tm_mon;
4955 int tm_year;
4956 int tm_wday;
4957 int tm_yday;
4958 int tm_isdst;
4959
4960
4961 long int tm_gmtoff;
4962 __const char *tm_zone;
4963
4964
4965
4966
4967};
4968
4969
4970
4971
4972
4973
4974
4975
4976struct itimerspec
4977 {
4978 struct timespec it_interval;
4979 struct timespec it_value;
4980 };
4981
4982
4983struct sigevent;
4984# 181 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
4985
4986
4987
4988extern clock_t clock (void) throw ();
4989
4990
4991extern time_t time (time_t *__timer) throw ();
4992
4993
4994extern double difftime (time_t __time1, time_t __time0)
4995 throw () __attribute__ ((__const__));
4996
4997
4998extern time_t mktime (struct tm *__tp) throw ();
4999
5000
5001
5002
5003
5004extern size_t strftime (char *__restrict __s, size_t __maxsize,
5005 __const char *__restrict __format,
5006 __const struct tm *__restrict __tp) throw ();
5007
5008
5009
5010
5011
5012extern char *strptime (__const char *__restrict __s,
5013 __const char *__restrict __fmt, struct tm *__tp)
5014 throw ();
5015
5016
5017
5018
5019
5020# 1 "/usr/include/xlocale.h" 1 3 4
5021# 217 "/usr/include/gentoo-multilib/amd64/time.h" 2 3 4
5022
5023extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
5024 __const char *__restrict __format,
5025 __const struct tm *__restrict __tp,
5026 __locale_t __loc) throw ();
5027
5028extern char *strptime_l (__const char *__restrict __s,
5029 __const char *__restrict __fmt, struct tm *__tp,
5030 __locale_t __loc) throw ();
5031
5032
5033
5034
5035
5036
5037extern struct tm *gmtime (__const time_t *__timer) throw ();
5038
5039
5040
5041extern struct tm *localtime (__const time_t *__timer) throw ();
5042
5043
5044
5045
5046
5047extern struct tm *gmtime_r (__const time_t *__restrict __timer,
5048 struct tm *__restrict __tp) throw ();
5049
5050
5051
5052extern struct tm *localtime_r (__const time_t *__restrict __timer,
5053 struct tm *__restrict __tp) throw ();
5054
5055
5056
5057
5058
5059extern char *asctime (__const struct tm *__tp) throw ();
5060
5061
5062extern char *ctime (__const time_t *__timer) throw ();
5063
5064
5065
5066
5067
5068
5069
5070extern char *asctime_r (__const struct tm *__restrict __tp,
5071 char *__restrict __buf) throw ();
5072
5073
5074extern char *ctime_r (__const time_t *__restrict __timer,
5075 char *__restrict __buf) throw ();
5076
5077
5078
5079
5080extern char *__tzname[2];
5081extern int __daylight;
5082extern long int __timezone;
5083
5084
5085
5086
5087extern char *tzname[2];
5088
5089
5090
5091extern void tzset (void) throw ();
5092
5093
5094
5095extern int daylight;
5096extern long int timezone;
5097
5098
5099
5100
5101
5102extern int stime (__const time_t *__when) throw ();
5103# 312 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5104extern time_t timegm (struct tm *__tp) throw ();
5105
5106
5107extern time_t timelocal (struct tm *__tp) throw ();
5108
5109
5110extern int dysize (int __year) throw () __attribute__ ((__const__));
5111# 327 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5112extern int nanosleep (__const struct timespec *__requested_time,
5113 struct timespec *__remaining);
5114
5115
5116
5117extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
5118
5119
5120extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
5121
5122
5123extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
5124 throw ();
5125
5126
5127
5128
5129
5130
5131extern int clock_nanosleep (clockid_t __clock_id, int __flags,
5132 __const struct timespec *__req,
5133 struct timespec *__rem);
5134
5135
5136extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
5137
5138
5139
5140
5141extern int timer_create (clockid_t __clock_id,
5142 struct sigevent *__restrict __evp,
5143 timer_t *__restrict __timerid) throw ();
5144
5145
5146extern int timer_delete (timer_t __timerid) throw ();
5147
5148
5149extern int timer_settime (timer_t __timerid, int __flags,
5150 __const struct itimerspec *__restrict __value,
5151 struct itimerspec *__restrict __ovalue) throw ();
5152
5153
5154extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
5155 throw ();
5156
5157
5158extern int timer_getoverrun (timer_t __timerid) throw ();
5159# 389 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5160extern int getdate_err;
5161# 398 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5162extern struct tm *getdate (__const char *__string);
5163# 412 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5164extern int getdate_r (__const char *__restrict __string,
5165 struct tm *__restrict __resbufp);
5166
5167
5168}
5169# 9 "/usr/include/time.h" 2 3 4
5170# 26 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
5171
5172
5173# 1 "/usr/include/signal.h" 1 3 4
5174
5175
5176
5177
5178
5179
5180
5181# 1 "/usr/include/gentoo-multilib/amd64/signal.h" 1 3 4
5182# 29 "/usr/include/gentoo-multilib/amd64/signal.h" 3 4
5183# 1 "/usr/include/features.h" 1 3 4
5184# 30 "/usr/include/gentoo-multilib/amd64/signal.h" 2 3 4
5185
5186extern "C" {
5187
5188# 1 "/usr/include/bits/sigset.h" 1 3 4
5189
5190
5191
5192
5193
5194
5195
5196# 1 "/usr/include/gentoo-multilib/amd64/bits/sigset.h" 1 3 4
5197# 9 "/usr/include/bits/sigset.h" 2 3 4
5198# 34 "/usr/include/gentoo-multilib/amd64/signal.h" 2 3 4
5199# 400 "/usr/include/gentoo-multilib/amd64/signal.h" 3 4
5200}
5201# 9 "/usr/include/signal.h" 2 3 4
5202# 29 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
5203# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
5204# 30 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
5205# 1 "/usr/include/bits/setjmp.h" 1 3 4
5206
5207
5208
5209
5210
5211
5212
5213# 1 "/usr/include/gentoo-multilib/amd64/bits/setjmp.h" 1 3 4
5214# 27 "/usr/include/gentoo-multilib/amd64/bits/setjmp.h" 3 4
5215# 1 "/usr/include/bits/wordsize.h" 1 3 4
5216
5217
5218
5219
5220
5221
5222
5223# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
5224# 9 "/usr/include/bits/wordsize.h" 2 3 4
5225# 28 "/usr/include/gentoo-multilib/amd64/bits/setjmp.h" 2 3 4
5226
5227
5228
5229
5230typedef long int __jmp_buf[8];
5231# 9 "/usr/include/bits/setjmp.h" 2 3 4
5232# 31 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
5233# 1 "/usr/include/bits/wordsize.h" 1 3 4
5234
5235
5236
5237
5238
5239
5240
5241# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
5242# 9 "/usr/include/bits/wordsize.h" 2 3 4
5243# 32 "/usr/include/gentoo-multilib/amd64/pthread.h" 2 3 4
5244
5245
5246
5247enum
5248{
5249 PTHREAD_CREATE_JOINABLE,
5250
5251 PTHREAD_CREATE_DETACHED
5252
5253};
5254
5255
5256
5257enum
5258{
5259 PTHREAD_MUTEX_TIMED_NP,
5260 PTHREAD_MUTEX_RECURSIVE_NP,
5261 PTHREAD_MUTEX_ERRORCHECK_NP,
5262 PTHREAD_MUTEX_ADAPTIVE_NP
5263
5264 ,
5265 PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
5266 PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
5267 PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
5268 PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
5269
5270
5271
5272 , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
5273
5274};
5275
5276
5277
5278
5279enum
5280{
5281 PTHREAD_MUTEX_STALLED_NP,
5282 PTHREAD_MUTEX_ROBUST_NP
5283};
5284
5285
5286
5287
5288
5289enum
5290{
5291 PTHREAD_PRIO_NONE,
5292 PTHREAD_PRIO_INHERIT,
5293 PTHREAD_PRIO_PROTECT
5294};
5295# 114 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5296enum
5297{
5298 PTHREAD_RWLOCK_PREFER_READER_NP,
5299 PTHREAD_RWLOCK_PREFER_WRITER_NP,
5300 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
5301 PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
5302};
5303# 144 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5304enum
5305{
5306 PTHREAD_INHERIT_SCHED,
5307
5308 PTHREAD_EXPLICIT_SCHED
5309
5310};
5311
5312
5313
5314enum
5315{
5316 PTHREAD_SCOPE_SYSTEM,
5317
5318 PTHREAD_SCOPE_PROCESS
5319
5320};
5321
5322
5323
5324enum
5325{
5326 PTHREAD_PROCESS_PRIVATE,
5327
5328 PTHREAD_PROCESS_SHARED
5329
5330};
5331# 179 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5332struct _pthread_cleanup_buffer
5333{
5334 void (*__routine) (void *);
5335 void *__arg;
5336 int __canceltype;
5337 struct _pthread_cleanup_buffer *__prev;
5338};
5339
5340
5341enum
5342{
5343 PTHREAD_CANCEL_ENABLE,
5344
5345 PTHREAD_CANCEL_DISABLE
5346
5347};
5348enum
5349{
5350 PTHREAD_CANCEL_DEFERRED,
5351
5352 PTHREAD_CANCEL_ASYNCHRONOUS
5353
5354};
5355# 217 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5356extern "C" {
5357
5358
5359
5360
5361extern int pthread_create (pthread_t *__restrict __newthread,
5362 __const pthread_attr_t *__restrict __attr,
5363 void *(*__start_routine) (void *),
5364 void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3)));
5365
5366
5367
5368
5369
5370extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
5371
5372
5373
5374
5375
5376
5377
5378extern int pthread_join (pthread_t __th, void **__thread_return);
5379
5380
5381
5382
5383extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();
5384
5385
5386
5387
5388
5389
5390
5391extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
5392 __const struct timespec *__abstime);
5393
5394
5395
5396
5397
5398
5399extern int pthread_detach (pthread_t __th) throw ();
5400
5401
5402
5403extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));
5404
5405
5406extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();
5407
5408
5409
5410
5411
5412
5413
5414extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));
5415
5416
5417extern int pthread_attr_destroy (pthread_attr_t *__attr)
5418 throw () __attribute__ ((__nonnull__ (1)));
5419
5420
5421extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
5422 int *__detachstate)
5423 throw () __attribute__ ((__nonnull__ (1, 2)));
5424
5425
5426extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
5427 int __detachstate)
5428 throw () __attribute__ ((__nonnull__ (1)));
5429
5430
5431
5432extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
5433 size_t *__guardsize)
5434 throw () __attribute__ ((__nonnull__ (1, 2)));
5435
5436
5437extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
5438 size_t __guardsize)
5439 throw () __attribute__ ((__nonnull__ (1)));
5440
5441
5442
5443extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
5444 __attr,
5445 struct sched_param *__restrict __param)
5446 throw () __attribute__ ((__nonnull__ (1, 2)));
5447
5448
5449extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
5450 __const struct sched_param *__restrict
5451 __param) throw () __attribute__ ((__nonnull__ (1, 2)));
5452
5453
5454extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
5455 __attr, int *__restrict __policy)
5456 throw () __attribute__ ((__nonnull__ (1, 2)));
5457
5458
5459extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
5460 throw () __attribute__ ((__nonnull__ (1)));
5461
5462
5463extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
5464 __attr, int *__restrict __inherit)
5465 throw () __attribute__ ((__nonnull__ (1, 2)));
5466
5467
5468extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
5469 int __inherit)
5470 throw () __attribute__ ((__nonnull__ (1)));
5471
5472
5473
5474extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
5475 int *__restrict __scope)
5476 throw () __attribute__ ((__nonnull__ (1, 2)));
5477
5478
5479extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
5480 throw () __attribute__ ((__nonnull__ (1)));
5481
5482
5483extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
5484 __attr, void **__restrict __stackaddr)
5485 throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
5486
5487
5488
5489
5490
5491extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
5492 void *__stackaddr)
5493 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
5494
5495
5496extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
5497 __attr, size_t *__restrict __stacksize)
5498 throw () __attribute__ ((__nonnull__ (1, 2)));
5499
5500
5501
5502
5503extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
5504 size_t __stacksize)
5505 throw () __attribute__ ((__nonnull__ (1)));
5506
5507
5508
5509extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
5510 void **__restrict __stackaddr,
5511 size_t *__restrict __stacksize)
5512 throw () __attribute__ ((__nonnull__ (1, 2, 3)));
5513
5514
5515
5516
5517extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
5518 size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));
5519
5520
5521
5522
5523
5524extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
5525 size_t __cpusetsize,
5526 __const cpu_set_t *__cpuset)
5527 throw () __attribute__ ((__nonnull__ (1, 3)));
5528
5529
5530
5531extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
5532 size_t __cpusetsize,
5533 cpu_set_t *__cpuset)
5534 throw () __attribute__ ((__nonnull__ (1, 3)));
5535
5536
5537
5538
5539
5540extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
5541 throw () __attribute__ ((__nonnull__ (2)));
5542
5543
5544
5545
5546
5547
5548
5549extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
5550 __const struct sched_param *__param)
5551 throw () __attribute__ ((__nonnull__ (3)));
5552
5553
5554extern int pthread_getschedparam (pthread_t __target_thread,
5555 int *__restrict __policy,
5556 struct sched_param *__restrict __param)
5557 throw () __attribute__ ((__nonnull__ (2, 3)));
5558
5559
5560extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
5561 throw ();
5562
5563
5564
5565
5566extern int pthread_getconcurrency (void) throw ();
5567
5568
5569extern int pthread_setconcurrency (int __level) throw ();
5570
5571
5572
5573
5574
5575
5576
5577extern int pthread_yield (void) throw ();
5578
5579
5580
5581
5582extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
5583 __const cpu_set_t *__cpuset)
5584 throw () __attribute__ ((__nonnull__ (3)));
5585
5586
5587extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
5588 cpu_set_t *__cpuset)
5589 throw () __attribute__ ((__nonnull__ (3)));
5590# 463 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5591extern int pthread_once (pthread_once_t *__once_control,
5592 void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
5593# 475 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5594extern int pthread_setcancelstate (int __state, int *__oldstate);
5595
5596
5597
5598extern int pthread_setcanceltype (int __type, int *__oldtype);
5599
5600
5601extern int pthread_cancel (pthread_t __th);
5602
5603
5604
5605
5606extern void pthread_testcancel (void);
5607
5608
5609
5610
5611typedef struct
5612{
5613 struct
5614 {
5615 __jmp_buf __cancel_jmp_buf;
5616 int __mask_was_saved;
5617 } __cancel_jmp_buf[1];
5618 void *__pad[4];
5619} __pthread_unwind_buf_t __attribute__ ((__aligned__));
5620# 509 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5621struct __pthread_cleanup_frame
5622{
5623 void (*__cancel_routine) (void *);
5624 void *__cancel_arg;
5625 int __do_it;
5626 int __cancel_type;
5627};
5628
5629
5630
5631
5632class __pthread_cleanup_class
5633{
5634 void (*__cancel_routine) (void *);
5635 void *__cancel_arg;
5636 int __do_it;
5637 int __cancel_type;
5638
5639 public:
5640 __pthread_cleanup_class (void (*__fct) (void *), void *__arg)
5641 : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { }
5642 ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); }
5643 void __setdoit (int __newval) { __do_it = __newval; }
5644 void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED,
5645 &__cancel_type); }
5646 void __restore () const { pthread_setcanceltype (__cancel_type, 0); }
5647};
5648# 709 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5649struct __jmp_buf_tag;
5650extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw ();
5651
5652
5653
5654
5655
5656extern int pthread_mutex_init (pthread_mutex_t *__mutex,
5657 __const pthread_mutexattr_t *__mutexattr)
5658 throw () __attribute__ ((__nonnull__ (1)));
5659
5660
5661extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
5662 throw () __attribute__ ((__nonnull__ (1)));
5663
5664
5665extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
5666 throw () __attribute__ ((__nonnull__ (1)));
5667
5668
5669extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
5670 throw () __attribute__ ((__nonnull__ (1)));
5671
5672
5673
5674extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
5675 __const struct timespec *__restrict
5676 __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
5677
5678
5679
5680extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
5681 throw () __attribute__ ((__nonnull__ (1)));
5682
5683
5684
5685
5686extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
5687 __restrict __mutex,
5688 int *__restrict __prioceiling)
5689 throw () __attribute__ ((__nonnull__ (1, 2)));
5690
5691
5692
5693extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
5694 int __prioceiling,
5695 int *__restrict __old_ceiling)
5696 throw () __attribute__ ((__nonnull__ (1, 3)));
5697
5698
5699
5700
5701
5702extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
5703 throw () __attribute__ ((__nonnull__ (1)));
5704
5705
5706
5707
5708
5709
5710
5711extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
5712 throw () __attribute__ ((__nonnull__ (1)));
5713
5714
5715extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
5716 throw () __attribute__ ((__nonnull__ (1)));
5717
5718
5719extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
5720 __restrict __attr,
5721 int *__restrict __pshared)
5722 throw () __attribute__ ((__nonnull__ (1, 2)));
5723
5724
5725extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
5726 int __pshared)
5727 throw () __attribute__ ((__nonnull__ (1)));
5728
5729
5730
5731extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
5732 __attr, int *__restrict __kind)
5733 throw () __attribute__ ((__nonnull__ (1, 2)));
5734
5735
5736
5737
5738extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
5739 throw () __attribute__ ((__nonnull__ (1)));
5740
5741
5742extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
5743 __restrict __attr,
5744 int *__restrict __protocol)
5745 throw () __attribute__ ((__nonnull__ (1, 2)));
5746
5747
5748
5749extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
5750 int __protocol)
5751 throw () __attribute__ ((__nonnull__ (1)));
5752
5753
5754extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
5755 __restrict __attr,
5756 int *__restrict __prioceiling)
5757 throw () __attribute__ ((__nonnull__ (1, 2)));
5758
5759
5760extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
5761 int __prioceiling)
5762 throw () __attribute__ ((__nonnull__ (1)));
5763
5764
5765
5766
5767extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
5768 int *__robustness)
5769 throw () __attribute__ ((__nonnull__ (1, 2)));
5770
5771
5772extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
5773 int __robustness)
5774 throw () __attribute__ ((__nonnull__ (1)));
5775# 843 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5776extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
5777 __const pthread_rwlockattr_t *__restrict
5778 __attr) throw () __attribute__ ((__nonnull__ (1)));
5779
5780
5781extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
5782 throw () __attribute__ ((__nonnull__ (1)));
5783
5784
5785extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
5786 throw () __attribute__ ((__nonnull__ (1)));
5787
5788
5789extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
5790 throw () __attribute__ ((__nonnull__ (1)));
5791
5792
5793
5794extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
5795 __const struct timespec *__restrict
5796 __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
5797
5798
5799
5800extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
5801 throw () __attribute__ ((__nonnull__ (1)));
5802
5803
5804extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
5805 throw () __attribute__ ((__nonnull__ (1)));
5806
5807
5808
5809extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
5810 __const struct timespec *__restrict
5811 __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
5812
5813
5814
5815extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
5816 throw () __attribute__ ((__nonnull__ (1)));
5817
5818
5819
5820
5821
5822extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
5823 throw () __attribute__ ((__nonnull__ (1)));
5824
5825
5826extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
5827 throw () __attribute__ ((__nonnull__ (1)));
5828
5829
5830extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
5831 __restrict __attr,
5832 int *__restrict __pshared)
5833 throw () __attribute__ ((__nonnull__ (1, 2)));
5834
5835
5836extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
5837 int __pshared)
5838 throw () __attribute__ ((__nonnull__ (1)));
5839
5840
5841extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
5842 __restrict __attr,
5843 int *__restrict __pref)
5844 throw () __attribute__ ((__nonnull__ (1, 2)));
5845
5846
5847extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
5848 int __pref) throw () __attribute__ ((__nonnull__ (1)));
5849
5850
5851
5852
5853
5854
5855
5856extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
5857 __const pthread_condattr_t *__restrict
5858 __cond_attr) throw () __attribute__ ((__nonnull__ (1)));
5859
5860
5861extern int pthread_cond_destroy (pthread_cond_t *__cond)
5862 throw () __attribute__ ((__nonnull__ (1)));
5863
5864
5865extern int pthread_cond_signal (pthread_cond_t *__cond)
5866 throw () __attribute__ ((__nonnull__ (1)));
5867
5868
5869extern int pthread_cond_broadcast (pthread_cond_t *__cond)
5870 throw () __attribute__ ((__nonnull__ (1)));
5871
5872
5873
5874
5875
5876
5877extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
5878 pthread_mutex_t *__restrict __mutex)
5879 __attribute__ ((__nonnull__ (1, 2)));
5880# 955 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5881extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
5882 pthread_mutex_t *__restrict __mutex,
5883 __const struct timespec *__restrict
5884 __abstime) __attribute__ ((__nonnull__ (1, 2, 3)));
5885
5886
5887
5888
5889extern int pthread_condattr_init (pthread_condattr_t *__attr)
5890 throw () __attribute__ ((__nonnull__ (1)));
5891
5892
5893extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
5894 throw () __attribute__ ((__nonnull__ (1)));
5895
5896
5897extern int pthread_condattr_getpshared (__const pthread_condattr_t *
5898 __restrict __attr,
5899 int *__restrict __pshared)
5900 throw () __attribute__ ((__nonnull__ (1, 2)));
5901
5902
5903extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
5904 int __pshared) throw () __attribute__ ((__nonnull__ (1)));
5905
5906
5907
5908extern int pthread_condattr_getclock (__const pthread_condattr_t *
5909 __restrict __attr,
5910 __clockid_t *__restrict __clock_id)
5911 throw () __attribute__ ((__nonnull__ (1, 2)));
5912
5913
5914extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
5915 __clockid_t __clock_id)
5916 throw () __attribute__ ((__nonnull__ (1)));
5917# 999 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5918extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
5919 throw () __attribute__ ((__nonnull__ (1)));
5920
5921
5922extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
5923 throw () __attribute__ ((__nonnull__ (1)));
5924
5925
5926extern int pthread_spin_lock (pthread_spinlock_t *__lock)
5927 throw () __attribute__ ((__nonnull__ (1)));
5928
5929
5930extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
5931 throw () __attribute__ ((__nonnull__ (1)));
5932
5933
5934extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
5935 throw () __attribute__ ((__nonnull__ (1)));
5936
5937
5938
5939
5940
5941
5942extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
5943 __const pthread_barrierattr_t *__restrict
5944 __attr, unsigned int __count)
5945 throw () __attribute__ ((__nonnull__ (1)));
5946
5947
5948extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
5949 throw () __attribute__ ((__nonnull__ (1)));
5950
5951
5952extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
5953 throw () __attribute__ ((__nonnull__ (1)));
5954
5955
5956
5957extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
5958 throw () __attribute__ ((__nonnull__ (1)));
5959
5960
5961extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
5962 throw () __attribute__ ((__nonnull__ (1)));
5963
5964
5965extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
5966 __restrict __attr,
5967 int *__restrict __pshared)
5968 throw () __attribute__ ((__nonnull__ (1, 2)));
5969
5970
5971extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
5972 int __pshared)
5973 throw () __attribute__ ((__nonnull__ (1)));
5974# 1066 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5975extern int pthread_key_create (pthread_key_t *__key,
5976 void (*__destr_function) (void *))
5977 throw () __attribute__ ((__nonnull__ (1)));
5978
5979
5980extern int pthread_key_delete (pthread_key_t __key) throw ();
5981
5982
5983extern void *pthread_getspecific (pthread_key_t __key) throw ();
5984
5985
5986extern int pthread_setspecific (pthread_key_t __key,
5987 __const void *__pointer) throw () ;
5988
5989
5990
5991
5992extern int pthread_getcpuclockid (pthread_t __thread_id,
5993 __clockid_t *__clock_id)
5994 throw () __attribute__ ((__nonnull__ (2)));
5995# 1100 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5996extern int pthread_atfork (void (*__prepare) (void),
5997 void (*__parent) (void),
5998 void (*__child) (void)) throw ();
5999
6000
6001
6002
6003extern __inline int
6004pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ()
6005{
6006 return __thread1 == __thread2;
6007}
6008
6009
6010}
6011# 9 "/usr/include/pthread.h" 2 3 4
6012# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 2 3
6013# 1 "/usr/include/unistd.h" 1 3 4
6014
6015
6016
6017
6018
6019
6020
6021# 1 "/usr/include/gentoo-multilib/amd64/unistd.h" 1 3 4
6022# 26 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6023# 1 "/usr/include/features.h" 1 3 4
6024# 27 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
6025
6026extern "C" {
6027# 173 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6028# 1 "/usr/include/bits/posix_opt.h" 1 3 4
6029
6030
6031
6032
6033
6034
6035
6036# 1 "/usr/include/gentoo-multilib/amd64/bits/posix_opt.h" 1 3 4
6037# 9 "/usr/include/bits/posix_opt.h" 2 3 4
6038# 174 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
6039
6040
6041
6042# 1 "/usr/include/bits/environments.h" 1 3 4
6043
6044
6045
6046
6047
6048
6049
6050# 1 "/usr/include/gentoo-multilib/amd64/bits/environments.h" 1 3 4
6051# 23 "/usr/include/gentoo-multilib/amd64/bits/environments.h" 3 4
6052# 1 "/usr/include/bits/wordsize.h" 1 3 4
6053
6054
6055
6056
6057
6058
6059
6060# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
6061# 9 "/usr/include/bits/wordsize.h" 2 3 4
6062# 24 "/usr/include/gentoo-multilib/amd64/bits/environments.h" 2 3 4
6063# 9 "/usr/include/bits/environments.h" 2 3 4
6064# 178 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
6065# 188 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6066# 1 "/usr/include/bits/types.h" 1 3 4
6067# 189 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
6068# 197 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6069# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
6070# 198 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
6071# 238 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6072typedef __intptr_t intptr_t;
6073
6074
6075
6076
6077
6078
6079typedef __socklen_t socklen_t;
6080# 258 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6081extern int access (__const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1)));
6082
6083
6084
6085
6086extern int euidaccess (__const char *__name, int __type)
6087 throw () __attribute__ ((__nonnull__ (1)));
6088
6089
6090extern int eaccess (__const char *__name, int __type)
6091 throw () __attribute__ ((__nonnull__ (1)));
6092
6093
6094
6095
6096
6097
6098extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
6099 throw () __attribute__ ((__nonnull__ (2))) ;
6100# 301 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6101extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw ();
6102# 312 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6103extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
6104 throw ();
6105
6106
6107
6108
6109
6110
6111extern int close (int __fd);
6112
6113
6114
6115
6116
6117
6118extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
6119
6120
6121
6122
6123
6124extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
6125# 343 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6126extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
6127 __off_t __offset) ;
6128
6129
6130
6131
6132
6133
6134extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
6135 __off_t __offset) ;
6136# 371 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6137extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
6138 __off64_t __offset) ;
6139
6140
6141extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
6142 __off64_t __offset) ;
6143
6144
6145
6146
6147
6148
6149
6150extern int pipe (int __pipedes[2]) throw () ;
6151# 393 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6152extern unsigned int alarm (unsigned int __seconds) throw ();
6153# 405 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6154extern unsigned int sleep (unsigned int __seconds);
6155
6156
6157
6158
6159
6160
6161extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
6162 throw ();
6163
6164
6165
6166
6167
6168
6169extern int usleep (__useconds_t __useconds);
6170# 429 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6171extern int pause (void);
6172
6173
6174
6175extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
6176 throw () __attribute__ ((__nonnull__ (1))) ;
6177
6178
6179
6180extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () ;
6181
6182
6183
6184
6185extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
6186 throw () __attribute__ ((__nonnull__ (1))) ;
6187
6188
6189
6190
6191
6192
6193extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
6194 __gid_t __group, int __flag)
6195 throw () __attribute__ ((__nonnull__ (2))) ;
6196
6197
6198
6199extern int chdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
6200
6201
6202
6203extern int fchdir (int __fd) throw () ;
6204# 471 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6205extern char *getcwd (char *__buf, size_t __size) throw () ;
6206
6207
6208
6209
6210
6211extern char *get_current_dir_name (void) throw ();
6212
6213
6214
6215
6216
6217
6218extern char *getwd (char *__buf)
6219 throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
6220
6221
6222
6223
6224extern int dup (int __fd) throw () ;
6225
6226
6227extern int dup2 (int __fd, int __fd2) throw ();
6228
6229
6230extern char **__environ;
6231
6232extern char **environ;
6233
6234
6235
6236
6237
6238extern int execve (__const char *__path, char *__const __argv[],
6239 char *__const __envp[]) throw () __attribute__ ((__nonnull__ (1)));
6240
6241
6242
6243
6244extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
6245 throw ();
6246
6247
6248
6249
6250extern int execv (__const char *__path, char *__const __argv[])
6251 throw () __attribute__ ((__nonnull__ (1)));
6252
6253
6254
6255extern int execle (__const char *__path, __const char *__arg, ...)
6256 throw () __attribute__ ((__nonnull__ (1)));
6257
6258
6259
6260extern int execl (__const char *__path, __const char *__arg, ...)
6261 throw () __attribute__ ((__nonnull__ (1)));
6262
6263
6264
6265extern int execvp (__const char *__file, char *__const __argv[])
6266 throw () __attribute__ ((__nonnull__ (1)));
6267
6268
6269
6270
6271extern int execlp (__const char *__file, __const char *__arg, ...)
6272 throw () __attribute__ ((__nonnull__ (1)));
6273
6274
6275
6276
6277extern int nice (int __inc) throw () ;
6278
6279
6280
6281
6282extern void _exit (int __status) __attribute__ ((__noreturn__));
6283
6284
6285
6286
6287
6288# 1 "/usr/include/bits/confname.h" 1 3 4
6289
6290
6291
6292
6293
6294
6295
6296# 1 "/usr/include/gentoo-multilib/amd64/bits/confname.h" 1 3 4
6297# 26 "/usr/include/gentoo-multilib/amd64/bits/confname.h" 3 4
6298enum
6299 {
6300 _PC_LINK_MAX,
6301
6302 _PC_MAX_CANON,
6303
6304 _PC_MAX_INPUT,
6305
6306 _PC_NAME_MAX,
6307
6308 _PC_PATH_MAX,
6309
6310 _PC_PIPE_BUF,
6311
6312 _PC_CHOWN_RESTRICTED,
6313
6314 _PC_NO_TRUNC,
6315
6316 _PC_VDISABLE,
6317
6318 _PC_SYNC_IO,
6319
6320 _PC_ASYNC_IO,
6321
6322 _PC_PRIO_IO,
6323
6324 _PC_SOCK_MAXBUF,
6325
6326 _PC_FILESIZEBITS,
6327
6328 _PC_REC_INCR_XFER_SIZE,
6329
6330 _PC_REC_MAX_XFER_SIZE,
6331
6332 _PC_REC_MIN_XFER_SIZE,
6333
6334 _PC_REC_XFER_ALIGN,
6335
6336 _PC_ALLOC_SIZE_MIN,
6337
6338 _PC_SYMLINK_MAX,
6339
6340 _PC_2_SYMLINKS
6341
6342 };
6343
6344
6345enum
6346 {
6347 _SC_ARG_MAX,
6348
6349 _SC_CHILD_MAX,
6350
6351 _SC_CLK_TCK,
6352
6353 _SC_NGROUPS_MAX,
6354
6355 _SC_OPEN_MAX,
6356
6357 _SC_STREAM_MAX,
6358
6359 _SC_TZNAME_MAX,
6360
6361 _SC_JOB_CONTROL,
6362
6363 _SC_SAVED_IDS,
6364
6365 _SC_REALTIME_SIGNALS,
6366
6367 _SC_PRIORITY_SCHEDULING,
6368
6369 _SC_TIMERS,
6370
6371 _SC_ASYNCHRONOUS_IO,
6372
6373 _SC_PRIORITIZED_IO,
6374
6375 _SC_SYNCHRONIZED_IO,
6376
6377 _SC_FSYNC,
6378
6379 _SC_MAPPED_FILES,
6380
6381 _SC_MEMLOCK,
6382
6383 _SC_MEMLOCK_RANGE,
6384
6385 _SC_MEMORY_PROTECTION,
6386
6387 _SC_MESSAGE_PASSING,
6388
6389 _SC_SEMAPHORES,
6390
6391 _SC_SHARED_MEMORY_OBJECTS,
6392
6393 _SC_AIO_LISTIO_MAX,
6394
6395 _SC_AIO_MAX,
6396
6397 _SC_AIO_PRIO_DELTA_MAX,
6398
6399 _SC_DELAYTIMER_MAX,
6400
6401 _SC_MQ_OPEN_MAX,
6402
6403 _SC_MQ_PRIO_MAX,
6404
6405 _SC_VERSION,
6406
6407 _SC_PAGESIZE,
6408
6409
6410 _SC_RTSIG_MAX,
6411
6412 _SC_SEM_NSEMS_MAX,
6413
6414 _SC_SEM_VALUE_MAX,
6415
6416 _SC_SIGQUEUE_MAX,
6417
6418 _SC_TIMER_MAX,
6419
6420
6421
6422
6423 _SC_BC_BASE_MAX,
6424
6425 _SC_BC_DIM_MAX,
6426
6427 _SC_BC_SCALE_MAX,
6428
6429 _SC_BC_STRING_MAX,
6430
6431 _SC_COLL_WEIGHTS_MAX,
6432
6433 _SC_EQUIV_CLASS_MAX,
6434
6435 _SC_EXPR_NEST_MAX,
6436
6437 _SC_LINE_MAX,
6438
6439 _SC_RE_DUP_MAX,
6440
6441 _SC_CHARCLASS_NAME_MAX,
6442
6443
6444 _SC_2_VERSION,
6445
6446 _SC_2_C_BIND,
6447
6448 _SC_2_C_DEV,
6449
6450 _SC_2_FORT_DEV,
6451
6452 _SC_2_FORT_RUN,
6453
6454 _SC_2_SW_DEV,
6455
6456 _SC_2_LOCALEDEF,
6457
6458
6459 _SC_PII,
6460
6461 _SC_PII_XTI,
6462
6463 _SC_PII_SOCKET,
6464
6465 _SC_PII_INTERNET,
6466
6467 _SC_PII_OSI,
6468
6469 _SC_POLL,
6470
6471 _SC_SELECT,
6472
6473 _SC_UIO_MAXIOV,
6474
6475 _SC_IOV_MAX = _SC_UIO_MAXIOV,
6476
6477 _SC_PII_INTERNET_STREAM,
6478
6479 _SC_PII_INTERNET_DGRAM,
6480
6481 _SC_PII_OSI_COTS,
6482
6483 _SC_PII_OSI_CLTS,
6484
6485 _SC_PII_OSI_M,
6486
6487 _SC_T_IOV_MAX,
6488
6489
6490
6491 _SC_THREADS,
6492
6493 _SC_THREAD_SAFE_FUNCTIONS,
6494
6495 _SC_GETGR_R_SIZE_MAX,
6496
6497 _SC_GETPW_R_SIZE_MAX,
6498
6499 _SC_LOGIN_NAME_MAX,
6500
6501 _SC_TTY_NAME_MAX,
6502
6503 _SC_THREAD_DESTRUCTOR_ITERATIONS,
6504
6505 _SC_THREAD_KEYS_MAX,
6506
6507 _SC_THREAD_STACK_MIN,
6508
6509 _SC_THREAD_THREADS_MAX,
6510
6511 _SC_THREAD_ATTR_STACKADDR,
6512
6513 _SC_THREAD_ATTR_STACKSIZE,
6514
6515 _SC_THREAD_PRIORITY_SCHEDULING,
6516
6517 _SC_THREAD_PRIO_INHERIT,
6518
6519 _SC_THREAD_PRIO_PROTECT,
6520
6521 _SC_THREAD_PROCESS_SHARED,
6522
6523
6524 _SC_NPROCESSORS_CONF,
6525
6526 _SC_NPROCESSORS_ONLN,
6527
6528 _SC_PHYS_PAGES,
6529
6530 _SC_AVPHYS_PAGES,
6531
6532 _SC_ATEXIT_MAX,
6533
6534 _SC_PASS_MAX,
6535
6536
6537 _SC_XOPEN_VERSION,
6538
6539 _SC_XOPEN_XCU_VERSION,
6540
6541 _SC_XOPEN_UNIX,
6542
6543 _SC_XOPEN_CRYPT,
6544
6545 _SC_XOPEN_ENH_I18N,
6546
6547 _SC_XOPEN_SHM,
6548
6549
6550 _SC_2_CHAR_TERM,
6551
6552 _SC_2_C_VERSION,
6553
6554 _SC_2_UPE,
6555
6556
6557 _SC_XOPEN_XPG2,
6558
6559 _SC_XOPEN_XPG3,
6560
6561 _SC_XOPEN_XPG4,
6562
6563
6564 _SC_CHAR_BIT,
6565
6566 _SC_CHAR_MAX,
6567
6568 _SC_CHAR_MIN,
6569
6570 _SC_INT_MAX,
6571
6572 _SC_INT_MIN,
6573
6574 _SC_LONG_BIT,
6575
6576 _SC_WORD_BIT,
6577
6578 _SC_MB_LEN_MAX,
6579
6580 _SC_NZERO,
6581
6582 _SC_SSIZE_MAX,
6583
6584 _SC_SCHAR_MAX,
6585
6586 _SC_SCHAR_MIN,
6587
6588 _SC_SHRT_MAX,
6589
6590 _SC_SHRT_MIN,
6591
6592 _SC_UCHAR_MAX,
6593
6594 _SC_UINT_MAX,
6595
6596 _SC_ULONG_MAX,
6597
6598 _SC_USHRT_MAX,
6599
6600
6601 _SC_NL_ARGMAX,
6602
6603 _SC_NL_LANGMAX,
6604
6605 _SC_NL_MSGMAX,
6606
6607 _SC_NL_NMAX,
6608
6609 _SC_NL_SETMAX,
6610
6611 _SC_NL_TEXTMAX,
6612
6613
6614 _SC_XBS5_ILP32_OFF32,
6615
6616 _SC_XBS5_ILP32_OFFBIG,
6617
6618 _SC_XBS5_LP64_OFF64,
6619
6620 _SC_XBS5_LPBIG_OFFBIG,
6621
6622
6623 _SC_XOPEN_LEGACY,
6624
6625 _SC_XOPEN_REALTIME,
6626
6627 _SC_XOPEN_REALTIME_THREADS,
6628
6629
6630 _SC_ADVISORY_INFO,
6631
6632 _SC_BARRIERS,
6633
6634 _SC_BASE,
6635
6636 _SC_C_LANG_SUPPORT,
6637
6638 _SC_C_LANG_SUPPORT_R,
6639
6640 _SC_CLOCK_SELECTION,
6641
6642 _SC_CPUTIME,
6643
6644 _SC_THREAD_CPUTIME,
6645
6646 _SC_DEVICE_IO,
6647
6648 _SC_DEVICE_SPECIFIC,
6649
6650 _SC_DEVICE_SPECIFIC_R,
6651
6652 _SC_FD_MGMT,
6653
6654 _SC_FIFO,
6655
6656 _SC_PIPE,
6657
6658 _SC_FILE_ATTRIBUTES,
6659
6660 _SC_FILE_LOCKING,
6661
6662 _SC_FILE_SYSTEM,
6663
6664 _SC_MONOTONIC_CLOCK,
6665
6666 _SC_MULTI_PROCESS,
6667
6668 _SC_SINGLE_PROCESS,
6669
6670 _SC_NETWORKING,
6671
6672 _SC_READER_WRITER_LOCKS,
6673
6674 _SC_SPIN_LOCKS,
6675
6676 _SC_REGEXP,
6677
6678 _SC_REGEX_VERSION,
6679
6680 _SC_SHELL,
6681
6682 _SC_SIGNALS,
6683
6684 _SC_SPAWN,
6685
6686 _SC_SPORADIC_SERVER,
6687
6688 _SC_THREAD_SPORADIC_SERVER,
6689
6690 _SC_SYSTEM_DATABASE,
6691
6692 _SC_SYSTEM_DATABASE_R,
6693
6694 _SC_TIMEOUTS,
6695
6696 _SC_TYPED_MEMORY_OBJECTS,
6697
6698 _SC_USER_GROUPS,
6699
6700 _SC_USER_GROUPS_R,
6701
6702 _SC_2_PBS,
6703
6704 _SC_2_PBS_ACCOUNTING,
6705
6706 _SC_2_PBS_LOCATE,
6707
6708 _SC_2_PBS_MESSAGE,
6709
6710 _SC_2_PBS_TRACK,
6711
6712 _SC_SYMLOOP_MAX,
6713
6714 _SC_STREAMS,
6715
6716 _SC_2_PBS_CHECKPOINT,
6717
6718
6719 _SC_V6_ILP32_OFF32,
6720
6721 _SC_V6_ILP32_OFFBIG,
6722
6723 _SC_V6_LP64_OFF64,
6724
6725 _SC_V6_LPBIG_OFFBIG,
6726
6727
6728 _SC_HOST_NAME_MAX,
6729
6730 _SC_TRACE,
6731
6732 _SC_TRACE_EVENT_FILTER,
6733
6734 _SC_TRACE_INHERIT,
6735
6736 _SC_TRACE_LOG,
6737
6738
6739 _SC_LEVEL1_ICACHE_SIZE,
6740
6741 _SC_LEVEL1_ICACHE_ASSOC,
6742
6743 _SC_LEVEL1_ICACHE_LINESIZE,
6744
6745 _SC_LEVEL1_DCACHE_SIZE,
6746
6747 _SC_LEVEL1_DCACHE_ASSOC,
6748
6749 _SC_LEVEL1_DCACHE_LINESIZE,
6750
6751 _SC_LEVEL2_CACHE_SIZE,
6752
6753 _SC_LEVEL2_CACHE_ASSOC,
6754
6755 _SC_LEVEL2_CACHE_LINESIZE,
6756
6757 _SC_LEVEL3_CACHE_SIZE,
6758
6759 _SC_LEVEL3_CACHE_ASSOC,
6760
6761 _SC_LEVEL3_CACHE_LINESIZE,
6762
6763 _SC_LEVEL4_CACHE_SIZE,
6764
6765 _SC_LEVEL4_CACHE_ASSOC,
6766
6767 _SC_LEVEL4_CACHE_LINESIZE,
6768
6769
6770
6771 _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
6772
6773 _SC_RAW_SOCKETS
6774
6775 };
6776
6777
6778enum
6779 {
6780 _CS_PATH,
6781
6782
6783 _CS_V6_WIDTH_RESTRICTED_ENVS,
6784
6785
6786 _CS_GNU_LIBC_VERSION,
6787
6788 _CS_GNU_LIBPTHREAD_VERSION,
6789
6790
6791 _CS_LFS_CFLAGS = 1000,
6792
6793 _CS_LFS_LDFLAGS,
6794
6795 _CS_LFS_LIBS,
6796
6797 _CS_LFS_LINTFLAGS,
6798
6799 _CS_LFS64_CFLAGS,
6800
6801 _CS_LFS64_LDFLAGS,
6802
6803 _CS_LFS64_LIBS,
6804
6805 _CS_LFS64_LINTFLAGS,
6806
6807
6808 _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
6809
6810 _CS_XBS5_ILP32_OFF32_LDFLAGS,
6811
6812 _CS_XBS5_ILP32_OFF32_LIBS,
6813
6814 _CS_XBS5_ILP32_OFF32_LINTFLAGS,
6815
6816 _CS_XBS5_ILP32_OFFBIG_CFLAGS,
6817
6818 _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
6819
6820 _CS_XBS5_ILP32_OFFBIG_LIBS,
6821
6822 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
6823
6824 _CS_XBS5_LP64_OFF64_CFLAGS,
6825
6826 _CS_XBS5_LP64_OFF64_LDFLAGS,
6827
6828 _CS_XBS5_LP64_OFF64_LIBS,
6829
6830 _CS_XBS5_LP64_OFF64_LINTFLAGS,
6831
6832 _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
6833
6834 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
6835
6836 _CS_XBS5_LPBIG_OFFBIG_LIBS,
6837
6838 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
6839
6840
6841 _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
6842
6843 _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
6844
6845 _CS_POSIX_V6_ILP32_OFF32_LIBS,
6846
6847 _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
6848
6849 _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
6850
6851 _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
6852
6853 _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
6854
6855 _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
6856
6857 _CS_POSIX_V6_LP64_OFF64_CFLAGS,
6858
6859 _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
6860
6861 _CS_POSIX_V6_LP64_OFF64_LIBS,
6862
6863 _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
6864
6865 _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
6866
6867 _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
6868
6869 _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
6870
6871 _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
6872
6873 };
6874# 9 "/usr/include/bits/confname.h" 2 3 4
6875# 555 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
6876
6877
6878extern long int pathconf (__const char *__path, int __name)
6879 throw () __attribute__ ((__nonnull__ (1)));
6880
6881
6882extern long int fpathconf (int __fd, int __name) throw ();
6883
6884
6885extern long int sysconf (int __name) throw ();
6886
6887
6888
6889extern size_t confstr (int __name, char *__buf, size_t __len) throw ();
6890
6891
6892
6893
6894extern __pid_t getpid (void) throw ();
6895
6896
6897extern __pid_t getppid (void) throw ();
6898
6899
6900
6901
6902extern __pid_t getpgrp (void) throw ();
6903# 591 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6904extern __pid_t __getpgid (__pid_t __pid) throw ();
6905
6906extern __pid_t getpgid (__pid_t __pid) throw ();
6907
6908
6909
6910
6911
6912
6913extern int setpgid (__pid_t __pid, __pid_t __pgid) throw ();
6914# 617 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6915extern int setpgrp (void) throw ();
6916# 634 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6917extern __pid_t setsid (void) throw ();
6918
6919
6920
6921extern __pid_t getsid (__pid_t __pid) throw ();
6922
6923
6924
6925extern __uid_t getuid (void) throw ();
6926
6927
6928extern __uid_t geteuid (void) throw ();
6929
6930
6931extern __gid_t getgid (void) throw ();
6932
6933
6934extern __gid_t getegid (void) throw ();
6935
6936
6937
6938
6939extern int getgroups (int __size, __gid_t __list[]) throw () ;
6940
6941
6942
6943extern int group_member (__gid_t __gid) throw ();
6944
6945
6946
6947
6948
6949
6950extern int setuid (__uid_t __uid) throw ();
6951
6952
6953
6954
6955extern int setreuid (__uid_t __ruid, __uid_t __euid) throw ();
6956
6957
6958
6959
6960extern int seteuid (__uid_t __uid) throw ();
6961
6962
6963
6964
6965
6966
6967extern int setgid (__gid_t __gid) throw ();
6968
6969
6970
6971
6972extern int setregid (__gid_t __rgid, __gid_t __egid) throw ();
6973
6974
6975
6976
6977extern int setegid (__gid_t __gid) throw ();
6978
6979
6980
6981
6982
6983extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
6984 throw ();
6985
6986
6987
6988extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
6989 throw ();
6990
6991
6992
6993extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
6994 throw ();
6995
6996
6997
6998extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
6999 throw ();
7000
7001
7002
7003
7004
7005
7006extern __pid_t fork (void) throw ();
7007
7008
7009
7010
7011
7012
7013extern __pid_t vfork (void) throw ();
7014
7015
7016
7017
7018
7019extern char *ttyname (int __fd) throw ();
7020
7021
7022
7023extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
7024 throw () __attribute__ ((__nonnull__ (2))) ;
7025
7026
7027
7028extern int isatty (int __fd) throw ();
7029
7030
7031
7032
7033
7034extern int ttyslot (void) throw ();
7035
7036
7037
7038
7039extern int link (__const char *__from, __const char *__to)
7040 throw () __attribute__ ((__nonnull__ (1, 2))) ;
7041
7042
7043
7044
7045extern int linkat (int __fromfd, __const char *__from, int __tofd,
7046 __const char *__to, int __flags)
7047 throw () __attribute__ ((__nonnull__ (2, 4))) ;
7048
7049
7050
7051
7052extern int symlink (__const char *__from, __const char *__to)
7053 throw () __attribute__ ((__nonnull__ (1, 2))) ;
7054
7055
7056
7057
7058extern ssize_t readlink (__const char *__restrict __path,
7059 char *__restrict __buf, size_t __len)
7060 throw () __attribute__ ((__nonnull__ (1, 2))) ;
7061
7062
7063
7064
7065extern int symlinkat (__const char *__from, int __tofd,
7066 __const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) ;
7067
7068
7069extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
7070 char *__restrict __buf, size_t __len)
7071 throw () __attribute__ ((__nonnull__ (2, 3))) ;
7072
7073
7074
7075extern int unlink (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
7076
7077
7078
7079extern int unlinkat (int __fd, __const char *__name, int __flag)
7080 throw () __attribute__ ((__nonnull__ (2)));
7081
7082
7083
7084extern int rmdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1)));
7085
7086
7087
7088extern __pid_t tcgetpgrp (int __fd) throw ();
7089
7090
7091extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw ();
7092
7093
7094
7095
7096
7097
7098extern char *getlogin (void);
7099
7100
7101
7102
7103
7104
7105
7106extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
7107
7108
7109
7110
7111extern int setlogin (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
7112# 837 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7113# 1 "/usr/include/getopt.h" 1 3 4
7114
7115
7116
7117
7118
7119
7120
7121# 1 "/usr/include/gentoo-multilib/amd64/getopt.h" 1 3 4
7122# 50 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7123extern "C" {
7124# 59 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7125extern char *optarg;
7126# 73 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7127extern int optind;
7128
7129
7130
7131
7132extern int opterr;
7133
7134
7135
7136extern int optopt;
7137# 152 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7138extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
7139 throw ();
7140# 171 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7141}
7142# 9 "/usr/include/getopt.h" 2 3 4
7143# 838 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
7144
7145
7146
7147
7148
7149
7150
7151extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
7152
7153
7154
7155
7156
7157
7158extern int sethostname (__const char *__name, size_t __len)
7159 throw () __attribute__ ((__nonnull__ (1))) ;
7160
7161
7162
7163extern int sethostid (long int __id) throw () ;
7164
7165
7166
7167
7168
7169extern int getdomainname (char *__name, size_t __len)
7170 throw () __attribute__ ((__nonnull__ (1))) ;
7171extern int setdomainname (__const char *__name, size_t __len)
7172 throw () __attribute__ ((__nonnull__ (1))) ;
7173
7174
7175
7176
7177
7178extern int vhangup (void) throw ();
7179
7180
7181extern int revoke (__const char *__file) throw () __attribute__ ((__nonnull__ (1))) ;
7182
7183
7184
7185
7186
7187
7188
7189extern int profil (unsigned short int *__sample_buffer, size_t __size,
7190 size_t __offset, unsigned int __scale)
7191 throw () __attribute__ ((__nonnull__ (1)));
7192
7193
7194
7195
7196
7197extern int acct (__const char *__name) throw ();
7198
7199
7200
7201extern char *getusershell (void) throw ();
7202extern void endusershell (void) throw ();
7203extern void setusershell (void) throw ();
7204
7205
7206
7207
7208
7209extern int daemon (int __nochdir, int __noclose) throw () ;
7210
7211
7212
7213
7214
7215
7216extern int chroot (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
7217
7218
7219
7220extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
7221# 923 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7222extern int fsync (int __fd);
7223
7224
7225
7226
7227
7228
7229extern long int gethostid (void);
7230
7231
7232extern void sync (void) throw ();
7233
7234
7235
7236
7237extern int getpagesize (void) throw () __attribute__ ((__const__));
7238
7239
7240
7241
7242extern int getdtablesize (void) throw ();
7243
7244
7245
7246
7247extern int truncate (__const char *__file, __off_t __length)
7248 throw () __attribute__ ((__nonnull__ (1))) ;
7249# 960 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7250extern int truncate64 (__const char *__file, __off64_t __length)
7251 throw () __attribute__ ((__nonnull__ (1))) ;
7252# 970 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7253extern int ftruncate (int __fd, __off_t __length) throw () ;
7254# 980 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7255extern int ftruncate64 (int __fd, __off64_t __length) throw () ;
7256# 990 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7257extern int brk (void *__addr) throw () ;
7258
7259
7260
7261
7262
7263extern void *sbrk (intptr_t __delta) throw ();
7264# 1011 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7265extern long int syscall (long int __sysno, ...) throw ();
7266# 1034 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7267extern int lockf (int __fd, int __cmd, __off_t __len) ;
7268# 1044 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7269extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
7270# 1065 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7271extern int fdatasync (int __fildes);
7272
7273
7274
7275
7276
7277
7278
7279extern char *crypt (__const char *__key, __const char *__salt)
7280 throw () __attribute__ ((__nonnull__ (1, 2)));
7281
7282
7283
7284extern void encrypt (char *__block, int __edflag) throw () __attribute__ ((__nonnull__ (1)));
7285
7286
7287
7288
7289
7290
7291extern void swab (__const void *__restrict __from, void *__restrict __to,
7292 ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
7293
7294
7295
7296
7297
7298
7299
7300extern char *ctermid (char *__s) throw ();
7301# 1103 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7302}
7303# 9 "/usr/include/unistd.h" 2 3 4
7304# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 2 3
7305
7306typedef pthread_key_t __gthread_key_t;
7307typedef pthread_once_t __gthread_once_t;
7308typedef pthread_mutex_t __gthread_mutex_t;
7309typedef pthread_mutex_t __gthread_recursive_mutex_t;
7310# 92 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
7311static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
7312static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
7313static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
7314static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
7315static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
7316static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
7317static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
7318static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
7319static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
7320
7321
7322static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
7323static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
7324static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
7325static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
7326static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy")));
7327# 202 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
7328static inline int
7329__gthread_active_p (void)
7330{
7331 static void *const __gthread_active_ptr
7332 = __extension__ (void *) &__gthrw_pthread_cancel;
7333 return __gthread_active_ptr != 0;
7334}
7335# 571 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
7336static inline int
7337__gthread_once (__gthread_once_t *once, void (*func) (void))
7338{
7339 if (__gthread_active_p ())
7340 return __gthrw_pthread_once (once, func);
7341 else
7342 return -1;
7343}
7344
7345static inline int
7346__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
7347{
7348 return __gthrw_pthread_key_create (key, dtor);
7349}
7350
7351static inline int
7352__gthread_key_delete (__gthread_key_t key)
7353{
7354 return __gthrw_pthread_key_delete (key);
7355}
7356
7357static inline void *
7358__gthread_getspecific (__gthread_key_t key)
7359{
7360 return __gthrw_pthread_getspecific (key);
7361}
7362
7363static inline int
7364__gthread_setspecific (__gthread_key_t key, const void *ptr)
7365{
7366 return __gthrw_pthread_setspecific (key, ptr);
7367}
7368
7369static inline int
7370__gthread_mutex_lock (__gthread_mutex_t *mutex)
7371{
7372 if (__gthread_active_p ())
7373 return __gthrw_pthread_mutex_lock (mutex);
7374 else
7375 return 0;
7376}
7377
7378static inline int
7379__gthread_mutex_trylock (__gthread_mutex_t *mutex)
7380{
7381 if (__gthread_active_p ())
7382 return __gthrw_pthread_mutex_trylock (mutex);
7383 else
7384 return 0;
7385}
7386
7387static inline int
7388__gthread_mutex_unlock (__gthread_mutex_t *mutex)
7389{
7390 if (__gthread_active_p ())
7391 return __gthrw_pthread_mutex_unlock (mutex);
7392 else
7393 return 0;
7394}
7395# 653 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
7396static inline int
7397__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
7398{
7399 return __gthread_mutex_lock (mutex);
7400}
7401
7402static inline int
7403__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex)
7404{
7405 return __gthread_mutex_trylock (mutex);
7406}
7407
7408static inline int
7409__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex)
7410{
7411 return __gthread_mutex_unlock (mutex);
7412}
7413# 115 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h" 2 3
7414
7415
7416
7417
7418
7419
7420
7421#pragma GCC visibility pop
7422# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++io.h" 2 3
7423
7424namespace std __attribute__ ((__visibility__ ("default"))) {
7425
7426 typedef __gthread_mutex_t __c_lock;
7427
7428
7429 typedef FILE __c_file;
7430
7431}
7432# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
7433# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cctype" 1 3
7434# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cctype" 3
7435
7436# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cctype" 3
7437
7438
7439# 1 "/usr/include/ctype.h" 1 3 4
7440
7441
7442
7443
7444
7445
7446
7447# 1 "/usr/include/gentoo-multilib/amd64/ctype.h" 1 3 4
7448# 27 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7449# 1 "/usr/include/features.h" 1 3 4
7450# 28 "/usr/include/gentoo-multilib/amd64/ctype.h" 2 3 4
7451# 1 "/usr/include/bits/types.h" 1 3 4
7452# 29 "/usr/include/gentoo-multilib/amd64/ctype.h" 2 3 4
7453
7454extern "C" {
7455# 41 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7456# 1 "/usr/include/endian.h" 1 3 4
7457# 42 "/usr/include/gentoo-multilib/amd64/ctype.h" 2 3 4
7458
7459
7460
7461
7462
7463
7464enum
7465{
7466 _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
7467 _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
7468 _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
7469 _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
7470 _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
7471 _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
7472 _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
7473 _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
7474 _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
7475 _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
7476 _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
7477 _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
7478};
7479# 81 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7480extern __const unsigned short int **__ctype_b_loc (void)
7481 __attribute__ ((__const));
7482extern __const __int32_t **__ctype_tolower_loc (void)
7483 __attribute__ ((__const));
7484extern __const __int32_t **__ctype_toupper_loc (void)
7485 __attribute__ ((__const));
7486# 96 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7487
7488
7489
7490
7491
7492
7493extern int isalnum (int) throw ();
7494extern int isalpha (int) throw ();
7495extern int iscntrl (int) throw ();
7496extern int isdigit (int) throw ();
7497extern int islower (int) throw ();
7498extern int isgraph (int) throw ();
7499extern int isprint (int) throw ();
7500extern int ispunct (int) throw ();
7501extern int isspace (int) throw ();
7502extern int isupper (int) throw ();
7503extern int isxdigit (int) throw ();
7504
7505
7506
7507extern int tolower (int __c) throw ();
7508
7509
7510extern int toupper (int __c) throw ();
7511
7512
7513
7514
7515
7516
7517
7518
7519extern int isblank (int) throw ();
7520
7521
7522
7523
7524
7525
7526extern int isctype (int __c, int __mask) throw ();
7527
7528
7529
7530
7531
7532
7533extern int isascii (int __c) throw ();
7534
7535
7536
7537extern int toascii (int __c) throw ();
7538
7539
7540
7541extern int _toupper (int) throw ();
7542extern int _tolower (int) throw ();
7543# 233 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7544# 1 "/usr/include/xlocale.h" 1 3 4
7545# 234 "/usr/include/gentoo-multilib/amd64/ctype.h" 2 3 4
7546# 247 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7547extern int isalnum_l (int, __locale_t) throw ();
7548extern int isalpha_l (int, __locale_t) throw ();
7549extern int iscntrl_l (int, __locale_t) throw ();
7550extern int isdigit_l (int, __locale_t) throw ();
7551extern int islower_l (int, __locale_t) throw ();
7552extern int isgraph_l (int, __locale_t) throw ();
7553extern int isprint_l (int, __locale_t) throw ();
7554extern int ispunct_l (int, __locale_t) throw ();
7555extern int isspace_l (int, __locale_t) throw ();
7556extern int isupper_l (int, __locale_t) throw ();
7557extern int isxdigit_l (int, __locale_t) throw ();
7558
7559extern int isblank_l (int, __locale_t) throw ();
7560
7561
7562
7563extern int __tolower_l (int __c, __locale_t __l) throw ();
7564extern int tolower_l (int __c, __locale_t __l) throw ();
7565
7566
7567extern int __toupper_l (int __c, __locale_t __l) throw ();
7568extern int toupper_l (int __c, __locale_t __l) throw ();
7569# 323 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
7570}
7571# 9 "/usr/include/ctype.h" 2 3 4
7572# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cctype" 2 3
7573# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cctype" 3
7574namespace std __attribute__ ((__visibility__ ("default"))) {
7575
7576 using ::isalnum;
7577 using ::isalpha;
7578 using ::iscntrl;
7579 using ::isdigit;
7580 using ::isgraph;
7581 using ::islower;
7582 using ::isprint;
7583 using ::ispunct;
7584 using ::isspace;
7585 using ::isupper;
7586 using ::isxdigit;
7587 using ::tolower;
7588 using ::toupper;
7589
7590}
7591# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
7592
7593# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 1 3
7594# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
7595
7596# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
7597
7598# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 1 3
7599# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 3
7600
7601# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 3
7602
7603
7604
7605# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ctime" 1 3
7606# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ctime" 3
7607
7608# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ctime" 3
7609
7610
7611# 1 "/usr/include/time.h" 1 3 4
7612# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ctime" 2 3
7613# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ctime" 3
7614namespace std __attribute__ ((__visibility__ ("default"))) {
7615
7616 using ::clock_t;
7617 using ::time_t;
7618 using ::tm;
7619
7620 using ::clock;
7621 using ::difftime;
7622 using ::mktime;
7623 using ::time;
7624 using ::asctime;
7625 using ::ctime;
7626 using ::gmtime;
7627 using ::localtime;
7628 using ::strftime;
7629
7630}
7631# 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 2 3
7632
7633
7634# 1 "/usr/include/wchar.h" 1 3 4
7635
7636
7637
7638
7639
7640
7641
7642# 1 "/usr/include/gentoo-multilib/amd64/wchar.h" 1 3 4
7643# 28 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7644# 1 "/usr/include/features.h" 1 3 4
7645# 29 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
7646# 37 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7647# 1 "/usr/include/stdio.h" 1 3 4
7648# 38 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
7649# 48 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7650# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
7651# 49 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
7652
7653# 1 "/usr/include/bits/wchar.h" 1 3 4
7654# 51 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
7655# 93 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7656
7657
7658typedef __mbstate_t mbstate_t;
7659
7660
7661
7662# 118 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7663extern "C" {
7664
7665
7666
7667
7668struct tm;
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678extern wchar_t *wcscpy (wchar_t *__restrict __dest,
7679 __const wchar_t *__restrict __src) throw ();
7680
7681extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
7682 __const wchar_t *__restrict __src, size_t __n)
7683 throw ();
7684
7685
7686extern wchar_t *wcscat (wchar_t *__restrict __dest,
7687 __const wchar_t *__restrict __src) throw ();
7688
7689extern wchar_t *wcsncat (wchar_t *__restrict __dest,
7690 __const wchar_t *__restrict __src, size_t __n)
7691 throw ();
7692
7693
7694extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
7695 throw () __attribute__ ((__pure__));
7696
7697extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
7698 throw () __attribute__ ((__pure__));
7699
7700
7701
7702
7703extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
7704
7705
7706extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
7707 size_t __n) throw ();
7708
7709
7710
7711# 1 "/usr/include/xlocale.h" 1 3 4
7712# 167 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
7713
7714extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
7715 __locale_t __loc) throw ();
7716
7717extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
7718 size_t __n, __locale_t __loc) throw ();
7719
7720
7721
7722
7723
7724extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
7725
7726
7727
7728extern size_t wcsxfrm (wchar_t *__restrict __s1,
7729 __const wchar_t *__restrict __s2, size_t __n) throw ();
7730
7731
7732
7733
7734
7735
7736
7737
7738extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
7739 __locale_t __loc) throw ();
7740
7741
7742
7743
7744extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
7745 size_t __n, __locale_t __loc) throw ();
7746
7747
7748extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__));
7749
7750
7751
7752
7753extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
7754 throw () __attribute__ ((__pure__));
7755
7756extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
7757 throw () __attribute__ ((__pure__));
7758
7759
7760
7761
7762
7763extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
7764 throw () __attribute__ ((__pure__));
7765
7766
7767
7768
7769
7770extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
7771 throw () __attribute__ ((__pure__));
7772
7773
7774extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
7775 throw () __attribute__ ((__pure__));
7776
7777extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
7778 throw () __attribute__ ((__pure__));
7779
7780extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
7781 throw () __attribute__ ((__pure__));
7782
7783
7784extern wchar_t *wcstok (wchar_t *__restrict __s,
7785 __const wchar_t *__restrict __delim,
7786 wchar_t **__restrict __ptr) throw ();
7787
7788
7789extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__));
7790
7791
7792
7793
7794extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
7795 throw () __attribute__ ((__pure__));
7796
7797
7798
7799
7800extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
7801 throw () __attribute__ ((__pure__));
7802
7803
7804
7805
7806
7807extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
7808 throw () __attribute__ ((__pure__));
7809
7810
7811extern int wmemcmp (__const wchar_t *__restrict __s1,
7812 __const wchar_t *__restrict __s2, size_t __n)
7813 throw () __attribute__ ((__pure__));
7814
7815
7816extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
7817 __const wchar_t *__restrict __s2, size_t __n) throw ();
7818
7819
7820
7821extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
7822 throw ();
7823
7824
7825extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();
7826
7827
7828
7829
7830
7831extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
7832 __const wchar_t *__restrict __s2, size_t __n)
7833 throw ();
7834
7835
7836
7837
7838
7839
7840extern wint_t btowc (int __c) throw ();
7841
7842
7843
7844extern int wctob (wint_t __c) throw ();
7845
7846
7847
7848extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__));
7849
7850
7851
7852extern size_t mbrtowc (wchar_t *__restrict __pwc,
7853 __const char *__restrict __s, size_t __n,
7854 mbstate_t *__p) throw ();
7855
7856
7857extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
7858 mbstate_t *__restrict __ps) throw ();
7859
7860
7861extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
7862 mbstate_t *__restrict __ps) throw ();
7863extern size_t mbrlen (__const char *__restrict __s, size_t __n,
7864 mbstate_t *__restrict __ps) throw ();
7865
7866# 341 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7867extern __inline size_t
7868mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ()
7869
7870{ return (__ps != __null
7871 ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); }
7872
7873
7874
7875
7876
7877extern size_t mbsrtowcs (wchar_t *__restrict __dst,
7878 __const char **__restrict __src, size_t __len,
7879 mbstate_t *__restrict __ps) throw ();
7880
7881
7882
7883extern size_t wcsrtombs (char *__restrict __dst,
7884 __const wchar_t **__restrict __src, size_t __len,
7885 mbstate_t *__restrict __ps) throw ();
7886
7887
7888
7889
7890
7891
7892extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
7893 __const char **__restrict __src, size_t __nmc,
7894 size_t __len, mbstate_t *__restrict __ps) throw ();
7895
7896
7897
7898extern size_t wcsnrtombs (char *__restrict __dst,
7899 __const wchar_t **__restrict __src,
7900 size_t __nwc, size_t __len,
7901 mbstate_t *__restrict __ps) throw ();
7902
7903
7904
7905
7906
7907
7908extern int wcwidth (wchar_t __c) throw ();
7909
7910
7911
7912extern int wcswidth (__const wchar_t *__s, size_t __n) throw ();
7913
7914
7915
7916
7917
7918
7919extern double wcstod (__const wchar_t *__restrict __nptr,
7920 wchar_t **__restrict __endptr) throw ();
7921
7922
7923
7924extern float wcstof (__const wchar_t *__restrict __nptr,
7925 wchar_t **__restrict __endptr) throw ();
7926extern long double wcstold (__const wchar_t *__restrict __nptr,
7927 wchar_t **__restrict __endptr) throw ();
7928
7929
7930
7931
7932
7933extern long int wcstol (__const wchar_t *__restrict __nptr,
7934 wchar_t **__restrict __endptr, int __base) throw ();
7935
7936
7937
7938extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
7939 wchar_t **__restrict __endptr, int __base)
7940 throw ();
7941
7942
7943
7944
7945__extension__
7946extern long long int wcstoll (__const wchar_t *__restrict __nptr,
7947 wchar_t **__restrict __endptr, int __base)
7948 throw ();
7949
7950
7951
7952__extension__
7953extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
7954 wchar_t **__restrict __endptr,
7955 int __base) throw ();
7956
7957
7958
7959
7960
7961
7962__extension__
7963extern long long int wcstoq (__const wchar_t *__restrict __nptr,
7964 wchar_t **__restrict __endptr, int __base)
7965 throw ();
7966
7967
7968
7969__extension__
7970extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
7971 wchar_t **__restrict __endptr,
7972 int __base) throw ();
7973# 463 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7974# 1 "/usr/include/xlocale.h" 1 3 4
7975# 464 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
7976
7977
7978
7979extern long int wcstol_l (__const wchar_t *__restrict __nptr,
7980 wchar_t **__restrict __endptr, int __base,
7981 __locale_t __loc) throw ();
7982
7983extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
7984 wchar_t **__restrict __endptr,
7985 int __base, __locale_t __loc) throw ();
7986
7987__extension__
7988extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
7989 wchar_t **__restrict __endptr,
7990 int __base, __locale_t __loc) throw ();
7991
7992__extension__
7993extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
7994 wchar_t **__restrict __endptr,
7995 int __base, __locale_t __loc)
7996 throw ();
7997
7998extern double wcstod_l (__const wchar_t *__restrict __nptr,
7999 wchar_t **__restrict __endptr, __locale_t __loc)
8000 throw ();
8001
8002extern float wcstof_l (__const wchar_t *__restrict __nptr,
8003 wchar_t **__restrict __endptr, __locale_t __loc)
8004 throw ();
8005
8006extern long double wcstold_l (__const wchar_t *__restrict __nptr,
8007 wchar_t **__restrict __endptr,
8008 __locale_t __loc) throw ();
8009
8010
8011
8012
8013
8014extern double __wcstod_internal (__const wchar_t *__restrict __nptr,
8015 wchar_t **__restrict __endptr, int __group)
8016 throw ();
8017extern float __wcstof_internal (__const wchar_t *__restrict __nptr,
8018 wchar_t **__restrict __endptr, int __group)
8019 throw ();
8020extern long double __wcstold_internal (__const wchar_t *__restrict __nptr,
8021 wchar_t **__restrict __endptr,
8022 int __group) throw ();
8023
8024
8025
8026extern long int __wcstol_internal (__const wchar_t *__restrict __nptr,
8027 wchar_t **__restrict __endptr,
8028 int __base, int __group) throw ();
8029
8030
8031
8032
8033extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt,
8034 wchar_t **__restrict __endptr,
8035 int __base, int __group) throw ();
8036
8037
8038
8039
8040__extension__
8041extern long long int __wcstoll_internal (__const wchar_t *__restrict __nptr,
8042 wchar_t **__restrict __endptr,
8043 int __base, int __group) throw ();
8044
8045
8046
8047
8048__extension__
8049extern unsigned long long int __wcstoull_internal (__const wchar_t *
8050 __restrict __nptr,
8051 wchar_t **
8052 __restrict __endptr,
8053 int __base,
8054 int __group) throw ();
8055
8056
8057
8058
8059
8060
8061
8062
8063extern __inline double
8064wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ()
8065
8066{ return __wcstod_internal (__nptr, __endptr, 0); }
8067extern __inline long int
8068wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8069
8070{ return __wcstol_internal (__nptr, __endptr, __base, 0); }
8071extern __inline unsigned long int
8072wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8073
8074{ return __wcstoul_internal (__nptr, __endptr, __base, 0); }
8075
8076
8077
8078extern __inline float
8079wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ()
8080
8081{ return __wcstof_internal (__nptr, __endptr, 0); }
8082
8083extern __inline long double
8084wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ()
8085
8086{ return __wcstold_internal (__nptr, __endptr, 0); }
8087
8088__extension__
8089extern __inline long long int
8090wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8091
8092{ return __wcstoll_internal (__nptr, __endptr, __base, 0); }
8093__extension__
8094extern __inline unsigned long long int
8095wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8096
8097{ return __wcstoull_internal (__nptr, __endptr, __base, 0); }
8098
8099
8100
8101
8102
8103
8104
8105extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) throw ();
8106
8107
8108
8109extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
8110 throw ();
8111# 607 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8112extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw ();
8113
8114
8115
8116
8117
8118
8119extern int fwide (__FILE *__fp, int __mode) throw ();
8120
8121
8122
8123
8124
8125
8126extern int fwprintf (__FILE *__restrict __stream,
8127 __const wchar_t *__restrict __format, ...)
8128 ;
8129
8130
8131
8132
8133extern int wprintf (__const wchar_t *__restrict __format, ...)
8134 ;
8135
8136extern int swprintf (wchar_t *__restrict __s, size_t __n,
8137 __const wchar_t *__restrict __format, ...)
8138 throw () ;
8139
8140
8141
8142
8143
8144extern int vfwprintf (__FILE *__restrict __s,
8145 __const wchar_t *__restrict __format,
8146 __gnuc_va_list __arg)
8147 ;
8148
8149
8150
8151
8152extern int vwprintf (__const wchar_t *__restrict __format,
8153 __gnuc_va_list __arg)
8154 ;
8155
8156
8157extern int vswprintf (wchar_t *__restrict __s, size_t __n,
8158 __const wchar_t *__restrict __format,
8159 __gnuc_va_list __arg)
8160 throw () ;
8161
8162
8163
8164
8165
8166
8167extern int fwscanf (__FILE *__restrict __stream,
8168 __const wchar_t *__restrict __format, ...)
8169 ;
8170
8171
8172
8173
8174extern int wscanf (__const wchar_t *__restrict __format, ...)
8175 ;
8176
8177extern int swscanf (__const wchar_t *__restrict __s,
8178 __const wchar_t *__restrict __format, ...)
8179 throw () ;
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191extern int vfwscanf (__FILE *__restrict __s,
8192 __const wchar_t *__restrict __format,
8193 __gnuc_va_list __arg)
8194 ;
8195
8196
8197
8198
8199extern int vwscanf (__const wchar_t *__restrict __format,
8200 __gnuc_va_list __arg)
8201 ;
8202
8203extern int vswscanf (__const wchar_t *__restrict __s,
8204 __const wchar_t *__restrict __format,
8205 __gnuc_va_list __arg)
8206 throw () ;
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217extern wint_t fgetwc (__FILE *__stream);
8218extern wint_t getwc (__FILE *__stream);
8219
8220
8221
8222
8223
8224extern wint_t getwchar (void);
8225
8226
8227
8228
8229
8230
8231extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
8232extern wint_t putwc (wchar_t __wc, __FILE *__stream);
8233
8234
8235
8236
8237
8238extern wint_t putwchar (wchar_t __wc);
8239
8240
8241
8242
8243
8244
8245
8246extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
8247 __FILE *__restrict __stream);
8248
8249
8250
8251
8252
8253extern int fputws (__const wchar_t *__restrict __ws,
8254 __FILE *__restrict __stream);
8255
8256
8257
8258
8259
8260
8261extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
8262
8263# 768 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8264extern wint_t getwc_unlocked (__FILE *__stream);
8265extern wint_t getwchar_unlocked (void);
8266
8267
8268
8269
8270
8271
8272
8273extern wint_t fgetwc_unlocked (__FILE *__stream);
8274
8275
8276
8277
8278
8279
8280
8281extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
8282# 794 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8283extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
8284extern wint_t putwchar_unlocked (wchar_t __wc);
8285# 804 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8286extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
8287 __FILE *__restrict __stream);
8288
8289
8290
8291
8292
8293
8294
8295extern int fputws_unlocked (__const wchar_t *__restrict __ws,
8296 __FILE *__restrict __stream);
8297
8298
8299
8300
8301
8302
8303
8304extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
8305 __const wchar_t *__restrict __format,
8306 __const struct tm *__restrict __tp) throw ();
8307
8308
8309
8310# 1 "/usr/include/xlocale.h" 1 3 4
8311# 829 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
8312
8313
8314
8315extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
8316 __const wchar_t *__restrict __format,
8317 __const struct tm *__restrict __tp,
8318 __locale_t __loc) throw ();
8319# 858 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8320}
8321# 9 "/usr/include/wchar.h" 2 3 4
8322# 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 2 3
8323# 70 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 3
8324namespace std __attribute__ ((__visibility__ ("default"))) {
8325
8326 using ::mbstate_t;
8327
8328}
8329# 144 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 3
8330namespace std __attribute__ ((__visibility__ ("default"))) {
8331
8332 using ::wint_t;
8333
8334 using ::btowc;
8335 using ::fgetwc;
8336 using ::fgetws;
8337 using ::fputwc;
8338 using ::fputws;
8339 using ::fwide;
8340 using ::fwprintf;
8341 using ::fwscanf;
8342 using ::getwc;
8343 using ::getwchar;
8344 using ::mbrlen;
8345 using ::mbrtowc;
8346 using ::mbsinit;
8347 using ::mbsrtowcs;
8348 using ::putwc;
8349 using ::putwchar;
8350 using ::swprintf;
8351 using ::swscanf;
8352 using ::ungetwc;
8353 using ::vfwprintf;
8354
8355 using ::vfwscanf;
8356
8357 using ::vswprintf;
8358
8359 using ::vswscanf;
8360
8361 using ::vwprintf;
8362
8363 using ::vwscanf;
8364
8365 using ::wcrtomb;
8366 using ::wcscat;
8367 using ::wcscmp;
8368 using ::wcscoll;
8369 using ::wcscpy;
8370 using ::wcscspn;
8371
8372
8373
8374 using ::wcslen;
8375 using ::wcsncat;
8376 using ::wcsncmp;
8377 using ::wcsncpy;
8378 using ::wcsrtombs;
8379 using ::wcsspn;
8380 using ::wcstod;
8381
8382 using ::wcstof;
8383
8384 using ::wcstok;
8385 using ::wcstol;
8386 using ::wcstoul;
8387 using ::wcsxfrm;
8388 using ::wctob;
8389 using ::wmemcmp;
8390 using ::wmemcpy;
8391 using ::wmemmove;
8392 using ::wmemset;
8393 using ::wprintf;
8394 using ::wscanf;
8395
8396 using ::wcschr;
8397
8398 inline wchar_t*
8399 wcschr(wchar_t* __p, wchar_t __c)
8400 { return wcschr(const_cast<const wchar_t*>(__p), __c); }
8401
8402 using ::wcspbrk;
8403
8404 inline wchar_t*
8405 wcspbrk(wchar_t* __s1, const wchar_t* __s2)
8406 { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
8407
8408 using ::wcsrchr;
8409
8410 inline wchar_t*
8411 wcsrchr(wchar_t* __p, wchar_t __c)
8412 { return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
8413
8414 using ::wcsstr;
8415
8416 inline wchar_t*
8417 wcsstr(wchar_t* __s1, const wchar_t* __s2)
8418 { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
8419
8420 using ::wmemchr;
8421
8422 inline wchar_t*
8423 wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
8424 { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
8425
8426}
8427
8428
8429
8430
8431
8432
8433
8434namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
8435
8436
8437
8438
8439
8440
8441 using ::wcstold;
8442# 264 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 3
8443 using ::wcstoll;
8444 using ::wcstoull;
8445
8446
8447}
8448
8449namespace std __attribute__ ((__visibility__ ("default"))) {
8450
8451 using ::__gnu_cxx::wcstold;
8452 using ::__gnu_cxx::wcstoll;
8453 using ::__gnu_cxx::wcstoull;
8454
8455}
8456# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 2 3
8457
8458
8459# 1 "/usr/include/stdint.h" 1 3 4
8460
8461
8462
8463
8464
8465
8466
8467# 1 "/usr/include/gentoo-multilib/amd64/stdint.h" 1 3 4
8468# 26 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8469# 1 "/usr/include/features.h" 1 3 4
8470# 27 "/usr/include/gentoo-multilib/amd64/stdint.h" 2 3 4
8471# 1 "/usr/include/bits/wchar.h" 1 3 4
8472# 28 "/usr/include/gentoo-multilib/amd64/stdint.h" 2 3 4
8473# 1 "/usr/include/bits/wordsize.h" 1 3 4
8474
8475
8476
8477
8478
8479
8480
8481# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
8482# 9 "/usr/include/bits/wordsize.h" 2 3 4
8483# 29 "/usr/include/gentoo-multilib/amd64/stdint.h" 2 3 4
8484# 49 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8485typedef unsigned char uint8_t;
8486typedef unsigned short int uint16_t;
8487
8488typedef unsigned int uint32_t;
8489
8490
8491
8492typedef unsigned long int uint64_t;
8493# 66 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8494typedef signed char int_least8_t;
8495typedef short int int_least16_t;
8496typedef int int_least32_t;
8497
8498typedef long int int_least64_t;
8499
8500
8501
8502
8503
8504
8505typedef unsigned char uint_least8_t;
8506typedef unsigned short int uint_least16_t;
8507typedef unsigned int uint_least32_t;
8508
8509typedef unsigned long int uint_least64_t;
8510# 91 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8511typedef signed char int_fast8_t;
8512
8513typedef long int int_fast16_t;
8514typedef long int int_fast32_t;
8515typedef long int int_fast64_t;
8516# 104 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8517typedef unsigned char uint_fast8_t;
8518
8519typedef unsigned long int uint_fast16_t;
8520typedef unsigned long int uint_fast32_t;
8521typedef unsigned long int uint_fast64_t;
8522# 123 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8523typedef unsigned long int uintptr_t;
8524# 135 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8525typedef long int intmax_t;
8526typedef unsigned long int uintmax_t;
8527# 9 "/usr/include/stdint.h" 2 3 4
8528# 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 2 3
8529
8530
8531namespace std __attribute__ ((__visibility__ ("default"))) {
8532# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
8533 typedef int64_t streamoff;
8534
8535
8536
8537
8538
8539 typedef ptrdiff_t streamsize;
8540
8541 template<typename _StateT>
8542 class fpos;
8543# 94 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
8544 template<typename _StateT>
8545 class fpos
8546 {
8547 private:
8548 streamoff _M_off;
8549 _StateT _M_state;
8550
8551 public:
8552
8553
8554
8555
8556 fpos()
8557 : _M_off(0), _M_state() { }
8558# 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
8559 fpos(streamoff __off)
8560 : _M_off(__off), _M_state() { }
8561
8562
8563 operator streamoff() const { return _M_off; }
8564
8565
8566 void
8567 state(_StateT __st)
8568 { _M_state = __st; }
8569
8570
8571 _StateT
8572 state() const
8573 { return _M_state; }
8574
8575
8576
8577
8578
8579 fpos&
8580 operator+=(streamoff __off)
8581 {
8582 _M_off += __off;
8583 return *this;
8584 }
8585
8586
8587
8588
8589
8590 fpos&
8591 operator-=(streamoff __off)
8592 {
8593 _M_off -= __off;
8594 return *this;
8595 }
8596
8597
8598
8599
8600
8601
8602
8603 fpos
8604 operator+(streamoff __off) const
8605 {
8606 fpos __pos(*this);
8607 __pos += __off;
8608 return __pos;
8609 }
8610
8611
8612
8613
8614
8615
8616
8617 fpos
8618 operator-(streamoff __off) const
8619 {
8620 fpos __pos(*this);
8621 __pos -= __off;
8622 return __pos;
8623 }
8624
8625
8626
8627
8628
8629
8630 streamoff
8631 operator-(const fpos& __other) const
8632 { return _M_off - __other._M_off; }
8633 };
8634
8635
8636
8637
8638
8639
8640 template<typename _StateT>
8641 inline bool
8642 operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
8643 { return streamoff(__lhs) == streamoff(__rhs); }
8644
8645 template<typename _StateT>
8646 inline bool
8647 operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
8648 { return streamoff(__lhs) != streamoff(__rhs); }
8649
8650
8651
8652
8653
8654 typedef fpos<mbstate_t> streampos;
8655
8656 typedef fpos<mbstate_t> wstreampos;
8657
8658}
8659# 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
8660# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/functexcept.h" 1 3
8661# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/functexcept.h" 3
8662# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception_defines.h" 1 3
8663# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/functexcept.h" 2 3
8664
8665namespace std __attribute__ ((__visibility__ ("default"))) {
8666
8667
8668 void
8669 __throw_bad_exception(void) __attribute__((__noreturn__));
8670
8671
8672 void
8673 __throw_bad_alloc(void) __attribute__((__noreturn__));
8674
8675
8676 void
8677 __throw_bad_cast(void) __attribute__((__noreturn__));
8678
8679 void
8680 __throw_bad_typeid(void) __attribute__((__noreturn__));
8681
8682
8683 void
8684 __throw_logic_error(const char*) __attribute__((__noreturn__));
8685
8686 void
8687 __throw_domain_error(const char*) __attribute__((__noreturn__));
8688
8689 void
8690 __throw_invalid_argument(const char*) __attribute__((__noreturn__));
8691
8692 void
8693 __throw_length_error(const char*) __attribute__((__noreturn__));
8694
8695 void
8696 __throw_out_of_range(const char*) __attribute__((__noreturn__));
8697
8698 void
8699 __throw_runtime_error(const char*) __attribute__((__noreturn__));
8700
8701 void
8702 __throw_range_error(const char*) __attribute__((__noreturn__));
8703
8704 void
8705 __throw_overflow_error(const char*) __attribute__((__noreturn__));
8706
8707 void
8708 __throw_underflow_error(const char*) __attribute__((__noreturn__));
8709
8710
8711 void
8712 __throw_ios_failure(const char*) __attribute__((__noreturn__));
8713
8714}
8715# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
8716
8717namespace std __attribute__ ((__visibility__ ("default"))) {
8718
8719 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8720 class basic_ios;
8721
8722 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8723 class basic_streambuf;
8724
8725 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8726 class basic_istream;
8727
8728 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8729 class basic_ostream;
8730
8731 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8732 class basic_iostream;
8733
8734 template<typename _CharT, typename _Traits = char_traits<_CharT>,
8735 typename _Alloc = allocator<_CharT> >
8736 class basic_stringbuf;
8737
8738 template<typename _CharT, typename _Traits = char_traits<_CharT>,
8739 typename _Alloc = allocator<_CharT> >
8740 class basic_istringstream;
8741
8742 template<typename _CharT, typename _Traits = char_traits<_CharT>,
8743 typename _Alloc = allocator<_CharT> >
8744 class basic_ostringstream;
8745
8746 template<typename _CharT, typename _Traits = char_traits<_CharT>,
8747 typename _Alloc = allocator<_CharT> >
8748 class basic_stringstream;
8749
8750 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8751 class basic_filebuf;
8752
8753 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8754 class basic_ifstream;
8755
8756 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8757 class basic_ofstream;
8758
8759 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8760 class basic_fstream;
8761
8762 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8763 class istreambuf_iterator;
8764
8765 template<typename _CharT, typename _Traits = char_traits<_CharT> >
8766 class ostreambuf_iterator;
8767
8768
8769
8770 class ios_base;
8771# 135 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 3
8772 typedef basic_ios<char> ios;
8773 typedef basic_streambuf<char> streambuf;
8774 typedef basic_istream<char> istream;
8775 typedef basic_ostream<char> ostream;
8776 typedef basic_iostream<char> iostream;
8777 typedef basic_stringbuf<char> stringbuf;
8778 typedef basic_istringstream<char> istringstream;
8779 typedef basic_ostringstream<char> ostringstream;
8780 typedef basic_stringstream<char> stringstream;
8781 typedef basic_filebuf<char> filebuf;
8782 typedef basic_ifstream<char> ifstream;
8783 typedef basic_ofstream<char> ofstream;
8784 typedef basic_fstream<char> fstream;
8785
8786
8787 typedef basic_ios<wchar_t> wios;
8788 typedef basic_streambuf<wchar_t> wstreambuf;
8789 typedef basic_istream<wchar_t> wistream;
8790 typedef basic_ostream<wchar_t> wostream;
8791 typedef basic_iostream<wchar_t> wiostream;
8792 typedef basic_stringbuf<wchar_t> wstringbuf;
8793 typedef basic_istringstream<wchar_t> wistringstream;
8794 typedef basic_ostringstream<wchar_t> wostringstream;
8795 typedef basic_stringstream<wchar_t> wstringstream;
8796 typedef basic_filebuf<wchar_t> wfilebuf;
8797 typedef basic_ifstream<wchar_t> wifstream;
8798 typedef basic_ofstream<wchar_t> wofstream;
8799 typedef basic_fstream<wchar_t> wfstream;
8800
8801
8802
8803}
8804# 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
8805# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_pair.h" 1 3
8806# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_pair.h" 3
8807namespace std __attribute__ ((__visibility__ ("default"))) {
8808
8809
8810 template<class _T1, class _T2>
8811 struct pair
8812 {
8813 typedef _T1 first_type;
8814 typedef _T2 second_type;
8815
8816 _T1 first;
8817 _T2 second;
8818
8819
8820
8821
8822
8823 pair()
8824 : first(), second() { }
8825
8826
8827 pair(const _T1& __a, const _T2& __b)
8828 : first(__a), second(__b) { }
8829
8830
8831 template<class _U1, class _U2>
8832 pair(const pair<_U1, _U2>& __p)
8833 : first(__p.first), second(__p.second) { }
8834 };
8835
8836
8837 template<class _T1, class _T2>
8838 inline bool
8839 operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
8840 { return __x.first == __y.first && __x.second == __y.second; }
8841
8842
8843 template<class _T1, class _T2>
8844 inline bool
8845 operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
8846 { return __x.first < __y.first
8847 || (!(__y.first < __x.first) && __x.second < __y.second); }
8848
8849
8850 template<class _T1, class _T2>
8851 inline bool
8852 operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
8853 { return !(__x == __y); }
8854
8855
8856 template<class _T1, class _T2>
8857 inline bool
8858 operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
8859 { return __y < __x; }
8860
8861
8862 template<class _T1, class _T2>
8863 inline bool
8864 operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
8865 { return !(__y < __x); }
8866
8867
8868 template<class _T1, class _T2>
8869 inline bool
8870 operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
8871 { return !(__x < __y); }
8872# 142 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_pair.h" 3
8873 template<class _T1, class _T2>
8874 inline pair<_T1, _T2>
8875 make_pair(_T1 __x, _T2 __y)
8876 { return pair<_T1, _T2>(__x, __y); }
8877
8878}
8879# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
8880# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/cpp_type_traits.h" 1 3
8881# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/cpp_type_traits.h" 3
8882
8883# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/cpp_type_traits.h" 3
8884# 74 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/cpp_type_traits.h" 3
8885namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
8886
8887 template<typename _Iterator, typename _Container>
8888 class __normal_iterator;
8889
8890}
8891
8892namespace std __attribute__ ((__visibility__ ("default"))) {
8893
8894namespace __detail
8895{
8896
8897
8898 typedef char __one;
8899 typedef char __two[2];
8900
8901 template<typename _Tp>
8902 __one __test_type(int _Tp::*);
8903 template<typename _Tp>
8904 __two& __test_type(...);
8905}
8906
8907
8908 struct __true_type { };
8909 struct __false_type { };
8910
8911 template<bool>
8912 struct __truth_type
8913 { typedef __false_type __type; };
8914
8915 template<>
8916 struct __truth_type<true>
8917 { typedef __true_type __type; };
8918
8919
8920
8921 template<class _Sp, class _Tp>
8922 struct __traitor
8923 {
8924 enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
8925 typedef typename __truth_type<__value>::__type __type;
8926 };
8927
8928
8929 template<typename, typename>
8930 struct __are_same
8931 {
8932 enum { __value = 0 };
8933 typedef __false_type __type;
8934 };
8935
8936 template<typename _Tp>
8937 struct __are_same<_Tp, _Tp>
8938 {
8939 enum { __value = 1 };
8940 typedef __true_type __type;
8941 };
8942
8943
8944 template<typename _Tp>
8945 struct __is_void
8946 {
8947 enum { __value = 0 };
8948 typedef __false_type __type;
8949 };
8950
8951 template<>
8952 struct __is_void<void>
8953 {
8954 enum { __value = 1 };
8955 typedef __true_type __type;
8956 };
8957
8958
8959
8960
8961 template<typename _Tp>
8962 struct __is_integer
8963 {
8964 enum { __value = 0 };
8965 typedef __false_type __type;
8966 };
8967
8968
8969
8970
8971 template<>
8972 struct __is_integer<bool>
8973 {
8974 enum { __value = 1 };
8975 typedef __true_type __type;
8976 };
8977
8978 template<>
8979 struct __is_integer<char>
8980 {
8981 enum { __value = 1 };
8982 typedef __true_type __type;
8983 };
8984
8985 template<>
8986 struct __is_integer<signed char>
8987 {
8988 enum { __value = 1 };
8989 typedef __true_type __type;
8990 };
8991
8992 template<>
8993 struct __is_integer<unsigned char>
8994 {
8995 enum { __value = 1 };
8996 typedef __true_type __type;
8997 };
8998
8999
9000 template<>
9001 struct __is_integer<wchar_t>
9002 {
9003 enum { __value = 1 };
9004 typedef __true_type __type;
9005 };
9006
9007
9008 template<>
9009 struct __is_integer<short>
9010 {
9011 enum { __value = 1 };
9012 typedef __true_type __type;
9013 };
9014
9015 template<>
9016 struct __is_integer<unsigned short>
9017 {
9018 enum { __value = 1 };
9019 typedef __true_type __type;
9020 };
9021
9022 template<>
9023 struct __is_integer<int>
9024 {
9025 enum { __value = 1 };
9026 typedef __true_type __type;
9027 };
9028
9029 template<>
9030 struct __is_integer<unsigned int>
9031 {
9032 enum { __value = 1 };
9033 typedef __true_type __type;
9034 };
9035
9036 template<>
9037 struct __is_integer<long>
9038 {
9039 enum { __value = 1 };
9040 typedef __true_type __type;
9041 };
9042
9043 template<>
9044 struct __is_integer<unsigned long>
9045 {
9046 enum { __value = 1 };
9047 typedef __true_type __type;
9048 };
9049
9050 template<>
9051 struct __is_integer<long long>
9052 {
9053 enum { __value = 1 };
9054 typedef __true_type __type;
9055 };
9056
9057 template<>
9058 struct __is_integer<unsigned long long>
9059 {
9060 enum { __value = 1 };
9061 typedef __true_type __type;
9062 };
9063
9064
9065
9066
9067 template<typename _Tp>
9068 struct __is_floating
9069 {
9070 enum { __value = 0 };
9071 typedef __false_type __type;
9072 };
9073
9074
9075 template<>
9076 struct __is_floating<float>
9077 {
9078 enum { __value = 1 };
9079 typedef __true_type __type;
9080 };
9081
9082 template<>
9083 struct __is_floating<double>
9084 {
9085 enum { __value = 1 };
9086 typedef __true_type __type;
9087 };
9088
9089 template<>
9090 struct __is_floating<long double>
9091 {
9092 enum { __value = 1 };
9093 typedef __true_type __type;
9094 };
9095
9096
9097
9098
9099 template<typename _Tp>
9100 struct __is_pointer
9101 {
9102 enum { __value = 0 };
9103 typedef __false_type __type;
9104 };
9105
9106 template<typename _Tp>
9107 struct __is_pointer<_Tp*>
9108 {
9109 enum { __value = 1 };
9110 typedef __true_type __type;
9111 };
9112
9113
9114
9115
9116 template<typename _Tp>
9117 struct __is_normal_iterator
9118 {
9119 enum { __value = 0 };
9120 typedef __false_type __type;
9121 };
9122
9123 template<typename _Iterator, typename _Container>
9124 struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
9125 _Container> >
9126 {
9127 enum { __value = 1 };
9128 typedef __true_type __type;
9129 };
9130
9131
9132
9133
9134 template<typename _Tp>
9135 struct __is_arithmetic
9136 : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
9137 { };
9138
9139
9140
9141
9142 template<typename _Tp>
9143 struct __is_fundamental
9144 : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
9145 { };
9146
9147
9148
9149
9150 template<typename _Tp>
9151 struct __is_scalar
9152 : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
9153 { };
9154
9155
9156 template<typename _Tp>
9157 struct __is_pod
9158 {
9159 enum
9160 {
9161 __value = (sizeof(__detail::__test_type<_Tp>(0))
9162 != sizeof(__detail::__one))
9163 };
9164 };
9165
9166
9167
9168
9169 template<typename _Tp>
9170 struct __is_empty
9171 {
9172 private:
9173 template<typename>
9174 struct __first { };
9175 template<typename _Up>
9176 struct __second
9177 : public _Up { };
9178
9179 public:
9180 enum
9181 {
9182 __value = sizeof(__first<_Tp>) == sizeof(__second<_Tp>)
9183 };
9184 };
9185
9186
9187
9188
9189 template<typename _Tp>
9190 struct __is_char
9191 {
9192 enum { __value = 0 };
9193 typedef __false_type __type;
9194 };
9195
9196 template<>
9197 struct __is_char<char>
9198 {
9199 enum { __value = 1 };
9200 typedef __true_type __type;
9201 };
9202
9203
9204 template<>
9205 struct __is_char<wchar_t>
9206 {
9207 enum { __value = 1 };
9208 typedef __true_type __type;
9209 };
9210
9211
9212}
9213# 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
9214# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/type_traits.h" 1 3
9215# 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/type_traits.h" 3
9216
9217# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/type_traits.h" 3
9218
9219
9220# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/utility" 1 3
9221# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/utility" 3
9222
9223# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/utility" 3
9224
9225
9226# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_relops.h" 1 3
9227# 74 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_relops.h" 3
9228namespace std __attribute__ ((__visibility__ ("default"))) {
9229
9230 namespace rel_ops
9231 {
9232# 90 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_relops.h" 3
9233 template <class _Tp>
9234 inline bool
9235 operator!=(const _Tp& __x, const _Tp& __y)
9236 { return !(__x == __y); }
9237# 103 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_relops.h" 3
9238 template <class _Tp>
9239 inline bool
9240 operator>(const _Tp& __x, const _Tp& __y)
9241 { return __y < __x; }
9242# 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_relops.h" 3
9243 template <class _Tp>
9244 inline bool
9245 operator<=(const _Tp& __x, const _Tp& __y)
9246 { return !(__y < __x); }
9247# 129 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_relops.h" 3
9248 template <class _Tp>
9249 inline bool
9250 operator>=(const _Tp& __x, const _Tp& __y)
9251 { return !(__x < __y); }
9252
9253 }
9254
9255}
9256# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/utility" 2 3
9257# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/type_traits.h" 2 3
9258
9259
9260namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
9261
9262
9263 template<bool, typename>
9264 struct __enable_if
9265 { };
9266
9267 template<typename _Tp>
9268 struct __enable_if<true, _Tp>
9269 { typedef _Tp __type; };
9270
9271
9272
9273 template<bool _Cond, typename _Iftrue, typename _Iffalse>
9274 struct __conditional_type
9275 { typedef _Iftrue __type; };
9276
9277 template<typename _Iftrue, typename _Iffalse>
9278 struct __conditional_type<false, _Iftrue, _Iffalse>
9279 { typedef _Iffalse __type; };
9280
9281
9282
9283 template<typename _Tp>
9284 struct __add_unsigned
9285 {
9286 private:
9287 typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
9288
9289 public:
9290 typedef typename __if_type::__type __type;
9291 };
9292
9293 template<>
9294 struct __add_unsigned<char>
9295 { typedef unsigned char __type; };
9296
9297 template<>
9298 struct __add_unsigned<signed char>
9299 { typedef unsigned char __type; };
9300
9301 template<>
9302 struct __add_unsigned<short>
9303 { typedef unsigned short __type; };
9304
9305 template<>
9306 struct __add_unsigned<int>
9307 { typedef unsigned int __type; };
9308
9309 template<>
9310 struct __add_unsigned<long>
9311 { typedef unsigned long __type; };
9312
9313 template<>
9314 struct __add_unsigned<long long>
9315 { typedef unsigned long long __type; };
9316
9317
9318 template<>
9319 struct __add_unsigned<bool>;
9320
9321 template<>
9322 struct __add_unsigned<wchar_t>;
9323
9324
9325
9326 template<typename _Tp>
9327 struct __remove_unsigned
9328 {
9329 private:
9330 typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
9331
9332 public:
9333 typedef typename __if_type::__type __type;
9334 };
9335
9336 template<>
9337 struct __remove_unsigned<char>
9338 { typedef signed char __type; };
9339
9340 template<>
9341 struct __remove_unsigned<unsigned char>
9342 { typedef signed char __type; };
9343
9344 template<>
9345 struct __remove_unsigned<unsigned short>
9346 { typedef short __type; };
9347
9348 template<>
9349 struct __remove_unsigned<unsigned int>
9350 { typedef int __type; };
9351
9352 template<>
9353 struct __remove_unsigned<unsigned long>
9354 { typedef long __type; };
9355
9356 template<>
9357 struct __remove_unsigned<unsigned long long>
9358 { typedef long long __type; };
9359
9360
9361 template<>
9362 struct __remove_unsigned<bool>;
9363
9364 template<>
9365 struct __remove_unsigned<wchar_t>;
9366
9367}
9368# 74 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
9369# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 1 3
9370# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
9371
9372# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
9373
9374namespace std __attribute__ ((__visibility__ ("default"))) {
9375# 80 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
9376 struct input_iterator_tag {};
9377
9378 struct output_iterator_tag {};
9379
9380 struct forward_iterator_tag : public input_iterator_tag {};
9381
9382
9383 struct bidirectional_iterator_tag : public forward_iterator_tag {};
9384
9385
9386 struct random_access_iterator_tag : public bidirectional_iterator_tag {};
9387# 104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
9388 template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
9389 typename _Pointer = _Tp*, typename _Reference = _Tp&>
9390 struct iterator
9391 {
9392
9393 typedef _Category iterator_category;
9394
9395 typedef _Tp value_type;
9396
9397 typedef _Distance difference_type;
9398
9399 typedef _Pointer pointer;
9400
9401 typedef _Reference reference;
9402 };
9403
9404
9405
9406
9407
9408
9409
9410 template<typename _Iterator>
9411 struct iterator_traits
9412 {
9413 typedef typename _Iterator::iterator_category iterator_category;
9414 typedef typename _Iterator::value_type value_type;
9415 typedef typename _Iterator::difference_type difference_type;
9416 typedef typename _Iterator::pointer pointer;
9417 typedef typename _Iterator::reference reference;
9418 };
9419
9420 template<typename _Tp>
9421 struct iterator_traits<_Tp*>
9422 {
9423 typedef random_access_iterator_tag iterator_category;
9424 typedef _Tp value_type;
9425 typedef ptrdiff_t difference_type;
9426 typedef _Tp* pointer;
9427 typedef _Tp& reference;
9428 };
9429
9430 template<typename _Tp>
9431 struct iterator_traits<const _Tp*>
9432 {
9433 typedef random_access_iterator_tag iterator_category;
9434 typedef _Tp value_type;
9435 typedef ptrdiff_t difference_type;
9436 typedef const _Tp* pointer;
9437 typedef const _Tp& reference;
9438 };
9439
9440
9441
9442
9443
9444
9445
9446 template<typename _Iter>
9447 inline typename iterator_traits<_Iter>::iterator_category
9448 __iterator_category(const _Iter&)
9449 { return typename iterator_traits<_Iter>::iterator_category(); }
9450
9451}
9452# 75 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
9453# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 1 3
9454# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
9455
9456# 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
9457# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/concept_check.h" 1 3
9458# 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/concept_check.h" 3
9459
9460# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/concept_check.h" 3
9461# 70 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 2 3
9462
9463namespace std __attribute__ ((__visibility__ ("default"))) {
9464
9465 template<typename _InputIterator>
9466 inline typename iterator_traits<_InputIterator>::difference_type
9467 __distance(_InputIterator __first, _InputIterator __last,
9468 input_iterator_tag)
9469 {
9470
9471
9472
9473 typename iterator_traits<_InputIterator>::difference_type __n = 0;
9474 while (__first != __last)
9475 {
9476 ++__first;
9477 ++__n;
9478 }
9479 return __n;
9480 }
9481
9482 template<typename _RandomAccessIterator>
9483 inline typename iterator_traits<_RandomAccessIterator>::difference_type
9484 __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
9485 random_access_iterator_tag)
9486 {
9487
9488
9489
9490 return __last - __first;
9491 }
9492# 113 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
9493 template<typename _InputIterator>
9494 inline typename iterator_traits<_InputIterator>::difference_type
9495 distance(_InputIterator __first, _InputIterator __last)
9496 {
9497
9498 return std::__distance(__first, __last,
9499 std::__iterator_category(__first));
9500 }
9501
9502 template<typename _InputIterator, typename _Distance>
9503 inline void
9504 __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
9505 {
9506
9507
9508 while (__n--)
9509 ++__i;
9510 }
9511
9512 template<typename _BidirectionalIterator, typename _Distance>
9513 inline void
9514 __advance(_BidirectionalIterator& __i, _Distance __n,
9515 bidirectional_iterator_tag)
9516 {
9517
9518
9519
9520 if (__n > 0)
9521 while (__n--)
9522 ++__i;
9523 else
9524 while (__n++)
9525 --__i;
9526 }
9527
9528 template<typename _RandomAccessIterator, typename _Distance>
9529 inline void
9530 __advance(_RandomAccessIterator& __i, _Distance __n,
9531 random_access_iterator_tag)
9532 {
9533
9534
9535
9536 __i += __n;
9537 }
9538# 171 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
9539 template<typename _InputIterator, typename _Distance>
9540 inline void
9541 advance(_InputIterator& __i, _Distance __n)
9542 {
9543
9544 typename iterator_traits<_InputIterator>::difference_type __d = __n;
9545 std::__advance(__i, __d, std::__iterator_category(__i));
9546 }
9547
9548}
9549# 76 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
9550# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 1 3
9551# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9552namespace std __attribute__ ((__visibility__ ("default"))) {
9553# 93 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9554 template<typename _Iterator>
9555 class reverse_iterator
9556 : public iterator<typename iterator_traits<_Iterator>::iterator_category,
9557 typename iterator_traits<_Iterator>::value_type,
9558 typename iterator_traits<_Iterator>::difference_type,
9559 typename iterator_traits<_Iterator>::pointer,
9560 typename iterator_traits<_Iterator>::reference>
9561 {
9562 protected:
9563 _Iterator current;
9564
9565 public:
9566 typedef _Iterator iterator_type;
9567 typedef typename iterator_traits<_Iterator>::difference_type
9568 difference_type;
9569 typedef typename iterator_traits<_Iterator>::reference reference;
9570 typedef typename iterator_traits<_Iterator>::pointer pointer;
9571
9572 public:
9573
9574
9575
9576
9577
9578
9579 reverse_iterator() : current() { }
9580
9581
9582
9583
9584 explicit
9585 reverse_iterator(iterator_type __x) : current(__x) { }
9586
9587
9588
9589
9590 reverse_iterator(const reverse_iterator& __x)
9591 : current(__x.current) { }
9592
9593
9594
9595
9596
9597 template<typename _Iter>
9598 reverse_iterator(const reverse_iterator<_Iter>& __x)
9599 : current(__x.base()) { }
9600
9601
9602
9603
9604 iterator_type
9605 base() const
9606 { return current; }
9607
9608
9609
9610
9611
9612
9613 reference
9614 operator*() const
9615 {
9616 _Iterator __tmp = current;
9617 return *--__tmp;
9618 }
9619
9620
9621
9622
9623
9624
9625 pointer
9626 operator->() const
9627 { return &(operator*()); }
9628
9629
9630
9631
9632
9633
9634 reverse_iterator&
9635 operator++()
9636 {
9637 --current;
9638 return *this;
9639 }
9640
9641
9642
9643
9644
9645
9646 reverse_iterator
9647 operator++(int)
9648 {
9649 reverse_iterator __tmp = *this;
9650 --current;
9651 return __tmp;
9652 }
9653
9654
9655
9656
9657
9658
9659 reverse_iterator&
9660 operator--()
9661 {
9662 ++current;
9663 return *this;
9664 }
9665
9666
9667
9668
9669
9670
9671 reverse_iterator
9672 operator--(int)
9673 {
9674 reverse_iterator __tmp = *this;
9675 ++current;
9676 return __tmp;
9677 }
9678
9679
9680
9681
9682
9683
9684 reverse_iterator
9685 operator+(difference_type __n) const
9686 { return reverse_iterator(current - __n); }
9687
9688
9689
9690
9691
9692
9693 reverse_iterator&
9694 operator+=(difference_type __n)
9695 {
9696 current -= __n;
9697 return *this;
9698 }
9699
9700
9701
9702
9703
9704
9705 reverse_iterator
9706 operator-(difference_type __n) const
9707 { return reverse_iterator(current + __n); }
9708
9709
9710
9711
9712
9713
9714 reverse_iterator&
9715 operator-=(difference_type __n)
9716 {
9717 current += __n;
9718 return *this;
9719 }
9720
9721
9722
9723
9724
9725
9726 reference
9727 operator[](difference_type __n) const
9728 { return *(*this + __n); }
9729 };
9730# 280 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9731 template<typename _Iterator>
9732 inline bool
9733 operator==(const reverse_iterator<_Iterator>& __x,
9734 const reverse_iterator<_Iterator>& __y)
9735 { return __x.base() == __y.base(); }
9736
9737 template<typename _Iterator>
9738 inline bool
9739 operator<(const reverse_iterator<_Iterator>& __x,
9740 const reverse_iterator<_Iterator>& __y)
9741 { return __y.base() < __x.base(); }
9742
9743 template<typename _Iterator>
9744 inline bool
9745 operator!=(const reverse_iterator<_Iterator>& __x,
9746 const reverse_iterator<_Iterator>& __y)
9747 { return !(__x == __y); }
9748
9749 template<typename _Iterator>
9750 inline bool
9751 operator>(const reverse_iterator<_Iterator>& __x,
9752 const reverse_iterator<_Iterator>& __y)
9753 { return __y < __x; }
9754
9755 template<typename _Iterator>
9756 inline bool
9757 operator<=(const reverse_iterator<_Iterator>& __x,
9758 const reverse_iterator<_Iterator>& __y)
9759 { return !(__y < __x); }
9760
9761 template<typename _Iterator>
9762 inline bool
9763 operator>=(const reverse_iterator<_Iterator>& __x,
9764 const reverse_iterator<_Iterator>& __y)
9765 { return !(__x < __y); }
9766
9767 template<typename _Iterator>
9768 inline typename reverse_iterator<_Iterator>::difference_type
9769 operator-(const reverse_iterator<_Iterator>& __x,
9770 const reverse_iterator<_Iterator>& __y)
9771 { return __y.base() - __x.base(); }
9772
9773 template<typename _Iterator>
9774 inline reverse_iterator<_Iterator>
9775 operator+(typename reverse_iterator<_Iterator>::difference_type __n,
9776 const reverse_iterator<_Iterator>& __x)
9777 { return reverse_iterator<_Iterator>(__x.base() - __n); }
9778
9779
9780
9781 template<typename _IteratorL, typename _IteratorR>
9782 inline bool
9783 operator==(const reverse_iterator<_IteratorL>& __x,
9784 const reverse_iterator<_IteratorR>& __y)
9785 { return __x.base() == __y.base(); }
9786
9787 template<typename _IteratorL, typename _IteratorR>
9788 inline bool
9789 operator<(const reverse_iterator<_IteratorL>& __x,
9790 const reverse_iterator<_IteratorR>& __y)
9791 { return __y.base() < __x.base(); }
9792
9793 template<typename _IteratorL, typename _IteratorR>
9794 inline bool
9795 operator!=(const reverse_iterator<_IteratorL>& __x,
9796 const reverse_iterator<_IteratorR>& __y)
9797 { return !(__x == __y); }
9798
9799 template<typename _IteratorL, typename _IteratorR>
9800 inline bool
9801 operator>(const reverse_iterator<_IteratorL>& __x,
9802 const reverse_iterator<_IteratorR>& __y)
9803 { return __y < __x; }
9804
9805 template<typename _IteratorL, typename _IteratorR>
9806 inline bool
9807 operator<=(const reverse_iterator<_IteratorL>& __x,
9808 const reverse_iterator<_IteratorR>& __y)
9809 { return !(__y < __x); }
9810
9811 template<typename _IteratorL, typename _IteratorR>
9812 inline bool
9813 operator>=(const reverse_iterator<_IteratorL>& __x,
9814 const reverse_iterator<_IteratorR>& __y)
9815 { return !(__x < __y); }
9816
9817 template<typename _IteratorL, typename _IteratorR>
9818 inline typename reverse_iterator<_IteratorL>::difference_type
9819 operator-(const reverse_iterator<_IteratorL>& __x,
9820 const reverse_iterator<_IteratorR>& __y)
9821 { return __y.base() - __x.base(); }
9822# 384 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9823 template<typename _Container>
9824 class back_insert_iterator
9825 : public iterator<output_iterator_tag, void, void, void, void>
9826 {
9827 protected:
9828 _Container* container;
9829
9830 public:
9831
9832 typedef _Container container_type;
9833
9834
9835 explicit
9836 back_insert_iterator(_Container& __x) : container(&__x) { }
9837# 410 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9838 back_insert_iterator&
9839 operator=(typename _Container::const_reference __value)
9840 {
9841 container->push_back(__value);
9842 return *this;
9843 }
9844
9845
9846 back_insert_iterator&
9847 operator*()
9848 { return *this; }
9849
9850
9851 back_insert_iterator&
9852 operator++()
9853 { return *this; }
9854
9855
9856 back_insert_iterator
9857 operator++(int)
9858 { return *this; }
9859 };
9860# 444 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9861 template<typename _Container>
9862 inline back_insert_iterator<_Container>
9863 back_inserter(_Container& __x)
9864 { return back_insert_iterator<_Container>(__x); }
9865# 459 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9866 template<typename _Container>
9867 class front_insert_iterator
9868 : public iterator<output_iterator_tag, void, void, void, void>
9869 {
9870 protected:
9871 _Container* container;
9872
9873 public:
9874
9875 typedef _Container container_type;
9876
9877
9878 explicit front_insert_iterator(_Container& __x) : container(&__x) { }
9879# 484 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9880 front_insert_iterator&
9881 operator=(typename _Container::const_reference __value)
9882 {
9883 container->push_front(__value);
9884 return *this;
9885 }
9886
9887
9888 front_insert_iterator&
9889 operator*()
9890 { return *this; }
9891
9892
9893 front_insert_iterator&
9894 operator++()
9895 { return *this; }
9896
9897
9898 front_insert_iterator
9899 operator++(int)
9900 { return *this; }
9901 };
9902# 518 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9903 template<typename _Container>
9904 inline front_insert_iterator<_Container>
9905 front_inserter(_Container& __x)
9906 { return front_insert_iterator<_Container>(__x); }
9907# 537 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9908 template<typename _Container>
9909 class insert_iterator
9910 : public iterator<output_iterator_tag, void, void, void, void>
9911 {
9912 protected:
9913 _Container* container;
9914 typename _Container::iterator iter;
9915
9916 public:
9917
9918 typedef _Container container_type;
9919
9920
9921
9922
9923
9924 insert_iterator(_Container& __x, typename _Container::iterator __i)
9925 : container(&__x), iter(__i) {}
9926# 579 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9927 insert_iterator&
9928 operator=(const typename _Container::const_reference __value)
9929 {
9930 iter = container->insert(iter, __value);
9931 ++iter;
9932 return *this;
9933 }
9934
9935
9936 insert_iterator&
9937 operator*()
9938 { return *this; }
9939
9940
9941 insert_iterator&
9942 operator++()
9943 { return *this; }
9944
9945
9946 insert_iterator&
9947 operator++(int)
9948 { return *this; }
9949 };
9950# 614 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9951 template<typename _Container, typename _Iterator>
9952 inline insert_iterator<_Container>
9953 inserter(_Container& __x, _Iterator __i)
9954 {
9955 return insert_iterator<_Container>(__x,
9956 typename _Container::iterator(__i));
9957 }
9958
9959}
9960
9961namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
9962# 633 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
9963 using std::iterator_traits;
9964 using std::iterator;
9965 template<typename _Iterator, typename _Container>
9966 class __normal_iterator
9967 {
9968 protected:
9969 _Iterator _M_current;
9970
9971 public:
9972 typedef typename iterator_traits<_Iterator>::iterator_category
9973 iterator_category;
9974 typedef typename iterator_traits<_Iterator>::value_type value_type;
9975 typedef typename iterator_traits<_Iterator>::difference_type
9976 difference_type;
9977 typedef typename iterator_traits<_Iterator>::reference reference;
9978 typedef typename iterator_traits<_Iterator>::pointer pointer;
9979
9980 __normal_iterator() : _M_current(_Iterator()) { }
9981
9982 explicit
9983 __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
9984
9985
9986 template<typename _Iter>
9987 __normal_iterator(const __normal_iterator<_Iter,
9988 typename __enable_if<
9989 (std::__are_same<_Iter, typename _Container::pointer>::__value),
9990 _Container>::__type>& __i)
9991 : _M_current(__i.base()) { }
9992
9993
9994 reference
9995 operator*() const
9996 { return *_M_current; }
9997
9998 pointer
9999 operator->() const
10000 { return _M_current; }
10001
10002 __normal_iterator&
10003 operator++()
10004 {
10005 ++_M_current;
10006 return *this;
10007 }
10008
10009 __normal_iterator
10010 operator++(int)
10011 { return __normal_iterator(_M_current++); }
10012
10013
10014 __normal_iterator&
10015 operator--()
10016 {
10017 --_M_current;
10018 return *this;
10019 }
10020
10021 __normal_iterator
10022 operator--(int)
10023 { return __normal_iterator(_M_current--); }
10024
10025
10026 reference
10027 operator[](const difference_type& __n) const
10028 { return _M_current[__n]; }
10029
10030 __normal_iterator&
10031 operator+=(const difference_type& __n)
10032 { _M_current += __n; return *this; }
10033
10034 __normal_iterator
10035 operator+(const difference_type& __n) const
10036 { return __normal_iterator(_M_current + __n); }
10037
10038 __normal_iterator&
10039 operator-=(const difference_type& __n)
10040 { _M_current -= __n; return *this; }
10041
10042 __normal_iterator
10043 operator-(const difference_type& __n) const
10044 { return __normal_iterator(_M_current - __n); }
10045
10046 const _Iterator&
10047 base() const
10048 { return _M_current; }
10049 };
10050# 730 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
10051 template<typename _IteratorL, typename _IteratorR, typename _Container>
10052 inline bool
10053 operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
10054 const __normal_iterator<_IteratorR, _Container>& __rhs)
10055 { return __lhs.base() == __rhs.base(); }
10056
10057 template<typename _Iterator, typename _Container>
10058 inline bool
10059 operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
10060 const __normal_iterator<_Iterator, _Container>& __rhs)
10061 { return __lhs.base() == __rhs.base(); }
10062
10063 template<typename _IteratorL, typename _IteratorR, typename _Container>
10064 inline bool
10065 operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
10066 const __normal_iterator<_IteratorR, _Container>& __rhs)
10067 { return __lhs.base() != __rhs.base(); }
10068
10069 template<typename _Iterator, typename _Container>
10070 inline bool
10071 operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
10072 const __normal_iterator<_Iterator, _Container>& __rhs)
10073 { return __lhs.base() != __rhs.base(); }
10074
10075
10076 template<typename _IteratorL, typename _IteratorR, typename _Container>
10077 inline bool
10078 operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
10079 const __normal_iterator<_IteratorR, _Container>& __rhs)
10080 { return __lhs.base() < __rhs.base(); }
10081
10082 template<typename _Iterator, typename _Container>
10083 inline bool
10084 operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
10085 const __normal_iterator<_Iterator, _Container>& __rhs)
10086 { return __lhs.base() < __rhs.base(); }
10087
10088 template<typename _IteratorL, typename _IteratorR, typename _Container>
10089 inline bool
10090 operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
10091 const __normal_iterator<_IteratorR, _Container>& __rhs)
10092 { return __lhs.base() > __rhs.base(); }
10093
10094 template<typename _Iterator, typename _Container>
10095 inline bool
10096 operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
10097 const __normal_iterator<_Iterator, _Container>& __rhs)
10098 { return __lhs.base() > __rhs.base(); }
10099
10100 template<typename _IteratorL, typename _IteratorR, typename _Container>
10101 inline bool
10102 operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
10103 const __normal_iterator<_IteratorR, _Container>& __rhs)
10104 { return __lhs.base() <= __rhs.base(); }
10105
10106 template<typename _Iterator, typename _Container>
10107 inline bool
10108 operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
10109 const __normal_iterator<_Iterator, _Container>& __rhs)
10110 { return __lhs.base() <= __rhs.base(); }
10111
10112 template<typename _IteratorL, typename _IteratorR, typename _Container>
10113 inline bool
10114 operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
10115 const __normal_iterator<_IteratorR, _Container>& __rhs)
10116 { return __lhs.base() >= __rhs.base(); }
10117
10118 template<typename _Iterator, typename _Container>
10119 inline bool
10120 operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
10121 const __normal_iterator<_Iterator, _Container>& __rhs)
10122 { return __lhs.base() >= __rhs.base(); }
10123
10124
10125
10126
10127
10128 template<typename _IteratorL, typename _IteratorR, typename _Container>
10129 inline typename __normal_iterator<_IteratorL, _Container>::difference_type
10130 operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
10131 const __normal_iterator<_IteratorR, _Container>& __rhs)
10132 { return __lhs.base() - __rhs.base(); }
10133
10134 template<typename _Iterator, typename _Container>
10135 inline typename __normal_iterator<_Iterator, _Container>::difference_type
10136 operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
10137 const __normal_iterator<_Iterator, _Container>& __rhs)
10138 { return __lhs.base() - __rhs.base(); }
10139
10140 template<typename _Iterator, typename _Container>
10141 inline __normal_iterator<_Iterator, _Container>
10142 operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
10143 __n, const __normal_iterator<_Iterator, _Container>& __i)
10144 { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
10145
10146}
10147# 77 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
10148
10149# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/debug/debug.h" 1 3
10150# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/debug/debug.h" 3
10151namespace std
10152{
10153 namespace __debug { }
10154}
10155
10156namespace __gnu_cxx
10157{
10158 namespace __debug { };
10159}
10160
10161namespace __gnu_debug
10162{
10163 using namespace std::__debug;
10164 using namespace __gnu_cxx::__debug;
10165}
10166# 79 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
10167
10168namespace std __attribute__ ((__visibility__ ("default"))) {
10169# 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10170 template<typename _Tp>
10171 inline void
10172 swap(_Tp& __a, _Tp& __b)
10173 {
10174
10175
10176
10177 _Tp __tmp = __a;
10178 __a = __b;
10179 __b = __tmp;
10180 }
10181
10182
10183
10184
10185 template<bool _BoolType>
10186 struct __iter_swap
10187 {
10188 template<typename _ForwardIterator1, typename _ForwardIterator2>
10189 static void
10190 iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
10191 {
10192 typedef typename iterator_traits<_ForwardIterator1>::value_type
10193 _ValueType1;
10194 _ValueType1 __tmp = *__a;
10195 *__a = *__b;
10196 *__b = __tmp;
10197 }
10198 };
10199
10200 template<>
10201 struct __iter_swap<true>
10202 {
10203 template<typename _ForwardIterator1, typename _ForwardIterator2>
10204 static void
10205 iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
10206 {
10207 swap(*__a, *__b);
10208 }
10209 };
10210# 141 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10211 template<typename _ForwardIterator1, typename _ForwardIterator2>
10212 inline void
10213 iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
10214 {
10215 typedef typename iterator_traits<_ForwardIterator1>::value_type
10216 _ValueType1;
10217 typedef typename iterator_traits<_ForwardIterator2>::value_type
10218 _ValueType2;
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230 typedef typename iterator_traits<_ForwardIterator1>::reference
10231 _ReferenceType1;
10232 typedef typename iterator_traits<_ForwardIterator2>::reference
10233 _ReferenceType2;
10234 std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value &&
10235 __are_same<_ValueType1 &, _ReferenceType1>::__value &&
10236 __are_same<_ValueType2 &, _ReferenceType2>::__value>::
10237 iter_swap(__a, __b);
10238 }
10239# 180 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10240 template<typename _Tp>
10241 inline const _Tp&
10242 min(const _Tp& __a, const _Tp& __b)
10243 {
10244
10245
10246
10247 if (__b < __a)
10248 return __b;
10249 return __a;
10250 }
10251# 202 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10252 template<typename _Tp>
10253 inline const _Tp&
10254 max(const _Tp& __a, const _Tp& __b)
10255 {
10256
10257
10258
10259 if (__a < __b)
10260 return __b;
10261 return __a;
10262 }
10263# 224 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10264 template<typename _Tp, typename _Compare>
10265 inline const _Tp&
10266 min(const _Tp& __a, const _Tp& __b, _Compare __comp)
10267 {
10268
10269 if (__comp(__b, __a))
10270 return __b;
10271 return __a;
10272 }
10273# 244 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10274 template<typename _Tp, typename _Compare>
10275 inline const _Tp&
10276 max(const _Tp& __a, const _Tp& __b, _Compare __comp)
10277 {
10278
10279 if (__comp(__a, __b))
10280 return __b;
10281 return __a;
10282 }
10283
10284
10285
10286
10287
10288
10289
10290 template<bool, typename>
10291 struct __copy
10292 {
10293 template<typename _II, typename _OI>
10294 static _OI
10295 copy(_II __first, _II __last, _OI __result)
10296 {
10297 for (; __first != __last; ++__result, ++__first)
10298 *__result = *__first;
10299 return __result;
10300 }
10301 };
10302
10303 template<bool _BoolType>
10304 struct __copy<_BoolType, random_access_iterator_tag>
10305 {
10306 template<typename _II, typename _OI>
10307 static _OI
10308 copy(_II __first, _II __last, _OI __result)
10309 {
10310 typedef typename iterator_traits<_II>::difference_type _Distance;
10311 for(_Distance __n = __last - __first; __n > 0; --__n)
10312 {
10313 *__result = *__first;
10314 ++__first;
10315 ++__result;
10316 }
10317 return __result;
10318 }
10319 };
10320
10321 template<>
10322 struct __copy<true, random_access_iterator_tag>
10323 {
10324 template<typename _Tp>
10325 static _Tp*
10326 copy(const _Tp* __first, const _Tp* __last, _Tp* __result)
10327 {
10328 std::memmove(__result, __first, sizeof(_Tp) * (__last - __first));
10329 return __result + (__last - __first);
10330 }
10331 };
10332
10333 template<typename _II, typename _OI>
10334 inline _OI
10335 __copy_aux(_II __first, _II __last, _OI __result)
10336 {
10337 typedef typename iterator_traits<_II>::value_type _ValueTypeI;
10338 typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
10339 typedef typename iterator_traits<_II>::iterator_category _Category;
10340 const bool __simple = (__is_scalar<_ValueTypeI>::__value
10341 && __is_pointer<_II>::__value
10342 && __is_pointer<_OI>::__value
10343 && __are_same<_ValueTypeI, _ValueTypeO>::__value);
10344
10345 return std::__copy<__simple, _Category>::copy(__first, __last, __result);
10346 }
10347
10348
10349 template<typename _CharT>
10350 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
10351 ostreambuf_iterator<_CharT> >::__type
10352 __copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>);
10353
10354 template<typename _CharT>
10355 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
10356 ostreambuf_iterator<_CharT> >::__type
10357 __copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>);
10358
10359 template<typename _CharT>
10360 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, _CharT*>::__type
10361 __copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
10362 _CharT*);
10363
10364 template<bool, bool>
10365 struct __copy_normal
10366 {
10367 template<typename _II, typename _OI>
10368 static _OI
10369 __copy_n(_II __first, _II __last, _OI __result)
10370 { return std::__copy_aux(__first, __last, __result); }
10371 };
10372
10373 template<>
10374 struct __copy_normal<true, false>
10375 {
10376 template<typename _II, typename _OI>
10377 static _OI
10378 __copy_n(_II __first, _II __last, _OI __result)
10379 { return std::__copy_aux(__first.base(), __last.base(), __result); }
10380 };
10381
10382 template<>
10383 struct __copy_normal<false, true>
10384 {
10385 template<typename _II, typename _OI>
10386 static _OI
10387 __copy_n(_II __first, _II __last, _OI __result)
10388 { return _OI(std::__copy_aux(__first, __last, __result.base())); }
10389 };
10390
10391 template<>
10392 struct __copy_normal<true, true>
10393 {
10394 template<typename _II, typename _OI>
10395 static _OI
10396 __copy_n(_II __first, _II __last, _OI __result)
10397 { return _OI(std::__copy_aux(__first.base(), __last.base(),
10398 __result.base())); }
10399 };
10400# 387 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10401 template<typename _InputIterator, typename _OutputIterator>
10402 inline _OutputIterator
10403 copy(_InputIterator __first, _InputIterator __last,
10404 _OutputIterator __result)
10405 {
10406
10407
10408
10409
10410 ;
10411
10412 const bool __in = __is_normal_iterator<_InputIterator>::__value;
10413 const bool __out = __is_normal_iterator<_OutputIterator>::__value;
10414 return std::__copy_normal<__in, __out>::__copy_n(__first, __last,
10415 __result);
10416 }
10417
10418
10419 template<typename _CharT>
10420 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
10421 ostreambuf_iterator<_CharT> >::__type
10422 copy(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
10423 ostreambuf_iterator<_CharT>);
10424
10425 template<bool, typename>
10426 struct __copy_backward
10427 {
10428 template<typename _BI1, typename _BI2>
10429 static _BI2
10430 __copy_b(_BI1 __first, _BI1 __last, _BI2 __result)
10431 {
10432 while (__first != __last)
10433 *--__result = *--__last;
10434 return __result;
10435 }
10436 };
10437
10438 template<bool _BoolType>
10439 struct __copy_backward<_BoolType, random_access_iterator_tag>
10440 {
10441 template<typename _BI1, typename _BI2>
10442 static _BI2
10443 __copy_b(_BI1 __first, _BI1 __last, _BI2 __result)
10444 {
10445 typename iterator_traits<_BI1>::difference_type __n;
10446 for (__n = __last - __first; __n > 0; --__n)
10447 *--__result = *--__last;
10448 return __result;
10449 }
10450 };
10451
10452 template<>
10453 struct __copy_backward<true, random_access_iterator_tag>
10454 {
10455 template<typename _Tp>
10456 static _Tp*
10457 __copy_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
10458 {
10459 const ptrdiff_t _Num = __last - __first;
10460 std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
10461 return __result - _Num;
10462 }
10463 };
10464
10465 template<typename _BI1, typename _BI2>
10466 inline _BI2
10467 __copy_backward_aux(_BI1 __first, _BI1 __last, _BI2 __result)
10468 {
10469 typedef typename iterator_traits<_BI1>::value_type _ValueType1;
10470 typedef typename iterator_traits<_BI2>::value_type _ValueType2;
10471 typedef typename iterator_traits<_BI1>::iterator_category _Category;
10472 const bool __simple = (__is_scalar<_ValueType1>::__value
10473 && __is_pointer<_BI1>::__value
10474 && __is_pointer<_BI2>::__value
10475 && __are_same<_ValueType1, _ValueType2>::__value);
10476
10477 return std::__copy_backward<__simple, _Category>::__copy_b(__first,
10478 __last,
10479 __result);
10480 }
10481
10482 template<bool, bool>
10483 struct __copy_backward_normal
10484 {
10485 template<typename _BI1, typename _BI2>
10486 static _BI2
10487 __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
10488 { return std::__copy_backward_aux(__first, __last, __result); }
10489 };
10490
10491 template<>
10492 struct __copy_backward_normal<true, false>
10493 {
10494 template<typename _BI1, typename _BI2>
10495 static _BI2
10496 __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
10497 { return std::__copy_backward_aux(__first.base(), __last.base(),
10498 __result); }
10499 };
10500
10501 template<>
10502 struct __copy_backward_normal<false, true>
10503 {
10504 template<typename _BI1, typename _BI2>
10505 static _BI2
10506 __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
10507 { return _BI2(std::__copy_backward_aux(__first, __last,
10508 __result.base())); }
10509 };
10510
10511 template<>
10512 struct __copy_backward_normal<true, true>
10513 {
10514 template<typename _BI1, typename _BI2>
10515 static _BI2
10516 __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
10517 { return _BI2(std::__copy_backward_aux(__first.base(), __last.base(),
10518 __result.base())); }
10519 };
10520# 524 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10521 template <typename _BI1, typename _BI2>
10522 inline _BI2
10523 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
10524 {
10525
10526
10527
10528
10529
10530
10531 ;
10532
10533 const bool __bi1 = __is_normal_iterator<_BI1>::__value;
10534 const bool __bi2 = __is_normal_iterator<_BI2>::__value;
10535 return std::__copy_backward_normal<__bi1, __bi2>::__copy_b_n(__first,
10536 __last,
10537 __result);
10538 }
10539
10540 template<bool>
10541 struct __fill
10542 {
10543 template<typename _ForwardIterator, typename _Tp>
10544 static void
10545 fill(_ForwardIterator __first, _ForwardIterator __last,
10546 const _Tp& __value)
10547 {
10548 for (; __first != __last; ++__first)
10549 *__first = __value;
10550 }
10551 };
10552
10553 template<>
10554 struct __fill<true>
10555 {
10556 template<typename _ForwardIterator, typename _Tp>
10557 static void
10558 fill(_ForwardIterator __first, _ForwardIterator __last,
10559 const _Tp& __value)
10560 {
10561 const _Tp __tmp = __value;
10562 for (; __first != __last; ++__first)
10563 *__first = __tmp;
10564 }
10565 };
10566# 581 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10567 template<typename _ForwardIterator, typename _Tp>
10568 void
10569 fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
10570 {
10571
10572
10573
10574 ;
10575
10576 const bool __scalar = __is_scalar<_Tp>::__value;
10577 std::__fill<__scalar>::fill(__first, __last, __value);
10578 }
10579
10580
10581 inline void
10582 fill(unsigned char* __first, unsigned char* __last, const unsigned char& __c)
10583 {
10584 ;
10585 const unsigned char __tmp = __c;
10586 std::memset(__first, __tmp, __last - __first);
10587 }
10588
10589 inline void
10590 fill(signed char* __first, signed char* __last, const signed char& __c)
10591 {
10592 ;
10593 const signed char __tmp = __c;
10594 std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
10595 }
10596
10597 inline void
10598 fill(char* __first, char* __last, const char& __c)
10599 {
10600 ;
10601 const char __tmp = __c;
10602 std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
10603 }
10604
10605 template<bool>
10606 struct __fill_n
10607 {
10608 template<typename _OutputIterator, typename _Size, typename _Tp>
10609 static _OutputIterator
10610 fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)
10611 {
10612 for (; __n > 0; --__n, ++__first)
10613 *__first = __value;
10614 return __first;
10615 }
10616 };
10617
10618 template<>
10619 struct __fill_n<true>
10620 {
10621 template<typename _OutputIterator, typename _Size, typename _Tp>
10622 static _OutputIterator
10623 fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)
10624 {
10625 const _Tp __tmp = __value;
10626 for (; __n > 0; --__n, ++__first)
10627 *__first = __tmp;
10628 return __first;
10629 }
10630 };
10631# 657 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10632 template<typename _OutputIterator, typename _Size, typename _Tp>
10633 _OutputIterator
10634 fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)
10635 {
10636
10637
10638
10639 const bool __scalar = __is_scalar<_Tp>::__value;
10640 return std::__fill_n<__scalar>::fill_n(__first, __n, __value);
10641 }
10642
10643 template<typename _Size>
10644 inline unsigned char*
10645 fill_n(unsigned char* __first, _Size __n, const unsigned char& __c)
10646 {
10647 std::fill(__first, __first + __n, __c);
10648 return __first + __n;
10649 }
10650
10651 template<typename _Size>
10652 inline signed char*
10653 fill_n(signed char* __first, _Size __n, const signed char& __c)
10654 {
10655 std::fill(__first, __first + __n, __c);
10656 return __first + __n;
10657 }
10658
10659 template<typename _Size>
10660 inline char*
10661 fill_n(char* __first, _Size __n, const char& __c)
10662 {
10663 std::fill(__first, __first + __n, __c);
10664 return __first + __n;
10665 }
10666# 704 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10667 template<typename _InputIterator1, typename _InputIterator2>
10668 pair<_InputIterator1, _InputIterator2>
10669 mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
10670 _InputIterator2 __first2)
10671 {
10672
10673
10674
10675
10676
10677
10678 ;
10679
10680 while (__first1 != __last1 && *__first1 == *__first2)
10681 {
10682 ++__first1;
10683 ++__first2;
10684 }
10685 return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
10686 }
10687# 739 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10688 template<typename _InputIterator1, typename _InputIterator2,
10689 typename _BinaryPredicate>
10690 pair<_InputIterator1, _InputIterator2>
10691 mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
10692 _InputIterator2 __first2, _BinaryPredicate __binary_pred)
10693 {
10694
10695
10696
10697 ;
10698
10699 while (__first1 != __last1 && __binary_pred(*__first1, *__first2))
10700 {
10701 ++__first1;
10702 ++__first2;
10703 }
10704 return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
10705 }
10706# 769 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10707 template<typename _InputIterator1, typename _InputIterator2>
10708 inline bool
10709 equal(_InputIterator1 __first1, _InputIterator1 __last1,
10710 _InputIterator2 __first2)
10711 {
10712
10713
10714
10715
10716
10717
10718 ;
10719
10720 for (; __first1 != __last1; ++__first1, ++__first2)
10721 if (!(*__first1 == *__first2))
10722 return false;
10723 return true;
10724 }
10725# 801 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10726 template<typename _InputIterator1, typename _InputIterator2,
10727 typename _BinaryPredicate>
10728 inline bool
10729 equal(_InputIterator1 __first1, _InputIterator1 __last1,
10730 _InputIterator2 __first2,
10731 _BinaryPredicate __binary_pred)
10732 {
10733
10734
10735
10736 ;
10737
10738 for (; __first1 != __last1; ++__first1, ++__first2)
10739 if (!__binary_pred(*__first1, *__first2))
10740 return false;
10741 return true;
10742 }
10743# 833 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10744 template<typename _InputIterator1, typename _InputIterator2>
10745 bool
10746 lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,
10747 _InputIterator2 __first2, _InputIterator2 __last2)
10748 {
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758 ;
10759 ;
10760
10761 for (; __first1 != __last1 && __first2 != __last2;
10762 ++__first1, ++__first2)
10763 {
10764 if (*__first1 < *__first2)
10765 return true;
10766 if (*__first2 < *__first1)
10767 return false;
10768 }
10769 return __first1 == __last1 && __first2 != __last2;
10770 }
10771# 873 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
10772 template<typename _InputIterator1, typename _InputIterator2,
10773 typename _Compare>
10774 bool
10775 lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,
10776 _InputIterator2 __first2, _InputIterator2 __last2,
10777 _Compare __comp)
10778 {
10779
10780
10781
10782 ;
10783 ;
10784
10785 for (; __first1 != __last1 && __first2 != __last2;
10786 ++__first1, ++__first2)
10787 {
10788 if (__comp(*__first1, *__first2))
10789 return true;
10790 if (__comp(*__first2, *__first1))
10791 return false;
10792 }
10793 return __first1 == __last1 && __first2 != __last2;
10794 }
10795
10796 inline bool
10797 lexicographical_compare(const unsigned char* __first1,
10798 const unsigned char* __last1,
10799 const unsigned char* __first2,
10800 const unsigned char* __last2)
10801 {
10802 ;
10803 ;
10804
10805 const size_t __len1 = __last1 - __first1;
10806 const size_t __len2 = __last2 - __first2;
10807 const int __result = std::memcmp(__first1, __first2,
10808 std::min(__len1, __len2));
10809 return __result != 0 ? __result < 0 : __len1 < __len2;
10810 }
10811
10812 inline bool
10813 lexicographical_compare(const char* __first1, const char* __last1,
10814 const char* __first2, const char* __last2)
10815 {
10816 ;
10817 ;
10818
10819
10820 return std::lexicographical_compare((const signed char*) __first1,
10821 (const signed char*) __last1,
10822 (const signed char*) __first2,
10823 (const signed char*) __last2);
10824
10825
10826
10827
10828
10829
10830 }
10831
10832}
10833# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 2 3
10834
10835
10836namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
10837# 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
10838 template <class _CharT>
10839 struct _Char_types
10840 {
10841 typedef unsigned long int_type;
10842 typedef std::streampos pos_type;
10843 typedef std::streamoff off_type;
10844 typedef std::mbstate_t state_type;
10845 };
10846# 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
10847 template<typename _CharT>
10848 struct char_traits
10849 {
10850 typedef _CharT char_type;
10851 typedef typename _Char_types<_CharT>::int_type int_type;
10852 typedef typename _Char_types<_CharT>::pos_type pos_type;
10853 typedef typename _Char_types<_CharT>::off_type off_type;
10854 typedef typename _Char_types<_CharT>::state_type state_type;
10855
10856 static void
10857 assign(char_type& __c1, const char_type& __c2)
10858 { __c1 = __c2; }
10859
10860 static bool
10861 eq(const char_type& __c1, const char_type& __c2)
10862 { return __c1 == __c2; }
10863
10864 static bool
10865 lt(const char_type& __c1, const char_type& __c2)
10866 { return __c1 < __c2; }
10867
10868 static int
10869 compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
10870
10871 static std::size_t
10872 length(const char_type* __s);
10873
10874 static const char_type*
10875 find(const char_type* __s, std::size_t __n, const char_type& __a);
10876
10877 static char_type*
10878 move(char_type* __s1, const char_type* __s2, std::size_t __n);
10879
10880 static char_type*
10881 copy(char_type* __s1, const char_type* __s2, std::size_t __n);
10882
10883 static char_type*
10884 assign(char_type* __s, std::size_t __n, char_type __a);
10885
10886 static char_type
10887 to_char_type(const int_type& __c)
10888 { return static_cast<char_type>(__c); }
10889
10890 static int_type
10891 to_int_type(const char_type& __c)
10892 { return static_cast<int_type>(__c); }
10893
10894 static bool
10895 eq_int_type(const int_type& __c1, const int_type& __c2)
10896 { return __c1 == __c2; }
10897
10898 static int_type
10899 eof()
10900 { return static_cast<int_type>((-1)); }
10901
10902 static int_type
10903 not_eof(const int_type& __c)
10904 { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
10905 };
10906
10907 template<typename _CharT>
10908 int
10909 char_traits<_CharT>::
10910 compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
10911 {
10912 for (std::size_t __i = 0; __i < __n; ++__i)
10913 if (lt(__s1[__i], __s2[__i]))
10914 return -1;
10915 else if (lt(__s2[__i], __s1[__i]))
10916 return 1;
10917 return 0;
10918 }
10919
10920 template<typename _CharT>
10921 std::size_t
10922 char_traits<_CharT>::
10923 length(const char_type* __p)
10924 {
10925 std::size_t __i = 0;
10926 while (!eq(__p[__i], char_type()))
10927 ++__i;
10928 return __i;
10929 }
10930
10931 template<typename _CharT>
10932 const typename char_traits<_CharT>::char_type*
10933 char_traits<_CharT>::
10934 find(const char_type* __s, std::size_t __n, const char_type& __a)
10935 {
10936 for (std::size_t __i = 0; __i < __n; ++__i)
10937 if (eq(__s[__i], __a))
10938 return __s + __i;
10939 return 0;
10940 }
10941
10942 template<typename _CharT>
10943 typename char_traits<_CharT>::char_type*
10944 char_traits<_CharT>::
10945 move(char_type* __s1, const char_type* __s2, std::size_t __n)
10946 {
10947 return static_cast<_CharT*>(std::memmove(__s1, __s2,
10948 __n * sizeof(char_type)));
10949 }
10950
10951 template<typename _CharT>
10952 typename char_traits<_CharT>::char_type*
10953 char_traits<_CharT>::
10954 copy(char_type* __s1, const char_type* __s2, std::size_t __n)
10955 {
10956 std::copy(__s2, __s2 + __n, __s1);
10957 return __s1;
10958 }
10959
10960 template<typename _CharT>
10961 typename char_traits<_CharT>::char_type*
10962 char_traits<_CharT>::
10963 assign(char_type* __s, std::size_t __n, char_type __a)
10964 {
10965 std::fill_n(__s, __n, __a);
10966 return __s;
10967 }
10968
10969}
10970
10971namespace std __attribute__ ((__visibility__ ("default"))) {
10972# 225 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
10973 template<class _CharT>
10974 struct char_traits : public __gnu_cxx::char_traits<_CharT>
10975 { };
10976
10977
10978
10979 template<>
10980 struct char_traits<char>
10981 {
10982 typedef char char_type;
10983 typedef int int_type;
10984 typedef streampos pos_type;
10985 typedef streamoff off_type;
10986 typedef mbstate_t state_type;
10987
10988 static void
10989 assign(char_type& __c1, const char_type& __c2)
10990 { __c1 = __c2; }
10991
10992 static bool
10993 eq(const char_type& __c1, const char_type& __c2)
10994 { return __c1 == __c2; }
10995
10996 static bool
10997 lt(const char_type& __c1, const char_type& __c2)
10998 { return __c1 < __c2; }
10999
11000 static int
11001 compare(const char_type* __s1, const char_type* __s2, size_t __n)
11002 { return memcmp(__s1, __s2, __n); }
11003
11004 static size_t
11005 length(const char_type* __s)
11006 { return strlen(__s); }
11007
11008 static const char_type*
11009 find(const char_type* __s, size_t __n, const char_type& __a)
11010 { return static_cast<const char_type*>(memchr(__s, __a, __n)); }
11011
11012 static char_type*
11013 move(char_type* __s1, const char_type* __s2, size_t __n)
11014 { return static_cast<char_type*>(memmove(__s1, __s2, __n)); }
11015
11016 static char_type*
11017 copy(char_type* __s1, const char_type* __s2, size_t __n)
11018 { return static_cast<char_type*>(memcpy(__s1, __s2, __n)); }
11019
11020 static char_type*
11021 assign(char_type* __s, size_t __n, char_type __a)
11022 { return static_cast<char_type*>(memset(__s, __a, __n)); }
11023
11024 static char_type
11025 to_char_type(const int_type& __c)
11026 { return static_cast<char_type>(__c); }
11027
11028
11029
11030 static int_type
11031 to_int_type(const char_type& __c)
11032 { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
11033
11034 static bool
11035 eq_int_type(const int_type& __c1, const int_type& __c2)
11036 { return __c1 == __c2; }
11037
11038 static int_type
11039 eof() { return static_cast<int_type>((-1)); }
11040
11041 static int_type
11042 not_eof(const int_type& __c)
11043 { return (__c == eof()) ? 0 : __c; }
11044 };
11045
11046
11047
11048
11049 template<>
11050 struct char_traits<wchar_t>
11051 {
11052 typedef wchar_t char_type;
11053 typedef wint_t int_type;
11054 typedef streamoff off_type;
11055 typedef wstreampos pos_type;
11056 typedef mbstate_t state_type;
11057
11058 static void
11059 assign(char_type& __c1, const char_type& __c2)
11060 { __c1 = __c2; }
11061
11062 static bool
11063 eq(const char_type& __c1, const char_type& __c2)
11064 { return __c1 == __c2; }
11065
11066 static bool
11067 lt(const char_type& __c1, const char_type& __c2)
11068 { return __c1 < __c2; }
11069
11070 static int
11071 compare(const char_type* __s1, const char_type* __s2, size_t __n)
11072 { return wmemcmp(__s1, __s2, __n); }
11073
11074 static size_t
11075 length(const char_type* __s)
11076 { return wcslen(__s); }
11077
11078 static const char_type*
11079 find(const char_type* __s, size_t __n, const char_type& __a)
11080 { return wmemchr(__s, __a, __n); }
11081
11082 static char_type*
11083 move(char_type* __s1, const char_type* __s2, size_t __n)
11084 { return wmemmove(__s1, __s2, __n); }
11085
11086 static char_type*
11087 copy(char_type* __s1, const char_type* __s2, size_t __n)
11088 { return wmemcpy(__s1, __s2, __n); }
11089
11090 static char_type*
11091 assign(char_type* __s, size_t __n, char_type __a)
11092 { return wmemset(__s, __a, __n); }
11093
11094 static char_type
11095 to_char_type(const int_type& __c) { return char_type(__c); }
11096
11097 static int_type
11098 to_int_type(const char_type& __c) { return int_type(__c); }
11099
11100 static bool
11101 eq_int_type(const int_type& __c1, const int_type& __c2)
11102 { return __c1 == __c2; }
11103
11104 static int_type
11105 eof() { return static_cast<int_type>((0xffffffffu)); }
11106
11107 static int_type
11108 not_eof(const int_type& __c)
11109 { return eq_int_type(__c, eof()) ? 0 : __c; }
11110 };
11111
11112
11113}
11114# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
11115# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 1 3
11116# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
11117
11118# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
11119
11120
11121# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/allocator.h" 1 3
11122# 53 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/allocator.h" 3
11123# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++allocator.h" 1 3
11124# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++allocator.h" 3
11125# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/new_allocator.h" 1 3
11126# 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/new_allocator.h" 3
11127# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/new" 1 3
11128# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/new" 3
11129#pragma GCC visibility push(default)
11130
11131extern "C++" {
11132
11133namespace std
11134{
11135
11136
11137
11138
11139
11140 class bad_alloc : public exception
11141 {
11142 public:
11143 bad_alloc() throw() { }
11144
11145
11146
11147 virtual ~bad_alloc() throw();
11148
11149
11150 virtual const char* what() const throw();
11151 };
11152
11153 struct nothrow_t { };
11154
11155 extern const nothrow_t nothrow;
11156
11157
11158
11159 typedef void (*new_handler)();
11160
11161
11162
11163 new_handler set_new_handler(new_handler) throw();
11164}
11165# 95 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/new" 3
11166void* operator new(std::size_t) throw (std::bad_alloc);
11167void* operator new[](std::size_t) throw (std::bad_alloc);
11168void operator delete(void*) throw();
11169void operator delete[](void*) throw();
11170void* operator new(std::size_t, const std::nothrow_t&) throw();
11171void* operator new[](std::size_t, const std::nothrow_t&) throw();
11172void operator delete(void*, const std::nothrow_t&) throw();
11173void operator delete[](void*, const std::nothrow_t&) throw();
11174
11175
11176inline void* operator new(std::size_t, void* __p) throw() { return __p; }
11177inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
11178
11179
11180inline void operator delete (void*, void*) throw() { }
11181inline void operator delete[](void*, void*) throw() { }
11182
11183}
11184
11185#pragma GCC visibility pop
11186# 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/new_allocator.h" 2 3
11187
11188
11189namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
11190
11191 using std::size_t;
11192 using std::ptrdiff_t;
11193# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/new_allocator.h" 3
11194 template<typename _Tp>
11195 class new_allocator
11196 {
11197 public:
11198 typedef size_t size_type;
11199 typedef ptrdiff_t difference_type;
11200 typedef _Tp* pointer;
11201 typedef const _Tp* const_pointer;
11202 typedef _Tp& reference;
11203 typedef const _Tp& const_reference;
11204 typedef _Tp value_type;
11205
11206 template<typename _Tp1>
11207 struct rebind
11208 { typedef new_allocator<_Tp1> other; };
11209
11210 new_allocator() throw() { }
11211
11212 new_allocator(const new_allocator&) throw() { }
11213
11214 template<typename _Tp1>
11215 new_allocator(const new_allocator<_Tp1>&) throw() { }
11216
11217 ~new_allocator() throw() { }
11218
11219 pointer
11220 address(reference __x) const { return &__x; }
11221
11222 const_pointer
11223 address(const_reference __x) const { return &__x; }
11224
11225
11226
11227 pointer
11228 allocate(size_type __n, const void* = 0)
11229 {
11230 if (__builtin_expect(__n > this->max_size(), false))
11231 std::__throw_bad_alloc();
11232
11233 return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
11234 }
11235
11236
11237 void
11238 deallocate(pointer __p, size_type)
11239 { ::operator delete(__p); }
11240
11241 size_type
11242 max_size() const throw()
11243 { return size_t(-1) / sizeof(_Tp); }
11244
11245
11246
11247 void
11248 construct(pointer __p, const _Tp& __val)
11249 { ::new(__p) _Tp(__val); }
11250
11251 void
11252 destroy(pointer __p) { __p->~_Tp(); }
11253 };
11254
11255 template<typename _Tp>
11256 inline bool
11257 operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
11258 { return true; }
11259
11260 template<typename _Tp>
11261 inline bool
11262 operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
11263 { return false; }
11264
11265}
11266# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++allocator.h" 2 3
11267# 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/allocator.h" 2 3
11268
11269
11270
11271namespace std __attribute__ ((__visibility__ ("default"))) {
11272
11273 template<typename _Tp>
11274 class allocator;
11275
11276
11277 template<>
11278 class allocator<void>
11279 {
11280 public:
11281 typedef size_t size_type;
11282 typedef ptrdiff_t difference_type;
11283 typedef void* pointer;
11284 typedef const void* const_pointer;
11285 typedef void value_type;
11286
11287 template<typename _Tp1>
11288 struct rebind
11289 { typedef allocator<_Tp1> other; };
11290 };
11291
11292
11293
11294
11295
11296
11297
11298 template<typename _Tp>
11299 class allocator: public __gnu_cxx::new_allocator<_Tp>
11300 {
11301 public:
11302 typedef size_t size_type;
11303 typedef ptrdiff_t difference_type;
11304 typedef _Tp* pointer;
11305 typedef const _Tp* const_pointer;
11306 typedef _Tp& reference;
11307 typedef const _Tp& const_reference;
11308 typedef _Tp value_type;
11309
11310 template<typename _Tp1>
11311 struct rebind
11312 { typedef allocator<_Tp1> other; };
11313
11314 allocator() throw() { }
11315
11316 allocator(const allocator& __a) throw()
11317 : __gnu_cxx::new_allocator<_Tp>(__a) { }
11318
11319 template<typename _Tp1>
11320 allocator(const allocator<_Tp1>&) throw() { }
11321
11322 ~allocator() throw() { }
11323
11324
11325 };
11326
11327 template<typename _T1, typename _T2>
11328 inline bool
11329 operator==(const allocator<_T1>&, const allocator<_T2>&)
11330 { return true; }
11331
11332 template<typename _T1, typename _T2>
11333 inline bool
11334 operator!=(const allocator<_T1>&, const allocator<_T2>&)
11335 { return false; }
11336
11337
11338
11339
11340
11341 extern template class allocator<char>;
11342 extern template class allocator<wchar_t>;
11343
11344
11345
11346
11347
11348
11349 template<typename _Alloc, bool = std::__is_empty<_Alloc>::__value>
11350 struct __alloc_swap
11351 { static void _S_do_it(_Alloc&, _Alloc&) { } };
11352
11353 template<typename _Alloc>
11354 struct __alloc_swap<_Alloc, false>
11355 {
11356 static void
11357 _S_do_it(_Alloc& __one, _Alloc& __two)
11358 {
11359
11360 if (__one != __two)
11361 swap(__one, __two);
11362 }
11363 };
11364
11365}
11366# 55 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
11367# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 1 3
11368# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
11369namespace std __attribute__ ((__visibility__ ("default"))) {
11370
11371
11372
11373
11374
11375
11376
11377 template<typename _T1, typename _T2>
11378 inline void
11379 _Construct(_T1* __p, const _T2& __value)
11380 {
11381
11382
11383 ::new(static_cast<void*>(__p)) _T1(__value);
11384 }
11385
11386
11387
11388
11389
11390
11391
11392 template<typename _T1>
11393 inline void
11394 _Construct(_T1* __p)
11395 {
11396
11397
11398 ::new(static_cast<void*>(__p)) _T1();
11399 }
11400
11401
11402
11403
11404
11405
11406 template<typename _Tp>
11407 inline void
11408 _Destroy(_Tp* __pointer)
11409 { __pointer->~_Tp(); }
11410# 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
11411 template<typename _ForwardIterator>
11412 inline void
11413 __destroy_aux(_ForwardIterator __first, _ForwardIterator __last,
11414 __false_type)
11415 {
11416 for (; __first != __last; ++__first)
11417 std::_Destroy(&*__first);
11418 }
11419# 134 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
11420 template<typename _ForwardIterator>
11421 inline void
11422 __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type)
11423 { }
11424# 146 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
11425 template<typename _ForwardIterator>
11426 inline void
11427 _Destroy(_ForwardIterator __first, _ForwardIterator __last)
11428 {
11429 typedef typename iterator_traits<_ForwardIterator>::value_type
11430 _Value_type;
11431 typedef typename std::__is_scalar<_Value_type>::__type
11432 _Has_trivial_destructor;
11433
11434 std::__destroy_aux(__first, __last, _Has_trivial_destructor());
11435 }
11436# 166 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
11437 template <typename _Tp> class allocator;
11438
11439 template<typename _ForwardIterator, typename _Allocator>
11440 void
11441 _Destroy(_ForwardIterator __first, _ForwardIterator __last,
11442 _Allocator __alloc)
11443 {
11444 for (; __first != __last; ++__first)
11445 __alloc.destroy(&*__first);
11446 }
11447
11448 template<typename _ForwardIterator, typename _Tp>
11449 inline void
11450 _Destroy(_ForwardIterator __first, _ForwardIterator __last,
11451 allocator<_Tp>)
11452 {
11453 _Destroy(__first, __last);
11454 }
11455
11456}
11457# 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
11458
11459# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 1 3
11460# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
11461namespace std __attribute__ ((__visibility__ ("default"))) {
11462
11463
11464 template<typename _InputIterator, typename _ForwardIterator>
11465 inline _ForwardIterator
11466 __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last,
11467 _ForwardIterator __result,
11468 __true_type)
11469 { return std::copy(__first, __last, __result); }
11470
11471 template<typename _InputIterator, typename _ForwardIterator>
11472 inline _ForwardIterator
11473 __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last,
11474 _ForwardIterator __result,
11475 __false_type)
11476 {
11477 _ForwardIterator __cur = __result;
11478 try
11479 {
11480 for (; __first != __last; ++__first, ++__cur)
11481 std::_Construct(&*__cur, *__first);
11482 return __cur;
11483 }
11484 catch(...)
11485 {
11486 std::_Destroy(__result, __cur);
11487 throw;
11488 }
11489 }
11490# 106 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
11491 template<typename _InputIterator, typename _ForwardIterator>
11492 inline _ForwardIterator
11493 uninitialized_copy(_InputIterator __first, _InputIterator __last,
11494 _ForwardIterator __result)
11495 {
11496 typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
11497 typedef typename std::__is_scalar<_ValueType>::__type _Is_POD;
11498 return std::__uninitialized_copy_aux(__first, __last, __result,
11499 _Is_POD());
11500 }
11501
11502 inline char*
11503 uninitialized_copy(const char* __first, const char* __last, char* __result)
11504 {
11505 std::memmove(__result, __first, __last - __first);
11506 return __result + (__last - __first);
11507 }
11508
11509 inline wchar_t*
11510 uninitialized_copy(const wchar_t* __first, const wchar_t* __last,
11511 wchar_t* __result)
11512 {
11513 std::memmove(__result, __first, sizeof(wchar_t) * (__last - __first));
11514 return __result + (__last - __first);
11515 }
11516
11517
11518
11519 template<typename _ForwardIterator, typename _Tp>
11520 inline void
11521 __uninitialized_fill_aux(_ForwardIterator __first,
11522 _ForwardIterator __last,
11523 const _Tp& __x, __true_type)
11524 { std::fill(__first, __last, __x); }
11525
11526 template<typename _ForwardIterator, typename _Tp>
11527 void
11528 __uninitialized_fill_aux(_ForwardIterator __first, _ForwardIterator __last,
11529 const _Tp& __x, __false_type)
11530 {
11531 _ForwardIterator __cur = __first;
11532 try
11533 {
11534 for (; __cur != __last; ++__cur)
11535 std::_Construct(&*__cur, __x);
11536 }
11537 catch(...)
11538 {
11539 std::_Destroy(__first, __cur);
11540 throw;
11541 }
11542 }
11543# 168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
11544 template<typename _ForwardIterator, typename _Tp>
11545 inline void
11546 uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
11547 const _Tp& __x)
11548 {
11549 typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
11550 typedef typename std::__is_scalar<_ValueType>::__type _Is_POD;
11551 std::__uninitialized_fill_aux(__first, __last, __x, _Is_POD());
11552 }
11553
11554
11555
11556 template<typename _ForwardIterator, typename _Size, typename _Tp>
11557 inline void
11558 __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,
11559 const _Tp& __x, __true_type)
11560 { std::fill_n(__first, __n, __x); }
11561
11562 template<typename _ForwardIterator, typename _Size, typename _Tp>
11563 void
11564 __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,
11565 const _Tp& __x, __false_type)
11566 {
11567 _ForwardIterator __cur = __first;
11568 try
11569 {
11570 for (; __n > 0; --__n, ++__cur)
11571 std::_Construct(&*__cur, __x);
11572 }
11573 catch(...)
11574 {
11575 std::_Destroy(__first, __cur);
11576 throw;
11577 }
11578 }
11579# 213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
11580 template<typename _ForwardIterator, typename _Size, typename _Tp>
11581 inline void
11582 uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
11583 {
11584 typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
11585 typedef typename std::__is_scalar<_ValueType>::__type _Is_POD;
11586 std::__uninitialized_fill_n_aux(__first, __n, __x, _Is_POD());
11587 }
11588
11589
11590
11591
11592
11593
11594
11595 template<typename _InputIterator, typename _ForwardIterator,
11596 typename _Allocator>
11597 _ForwardIterator
11598 __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
11599 _ForwardIterator __result,
11600 _Allocator __alloc)
11601 {
11602 _ForwardIterator __cur = __result;
11603 try
11604 {
11605 for (; __first != __last; ++__first, ++__cur)
11606 __alloc.construct(&*__cur, *__first);
11607 return __cur;
11608 }
11609 catch(...)
11610 {
11611 std::_Destroy(__result, __cur, __alloc);
11612 throw;
11613 }
11614 }
11615
11616 template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
11617 inline _ForwardIterator
11618 __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
11619 _ForwardIterator __result,
11620 allocator<_Tp>)
11621 { return std::uninitialized_copy(__first, __last, __result); }
11622
11623 template<typename _ForwardIterator, typename _Tp, typename _Allocator>
11624 void
11625 __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
11626 const _Tp& __x, _Allocator __alloc)
11627 {
11628 _ForwardIterator __cur = __first;
11629 try
11630 {
11631 for (; __cur != __last; ++__cur)
11632 __alloc.construct(&*__cur, __x);
11633 }
11634 catch(...)
11635 {
11636 std::_Destroy(__first, __cur, __alloc);
11637 throw;
11638 }
11639 }
11640
11641 template<typename _ForwardIterator, typename _Tp, typename _Tp2>
11642 inline void
11643 __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
11644 const _Tp& __x, allocator<_Tp2>)
11645 { std::uninitialized_fill(__first, __last, __x); }
11646
11647 template<typename _ForwardIterator, typename _Size, typename _Tp,
11648 typename _Allocator>
11649 void
11650 __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
11651 const _Tp& __x,
11652 _Allocator __alloc)
11653 {
11654 _ForwardIterator __cur = __first;
11655 try
11656 {
11657 for (; __n > 0; --__n, ++__cur)
11658 __alloc.construct(&*__cur, __x);
11659 }
11660 catch(...)
11661 {
11662 std::_Destroy(__first, __cur, __alloc);
11663 throw;
11664 }
11665 }
11666
11667 template<typename _ForwardIterator, typename _Size, typename _Tp,
11668 typename _Tp2>
11669 inline void
11670 __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
11671 const _Tp& __x,
11672 allocator<_Tp2>)
11673 { std::uninitialized_fill_n(__first, __n, __x); }
11674# 318 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
11675 template<typename _InputIterator1, typename _InputIterator2,
11676 typename _ForwardIterator, typename _Allocator>
11677 inline _ForwardIterator
11678 __uninitialized_copy_copy(_InputIterator1 __first1,
11679 _InputIterator1 __last1,
11680 _InputIterator2 __first2,
11681 _InputIterator2 __last2,
11682 _ForwardIterator __result,
11683 _Allocator __alloc)
11684 {
11685 _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
11686 __result,
11687 __alloc);
11688 try
11689 {
11690 return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
11691 }
11692 catch(...)
11693 {
11694 std::_Destroy(__result, __mid, __alloc);
11695 throw;
11696 }
11697 }
11698
11699
11700
11701
11702 template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
11703 typename _Allocator>
11704 inline _ForwardIterator
11705 __uninitialized_fill_copy(_ForwardIterator __result, _ForwardIterator __mid,
11706 const _Tp& __x, _InputIterator __first,
11707 _InputIterator __last,
11708 _Allocator __alloc)
11709 {
11710 std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
11711 try
11712 {
11713 return std::__uninitialized_copy_a(__first, __last, __mid, __alloc);
11714 }
11715 catch(...)
11716 {
11717 std::_Destroy(__result, __mid, __alloc);
11718 throw;
11719 }
11720 }
11721
11722
11723
11724
11725 template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
11726 typename _Allocator>
11727 inline void
11728 __uninitialized_copy_fill(_InputIterator __first1, _InputIterator __last1,
11729 _ForwardIterator __first2,
11730 _ForwardIterator __last2, const _Tp& __x,
11731 _Allocator __alloc)
11732 {
11733 _ForwardIterator __mid2 = std::__uninitialized_copy_a(__first1, __last1,
11734 __first2,
11735 __alloc);
11736 try
11737 {
11738 std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
11739 }
11740 catch(...)
11741 {
11742 std::_Destroy(__first2, __mid2, __alloc);
11743 throw;
11744 }
11745 }
11746
11747}
11748# 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
11749# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_raw_storage_iter.h" 1 3
11750# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_raw_storage_iter.h" 3
11751namespace std __attribute__ ((__visibility__ ("default"))) {
11752
11753
11754
11755
11756
11757 template <class _ForwardIterator, class _Tp>
11758 class raw_storage_iterator
11759 : public iterator<output_iterator_tag, void, void, void, void>
11760 {
11761 protected:
11762 _ForwardIterator _M_iter;
11763
11764 public:
11765 explicit
11766 raw_storage_iterator(_ForwardIterator __x)
11767 : _M_iter(__x) {}
11768
11769 raw_storage_iterator&
11770 operator*() { return *this; }
11771
11772 raw_storage_iterator&
11773 operator=(const _Tp& __element)
11774 {
11775 std::_Construct(&*_M_iter, __element);
11776 return *this;
11777 }
11778
11779 raw_storage_iterator<_ForwardIterator, _Tp>&
11780 operator++()
11781 {
11782 ++_M_iter;
11783 return *this;
11784 }
11785
11786 raw_storage_iterator<_ForwardIterator, _Tp>
11787 operator++(int)
11788 {
11789 raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this;
11790 ++_M_iter;
11791 return __tmp;
11792 }
11793 };
11794
11795}
11796# 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
11797
11798# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 1 3
11799# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
11800
11801# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
11802# 150 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
11803namespace std __attribute__ ((__visibility__ ("default"))) {
11804
11805
11806
11807
11808
11809
11810 enum float_round_style
11811 {
11812 round_indeterminate = -1,
11813 round_toward_zero = 0,
11814 round_to_nearest = 1,
11815 round_toward_infinity = 2,
11816 round_toward_neg_infinity = 3
11817 };
11818
11819
11820
11821
11822
11823
11824
11825 enum float_denorm_style
11826 {
11827
11828 denorm_indeterminate = -1,
11829
11830 denorm_absent = 0,
11831
11832 denorm_present = 1
11833 };
11834# 192 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
11835 struct __numeric_limits_base
11836 {
11837
11838
11839 static const bool is_specialized = false;
11840
11841
11842
11843
11844 static const int digits = 0;
11845
11846 static const int digits10 = 0;
11847
11848 static const bool is_signed = false;
11849
11850
11851
11852
11853
11854 static const bool is_integer = false;
11855
11856
11857
11858
11859 static const bool is_exact = false;
11860
11861
11862 static const int radix = 0;
11863
11864
11865
11866 static const int min_exponent = 0;
11867
11868
11869 static const int min_exponent10 = 0;
11870
11871
11872
11873 static const int max_exponent = 0;
11874
11875
11876 static const int max_exponent10 = 0;
11877
11878
11879 static const bool has_infinity = false;
11880
11881
11882 static const bool has_quiet_NaN = false;
11883
11884
11885 static const bool has_signaling_NaN = false;
11886
11887 static const float_denorm_style has_denorm = denorm_absent;
11888
11889
11890 static const bool has_denorm_loss = false;
11891
11892
11893
11894 static const bool is_iec559 = false;
11895
11896
11897
11898 static const bool is_bounded = false;
11899
11900
11901
11902
11903 static const bool is_modulo = false;
11904
11905
11906 static const bool traps = false;
11907
11908 static const bool tinyness_before = false;
11909
11910
11911
11912 static const float_round_style round_style = round_toward_zero;
11913 };
11914# 285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
11915 template<typename _Tp>
11916 struct numeric_limits : public __numeric_limits_base
11917 {
11918
11919
11920 static _Tp min() throw() { return static_cast<_Tp>(0); }
11921
11922 static _Tp max() throw() { return static_cast<_Tp>(0); }
11923
11924
11925 static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
11926
11927 static _Tp round_error() throw() { return static_cast<_Tp>(0); }
11928
11929 static _Tp infinity() throw() { return static_cast<_Tp>(0); }
11930
11931 static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
11932
11933
11934 static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
11935
11936
11937
11938 static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
11939 };
11940
11941
11942
11943
11944
11945 template<>
11946 struct numeric_limits<bool>
11947 {
11948 static const bool is_specialized = true;
11949
11950 static bool min() throw()
11951 { return false; }
11952 static bool max() throw()
11953 { return true; }
11954
11955 static const int digits = 1;
11956 static const int digits10 = 0;
11957 static const bool is_signed = false;
11958 static const bool is_integer = true;
11959 static const bool is_exact = true;
11960 static const int radix = 2;
11961 static bool epsilon() throw()
11962 { return false; }
11963 static bool round_error() throw()
11964 { return false; }
11965
11966 static const int min_exponent = 0;
11967 static const int min_exponent10 = 0;
11968 static const int max_exponent = 0;
11969 static const int max_exponent10 = 0;
11970
11971 static const bool has_infinity = false;
11972 static const bool has_quiet_NaN = false;
11973 static const bool has_signaling_NaN = false;
11974 static const float_denorm_style has_denorm = denorm_absent;
11975 static const bool has_denorm_loss = false;
11976
11977 static bool infinity() throw()
11978 { return false; }
11979 static bool quiet_NaN() throw()
11980 { return false; }
11981 static bool signaling_NaN() throw()
11982 { return false; }
11983 static bool denorm_min() throw()
11984 { return false; }
11985
11986 static const bool is_iec559 = false;
11987 static const bool is_bounded = true;
11988 static const bool is_modulo = false;
11989
11990
11991
11992
11993 static const bool traps = true;
11994 static const bool tinyness_before = false;
11995 static const float_round_style round_style = round_toward_zero;
11996 };
11997
11998
11999 template<>
12000 struct numeric_limits<char>
12001 {
12002 static const bool is_specialized = true;
12003
12004 static char min() throw()
12005 { return (((char)(-1) < 0) ? (char)1 << (sizeof(char) * 8 - ((char)(-1) < 0)) : (char)0); }
12006 static char max() throw()
12007 { return (((char)(-1) < 0) ? ((char)1 << (sizeof(char) * 8 - ((char)(-1) < 0))) - 1 : ~(char)0); }
12008
12009 static const int digits = (sizeof(char) * 8 - ((char)(-1) < 0));
12010 static const int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643 / 2136);
12011 static const bool is_signed = ((char)(-1) < 0);
12012 static const bool is_integer = true;
12013 static const bool is_exact = true;
12014 static const int radix = 2;
12015 static char epsilon() throw()
12016 { return 0; }
12017 static char round_error() throw()
12018 { return 0; }
12019
12020 static const int min_exponent = 0;
12021 static const int min_exponent10 = 0;
12022 static const int max_exponent = 0;
12023 static const int max_exponent10 = 0;
12024
12025 static const bool has_infinity = false;
12026 static const bool has_quiet_NaN = false;
12027 static const bool has_signaling_NaN = false;
12028 static const float_denorm_style has_denorm = denorm_absent;
12029 static const bool has_denorm_loss = false;
12030
12031 static char infinity() throw()
12032 { return char(); }
12033 static char quiet_NaN() throw()
12034 { return char(); }
12035 static char signaling_NaN() throw()
12036 { return char(); }
12037 static char denorm_min() throw()
12038 { return static_cast<char>(0); }
12039
12040 static const bool is_iec559 = false;
12041 static const bool is_bounded = true;
12042 static const bool is_modulo = true;
12043
12044 static const bool traps = true;
12045 static const bool tinyness_before = false;
12046 static const float_round_style round_style = round_toward_zero;
12047 };
12048
12049
12050 template<>
12051 struct numeric_limits<signed char>
12052 {
12053 static const bool is_specialized = true;
12054
12055 static signed char min() throw()
12056 { return -127 - 1; }
12057 static signed char max() throw()
12058 { return 127; }
12059
12060 static const int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0));
12061 static const int digits10 = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643 / 2136);
12062 static const bool is_signed = true;
12063 static const bool is_integer = true;
12064 static const bool is_exact = true;
12065 static const int radix = 2;
12066 static signed char epsilon() throw()
12067 { return 0; }
12068 static signed char round_error() throw()
12069 { return 0; }
12070
12071 static const int min_exponent = 0;
12072 static const int min_exponent10 = 0;
12073 static const int max_exponent = 0;
12074 static const int max_exponent10 = 0;
12075
12076 static const bool has_infinity = false;
12077 static const bool has_quiet_NaN = false;
12078 static const bool has_signaling_NaN = false;
12079 static const float_denorm_style has_denorm = denorm_absent;
12080 static const bool has_denorm_loss = false;
12081
12082 static signed char infinity() throw()
12083 { return static_cast<signed char>(0); }
12084 static signed char quiet_NaN() throw()
12085 { return static_cast<signed char>(0); }
12086 static signed char signaling_NaN() throw()
12087 { return static_cast<signed char>(0); }
12088 static signed char denorm_min() throw()
12089 { return static_cast<signed char>(0); }
12090
12091 static const bool is_iec559 = false;
12092 static const bool is_bounded = true;
12093 static const bool is_modulo = true;
12094
12095 static const bool traps = true;
12096 static const bool tinyness_before = false;
12097 static const float_round_style round_style = round_toward_zero;
12098 };
12099
12100
12101 template<>
12102 struct numeric_limits<unsigned char>
12103 {
12104 static const bool is_specialized = true;
12105
12106 static unsigned char min() throw()
12107 { return 0; }
12108 static unsigned char max() throw()
12109 { return 127 * 2U + 1; }
12110
12111 static const int digits = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0));
12112 static const int digits10 = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643 / 2136);
12113 static const bool is_signed = false;
12114 static const bool is_integer = true;
12115 static const bool is_exact = true;
12116 static const int radix = 2;
12117 static unsigned char epsilon() throw()
12118 { return 0; }
12119 static unsigned char round_error() throw()
12120 { return 0; }
12121
12122 static const int min_exponent = 0;
12123 static const int min_exponent10 = 0;
12124 static const int max_exponent = 0;
12125 static const int max_exponent10 = 0;
12126
12127 static const bool has_infinity = false;
12128 static const bool has_quiet_NaN = false;
12129 static const bool has_signaling_NaN = false;
12130 static const float_denorm_style has_denorm = denorm_absent;
12131 static const bool has_denorm_loss = false;
12132
12133 static unsigned char infinity() throw()
12134 { return static_cast<unsigned char>(0); }
12135 static unsigned char quiet_NaN() throw()
12136 { return static_cast<unsigned char>(0); }
12137 static unsigned char signaling_NaN() throw()
12138 { return static_cast<unsigned char>(0); }
12139 static unsigned char denorm_min() throw()
12140 { return static_cast<unsigned char>(0); }
12141
12142 static const bool is_iec559 = false;
12143 static const bool is_bounded = true;
12144 static const bool is_modulo = true;
12145
12146 static const bool traps = true;
12147 static const bool tinyness_before = false;
12148 static const float_round_style round_style = round_toward_zero;
12149 };
12150
12151
12152 template<>
12153 struct numeric_limits<wchar_t>
12154 {
12155 static const bool is_specialized = true;
12156
12157 static wchar_t min() throw()
12158 { return (((wchar_t)(-1) < 0) ? (wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) : (wchar_t)0); }
12159 static wchar_t max() throw()
12160 { return (((wchar_t)(-1) < 0) ? ((wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0))) - 1 : ~(wchar_t)0); }
12161
12162 static const int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0));
12163 static const int digits10 = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643 / 2136);
12164 static const bool is_signed = ((wchar_t)(-1) < 0);
12165 static const bool is_integer = true;
12166 static const bool is_exact = true;
12167 static const int radix = 2;
12168 static wchar_t epsilon() throw()
12169 { return 0; }
12170 static wchar_t round_error() throw()
12171 { return 0; }
12172
12173 static const int min_exponent = 0;
12174 static const int min_exponent10 = 0;
12175 static const int max_exponent = 0;
12176 static const int max_exponent10 = 0;
12177
12178 static const bool has_infinity = false;
12179 static const bool has_quiet_NaN = false;
12180 static const bool has_signaling_NaN = false;
12181 static const float_denorm_style has_denorm = denorm_absent;
12182 static const bool has_denorm_loss = false;
12183
12184 static wchar_t infinity() throw()
12185 { return wchar_t(); }
12186 static wchar_t quiet_NaN() throw()
12187 { return wchar_t(); }
12188 static wchar_t signaling_NaN() throw()
12189 { return wchar_t(); }
12190 static wchar_t denorm_min() throw()
12191 { return wchar_t(); }
12192
12193 static const bool is_iec559 = false;
12194 static const bool is_bounded = true;
12195 static const bool is_modulo = true;
12196
12197 static const bool traps = true;
12198 static const bool tinyness_before = false;
12199 static const float_round_style round_style = round_toward_zero;
12200 };
12201
12202
12203 template<>
12204 struct numeric_limits<short>
12205 {
12206 static const bool is_specialized = true;
12207
12208 static short min() throw()
12209 { return -32767 - 1; }
12210 static short max() throw()
12211 { return 32767; }
12212
12213 static const int digits = (sizeof(short) * 8 - ((short)(-1) < 0));
12214 static const int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643 / 2136);
12215 static const bool is_signed = true;
12216 static const bool is_integer = true;
12217 static const bool is_exact = true;
12218 static const int radix = 2;
12219 static short epsilon() throw()
12220 { return 0; }
12221 static short round_error() throw()
12222 { return 0; }
12223
12224 static const int min_exponent = 0;
12225 static const int min_exponent10 = 0;
12226 static const int max_exponent = 0;
12227 static const int max_exponent10 = 0;
12228
12229 static const bool has_infinity = false;
12230 static const bool has_quiet_NaN = false;
12231 static const bool has_signaling_NaN = false;
12232 static const float_denorm_style has_denorm = denorm_absent;
12233 static const bool has_denorm_loss = false;
12234
12235 static short infinity() throw()
12236 { return short(); }
12237 static short quiet_NaN() throw()
12238 { return short(); }
12239 static short signaling_NaN() throw()
12240 { return short(); }
12241 static short denorm_min() throw()
12242 { return short(); }
12243
12244 static const bool is_iec559 = false;
12245 static const bool is_bounded = true;
12246 static const bool is_modulo = true;
12247
12248 static const bool traps = true;
12249 static const bool tinyness_before = false;
12250 static const float_round_style round_style = round_toward_zero;
12251 };
12252
12253
12254 template<>
12255 struct numeric_limits<unsigned short>
12256 {
12257 static const bool is_specialized = true;
12258
12259 static unsigned short min() throw()
12260 { return 0; }
12261 static unsigned short max() throw()
12262 { return 32767 * 2U + 1; }
12263
12264 static const int digits = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0));
12265 static const int digits10 = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643 / 2136);
12266 static const bool is_signed = false;
12267 static const bool is_integer = true;
12268 static const bool is_exact = true;
12269 static const int radix = 2;
12270 static unsigned short epsilon() throw()
12271 { return 0; }
12272 static unsigned short round_error() throw()
12273 { return 0; }
12274
12275 static const int min_exponent = 0;
12276 static const int min_exponent10 = 0;
12277 static const int max_exponent = 0;
12278 static const int max_exponent10 = 0;
12279
12280 static const bool has_infinity = false;
12281 static const bool has_quiet_NaN = false;
12282 static const bool has_signaling_NaN = false;
12283 static const float_denorm_style has_denorm = denorm_absent;
12284 static const bool has_denorm_loss = false;
12285
12286 static unsigned short infinity() throw()
12287 { return static_cast<unsigned short>(0); }
12288 static unsigned short quiet_NaN() throw()
12289 { return static_cast<unsigned short>(0); }
12290 static unsigned short signaling_NaN() throw()
12291 { return static_cast<unsigned short>(0); }
12292 static unsigned short denorm_min() throw()
12293 { return static_cast<unsigned short>(0); }
12294
12295 static const bool is_iec559 = false;
12296 static const bool is_bounded = true;
12297 static const bool is_modulo = true;
12298
12299 static const bool traps = true;
12300 static const bool tinyness_before = false;
12301 static const float_round_style round_style = round_toward_zero;
12302 };
12303
12304
12305 template<>
12306 struct numeric_limits<int>
12307 {
12308 static const bool is_specialized = true;
12309
12310 static int min() throw()
12311 { return -2147483647 - 1; }
12312 static int max() throw()
12313 { return 2147483647; }
12314
12315 static const int digits = (sizeof(int) * 8 - ((int)(-1) < 0));
12316 static const int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643 / 2136);
12317 static const bool is_signed = true;
12318 static const bool is_integer = true;
12319 static const bool is_exact = true;
12320 static const int radix = 2;
12321 static int epsilon() throw()
12322 { return 0; }
12323 static int round_error() throw()
12324 { return 0; }
12325
12326 static const int min_exponent = 0;
12327 static const int min_exponent10 = 0;
12328 static const int max_exponent = 0;
12329 static const int max_exponent10 = 0;
12330
12331 static const bool has_infinity = false;
12332 static const bool has_quiet_NaN = false;
12333 static const bool has_signaling_NaN = false;
12334 static const float_denorm_style has_denorm = denorm_absent;
12335 static const bool has_denorm_loss = false;
12336
12337 static int infinity() throw()
12338 { return static_cast<int>(0); }
12339 static int quiet_NaN() throw()
12340 { return static_cast<int>(0); }
12341 static int signaling_NaN() throw()
12342 { return static_cast<int>(0); }
12343 static int denorm_min() throw()
12344 { return static_cast<int>(0); }
12345
12346 static const bool is_iec559 = false;
12347 static const bool is_bounded = true;
12348 static const bool is_modulo = true;
12349
12350 static const bool traps = true;
12351 static const bool tinyness_before = false;
12352 static const float_round_style round_style = round_toward_zero;
12353 };
12354
12355
12356 template<>
12357 struct numeric_limits<unsigned int>
12358 {
12359 static const bool is_specialized = true;
12360
12361 static unsigned int min() throw()
12362 { return 0; }
12363 static unsigned int max() throw()
12364 { return 2147483647 * 2U + 1; }
12365
12366 static const int digits = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0));
12367 static const int digits10 = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643 / 2136);
12368 static const bool is_signed = false;
12369 static const bool is_integer = true;
12370 static const bool is_exact = true;
12371 static const int radix = 2;
12372 static unsigned int epsilon() throw()
12373 { return 0; }
12374 static unsigned int round_error() throw()
12375 { return 0; }
12376
12377 static const int min_exponent = 0;
12378 static const int min_exponent10 = 0;
12379 static const int max_exponent = 0;
12380 static const int max_exponent10 = 0;
12381
12382 static const bool has_infinity = false;
12383 static const bool has_quiet_NaN = false;
12384 static const bool has_signaling_NaN = false;
12385 static const float_denorm_style has_denorm = denorm_absent;
12386 static const bool has_denorm_loss = false;
12387
12388 static unsigned int infinity() throw()
12389 { return static_cast<unsigned int>(0); }
12390 static unsigned int quiet_NaN() throw()
12391 { return static_cast<unsigned int>(0); }
12392 static unsigned int signaling_NaN() throw()
12393 { return static_cast<unsigned int>(0); }
12394 static unsigned int denorm_min() throw()
12395 { return static_cast<unsigned int>(0); }
12396
12397 static const bool is_iec559 = false;
12398 static const bool is_bounded = true;
12399 static const bool is_modulo = true;
12400
12401 static const bool traps = true;
12402 static const bool tinyness_before = false;
12403 static const float_round_style round_style = round_toward_zero;
12404 };
12405
12406
12407 template<>
12408 struct numeric_limits<long>
12409 {
12410 static const bool is_specialized = true;
12411
12412 static long min() throw()
12413 { return -9223372036854775807L - 1; }
12414 static long max() throw()
12415 { return 9223372036854775807L; }
12416
12417 static const int digits = (sizeof(long) * 8 - ((long)(-1) < 0));
12418 static const int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643 / 2136);
12419 static const bool is_signed = true;
12420 static const bool is_integer = true;
12421 static const bool is_exact = true;
12422 static const int radix = 2;
12423 static long epsilon() throw()
12424 { return 0; }
12425 static long round_error() throw()
12426 { return 0; }
12427
12428 static const int min_exponent = 0;
12429 static const int min_exponent10 = 0;
12430 static const int max_exponent = 0;
12431 static const int max_exponent10 = 0;
12432
12433 static const bool has_infinity = false;
12434 static const bool has_quiet_NaN = false;
12435 static const bool has_signaling_NaN = false;
12436 static const float_denorm_style has_denorm = denorm_absent;
12437 static const bool has_denorm_loss = false;
12438
12439 static long infinity() throw()
12440 { return static_cast<long>(0); }
12441 static long quiet_NaN() throw()
12442 { return static_cast<long>(0); }
12443 static long signaling_NaN() throw()
12444 { return static_cast<long>(0); }
12445 static long denorm_min() throw()
12446 { return static_cast<long>(0); }
12447
12448 static const bool is_iec559 = false;
12449 static const bool is_bounded = true;
12450 static const bool is_modulo = true;
12451
12452 static const bool traps = true;
12453 static const bool tinyness_before = false;
12454 static const float_round_style round_style = round_toward_zero;
12455 };
12456
12457
12458 template<>
12459 struct numeric_limits<unsigned long>
12460 {
12461 static const bool is_specialized = true;
12462
12463 static unsigned long min() throw()
12464 { return 0; }
12465 static unsigned long max() throw()
12466 { return 9223372036854775807L * 2UL + 1; }
12467
12468 static const int digits = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0));
12469 static const int digits10 = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643 / 2136);
12470 static const bool is_signed = false;
12471 static const bool is_integer = true;
12472 static const bool is_exact = true;
12473 static const int radix = 2;
12474 static unsigned long epsilon() throw()
12475 { return 0; }
12476 static unsigned long round_error() throw()
12477 { return 0; }
12478
12479 static const int min_exponent = 0;
12480 static const int min_exponent10 = 0;
12481 static const int max_exponent = 0;
12482 static const int max_exponent10 = 0;
12483
12484 static const bool has_infinity = false;
12485 static const bool has_quiet_NaN = false;
12486 static const bool has_signaling_NaN = false;
12487 static const float_denorm_style has_denorm = denorm_absent;
12488 static const bool has_denorm_loss = false;
12489
12490 static unsigned long infinity() throw()
12491 { return static_cast<unsigned long>(0); }
12492 static unsigned long quiet_NaN() throw()
12493 { return static_cast<unsigned long>(0); }
12494 static unsigned long signaling_NaN() throw()
12495 { return static_cast<unsigned long>(0); }
12496 static unsigned long denorm_min() throw()
12497 { return static_cast<unsigned long>(0); }
12498
12499 static const bool is_iec559 = false;
12500 static const bool is_bounded = true;
12501 static const bool is_modulo = true;
12502
12503 static const bool traps = true;
12504 static const bool tinyness_before = false;
12505 static const float_round_style round_style = round_toward_zero;
12506 };
12507
12508
12509 template<>
12510 struct numeric_limits<long long>
12511 {
12512 static const bool is_specialized = true;
12513
12514 static long long min() throw()
12515 { return -9223372036854775807LL - 1; }
12516 static long long max() throw()
12517 { return 9223372036854775807LL; }
12518
12519 static const int digits = (sizeof(long long) * 8 - ((long long)(-1) < 0));
12520 static const int digits10 = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643 / 2136);
12521 static const bool is_signed = true;
12522 static const bool is_integer = true;
12523 static const bool is_exact = true;
12524 static const int radix = 2;
12525 static long long epsilon() throw()
12526 { return 0; }
12527 static long long round_error() throw()
12528 { return 0; }
12529
12530 static const int min_exponent = 0;
12531 static const int min_exponent10 = 0;
12532 static const int max_exponent = 0;
12533 static const int max_exponent10 = 0;
12534
12535 static const bool has_infinity = false;
12536 static const bool has_quiet_NaN = false;
12537 static const bool has_signaling_NaN = false;
12538 static const float_denorm_style has_denorm = denorm_absent;
12539 static const bool has_denorm_loss = false;
12540
12541 static long long infinity() throw()
12542 { return static_cast<long long>(0); }
12543 static long long quiet_NaN() throw()
12544 { return static_cast<long long>(0); }
12545 static long long signaling_NaN() throw()
12546 { return static_cast<long long>(0); }
12547 static long long denorm_min() throw()
12548 { return static_cast<long long>(0); }
12549
12550 static const bool is_iec559 = false;
12551 static const bool is_bounded = true;
12552 static const bool is_modulo = true;
12553
12554 static const bool traps = true;
12555 static const bool tinyness_before = false;
12556 static const float_round_style round_style = round_toward_zero;
12557 };
12558
12559
12560 template<>
12561 struct numeric_limits<unsigned long long>
12562 {
12563 static const bool is_specialized = true;
12564
12565 static unsigned long long min() throw()
12566 { return 0; }
12567 static unsigned long long max() throw()
12568 { return 9223372036854775807LL * 2ULL + 1; }
12569
12570 static const int digits = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0));
12571 static const int digits10 = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643 / 2136);
12572 static const bool is_signed = false;
12573 static const bool is_integer = true;
12574 static const bool is_exact = true;
12575 static const int radix = 2;
12576 static unsigned long long epsilon() throw()
12577 { return 0; }
12578 static unsigned long long round_error() throw()
12579 { return 0; }
12580
12581 static const int min_exponent = 0;
12582 static const int min_exponent10 = 0;
12583 static const int max_exponent = 0;
12584 static const int max_exponent10 = 0;
12585
12586 static const bool has_infinity = false;
12587 static const bool has_quiet_NaN = false;
12588 static const bool has_signaling_NaN = false;
12589 static const float_denorm_style has_denorm = denorm_absent;
12590 static const bool has_denorm_loss = false;
12591
12592 static unsigned long long infinity() throw()
12593 { return static_cast<unsigned long long>(0); }
12594 static unsigned long long quiet_NaN() throw()
12595 { return static_cast<unsigned long long>(0); }
12596 static unsigned long long signaling_NaN() throw()
12597 { return static_cast<unsigned long long>(0); }
12598 static unsigned long long denorm_min() throw()
12599 { return static_cast<unsigned long long>(0); }
12600
12601 static const bool is_iec559 = false;
12602 static const bool is_bounded = true;
12603 static const bool is_modulo = true;
12604
12605 static const bool traps = true;
12606 static const bool tinyness_before = false;
12607 static const float_round_style round_style = round_toward_zero;
12608 };
12609
12610
12611 template<>
12612 struct numeric_limits<float>
12613 {
12614 static const bool is_specialized = true;
12615
12616 static float min() throw()
12617 { return 1.17549435e-38F; }
12618 static float max() throw()
12619 { return 3.40282347e+38F; }
12620
12621 static const int digits = 24;
12622 static const int digits10 = 6;
12623 static const bool is_signed = true;
12624 static const bool is_integer = false;
12625 static const bool is_exact = false;
12626 static const int radix = 2;
12627 static float epsilon() throw()
12628 { return 1.19209290e-7F; }
12629 static float round_error() throw()
12630 { return 0.5F; }
12631
12632 static const int min_exponent = (-125);
12633 static const int min_exponent10 = (-37);
12634 static const int max_exponent = 128;
12635 static const int max_exponent10 = 38;
12636
12637 static const bool has_infinity = 1;
12638 static const bool has_quiet_NaN = 1;
12639 static const bool has_signaling_NaN = has_quiet_NaN;
12640 static const float_denorm_style has_denorm
12641 = bool(1) ? denorm_present : denorm_absent;
12642 static const bool has_denorm_loss = false;
12643
12644 static float infinity() throw()
12645 { return __builtin_huge_valf (); }
12646 static float quiet_NaN() throw()
12647 { return __builtin_nanf (""); }
12648 static float signaling_NaN() throw()
12649 { return __builtin_nansf (""); }
12650 static float denorm_min() throw()
12651 { return 1.40129846e-45F; }
12652
12653 static const bool is_iec559
12654 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
12655 static const bool is_bounded = true;
12656 static const bool is_modulo = false;
12657
12658 static const bool traps = false;
12659 static const bool tinyness_before = false;
12660 static const float_round_style round_style = round_to_nearest;
12661 };
12662
12663
12664
12665
12666
12667
12668 template<>
12669 struct numeric_limits<double>
12670 {
12671 static const bool is_specialized = true;
12672
12673 static double min() throw()
12674 { return 2.2250738585072014e-308; }
12675 static double max() throw()
12676 { return 1.7976931348623157e+308; }
12677
12678 static const int digits = 53;
12679 static const int digits10 = 15;
12680 static const bool is_signed = true;
12681 static const bool is_integer = false;
12682 static const bool is_exact = false;
12683 static const int radix = 2;
12684 static double epsilon() throw()
12685 { return 2.2204460492503131e-16; }
12686 static double round_error() throw()
12687 { return 0.5; }
12688
12689 static const int min_exponent = (-1021);
12690 static const int min_exponent10 = (-307);
12691 static const int max_exponent = 1024;
12692 static const int max_exponent10 = 308;
12693
12694 static const bool has_infinity = 1;
12695 static const bool has_quiet_NaN = 1;
12696 static const bool has_signaling_NaN = has_quiet_NaN;
12697 static const float_denorm_style has_denorm
12698 = bool(1) ? denorm_present : denorm_absent;
12699 static const bool has_denorm_loss = false;
12700
12701 static double infinity() throw()
12702 { return __builtin_huge_val(); }
12703 static double quiet_NaN() throw()
12704 { return __builtin_nan (""); }
12705 static double signaling_NaN() throw()
12706 { return __builtin_nans (""); }
12707 static double denorm_min() throw()
12708 { return 4.9406564584124654e-324; }
12709
12710 static const bool is_iec559
12711 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
12712 static const bool is_bounded = true;
12713 static const bool is_modulo = false;
12714
12715 static const bool traps = false;
12716 static const bool tinyness_before = false;
12717 static const float_round_style round_style = round_to_nearest;
12718 };
12719
12720
12721
12722
12723
12724
12725 template<>
12726 struct numeric_limits<long double>
12727 {
12728 static const bool is_specialized = true;
12729
12730 static long double min() throw()
12731 { return 3.36210314311209350626e-4932L; }
12732 static long double max() throw()
12733 { return 1.18973149535723176502e+4932L; }
12734
12735 static const int digits = 64;
12736 static const int digits10 = 18;
12737 static const bool is_signed = true;
12738 static const bool is_integer = false;
12739 static const bool is_exact = false;
12740 static const int radix = 2;
12741 static long double epsilon() throw()
12742 { return 1.08420217248550443401e-19L; }
12743 static long double round_error() throw()
12744 { return 0.5L; }
12745
12746 static const int min_exponent = (-16381);
12747 static const int min_exponent10 = (-4931);
12748 static const int max_exponent = 16384;
12749 static const int max_exponent10 = 4932;
12750
12751 static const bool has_infinity = 1;
12752 static const bool has_quiet_NaN = 1;
12753 static const bool has_signaling_NaN = has_quiet_NaN;
12754 static const float_denorm_style has_denorm
12755 = bool(1) ? denorm_present : denorm_absent;
12756 static const bool has_denorm_loss
12757 = false;
12758
12759 static long double infinity() throw()
12760 { return __builtin_huge_vall (); }
12761 static long double quiet_NaN() throw()
12762 { return __builtin_nanl (""); }
12763 static long double signaling_NaN() throw()
12764 { return __builtin_nansl (""); }
12765 static long double denorm_min() throw()
12766 { return 3.64519953188247460253e-4951L; }
12767
12768 static const bool is_iec559
12769 = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
12770 static const bool is_bounded = true;
12771 static const bool is_modulo = false;
12772
12773 static const bool traps = false;
12774 static const bool tinyness_before = false;
12775 static const float_round_style round_style = round_to_nearest;
12776 };
12777
12778
12779
12780
12781
12782}
12783# 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
12784
12785namespace std __attribute__ ((__visibility__ ("default"))) {
12786# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12787 template<typename _Tp>
12788 pair<_Tp*, ptrdiff_t>
12789 __get_temporary_buffer(ptrdiff_t __len, _Tp*)
12790 {
12791 const ptrdiff_t __max = numeric_limits<ptrdiff_t>::max() / sizeof(_Tp);
12792 if (__len > __max)
12793 __len = __max;
12794
12795 while (__len > 0)
12796 {
12797 _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
12798 nothrow));
12799 if (__tmp != 0)
12800 return pair<_Tp*, ptrdiff_t>(__tmp, __len);
12801 __len /= 2;
12802 }
12803 return pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);
12804 }
12805# 108 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12806 template<typename _Tp>
12807 inline pair<_Tp*, ptrdiff_t>
12808 get_temporary_buffer(ptrdiff_t __len)
12809 { return std::__get_temporary_buffer(__len, static_cast<_Tp*>(0)); }
12810# 120 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12811 template<typename _Tp>
12812 void
12813 return_temporary_buffer(_Tp* __p)
12814 { ::operator delete(__p, nothrow); }
12815# 132 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12816 template<typename _Tp1>
12817 struct auto_ptr_ref
12818 {
12819 _Tp1* _M_ptr;
12820
12821 explicit
12822 auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
12823 };
12824# 173 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12825 template<typename _Tp>
12826 class auto_ptr
12827 {
12828 private:
12829 _Tp* _M_ptr;
12830
12831 public:
12832
12833 typedef _Tp element_type;
12834
12835
12836
12837
12838
12839
12840
12841 explicit
12842 auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
12843# 199 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12844 auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
12845# 211 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12846 template<typename _Tp1>
12847 auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
12848# 222 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12849 auto_ptr&
12850 operator=(auto_ptr& __a) throw()
12851 {
12852 reset(__a.release());
12853 return *this;
12854 }
12855# 239 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12856 template<typename _Tp1>
12857 auto_ptr&
12858 operator=(auto_ptr<_Tp1>& __a) throw()
12859 {
12860 reset(__a.release());
12861 return *this;
12862 }
12863# 259 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12864 ~auto_ptr() { delete _M_ptr; }
12865# 269 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12866 element_type&
12867 operator*() const throw()
12868 {
12869 ;
12870 return *_M_ptr;
12871 }
12872
12873
12874
12875
12876
12877
12878
12879 element_type*
12880 operator->() const throw()
12881 {
12882 ;
12883 return _M_ptr;
12884 }
12885# 299 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12886 element_type*
12887 get() const throw() { return _M_ptr; }
12888# 313 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12889 element_type*
12890 release() throw()
12891 {
12892 element_type* __tmp = _M_ptr;
12893 _M_ptr = 0;
12894 return __tmp;
12895 }
12896# 328 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12897 void
12898 reset(element_type* __p = 0) throw()
12899 {
12900 if (__p != _M_ptr)
12901 {
12902 delete _M_ptr;
12903 _M_ptr = __p;
12904 }
12905 }
12906# 349 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
12907 auto_ptr(auto_ptr_ref<element_type> __ref) throw()
12908 : _M_ptr(__ref._M_ptr) { }
12909
12910 auto_ptr&
12911 operator=(auto_ptr_ref<element_type> __ref) throw()
12912 {
12913 if (__ref._M_ptr != this->get())
12914 {
12915 delete _M_ptr;
12916 _M_ptr = __ref._M_ptr;
12917 }
12918 return *this;
12919 }
12920
12921 template<typename _Tp1>
12922 operator auto_ptr_ref<_Tp1>() throw()
12923 { return auto_ptr_ref<_Tp1>(this->release()); }
12924
12925 template<typename _Tp1>
12926 operator auto_ptr<_Tp1>() throw()
12927 { return auto_ptr<_Tp1>(this->release()); }
12928 };
12929
12930}
12931# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
12932
12933
12934# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream_insert.h" 1 3
12935# 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream_insert.h" 3
12936
12937# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream_insert.h" 3
12938
12939
12940
12941namespace std __attribute__ ((__visibility__ ("default"))) {
12942
12943 template<typename _CharT, typename _Traits>
12944 inline void
12945 __ostream_write(basic_ostream<_CharT, _Traits>& __out,
12946 const _CharT* __s, streamsize __n)
12947 {
12948 typedef basic_ostream<_CharT, _Traits> __ostream_type;
12949 typedef typename __ostream_type::ios_base __ios_base;
12950
12951 const streamsize __put = __out.rdbuf()->sputn(__s, __n);
12952 if (__put != __n)
12953 __out.setstate(__ios_base::badbit);
12954 }
12955
12956 template<typename _CharT, typename _Traits>
12957 inline void
12958 __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
12959 {
12960 typedef basic_ostream<_CharT, _Traits> __ostream_type;
12961 typedef typename __ostream_type::ios_base __ios_base;
12962
12963 const _CharT __c = __out.fill();
12964 for (; __n > 0; --__n)
12965 {
12966 const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
12967 if (_Traits::eq_int_type(__put, _Traits::eof()))
12968 {
12969 __out.setstate(__ios_base::badbit);
12970 break;
12971 }
12972 }
12973 }
12974
12975 template<typename _CharT, typename _Traits>
12976 basic_ostream<_CharT, _Traits>&
12977 __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
12978 const _CharT* __s, streamsize __n)
12979 {
12980 typedef basic_ostream<_CharT, _Traits> __ostream_type;
12981 typedef typename __ostream_type::ios_base __ios_base;
12982
12983 typename __ostream_type::sentry __cerb(__out);
12984 if (__cerb)
12985 {
12986 try
12987 {
12988 const streamsize __w = __out.width();
12989 if (__w > __n)
12990 {
12991 const bool __left = ((__out.flags()
12992 & __ios_base::adjustfield)
12993 == __ios_base::left);
12994 if (!__left)
12995 __ostream_fill(__out, __w - __n);
12996 if (__out.good())
12997 __ostream_write(__out, __s, __n);
12998 if (__left && __out.good())
12999 __ostream_fill(__out, __w - __n);
13000 }
13001 else
13002 __ostream_write(__out, __s, __n);
13003 __out.width(0);
13004 }
13005 catch(...)
13006 { __out._M_setstate(__ios_base::badbit); }
13007 }
13008 return __out;
13009 }
13010
13011
13012
13013
13014
13015 extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
13016
13017
13018 extern template wostream& __ostream_insert(wostream&, const wchar_t*,
13019 streamsize);
13020
13021
13022
13023}
13024# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
13025
13026# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 1 3
13027# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13028namespace std __attribute__ ((__visibility__ ("default"))) {
13029# 101 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13030 template <class _Arg, class _Result>
13031 struct unary_function
13032 {
13033 typedef _Arg argument_type;
13034
13035
13036 typedef _Result result_type;
13037 };
13038
13039
13040
13041
13042 template <class _Arg1, class _Arg2, class _Result>
13043 struct binary_function
13044 {
13045 typedef _Arg1 first_argument_type;
13046
13047
13048 typedef _Arg2 second_argument_type;
13049 typedef _Result result_type;
13050 };
13051# 133 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13052 template <class _Tp>
13053 struct plus : public binary_function<_Tp, _Tp, _Tp>
13054 {
13055 _Tp
13056 operator()(const _Tp& __x, const _Tp& __y) const
13057 { return __x + __y; }
13058 };
13059
13060
13061 template <class _Tp>
13062 struct minus : public binary_function<_Tp, _Tp, _Tp>
13063 {
13064 _Tp
13065 operator()(const _Tp& __x, const _Tp& __y) const
13066 { return __x - __y; }
13067 };
13068
13069
13070 template <class _Tp>
13071 struct multiplies : public binary_function<_Tp, _Tp, _Tp>
13072 {
13073 _Tp
13074 operator()(const _Tp& __x, const _Tp& __y) const
13075 { return __x * __y; }
13076 };
13077
13078
13079 template <class _Tp>
13080 struct divides : public binary_function<_Tp, _Tp, _Tp>
13081 {
13082 _Tp
13083 operator()(const _Tp& __x, const _Tp& __y) const
13084 { return __x / __y; }
13085 };
13086
13087
13088 template <class _Tp>
13089 struct modulus : public binary_function<_Tp, _Tp, _Tp>
13090 {
13091 _Tp
13092 operator()(const _Tp& __x, const _Tp& __y) const
13093 { return __x % __y; }
13094 };
13095
13096
13097 template <class _Tp>
13098 struct negate : public unary_function<_Tp, _Tp>
13099 {
13100 _Tp
13101 operator()(const _Tp& __x) const
13102 { return -__x; }
13103 };
13104# 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13105 template <class _Tp>
13106 struct equal_to : public binary_function<_Tp, _Tp, bool>
13107 {
13108 bool
13109 operator()(const _Tp& __x, const _Tp& __y) const
13110 { return __x == __y; }
13111 };
13112
13113
13114 template <class _Tp>
13115 struct not_equal_to : public binary_function<_Tp, _Tp, bool>
13116 {
13117 bool
13118 operator()(const _Tp& __x, const _Tp& __y) const
13119 { return __x != __y; }
13120 };
13121
13122
13123 template <class _Tp>
13124 struct greater : public binary_function<_Tp, _Tp, bool>
13125 {
13126 bool
13127 operator()(const _Tp& __x, const _Tp& __y) const
13128 { return __x > __y; }
13129 };
13130
13131
13132 template <class _Tp>
13133 struct less : public binary_function<_Tp, _Tp, bool>
13134 {
13135 bool
13136 operator()(const _Tp& __x, const _Tp& __y) const
13137 { return __x < __y; }
13138 };
13139
13140
13141 template <class _Tp>
13142 struct greater_equal : public binary_function<_Tp, _Tp, bool>
13143 {
13144 bool
13145 operator()(const _Tp& __x, const _Tp& __y) const
13146 { return __x >= __y; }
13147 };
13148
13149
13150 template <class _Tp>
13151 struct less_equal : public binary_function<_Tp, _Tp, bool>
13152 {
13153 bool
13154 operator()(const _Tp& __x, const _Tp& __y) const
13155 { return __x <= __y; }
13156 };
13157# 256 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13158 template <class _Tp>
13159 struct logical_and : public binary_function<_Tp, _Tp, bool>
13160 {
13161 bool
13162 operator()(const _Tp& __x, const _Tp& __y) const
13163 { return __x && __y; }
13164 };
13165
13166
13167 template <class _Tp>
13168 struct logical_or : public binary_function<_Tp, _Tp, bool>
13169 {
13170 bool
13171 operator()(const _Tp& __x, const _Tp& __y) const
13172 { return __x || __y; }
13173 };
13174
13175
13176 template <class _Tp>
13177 struct logical_not : public unary_function<_Tp, bool>
13178 {
13179 bool
13180 operator()(const _Tp& __x) const
13181 { return !__x; }
13182 };
13183# 311 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13184 template <class _Predicate>
13185 class unary_negate
13186 : public unary_function<typename _Predicate::argument_type, bool>
13187 {
13188 protected:
13189 _Predicate _M_pred;
13190 public:
13191 explicit
13192 unary_negate(const _Predicate& __x) : _M_pred(__x) {}
13193
13194 bool
13195 operator()(const typename _Predicate::argument_type& __x) const
13196 { return !_M_pred(__x); }
13197 };
13198
13199
13200 template <class _Predicate>
13201 inline unary_negate<_Predicate>
13202 not1(const _Predicate& __pred)
13203 { return unary_negate<_Predicate>(__pred); }
13204
13205
13206 template <class _Predicate>
13207 class binary_negate
13208 : public binary_function<typename _Predicate::first_argument_type,
13209 typename _Predicate::second_argument_type,
13210 bool>
13211 {
13212 protected:
13213 _Predicate _M_pred;
13214 public:
13215 explicit
13216 binary_negate(const _Predicate& __x)
13217 : _M_pred(__x) { }
13218
13219 bool
13220 operator()(const typename _Predicate::first_argument_type& __x,
13221 const typename _Predicate::second_argument_type& __y) const
13222 { return !_M_pred(__x, __y); }
13223 };
13224
13225
13226 template <class _Predicate>
13227 inline binary_negate<_Predicate>
13228 not2(const _Predicate& __pred)
13229 { return binary_negate<_Predicate>(__pred); }
13230# 391 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13231 template <class _Operation>
13232 class binder1st
13233 : public unary_function<typename _Operation::second_argument_type,
13234 typename _Operation::result_type>
13235 {
13236 protected:
13237 _Operation op;
13238 typename _Operation::first_argument_type value;
13239 public:
13240 binder1st(const _Operation& __x,
13241 const typename _Operation::first_argument_type& __y)
13242 : op(__x), value(__y) {}
13243
13244 typename _Operation::result_type
13245 operator()(const typename _Operation::second_argument_type& __x) const
13246 { return op(value, __x); }
13247
13248
13249
13250 typename _Operation::result_type
13251 operator()(typename _Operation::second_argument_type& __x) const
13252 { return op(value, __x); }
13253 };
13254
13255
13256 template <class _Operation, class _Tp>
13257 inline binder1st<_Operation>
13258 bind1st(const _Operation& __fn, const _Tp& __x)
13259 {
13260 typedef typename _Operation::first_argument_type _Arg1_type;
13261 return binder1st<_Operation>(__fn, _Arg1_type(__x));
13262 }
13263
13264
13265 template <class _Operation>
13266 class binder2nd
13267 : public unary_function<typename _Operation::first_argument_type,
13268 typename _Operation::result_type>
13269 {
13270 protected:
13271 _Operation op;
13272 typename _Operation::second_argument_type value;
13273 public:
13274 binder2nd(const _Operation& __x,
13275 const typename _Operation::second_argument_type& __y)
13276 : op(__x), value(__y) {}
13277
13278 typename _Operation::result_type
13279 operator()(const typename _Operation::first_argument_type& __x) const
13280 { return op(__x, value); }
13281
13282
13283
13284 typename _Operation::result_type
13285 operator()(typename _Operation::first_argument_type& __x) const
13286 { return op(__x, value); }
13287 };
13288
13289
13290 template <class _Operation, class _Tp>
13291 inline binder2nd<_Operation>
13292 bind2nd(const _Operation& __fn, const _Tp& __x)
13293 {
13294 typedef typename _Operation::second_argument_type _Arg2_type;
13295 return binder2nd<_Operation>(__fn, _Arg2_type(__x));
13296 }
13297# 480 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13298 template <class _Arg, class _Result>
13299 class pointer_to_unary_function : public unary_function<_Arg, _Result>
13300 {
13301 protected:
13302 _Result (*_M_ptr)(_Arg);
13303 public:
13304 pointer_to_unary_function() {}
13305
13306 explicit
13307 pointer_to_unary_function(_Result (*__x)(_Arg))
13308 : _M_ptr(__x) {}
13309
13310 _Result
13311 operator()(_Arg __x) const
13312 { return _M_ptr(__x); }
13313 };
13314
13315
13316 template <class _Arg, class _Result>
13317 inline pointer_to_unary_function<_Arg, _Result>
13318 ptr_fun(_Result (*__x)(_Arg))
13319 { return pointer_to_unary_function<_Arg, _Result>(__x); }
13320
13321
13322 template <class _Arg1, class _Arg2, class _Result>
13323 class pointer_to_binary_function
13324 : public binary_function<_Arg1, _Arg2, _Result>
13325 {
13326 protected:
13327 _Result (*_M_ptr)(_Arg1, _Arg2);
13328 public:
13329 pointer_to_binary_function() {}
13330
13331 explicit
13332 pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
13333 : _M_ptr(__x) {}
13334
13335 _Result
13336 operator()(_Arg1 __x, _Arg2 __y) const
13337 { return _M_ptr(__x, __y); }
13338 };
13339
13340
13341 template <class _Arg1, class _Arg2, class _Result>
13342 inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
13343 ptr_fun(_Result (*__x)(_Arg1, _Arg2))
13344 { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
13345
13346
13347 template <class _Tp>
13348 struct _Identity : public unary_function<_Tp,_Tp>
13349 {
13350 _Tp&
13351 operator()(_Tp& __x) const
13352 { return __x; }
13353
13354 const _Tp&
13355 operator()(const _Tp& __x) const
13356 { return __x; }
13357 };
13358
13359 template <class _Pair>
13360 struct _Select1st : public unary_function<_Pair,
13361 typename _Pair::first_type>
13362 {
13363 typename _Pair::first_type&
13364 operator()(_Pair& __x) const
13365 { return __x.first; }
13366
13367 const typename _Pair::first_type&
13368 operator()(const _Pair& __x) const
13369 { return __x.first; }
13370 };
13371
13372 template <class _Pair>
13373 struct _Select2nd : public unary_function<_Pair,
13374 typename _Pair::second_type>
13375 {
13376 typename _Pair::second_type&
13377 operator()(_Pair& __x) const
13378 { return __x.second; }
13379
13380 const typename _Pair::second_type&
13381 operator()(const _Pair& __x) const
13382 { return __x.second; }
13383 };
13384# 582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
13385 template <class _Ret, class _Tp>
13386 class mem_fun_t : public unary_function<_Tp*, _Ret>
13387 {
13388 public:
13389 explicit
13390 mem_fun_t(_Ret (_Tp::*__pf)())
13391 : _M_f(__pf) {}
13392
13393 _Ret
13394 operator()(_Tp* __p) const
13395 { return (__p->*_M_f)(); }
13396 private:
13397 _Ret (_Tp::*_M_f)();
13398 };
13399
13400
13401 template <class _Ret, class _Tp>
13402 class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
13403 {
13404 public:
13405 explicit
13406 const_mem_fun_t(_Ret (_Tp::*__pf)() const)
13407 : _M_f(__pf) {}
13408
13409 _Ret
13410 operator()(const _Tp* __p) const
13411 { return (__p->*_M_f)(); }
13412 private:
13413 _Ret (_Tp::*_M_f)() const;
13414 };
13415
13416
13417 template <class _Ret, class _Tp>
13418 class mem_fun_ref_t : public unary_function<_Tp, _Ret>
13419 {
13420 public:
13421 explicit
13422 mem_fun_ref_t(_Ret (_Tp::*__pf)())
13423 : _M_f(__pf) {}
13424
13425 _Ret
13426 operator()(_Tp& __r) const
13427 { return (__r.*_M_f)(); }
13428 private:
13429 _Ret (_Tp::*_M_f)();
13430 };
13431
13432
13433 template <class _Ret, class _Tp>
13434 class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
13435 {
13436 public:
13437 explicit
13438 const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
13439 : _M_f(__pf) {}
13440
13441 _Ret
13442 operator()(const _Tp& __r) const
13443 { return (__r.*_M_f)(); }
13444 private:
13445 _Ret (_Tp::*_M_f)() const;
13446 };
13447
13448
13449 template <class _Ret, class _Tp, class _Arg>
13450 class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
13451 {
13452 public:
13453 explicit
13454 mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
13455 : _M_f(__pf) {}
13456
13457 _Ret
13458 operator()(_Tp* __p, _Arg __x) const
13459 { return (__p->*_M_f)(__x); }
13460 private:
13461 _Ret (_Tp::*_M_f)(_Arg);
13462 };
13463
13464
13465 template <class _Ret, class _Tp, class _Arg>
13466 class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
13467 {
13468 public:
13469 explicit
13470 const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
13471 : _M_f(__pf) {}
13472
13473 _Ret
13474 operator()(const _Tp* __p, _Arg __x) const
13475 { return (__p->*_M_f)(__x); }
13476 private:
13477 _Ret (_Tp::*_M_f)(_Arg) const;
13478 };
13479
13480
13481 template <class _Ret, class _Tp, class _Arg>
13482 class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
13483 {
13484 public:
13485 explicit
13486 mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
13487 : _M_f(__pf) {}
13488
13489 _Ret
13490 operator()(_Tp& __r, _Arg __x) const
13491 { return (__r.*_M_f)(__x); }
13492 private:
13493 _Ret (_Tp::*_M_f)(_Arg);
13494 };
13495
13496
13497 template <class _Ret, class _Tp, class _Arg>
13498 class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
13499 {
13500 public:
13501 explicit
13502 const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
13503 : _M_f(__pf) {}
13504
13505 _Ret
13506 operator()(const _Tp& __r, _Arg __x) const
13507 { return (__r.*_M_f)(__x); }
13508 private:
13509 _Ret (_Tp::*_M_f)(_Arg) const;
13510 };
13511
13512
13513
13514 template <class _Ret, class _Tp>
13515 inline mem_fun_t<_Ret, _Tp>
13516 mem_fun(_Ret (_Tp::*__f)())
13517 { return mem_fun_t<_Ret, _Tp>(__f); }
13518
13519 template <class _Ret, class _Tp>
13520 inline const_mem_fun_t<_Ret, _Tp>
13521 mem_fun(_Ret (_Tp::*__f)() const)
13522 { return const_mem_fun_t<_Ret, _Tp>(__f); }
13523
13524 template <class _Ret, class _Tp>
13525 inline mem_fun_ref_t<_Ret, _Tp>
13526 mem_fun_ref(_Ret (_Tp::*__f)())
13527 { return mem_fun_ref_t<_Ret, _Tp>(__f); }
13528
13529 template <class _Ret, class _Tp>
13530 inline const_mem_fun_ref_t<_Ret, _Tp>
13531 mem_fun_ref(_Ret (_Tp::*__f)() const)
13532 { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
13533
13534 template <class _Ret, class _Tp, class _Arg>
13535 inline mem_fun1_t<_Ret, _Tp, _Arg>
13536 mem_fun(_Ret (_Tp::*__f)(_Arg))
13537 { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
13538
13539 template <class _Ret, class _Tp, class _Arg>
13540 inline const_mem_fun1_t<_Ret, _Tp, _Arg>
13541 mem_fun(_Ret (_Tp::*__f)(_Arg) const)
13542 { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
13543
13544 template <class _Ret, class _Tp, class _Arg>
13545 inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
13546 mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
13547 { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
13548
13549 template <class _Ret, class _Tp, class _Arg>
13550 inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
13551 mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
13552 { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
13553
13554
13555
13556}
13557# 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
13558# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 1 3
13559# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13560
13561# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13562
13563# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/atomicity.h" 1 3
13564# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/atomicity.h" 3
13565# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/atomic_word.h" 1 3
13566# 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/atomic_word.h" 3
13567typedef int _Atomic_word;
13568# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/atomicity.h" 2 3
13569
13570namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
13571
13572
13573
13574
13575
13576
13577 static inline _Atomic_word
13578 __exchange_and_add(volatile _Atomic_word* __mem, int __val)
13579 { return __sync_fetch_and_add(__mem, __val); }
13580
13581 static inline void
13582 __atomic_add(volatile _Atomic_word* __mem, int __val)
13583 { __sync_fetch_and_add(__mem, __val); }
13584# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/atomicity.h" 3
13585 static inline _Atomic_word
13586 __exchange_and_add_single(_Atomic_word* __mem, int __val)
13587 {
13588 _Atomic_word __result = *__mem;
13589 *__mem += __val;
13590 return __result;
13591 }
13592
13593 static inline void
13594 __atomic_add_single(_Atomic_word* __mem, int __val)
13595 { *__mem += __val; }
13596
13597 static inline _Atomic_word
13598 __attribute__ ((__unused__))
13599 __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
13600 {
13601
13602 if (__gthread_active_p())
13603 return __exchange_and_add(__mem, __val);
13604 else
13605 return __exchange_and_add_single(__mem, __val);
13606
13607
13608
13609 }
13610
13611 static inline void
13612 __attribute__ ((__unused__))
13613 __atomic_add_dispatch(_Atomic_word* __mem, int __val)
13614 {
13615
13616 if (__gthread_active_p())
13617 __atomic_add(__mem, __val);
13618 else
13619 __atomic_add_single(__mem, __val);
13620
13621
13622
13623 }
13624
13625}
13626# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 2 3
13627
13628
13629namespace std __attribute__ ((__visibility__ ("default"))) {
13630# 110 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13631 template<typename _CharT, typename _Traits, typename _Alloc>
13632 class basic_string
13633 {
13634 typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
13635
13636
13637 public:
13638 typedef _Traits traits_type;
13639 typedef typename _Traits::char_type value_type;
13640 typedef _Alloc allocator_type;
13641 typedef typename _CharT_alloc_type::size_type size_type;
13642 typedef typename _CharT_alloc_type::difference_type difference_type;
13643 typedef typename _CharT_alloc_type::reference reference;
13644 typedef typename _CharT_alloc_type::const_reference const_reference;
13645 typedef typename _CharT_alloc_type::pointer pointer;
13646 typedef typename _CharT_alloc_type::const_pointer const_pointer;
13647 typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
13648 typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
13649 const_iterator;
13650 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
13651 typedef std::reverse_iterator<iterator> reverse_iterator;
13652
13653 private:
13654# 147 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13655 struct _Rep_base
13656 {
13657 size_type _M_length;
13658 size_type _M_capacity;
13659 _Atomic_word _M_refcount;
13660 };
13661
13662 struct _Rep : _Rep_base
13663 {
13664
13665 typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
13666# 172 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13667 static const size_type _S_max_size;
13668 static const _CharT _S_terminal;
13669
13670
13671
13672 static size_type _S_empty_rep_storage[];
13673
13674 static _Rep&
13675 _S_empty_rep()
13676 {
13677
13678
13679
13680 void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
13681 return *reinterpret_cast<_Rep*>(__p);
13682 }
13683
13684 bool
13685 _M_is_leaked() const
13686 { return this->_M_refcount < 0; }
13687
13688 bool
13689 _M_is_shared() const
13690 { return this->_M_refcount > 0; }
13691
13692 void
13693 _M_set_leaked()
13694 { this->_M_refcount = -1; }
13695
13696 void
13697 _M_set_sharable()
13698 { this->_M_refcount = 0; }
13699
13700 void
13701 _M_set_length_and_sharable(size_type __n)
13702 {
13703 this->_M_set_sharable();
13704 this->_M_length = __n;
13705 traits_type::assign(this->_M_refdata()[__n], _S_terminal);
13706
13707
13708 }
13709
13710 _CharT*
13711 _M_refdata() throw()
13712 { return reinterpret_cast<_CharT*>(this + 1); }
13713
13714 _CharT*
13715 _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
13716 {
13717 return (!_M_is_leaked() && __alloc1 == __alloc2)
13718 ? _M_refcopy() : _M_clone(__alloc1);
13719 }
13720
13721
13722 static _Rep*
13723 _S_create(size_type, size_type, const _Alloc&);
13724
13725 void
13726 _M_dispose(const _Alloc& __a)
13727 {
13728
13729 if (__builtin_expect(this != &_S_empty_rep(), false))
13730
13731 if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
13732 -1) <= 0)
13733 _M_destroy(__a);
13734 }
13735
13736 void
13737 _M_destroy(const _Alloc&) throw();
13738
13739 _CharT*
13740 _M_refcopy() throw()
13741 {
13742
13743 if (__builtin_expect(this != &_S_empty_rep(), false))
13744
13745 __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
13746 return _M_refdata();
13747 }
13748
13749 _CharT*
13750 _M_clone(const _Alloc&, size_type __res = 0);
13751 };
13752
13753
13754 struct _Alloc_hider : _Alloc
13755 {
13756 _Alloc_hider(_CharT* __dat, const _Alloc& __a)
13757 : _Alloc(__a), _M_p(__dat) { }
13758
13759 _CharT* _M_p;
13760 };
13761
13762 public:
13763
13764
13765
13766
13767 static const size_type npos = static_cast<size_type>(-1);
13768
13769 private:
13770
13771 mutable _Alloc_hider _M_dataplus;
13772
13773 _CharT*
13774 _M_data() const
13775 { return _M_dataplus._M_p; }
13776
13777 _CharT*
13778 _M_data(_CharT* __p)
13779 { return (_M_dataplus._M_p = __p); }
13780
13781 _Rep*
13782 _M_rep() const
13783 { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
13784
13785
13786
13787 iterator
13788 _M_ibegin() const
13789 { return iterator(_M_data()); }
13790
13791 iterator
13792 _M_iend() const
13793 { return iterator(_M_data() + this->size()); }
13794
13795 void
13796 _M_leak()
13797 {
13798 if (!_M_rep()->_M_is_leaked())
13799 _M_leak_hard();
13800 }
13801
13802 size_type
13803 _M_check(size_type __pos, const char* __s) const
13804 {
13805 if (__pos > this->size())
13806 __throw_out_of_range((__s));
13807 return __pos;
13808 }
13809
13810 void
13811 _M_check_length(size_type __n1, size_type __n2, const char* __s) const
13812 {
13813 if (this->max_size() - (this->size() - __n1) < __n2)
13814 __throw_length_error((__s));
13815 }
13816
13817
13818 size_type
13819 _M_limit(size_type __pos, size_type __off) const
13820 {
13821 const bool __testoff = __off < this->size() - __pos;
13822 return __testoff ? __off : this->size() - __pos;
13823 }
13824
13825
13826 bool
13827 _M_disjunct(const _CharT* __s) const
13828 {
13829 return (less<const _CharT*>()(__s, _M_data())
13830 || less<const _CharT*>()(_M_data() + this->size(), __s));
13831 }
13832
13833
13834
13835 static void
13836 _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
13837 {
13838 if (__n == 1)
13839 traits_type::assign(*__d, *__s);
13840 else
13841 traits_type::copy(__d, __s, __n);
13842 }
13843
13844 static void
13845 _M_move(_CharT* __d, const _CharT* __s, size_type __n)
13846 {
13847 if (__n == 1)
13848 traits_type::assign(*__d, *__s);
13849 else
13850 traits_type::move(__d, __s, __n);
13851 }
13852
13853 static void
13854 _M_assign(_CharT* __d, size_type __n, _CharT __c)
13855 {
13856 if (__n == 1)
13857 traits_type::assign(*__d, __c);
13858 else
13859 traits_type::assign(__d, __n, __c);
13860 }
13861
13862
13863
13864 template<class _Iterator>
13865 static void
13866 _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
13867 {
13868 for (; __k1 != __k2; ++__k1, ++__p)
13869 traits_type::assign(*__p, *__k1);
13870 }
13871
13872 static void
13873 _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
13874 { _S_copy_chars(__p, __k1.base(), __k2.base()); }
13875
13876 static void
13877 _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
13878 { _S_copy_chars(__p, __k1.base(), __k2.base()); }
13879
13880 static void
13881 _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
13882 { _M_copy(__p, __k1, __k2 - __k1); }
13883
13884 static void
13885 _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
13886 { _M_copy(__p, __k1, __k2 - __k1); }
13887
13888 void
13889 _M_mutate(size_type __pos, size_type __len1, size_type __len2);
13890
13891 void
13892 _M_leak_hard();
13893
13894 static _Rep&
13895 _S_empty_rep()
13896 { return _Rep::_S_empty_rep(); }
13897
13898 public:
13899
13900
13901
13902
13903
13904
13905
13906 inline
13907 basic_string();
13908
13909
13910
13911
13912 explicit
13913 basic_string(const _Alloc& __a);
13914
13915
13916
13917
13918
13919
13920 basic_string(const basic_string& __str);
13921
13922
13923
13924
13925
13926
13927 basic_string(const basic_string& __str, size_type __pos,
13928 size_type __n = npos);
13929
13930
13931
13932
13933
13934
13935
13936 basic_string(const basic_string& __str, size_type __pos,
13937 size_type __n, const _Alloc& __a);
13938# 453 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13939 basic_string(const _CharT* __s, size_type __n,
13940 const _Alloc& __a = _Alloc());
13941
13942
13943
13944
13945
13946 basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
13947
13948
13949
13950
13951
13952
13953 basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
13954
13955
13956
13957
13958
13959
13960
13961 template<class _InputIterator>
13962 basic_string(_InputIterator __beg, _InputIterator __end,
13963 const _Alloc& __a = _Alloc());
13964
13965
13966
13967
13968 ~basic_string()
13969 { _M_rep()->_M_dispose(this->get_allocator()); }
13970
13971
13972
13973
13974
13975 basic_string&
13976 operator=(const basic_string& __str)
13977 { return this->assign(__str); }
13978
13979
13980
13981
13982
13983 basic_string&
13984 operator=(const _CharT* __s)
13985 { return this->assign(__s); }
13986# 508 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
13987 basic_string&
13988 operator=(_CharT __c)
13989 {
13990 this->assign(1, __c);
13991 return *this;
13992 }
13993
13994
13995
13996
13997
13998
13999 iterator
14000 begin()
14001 {
14002 _M_leak();
14003 return iterator(_M_data());
14004 }
14005
14006
14007
14008
14009
14010 const_iterator
14011 begin() const
14012 { return const_iterator(_M_data()); }
14013
14014
14015
14016
14017
14018 iterator
14019 end()
14020 {
14021 _M_leak();
14022 return iterator(_M_data() + this->size());
14023 }
14024
14025
14026
14027
14028
14029 const_iterator
14030 end() const
14031 { return const_iterator(_M_data() + this->size()); }
14032
14033
14034
14035
14036
14037
14038 reverse_iterator
14039 rbegin()
14040 { return reverse_iterator(this->end()); }
14041
14042
14043
14044
14045
14046
14047 const_reverse_iterator
14048 rbegin() const
14049 { return const_reverse_iterator(this->end()); }
14050
14051
14052
14053
14054
14055
14056 reverse_iterator
14057 rend()
14058 { return reverse_iterator(this->begin()); }
14059
14060
14061
14062
14063
14064
14065 const_reverse_iterator
14066 rend() const
14067 { return const_reverse_iterator(this->begin()); }
14068
14069 public:
14070
14071
14072
14073 size_type
14074 size() const
14075 { return _M_rep()->_M_length; }
14076
14077
14078
14079 size_type
14080 length() const
14081 { return _M_rep()->_M_length; }
14082
14083
14084 size_type
14085 max_size() const
14086 { return _Rep::_S_max_size; }
14087# 619 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14088 void
14089 resize(size_type __n, _CharT __c);
14090# 632 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14091 void
14092 resize(size_type __n)
14093 { this->resize(__n, _CharT()); }
14094
14095
14096
14097
14098
14099 size_type
14100 capacity() const
14101 { return _M_rep()->_M_capacity; }
14102# 661 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14103 void
14104 reserve(size_type __res_arg = 0);
14105
14106
14107
14108
14109 void
14110 clear()
14111 { _M_mutate(0, this->size(), 0); }
14112
14113
14114
14115
14116 bool
14117 empty() const
14118 { return this->size() == 0; }
14119# 689 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14120 const_reference
14121 operator[] (size_type __pos) const
14122 {
14123 ;
14124 return _M_data()[__pos];
14125 }
14126# 706 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14127 reference
14128 operator[](size_type __pos)
14129 {
14130
14131 ;
14132
14133 ;
14134 _M_leak();
14135 return _M_data()[__pos];
14136 }
14137# 727 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14138 const_reference
14139 at(size_type __n) const
14140 {
14141 if (__n >= this->size())
14142 __throw_out_of_range(("basic_string::at"));
14143 return _M_data()[__n];
14144 }
14145# 746 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14146 reference
14147 at(size_type __n)
14148 {
14149 if (__n >= size())
14150 __throw_out_of_range(("basic_string::at"));
14151 _M_leak();
14152 return _M_data()[__n];
14153 }
14154
14155
14156
14157
14158
14159
14160
14161 basic_string&
14162 operator+=(const basic_string& __str)
14163 { return this->append(__str); }
14164
14165
14166
14167
14168
14169
14170 basic_string&
14171 operator+=(const _CharT* __s)
14172 { return this->append(__s); }
14173
14174
14175
14176
14177
14178
14179 basic_string&
14180 operator+=(_CharT __c)
14181 {
14182 this->push_back(__c);
14183 return *this;
14184 }
14185
14186
14187
14188
14189
14190
14191 basic_string&
14192 append(const basic_string& __str);
14193# 806 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14194 basic_string&
14195 append(const basic_string& __str, size_type __pos, size_type __n);
14196
14197
14198
14199
14200
14201
14202
14203 basic_string&
14204 append(const _CharT* __s, size_type __n);
14205
14206
14207
14208
14209
14210
14211 basic_string&
14212 append(const _CharT* __s)
14213 {
14214 ;
14215 return this->append(__s, traits_type::length(__s));
14216 }
14217# 838 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14218 basic_string&
14219 append(size_type __n, _CharT __c);
14220# 849 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14221 template<class _InputIterator>
14222 basic_string&
14223 append(_InputIterator __first, _InputIterator __last)
14224 { return this->replace(_M_iend(), _M_iend(), __first, __last); }
14225
14226
14227
14228
14229
14230 void
14231 push_back(_CharT __c)
14232 {
14233 const size_type __len = 1 + this->size();
14234 if (__len > this->capacity() || _M_rep()->_M_is_shared())
14235 this->reserve(__len);
14236 traits_type::assign(_M_data()[this->size()], __c);
14237 _M_rep()->_M_set_length_and_sharable(__len);
14238 }
14239
14240
14241
14242
14243
14244
14245 basic_string&
14246 assign(const basic_string& __str);
14247# 888 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14248 basic_string&
14249 assign(const basic_string& __str, size_type __pos, size_type __n)
14250 { return this->assign(__str._M_data()
14251 + __str._M_check(__pos, "basic_string::assign"),
14252 __str._M_limit(__pos, __n)); }
14253# 904 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14254 basic_string&
14255 assign(const _CharT* __s, size_type __n);
14256# 916 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14257 basic_string&
14258 assign(const _CharT* __s)
14259 {
14260 ;
14261 return this->assign(__s, traits_type::length(__s));
14262 }
14263# 932 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14264 basic_string&
14265 assign(size_type __n, _CharT __c)
14266 { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
14267# 944 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14268 template<class _InputIterator>
14269 basic_string&
14270 assign(_InputIterator __first, _InputIterator __last)
14271 { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
14272# 961 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14273 void
14274 insert(iterator __p, size_type __n, _CharT __c)
14275 { this->replace(__p, __p, __n, __c); }
14276# 976 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14277 template<class _InputIterator>
14278 void
14279 insert(iterator __p, _InputIterator __beg, _InputIterator __end)
14280 { this->replace(__p, __p, __beg, __end); }
14281# 992 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14282 basic_string&
14283 insert(size_type __pos1, const basic_string& __str)
14284 { return this->insert(__pos1, __str, size_type(0), __str.size()); }
14285# 1014 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14286 basic_string&
14287 insert(size_type __pos1, const basic_string& __str,
14288 size_type __pos2, size_type __n)
14289 { return this->insert(__pos1, __str._M_data()
14290 + __str._M_check(__pos2, "basic_string::insert"),
14291 __str._M_limit(__pos2, __n)); }
14292# 1037 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14293 basic_string&
14294 insert(size_type __pos, const _CharT* __s, size_type __n);
14295# 1055 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14296 basic_string&
14297 insert(size_type __pos, const _CharT* __s)
14298 {
14299 ;
14300 return this->insert(__pos, __s, traits_type::length(__s));
14301 }
14302# 1078 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14303 basic_string&
14304 insert(size_type __pos, size_type __n, _CharT __c)
14305 { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
14306 size_type(0), __n, __c); }
14307# 1095 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14308 iterator
14309 insert(iterator __p, _CharT __c)
14310 {
14311 ;
14312 const size_type __pos = __p - _M_ibegin();
14313 _M_replace_aux(__pos, size_type(0), size_type(1), __c);
14314 _M_rep()->_M_set_leaked();
14315 return iterator(_M_data() + __pos);
14316 }
14317# 1119 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14318 basic_string&
14319 erase(size_type __pos = 0, size_type __n = npos)
14320 {
14321 _M_mutate(_M_check(__pos, "basic_string::erase"),
14322 _M_limit(__pos, __n), size_type(0));
14323 return *this;
14324 }
14325# 1135 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14326 iterator
14327 erase(iterator __position)
14328 {
14329 ;
14330
14331 const size_type __pos = __position - _M_ibegin();
14332 _M_mutate(__pos, size_type(1), size_type(0));
14333 _M_rep()->_M_set_leaked();
14334 return iterator(_M_data() + __pos);
14335 }
14336# 1155 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14337 iterator
14338 erase(iterator __first, iterator __last)
14339 {
14340 ;
14341
14342 const size_type __pos = __first - _M_ibegin();
14343 _M_mutate(__pos, __last - __first, size_type(0));
14344 _M_rep()->_M_set_leaked();
14345 return iterator(_M_data() + __pos);
14346 }
14347# 1182 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14348 basic_string&
14349 replace(size_type __pos, size_type __n, const basic_string& __str)
14350 { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
14351# 1204 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14352 basic_string&
14353 replace(size_type __pos1, size_type __n1, const basic_string& __str,
14354 size_type __pos2, size_type __n2)
14355 { return this->replace(__pos1, __n1, __str._M_data()
14356 + __str._M_check(__pos2, "basic_string::replace"),
14357 __str._M_limit(__pos2, __n2)); }
14358# 1228 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14359 basic_string&
14360 replace(size_type __pos, size_type __n1, const _CharT* __s,
14361 size_type __n2);
14362# 1247 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14363 basic_string&
14364 replace(size_type __pos, size_type __n1, const _CharT* __s)
14365 {
14366 ;
14367 return this->replace(__pos, __n1, __s, traits_type::length(__s));
14368 }
14369# 1270 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14370 basic_string&
14371 replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
14372 { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
14373 _M_limit(__pos, __n1), __n2, __c); }
14374# 1288 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14375 basic_string&
14376 replace(iterator __i1, iterator __i2, const basic_string& __str)
14377 { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
14378# 1306 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14379 basic_string&
14380 replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
14381 {
14382 ;
14383
14384 return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
14385 }
14386# 1327 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14387 basic_string&
14388 replace(iterator __i1, iterator __i2, const _CharT* __s)
14389 {
14390 ;
14391 return this->replace(__i1, __i2, __s, traits_type::length(__s));
14392 }
14393# 1348 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14394 basic_string&
14395 replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
14396 {
14397 ;
14398
14399 return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
14400 }
14401# 1370 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14402 template<class _InputIterator>
14403 basic_string&
14404 replace(iterator __i1, iterator __i2,
14405 _InputIterator __k1, _InputIterator __k2)
14406 {
14407 ;
14408
14409 ;
14410 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
14411 return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
14412 }
14413
14414
14415
14416 basic_string&
14417 replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
14418 {
14419 ;
14420
14421 ;
14422 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
14423 __k1, __k2 - __k1);
14424 }
14425
14426 basic_string&
14427 replace(iterator __i1, iterator __i2,
14428 const _CharT* __k1, const _CharT* __k2)
14429 {
14430 ;
14431
14432 ;
14433 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
14434 __k1, __k2 - __k1);
14435 }
14436
14437 basic_string&
14438 replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
14439 {
14440 ;
14441
14442 ;
14443 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
14444 __k1.base(), __k2 - __k1);
14445 }
14446
14447 basic_string&
14448 replace(iterator __i1, iterator __i2,
14449 const_iterator __k1, const_iterator __k2)
14450 {
14451 ;
14452
14453 ;
14454 return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
14455 __k1.base(), __k2 - __k1);
14456 }
14457
14458 private:
14459 template<class _Integer>
14460 basic_string&
14461 _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
14462 _Integer __val, __true_type)
14463 { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
14464
14465 template<class _InputIterator>
14466 basic_string&
14467 _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
14468 _InputIterator __k2, __false_type);
14469
14470 basic_string&
14471 _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
14472 _CharT __c);
14473
14474 basic_string&
14475 _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
14476 size_type __n2);
14477
14478
14479
14480 template<class _InIterator>
14481 static _CharT*
14482 _S_construct_aux(_InIterator __beg, _InIterator __end,
14483 const _Alloc& __a, __false_type)
14484 {
14485 typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
14486 return _S_construct(__beg, __end, __a, _Tag());
14487 }
14488
14489 template<class _InIterator>
14490 static _CharT*
14491 _S_construct_aux(_InIterator __beg, _InIterator __end,
14492 const _Alloc& __a, __true_type)
14493 { return _S_construct(static_cast<size_type>(__beg),
14494 static_cast<value_type>(__end), __a); }
14495
14496 template<class _InIterator>
14497 static _CharT*
14498 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
14499 {
14500 typedef typename std::__is_integer<_InIterator>::__type _Integral;
14501 return _S_construct_aux(__beg, __end, __a, _Integral());
14502 }
14503
14504
14505 template<class _InIterator>
14506 static _CharT*
14507 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
14508 input_iterator_tag);
14509
14510
14511
14512 template<class _FwdIterator>
14513 static _CharT*
14514 _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
14515 forward_iterator_tag);
14516
14517 static _CharT*
14518 _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
14519
14520 public:
14521# 1501 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14522 size_type
14523 copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
14524# 1511 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14525 void
14526 swap(basic_string& __s);
14527# 1521 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14528 const _CharT*
14529 c_str() const
14530 { return _M_data(); }
14531
14532
14533
14534
14535
14536
14537
14538 const _CharT*
14539 data() const
14540 { return _M_data(); }
14541
14542
14543
14544
14545 allocator_type
14546 get_allocator() const
14547 { return _M_dataplus; }
14548# 1553 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14549 size_type
14550 find(const _CharT* __s, size_type __pos, size_type __n) const;
14551# 1566 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14552 size_type
14553 find(const basic_string& __str, size_type __pos = 0) const
14554 { return this->find(__str.data(), __pos, __str.size()); }
14555# 1580 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14556 size_type
14557 find(const _CharT* __s, size_type __pos = 0) const
14558 {
14559 ;
14560 return this->find(__s, __pos, traits_type::length(__s));
14561 }
14562# 1597 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14563 size_type
14564 find(_CharT __c, size_type __pos = 0) const;
14565# 1610 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14566 size_type
14567 rfind(const basic_string& __str, size_type __pos = npos) const
14568 { return this->rfind(__str.data(), __pos, __str.size()); }
14569# 1625 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14570 size_type
14571 rfind(const _CharT* __s, size_type __pos, size_type __n) const;
14572# 1638 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14573 size_type
14574 rfind(const _CharT* __s, size_type __pos = npos) const
14575 {
14576 ;
14577 return this->rfind(__s, __pos, traits_type::length(__s));
14578 }
14579# 1655 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14580 size_type
14581 rfind(_CharT __c, size_type __pos = npos) const;
14582# 1668 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14583 size_type
14584 find_first_of(const basic_string& __str, size_type __pos = 0) const
14585 { return this->find_first_of(__str.data(), __pos, __str.size()); }
14586# 1683 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14587 size_type
14588 find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
14589# 1696 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14590 size_type
14591 find_first_of(const _CharT* __s, size_type __pos = 0) const
14592 {
14593 ;
14594 return this->find_first_of(__s, __pos, traits_type::length(__s));
14595 }
14596# 1715 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14597 size_type
14598 find_first_of(_CharT __c, size_type __pos = 0) const
14599 { return this->find(__c, __pos); }
14600# 1729 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14601 size_type
14602 find_last_of(const basic_string& __str, size_type __pos = npos) const
14603 { return this->find_last_of(__str.data(), __pos, __str.size()); }
14604# 1744 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14605 size_type
14606 find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
14607# 1757 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14608 size_type
14609 find_last_of(const _CharT* __s, size_type __pos = npos) const
14610 {
14611 ;
14612 return this->find_last_of(__s, __pos, traits_type::length(__s));
14613 }
14614# 1776 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14615 size_type
14616 find_last_of(_CharT __c, size_type __pos = npos) const
14617 { return this->rfind(__c, __pos); }
14618# 1790 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14619 size_type
14620 find_first_not_of(const basic_string& __str, size_type __pos = 0) const
14621 { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
14622# 1805 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14623 size_type
14624 find_first_not_of(const _CharT* __s, size_type __pos,
14625 size_type __n) const;
14626# 1819 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14627 size_type
14628 find_first_not_of(const _CharT* __s, size_type __pos = 0) const
14629 {
14630 ;
14631 return this->find_first_not_of(__s, __pos, traits_type::length(__s));
14632 }
14633# 1836 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14634 size_type
14635 find_first_not_of(_CharT __c, size_type __pos = 0) const;
14636# 1849 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14637 size_type
14638 find_last_not_of(const basic_string& __str, size_type __pos = npos) const
14639 { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
14640# 1865 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14641 size_type
14642 find_last_not_of(const _CharT* __s, size_type __pos,
14643 size_type __n) const;
14644# 1878 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14645 size_type
14646 find_last_not_of(const _CharT* __s, size_type __pos = npos) const
14647 {
14648 ;
14649 return this->find_last_not_of(__s, __pos, traits_type::length(__s));
14650 }
14651# 1895 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14652 size_type
14653 find_last_not_of(_CharT __c, size_type __pos = npos) const;
14654# 1910 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14655 basic_string
14656 substr(size_type __pos = 0, size_type __n = npos) const
14657 { return basic_string(*this,
14658 _M_check(__pos, "basic_string::substr"), __n); }
14659# 1928 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14660 int
14661 compare(const basic_string& __str) const
14662 {
14663 const size_type __size = this->size();
14664 const size_type __osize = __str.size();
14665 const size_type __len = std::min(__size, __osize);
14666
14667 int __r = traits_type::compare(_M_data(), __str.data(), __len);
14668 if (!__r)
14669 __r = __size - __osize;
14670 return __r;
14671 }
14672# 1958 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14673 int
14674 compare(size_type __pos, size_type __n, const basic_string& __str) const;
14675# 1982 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14676 int
14677 compare(size_type __pos1, size_type __n1, const basic_string& __str,
14678 size_type __pos2, size_type __n2) const;
14679# 2000 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14680 int
14681 compare(const _CharT* __s) const;
14682# 2023 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14683 int
14684 compare(size_type __pos, size_type __n1, const _CharT* __s) const;
14685# 2048 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14686 int
14687 compare(size_type __pos, size_type __n1, const _CharT* __s,
14688 size_type __n2) const;
14689 };
14690
14691 template<typename _CharT, typename _Traits, typename _Alloc>
14692 inline basic_string<_CharT, _Traits, _Alloc>::
14693 basic_string()
14694
14695 : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
14696# 2069 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14697 template<typename _CharT, typename _Traits, typename _Alloc>
14698 basic_string<_CharT, _Traits, _Alloc>
14699 operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14700 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14701 {
14702 basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
14703 __str.append(__rhs);
14704 return __str;
14705 }
14706
14707
14708
14709
14710
14711
14712
14713 template<typename _CharT, typename _Traits, typename _Alloc>
14714 basic_string<_CharT,_Traits,_Alloc>
14715 operator+(const _CharT* __lhs,
14716 const basic_string<_CharT,_Traits,_Alloc>& __rhs);
14717
14718
14719
14720
14721
14722
14723
14724 template<typename _CharT, typename _Traits, typename _Alloc>
14725 basic_string<_CharT,_Traits,_Alloc>
14726 operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
14727
14728
14729
14730
14731
14732
14733
14734 template<typename _CharT, typename _Traits, typename _Alloc>
14735 inline basic_string<_CharT, _Traits, _Alloc>
14736 operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14737 const _CharT* __rhs)
14738 {
14739 basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
14740 __str.append(__rhs);
14741 return __str;
14742 }
14743
14744
14745
14746
14747
14748
14749
14750 template<typename _CharT, typename _Traits, typename _Alloc>
14751 inline basic_string<_CharT, _Traits, _Alloc>
14752 operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
14753 {
14754 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
14755 typedef typename __string_type::size_type __size_type;
14756 __string_type __str(__lhs);
14757 __str.append(__size_type(1), __rhs);
14758 return __str;
14759 }
14760# 2140 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14761 template<typename _CharT, typename _Traits, typename _Alloc>
14762 inline bool
14763 operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14764 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14765 { return __lhs.compare(__rhs) == 0; }
14766
14767
14768
14769
14770
14771
14772
14773 template<typename _CharT, typename _Traits, typename _Alloc>
14774 inline bool
14775 operator==(const _CharT* __lhs,
14776 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14777 { return __rhs.compare(__lhs) == 0; }
14778
14779
14780
14781
14782
14783
14784
14785 template<typename _CharT, typename _Traits, typename _Alloc>
14786 inline bool
14787 operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14788 const _CharT* __rhs)
14789 { return __lhs.compare(__rhs) == 0; }
14790# 2177 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14791 template<typename _CharT, typename _Traits, typename _Alloc>
14792 inline bool
14793 operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14794 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14795 { return __rhs.compare(__lhs) != 0; }
14796
14797
14798
14799
14800
14801
14802
14803 template<typename _CharT, typename _Traits, typename _Alloc>
14804 inline bool
14805 operator!=(const _CharT* __lhs,
14806 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14807 { return __rhs.compare(__lhs) != 0; }
14808
14809
14810
14811
14812
14813
14814
14815 template<typename _CharT, typename _Traits, typename _Alloc>
14816 inline bool
14817 operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14818 const _CharT* __rhs)
14819 { return __lhs.compare(__rhs) != 0; }
14820# 2214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14821 template<typename _CharT, typename _Traits, typename _Alloc>
14822 inline bool
14823 operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14824 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14825 { return __lhs.compare(__rhs) < 0; }
14826
14827
14828
14829
14830
14831
14832
14833 template<typename _CharT, typename _Traits, typename _Alloc>
14834 inline bool
14835 operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14836 const _CharT* __rhs)
14837 { return __lhs.compare(__rhs) < 0; }
14838
14839
14840
14841
14842
14843
14844
14845 template<typename _CharT, typename _Traits, typename _Alloc>
14846 inline bool
14847 operator<(const _CharT* __lhs,
14848 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14849 { return __rhs.compare(__lhs) > 0; }
14850# 2251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14851 template<typename _CharT, typename _Traits, typename _Alloc>
14852 inline bool
14853 operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14854 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14855 { return __lhs.compare(__rhs) > 0; }
14856
14857
14858
14859
14860
14861
14862
14863 template<typename _CharT, typename _Traits, typename _Alloc>
14864 inline bool
14865 operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14866 const _CharT* __rhs)
14867 { return __lhs.compare(__rhs) > 0; }
14868
14869
14870
14871
14872
14873
14874
14875 template<typename _CharT, typename _Traits, typename _Alloc>
14876 inline bool
14877 operator>(const _CharT* __lhs,
14878 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14879 { return __rhs.compare(__lhs) < 0; }
14880# 2288 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14881 template<typename _CharT, typename _Traits, typename _Alloc>
14882 inline bool
14883 operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14884 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14885 { return __lhs.compare(__rhs) <= 0; }
14886
14887
14888
14889
14890
14891
14892
14893 template<typename _CharT, typename _Traits, typename _Alloc>
14894 inline bool
14895 operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14896 const _CharT* __rhs)
14897 { return __lhs.compare(__rhs) <= 0; }
14898
14899
14900
14901
14902
14903
14904
14905 template<typename _CharT, typename _Traits, typename _Alloc>
14906 inline bool
14907 operator<=(const _CharT* __lhs,
14908 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14909 { return __rhs.compare(__lhs) >= 0; }
14910# 2325 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14911 template<typename _CharT, typename _Traits, typename _Alloc>
14912 inline bool
14913 operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14914 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14915 { return __lhs.compare(__rhs) >= 0; }
14916
14917
14918
14919
14920
14921
14922
14923 template<typename _CharT, typename _Traits, typename _Alloc>
14924 inline bool
14925 operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
14926 const _CharT* __rhs)
14927 { return __lhs.compare(__rhs) >= 0; }
14928
14929
14930
14931
14932
14933
14934
14935 template<typename _CharT, typename _Traits, typename _Alloc>
14936 inline bool
14937 operator>=(const _CharT* __lhs,
14938 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
14939 { return __rhs.compare(__lhs) <= 0; }
14940# 2362 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14941 template<typename _CharT, typename _Traits, typename _Alloc>
14942 inline void
14943 swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
14944 basic_string<_CharT, _Traits, _Alloc>& __rhs)
14945 { __lhs.swap(__rhs); }
14946# 2379 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14947 template<typename _CharT, typename _Traits, typename _Alloc>
14948 basic_istream<_CharT, _Traits>&
14949 operator>>(basic_istream<_CharT, _Traits>& __is,
14950 basic_string<_CharT, _Traits, _Alloc>& __str);
14951
14952 template<>
14953 basic_istream<char>&
14954 operator>>(basic_istream<char>& __is, basic_string<char>& __str);
14955# 2397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14956 template<typename _CharT, typename _Traits, typename _Alloc>
14957 inline basic_ostream<_CharT, _Traits>&
14958 operator<<(basic_ostream<_CharT, _Traits>& __os,
14959 const basic_string<_CharT, _Traits, _Alloc>& __str)
14960 {
14961
14962
14963 return __ostream_insert(__os, __str.data(), __str.size());
14964 }
14965# 2420 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14966 template<typename _CharT, typename _Traits, typename _Alloc>
14967 basic_istream<_CharT, _Traits>&
14968 getline(basic_istream<_CharT, _Traits>& __is,
14969 basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
14970# 2437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
14971 template<typename _CharT, typename _Traits, typename _Alloc>
14972 inline basic_istream<_CharT, _Traits>&
14973 getline(basic_istream<_CharT, _Traits>& __is,
14974 basic_string<_CharT, _Traits, _Alloc>& __str)
14975 { return getline(__is, __str, __is.widen('\n')); }
14976
14977 template<>
14978 basic_istream<char>&
14979 getline(basic_istream<char>& __in, basic_string<char>& __str,
14980 char __delim);
14981
14982
14983 template<>
14984 basic_istream<wchar_t>&
14985 getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
14986 wchar_t __delim);
14987
14988
14989}
14990# 55 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
14991
14992
14993# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/algorithm" 1 3
14994# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/algorithm" 3
14995
14996# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/algorithm" 3
14997
14998
14999
15000
15001# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 1 3
15002# 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15003# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 1 3
15004# 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15005namespace std __attribute__ ((__visibility__ ("default"))) {
15006
15007
15008
15009
15010 template<typename _RandomAccessIterator, typename _Distance>
15011 bool
15012 __is_heap(_RandomAccessIterator __first, _Distance __n)
15013 {
15014 _Distance __parent = 0;
15015 for (_Distance __child = 1; __child < __n; ++__child)
15016 {
15017 if (__first[__parent] < __first[__child])
15018 return false;
15019 if ((__child & 1) == 0)
15020 ++__parent;
15021 }
15022 return true;
15023 }
15024
15025 template<typename _RandomAccessIterator, typename _Distance,
15026 typename _StrictWeakOrdering>
15027 bool
15028 __is_heap(_RandomAccessIterator __first, _StrictWeakOrdering __comp,
15029 _Distance __n)
15030 {
15031 _Distance __parent = 0;
15032 for (_Distance __child = 1; __child < __n; ++__child)
15033 {
15034 if (__comp(__first[__parent], __first[__child]))
15035 return false;
15036 if ((__child & 1) == 0)
15037 ++__parent;
15038 }
15039 return true;
15040 }
15041
15042 template<typename _RandomAccessIterator>
15043 bool
15044 __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
15045 { return std::__is_heap(__first, std::distance(__first, __last)); }
15046
15047 template<typename _RandomAccessIterator, typename _StrictWeakOrdering>
15048 bool
15049 __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
15050 _StrictWeakOrdering __comp)
15051 { return std::__is_heap(__first, __comp, std::distance(__first, __last)); }
15052
15053
15054
15055 template<typename _RandomAccessIterator, typename _Distance, typename _Tp>
15056 void
15057 __push_heap(_RandomAccessIterator __first,
15058 _Distance __holeIndex, _Distance __topIndex, _Tp __value)
15059 {
15060 _Distance __parent = (__holeIndex - 1) / 2;
15061 while (__holeIndex > __topIndex && *(__first + __parent) < __value)
15062 {
15063 *(__first + __holeIndex) = *(__first + __parent);
15064 __holeIndex = __parent;
15065 __parent = (__holeIndex - 1) / 2;
15066 }
15067 *(__first + __holeIndex) = __value;
15068 }
15069# 139 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15070 template<typename _RandomAccessIterator>
15071 inline void
15072 push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
15073 {
15074 typedef typename iterator_traits<_RandomAccessIterator>::value_type
15075 _ValueType;
15076 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
15077 _DistanceType;
15078
15079
15080
15081
15082
15083 ;
15084
15085
15086 std::__push_heap(__first, _DistanceType((__last - __first) - 1),
15087 _DistanceType(0), _ValueType(*(__last - 1)));
15088 }
15089
15090 template<typename _RandomAccessIterator, typename _Distance, typename _Tp,
15091 typename _Compare>
15092 void
15093 __push_heap(_RandomAccessIterator __first, _Distance __holeIndex,
15094 _Distance __topIndex, _Tp __value, _Compare __comp)
15095 {
15096 _Distance __parent = (__holeIndex - 1) / 2;
15097 while (__holeIndex > __topIndex
15098 && __comp(*(__first + __parent), __value))
15099 {
15100 *(__first + __holeIndex) = *(__first + __parent);
15101 __holeIndex = __parent;
15102 __parent = (__holeIndex - 1) / 2;
15103 }
15104 *(__first + __holeIndex) = __value;
15105 }
15106# 187 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15107 template<typename _RandomAccessIterator, typename _Compare>
15108 inline void
15109 push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
15110 _Compare __comp)
15111 {
15112 typedef typename iterator_traits<_RandomAccessIterator>::value_type
15113 _ValueType;
15114 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
15115 _DistanceType;
15116
15117
15118
15119
15120 ;
15121 ;
15122
15123 std::__push_heap(__first, _DistanceType((__last - __first) - 1),
15124 _DistanceType(0), _ValueType(*(__last - 1)), __comp);
15125 }
15126
15127 template<typename _RandomAccessIterator, typename _Distance, typename _Tp>
15128 void
15129 __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
15130 _Distance __len, _Tp __value)
15131 {
15132 const _Distance __topIndex = __holeIndex;
15133 _Distance __secondChild = 2 * __holeIndex + 2;
15134 while (__secondChild < __len)
15135 {
15136 if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))
15137 __secondChild--;
15138 *(__first + __holeIndex) = *(__first + __secondChild);
15139 __holeIndex = __secondChild;
15140 __secondChild = 2 * (__secondChild + 1);
15141 }
15142 if (__secondChild == __len)
15143 {
15144 *(__first + __holeIndex) = *(__first + (__secondChild - 1));
15145 __holeIndex = __secondChild - 1;
15146 }
15147 std::__push_heap(__first, __holeIndex, __topIndex, __value);
15148 }
15149
15150 template<typename _RandomAccessIterator, typename _Tp>
15151 inline void
15152 __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
15153 _RandomAccessIterator __result, _Tp __value)
15154 {
15155 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
15156 _Distance;
15157 *__result = *__first;
15158 std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first),
15159 __value);
15160 }
15161# 251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15162 template<typename _RandomAccessIterator>
15163 inline void
15164 pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
15165 {
15166 typedef typename iterator_traits<_RandomAccessIterator>::value_type
15167 _ValueType;
15168
15169
15170
15171
15172
15173 ;
15174 ;
15175
15176 std::__pop_heap(__first, __last - 1, __last - 1,
15177 _ValueType(*(__last - 1)));
15178 }
15179
15180 template<typename _RandomAccessIterator, typename _Distance,
15181 typename _Tp, typename _Compare>
15182 void
15183 __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
15184 _Distance __len, _Tp __value, _Compare __comp)
15185 {
15186 const _Distance __topIndex = __holeIndex;
15187 _Distance __secondChild = 2 * __holeIndex + 2;
15188 while (__secondChild < __len)
15189 {
15190 if (__comp(*(__first + __secondChild),
15191 *(__first + (__secondChild - 1))))
15192 __secondChild--;
15193 *(__first + __holeIndex) = *(__first + __secondChild);
15194 __holeIndex = __secondChild;
15195 __secondChild = 2 * (__secondChild + 1);
15196 }
15197 if (__secondChild == __len)
15198 {
15199 *(__first + __holeIndex) = *(__first + (__secondChild - 1));
15200 __holeIndex = __secondChild - 1;
15201 }
15202 std::__push_heap(__first, __holeIndex, __topIndex, __value, __comp);
15203 }
15204
15205 template<typename _RandomAccessIterator, typename _Tp, typename _Compare>
15206 inline void
15207 __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
15208 _RandomAccessIterator __result, _Tp __value, _Compare __comp)
15209 {
15210 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
15211 _Distance;
15212 *__result = *__first;
15213 std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first),
15214 __value, __comp);
15215 }
15216# 317 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15217 template<typename _RandomAccessIterator, typename _Compare>
15218 inline void
15219 pop_heap(_RandomAccessIterator __first,
15220 _RandomAccessIterator __last, _Compare __comp)
15221 {
15222
15223
15224
15225 ;
15226 ;
15227
15228 typedef typename iterator_traits<_RandomAccessIterator>::value_type
15229 _ValueType;
15230 std::__pop_heap(__first, __last - 1, __last - 1,
15231 _ValueType(*(__last - 1)), __comp);
15232 }
15233# 342 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15234 template<typename _RandomAccessIterator>
15235 void
15236 make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
15237 {
15238 typedef typename iterator_traits<_RandomAccessIterator>::value_type
15239 _ValueType;
15240 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
15241 _DistanceType;
15242
15243
15244
15245
15246
15247 ;
15248
15249 if (__last - __first < 2)
15250 return;
15251
15252 const _DistanceType __len = __last - __first;
15253 _DistanceType __parent = (__len - 2) / 2;
15254 while (true)
15255 {
15256 std::__adjust_heap(__first, __parent, __len,
15257 _ValueType(*(__first + __parent)));
15258 if (__parent == 0)
15259 return;
15260 __parent--;
15261 }
15262 }
15263# 382 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15264 template<typename _RandomAccessIterator, typename _Compare>
15265 inline void
15266 make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
15267 _Compare __comp)
15268 {
15269 typedef typename iterator_traits<_RandomAccessIterator>::value_type
15270 _ValueType;
15271 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
15272 _DistanceType;
15273
15274
15275
15276
15277 ;
15278
15279 if (__last - __first < 2)
15280 return;
15281
15282 const _DistanceType __len = __last - __first;
15283 _DistanceType __parent = (__len - 2) / 2;
15284 while (true)
15285 {
15286 std::__adjust_heap(__first, __parent, __len,
15287 _ValueType(*(__first + __parent)), __comp);
15288 if (__parent == 0)
15289 return;
15290 __parent--;
15291 }
15292 }
15293# 420 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15294 template<typename _RandomAccessIterator>
15295 void
15296 sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
15297 {
15298
15299
15300
15301
15302
15303 ;
15304
15305
15306 while (__last - __first > 1)
15307 std::pop_heap(__first, _RandomAccessIterator(__last--));
15308 }
15309# 446 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
15310 template<typename _RandomAccessIterator, typename _Compare>
15311 void
15312 sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
15313 _Compare __comp)
15314 {
15315
15316
15317
15318 ;
15319 ;
15320
15321 while (__last - __first > 1)
15322 std::pop_heap(__first, _RandomAccessIterator(__last--), __comp);
15323 }
15324
15325}
15326# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 2 3
15327# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tempbuf.h" 1 3
15328# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tempbuf.h" 3
15329namespace std __attribute__ ((__visibility__ ("default"))) {
15330# 76 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tempbuf.h" 3
15331 template<typename _ForwardIterator, typename _Tp>
15332 class _Temporary_buffer
15333 {
15334
15335
15336
15337 public:
15338 typedef _Tp value_type;
15339 typedef value_type* pointer;
15340 typedef pointer iterator;
15341 typedef ptrdiff_t size_type;
15342
15343 protected:
15344 size_type _M_original_len;
15345 size_type _M_len;
15346 pointer _M_buffer;
15347
15348 void
15349 _M_initialize_buffer(const _Tp&, __true_type) { }
15350
15351 void
15352 _M_initialize_buffer(const _Tp& __val, __false_type)
15353 { std::uninitialized_fill_n(_M_buffer, _M_len, __val); }
15354
15355 public:
15356
15357 size_type
15358 size() const
15359 { return _M_len; }
15360
15361
15362 size_type
15363 requested_size() const
15364 { return _M_original_len; }
15365
15366
15367 iterator
15368 begin()
15369 { return _M_buffer; }
15370
15371
15372 iterator
15373 end()
15374 { return _M_buffer + _M_len; }
15375
15376
15377
15378
15379
15380 _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last);
15381
15382 ~_Temporary_buffer()
15383 {
15384 std::_Destroy(_M_buffer, _M_buffer + _M_len);
15385 std::return_temporary_buffer(_M_buffer);
15386 }
15387
15388 private:
15389
15390 _Temporary_buffer(const _Temporary_buffer&);
15391
15392 void
15393 operator=(const _Temporary_buffer&);
15394 };
15395
15396
15397 template<typename _ForwardIterator, typename _Tp>
15398 _Temporary_buffer<_ForwardIterator, _Tp>::
15399 _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
15400 : _M_original_len(std::distance(__first, __last)),
15401 _M_len(0), _M_buffer(0)
15402 {
15403
15404 typedef typename std::__is_scalar<_Tp>::__type _Trivial;
15405
15406 try
15407 {
15408 pair<pointer, size_type> __p(get_temporary_buffer<
15409 value_type>(_M_original_len));
15410 _M_buffer = __p.first;
15411 _M_len = __p.second;
15412 if (_M_len > 0)
15413 _M_initialize_buffer(*__first, _Trivial());
15414 }
15415 catch(...)
15416 {
15417 std::return_temporary_buffer(_M_buffer);
15418 _M_buffer = 0;
15419 _M_len = 0;
15420 throw;
15421 }
15422 }
15423
15424}
15425# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 2 3
15426
15427
15428
15429
15430namespace std __attribute__ ((__visibility__ ("default"))) {
15431# 85 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15432 template<typename _Tp>
15433 inline const _Tp&
15434 __median(const _Tp& __a, const _Tp& __b, const _Tp& __c)
15435 {
15436
15437
15438 if (__a < __b)
15439 if (__b < __c)
15440 return __b;
15441 else if (__a < __c)
15442 return __c;
15443 else
15444 return __a;
15445 else if (__a < __c)
15446 return __a;
15447 else if (__b < __c)
15448 return __c;
15449 else
15450 return __b;
15451 }
15452# 119 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15453 template<typename _Tp, typename _Compare>
15454 inline const _Tp&
15455 __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp)
15456 {
15457
15458
15459 if (__comp(__a, __b))
15460 if (__comp(__b, __c))
15461 return __b;
15462 else if (__comp(__a, __c))
15463 return __c;
15464 else
15465 return __a;
15466 else if (__comp(__a, __c))
15467 return __a;
15468 else if (__comp(__b, __c))
15469 return __c;
15470 else
15471 return __b;
15472 }
15473# 151 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15474 template<typename _InputIterator, typename _Function>
15475 _Function
15476 for_each(_InputIterator __first, _InputIterator __last, _Function __f)
15477 {
15478
15479
15480 ;
15481 for ( ; __first != __last; ++__first)
15482 __f(*__first);
15483 return __f;
15484 }
15485
15486
15487
15488
15489
15490
15491 template<typename _InputIterator, typename _Tp>
15492 inline _InputIterator
15493 __find(_InputIterator __first, _InputIterator __last,
15494 const _Tp& __val, input_iterator_tag)
15495 {
15496 while (__first != __last && !(*__first == __val))
15497 ++__first;
15498 return __first;
15499 }
15500
15501
15502
15503
15504
15505
15506 template<typename _InputIterator, typename _Predicate>
15507 inline _InputIterator
15508 __find_if(_InputIterator __first, _InputIterator __last,
15509 _Predicate __pred, input_iterator_tag)
15510 {
15511 while (__first != __last && !__pred(*__first))
15512 ++__first;
15513 return __first;
15514 }
15515
15516
15517
15518
15519
15520
15521 template<typename _RandomAccessIterator, typename _Tp>
15522 _RandomAccessIterator
15523 __find(_RandomAccessIterator __first, _RandomAccessIterator __last,
15524 const _Tp& __val, random_access_iterator_tag)
15525 {
15526 typename iterator_traits<_RandomAccessIterator>::difference_type
15527 __trip_count = (__last - __first) >> 2;
15528
15529 for ( ; __trip_count > 0 ; --__trip_count)
15530 {
15531 if (*__first == __val)
15532 return __first;
15533 ++__first;
15534
15535 if (*__first == __val)
15536 return __first;
15537 ++__first;
15538
15539 if (*__first == __val)
15540 return __first;
15541 ++__first;
15542
15543 if (*__first == __val)
15544 return __first;
15545 ++__first;
15546 }
15547
15548 switch (__last - __first)
15549 {
15550 case 3:
15551 if (*__first == __val)
15552 return __first;
15553 ++__first;
15554 case 2:
15555 if (*__first == __val)
15556 return __first;
15557 ++__first;
15558 case 1:
15559 if (*__first == __val)
15560 return __first;
15561 ++__first;
15562 case 0:
15563 default:
15564 return __last;
15565 }
15566 }
15567
15568
15569
15570
15571
15572
15573 template<typename _RandomAccessIterator, typename _Predicate>
15574 _RandomAccessIterator
15575 __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last,
15576 _Predicate __pred, random_access_iterator_tag)
15577 {
15578 typename iterator_traits<_RandomAccessIterator>::difference_type
15579 __trip_count = (__last - __first) >> 2;
15580
15581 for ( ; __trip_count > 0 ; --__trip_count)
15582 {
15583 if (__pred(*__first))
15584 return __first;
15585 ++__first;
15586
15587 if (__pred(*__first))
15588 return __first;
15589 ++__first;
15590
15591 if (__pred(*__first))
15592 return __first;
15593 ++__first;
15594
15595 if (__pred(*__first))
15596 return __first;
15597 ++__first;
15598 }
15599
15600 switch (__last - __first)
15601 {
15602 case 3:
15603 if (__pred(*__first))
15604 return __first;
15605 ++__first;
15606 case 2:
15607 if (__pred(*__first))
15608 return __first;
15609 ++__first;
15610 case 1:
15611 if (__pred(*__first))
15612 return __first;
15613 ++__first;
15614 case 0:
15615 default:
15616 return __last;
15617 }
15618 }
15619
15620
15621
15622
15623
15624
15625 template<typename _CharT>
15626 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
15627 istreambuf_iterator<_CharT> >::__type
15628 find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
15629 const _CharT&);
15630# 316 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15631 template<typename _InputIterator, typename _Tp>
15632 inline _InputIterator
15633 find(_InputIterator __first, _InputIterator __last,
15634 const _Tp& __val)
15635 {
15636
15637
15638
15639
15640 ;
15641 return std::__find(__first, __last, __val,
15642 std::__iterator_category(__first));
15643 }
15644# 338 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15645 template<typename _InputIterator, typename _Predicate>
15646 inline _InputIterator
15647 find_if(_InputIterator __first, _InputIterator __last,
15648 _Predicate __pred)
15649 {
15650
15651
15652
15653
15654 ;
15655 return std::__find_if(__first, __last, __pred,
15656 std::__iterator_category(__first));
15657 }
15658# 360 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15659 template<typename _ForwardIterator>
15660 _ForwardIterator
15661 adjacent_find(_ForwardIterator __first, _ForwardIterator __last)
15662 {
15663
15664
15665
15666
15667 ;
15668 if (__first == __last)
15669 return __last;
15670 _ForwardIterator __next = __first;
15671 while(++__next != __last)
15672 {
15673 if (*__first == *__next)
15674 return __first;
15675 __first = __next;
15676 }
15677 return __last;
15678 }
15679# 391 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15680 template<typename _ForwardIterator, typename _BinaryPredicate>
15681 _ForwardIterator
15682 adjacent_find(_ForwardIterator __first, _ForwardIterator __last,
15683 _BinaryPredicate __binary_pred)
15684 {
15685
15686
15687
15688
15689
15690 ;
15691 if (__first == __last)
15692 return __last;
15693 _ForwardIterator __next = __first;
15694 while(++__next != __last)
15695 {
15696 if (__binary_pred(*__first, *__next))
15697 return __first;
15698 __first = __next;
15699 }
15700 return __last;
15701 }
15702# 422 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15703 template<typename _InputIterator, typename _Tp>
15704 typename iterator_traits<_InputIterator>::difference_type
15705 count(_InputIterator __first, _InputIterator __last, const _Tp& __value)
15706 {
15707
15708
15709
15710
15711 ;
15712 typename iterator_traits<_InputIterator>::difference_type __n = 0;
15713 for ( ; __first != __last; ++__first)
15714 if (*__first == __value)
15715 ++__n;
15716 return __n;
15717 }
15718# 446 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15719 template<typename _InputIterator, typename _Predicate>
15720 typename iterator_traits<_InputIterator>::difference_type
15721 count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred)
15722 {
15723
15724
15725
15726
15727 ;
15728 typename iterator_traits<_InputIterator>::difference_type __n = 0;
15729 for ( ; __first != __last; ++__first)
15730 if (__pred(*__first))
15731 ++__n;
15732 return __n;
15733 }
15734# 485 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15735 template<typename _ForwardIterator1, typename _ForwardIterator2>
15736 _ForwardIterator1
15737 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
15738 _ForwardIterator2 __first2, _ForwardIterator2 __last2)
15739 {
15740
15741
15742
15743
15744
15745
15746 ;
15747 ;
15748
15749 if (__first1 == __last1 || __first2 == __last2)
15750 return __first1;
15751
15752
15753 _ForwardIterator2 __tmp(__first2);
15754 ++__tmp;
15755 if (__tmp == __last2)
15756 return std::find(__first1, __last1, *__first2);
15757
15758
15759 _ForwardIterator2 __p1, __p;
15760 __p1 = __first2; ++__p1;
15761 _ForwardIterator1 __current = __first1;
15762
15763 while (__first1 != __last1)
15764 {
15765 __first1 = std::find(__first1, __last1, *__first2);
15766 if (__first1 == __last1)
15767 return __last1;
15768
15769 __p = __p1;
15770 __current = __first1;
15771 if (++__current == __last1)
15772 return __last1;
15773
15774 while (*__current == *__p)
15775 {
15776 if (++__p == __last2)
15777 return __first1;
15778 if (++__current == __last1)
15779 return __last1;
15780 }
15781 ++__first1;
15782 }
15783 return __first1;
15784 }
15785# 556 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15786 template<typename _ForwardIterator1, typename _ForwardIterator2,
15787 typename _BinaryPredicate>
15788 _ForwardIterator1
15789 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
15790 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
15791 _BinaryPredicate __predicate)
15792 {
15793
15794
15795
15796
15797
15798
15799 ;
15800 ;
15801
15802
15803 if (__first1 == __last1 || __first2 == __last2)
15804 return __first1;
15805
15806
15807 _ForwardIterator2 __tmp(__first2);
15808 ++__tmp;
15809 if (__tmp == __last2)
15810 {
15811 while (__first1 != __last1 && !__predicate(*__first1, *__first2))
15812 ++__first1;
15813 return __first1;
15814 }
15815
15816
15817 _ForwardIterator2 __p1, __p;
15818 __p1 = __first2; ++__p1;
15819 _ForwardIterator1 __current = __first1;
15820
15821 while (__first1 != __last1)
15822 {
15823 while (__first1 != __last1)
15824 {
15825 if (__predicate(*__first1, *__first2))
15826 break;
15827 ++__first1;
15828 }
15829 while (__first1 != __last1 && !__predicate(*__first1, *__first2))
15830 ++__first1;
15831 if (__first1 == __last1)
15832 return __last1;
15833
15834 __p = __p1;
15835 __current = __first1;
15836 if (++__current == __last1)
15837 return __last1;
15838
15839 while (__predicate(*__current, *__p))
15840 {
15841 if (++__p == __last2)
15842 return __first1;
15843 if (++__current == __last1)
15844 return __last1;
15845 }
15846 ++__first1;
15847 }
15848 return __first1;
15849 }
15850# 628 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15851 template<typename _ForwardIterator, typename _Integer, typename _Tp>
15852 _ForwardIterator
15853 __search_n(_ForwardIterator __first, _ForwardIterator __last,
15854 _Integer __count, const _Tp& __val,
15855 std::forward_iterator_tag)
15856 {
15857 __first = std::find(__first, __last, __val);
15858 while (__first != __last)
15859 {
15860 typename iterator_traits<_ForwardIterator>::difference_type
15861 __n = __count;
15862 _ForwardIterator __i = __first;
15863 ++__i;
15864 while (__i != __last && __n != 1 && *__i == __val)
15865 {
15866 ++__i;
15867 --__n;
15868 }
15869 if (__n == 1)
15870 return __first;
15871 if (__i == __last)
15872 return __last;
15873 __first = std::find(++__i, __last, __val);
15874 }
15875 return __last;
15876 }
15877# 662 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15878 template<typename _RandomAccessIter, typename _Integer, typename _Tp>
15879 _RandomAccessIter
15880 __search_n(_RandomAccessIter __first, _RandomAccessIter __last,
15881 _Integer __count, const _Tp& __val,
15882 std::random_access_iterator_tag)
15883 {
15884
15885 typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
15886 _DistanceType;
15887
15888 _DistanceType __tailSize = __last - __first;
15889 const _DistanceType __pattSize = __count;
15890
15891 if (__tailSize < __pattSize)
15892 return __last;
15893
15894 const _DistanceType __skipOffset = __pattSize - 1;
15895 _RandomAccessIter __lookAhead = __first + __skipOffset;
15896 __tailSize -= __pattSize;
15897
15898 while (1)
15899 {
15900
15901
15902 while (!(*__lookAhead == __val))
15903 {
15904 if (__tailSize < __pattSize)
15905 return __last;
15906 __lookAhead += __pattSize;
15907 __tailSize -= __pattSize;
15908 }
15909 _DistanceType __remainder = __skipOffset;
15910 for (_RandomAccessIter __backTrack = __lookAhead - 1;
15911 *__backTrack == __val; --__backTrack)
15912 {
15913 if (--__remainder == 0)
15914 return (__lookAhead - __skipOffset);
15915 }
15916 if (__remainder > __tailSize)
15917 return __last;
15918 __lookAhead += __remainder;
15919 __tailSize -= __remainder;
15920 }
15921 }
15922# 720 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15923 template<typename _ForwardIterator, typename _Integer, typename _Tp>
15924 _ForwardIterator
15925 search_n(_ForwardIterator __first, _ForwardIterator __last,
15926 _Integer __count, const _Tp& __val)
15927 {
15928
15929
15930
15931
15932 ;
15933
15934 if (__count <= 0)
15935 return __first;
15936 if (__count == 1)
15937 return std::find(__first, __last, __val);
15938 return std::__search_n(__first, __last, __count, __val,
15939 std::__iterator_category(__first));
15940 }
15941# 747 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15942 template<typename _ForwardIterator, typename _Integer, typename _Tp,
15943 typename _BinaryPredicate>
15944 _ForwardIterator
15945 __search_n(_ForwardIterator __first, _ForwardIterator __last,
15946 _Integer __count, const _Tp& __val,
15947 _BinaryPredicate __binary_pred, std::forward_iterator_tag)
15948 {
15949 while (__first != __last && !__binary_pred(*__first, __val))
15950 ++__first;
15951
15952 while (__first != __last)
15953 {
15954 typename iterator_traits<_ForwardIterator>::difference_type
15955 __n = __count;
15956 _ForwardIterator __i = __first;
15957 ++__i;
15958 while (__i != __last && __n != 1 && __binary_pred(*__i, __val))
15959 {
15960 ++__i;
15961 --__n;
15962 }
15963 if (__n == 1)
15964 return __first;
15965 if (__i == __last)
15966 return __last;
15967 __first = ++__i;
15968 while (__first != __last && !__binary_pred(*__first, __val))
15969 ++__first;
15970 }
15971 return __last;
15972 }
15973# 787 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
15974 template<typename _RandomAccessIter, typename _Integer, typename _Tp,
15975 typename _BinaryPredicate>
15976 _RandomAccessIter
15977 __search_n(_RandomAccessIter __first, _RandomAccessIter __last,
15978 _Integer __count, const _Tp& __val,
15979 _BinaryPredicate __binary_pred, std::random_access_iterator_tag)
15980 {
15981
15982 typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
15983 _DistanceType;
15984
15985 _DistanceType __tailSize = __last - __first;
15986 const _DistanceType __pattSize = __count;
15987
15988 if (__tailSize < __pattSize)
15989 return __last;
15990
15991 const _DistanceType __skipOffset = __pattSize - 1;
15992 _RandomAccessIter __lookAhead = __first + __skipOffset;
15993 __tailSize -= __pattSize;
15994
15995 while (1)
15996 {
15997
15998
15999 while (!__binary_pred(*__lookAhead, __val))
16000 {
16001 if (__tailSize < __pattSize)
16002 return __last;
16003 __lookAhead += __pattSize;
16004 __tailSize -= __pattSize;
16005 }
16006 _DistanceType __remainder = __skipOffset;
16007 for (_RandomAccessIter __backTrack = __lookAhead - 1;
16008 __binary_pred(*__backTrack, __val); --__backTrack)
16009 {
16010 if (--__remainder == 0)
16011 return (__lookAhead - __skipOffset);
16012 }
16013 if (__remainder > __tailSize)
16014 return __last;
16015 __lookAhead += __remainder;
16016 __tailSize -= __remainder;
16017 }
16018 }
16019# 848 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16020 template<typename _ForwardIterator, typename _Integer, typename _Tp,
16021 typename _BinaryPredicate>
16022 _ForwardIterator
16023 search_n(_ForwardIterator __first, _ForwardIterator __last,
16024 _Integer __count, const _Tp& __val,
16025 _BinaryPredicate __binary_pred)
16026 {
16027
16028
16029
16030
16031 ;
16032
16033 if (__count <= 0)
16034 return __first;
16035 if (__count == 1)
16036 {
16037 while (__first != __last && !__binary_pred(*__first, __val))
16038 ++__first;
16039 return __first;
16040 }
16041 return std::__search_n(__first, __last, __count, __val, __binary_pred,
16042 std::__iterator_category(__first));
16043 }
16044# 884 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16045 template<typename _ForwardIterator1, typename _ForwardIterator2>
16046 _ForwardIterator2
16047 swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
16048 _ForwardIterator2 __first2)
16049 {
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061 ;
16062
16063 for ( ; __first1 != __last1; ++__first1, ++__first2)
16064 std::iter_swap(__first1, __first2);
16065 return __first2;
16066 }
16067# 922 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16068 template<typename _InputIterator, typename _OutputIterator,
16069 typename _UnaryOperation>
16070 _OutputIterator
16071 transform(_InputIterator __first, _InputIterator __last,
16072 _OutputIterator __result, _UnaryOperation __unary_op)
16073 {
16074
16075
16076
16077
16078
16079 ;
16080
16081 for ( ; __first != __last; ++__first, ++__result)
16082 *__result = __unary_op(*__first);
16083 return __result;
16084 }
16085# 957 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16086 template<typename _InputIterator1, typename _InputIterator2,
16087 typename _OutputIterator, typename _BinaryOperation>
16088 _OutputIterator
16089 transform(_InputIterator1 __first1, _InputIterator1 __last1,
16090 _InputIterator2 __first2, _OutputIterator __result,
16091 _BinaryOperation __binary_op)
16092 {
16093
16094
16095
16096
16097
16098
16099 ;
16100
16101 for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
16102 *__result = __binary_op(*__first1, *__first2);
16103 return __result;
16104 }
16105# 989 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16106 template<typename _ForwardIterator, typename _Tp>
16107 void
16108 replace(_ForwardIterator __first, _ForwardIterator __last,
16109 const _Tp& __old_value, const _Tp& __new_value)
16110 {
16111
16112
16113
16114
16115
16116
16117
16118 ;
16119
16120 for ( ; __first != __last; ++__first)
16121 if (*__first == __old_value)
16122 *__first = __new_value;
16123 }
16124# 1020 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16125 template<typename _ForwardIterator, typename _Predicate, typename _Tp>
16126 void
16127 replace_if(_ForwardIterator __first, _ForwardIterator __last,
16128 _Predicate __pred, const _Tp& __new_value)
16129 {
16130
16131
16132
16133
16134
16135
16136
16137 ;
16138
16139 for ( ; __first != __last; ++__first)
16140 if (__pred(*__first))
16141 *__first = __new_value;
16142 }
16143# 1053 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16144 template<typename _InputIterator, typename _OutputIterator, typename _Tp>
16145 _OutputIterator
16146 replace_copy(_InputIterator __first, _InputIterator __last,
16147 _OutputIterator __result,
16148 const _Tp& __old_value, const _Tp& __new_value)
16149 {
16150
16151
16152
16153
16154
16155
16156 ;
16157
16158 for ( ; __first != __last; ++__first, ++__result)
16159 if (*__first == __old_value)
16160 *__result = __new_value;
16161 else
16162 *__result = *__first;
16163 return __result;
16164 }
16165# 1089 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16166 template<typename _InputIterator, typename _OutputIterator,
16167 typename _Predicate, typename _Tp>
16168 _OutputIterator
16169 replace_copy_if(_InputIterator __first, _InputIterator __last,
16170 _OutputIterator __result,
16171 _Predicate __pred, const _Tp& __new_value)
16172 {
16173
16174
16175
16176
16177
16178
16179 ;
16180
16181 for ( ; __first != __last; ++__first, ++__result)
16182 if (__pred(*__first))
16183 *__result = __new_value;
16184 else
16185 *__result = *__first;
16186 return __result;
16187 }
16188# 1123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16189 template<typename _ForwardIterator, typename _Generator>
16190 void
16191 generate(_ForwardIterator __first, _ForwardIterator __last,
16192 _Generator __gen)
16193 {
16194
16195
16196
16197
16198 ;
16199
16200 for ( ; __first != __last; ++__first)
16201 *__first = __gen();
16202 }
16203# 1149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16204 template<typename _OutputIterator, typename _Size, typename _Generator>
16205 _OutputIterator
16206 generate_n(_OutputIterator __first, _Size __n, _Generator __gen)
16207 {
16208
16209
16210
16211
16212
16213 for ( ; __n > 0; --__n, ++__first)
16214 *__first = __gen();
16215 return __first;
16216 }
16217# 1176 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16218 template<typename _InputIterator, typename _OutputIterator, typename _Tp>
16219 _OutputIterator
16220 remove_copy(_InputIterator __first, _InputIterator __last,
16221 _OutputIterator __result, const _Tp& __value)
16222 {
16223
16224
16225
16226
16227
16228
16229 ;
16230
16231 for ( ; __first != __last; ++__first)
16232 if (!(*__first == __value))
16233 {
16234 *__result = *__first;
16235 ++__result;
16236 }
16237 return __result;
16238 }
16239# 1212 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16240 template<typename _InputIterator, typename _OutputIterator,
16241 typename _Predicate>
16242 _OutputIterator
16243 remove_copy_if(_InputIterator __first, _InputIterator __last,
16244 _OutputIterator __result, _Predicate __pred)
16245 {
16246
16247
16248
16249
16250
16251
16252 ;
16253
16254 for ( ; __first != __last; ++__first)
16255 if (!__pred(*__first))
16256 {
16257 *__result = *__first;
16258 ++__result;
16259 }
16260 return __result;
16261 }
16262# 1251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16263 template<typename _ForwardIterator, typename _Tp>
16264 _ForwardIterator
16265 remove(_ForwardIterator __first, _ForwardIterator __last,
16266 const _Tp& __value)
16267 {
16268
16269
16270
16271
16272
16273 ;
16274
16275 __first = std::find(__first, __last, __value);
16276 _ForwardIterator __i = __first;
16277 return __first == __last ? __first
16278 : std::remove_copy(++__i, __last,
16279 __first, __value);
16280 }
16281# 1286 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16282 template<typename _ForwardIterator, typename _Predicate>
16283 _ForwardIterator
16284 remove_if(_ForwardIterator __first, _ForwardIterator __last,
16285 _Predicate __pred)
16286 {
16287
16288
16289
16290
16291
16292 ;
16293
16294 __first = std::find_if(__first, __last, __pred);
16295 _ForwardIterator __i = __first;
16296 return __first == __last ? __first
16297 : std::remove_copy_if(++__i, __last,
16298 __first, __pred);
16299 }
16300# 1312 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16301 template<typename _ForwardIterator, typename _OutputIterator>
16302 _OutputIterator
16303 __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
16304 _OutputIterator __result,
16305 forward_iterator_tag, output_iterator_tag)
16306 {
16307
16308 _ForwardIterator __next = __first;
16309 *__result = *__first;
16310 while (++__next != __last)
16311 if (!(*__first == *__next))
16312 {
16313 __first = __next;
16314 *++__result = *__first;
16315 }
16316 return ++__result;
16317 }
16318# 1337 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16319 template<typename _InputIterator, typename _OutputIterator>
16320 _OutputIterator
16321 __unique_copy(_InputIterator __first, _InputIterator __last,
16322 _OutputIterator __result,
16323 input_iterator_tag, output_iterator_tag)
16324 {
16325
16326 typename iterator_traits<_InputIterator>::value_type __value = *__first;
16327 *__result = __value;
16328 while (++__first != __last)
16329 if (!(__value == *__first))
16330 {
16331 __value = *__first;
16332 *++__result = __value;
16333 }
16334 return ++__result;
16335 }
16336# 1362 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16337 template<typename _InputIterator, typename _ForwardIterator>
16338 _ForwardIterator
16339 __unique_copy(_InputIterator __first, _InputIterator __last,
16340 _ForwardIterator __result,
16341 input_iterator_tag, forward_iterator_tag)
16342 {
16343
16344 *__result = *__first;
16345 while (++__first != __last)
16346 if (!(*__result == *__first))
16347 *++__result = *__first;
16348 return ++__result;
16349 }
16350# 1384 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16351 template<typename _ForwardIterator, typename _OutputIterator,
16352 typename _BinaryPredicate>
16353 _OutputIterator
16354 __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
16355 _OutputIterator __result, _BinaryPredicate __binary_pred,
16356 forward_iterator_tag, output_iterator_tag)
16357 {
16358
16359
16360
16361
16362
16363 _ForwardIterator __next = __first;
16364 *__result = *__first;
16365 while (++__next != __last)
16366 if (!__binary_pred(*__first, *__next))
16367 {
16368 __first = __next;
16369 *++__result = *__first;
16370 }
16371 return ++__result;
16372 }
16373# 1415 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16374 template<typename _InputIterator, typename _OutputIterator,
16375 typename _BinaryPredicate>
16376 _OutputIterator
16377 __unique_copy(_InputIterator __first, _InputIterator __last,
16378 _OutputIterator __result, _BinaryPredicate __binary_pred,
16379 input_iterator_tag, output_iterator_tag)
16380 {
16381
16382
16383
16384
16385
16386 typename iterator_traits<_InputIterator>::value_type __value = *__first;
16387 *__result = __value;
16388 while (++__first != __last)
16389 if (!__binary_pred(__value, *__first))
16390 {
16391 __value = *__first;
16392 *++__result = __value;
16393 }
16394 return ++__result;
16395 }
16396# 1446 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16397 template<typename _InputIterator, typename _ForwardIterator,
16398 typename _BinaryPredicate>
16399 _ForwardIterator
16400 __unique_copy(_InputIterator __first, _InputIterator __last,
16401 _ForwardIterator __result, _BinaryPredicate __binary_pred,
16402 input_iterator_tag, forward_iterator_tag)
16403 {
16404
16405
16406
16407
16408
16409 *__result = *__first;
16410 while (++__first != __last)
16411 if (!__binary_pred(*__result, *__first))
16412 *++__result = *__first;
16413 return ++__result;
16414 }
16415# 1487 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16416 template<typename _InputIterator, typename _OutputIterator>
16417 inline _OutputIterator
16418 unique_copy(_InputIterator __first, _InputIterator __last,
16419 _OutputIterator __result)
16420 {
16421
16422
16423
16424
16425
16426
16427 ;
16428
16429 if (__first == __last)
16430 return __result;
16431 return std::__unique_copy(__first, __last, __result,
16432 std::__iterator_category(__first),
16433 std::__iterator_category(__result));
16434 }
16435# 1527 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16436 template<typename _InputIterator, typename _OutputIterator,
16437 typename _BinaryPredicate>
16438 inline _OutputIterator
16439 unique_copy(_InputIterator __first, _InputIterator __last,
16440 _OutputIterator __result,
16441 _BinaryPredicate __binary_pred)
16442 {
16443
16444
16445
16446
16447 ;
16448
16449 if (__first == __last)
16450 return __result;
16451 return std::__unique_copy(__first, __last, __result, __binary_pred,
16452 std::__iterator_category(__first),
16453 std::__iterator_category(__result));
16454 }
16455# 1560 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16456 template<typename _ForwardIterator>
16457 _ForwardIterator
16458 unique(_ForwardIterator __first, _ForwardIterator __last)
16459 {
16460
16461
16462
16463
16464
16465 ;
16466
16467
16468 __first = std::adjacent_find(__first, __last);
16469 if (__first == __last)
16470 return __last;
16471
16472
16473 _ForwardIterator __dest = __first;
16474 ++__first;
16475 while (++__first != __last)
16476 if (!(*__dest == *__first))
16477 *++__dest = *__first;
16478 return ++__dest;
16479 }
16480# 1599 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16481 template<typename _ForwardIterator, typename _BinaryPredicate>
16482 _ForwardIterator
16483 unique(_ForwardIterator __first, _ForwardIterator __last,
16484 _BinaryPredicate __binary_pred)
16485 {
16486
16487
16488
16489
16490
16491
16492 ;
16493
16494
16495 __first = std::adjacent_find(__first, __last, __binary_pred);
16496 if (__first == __last)
16497 return __last;
16498
16499
16500 _ForwardIterator __dest = __first;
16501 ++__first;
16502 while (++__first != __last)
16503 if (!__binary_pred(*__dest, *__first))
16504 *++__dest = *__first;
16505 return ++__dest;
16506 }
16507# 1633 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16508 template<typename _BidirectionalIterator>
16509 void
16510 __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
16511 bidirectional_iterator_tag)
16512 {
16513 while (true)
16514 if (__first == __last || __first == --__last)
16515 return;
16516 else
16517 {
16518 std::iter_swap(__first, __last);
16519 ++__first;
16520 }
16521 }
16522# 1655 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16523 template<typename _RandomAccessIterator>
16524 void
16525 __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last,
16526 random_access_iterator_tag)
16527 {
16528 if (__first == __last)
16529 return;
16530 --__last;
16531 while (__first < __last)
16532 {
16533 std::iter_swap(__first, __last);
16534 ++__first;
16535 --__last;
16536 }
16537 }
16538# 1682 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16539 template<typename _BidirectionalIterator>
16540 inline void
16541 reverse(_BidirectionalIterator __first, _BidirectionalIterator __last)
16542 {
16543
16544
16545
16546 ;
16547 std::__reverse(__first, __last, std::__iterator_category(__first));
16548 }
16549# 1708 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16550 template<typename _BidirectionalIterator, typename _OutputIterator>
16551 _OutputIterator
16552 reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last,
16553 _OutputIterator __result)
16554 {
16555
16556
16557
16558
16559
16560 ;
16561
16562 while (__first != __last)
16563 {
16564 --__last;
16565 *__result = *__last;
16566 ++__result;
16567 }
16568 return __result;
16569 }
16570# 1736 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16571 template<typename _EuclideanRingElement>
16572 _EuclideanRingElement
16573 __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
16574 {
16575 while (__n != 0)
16576 {
16577 _EuclideanRingElement __t = __m % __n;
16578 __m = __n;
16579 __n = __t;
16580 }
16581 return __m;
16582 }
16583
16584
16585
16586
16587
16588
16589 template<typename _ForwardIterator>
16590 void
16591 __rotate(_ForwardIterator __first,
16592 _ForwardIterator __middle,
16593 _ForwardIterator __last,
16594 forward_iterator_tag)
16595 {
16596 if (__first == __middle || __last == __middle)
16597 return;
16598
16599 _ForwardIterator __first2 = __middle;
16600 do
16601 {
16602 swap(*__first, *__first2);
16603 ++__first;
16604 ++__first2;
16605 if (__first == __middle)
16606 __middle = __first2;
16607 }
16608 while (__first2 != __last);
16609
16610 __first2 = __middle;
16611
16612 while (__first2 != __last)
16613 {
16614 swap(*__first, *__first2);
16615 ++__first;
16616 ++__first2;
16617 if (__first == __middle)
16618 __middle = __first2;
16619 else if (__first2 == __last)
16620 __first2 = __middle;
16621 }
16622 }
16623
16624
16625
16626
16627
16628
16629 template<typename _BidirectionalIterator>
16630 void
16631 __rotate(_BidirectionalIterator __first,
16632 _BidirectionalIterator __middle,
16633 _BidirectionalIterator __last,
16634 bidirectional_iterator_tag)
16635 {
16636
16637
16638
16639
16640 if (__first == __middle || __last == __middle)
16641 return;
16642
16643 std::__reverse(__first, __middle, bidirectional_iterator_tag());
16644 std::__reverse(__middle, __last, bidirectional_iterator_tag());
16645
16646 while (__first != __middle && __middle != __last)
16647 {
16648 swap(*__first, *--__last);
16649 ++__first;
16650 }
16651
16652 if (__first == __middle)
16653 std::__reverse(__middle, __last, bidirectional_iterator_tag());
16654 else
16655 std::__reverse(__first, __middle, bidirectional_iterator_tag());
16656 }
16657
16658
16659
16660
16661
16662
16663 template<typename _RandomAccessIterator>
16664 void
16665 __rotate(_RandomAccessIterator __first,
16666 _RandomAccessIterator __middle,
16667 _RandomAccessIterator __last,
16668 random_access_iterator_tag)
16669 {
16670
16671
16672
16673
16674 if (__first == __middle || __last == __middle)
16675 return;
16676
16677 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
16678 _Distance;
16679 typedef typename iterator_traits<_RandomAccessIterator>::value_type
16680 _ValueType;
16681
16682 const _Distance __n = __last - __first;
16683 const _Distance __k = __middle - __first;
16684 const _Distance __l = __n - __k;
16685
16686 if (__k == __l)
16687 {
16688 std::swap_ranges(__first, __middle, __middle);
16689 return;
16690 }
16691
16692 const _Distance __d = __gcd(__n, __k);
16693
16694 for (_Distance __i = 0; __i < __d; __i++)
16695 {
16696 _ValueType __tmp = *__first;
16697 _RandomAccessIterator __p = __first;
16698
16699 if (__k < __l)
16700 {
16701 for (_Distance __j = 0; __j < __l / __d; __j++)
16702 {
16703 if (__p > __first + __l)
16704 {
16705 *__p = *(__p - __l);
16706 __p -= __l;
16707 }
16708
16709 *__p = *(__p + __k);
16710 __p += __k;
16711 }
16712 }
16713 else
16714 {
16715 for (_Distance __j = 0; __j < __k / __d - 1; __j ++)
16716 {
16717 if (__p < __last - __k)
16718 {
16719 *__p = *(__p + __k);
16720 __p += __k;
16721 }
16722 *__p = * (__p - __l);
16723 __p -= __l;
16724 }
16725 }
16726
16727 *__p = __tmp;
16728 ++__first;
16729 }
16730 }
16731# 1915 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16732 template<typename _ForwardIterator>
16733 inline void
16734 rotate(_ForwardIterator __first, _ForwardIterator __middle,
16735 _ForwardIterator __last)
16736 {
16737
16738
16739
16740 ;
16741 ;
16742
16743 typedef typename iterator_traits<_ForwardIterator>::iterator_category
16744 _IterType;
16745 std::__rotate(__first, __middle, __last, _IterType());
16746 }
16747# 1948 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16748 template<typename _ForwardIterator, typename _OutputIterator>
16749 _OutputIterator
16750 rotate_copy(_ForwardIterator __first, _ForwardIterator __middle,
16751 _ForwardIterator __last, _OutputIterator __result)
16752 {
16753
16754
16755
16756
16757 ;
16758 ;
16759
16760 return std::copy(__first, __middle,
16761 std::copy(__middle, __last, __result));
16762 }
16763# 1974 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16764 template<typename _RandomAccessIterator>
16765 inline void
16766 random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
16767 {
16768
16769
16770
16771 ;
16772
16773 if (__first != __last)
16774 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
16775 std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1)));
16776 }
16777# 2001 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16778 template<typename _RandomAccessIterator, typename _RandomNumberGenerator>
16779 void
16780 random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
16781 _RandomNumberGenerator& __rand)
16782 {
16783
16784
16785
16786 ;
16787
16788 if (__first == __last)
16789 return;
16790 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
16791 std::iter_swap(__i, __first + __rand((__i - __first) + 1));
16792 }
16793
16794
16795
16796
16797
16798
16799
16800 template<typename _ForwardIterator, typename _Predicate>
16801 _ForwardIterator
16802 __partition(_ForwardIterator __first, _ForwardIterator __last,
16803 _Predicate __pred,
16804 forward_iterator_tag)
16805 {
16806 if (__first == __last)
16807 return __first;
16808
16809 while (__pred(*__first))
16810 if (++__first == __last)
16811 return __first;
16812
16813 _ForwardIterator __next = __first;
16814
16815 while (++__next != __last)
16816 if (__pred(*__next))
16817 {
16818 swap(*__first, *__next);
16819 ++__first;
16820 }
16821
16822 return __first;
16823 }
16824
16825
16826
16827
16828
16829
16830 template<typename _BidirectionalIterator, typename _Predicate>
16831 _BidirectionalIterator
16832 __partition(_BidirectionalIterator __first, _BidirectionalIterator __last,
16833 _Predicate __pred,
16834 bidirectional_iterator_tag)
16835 {
16836 while (true)
16837 {
16838 while (true)
16839 if (__first == __last)
16840 return __first;
16841 else if (__pred(*__first))
16842 ++__first;
16843 else
16844 break;
16845 --__last;
16846 while (true)
16847 if (__first == __last)
16848 return __first;
16849 else if (!__pred(*__last))
16850 --__last;
16851 else
16852 break;
16853 std::iter_swap(__first, __last);
16854 ++__first;
16855 }
16856 }
16857# 2095 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16858 template<typename _ForwardIterator, typename _Predicate>
16859 inline _ForwardIterator
16860 partition(_ForwardIterator __first, _ForwardIterator __last,
16861 _Predicate __pred)
16862 {
16863
16864
16865
16866
16867
16868 ;
16869
16870 return std::__partition(__first, __last, __pred,
16871 std::__iterator_category(__first));
16872 }
16873
16874
16875
16876
16877
16878
16879
16880 template<typename _ForwardIterator, typename _Predicate, typename _Distance>
16881 _ForwardIterator
16882 __inplace_stable_partition(_ForwardIterator __first,
16883 _ForwardIterator __last,
16884 _Predicate __pred, _Distance __len)
16885 {
16886 if (__len == 1)
16887 return __pred(*__first) ? __last : __first;
16888 _ForwardIterator __middle = __first;
16889 std::advance(__middle, __len / 2);
16890 _ForwardIterator __begin = std::__inplace_stable_partition(__first,
16891 __middle,
16892 __pred,
16893 __len / 2);
16894 _ForwardIterator __end = std::__inplace_stable_partition(__middle, __last,
16895 __pred,
16896 __len
16897 - __len / 2);
16898 std::rotate(__begin, __middle, __end);
16899 std::advance(__begin, std::distance(__middle, __end));
16900 return __begin;
16901 }
16902
16903
16904
16905
16906
16907
16908 template<typename _ForwardIterator, typename _Pointer, typename _Predicate,
16909 typename _Distance>
16910 _ForwardIterator
16911 __stable_partition_adaptive(_ForwardIterator __first,
16912 _ForwardIterator __last,
16913 _Predicate __pred, _Distance __len,
16914 _Pointer __buffer,
16915 _Distance __buffer_size)
16916 {
16917 if (__len <= __buffer_size)
16918 {
16919 _ForwardIterator __result1 = __first;
16920 _Pointer __result2 = __buffer;
16921 for ( ; __first != __last ; ++__first)
16922 if (__pred(*__first))
16923 {
16924 *__result1 = *__first;
16925 ++__result1;
16926 }
16927 else
16928 {
16929 *__result2 = *__first;
16930 ++__result2;
16931 }
16932 std::copy(__buffer, __result2, __result1);
16933 return __result1;
16934 }
16935 else
16936 {
16937 _ForwardIterator __middle = __first;
16938 std::advance(__middle, __len / 2);
16939 _ForwardIterator __begin =
16940 std::__stable_partition_adaptive(__first, __middle, __pred,
16941 __len / 2, __buffer,
16942 __buffer_size);
16943 _ForwardIterator __end =
16944 std::__stable_partition_adaptive(__middle, __last, __pred,
16945 __len - __len / 2,
16946 __buffer, __buffer_size);
16947 std::rotate(__begin, __middle, __end);
16948 std::advance(__begin, std::distance(__middle, __end));
16949 return __begin;
16950 }
16951 }
16952# 2206 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
16953 template<typename _ForwardIterator, typename _Predicate>
16954 _ForwardIterator
16955 stable_partition(_ForwardIterator __first, _ForwardIterator __last,
16956 _Predicate __pred)
16957 {
16958
16959
16960
16961
16962
16963 ;
16964
16965 if (__first == __last)
16966 return __first;
16967 else
16968 {
16969 typedef typename iterator_traits<_ForwardIterator>::value_type
16970 _ValueType;
16971 typedef typename iterator_traits<_ForwardIterator>::difference_type
16972 _DistanceType;
16973
16974 _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first,
16975 __last);
16976 if (__buf.size() > 0)
16977 return
16978 std::__stable_partition_adaptive(__first, __last, __pred,
16979 _DistanceType(__buf.requested_size()),
16980 __buf.begin(), __buf.size());
16981 else
16982 return
16983 std::__inplace_stable_partition(__first, __last, __pred,
16984 _DistanceType(__buf.requested_size()));
16985 }
16986 }
16987
16988
16989
16990
16991
16992
16993 template<typename _RandomAccessIterator, typename _Tp>
16994 _RandomAccessIterator
16995 __unguarded_partition(_RandomAccessIterator __first,
16996 _RandomAccessIterator __last, _Tp __pivot)
16997 {
16998 while (true)
16999 {
17000 while (*__first < __pivot)
17001 ++__first;
17002 --__last;
17003 while (__pivot < *__last)
17004 --__last;
17005 if (!(__first < __last))
17006 return __first;
17007 std::iter_swap(__first, __last);
17008 ++__first;
17009 }
17010 }
17011
17012
17013
17014
17015
17016
17017 template<typename _RandomAccessIterator, typename _Tp, typename _Compare>
17018 _RandomAccessIterator
17019 __unguarded_partition(_RandomAccessIterator __first,
17020 _RandomAccessIterator __last,
17021 _Tp __pivot, _Compare __comp)
17022 {
17023 while (true)
17024 {
17025 while (__comp(*__first, __pivot))
17026 ++__first;
17027 --__last;
17028 while (__comp(__pivot, *__last))
17029 --__last;
17030 if (!(__first < __last))
17031 return __first;
17032 std::iter_swap(__first, __last);
17033 ++__first;
17034 }
17035 }
17036
17037
17038
17039
17040
17041
17042
17043 enum { _S_threshold = 16 };
17044
17045
17046
17047
17048
17049
17050 template<typename _RandomAccessIterator, typename _Tp>
17051 void
17052 __unguarded_linear_insert(_RandomAccessIterator __last, _Tp __val)
17053 {
17054 _RandomAccessIterator __next = __last;
17055 --__next;
17056 while (__val < *__next)
17057 {
17058 *__last = *__next;
17059 __last = __next;
17060 --__next;
17061 }
17062 *__last = __val;
17063 }
17064
17065
17066
17067
17068
17069
17070 template<typename _RandomAccessIterator, typename _Tp, typename _Compare>
17071 void
17072 __unguarded_linear_insert(_RandomAccessIterator __last, _Tp __val,
17073 _Compare __comp)
17074 {
17075 _RandomAccessIterator __next = __last;
17076 --__next;
17077 while (__comp(__val, *__next))
17078 {
17079 *__last = *__next;
17080 __last = __next;
17081 --__next;
17082 }
17083 *__last = __val;
17084 }
17085
17086
17087
17088
17089
17090
17091 template<typename _RandomAccessIterator>
17092 void
17093 __insertion_sort(_RandomAccessIterator __first,
17094 _RandomAccessIterator __last)
17095 {
17096 if (__first == __last)
17097 return;
17098
17099 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
17100 {
17101 typename iterator_traits<_RandomAccessIterator>::value_type
17102 __val = *__i;
17103 if (__val < *__first)
17104 {
17105 std::copy_backward(__first, __i, __i + 1);
17106 *__first = __val;
17107 }
17108 else
17109 std::__unguarded_linear_insert(__i, __val);
17110 }
17111 }
17112
17113
17114
17115
17116
17117
17118 template<typename _RandomAccessIterator, typename _Compare>
17119 void
17120 __insertion_sort(_RandomAccessIterator __first,
17121 _RandomAccessIterator __last, _Compare __comp)
17122 {
17123 if (__first == __last) return;
17124
17125 for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
17126 {
17127 typename iterator_traits<_RandomAccessIterator>::value_type
17128 __val = *__i;
17129 if (__comp(__val, *__first))
17130 {
17131 std::copy_backward(__first, __i, __i + 1);
17132 *__first = __val;
17133 }
17134 else
17135 std::__unguarded_linear_insert(__i, __val, __comp);
17136 }
17137 }
17138
17139
17140
17141
17142
17143
17144 template<typename _RandomAccessIterator>
17145 inline void
17146 __unguarded_insertion_sort(_RandomAccessIterator __first,
17147 _RandomAccessIterator __last)
17148 {
17149 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17150 _ValueType;
17151
17152 for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
17153 std::__unguarded_linear_insert(__i, _ValueType(*__i));
17154 }
17155
17156
17157
17158
17159
17160
17161 template<typename _RandomAccessIterator, typename _Compare>
17162 inline void
17163 __unguarded_insertion_sort(_RandomAccessIterator __first,
17164 _RandomAccessIterator __last, _Compare __comp)
17165 {
17166 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17167 _ValueType;
17168
17169 for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
17170 std::__unguarded_linear_insert(__i, _ValueType(*__i), __comp);
17171 }
17172
17173
17174
17175
17176
17177
17178 template<typename _RandomAccessIterator>
17179 void
17180 __final_insertion_sort(_RandomAccessIterator __first,
17181 _RandomAccessIterator __last)
17182 {
17183 if (__last - __first > int(_S_threshold))
17184 {
17185 std::__insertion_sort(__first, __first + int(_S_threshold));
17186 std::__unguarded_insertion_sort(__first + int(_S_threshold), __last);
17187 }
17188 else
17189 std::__insertion_sort(__first, __last);
17190 }
17191
17192
17193
17194
17195
17196
17197 template<typename _RandomAccessIterator, typename _Compare>
17198 void
17199 __final_insertion_sort(_RandomAccessIterator __first,
17200 _RandomAccessIterator __last, _Compare __comp)
17201 {
17202 if (__last - __first > int(_S_threshold))
17203 {
17204 std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
17205 std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
17206 __comp);
17207 }
17208 else
17209 std::__insertion_sort(__first, __last, __comp);
17210 }
17211
17212
17213
17214
17215
17216
17217 template<typename _RandomAccessIterator>
17218 void
17219 __heap_select(_RandomAccessIterator __first,
17220 _RandomAccessIterator __middle,
17221 _RandomAccessIterator __last)
17222 {
17223 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17224 _ValueType;
17225
17226 std::make_heap(__first, __middle);
17227 for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
17228 if (*__i < *__first)
17229 std::__pop_heap(__first, __middle, __i, _ValueType(*__i));
17230 }
17231
17232
17233
17234
17235
17236
17237 template<typename _RandomAccessIterator, typename _Compare>
17238 void
17239 __heap_select(_RandomAccessIterator __first,
17240 _RandomAccessIterator __middle,
17241 _RandomAccessIterator __last, _Compare __comp)
17242 {
17243 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17244 _ValueType;
17245
17246 std::make_heap(__first, __middle, __comp);
17247 for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
17248 if (__comp(*__i, *__first))
17249 std::__pop_heap(__first, __middle, __i, _ValueType(*__i), __comp);
17250 }
17251
17252
17253
17254
17255
17256
17257 template<typename _Size>
17258 inline _Size
17259 __lg(_Size __n)
17260 {
17261 _Size __k;
17262 for (__k = 0; __n != 1; __n >>= 1)
17263 ++__k;
17264 return __k;
17265 }
17266# 2535 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17267 template<typename _RandomAccessIterator>
17268 inline void
17269 partial_sort(_RandomAccessIterator __first,
17270 _RandomAccessIterator __middle,
17271 _RandomAccessIterator __last)
17272 {
17273 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17274 _ValueType;
17275
17276
17277
17278
17279
17280 ;
17281 ;
17282
17283 std::__heap_select(__first, __middle, __last);
17284 std::sort_heap(__first, __middle);
17285 }
17286# 2573 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17287 template<typename _RandomAccessIterator, typename _Compare>
17288 inline void
17289 partial_sort(_RandomAccessIterator __first,
17290 _RandomAccessIterator __middle,
17291 _RandomAccessIterator __last,
17292 _Compare __comp)
17293 {
17294 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17295 _ValueType;
17296
17297
17298
17299
17300
17301
17302 ;
17303 ;
17304
17305 std::__heap_select(__first, __middle, __last, __comp);
17306 std::sort_heap(__first, __middle, __comp);
17307 }
17308# 2612 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17309 template<typename _InputIterator, typename _RandomAccessIterator>
17310 _RandomAccessIterator
17311 partial_sort_copy(_InputIterator __first, _InputIterator __last,
17312 _RandomAccessIterator __result_first,
17313 _RandomAccessIterator __result_last)
17314 {
17315 typedef typename iterator_traits<_InputIterator>::value_type
17316 _InputValueType;
17317 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17318 _OutputValueType;
17319 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
17320 _DistanceType;
17321
17322
17323
17324
17325
17326
17327
17328
17329 ;
17330 ;
17331
17332 if (__result_first == __result_last)
17333 return __result_last;
17334 _RandomAccessIterator __result_real_last = __result_first;
17335 while(__first != __last && __result_real_last != __result_last)
17336 {
17337 *__result_real_last = *__first;
17338 ++__result_real_last;
17339 ++__first;
17340 }
17341 std::make_heap(__result_first, __result_real_last);
17342 while (__first != __last)
17343 {
17344 if (*__first < *__result_first)
17345 std::__adjust_heap(__result_first, _DistanceType(0),
17346 _DistanceType(__result_real_last
17347 - __result_first),
17348 _InputValueType(*__first));
17349 ++__first;
17350 }
17351 std::sort_heap(__result_first, __result_real_last);
17352 return __result_real_last;
17353 }
17354# 2677 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17355 template<typename _InputIterator, typename _RandomAccessIterator, typename _Compare>
17356 _RandomAccessIterator
17357 partial_sort_copy(_InputIterator __first, _InputIterator __last,
17358 _RandomAccessIterator __result_first,
17359 _RandomAccessIterator __result_last,
17360 _Compare __comp)
17361 {
17362 typedef typename iterator_traits<_InputIterator>::value_type
17363 _InputValueType;
17364 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17365 _OutputValueType;
17366 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
17367 _DistanceType;
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379 ;
17380 ;
17381
17382 if (__result_first == __result_last)
17383 return __result_last;
17384 _RandomAccessIterator __result_real_last = __result_first;
17385 while(__first != __last && __result_real_last != __result_last)
17386 {
17387 *__result_real_last = *__first;
17388 ++__result_real_last;
17389 ++__first;
17390 }
17391 std::make_heap(__result_first, __result_real_last, __comp);
17392 while (__first != __last)
17393 {
17394 if (__comp(*__first, *__result_first))
17395 std::__adjust_heap(__result_first, _DistanceType(0),
17396 _DistanceType(__result_real_last
17397 - __result_first),
17398 _InputValueType(*__first),
17399 __comp);
17400 ++__first;
17401 }
17402 std::sort_heap(__result_first, __result_real_last, __comp);
17403 return __result_real_last;
17404 }
17405
17406
17407
17408
17409
17410
17411 template<typename _RandomAccessIterator, typename _Size>
17412 void
17413 __introsort_loop(_RandomAccessIterator __first,
17414 _RandomAccessIterator __last,
17415 _Size __depth_limit)
17416 {
17417 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17418 _ValueType;
17419
17420 while (__last - __first > int(_S_threshold))
17421 {
17422 if (__depth_limit == 0)
17423 {
17424 std::partial_sort(__first, __last, __last);
17425 return;
17426 }
17427 --__depth_limit;
17428 _RandomAccessIterator __cut =
17429 std::__unguarded_partition(__first, __last,
17430 _ValueType(std::__median(*__first,
17431 *(__first
17432 + (__last
17433 - __first)
17434 / 2),
17435 *(__last
17436 - 1))));
17437 std::__introsort_loop(__cut, __last, __depth_limit);
17438 __last = __cut;
17439 }
17440 }
17441
17442
17443
17444
17445
17446
17447 template<typename _RandomAccessIterator, typename _Size, typename _Compare>
17448 void
17449 __introsort_loop(_RandomAccessIterator __first,
17450 _RandomAccessIterator __last,
17451 _Size __depth_limit, _Compare __comp)
17452 {
17453 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17454 _ValueType;
17455
17456 while (__last - __first > int(_S_threshold))
17457 {
17458 if (__depth_limit == 0)
17459 {
17460 std::partial_sort(__first, __last, __last, __comp);
17461 return;
17462 }
17463 --__depth_limit;
17464 _RandomAccessIterator __cut =
17465 std::__unguarded_partition(__first, __last,
17466 _ValueType(std::__median(*__first,
17467 *(__first
17468 + (__last
17469 - __first)
17470 / 2),
17471 *(__last - 1),
17472 __comp)),
17473 __comp);
17474 std::__introsort_loop(__cut, __last, __depth_limit, __comp);
17475 __last = __cut;
17476 }
17477 }
17478# 2814 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17479 template<typename _RandomAccessIterator>
17480 inline void
17481 sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
17482 {
17483 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17484 _ValueType;
17485
17486
17487
17488
17489
17490 ;
17491
17492 if (__first != __last)
17493 {
17494 std::__introsort_loop(__first, __last,
17495 std::__lg(__last - __first) * 2);
17496 std::__final_insertion_sort(__first, __last);
17497 }
17498 }
17499# 2849 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17500 template<typename _RandomAccessIterator, typename _Compare>
17501 inline void
17502 sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
17503 _Compare __comp)
17504 {
17505 typedef typename iterator_traits<_RandomAccessIterator>::value_type
17506 _ValueType;
17507
17508
17509
17510
17511
17512
17513 ;
17514
17515 if (__first != __last)
17516 {
17517 std::__introsort_loop(__first, __last,
17518 std::__lg(__last - __first) * 2, __comp);
17519 std::__final_insertion_sort(__first, __last, __comp);
17520 }
17521 }
17522# 2882 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17523 template<typename _ForwardIterator, typename _Tp>
17524 _ForwardIterator
17525 lower_bound(_ForwardIterator __first, _ForwardIterator __last,
17526 const _Tp& __val)
17527 {
17528 typedef typename iterator_traits<_ForwardIterator>::value_type
17529 _ValueType;
17530 typedef typename iterator_traits<_ForwardIterator>::difference_type
17531 _DistanceType;
17532
17533
17534
17535
17536 ;
17537
17538 _DistanceType __len = std::distance(__first, __last);
17539 _DistanceType __half;
17540 _ForwardIterator __middle;
17541
17542 while (__len > 0)
17543 {
17544 __half = __len >> 1;
17545 __middle = __first;
17546 std::advance(__middle, __half);
17547 if (*__middle < __val)
17548 {
17549 __first = __middle;
17550 ++__first;
17551 __len = __len - __half - 1;
17552 }
17553 else
17554 __len = __half;
17555 }
17556 return __first;
17557 }
17558# 2932 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17559 template<typename _ForwardIterator, typename _Tp, typename _Compare>
17560 _ForwardIterator
17561 lower_bound(_ForwardIterator __first, _ForwardIterator __last,
17562 const _Tp& __val, _Compare __comp)
17563 {
17564 typedef typename iterator_traits<_ForwardIterator>::value_type
17565 _ValueType;
17566 typedef typename iterator_traits<_ForwardIterator>::difference_type
17567 _DistanceType;
17568
17569
17570
17571
17572
17573 ;
17574
17575 _DistanceType __len = std::distance(__first, __last);
17576 _DistanceType __half;
17577 _ForwardIterator __middle;
17578
17579 while (__len > 0)
17580 {
17581 __half = __len >> 1;
17582 __middle = __first;
17583 std::advance(__middle, __half);
17584 if (__comp(*__middle, __val))
17585 {
17586 __first = __middle;
17587 ++__first;
17588 __len = __len - __half - 1;
17589 }
17590 else
17591 __len = __half;
17592 }
17593 return __first;
17594 }
17595# 2979 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17596 template<typename _ForwardIterator, typename _Tp>
17597 _ForwardIterator
17598 upper_bound(_ForwardIterator __first, _ForwardIterator __last,
17599 const _Tp& __val)
17600 {
17601 typedef typename iterator_traits<_ForwardIterator>::value_type
17602 _ValueType;
17603 typedef typename iterator_traits<_ForwardIterator>::difference_type
17604 _DistanceType;
17605
17606
17607
17608
17609 ;
17610
17611 _DistanceType __len = std::distance(__first, __last);
17612 _DistanceType __half;
17613 _ForwardIterator __middle;
17614
17615 while (__len > 0)
17616 {
17617 __half = __len >> 1;
17618 __middle = __first;
17619 std::advance(__middle, __half);
17620 if (__val < *__middle)
17621 __len = __half;
17622 else
17623 {
17624 __first = __middle;
17625 ++__first;
17626 __len = __len - __half - 1;
17627 }
17628 }
17629 return __first;
17630 }
17631# 3029 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17632 template<typename _ForwardIterator, typename _Tp, typename _Compare>
17633 _ForwardIterator
17634 upper_bound(_ForwardIterator __first, _ForwardIterator __last,
17635 const _Tp& __val, _Compare __comp)
17636 {
17637 typedef typename iterator_traits<_ForwardIterator>::value_type
17638 _ValueType;
17639 typedef typename iterator_traits<_ForwardIterator>::difference_type
17640 _DistanceType;
17641
17642
17643
17644
17645
17646 ;
17647
17648 _DistanceType __len = std::distance(__first, __last);
17649 _DistanceType __half;
17650 _ForwardIterator __middle;
17651
17652 while (__len > 0)
17653 {
17654 __half = __len >> 1;
17655 __middle = __first;
17656 std::advance(__middle, __half);
17657 if (__comp(__val, *__middle))
17658 __len = __half;
17659 else
17660 {
17661 __first = __middle;
17662 ++__first;
17663 __len = __len - __half - 1;
17664 }
17665 }
17666 return __first;
17667 }
17668
17669
17670
17671
17672
17673
17674 template<typename _BidirectionalIterator, typename _Distance>
17675 void
17676 __merge_without_buffer(_BidirectionalIterator __first,
17677 _BidirectionalIterator __middle,
17678 _BidirectionalIterator __last,
17679 _Distance __len1, _Distance __len2)
17680 {
17681 if (__len1 == 0 || __len2 == 0)
17682 return;
17683 if (__len1 + __len2 == 2)
17684 {
17685 if (*__middle < *__first)
17686 std::iter_swap(__first, __middle);
17687 return;
17688 }
17689 _BidirectionalIterator __first_cut = __first;
17690 _BidirectionalIterator __second_cut = __middle;
17691 _Distance __len11 = 0;
17692 _Distance __len22 = 0;
17693 if (__len1 > __len2)
17694 {
17695 __len11 = __len1 / 2;
17696 std::advance(__first_cut, __len11);
17697 __second_cut = std::lower_bound(__middle, __last, *__first_cut);
17698 __len22 = std::distance(__middle, __second_cut);
17699 }
17700 else
17701 {
17702 __len22 = __len2 / 2;
17703 std::advance(__second_cut, __len22);
17704 __first_cut = std::upper_bound(__first, __middle, *__second_cut);
17705 __len11 = std::distance(__first, __first_cut);
17706 }
17707 std::rotate(__first_cut, __middle, __second_cut);
17708 _BidirectionalIterator __new_middle = __first_cut;
17709 std::advance(__new_middle, std::distance(__middle, __second_cut));
17710 std::__merge_without_buffer(__first, __first_cut, __new_middle,
17711 __len11, __len22);
17712 std::__merge_without_buffer(__new_middle, __second_cut, __last,
17713 __len1 - __len11, __len2 - __len22);
17714 }
17715
17716
17717
17718
17719
17720
17721 template<typename _BidirectionalIterator, typename _Distance,
17722 typename _Compare>
17723 void
17724 __merge_without_buffer(_BidirectionalIterator __first,
17725 _BidirectionalIterator __middle,
17726 _BidirectionalIterator __last,
17727 _Distance __len1, _Distance __len2,
17728 _Compare __comp)
17729 {
17730 if (__len1 == 0 || __len2 == 0)
17731 return;
17732 if (__len1 + __len2 == 2)
17733 {
17734 if (__comp(*__middle, *__first))
17735 std::iter_swap(__first, __middle);
17736 return;
17737 }
17738 _BidirectionalIterator __first_cut = __first;
17739 _BidirectionalIterator __second_cut = __middle;
17740 _Distance __len11 = 0;
17741 _Distance __len22 = 0;
17742 if (__len1 > __len2)
17743 {
17744 __len11 = __len1 / 2;
17745 std::advance(__first_cut, __len11);
17746 __second_cut = std::lower_bound(__middle, __last, *__first_cut,
17747 __comp);
17748 __len22 = std::distance(__middle, __second_cut);
17749 }
17750 else
17751 {
17752 __len22 = __len2 / 2;
17753 std::advance(__second_cut, __len22);
17754 __first_cut = std::upper_bound(__first, __middle, *__second_cut,
17755 __comp);
17756 __len11 = std::distance(__first, __first_cut);
17757 }
17758 std::rotate(__first_cut, __middle, __second_cut);
17759 _BidirectionalIterator __new_middle = __first_cut;
17760 std::advance(__new_middle, std::distance(__middle, __second_cut));
17761 std::__merge_without_buffer(__first, __first_cut, __new_middle,
17762 __len11, __len22, __comp);
17763 std::__merge_without_buffer(__new_middle, __second_cut, __last,
17764 __len1 - __len11, __len2 - __len22, __comp);
17765 }
17766
17767
17768
17769
17770
17771
17772 template<typename _RandomAccessIterator>
17773 void
17774 __inplace_stable_sort(_RandomAccessIterator __first,
17775 _RandomAccessIterator __last)
17776 {
17777 if (__last - __first < 15)
17778 {
17779 std::__insertion_sort(__first, __last);
17780 return;
17781 }
17782 _RandomAccessIterator __middle = __first + (__last - __first) / 2;
17783 std::__inplace_stable_sort(__first, __middle);
17784 std::__inplace_stable_sort(__middle, __last);
17785 std::__merge_without_buffer(__first, __middle, __last,
17786 __middle - __first,
17787 __last - __middle);
17788 }
17789
17790
17791
17792
17793
17794
17795 template<typename _RandomAccessIterator, typename _Compare>
17796 void
17797 __inplace_stable_sort(_RandomAccessIterator __first,
17798 _RandomAccessIterator __last, _Compare __comp)
17799 {
17800 if (__last - __first < 15)
17801 {
17802 std::__insertion_sort(__first, __last, __comp);
17803 return;
17804 }
17805 _RandomAccessIterator __middle = __first + (__last - __first) / 2;
17806 std::__inplace_stable_sort(__first, __middle, __comp);
17807 std::__inplace_stable_sort(__middle, __last, __comp);
17808 std::__merge_without_buffer(__first, __middle, __last,
17809 __middle - __first,
17810 __last - __middle,
17811 __comp);
17812 }
17813# 3227 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17814 template<typename _InputIterator1, typename _InputIterator2,
17815 typename _OutputIterator>
17816 _OutputIterator
17817 merge(_InputIterator1 __first1, _InputIterator1 __last1,
17818 _InputIterator2 __first2, _InputIterator2 __last2,
17819 _OutputIterator __result)
17820 {
17821 typedef typename iterator_traits<_InputIterator1>::value_type
17822 _ValueType1;
17823 typedef typename iterator_traits<_InputIterator2>::value_type
17824 _ValueType2;
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834 ;
17835 ;
17836
17837 while (__first1 != __last1 && __first2 != __last2)
17838 {
17839 if (*__first2 < *__first1)
17840 {
17841 *__result = *__first2;
17842 ++__first2;
17843 }
17844 else
17845 {
17846 *__result = *__first1;
17847 ++__first1;
17848 }
17849 ++__result;
17850 }
17851 return std::copy(__first2, __last2, std::copy(__first1, __last1,
17852 __result));
17853 }
17854# 3288 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
17855 template<typename _InputIterator1, typename _InputIterator2,
17856 typename _OutputIterator, typename _Compare>
17857 _OutputIterator
17858 merge(_InputIterator1 __first1, _InputIterator1 __last1,
17859 _InputIterator2 __first2, _InputIterator2 __last2,
17860 _OutputIterator __result, _Compare __comp)
17861 {
17862 typedef typename iterator_traits<_InputIterator1>::value_type
17863 _ValueType1;
17864 typedef typename iterator_traits<_InputIterator2>::value_type
17865 _ValueType2;
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876 ;
17877 ;
17878
17879 while (__first1 != __last1 && __first2 != __last2)
17880 {
17881 if (__comp(*__first2, *__first1))
17882 {
17883 *__result = *__first2;
17884 ++__first2;
17885 }
17886 else
17887 {
17888 *__result = *__first1;
17889 ++__first1;
17890 }
17891 ++__result;
17892 }
17893 return std::copy(__first2, __last2, std::copy(__first1, __last1,
17894 __result));
17895 }
17896
17897 template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
17898 typename _Distance>
17899 void
17900 __merge_sort_loop(_RandomAccessIterator1 __first,
17901 _RandomAccessIterator1 __last,
17902 _RandomAccessIterator2 __result,
17903 _Distance __step_size)
17904 {
17905 const _Distance __two_step = 2 * __step_size;
17906
17907 while (__last - __first >= __two_step)
17908 {
17909 __result = std::merge(__first, __first + __step_size,
17910 __first + __step_size, __first + __two_step,
17911 __result);
17912 __first += __two_step;
17913 }
17914
17915 __step_size = std::min(_Distance(__last - __first), __step_size);
17916 std::merge(__first, __first + __step_size, __first + __step_size, __last,
17917 __result);
17918 }
17919
17920 template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
17921 typename _Distance, typename _Compare>
17922 void
17923 __merge_sort_loop(_RandomAccessIterator1 __first,
17924 _RandomAccessIterator1 __last,
17925 _RandomAccessIterator2 __result, _Distance __step_size,
17926 _Compare __comp)
17927 {
17928 const _Distance __two_step = 2 * __step_size;
17929
17930 while (__last - __first >= __two_step)
17931 {
17932 __result = std::merge(__first, __first + __step_size,
17933 __first + __step_size, __first + __two_step,
17934 __result,
17935 __comp);
17936 __first += __two_step;
17937 }
17938 __step_size = std::min(_Distance(__last - __first), __step_size);
17939
17940 std::merge(__first, __first + __step_size,
17941 __first + __step_size, __last,
17942 __result,
17943 __comp);
17944 }
17945
17946 enum { _S_chunk_size = 7 };
17947
17948 template<typename _RandomAccessIterator, typename _Distance>
17949 void
17950 __chunk_insertion_sort(_RandomAccessIterator __first,
17951 _RandomAccessIterator __last,
17952 _Distance __chunk_size)
17953 {
17954 while (__last - __first >= __chunk_size)
17955 {
17956 std::__insertion_sort(__first, __first + __chunk_size);
17957 __first += __chunk_size;
17958 }
17959 std::__insertion_sort(__first, __last);
17960 }
17961
17962 template<typename _RandomAccessIterator, typename _Distance, typename _Compare>
17963 void
17964 __chunk_insertion_sort(_RandomAccessIterator __first,
17965 _RandomAccessIterator __last,
17966 _Distance __chunk_size, _Compare __comp)
17967 {
17968 while (__last - __first >= __chunk_size)
17969 {
17970 std::__insertion_sort(__first, __first + __chunk_size, __comp);
17971 __first += __chunk_size;
17972 }
17973 std::__insertion_sort(__first, __last, __comp);
17974 }
17975
17976 template<typename _RandomAccessIterator, typename _Pointer>
17977 void
17978 __merge_sort_with_buffer(_RandomAccessIterator __first,
17979 _RandomAccessIterator __last,
17980 _Pointer __buffer)
17981 {
17982 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
17983 _Distance;
17984
17985 const _Distance __len = __last - __first;
17986 const _Pointer __buffer_last = __buffer + __len;
17987
17988 _Distance __step_size = _S_chunk_size;
17989 std::__chunk_insertion_sort(__first, __last, __step_size);
17990
17991 while (__step_size < __len)
17992 {
17993 std::__merge_sort_loop(__first, __last, __buffer, __step_size);
17994 __step_size *= 2;
17995 std::__merge_sort_loop(__buffer, __buffer_last, __first, __step_size);
17996 __step_size *= 2;
17997 }
17998 }
17999
18000 template<typename _RandomAccessIterator, typename _Pointer, typename _Compare>
18001 void
18002 __merge_sort_with_buffer(_RandomAccessIterator __first,
18003 _RandomAccessIterator __last,
18004 _Pointer __buffer, _Compare __comp)
18005 {
18006 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
18007 _Distance;
18008
18009 const _Distance __len = __last - __first;
18010 const _Pointer __buffer_last = __buffer + __len;
18011
18012 _Distance __step_size = _S_chunk_size;
18013 std::__chunk_insertion_sort(__first, __last, __step_size, __comp);
18014
18015 while (__step_size < __len)
18016 {
18017 std::__merge_sort_loop(__first, __last, __buffer,
18018 __step_size, __comp);
18019 __step_size *= 2;
18020 std::__merge_sort_loop(__buffer, __buffer_last, __first,
18021 __step_size, __comp);
18022 __step_size *= 2;
18023 }
18024 }
18025
18026
18027
18028
18029
18030
18031 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
18032 typename _BidirectionalIterator3>
18033 _BidirectionalIterator3
18034 __merge_backward(_BidirectionalIterator1 __first1,
18035 _BidirectionalIterator1 __last1,
18036 _BidirectionalIterator2 __first2,
18037 _BidirectionalIterator2 __last2,
18038 _BidirectionalIterator3 __result)
18039 {
18040 if (__first1 == __last1)
18041 return std::copy_backward(__first2, __last2, __result);
18042 if (__first2 == __last2)
18043 return std::copy_backward(__first1, __last1, __result);
18044 --__last1;
18045 --__last2;
18046 while (true)
18047 {
18048 if (*__last2 < *__last1)
18049 {
18050 *--__result = *__last1;
18051 if (__first1 == __last1)
18052 return std::copy_backward(__first2, ++__last2, __result);
18053 --__last1;
18054 }
18055 else
18056 {
18057 *--__result = *__last2;
18058 if (__first2 == __last2)
18059 return std::copy_backward(__first1, ++__last1, __result);
18060 --__last2;
18061 }
18062 }
18063 }
18064
18065
18066
18067
18068
18069
18070 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
18071 typename _BidirectionalIterator3, typename _Compare>
18072 _BidirectionalIterator3
18073 __merge_backward(_BidirectionalIterator1 __first1,
18074 _BidirectionalIterator1 __last1,
18075 _BidirectionalIterator2 __first2,
18076 _BidirectionalIterator2 __last2,
18077 _BidirectionalIterator3 __result,
18078 _Compare __comp)
18079 {
18080 if (__first1 == __last1)
18081 return std::copy_backward(__first2, __last2, __result);
18082 if (__first2 == __last2)
18083 return std::copy_backward(__first1, __last1, __result);
18084 --__last1;
18085 --__last2;
18086 while (true)
18087 {
18088 if (__comp(*__last2, *__last1))
18089 {
18090 *--__result = *__last1;
18091 if (__first1 == __last1)
18092 return std::copy_backward(__first2, ++__last2, __result);
18093 --__last1;
18094 }
18095 else
18096 {
18097 *--__result = *__last2;
18098 if (__first2 == __last2)
18099 return std::copy_backward(__first1, ++__last1, __result);
18100 --__last2;
18101 }
18102 }
18103 }
18104
18105
18106
18107
18108
18109
18110 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
18111 typename _Distance>
18112 _BidirectionalIterator1
18113 __rotate_adaptive(_BidirectionalIterator1 __first,
18114 _BidirectionalIterator1 __middle,
18115 _BidirectionalIterator1 __last,
18116 _Distance __len1, _Distance __len2,
18117 _BidirectionalIterator2 __buffer,
18118 _Distance __buffer_size)
18119 {
18120 _BidirectionalIterator2 __buffer_end;
18121 if (__len1 > __len2 && __len2 <= __buffer_size)
18122 {
18123 __buffer_end = std::copy(__middle, __last, __buffer);
18124 std::copy_backward(__first, __middle, __last);
18125 return std::copy(__buffer, __buffer_end, __first);
18126 }
18127 else if (__len1 <= __buffer_size)
18128 {
18129 __buffer_end = std::copy(__first, __middle, __buffer);
18130 std::copy(__middle, __last, __first);
18131 return std::copy_backward(__buffer, __buffer_end, __last);
18132 }
18133 else
18134 {
18135 std::rotate(__first, __middle, __last);
18136 std::advance(__first, std::distance(__middle, __last));
18137 return __first;
18138 }
18139 }
18140
18141
18142
18143
18144
18145
18146 template<typename _BidirectionalIterator, typename _Distance,
18147 typename _Pointer>
18148 void
18149 __merge_adaptive(_BidirectionalIterator __first,
18150 _BidirectionalIterator __middle,
18151 _BidirectionalIterator __last,
18152 _Distance __len1, _Distance __len2,
18153 _Pointer __buffer, _Distance __buffer_size)
18154 {
18155 if (__len1 <= __len2 && __len1 <= __buffer_size)
18156 {
18157 _Pointer __buffer_end = std::copy(__first, __middle, __buffer);
18158 std::merge(__buffer, __buffer_end, __middle, __last, __first);
18159 }
18160 else if (__len2 <= __buffer_size)
18161 {
18162 _Pointer __buffer_end = std::copy(__middle, __last, __buffer);
18163 std::__merge_backward(__first, __middle, __buffer,
18164 __buffer_end, __last);
18165 }
18166 else
18167 {
18168 _BidirectionalIterator __first_cut = __first;
18169 _BidirectionalIterator __second_cut = __middle;
18170 _Distance __len11 = 0;
18171 _Distance __len22 = 0;
18172 if (__len1 > __len2)
18173 {
18174 __len11 = __len1 / 2;
18175 std::advance(__first_cut, __len11);
18176 __second_cut = std::lower_bound(__middle, __last,
18177 *__first_cut);
18178 __len22 = std::distance(__middle, __second_cut);
18179 }
18180 else
18181 {
18182 __len22 = __len2 / 2;
18183 std::advance(__second_cut, __len22);
18184 __first_cut = std::upper_bound(__first, __middle,
18185 *__second_cut);
18186 __len11 = std::distance(__first, __first_cut);
18187 }
18188 _BidirectionalIterator __new_middle =
18189 std::__rotate_adaptive(__first_cut, __middle, __second_cut,
18190 __len1 - __len11, __len22, __buffer,
18191 __buffer_size);
18192 std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
18193 __len22, __buffer, __buffer_size);
18194 std::__merge_adaptive(__new_middle, __second_cut, __last,
18195 __len1 - __len11,
18196 __len2 - __len22, __buffer, __buffer_size);
18197 }
18198 }
18199
18200
18201
18202
18203
18204
18205 template<typename _BidirectionalIterator, typename _Distance, typename _Pointer,
18206 typename _Compare>
18207 void
18208 __merge_adaptive(_BidirectionalIterator __first,
18209 _BidirectionalIterator __middle,
18210 _BidirectionalIterator __last,
18211 _Distance __len1, _Distance __len2,
18212 _Pointer __buffer, _Distance __buffer_size,
18213 _Compare __comp)
18214 {
18215 if (__len1 <= __len2 && __len1 <= __buffer_size)
18216 {
18217 _Pointer __buffer_end = std::copy(__first, __middle, __buffer);
18218 std::merge(__buffer, __buffer_end, __middle, __last, __first, __comp);
18219 }
18220 else if (__len2 <= __buffer_size)
18221 {
18222 _Pointer __buffer_end = std::copy(__middle, __last, __buffer);
18223 std::__merge_backward(__first, __middle, __buffer, __buffer_end,
18224 __last, __comp);
18225 }
18226 else
18227 {
18228 _BidirectionalIterator __first_cut = __first;
18229 _BidirectionalIterator __second_cut = __middle;
18230 _Distance __len11 = 0;
18231 _Distance __len22 = 0;
18232 if (__len1 > __len2)
18233 {
18234 __len11 = __len1 / 2;
18235 std::advance(__first_cut, __len11);
18236 __second_cut = std::lower_bound(__middle, __last, *__first_cut,
18237 __comp);
18238 __len22 = std::distance(__middle, __second_cut);
18239 }
18240 else
18241 {
18242 __len22 = __len2 / 2;
18243 std::advance(__second_cut, __len22);
18244 __first_cut = std::upper_bound(__first, __middle, *__second_cut,
18245 __comp);
18246 __len11 = std::distance(__first, __first_cut);
18247 }
18248 _BidirectionalIterator __new_middle =
18249 std::__rotate_adaptive(__first_cut, __middle, __second_cut,
18250 __len1 - __len11, __len22, __buffer,
18251 __buffer_size);
18252 std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
18253 __len22, __buffer, __buffer_size, __comp);
18254 std::__merge_adaptive(__new_middle, __second_cut, __last,
18255 __len1 - __len11,
18256 __len2 - __len22, __buffer,
18257 __buffer_size, __comp);
18258 }
18259 }
18260# 3711 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18261 template<typename _BidirectionalIterator>
18262 void
18263 inplace_merge(_BidirectionalIterator __first,
18264 _BidirectionalIterator __middle,
18265 _BidirectionalIterator __last)
18266 {
18267 typedef typename iterator_traits<_BidirectionalIterator>::value_type
18268 _ValueType;
18269 typedef typename iterator_traits<_BidirectionalIterator>::difference_type
18270 _DistanceType;
18271
18272
18273
18274
18275
18276 ;
18277 ;
18278
18279 if (__first == __middle || __middle == __last)
18280 return;
18281
18282 _DistanceType __len1 = std::distance(__first, __middle);
18283 _DistanceType __len2 = std::distance(__middle, __last);
18284
18285 _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first,
18286 __last);
18287 if (__buf.begin() == 0)
18288 std::__merge_without_buffer(__first, __middle, __last, __len1, __len2);
18289 else
18290 std::__merge_adaptive(__first, __middle, __last, __len1, __len2,
18291 __buf.begin(), _DistanceType(__buf.size()));
18292 }
18293# 3765 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18294 template<typename _BidirectionalIterator, typename _Compare>
18295 void
18296 inplace_merge(_BidirectionalIterator __first,
18297 _BidirectionalIterator __middle,
18298 _BidirectionalIterator __last,
18299 _Compare __comp)
18300 {
18301 typedef typename iterator_traits<_BidirectionalIterator>::value_type
18302 _ValueType;
18303 typedef typename iterator_traits<_BidirectionalIterator>::difference_type
18304 _DistanceType;
18305
18306
18307
18308
18309
18310
18311 ;
18312 ;
18313
18314 if (__first == __middle || __middle == __last)
18315 return;
18316
18317 const _DistanceType __len1 = std::distance(__first, __middle);
18318 const _DistanceType __len2 = std::distance(__middle, __last);
18319
18320 _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first,
18321 __last);
18322 if (__buf.begin() == 0)
18323 std::__merge_without_buffer(__first, __middle, __last, __len1,
18324 __len2, __comp);
18325 else
18326 std::__merge_adaptive(__first, __middle, __last, __len1, __len2,
18327 __buf.begin(), _DistanceType(__buf.size()),
18328 __comp);
18329 }
18330
18331 template<typename _RandomAccessIterator, typename _Pointer,
18332 typename _Distance>
18333 void
18334 __stable_sort_adaptive(_RandomAccessIterator __first,
18335 _RandomAccessIterator __last,
18336 _Pointer __buffer, _Distance __buffer_size)
18337 {
18338 const _Distance __len = (__last - __first + 1) / 2;
18339 const _RandomAccessIterator __middle = __first + __len;
18340 if (__len > __buffer_size)
18341 {
18342 std::__stable_sort_adaptive(__first, __middle,
18343 __buffer, __buffer_size);
18344 std::__stable_sort_adaptive(__middle, __last,
18345 __buffer, __buffer_size);
18346 }
18347 else
18348 {
18349 std::__merge_sort_with_buffer(__first, __middle, __buffer);
18350 std::__merge_sort_with_buffer(__middle, __last, __buffer);
18351 }
18352 std::__merge_adaptive(__first, __middle, __last,
18353 _Distance(__middle - __first),
18354 _Distance(__last - __middle),
18355 __buffer, __buffer_size);
18356 }
18357
18358 template<typename _RandomAccessIterator, typename _Pointer,
18359 typename _Distance, typename _Compare>
18360 void
18361 __stable_sort_adaptive(_RandomAccessIterator __first,
18362 _RandomAccessIterator __last,
18363 _Pointer __buffer, _Distance __buffer_size,
18364 _Compare __comp)
18365 {
18366 const _Distance __len = (__last - __first + 1) / 2;
18367 const _RandomAccessIterator __middle = __first + __len;
18368 if (__len > __buffer_size)
18369 {
18370 std::__stable_sort_adaptive(__first, __middle, __buffer,
18371 __buffer_size, __comp);
18372 std::__stable_sort_adaptive(__middle, __last, __buffer,
18373 __buffer_size, __comp);
18374 }
18375 else
18376 {
18377 std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp);
18378 std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp);
18379 }
18380 std::__merge_adaptive(__first, __middle, __last,
18381 _Distance(__middle - __first),
18382 _Distance(__last - __middle),
18383 __buffer, __buffer_size,
18384 __comp);
18385 }
18386# 3874 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18387 template<typename _RandomAccessIterator>
18388 inline void
18389 stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
18390 {
18391 typedef typename iterator_traits<_RandomAccessIterator>::value_type
18392 _ValueType;
18393 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
18394 _DistanceType;
18395
18396
18397
18398
18399
18400 ;
18401
18402 _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first,
18403 __last);
18404 if (__buf.begin() == 0)
18405 std::__inplace_stable_sort(__first, __last);
18406 else
18407 std::__stable_sort_adaptive(__first, __last, __buf.begin(),
18408 _DistanceType(__buf.size()));
18409 }
18410# 3915 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18411 template<typename _RandomAccessIterator, typename _Compare>
18412 inline void
18413 stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
18414 _Compare __comp)
18415 {
18416 typedef typename iterator_traits<_RandomAccessIterator>::value_type
18417 _ValueType;
18418 typedef typename iterator_traits<_RandomAccessIterator>::difference_type
18419 _DistanceType;
18420
18421
18422
18423
18424
18425
18426
18427 ;
18428
18429 _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first,
18430 __last);
18431 if (__buf.begin() == 0)
18432 std::__inplace_stable_sort(__first, __last, __comp);
18433 else
18434 std::__stable_sort_adaptive(__first, __last, __buf.begin(),
18435 _DistanceType(__buf.size()), __comp);
18436 }
18437
18438
18439 template<typename _RandomAccessIterator, typename _Size>
18440 void
18441 __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
18442 _RandomAccessIterator __last, _Size __depth_limit)
18443 {
18444 typedef typename iterator_traits<_RandomAccessIterator>::value_type
18445 _ValueType;
18446
18447 while (__last - __first > 3)
18448 {
18449 if (__depth_limit == 0)
18450 {
18451 std::__heap_select(__first, __nth + 1, __last);
18452
18453 std::iter_swap(__first, __nth);
18454 return;
18455 }
18456 --__depth_limit;
18457 _RandomAccessIterator __cut =
18458 std::__unguarded_partition(__first, __last,
18459 _ValueType(std::__median(*__first,
18460 *(__first
18461 + (__last
18462 - __first)
18463 / 2),
18464 *(__last
18465 - 1))));
18466 if (__cut <= __nth)
18467 __first = __cut;
18468 else
18469 __last = __cut;
18470 }
18471 std::__insertion_sort(__first, __last);
18472 }
18473
18474 template<typename _RandomAccessIterator, typename _Size, typename _Compare>
18475 void
18476 __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
18477 _RandomAccessIterator __last, _Size __depth_limit,
18478 _Compare __comp)
18479 {
18480 typedef typename iterator_traits<_RandomAccessIterator>::value_type
18481 _ValueType;
18482
18483 while (__last - __first > 3)
18484 {
18485 if (__depth_limit == 0)
18486 {
18487 std::__heap_select(__first, __nth + 1, __last, __comp);
18488
18489 std::iter_swap(__first, __nth);
18490 return;
18491 }
18492 --__depth_limit;
18493 _RandomAccessIterator __cut =
18494 std::__unguarded_partition(__first, __last,
18495 _ValueType(std::__median(*__first,
18496 *(__first
18497 + (__last
18498 - __first)
18499 / 2),
18500 *(__last - 1),
18501 __comp)),
18502 __comp);
18503 if (__cut <= __nth)
18504 __first = __cut;
18505 else
18506 __last = __cut;
18507 }
18508 std::__insertion_sort(__first, __last, __comp);
18509 }
18510# 4030 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18511 template<typename _RandomAccessIterator>
18512 inline void
18513 nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
18514 _RandomAccessIterator __last)
18515 {
18516 typedef typename iterator_traits<_RandomAccessIterator>::value_type
18517 _ValueType;
18518
18519
18520
18521
18522
18523 ;
18524 ;
18525
18526 if (__first == __last || __nth == __last)
18527 return;
18528
18529 std::__introselect(__first, __nth, __last,
18530 std::__lg(__last - __first) * 2);
18531 }
18532# 4068 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18533 template<typename _RandomAccessIterator, typename _Compare>
18534 inline void
18535 nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
18536 _RandomAccessIterator __last, _Compare __comp)
18537 {
18538 typedef typename iterator_traits<_RandomAccessIterator>::value_type
18539 _ValueType;
18540
18541
18542
18543
18544
18545
18546 ;
18547 ;
18548
18549 if (__first == __last || __nth == __last)
18550 return;
18551
18552 std::__introselect(__first, __nth, __last,
18553 std::__lg(__last - __first) * 2, __comp);
18554 }
18555# 4107 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18556 template<typename _ForwardIterator, typename _Tp>
18557 pair<_ForwardIterator, _ForwardIterator>
18558 equal_range(_ForwardIterator __first, _ForwardIterator __last,
18559 const _Tp& __val)
18560 {
18561 typedef typename iterator_traits<_ForwardIterator>::value_type
18562 _ValueType;
18563 typedef typename iterator_traits<_ForwardIterator>::difference_type
18564 _DistanceType;
18565
18566
18567
18568
18569
18570 ;
18571
18572 _DistanceType __len = std::distance(__first, __last);
18573 _DistanceType __half;
18574 _ForwardIterator __middle, __left, __right;
18575
18576 while (__len > 0)
18577 {
18578 __half = __len >> 1;
18579 __middle = __first;
18580 std::advance(__middle, __half);
18581 if (*__middle < __val)
18582 {
18583 __first = __middle;
18584 ++__first;
18585 __len = __len - __half - 1;
18586 }
18587 else if (__val < *__middle)
18588 __len = __half;
18589 else
18590 {
18591 __left = std::lower_bound(__first, __middle, __val);
18592 std::advance(__first, __len);
18593 __right = std::upper_bound(++__middle, __first, __val);
18594 return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
18595 }
18596 }
18597 return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
18598 }
18599# 4168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18600 template<typename _ForwardIterator, typename _Tp, typename _Compare>
18601 pair<_ForwardIterator, _ForwardIterator>
18602 equal_range(_ForwardIterator __first, _ForwardIterator __last,
18603 const _Tp& __val,
18604 _Compare __comp)
18605 {
18606 typedef typename iterator_traits<_ForwardIterator>::value_type
18607 _ValueType;
18608 typedef typename iterator_traits<_ForwardIterator>::difference_type
18609 _DistanceType;
18610
18611
18612
18613
18614
18615
18616
18617 ;
18618
18619 _DistanceType __len = std::distance(__first, __last);
18620 _DistanceType __half;
18621 _ForwardIterator __middle, __left, __right;
18622
18623 while (__len > 0)
18624 {
18625 __half = __len >> 1;
18626 __middle = __first;
18627 std::advance(__middle, __half);
18628 if (__comp(*__middle, __val))
18629 {
18630 __first = __middle;
18631 ++__first;
18632 __len = __len - __half - 1;
18633 }
18634 else if (__comp(__val, *__middle))
18635 __len = __half;
18636 else
18637 {
18638 __left = std::lower_bound(__first, __middle, __val, __comp);
18639 std::advance(__first, __len);
18640 __right = std::upper_bound(++__middle, __first, __val, __comp);
18641 return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
18642 }
18643 }
18644 return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
18645 }
18646# 4226 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18647 template<typename _ForwardIterator, typename _Tp>
18648 bool
18649 binary_search(_ForwardIterator __first, _ForwardIterator __last,
18650 const _Tp& __val)
18651 {
18652 typedef typename iterator_traits<_ForwardIterator>::value_type
18653 _ValueType;
18654
18655
18656
18657
18658 ;
18659
18660 _ForwardIterator __i = std::lower_bound(__first, __last, __val);
18661 return __i != __last && !(__val < *__i);
18662 }
18663# 4258 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18664 template<typename _ForwardIterator, typename _Tp, typename _Compare>
18665 bool
18666 binary_search(_ForwardIterator __first, _ForwardIterator __last,
18667 const _Tp& __val, _Compare __comp)
18668 {
18669 typedef typename iterator_traits<_ForwardIterator>::value_type
18670 _ValueType;
18671
18672
18673
18674
18675
18676 ;
18677
18678 _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp);
18679 return __i != __last && !__comp(__val, *__i);
18680 }
18681# 4297 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18682 template<typename _InputIterator1, typename _InputIterator2>
18683 bool
18684 includes(_InputIterator1 __first1, _InputIterator1 __last1,
18685 _InputIterator2 __first2, _InputIterator2 __last2)
18686 {
18687 typedef typename iterator_traits<_InputIterator1>::value_type
18688 _ValueType1;
18689 typedef typename iterator_traits<_InputIterator2>::value_type
18690 _ValueType2;
18691
18692
18693
18694
18695
18696
18697 ;
18698 ;
18699
18700 while (__first1 != __last1 && __first2 != __last2)
18701 if (*__first2 < *__first1)
18702 return false;
18703 else if(*__first1 < *__first2)
18704 ++__first1;
18705 else
18706 ++__first1, ++__first2;
18707
18708 return __first2 == __last2;
18709 }
18710# 4345 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18711 template<typename _InputIterator1, typename _InputIterator2,
18712 typename _Compare>
18713 bool
18714 includes(_InputIterator1 __first1, _InputIterator1 __last1,
18715 _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp)
18716 {
18717 typedef typename iterator_traits<_InputIterator1>::value_type
18718 _ValueType1;
18719 typedef typename iterator_traits<_InputIterator2>::value_type
18720 _ValueType2;
18721
18722
18723
18724
18725
18726
18727
18728
18729 ;
18730 ;
18731
18732 while (__first1 != __last1 && __first2 != __last2)
18733 if (__comp(*__first2, *__first1))
18734 return false;
18735 else if(__comp(*__first1, *__first2))
18736 ++__first1;
18737 else
18738 ++__first1, ++__first2;
18739
18740 return __first2 == __last2;
18741 }
18742# 4394 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18743 template<typename _InputIterator1, typename _InputIterator2,
18744 typename _OutputIterator>
18745 _OutputIterator
18746 set_union(_InputIterator1 __first1, _InputIterator1 __last1,
18747 _InputIterator2 __first2, _InputIterator2 __last2,
18748 _OutputIterator __result)
18749 {
18750 typedef typename iterator_traits<_InputIterator1>::value_type
18751 _ValueType1;
18752 typedef typename iterator_traits<_InputIterator2>::value_type
18753 _ValueType2;
18754
18755
18756
18757
18758
18759
18760
18761
18762
18763
18764 ;
18765 ;
18766
18767 while (__first1 != __last1 && __first2 != __last2)
18768 {
18769 if (*__first1 < *__first2)
18770 {
18771 *__result = *__first1;
18772 ++__first1;
18773 }
18774 else if (*__first2 < *__first1)
18775 {
18776 *__result = *__first2;
18777 ++__first2;
18778 }
18779 else
18780 {
18781 *__result = *__first1;
18782 ++__first1;
18783 ++__first2;
18784 }
18785 ++__result;
18786 }
18787 return std::copy(__first2, __last2, std::copy(__first1, __last1,
18788 __result));
18789 }
18790# 4460 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18791 template<typename _InputIterator1, typename _InputIterator2,
18792 typename _OutputIterator, typename _Compare>
18793 _OutputIterator
18794 set_union(_InputIterator1 __first1, _InputIterator1 __last1,
18795 _InputIterator2 __first2, _InputIterator2 __last2,
18796 _OutputIterator __result, _Compare __comp)
18797 {
18798 typedef typename iterator_traits<_InputIterator1>::value_type
18799 _ValueType1;
18800 typedef typename iterator_traits<_InputIterator2>::value_type
18801 _ValueType2;
18802
18803
18804
18805
18806
18807
18808
18809
18810
18811
18812
18813
18814 ;
18815 ;
18816
18817 while (__first1 != __last1 && __first2 != __last2)
18818 {
18819 if (__comp(*__first1, *__first2))
18820 {
18821 *__result = *__first1;
18822 ++__first1;
18823 }
18824 else if (__comp(*__first2, *__first1))
18825 {
18826 *__result = *__first2;
18827 ++__first2;
18828 }
18829 else
18830 {
18831 *__result = *__first1;
18832 ++__first1;
18833 ++__first2;
18834 }
18835 ++__result;
18836 }
18837 return std::copy(__first2, __last2, std::copy(__first1, __last1,
18838 __result));
18839 }
18840# 4526 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18841 template<typename _InputIterator1, typename _InputIterator2,
18842 typename _OutputIterator>
18843 _OutputIterator
18844 set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
18845 _InputIterator2 __first2, _InputIterator2 __last2,
18846 _OutputIterator __result)
18847 {
18848 typedef typename iterator_traits<_InputIterator1>::value_type
18849 _ValueType1;
18850 typedef typename iterator_traits<_InputIterator2>::value_type
18851 _ValueType2;
18852
18853
18854
18855
18856
18857
18858
18859
18860 ;
18861 ;
18862
18863 while (__first1 != __last1 && __first2 != __last2)
18864 if (*__first1 < *__first2)
18865 ++__first1;
18866 else if (*__first2 < *__first1)
18867 ++__first2;
18868 else
18869 {
18870 *__result = *__first1;
18871 ++__first1;
18872 ++__first2;
18873 ++__result;
18874 }
18875 return __result;
18876 }
18877# 4582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18878 template<typename _InputIterator1, typename _InputIterator2,
18879 typename _OutputIterator, typename _Compare>
18880 _OutputIterator
18881 set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
18882 _InputIterator2 __first2, _InputIterator2 __last2,
18883 _OutputIterator __result, _Compare __comp)
18884 {
18885 typedef typename iterator_traits<_InputIterator1>::value_type
18886 _ValueType1;
18887 typedef typename iterator_traits<_InputIterator2>::value_type
18888 _ValueType2;
18889
18890
18891
18892
18893
18894
18895
18896
18897
18898
18899 ;
18900 ;
18901
18902 while (__first1 != __last1 && __first2 != __last2)
18903 if (__comp(*__first1, *__first2))
18904 ++__first1;
18905 else if (__comp(*__first2, *__first1))
18906 ++__first2;
18907 else
18908 {
18909 *__result = *__first1;
18910 ++__first1;
18911 ++__first2;
18912 ++__result;
18913 }
18914 return __result;
18915 }
18916# 4639 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18917 template<typename _InputIterator1, typename _InputIterator2,
18918 typename _OutputIterator>
18919 _OutputIterator
18920 set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
18921 _InputIterator2 __first2, _InputIterator2 __last2,
18922 _OutputIterator __result)
18923 {
18924 typedef typename iterator_traits<_InputIterator1>::value_type
18925 _ValueType1;
18926 typedef typename iterator_traits<_InputIterator2>::value_type
18927 _ValueType2;
18928
18929
18930
18931
18932
18933
18934
18935
18936 ;
18937 ;
18938
18939 while (__first1 != __last1 && __first2 != __last2)
18940 if (*__first1 < *__first2)
18941 {
18942 *__result = *__first1;
18943 ++__first1;
18944 ++__result;
18945 }
18946 else if (*__first2 < *__first1)
18947 ++__first2;
18948 else
18949 {
18950 ++__first1;
18951 ++__first2;
18952 }
18953 return std::copy(__first1, __last1, __result);
18954 }
18955# 4699 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18956 template<typename _InputIterator1, typename _InputIterator2,
18957 typename _OutputIterator, typename _Compare>
18958 _OutputIterator
18959 set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
18960 _InputIterator2 __first2, _InputIterator2 __last2,
18961 _OutputIterator __result, _Compare __comp)
18962 {
18963 typedef typename iterator_traits<_InputIterator1>::value_type
18964 _ValueType1;
18965 typedef typename iterator_traits<_InputIterator2>::value_type
18966 _ValueType2;
18967
18968
18969
18970
18971
18972
18973
18974
18975
18976
18977 ;
18978 ;
18979
18980 while (__first1 != __last1 && __first2 != __last2)
18981 if (__comp(*__first1, *__first2))
18982 {
18983 *__result = *__first1;
18984 ++__first1;
18985 ++__result;
18986 }
18987 else if (__comp(*__first2, *__first1))
18988 ++__first2;
18989 else
18990 {
18991 ++__first1;
18992 ++__first2;
18993 }
18994 return std::copy(__first1, __last1, __result);
18995 }
18996# 4756 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
18997 template<typename _InputIterator1, typename _InputIterator2,
18998 typename _OutputIterator>
18999 _OutputIterator
19000 set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
19001 _InputIterator2 __first2, _InputIterator2 __last2,
19002 _OutputIterator __result)
19003 {
19004 typedef typename iterator_traits<_InputIterator1>::value_type
19005 _ValueType1;
19006 typedef typename iterator_traits<_InputIterator2>::value_type
19007 _ValueType2;
19008
19009
19010
19011
19012
19013
19014
19015
19016
19017
19018 ;
19019 ;
19020
19021 while (__first1 != __last1 && __first2 != __last2)
19022 if (*__first1 < *__first2)
19023 {
19024 *__result = *__first1;
19025 ++__first1;
19026 ++__result;
19027 }
19028 else if (*__first2 < *__first1)
19029 {
19030 *__result = *__first2;
19031 ++__first2;
19032 ++__result;
19033 }
19034 else
19035 {
19036 ++__first1;
19037 ++__first2;
19038 }
19039 return std::copy(__first2, __last2, std::copy(__first1,
19040 __last1, __result));
19041 }
19042# 4821 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19043 template<typename _InputIterator1, typename _InputIterator2,
19044 typename _OutputIterator, typename _Compare>
19045 _OutputIterator
19046 set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
19047 _InputIterator2 __first2, _InputIterator2 __last2,
19048 _OutputIterator __result,
19049 _Compare __comp)
19050 {
19051 typedef typename iterator_traits<_InputIterator1>::value_type
19052 _ValueType1;
19053 typedef typename iterator_traits<_InputIterator2>::value_type
19054 _ValueType2;
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
19067 ;
19068 ;
19069
19070 while (__first1 != __last1 && __first2 != __last2)
19071 if (__comp(*__first1, *__first2))
19072 {
19073 *__result = *__first1;
19074 ++__first1;
19075 ++__result;
19076 }
19077 else if (__comp(*__first2, *__first1))
19078 {
19079 *__result = *__first2;
19080 ++__first2;
19081 ++__result;
19082 }
19083 else
19084 {
19085 ++__first1;
19086 ++__first2;
19087 }
19088 return std::copy(__first2, __last2, std::copy(__first1,
19089 __last1, __result));
19090 }
19091# 4879 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19092 template<typename _ForwardIterator>
19093 _ForwardIterator
19094 max_element(_ForwardIterator __first, _ForwardIterator __last)
19095 {
19096
19097
19098
19099
19100 ;
19101
19102 if (__first == __last)
19103 return __first;
19104 _ForwardIterator __result = __first;
19105 while (++__first != __last)
19106 if (*__result < *__first)
19107 __result = __first;
19108 return __result;
19109 }
19110# 4906 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19111 template<typename _ForwardIterator, typename _Compare>
19112 _ForwardIterator
19113 max_element(_ForwardIterator __first, _ForwardIterator __last,
19114 _Compare __comp)
19115 {
19116
19117
19118
19119
19120
19121 ;
19122
19123 if (__first == __last) return __first;
19124 _ForwardIterator __result = __first;
19125 while (++__first != __last)
19126 if (__comp(*__result, *__first)) __result = __first;
19127 return __result;
19128 }
19129
19130
19131
19132
19133
19134
19135
19136 template<typename _ForwardIterator>
19137 _ForwardIterator
19138 min_element(_ForwardIterator __first, _ForwardIterator __last)
19139 {
19140
19141
19142
19143
19144 ;
19145
19146 if (__first == __last)
19147 return __first;
19148 _ForwardIterator __result = __first;
19149 while (++__first != __last)
19150 if (*__first < *__result)
19151 __result = __first;
19152 return __result;
19153 }
19154# 4958 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19155 template<typename _ForwardIterator, typename _Compare>
19156 _ForwardIterator
19157 min_element(_ForwardIterator __first, _ForwardIterator __last,
19158 _Compare __comp)
19159 {
19160
19161
19162
19163
19164
19165 ;
19166
19167 if (__first == __last)
19168 return __first;
19169 _ForwardIterator __result = __first;
19170 while (++__first != __last)
19171 if (__comp(*__first, *__result))
19172 __result = __first;
19173 return __result;
19174 }
19175# 4993 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19176 template<typename _BidirectionalIterator>
19177 bool
19178 next_permutation(_BidirectionalIterator __first,
19179 _BidirectionalIterator __last)
19180 {
19181
19182
19183
19184
19185
19186 ;
19187
19188 if (__first == __last)
19189 return false;
19190 _BidirectionalIterator __i = __first;
19191 ++__i;
19192 if (__i == __last)
19193 return false;
19194 __i = __last;
19195 --__i;
19196
19197 for(;;)
19198 {
19199 _BidirectionalIterator __ii = __i;
19200 --__i;
19201 if (*__i < *__ii)
19202 {
19203 _BidirectionalIterator __j = __last;
19204 while (!(*__i < *--__j))
19205 {}
19206 std::iter_swap(__i, __j);
19207 std::reverse(__ii, __last);
19208 return true;
19209 }
19210 if (__i == __first)
19211 {
19212 std::reverse(__first, __last);
19213 return false;
19214 }
19215 }
19216 }
19217# 5049 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19218 template<typename _BidirectionalIterator, typename _Compare>
19219 bool
19220 next_permutation(_BidirectionalIterator __first,
19221 _BidirectionalIterator __last, _Compare __comp)
19222 {
19223
19224
19225
19226
19227
19228
19229 ;
19230
19231 if (__first == __last)
19232 return false;
19233 _BidirectionalIterator __i = __first;
19234 ++__i;
19235 if (__i == __last)
19236 return false;
19237 __i = __last;
19238 --__i;
19239
19240 for(;;)
19241 {
19242 _BidirectionalIterator __ii = __i;
19243 --__i;
19244 if (__comp(*__i, *__ii))
19245 {
19246 _BidirectionalIterator __j = __last;
19247 while (!__comp(*__i, *--__j))
19248 {}
19249 std::iter_swap(__i, __j);
19250 std::reverse(__ii, __last);
19251 return true;
19252 }
19253 if (__i == __first)
19254 {
19255 std::reverse(__first, __last);
19256 return false;
19257 }
19258 }
19259 }
19260# 5104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19261 template<typename _BidirectionalIterator>
19262 bool
19263 prev_permutation(_BidirectionalIterator __first,
19264 _BidirectionalIterator __last)
19265 {
19266
19267
19268
19269
19270
19271 ;
19272
19273 if (__first == __last)
19274 return false;
19275 _BidirectionalIterator __i = __first;
19276 ++__i;
19277 if (__i == __last)
19278 return false;
19279 __i = __last;
19280 --__i;
19281
19282 for(;;)
19283 {
19284 _BidirectionalIterator __ii = __i;
19285 --__i;
19286 if (*__ii < *__i)
19287 {
19288 _BidirectionalIterator __j = __last;
19289 while (!(*--__j < *__i))
19290 {}
19291 std::iter_swap(__i, __j);
19292 std::reverse(__ii, __last);
19293 return true;
19294 }
19295 if (__i == __first)
19296 {
19297 std::reverse(__first, __last);
19298 return false;
19299 }
19300 }
19301 }
19302# 5160 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19303 template<typename _BidirectionalIterator, typename _Compare>
19304 bool
19305 prev_permutation(_BidirectionalIterator __first,
19306 _BidirectionalIterator __last, _Compare __comp)
19307 {
19308
19309
19310
19311
19312
19313
19314 ;
19315
19316 if (__first == __last)
19317 return false;
19318 _BidirectionalIterator __i = __first;
19319 ++__i;
19320 if (__i == __last)
19321 return false;
19322 __i = __last;
19323 --__i;
19324
19325 for(;;)
19326 {
19327 _BidirectionalIterator __ii = __i;
19328 --__i;
19329 if (__comp(*__ii, *__i))
19330 {
19331 _BidirectionalIterator __j = __last;
19332 while (!__comp(*--__j, *__i))
19333 {}
19334 std::iter_swap(__i, __j);
19335 std::reverse(__ii, __last);
19336 return true;
19337 }
19338 if (__i == __first)
19339 {
19340 std::reverse(__first, __last);
19341 return false;
19342 }
19343 }
19344 }
19345# 5219 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19346 template<typename _InputIterator, typename _ForwardIterator>
19347 _InputIterator
19348 find_first_of(_InputIterator __first1, _InputIterator __last1,
19349 _ForwardIterator __first2, _ForwardIterator __last2)
19350 {
19351
19352
19353
19354
19355
19356
19357 ;
19358 ;
19359
19360 for ( ; __first1 != __last1; ++__first1)
19361 for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
19362 if (*__first1 == *__iter)
19363 return __first1;
19364 return __last1;
19365 }
19366# 5255 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19367 template<typename _InputIterator, typename _ForwardIterator,
19368 typename _BinaryPredicate>
19369 _InputIterator
19370 find_first_of(_InputIterator __first1, _InputIterator __last1,
19371 _ForwardIterator __first2, _ForwardIterator __last2,
19372 _BinaryPredicate __comp)
19373 {
19374
19375
19376
19377
19378
19379
19380 ;
19381 ;
19382
19383 for ( ; __first1 != __last1; ++__first1)
19384 for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
19385 if (__comp(*__first1, *__iter))
19386 return __first1;
19387 return __last1;
19388 }
19389# 5285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19390 template<typename _ForwardIterator1, typename _ForwardIterator2>
19391 _ForwardIterator1
19392 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
19393 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
19394 forward_iterator_tag, forward_iterator_tag)
19395 {
19396 if (__first2 == __last2)
19397 return __last1;
19398 else
19399 {
19400 _ForwardIterator1 __result = __last1;
19401 while (1)
19402 {
19403 _ForwardIterator1 __new_result
19404 = std::search(__first1, __last1, __first2, __last2);
19405 if (__new_result == __last1)
19406 return __result;
19407 else
19408 {
19409 __result = __new_result;
19410 __first1 = __new_result;
19411 ++__first1;
19412 }
19413 }
19414 }
19415 }
19416
19417 template<typename _ForwardIterator1, typename _ForwardIterator2,
19418 typename _BinaryPredicate>
19419 _ForwardIterator1
19420 __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
19421 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
19422 forward_iterator_tag, forward_iterator_tag,
19423 _BinaryPredicate __comp)
19424 {
19425 if (__first2 == __last2)
19426 return __last1;
19427 else
19428 {
19429 _ForwardIterator1 __result = __last1;
19430 while (1)
19431 {
19432 _ForwardIterator1 __new_result
19433 = std::search(__first1, __last1, __first2, __last2, __comp);
19434 if (__new_result == __last1)
19435 return __result;
19436 else
19437 {
19438 __result = __new_result;
19439 __first1 = __new_result;
19440 ++__first1;
19441 }
19442 }
19443 }
19444 }
19445
19446
19447 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2>
19448 _BidirectionalIterator1
19449 __find_end(_BidirectionalIterator1 __first1,
19450 _BidirectionalIterator1 __last1,
19451 _BidirectionalIterator2 __first2,
19452 _BidirectionalIterator2 __last2,
19453 bidirectional_iterator_tag, bidirectional_iterator_tag)
19454 {
19455
19456
19457
19458
19459
19460
19461 typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
19462 typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
19463
19464 _RevIterator1 __rlast1(__first1);
19465 _RevIterator2 __rlast2(__first2);
19466 _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1,
19467 _RevIterator2(__last2), __rlast2);
19468
19469 if (__rresult == __rlast1)
19470 return __last1;
19471 else
19472 {
19473 _BidirectionalIterator1 __result = __rresult.base();
19474 std::advance(__result, -std::distance(__first2, __last2));
19475 return __result;
19476 }
19477 }
19478
19479 template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
19480 typename _BinaryPredicate>
19481 _BidirectionalIterator1
19482 __find_end(_BidirectionalIterator1 __first1,
19483 _BidirectionalIterator1 __last1,
19484 _BidirectionalIterator2 __first2,
19485 _BidirectionalIterator2 __last2,
19486 bidirectional_iterator_tag, bidirectional_iterator_tag,
19487 _BinaryPredicate __comp)
19488 {
19489
19490
19491
19492
19493
19494
19495 typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
19496 typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
19497
19498 _RevIterator1 __rlast1(__first1);
19499 _RevIterator2 __rlast2(__first2);
19500 _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1,
19501 _RevIterator2(__last2), __rlast2,
19502 __comp);
19503
19504 if (__rresult == __rlast1)
19505 return __last1;
19506 else
19507 {
19508 _BidirectionalIterator1 __result = __rresult.base();
19509 std::advance(__result, -std::distance(__first2, __last2));
19510 return __result;
19511 }
19512 }
19513# 5435 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19514 template<typename _ForwardIterator1, typename _ForwardIterator2>
19515 inline _ForwardIterator1
19516 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
19517 _ForwardIterator2 __first2, _ForwardIterator2 __last2)
19518 {
19519
19520
19521
19522
19523
19524
19525 ;
19526 ;
19527
19528 return std::__find_end(__first1, __last1, __first2, __last2,
19529 std::__iterator_category(__first1),
19530 std::__iterator_category(__first2));
19531 }
19532# 5480 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
19533 template<typename _ForwardIterator1, typename _ForwardIterator2,
19534 typename _BinaryPredicate>
19535 inline _ForwardIterator1
19536 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
19537 _ForwardIterator2 __first2, _ForwardIterator2 __last2,
19538 _BinaryPredicate __comp)
19539 {
19540
19541
19542
19543
19544
19545
19546 ;
19547 ;
19548
19549 return std::__find_end(__first1, __last1, __first2, __last2,
19550 std::__iterator_category(__first1),
19551 std::__iterator_category(__first2),
19552 __comp);
19553 }
19554
19555}
19556# 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/algorithm" 2 3
19557# 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
19558# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.tcc" 1 3
19559# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.tcc" 3
19560
19561# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.tcc" 3
19562
19563namespace std __attribute__ ((__visibility__ ("default"))) {
19564
19565 template<typename _Type>
19566 inline bool
19567 __is_null_pointer(_Type* __ptr)
19568 { return __ptr == 0; }
19569
19570 template<typename _Type>
19571 inline bool
19572 __is_null_pointer(_Type)
19573 { return false; }
19574
19575 template<typename _CharT, typename _Traits, typename _Alloc>
19576 const typename basic_string<_CharT, _Traits, _Alloc>::size_type
19577 basic_string<_CharT, _Traits, _Alloc>::
19578 _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
19579
19580 template<typename _CharT, typename _Traits, typename _Alloc>
19581 const _CharT
19582 basic_string<_CharT, _Traits, _Alloc>::
19583 _Rep::_S_terminal = _CharT();
19584
19585 template<typename _CharT, typename _Traits, typename _Alloc>
19586 const typename basic_string<_CharT, _Traits, _Alloc>::size_type
19587 basic_string<_CharT, _Traits, _Alloc>::npos;
19588
19589
19590
19591 template<typename _CharT, typename _Traits, typename _Alloc>
19592 typename basic_string<_CharT, _Traits, _Alloc>::size_type
19593 basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
19594 (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
19595 sizeof(size_type)];
19596
19597
19598
19599
19600
19601 template<typename _CharT, typename _Traits, typename _Alloc>
19602 template<typename _InIterator>
19603 _CharT*
19604 basic_string<_CharT, _Traits, _Alloc>::
19605 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
19606 input_iterator_tag)
19607 {
19608
19609 if (__beg == __end && __a == _Alloc())
19610 return _S_empty_rep()._M_refdata();
19611
19612
19613 _CharT __buf[128];
19614 size_type __len = 0;
19615 while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
19616 {
19617 __buf[__len++] = *__beg;
19618 ++__beg;
19619 }
19620 _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
19621 _M_copy(__r->_M_refdata(), __buf, __len);
19622 try
19623 {
19624 while (__beg != __end)
19625 {
19626 if (__len == __r->_M_capacity)
19627 {
19628
19629 _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
19630 _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
19631 __r->_M_destroy(__a);
19632 __r = __another;
19633 }
19634 __r->_M_refdata()[__len++] = *__beg;
19635 ++__beg;
19636 }
19637 }
19638 catch(...)
19639 {
19640 __r->_M_destroy(__a);
19641 throw;
19642 }
19643 __r->_M_set_length_and_sharable(__len);
19644 return __r->_M_refdata();
19645 }
19646
19647 template<typename _CharT, typename _Traits, typename _Alloc>
19648 template <typename _InIterator>
19649 _CharT*
19650 basic_string<_CharT, _Traits, _Alloc>::
19651 _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
19652 forward_iterator_tag)
19653 {
19654
19655 if (__beg == __end && __a == _Alloc())
19656 return _S_empty_rep()._M_refdata();
19657
19658
19659 if (__builtin_expect(__is_null_pointer(__beg) && __beg != __end, 0))
19660 __throw_logic_error(("basic_string::_S_construct NULL not valid"));
19661
19662 const size_type __dnew = static_cast<size_type>(std::distance(__beg,
19663 __end));
19664
19665 _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
19666 try
19667 { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
19668 catch(...)
19669 {
19670 __r->_M_destroy(__a);
19671 throw;
19672 }
19673 __r->_M_set_length_and_sharable(__dnew);
19674 return __r->_M_refdata();
19675 }
19676
19677 template<typename _CharT, typename _Traits, typename _Alloc>
19678 _CharT*
19679 basic_string<_CharT, _Traits, _Alloc>::
19680 _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
19681 {
19682
19683 if (__n == 0 && __a == _Alloc())
19684 return _S_empty_rep()._M_refdata();
19685
19686
19687 _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
19688 if (__n)
19689 _M_assign(__r->_M_refdata(), __n, __c);
19690
19691 __r->_M_set_length_and_sharable(__n);
19692 return __r->_M_refdata();
19693 }
19694
19695 template<typename _CharT, typename _Traits, typename _Alloc>
19696 basic_string<_CharT, _Traits, _Alloc>::
19697 basic_string(const basic_string& __str)
19698 : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
19699 __str.get_allocator()),
19700 __str.get_allocator())
19701 { }
19702
19703 template<typename _CharT, typename _Traits, typename _Alloc>
19704 basic_string<_CharT, _Traits, _Alloc>::
19705 basic_string(const _Alloc& __a)
19706 : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
19707 { }
19708
19709 template<typename _CharT, typename _Traits, typename _Alloc>
19710 basic_string<_CharT, _Traits, _Alloc>::
19711 basic_string(const basic_string& __str, size_type __pos, size_type __n)
19712 : _M_dataplus(_S_construct(__str._M_data()
19713 + __str._M_check(__pos,
19714 "basic_string::basic_string"),
19715 __str._M_data() + __str._M_limit(__pos, __n)
19716 + __pos, _Alloc()), _Alloc())
19717 { }
19718
19719 template<typename _CharT, typename _Traits, typename _Alloc>
19720 basic_string<_CharT, _Traits, _Alloc>::
19721 basic_string(const basic_string& __str, size_type __pos,
19722 size_type __n, const _Alloc& __a)
19723 : _M_dataplus(_S_construct(__str._M_data()
19724 + __str._M_check(__pos,
19725 "basic_string::basic_string"),
19726 __str._M_data() + __str._M_limit(__pos, __n)
19727 + __pos, __a), __a)
19728 { }
19729
19730
19731 template<typename _CharT, typename _Traits, typename _Alloc>
19732 basic_string<_CharT, _Traits, _Alloc>::
19733 basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
19734 : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
19735 { }
19736
19737
19738 template<typename _CharT, typename _Traits, typename _Alloc>
19739 basic_string<_CharT, _Traits, _Alloc>::
19740 basic_string(const _CharT* __s, const _Alloc& __a)
19741 : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
19742 __s + npos, __a), __a)
19743 { }
19744
19745 template<typename _CharT, typename _Traits, typename _Alloc>
19746 basic_string<_CharT, _Traits, _Alloc>::
19747 basic_string(size_type __n, _CharT __c, const _Alloc& __a)
19748 : _M_dataplus(_S_construct(__n, __c, __a), __a)
19749 { }
19750
19751
19752 template<typename _CharT, typename _Traits, typename _Alloc>
19753 template<typename _InputIterator>
19754 basic_string<_CharT, _Traits, _Alloc>::
19755 basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
19756 : _M_dataplus(_S_construct(__beg, __end, __a), __a)
19757 { }
19758
19759 template<typename _CharT, typename _Traits, typename _Alloc>
19760 basic_string<_CharT, _Traits, _Alloc>&
19761 basic_string<_CharT, _Traits, _Alloc>::
19762 assign(const basic_string& __str)
19763 {
19764 if (_M_rep() != __str._M_rep())
19765 {
19766
19767 const allocator_type __a = this->get_allocator();
19768 _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
19769 _M_rep()->_M_dispose(__a);
19770 _M_data(__tmp);
19771 }
19772 return *this;
19773 }
19774
19775 template<typename _CharT, typename _Traits, typename _Alloc>
19776 basic_string<_CharT, _Traits, _Alloc>&
19777 basic_string<_CharT, _Traits, _Alloc>::
19778 assign(const _CharT* __s, size_type __n)
19779 {
19780 ;
19781 _M_check_length(this->size(), __n, "basic_string::assign");
19782 if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
19783 return _M_replace_safe(size_type(0), this->size(), __s, __n);
19784 else
19785 {
19786
19787 const size_type __pos = __s - _M_data();
19788 if (__pos >= __n)
19789 _M_copy(_M_data(), __s, __n);
19790 else if (__pos)
19791 _M_move(_M_data(), __s, __n);
19792 _M_rep()->_M_set_length_and_sharable(__n);
19793 return *this;
19794 }
19795 }
19796
19797 template<typename _CharT, typename _Traits, typename _Alloc>
19798 basic_string<_CharT, _Traits, _Alloc>&
19799 basic_string<_CharT, _Traits, _Alloc>::
19800 append(size_type __n, _CharT __c)
19801 {
19802 if (__n)
19803 {
19804 _M_check_length(size_type(0), __n, "basic_string::append");
19805 const size_type __len = __n + this->size();
19806 if (__len > this->capacity() || _M_rep()->_M_is_shared())
19807 this->reserve(__len);
19808 _M_assign(_M_data() + this->size(), __n, __c);
19809 _M_rep()->_M_set_length_and_sharable(__len);
19810 }
19811 return *this;
19812 }
19813
19814 template<typename _CharT, typename _Traits, typename _Alloc>
19815 basic_string<_CharT, _Traits, _Alloc>&
19816 basic_string<_CharT, _Traits, _Alloc>::
19817 append(const _CharT* __s, size_type __n)
19818 {
19819 ;
19820 if (__n)
19821 {
19822 _M_check_length(size_type(0), __n, "basic_string::append");
19823 const size_type __len = __n + this->size();
19824 if (__len > this->capacity() || _M_rep()->_M_is_shared())
19825 {
19826 if (_M_disjunct(__s))
19827 this->reserve(__len);
19828 else
19829 {
19830 const size_type __off = __s - _M_data();
19831 this->reserve(__len);
19832 __s = _M_data() + __off;
19833 }
19834 }
19835 _M_copy(_M_data() + this->size(), __s, __n);
19836 _M_rep()->_M_set_length_and_sharable(__len);
19837 }
19838 return *this;
19839 }
19840
19841 template<typename _CharT, typename _Traits, typename _Alloc>
19842 basic_string<_CharT, _Traits, _Alloc>&
19843 basic_string<_CharT, _Traits, _Alloc>::
19844 append(const basic_string& __str)
19845 {
19846 const size_type __size = __str.size();
19847 if (__size)
19848 {
19849 const size_type __len = __size + this->size();
19850 if (__len > this->capacity() || _M_rep()->_M_is_shared())
19851 this->reserve(__len);
19852 _M_copy(_M_data() + this->size(), __str._M_data(), __size);
19853 _M_rep()->_M_set_length_and_sharable(__len);
19854 }
19855 return *this;
19856 }
19857
19858 template<typename _CharT, typename _Traits, typename _Alloc>
19859 basic_string<_CharT, _Traits, _Alloc>&
19860 basic_string<_CharT, _Traits, _Alloc>::
19861 append(const basic_string& __str, size_type __pos, size_type __n)
19862 {
19863 __str._M_check(__pos, "basic_string::append");
19864 __n = __str._M_limit(__pos, __n);
19865 if (__n)
19866 {
19867 const size_type __len = __n + this->size();
19868 if (__len > this->capacity() || _M_rep()->_M_is_shared())
19869 this->reserve(__len);
19870 _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
19871 _M_rep()->_M_set_length_and_sharable(__len);
19872 }
19873 return *this;
19874 }
19875
19876 template<typename _CharT, typename _Traits, typename _Alloc>
19877 basic_string<_CharT, _Traits, _Alloc>&
19878 basic_string<_CharT, _Traits, _Alloc>::
19879 insert(size_type __pos, const _CharT* __s, size_type __n)
19880 {
19881 ;
19882 _M_check(__pos, "basic_string::insert");
19883 _M_check_length(size_type(0), __n, "basic_string::insert");
19884 if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
19885 return _M_replace_safe(__pos, size_type(0), __s, __n);
19886 else
19887 {
19888
19889 const size_type __off = __s - _M_data();
19890 _M_mutate(__pos, 0, __n);
19891 __s = _M_data() + __off;
19892 _CharT* __p = _M_data() + __pos;
19893 if (__s + __n <= __p)
19894 _M_copy(__p, __s, __n);
19895 else if (__s >= __p)
19896 _M_copy(__p, __s + __n, __n);
19897 else
19898 {
19899 const size_type __nleft = __p - __s;
19900 _M_copy(__p, __s, __nleft);
19901 _M_copy(__p + __nleft, __p + __n, __n - __nleft);
19902 }
19903 return *this;
19904 }
19905 }
19906
19907 template<typename _CharT, typename _Traits, typename _Alloc>
19908 basic_string<_CharT, _Traits, _Alloc>&
19909 basic_string<_CharT, _Traits, _Alloc>::
19910 replace(size_type __pos, size_type __n1, const _CharT* __s,
19911 size_type __n2)
19912 {
19913 ;
19914 _M_check(__pos, "basic_string::replace");
19915 __n1 = _M_limit(__pos, __n1);
19916 _M_check_length(__n1, __n2, "basic_string::replace");
19917 bool __left;
19918 if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
19919 return _M_replace_safe(__pos, __n1, __s, __n2);
19920 else if ((__left = __s + __n2 <= _M_data() + __pos)
19921 || _M_data() + __pos + __n1 <= __s)
19922 {
19923
19924 size_type __off = __s - _M_data();
19925 __left ? __off : (__off += __n2 - __n1);
19926 _M_mutate(__pos, __n1, __n2);
19927 _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
19928 return *this;
19929 }
19930 else
19931 {
19932
19933 const basic_string __tmp(__s, __n2);
19934 return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
19935 }
19936 }
19937
19938 template<typename _CharT, typename _Traits, typename _Alloc>
19939 void
19940 basic_string<_CharT, _Traits, _Alloc>::_Rep::
19941 _M_destroy(const _Alloc& __a) throw ()
19942 {
19943 const size_type __size = sizeof(_Rep_base) +
19944 (this->_M_capacity + 1) * sizeof(_CharT);
19945 _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
19946 }
19947
19948 template<typename _CharT, typename _Traits, typename _Alloc>
19949 void
19950 basic_string<_CharT, _Traits, _Alloc>::
19951 _M_leak_hard()
19952 {
19953
19954 if (_M_rep() == &_S_empty_rep())
19955 return;
19956
19957 if (_M_rep()->_M_is_shared())
19958 _M_mutate(0, 0, 0);
19959 _M_rep()->_M_set_leaked();
19960 }
19961
19962 template<typename _CharT, typename _Traits, typename _Alloc>
19963 void
19964 basic_string<_CharT, _Traits, _Alloc>::
19965 _M_mutate(size_type __pos, size_type __len1, size_type __len2)
19966 {
19967 const size_type __old_size = this->size();
19968 const size_type __new_size = __old_size + __len2 - __len1;
19969 const size_type __how_much = __old_size - __pos - __len1;
19970
19971 if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
19972 {
19973
19974 const allocator_type __a = get_allocator();
19975 _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
19976
19977 if (__pos)
19978 _M_copy(__r->_M_refdata(), _M_data(), __pos);
19979 if (__how_much)
19980 _M_copy(__r->_M_refdata() + __pos + __len2,
19981 _M_data() + __pos + __len1, __how_much);
19982
19983 _M_rep()->_M_dispose(__a);
19984 _M_data(__r->_M_refdata());
19985 }
19986 else if (__how_much && __len1 != __len2)
19987 {
19988
19989 _M_move(_M_data() + __pos + __len2,
19990 _M_data() + __pos + __len1, __how_much);
19991 }
19992 _M_rep()->_M_set_length_and_sharable(__new_size);
19993 }
19994
19995 template<typename _CharT, typename _Traits, typename _Alloc>
19996 void
19997 basic_string<_CharT, _Traits, _Alloc>::
19998 reserve(size_type __res)
19999 {
20000 if (__res != this->capacity() || _M_rep()->_M_is_shared())
20001 {
20002
20003 if (__res < this->size())
20004 __res = this->size();
20005 const allocator_type __a = get_allocator();
20006 _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
20007 _M_rep()->_M_dispose(__a);
20008 _M_data(__tmp);
20009 }
20010 }
20011
20012 template<typename _CharT, typename _Traits, typename _Alloc>
20013 void
20014 basic_string<_CharT, _Traits, _Alloc>::
20015 swap(basic_string& __s)
20016 {
20017 if (_M_rep()->_M_is_leaked())
20018 _M_rep()->_M_set_sharable();
20019 if (__s._M_rep()->_M_is_leaked())
20020 __s._M_rep()->_M_set_sharable();
20021 if (this->get_allocator() == __s.get_allocator())
20022 {
20023 _CharT* __tmp = _M_data();
20024 _M_data(__s._M_data());
20025 __s._M_data(__tmp);
20026 }
20027
20028 else
20029 {
20030 const basic_string __tmp1(_M_ibegin(), _M_iend(),
20031 __s.get_allocator());
20032 const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
20033 this->get_allocator());
20034 *this = __tmp2;
20035 __s = __tmp1;
20036 }
20037 }
20038
20039 template<typename _CharT, typename _Traits, typename _Alloc>
20040 typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
20041 basic_string<_CharT, _Traits, _Alloc>::_Rep::
20042 _S_create(size_type __capacity, size_type __old_capacity,
20043 const _Alloc& __alloc)
20044 {
20045
20046
20047 if (__capacity > _S_max_size)
20048 __throw_length_error(("basic_string::_S_create"));
20049# 559 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.tcc" 3
20050 const size_type __pagesize = 4096;
20051 const size_type __malloc_header_size = 4 * sizeof(void*);
20052
20053
20054
20055
20056
20057
20058
20059 if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
20060 __capacity = 2 * __old_capacity;
20061
20062
20063
20064
20065 size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
20066
20067 const size_type __adj_size = __size + __malloc_header_size;
20068 if (__adj_size > __pagesize && __capacity > __old_capacity)
20069 {
20070 const size_type __extra = __pagesize - __adj_size % __pagesize;
20071 __capacity += __extra / sizeof(_CharT);
20072
20073 if (__capacity > _S_max_size)
20074 __capacity = _S_max_size;
20075 __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
20076 }
20077
20078
20079
20080 void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
20081 _Rep *__p = new (__place) _Rep;
20082 __p->_M_capacity = __capacity;
20083
20084
20085
20086
20087
20088
20089
20090 __p->_M_set_sharable();
20091 return __p;
20092 }
20093
20094 template<typename _CharT, typename _Traits, typename _Alloc>
20095 _CharT*
20096 basic_string<_CharT, _Traits, _Alloc>::_Rep::
20097 _M_clone(const _Alloc& __alloc, size_type __res)
20098 {
20099
20100 const size_type __requested_cap = this->_M_length + __res;
20101 _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
20102 __alloc);
20103 if (this->_M_length)
20104 _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
20105
20106 __r->_M_set_length_and_sharable(this->_M_length);
20107 return __r->_M_refdata();
20108 }
20109
20110 template<typename _CharT, typename _Traits, typename _Alloc>
20111 void
20112 basic_string<_CharT, _Traits, _Alloc>::
20113 resize(size_type __n, _CharT __c)
20114 {
20115 const size_type __size = this->size();
20116 _M_check_length(__size, __n, "basic_string::resize");
20117 if (__size < __n)
20118 this->append(__n - __size, __c);
20119 else if (__n < __size)
20120 this->erase(__n);
20121
20122 }
20123
20124 template<typename _CharT, typename _Traits, typename _Alloc>
20125 template<typename _InputIterator>
20126 basic_string<_CharT, _Traits, _Alloc>&
20127 basic_string<_CharT, _Traits, _Alloc>::
20128 _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
20129 _InputIterator __k2, __false_type)
20130 {
20131 const basic_string __s(__k1, __k2);
20132 const size_type __n1 = __i2 - __i1;
20133 _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
20134 return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
20135 __s.size());
20136 }
20137
20138 template<typename _CharT, typename _Traits, typename _Alloc>
20139 basic_string<_CharT, _Traits, _Alloc>&
20140 basic_string<_CharT, _Traits, _Alloc>::
20141 _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
20142 _CharT __c)
20143 {
20144 _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
20145 _M_mutate(__pos1, __n1, __n2);
20146 if (__n2)
20147 _M_assign(_M_data() + __pos1, __n2, __c);
20148 return *this;
20149 }
20150
20151 template<typename _CharT, typename _Traits, typename _Alloc>
20152 basic_string<_CharT, _Traits, _Alloc>&
20153 basic_string<_CharT, _Traits, _Alloc>::
20154 _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
20155 size_type __n2)
20156 {
20157 _M_mutate(__pos1, __n1, __n2);
20158 if (__n2)
20159 _M_copy(_M_data() + __pos1, __s, __n2);
20160 return *this;
20161 }
20162
20163 template<typename _CharT, typename _Traits, typename _Alloc>
20164 basic_string<_CharT, _Traits, _Alloc>
20165 operator+(const _CharT* __lhs,
20166 const basic_string<_CharT, _Traits, _Alloc>& __rhs)
20167 {
20168 ;
20169 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
20170 typedef typename __string_type::size_type __size_type;
20171 const __size_type __len = _Traits::length(__lhs);
20172 __string_type __str;
20173 __str.reserve(__len + __rhs.size());
20174 __str.append(__lhs, __len);
20175 __str.append(__rhs);
20176 return __str;
20177 }
20178
20179 template<typename _CharT, typename _Traits, typename _Alloc>
20180 basic_string<_CharT, _Traits, _Alloc>
20181 operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
20182 {
20183 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
20184 typedef typename __string_type::size_type __size_type;
20185 __string_type __str;
20186 const __size_type __len = __rhs.size();
20187 __str.reserve(__len + 1);
20188 __str.append(__size_type(1), __lhs);
20189 __str.append(__rhs);
20190 return __str;
20191 }
20192
20193 template<typename _CharT, typename _Traits, typename _Alloc>
20194 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20195 basic_string<_CharT, _Traits, _Alloc>::
20196 copy(_CharT* __s, size_type __n, size_type __pos) const
20197 {
20198 _M_check(__pos, "basic_string::copy");
20199 __n = _M_limit(__pos, __n);
20200 ;
20201 if (__n)
20202 _M_copy(__s, _M_data() + __pos, __n);
20203
20204 return __n;
20205 }
20206
20207 template<typename _CharT, typename _Traits, typename _Alloc>
20208 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20209 basic_string<_CharT, _Traits, _Alloc>::
20210 find(const _CharT* __s, size_type __pos, size_type __n) const
20211 {
20212 ;
20213 const size_type __size = this->size();
20214 const _CharT* __data = _M_data();
20215
20216 if (__n == 0)
20217 return __pos <= __size ? __pos : npos;
20218
20219 if (__n <= __size)
20220 {
20221 for (; __pos <= __size - __n; ++__pos)
20222 if (traits_type::eq(__data[__pos], __s[0])
20223 && traits_type::compare(__data + __pos + 1,
20224 __s + 1, __n - 1) == 0)
20225 return __pos;
20226 }
20227 return npos;
20228 }
20229
20230 template<typename _CharT, typename _Traits, typename _Alloc>
20231 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20232 basic_string<_CharT, _Traits, _Alloc>::
20233 find(_CharT __c, size_type __pos) const
20234 {
20235 size_type __ret = npos;
20236 const size_type __size = this->size();
20237 if (__pos < __size)
20238 {
20239 const _CharT* __data = _M_data();
20240 const size_type __n = __size - __pos;
20241 const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
20242 if (__p)
20243 __ret = __p - __data;
20244 }
20245 return __ret;
20246 }
20247
20248 template<typename _CharT, typename _Traits, typename _Alloc>
20249 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20250 basic_string<_CharT, _Traits, _Alloc>::
20251 rfind(const _CharT* __s, size_type __pos, size_type __n) const
20252 {
20253 ;
20254 const size_type __size = this->size();
20255 if (__n <= __size)
20256 {
20257 __pos = std::min(size_type(__size - __n), __pos);
20258 const _CharT* __data = _M_data();
20259 do
20260 {
20261 if (traits_type::compare(__data + __pos, __s, __n) == 0)
20262 return __pos;
20263 }
20264 while (__pos-- > 0);
20265 }
20266 return npos;
20267 }
20268
20269 template<typename _CharT, typename _Traits, typename _Alloc>
20270 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20271 basic_string<_CharT, _Traits, _Alloc>::
20272 rfind(_CharT __c, size_type __pos) const
20273 {
20274 size_type __size = this->size();
20275 if (__size)
20276 {
20277 if (--__size > __pos)
20278 __size = __pos;
20279 for (++__size; __size-- > 0; )
20280 if (traits_type::eq(_M_data()[__size], __c))
20281 return __size;
20282 }
20283 return npos;
20284 }
20285
20286 template<typename _CharT, typename _Traits, typename _Alloc>
20287 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20288 basic_string<_CharT, _Traits, _Alloc>::
20289 find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
20290 {
20291 ;
20292 for (; __n && __pos < this->size(); ++__pos)
20293 {
20294 const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
20295 if (__p)
20296 return __pos;
20297 }
20298 return npos;
20299 }
20300
20301 template<typename _CharT, typename _Traits, typename _Alloc>
20302 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20303 basic_string<_CharT, _Traits, _Alloc>::
20304 find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
20305 {
20306 ;
20307 size_type __size = this->size();
20308 if (__size && __n)
20309 {
20310 if (--__size > __pos)
20311 __size = __pos;
20312 do
20313 {
20314 if (traits_type::find(__s, __n, _M_data()[__size]))
20315 return __size;
20316 }
20317 while (__size-- != 0);
20318 }
20319 return npos;
20320 }
20321
20322 template<typename _CharT, typename _Traits, typename _Alloc>
20323 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20324 basic_string<_CharT, _Traits, _Alloc>::
20325 find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
20326 {
20327 ;
20328 for (; __pos < this->size(); ++__pos)
20329 if (!traits_type::find(__s, __n, _M_data()[__pos]))
20330 return __pos;
20331 return npos;
20332 }
20333
20334 template<typename _CharT, typename _Traits, typename _Alloc>
20335 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20336 basic_string<_CharT, _Traits, _Alloc>::
20337 find_first_not_of(_CharT __c, size_type __pos) const
20338 {
20339 for (; __pos < this->size(); ++__pos)
20340 if (!traits_type::eq(_M_data()[__pos], __c))
20341 return __pos;
20342 return npos;
20343 }
20344
20345 template<typename _CharT, typename _Traits, typename _Alloc>
20346 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20347 basic_string<_CharT, _Traits, _Alloc>::
20348 find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
20349 {
20350 ;
20351 size_type __size = this->size();
20352 if (__size)
20353 {
20354 if (--__size > __pos)
20355 __size = __pos;
20356 do
20357 {
20358 if (!traits_type::find(__s, __n, _M_data()[__size]))
20359 return __size;
20360 }
20361 while (__size--);
20362 }
20363 return npos;
20364 }
20365
20366 template<typename _CharT, typename _Traits, typename _Alloc>
20367 typename basic_string<_CharT, _Traits, _Alloc>::size_type
20368 basic_string<_CharT, _Traits, _Alloc>::
20369 find_last_not_of(_CharT __c, size_type __pos) const
20370 {
20371 size_type __size = this->size();
20372 if (__size)
20373 {
20374 if (--__size > __pos)
20375 __size = __pos;
20376 do
20377 {
20378 if (!traits_type::eq(_M_data()[__size], __c))
20379 return __size;
20380 }
20381 while (__size--);
20382 }
20383 return npos;
20384 }
20385
20386 template<typename _CharT, typename _Traits, typename _Alloc>
20387 int
20388 basic_string<_CharT, _Traits, _Alloc>::
20389 compare(size_type __pos, size_type __n, const basic_string& __str) const
20390 {
20391 _M_check(__pos, "basic_string::compare");
20392 __n = _M_limit(__pos, __n);
20393 const size_type __osize = __str.size();
20394 const size_type __len = std::min(__n, __osize);
20395 int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
20396 if (!__r)
20397 __r = __n - __osize;
20398 return __r;
20399 }
20400
20401 template<typename _CharT, typename _Traits, typename _Alloc>
20402 int
20403 basic_string<_CharT, _Traits, _Alloc>::
20404 compare(size_type __pos1, size_type __n1, const basic_string& __str,
20405 size_type __pos2, size_type __n2) const
20406 {
20407 _M_check(__pos1, "basic_string::compare");
20408 __str._M_check(__pos2, "basic_string::compare");
20409 __n1 = _M_limit(__pos1, __n1);
20410 __n2 = __str._M_limit(__pos2, __n2);
20411 const size_type __len = std::min(__n1, __n2);
20412 int __r = traits_type::compare(_M_data() + __pos1,
20413 __str.data() + __pos2, __len);
20414 if (!__r)
20415 __r = __n1 - __n2;
20416 return __r;
20417 }
20418
20419 template<typename _CharT, typename _Traits, typename _Alloc>
20420 int
20421 basic_string<_CharT, _Traits, _Alloc>::
20422 compare(const _CharT* __s) const
20423 {
20424 ;
20425 const size_type __size = this->size();
20426 const size_type __osize = traits_type::length(__s);
20427 const size_type __len = std::min(__size, __osize);
20428 int __r = traits_type::compare(_M_data(), __s, __len);
20429 if (!__r)
20430 __r = __size - __osize;
20431 return __r;
20432 }
20433
20434 template<typename _CharT, typename _Traits, typename _Alloc>
20435 int
20436 basic_string <_CharT, _Traits, _Alloc>::
20437 compare(size_type __pos, size_type __n1, const _CharT* __s) const
20438 {
20439 ;
20440 _M_check(__pos, "basic_string::compare");
20441 __n1 = _M_limit(__pos, __n1);
20442 const size_type __osize = traits_type::length(__s);
20443 const size_type __len = std::min(__n1, __osize);
20444 int __r = traits_type::compare(_M_data() + __pos, __s, __len);
20445 if (!__r)
20446 __r = __n1 - __osize;
20447 return __r;
20448 }
20449
20450 template<typename _CharT, typename _Traits, typename _Alloc>
20451 int
20452 basic_string <_CharT, _Traits, _Alloc>::
20453 compare(size_type __pos, size_type __n1, const _CharT* __s,
20454 size_type __n2) const
20455 {
20456 ;
20457 _M_check(__pos, "basic_string::compare");
20458 __n1 = _M_limit(__pos, __n1);
20459 const size_type __len = std::min(__n1, __n2);
20460 int __r = traits_type::compare(_M_data() + __pos, __s, __len);
20461 if (!__r)
20462 __r = __n1 - __n2;
20463 return __r;
20464 }
20465
20466
20467
20468
20469
20470 extern template class basic_string<char>;
20471 extern template
20472 basic_istream<char>&
20473 operator>>(basic_istream<char>&, string&);
20474 extern template
20475 basic_ostream<char>&
20476 operator<<(basic_ostream<char>&, const string&);
20477 extern template
20478 basic_istream<char>&
20479 getline(basic_istream<char>&, string&, char);
20480 extern template
20481 basic_istream<char>&
20482 getline(basic_istream<char>&, string&);
20483
20484
20485 extern template class basic_string<wchar_t>;
20486 extern template
20487 basic_istream<wchar_t>&
20488 operator>>(basic_istream<wchar_t>&, wstring&);
20489 extern template
20490 basic_ostream<wchar_t>&
20491 operator<<(basic_ostream<wchar_t>&, const wstring&);
20492 extern template
20493 basic_istream<wchar_t>&
20494 getline(basic_istream<wchar_t>&, wstring&, wchar_t);
20495 extern template
20496 basic_istream<wchar_t>&
20497 getline(basic_istream<wchar_t>&, wstring&);
20498
20499
20500
20501}
20502# 59 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
20503# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/stdexcept" 2 3
20504
20505namespace std __attribute__ ((__visibility__ ("default"))) {
20506
20507
20508
20509
20510
20511
20512 class logic_error : public exception
20513 {
20514 string _M_msg;
20515
20516 public:
20517
20518 explicit
20519 logic_error(const string& __arg);
20520
20521 virtual
20522 ~logic_error() throw();
20523
20524
20525
20526 virtual const char*
20527 what() const throw();
20528 };
20529
20530
20531
20532 class domain_error : public logic_error
20533 {
20534 public:
20535 explicit domain_error(const string& __arg);
20536 };
20537
20538
20539 class invalid_argument : public logic_error
20540 {
20541 public:
20542 explicit invalid_argument(const string& __arg);
20543 };
20544
20545
20546
20547 class length_error : public logic_error
20548 {
20549 public:
20550 explicit length_error(const string& __arg);
20551 };
20552
20553
20554
20555 class out_of_range : public logic_error
20556 {
20557 public:
20558 explicit out_of_range(const string& __arg);
20559 };
20560
20561
20562
20563
20564
20565
20566 class runtime_error : public exception
20567 {
20568 string _M_msg;
20569
20570 public:
20571
20572 explicit
20573 runtime_error(const string& __arg);
20574
20575 virtual
20576 ~runtime_error() throw();
20577
20578
20579
20580 virtual const char*
20581 what() const throw();
20582 };
20583
20584
20585 class range_error : public runtime_error
20586 {
20587 public:
20588 explicit range_error(const string& __arg);
20589 };
20590
20591
20592 class overflow_error : public runtime_error
20593 {
20594 public:
20595 explicit overflow_error(const string& __arg);
20596 };
20597
20598
20599 class underflow_error : public runtime_error
20600 {
20601 public:
20602 explicit underflow_error(const string& __arg);
20603 };
20604
20605}
20606# 29 "/usr/include/boost/array.hpp" 2 3 4
20607# 1 "/usr/include/boost/assert.hpp" 1 3 4
20608# 35 "/usr/include/boost/assert.hpp" 3 4
20609# 1 "/usr/include/assert.h" 1 3 4
20610
20611
20612
20613
20614
20615
20616
20617# 1 "/usr/include/gentoo-multilib/amd64/assert.h" 1 3 4
20618# 37 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
20619# 1 "/usr/include/features.h" 1 3 4
20620# 38 "/usr/include/gentoo-multilib/amd64/assert.h" 2 3 4
20621# 66 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
20622extern "C" {
20623
20624
20625extern void __assert_fail (__const char *__assertion, __const char *__file,
20626 unsigned int __line, __const char *__function)
20627 throw () __attribute__ ((__noreturn__));
20628
20629
20630extern void __assert_perror_fail (int __errnum, __const char *__file,
20631 unsigned int __line,
20632 __const char *__function)
20633 throw () __attribute__ ((__noreturn__));
20634
20635
20636
20637
20638extern void __assert (const char *__assertion, const char *__file, int __line)
20639 throw () __attribute__ ((__noreturn__));
20640
20641
20642}
20643# 9 "/usr/include/assert.h" 2 3 4
20644# 36 "/usr/include/boost/assert.hpp" 2 3 4
20645# 30 "/usr/include/boost/array.hpp" 2 3 4
20646
20647
20648# 1 "/usr/include/boost/detail/iterator.hpp" 1 3 4
20649# 53 "/usr/include/boost/detail/iterator.hpp" 3 4
20650# 1 "/usr/include/boost/config.hpp" 1 3 4
20651# 26 "/usr/include/boost/config.hpp" 3 4
20652# 1 "/usr/include/boost/config/user.hpp" 1 3 4
20653# 27 "/usr/include/boost/config.hpp" 2 3 4
20654
20655
20656
20657
20658# 1 "/usr/include/boost/config/select_compiler_config.hpp" 1 3 4
20659# 32 "/usr/include/boost/config.hpp" 2 3 4
20660
20661
20662
20663# 1 "/usr/include/boost/config/compiler/gcc.hpp" 1 3 4
20664# 36 "/usr/include/boost/config.hpp" 2 3 4
20665
20666
20667
20668
20669# 1 "/usr/include/boost/config/select_stdlib_config.hpp" 1 3 4
20670# 20 "/usr/include/boost/config/select_stdlib_config.hpp" 3 4
20671# 1 "/usr/include/boost/config/no_tr1/utility.hpp" 1 3 4
20672# 21 "/usr/include/boost/config/select_stdlib_config.hpp" 2 3 4
20673# 41 "/usr/include/boost/config.hpp" 2 3 4
20674
20675
20676
20677# 1 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 1 3 4
20678# 45 "/usr/include/boost/config.hpp" 2 3 4
20679
20680
20681
20682
20683# 1 "/usr/include/boost/config/select_platform_config.hpp" 1 3 4
20684# 50 "/usr/include/boost/config.hpp" 2 3 4
20685
20686
20687
20688# 1 "/usr/include/boost/config/platform/linux.hpp" 1 3 4
20689# 70 "/usr/include/boost/config/platform/linux.hpp" 3 4
20690# 1 "/usr/include/boost/config/posix_features.hpp" 1 3 4
20691# 18 "/usr/include/boost/config/posix_features.hpp" 3 4
20692# 1 "/usr/include/unistd.h" 1 3 4
20693# 19 "/usr/include/boost/config/posix_features.hpp" 2 3 4
20694# 71 "/usr/include/boost/config/platform/linux.hpp" 2 3 4
20695# 54 "/usr/include/boost/config.hpp" 2 3 4
20696
20697
20698
20699# 1 "/usr/include/boost/config/suffix.hpp" 1 3 4
20700# 433 "/usr/include/boost/config/suffix.hpp" 3 4
20701namespace boost{
20702
20703 __extension__ typedef long long long_long_type;
20704 __extension__ typedef unsigned long long ulong_long_type;
20705
20706
20707
20708
20709}
20710# 58 "/usr/include/boost/config.hpp" 2 3 4
20711# 54 "/usr/include/boost/detail/iterator.hpp" 2 3 4
20712# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iterator" 1 3 4
20713# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iterator" 3 4
20714
20715# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iterator" 3
20716
20717
20718
20719
20720
20721
20722# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 1 3
20723# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
20724
20725# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
20726
20727# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 1 3
20728# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 3
20729
20730# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 3
20731
20732
20733
20734
20735
20736# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/localefwd.h" 1 3
20737# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/localefwd.h" 3
20738
20739# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/localefwd.h" 3
20740
20741
20742
20743
20744
20745
20746namespace std __attribute__ ((__visibility__ ("default"))) {
20747
20748
20749 class locale;
20750
20751
20752 template<typename _CharT>
20753 inline bool
20754 isspace(_CharT, const locale&);
20755
20756 template<typename _CharT>
20757 inline bool
20758 isprint(_CharT, const locale&);
20759
20760 template<typename _CharT>
20761 inline bool
20762 iscntrl(_CharT, const locale&);
20763
20764 template<typename _CharT>
20765 inline bool
20766 isupper(_CharT, const locale&);
20767
20768 template<typename _CharT>
20769 inline bool
20770 islower(_CharT, const locale&);
20771
20772 template<typename _CharT>
20773 inline bool
20774 isalpha(_CharT, const locale&);
20775
20776 template<typename _CharT>
20777 inline bool
20778 isdigit(_CharT, const locale&);
20779
20780 template<typename _CharT>
20781 inline bool
20782 ispunct(_CharT, const locale&);
20783
20784 template<typename _CharT>
20785 inline bool
20786 isxdigit(_CharT, const locale&);
20787
20788 template<typename _CharT>
20789 inline bool
20790 isalnum(_CharT, const locale&);
20791
20792 template<typename _CharT>
20793 inline bool
20794 isgraph(_CharT, const locale&);
20795
20796 template<typename _CharT>
20797 inline _CharT
20798 toupper(_CharT, const locale&);
20799
20800 template<typename _CharT>
20801 inline _CharT
20802 tolower(_CharT, const locale&);
20803
20804
20805 class ctype_base;
20806 template<typename _CharT>
20807 class ctype;
20808 template<> class ctype<char>;
20809
20810 template<> class ctype<wchar_t>;
20811
20812 template<typename _CharT>
20813 class ctype_byname;
20814
20815
20816 class codecvt_base;
20817 class __enc_traits;
20818 template<typename _InternT, typename _ExternT, typename _StateT>
20819 class codecvt;
20820 template<> class codecvt<char, char, mbstate_t>;
20821
20822 template<> class codecvt<wchar_t, char, mbstate_t>;
20823
20824 template<typename _InternT, typename _ExternT, typename _StateT>
20825 class codecvt_byname;
20826
20827
20828
20829 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
20830 class num_get;
20831 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
20832 class num_put;
20833
20834 template<typename _CharT> class numpunct;
20835 template<typename _CharT> class numpunct_byname;
20836
20837
20838 template<typename _CharT>
20839 class collate;
20840 template<typename _CharT> class
20841 collate_byname;
20842
20843
20844 class time_base;
20845 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
20846 class time_get;
20847 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
20848 class time_get_byname;
20849 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
20850 class time_put;
20851 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
20852 class time_put_byname;
20853
20854
20855 class money_base;
20856
20857 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
20858 class money_get;
20859 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
20860 class money_put;
20861
20862 template<typename _CharT, bool _Intl = false>
20863 class moneypunct;
20864 template<typename _CharT, bool _Intl = false>
20865 class moneypunct_byname;
20866
20867
20868 class messages_base;
20869 template<typename _CharT>
20870 class messages;
20871 template<typename _CharT>
20872 class messages_byname;
20873
20874 template<typename _Facet>
20875 bool
20876 has_facet(const locale& __loc) throw();
20877
20878 template<typename _Facet>
20879 const _Facet&
20880 use_facet(const locale& __loc);
20881
20882 template<typename _Facet>
20883 inline const _Facet&
20884 __check_facet(const _Facet* __f)
20885 {
20886 if (!__f)
20887 __throw_bad_cast();
20888 return *__f;
20889 }
20890
20891}
20892# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 2 3
20893# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 1 3
20894# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
20895
20896# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
20897
20898
20899
20900# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 1 3
20901# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20902
20903# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20904
20905
20906
20907
20908
20909
20910namespace std __attribute__ ((__visibility__ ("default"))) {
20911# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20912 class locale
20913 {
20914 public:
20915
20916
20917 typedef int category;
20918
20919
20920 class facet;
20921 class id;
20922 class _Impl;
20923
20924 friend class facet;
20925 friend class _Impl;
20926
20927 template<typename _Facet>
20928 friend bool
20929 has_facet(const locale&) throw();
20930
20931 template<typename _Facet>
20932 friend const _Facet&
20933 use_facet(const locale&);
20934
20935 template<typename _Cache>
20936 friend struct __use_cache;
20937# 104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20938 static const category none = 0;
20939 static const category ctype = 1L << 0;
20940 static const category numeric = 1L << 1;
20941 static const category collate = 1L << 2;
20942 static const category time = 1L << 3;
20943 static const category monetary = 1L << 4;
20944 static const category messages = 1L << 5;
20945 static const category all = (ctype | numeric | collate |
20946 time | monetary | messages);
20947# 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20948 locale() throw();
20949# 132 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20950 locale(const locale& __other) throw();
20951# 142 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20952 explicit
20953 locale(const char* __s);
20954# 157 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20955 locale(const locale& __base, const char* __s, category __cat);
20956# 170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20957 locale(const locale& __base, const locale& __add, category __cat);
20958# 182 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20959 template<typename _Facet>
20960 locale(const locale& __other, _Facet* __f);
20961
20962
20963 ~locale() throw();
20964# 196 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20965 const locale&
20966 operator=(const locale& __other) throw();
20967# 211 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20968 template<typename _Facet>
20969 locale
20970 combine(const locale& __other) const;
20971
20972
20973
20974
20975
20976
20977 string
20978 name() const;
20979# 230 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20980 bool
20981 operator==(const locale& __other) const throw ();
20982
20983
20984
20985
20986
20987
20988
20989 inline bool
20990 operator!=(const locale& __other) const throw ()
20991 { return !(this->operator==(__other)); }
20992# 258 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20993 template<typename _Char, typename _Traits, typename _Alloc>
20994 bool
20995 operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
20996 const basic_string<_Char, _Traits, _Alloc>& __s2) const;
20997# 274 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
20998 static locale
20999 global(const locale&);
21000
21001
21002
21003
21004 static const locale&
21005 classic();
21006
21007 private:
21008
21009 _Impl* _M_impl;
21010
21011
21012 static _Impl* _S_classic;
21013
21014
21015 static _Impl* _S_global;
21016
21017
21018
21019
21020
21021 static const char* const* const _S_categories;
21022# 309 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
21023 enum { _S_categories_size = 6 + 6 };
21024
21025
21026 static __gthread_once_t _S_once;
21027
21028
21029 explicit
21030 locale(_Impl*) throw();
21031
21032 static void
21033 _S_initialize();
21034
21035 static void
21036 _S_initialize_once();
21037
21038 static category
21039 _S_normalize_category(category);
21040
21041 void
21042 _M_coalesce(const locale& __base, const locale& __add, category __cat);
21043 };
21044# 342 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
21045 class locale::facet
21046 {
21047 private:
21048 friend class locale;
21049 friend class locale::_Impl;
21050
21051 mutable _Atomic_word _M_refcount;
21052
21053
21054 static __c_locale _S_c_locale;
21055
21056
21057 static const char _S_c_name[2];
21058
21059
21060 static __gthread_once_t _S_once;
21061
21062
21063 static void
21064 _S_initialize_once();
21065
21066 protected:
21067# 373 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
21068 explicit
21069 facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
21070 { }
21071
21072
21073 virtual
21074 ~facet();
21075
21076 static void
21077 _S_create_c_locale(__c_locale& __cloc, const char* __s,
21078 __c_locale __old = 0);
21079
21080 static __c_locale
21081 _S_clone_c_locale(__c_locale& __cloc);
21082
21083 static void
21084 _S_destroy_c_locale(__c_locale& __cloc);
21085
21086
21087
21088 static __c_locale
21089 _S_get_c_locale();
21090
21091 static const char*
21092 _S_get_c_name();
21093
21094 private:
21095 inline void
21096 _M_add_reference() const throw()
21097 { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
21098
21099 inline void
21100 _M_remove_reference() const throw()
21101 {
21102 if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
21103 {
21104 try
21105 { delete this; }
21106 catch (...)
21107 { }
21108 }
21109 }
21110
21111 facet(const facet&);
21112
21113 facet&
21114 operator=(const facet&);
21115 };
21116# 433 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
21117 class locale::id
21118 {
21119 private:
21120 friend class locale;
21121 friend class locale::_Impl;
21122
21123 template<typename _Facet>
21124 friend const _Facet&
21125 use_facet(const locale&);
21126
21127 template<typename _Facet>
21128 friend bool
21129 has_facet(const locale&) throw ();
21130
21131
21132
21133
21134 mutable size_t _M_index;
21135
21136
21137 static _Atomic_word _S_refcount;
21138
21139 void
21140 operator=(const id&);
21141
21142 id(const id&);
21143
21144 public:
21145
21146
21147
21148 id() { }
21149
21150 size_t
21151 _M_id() const;
21152 };
21153
21154
21155
21156 class locale::_Impl
21157 {
21158 public:
21159
21160 friend class locale;
21161 friend class locale::facet;
21162
21163 template<typename _Facet>
21164 friend bool
21165 has_facet(const locale&) throw();
21166
21167 template<typename _Facet>
21168 friend const _Facet&
21169 use_facet(const locale&);
21170
21171 template<typename _Cache>
21172 friend struct __use_cache;
21173
21174 private:
21175
21176 _Atomic_word _M_refcount;
21177 const facet** _M_facets;
21178 size_t _M_facets_size;
21179 const facet** _M_caches;
21180 char** _M_names;
21181 static const locale::id* const _S_id_ctype[];
21182 static const locale::id* const _S_id_numeric[];
21183 static const locale::id* const _S_id_collate[];
21184 static const locale::id* const _S_id_time[];
21185 static const locale::id* const _S_id_monetary[];
21186 static const locale::id* const _S_id_messages[];
21187 static const locale::id* const* const _S_facet_categories[];
21188
21189 inline void
21190 _M_add_reference() throw()
21191 { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
21192
21193 inline void
21194 _M_remove_reference() throw()
21195 {
21196 if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
21197 {
21198 try
21199 { delete this; }
21200 catch(...)
21201 { }
21202 }
21203 }
21204
21205 _Impl(const _Impl&, size_t);
21206 _Impl(const char*, size_t);
21207 _Impl(size_t) throw();
21208
21209 ~_Impl() throw();
21210
21211 _Impl(const _Impl&);
21212
21213 void
21214 operator=(const _Impl&);
21215
21216 inline bool
21217 _M_check_same_name()
21218 {
21219 bool __ret = true;
21220 if (_M_names[1])
21221
21222 for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
21223 __ret = std::strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
21224 return __ret;
21225 }
21226
21227 void
21228 _M_replace_categories(const _Impl*, category);
21229
21230 void
21231 _M_replace_category(const _Impl*, const locale::id* const*);
21232
21233 void
21234 _M_replace_facet(const _Impl*, const locale::id*);
21235
21236 void
21237 _M_install_facet(const locale::id*, const facet*);
21238
21239 template<typename _Facet>
21240 inline void
21241 _M_init_facet(_Facet* __facet)
21242 { _M_install_facet(&_Facet::id, __facet); }
21243
21244 void
21245 _M_install_cache(const facet*, size_t);
21246 };
21247
21248 template<typename _Facet>
21249 locale::locale(const locale& __other, _Facet* __f)
21250 {
21251 _M_impl = new _Impl(*__other._M_impl, 1);
21252
21253 try
21254 { _M_impl->_M_install_facet(&_Facet::id, __f); }
21255 catch(...)
21256 {
21257 _M_impl->_M_remove_reference();
21258 throw;
21259 }
21260 delete [] _M_impl->_M_names[0];
21261 _M_impl->_M_names[0] = 0;
21262 }
21263
21264}
21265# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 2 3
21266
21267namespace std __attribute__ ((__visibility__ ("default"))) {
21268
21269
21270
21271
21272
21273 enum _Ios_Fmtflags
21274 {
21275 _S_boolalpha = 1L << 0,
21276 _S_dec = 1L << 1,
21277 _S_fixed = 1L << 2,
21278 _S_hex = 1L << 3,
21279 _S_internal = 1L << 4,
21280 _S_left = 1L << 5,
21281 _S_oct = 1L << 6,
21282 _S_right = 1L << 7,
21283 _S_scientific = 1L << 8,
21284 _S_showbase = 1L << 9,
21285 _S_showpoint = 1L << 10,
21286 _S_showpos = 1L << 11,
21287 _S_skipws = 1L << 12,
21288 _S_unitbuf = 1L << 13,
21289 _S_uppercase = 1L << 14,
21290 _S_adjustfield = _S_left | _S_right | _S_internal,
21291 _S_basefield = _S_dec | _S_oct | _S_hex,
21292 _S_floatfield = _S_scientific | _S_fixed,
21293 _S_ios_fmtflags_end = 1L << 16
21294 };
21295
21296 inline _Ios_Fmtflags
21297 operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
21298 { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
21299
21300 inline _Ios_Fmtflags
21301 operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
21302 { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
21303
21304 inline _Ios_Fmtflags
21305 operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
21306 { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
21307
21308 inline _Ios_Fmtflags&
21309 operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
21310 { return __a = __a | __b; }
21311
21312 inline _Ios_Fmtflags&
21313 operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
21314 { return __a = __a & __b; }
21315
21316 inline _Ios_Fmtflags&
21317 operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
21318 { return __a = __a ^ __b; }
21319
21320 inline _Ios_Fmtflags
21321 operator~(_Ios_Fmtflags __a)
21322 { return _Ios_Fmtflags(~static_cast<int>(__a)); }
21323
21324
21325 enum _Ios_Openmode
21326 {
21327 _S_app = 1L << 0,
21328 _S_ate = 1L << 1,
21329 _S_bin = 1L << 2,
21330 _S_in = 1L << 3,
21331 _S_out = 1L << 4,
21332 _S_trunc = 1L << 5,
21333 _S_ios_openmode_end = 1L << 16
21334 };
21335
21336 inline _Ios_Openmode
21337 operator&(_Ios_Openmode __a, _Ios_Openmode __b)
21338 { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
21339
21340 inline _Ios_Openmode
21341 operator|(_Ios_Openmode __a, _Ios_Openmode __b)
21342 { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
21343
21344 inline _Ios_Openmode
21345 operator^(_Ios_Openmode __a, _Ios_Openmode __b)
21346 { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
21347
21348 inline _Ios_Openmode&
21349 operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
21350 { return __a = __a | __b; }
21351
21352 inline _Ios_Openmode&
21353 operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
21354 { return __a = __a & __b; }
21355
21356 inline _Ios_Openmode&
21357 operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
21358 { return __a = __a ^ __b; }
21359
21360 inline _Ios_Openmode
21361 operator~(_Ios_Openmode __a)
21362 { return _Ios_Openmode(~static_cast<int>(__a)); }
21363
21364
21365 enum _Ios_Iostate
21366 {
21367 _S_goodbit = 0,
21368 _S_badbit = 1L << 0,
21369 _S_eofbit = 1L << 1,
21370 _S_failbit = 1L << 2,
21371 _S_ios_iostate_end = 1L << 16
21372 };
21373
21374 inline _Ios_Iostate
21375 operator&(_Ios_Iostate __a, _Ios_Iostate __b)
21376 { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
21377
21378 inline _Ios_Iostate
21379 operator|(_Ios_Iostate __a, _Ios_Iostate __b)
21380 { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
21381
21382 inline _Ios_Iostate
21383 operator^(_Ios_Iostate __a, _Ios_Iostate __b)
21384 { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
21385
21386 inline _Ios_Iostate&
21387 operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
21388 { return __a = __a | __b; }
21389
21390 inline _Ios_Iostate&
21391 operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
21392 { return __a = __a & __b; }
21393
21394 inline _Ios_Iostate&
21395 operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
21396 { return __a = __a ^ __b; }
21397
21398 inline _Ios_Iostate
21399 operator~(_Ios_Iostate __a)
21400 { return _Ios_Iostate(~static_cast<int>(__a)); }
21401
21402 enum _Ios_Seekdir
21403 {
21404 _S_beg = 0,
21405 _S_cur = 1,
21406 _S_end = 2,
21407 _S_ios_seekdir_end = 1L << 16
21408 };
21409# 201 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21410 class ios_base
21411 {
21412 public:
21413
21414
21415
21416 class failure : public exception
21417 {
21418 public:
21419
21420
21421 explicit
21422 failure(const string& __str) throw();
21423
21424
21425
21426 virtual
21427 ~failure() throw();
21428
21429 virtual const char*
21430 what() const throw();
21431
21432 private:
21433 string _M_msg;
21434 };
21435# 253 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21436 typedef _Ios_Fmtflags fmtflags;
21437
21438
21439 static const fmtflags boolalpha = _S_boolalpha;
21440
21441
21442 static const fmtflags dec = _S_dec;
21443
21444
21445 static const fmtflags fixed = _S_fixed;
21446
21447
21448 static const fmtflags hex = _S_hex;
21449
21450
21451
21452
21453 static const fmtflags internal = _S_internal;
21454
21455
21456
21457 static const fmtflags left = _S_left;
21458
21459
21460 static const fmtflags oct = _S_oct;
21461
21462
21463
21464 static const fmtflags right = _S_right;
21465
21466
21467 static const fmtflags scientific = _S_scientific;
21468
21469
21470
21471 static const fmtflags showbase = _S_showbase;
21472
21473
21474
21475 static const fmtflags showpoint = _S_showpoint;
21476
21477
21478 static const fmtflags showpos = _S_showpos;
21479
21480
21481 static const fmtflags skipws = _S_skipws;
21482
21483
21484 static const fmtflags unitbuf = _S_unitbuf;
21485
21486
21487
21488 static const fmtflags uppercase = _S_uppercase;
21489
21490
21491 static const fmtflags adjustfield = _S_adjustfield;
21492
21493
21494 static const fmtflags basefield = _S_basefield;
21495
21496
21497 static const fmtflags floatfield = _S_floatfield;
21498# 328 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21499 typedef _Ios_Iostate iostate;
21500
21501
21502
21503 static const iostate badbit = _S_badbit;
21504
21505
21506 static const iostate eofbit = _S_eofbit;
21507
21508
21509
21510
21511 static const iostate failbit = _S_failbit;
21512
21513
21514 static const iostate goodbit = _S_goodbit;
21515# 359 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21516 typedef _Ios_Openmode openmode;
21517
21518
21519 static const openmode app = _S_app;
21520
21521
21522 static const openmode ate = _S_ate;
21523
21524
21525
21526
21527
21528 static const openmode binary = _S_bin;
21529
21530
21531 static const openmode in = _S_in;
21532
21533
21534 static const openmode out = _S_out;
21535
21536
21537 static const openmode trunc = _S_trunc;
21538# 392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21539 typedef _Ios_Seekdir seekdir;
21540
21541
21542 static const seekdir beg = _S_beg;
21543
21544
21545 static const seekdir cur = _S_cur;
21546
21547
21548 static const seekdir end = _S_end;
21549
21550
21551 typedef int io_state;
21552 typedef int open_mode;
21553 typedef int seek_dir;
21554
21555 typedef std::streampos streampos;
21556 typedef std::streamoff streamoff;
21557# 418 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21558 enum event
21559 {
21560 erase_event,
21561 imbue_event,
21562 copyfmt_event
21563 };
21564# 435 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21565 typedef void (*event_callback) (event, ios_base&, int);
21566# 447 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21567 void
21568 register_callback(event_callback __fn, int __index);
21569
21570 protected:
21571
21572
21573
21574
21575
21576
21577 streamsize _M_precision;
21578 streamsize _M_width;
21579 fmtflags _M_flags;
21580 iostate _M_exception;
21581 iostate _M_streambuf_state;
21582
21583
21584
21585
21586 struct _Callback_list
21587 {
21588
21589 _Callback_list* _M_next;
21590 ios_base::event_callback _M_fn;
21591 int _M_index;
21592 _Atomic_word _M_refcount;
21593
21594 _Callback_list(ios_base::event_callback __fn, int __index,
21595 _Callback_list* __cb)
21596 : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
21597
21598 void
21599 _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
21600
21601
21602 int
21603 _M_remove_reference()
21604 { return __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); }
21605 };
21606
21607 _Callback_list* _M_callbacks;
21608
21609 void
21610 _M_call_callbacks(event __ev) throw();
21611
21612 void
21613 _M_dispose_callbacks(void);
21614
21615
21616 struct _Words
21617 {
21618 void* _M_pword;
21619 long _M_iword;
21620 _Words() : _M_pword(0), _M_iword(0) { }
21621 };
21622
21623
21624 _Words _M_word_zero;
21625
21626
21627
21628 enum { _S_local_word_size = 8 };
21629 _Words _M_local_word[_S_local_word_size];
21630
21631
21632 int _M_word_size;
21633 _Words* _M_word;
21634
21635 _Words&
21636 _M_grow_words(int __index, bool __iword);
21637
21638
21639 locale _M_ios_locale;
21640
21641 void
21642 _M_init();
21643
21644 public:
21645
21646
21647
21648
21649
21650 class Init
21651 {
21652 friend class ios_base;
21653 public:
21654 Init();
21655 ~Init();
21656
21657 private:
21658 static _Atomic_word _S_refcount;
21659 static bool _S_synced_with_stdio;
21660 };
21661
21662
21663
21664
21665
21666
21667 inline fmtflags
21668 flags() const { return _M_flags; }
21669# 557 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21670 inline fmtflags
21671 flags(fmtflags __fmtfl)
21672 {
21673 fmtflags __old = _M_flags;
21674 _M_flags = __fmtfl;
21675 return __old;
21676 }
21677# 573 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21678 inline fmtflags
21679 setf(fmtflags __fmtfl)
21680 {
21681 fmtflags __old = _M_flags;
21682 _M_flags |= __fmtfl;
21683 return __old;
21684 }
21685# 590 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21686 inline fmtflags
21687 setf(fmtflags __fmtfl, fmtflags __mask)
21688 {
21689 fmtflags __old = _M_flags;
21690 _M_flags &= ~__mask;
21691 _M_flags |= (__fmtfl & __mask);
21692 return __old;
21693 }
21694
21695
21696
21697
21698
21699
21700
21701 inline void
21702 unsetf(fmtflags __mask) { _M_flags &= ~__mask; }
21703# 617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21704 inline streamsize
21705 precision() const { return _M_precision; }
21706
21707
21708
21709
21710
21711
21712 inline streamsize
21713 precision(streamsize __prec)
21714 {
21715 streamsize __old = _M_precision;
21716 _M_precision = __prec;
21717 return __old;
21718 }
21719
21720
21721
21722
21723
21724
21725
21726 inline streamsize
21727 width() const { return _M_width; }
21728
21729
21730
21731
21732
21733
21734 inline streamsize
21735 width(streamsize __wide)
21736 {
21737 streamsize __old = _M_width;
21738 _M_width = __wide;
21739 return __old;
21740 }
21741# 666 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21742 static bool
21743 sync_with_stdio(bool __sync = true);
21744# 678 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21745 locale
21746 imbue(const locale& __loc);
21747# 689 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21748 inline locale
21749 getloc() const { return _M_ios_locale; }
21750# 699 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21751 inline const locale&
21752 _M_getloc() const { return _M_ios_locale; }
21753# 717 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21754 static int
21755 xalloc() throw();
21756# 733 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21757 inline long&
21758 iword(int __ix)
21759 {
21760 _Words& __word = (__ix < _M_word_size)
21761 ? _M_word[__ix] : _M_grow_words(__ix, true);
21762 return __word._M_iword;
21763 }
21764# 754 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21765 inline void*&
21766 pword(int __ix)
21767 {
21768 _Words& __word = (__ix < _M_word_size)
21769 ? _M_word[__ix] : _M_grow_words(__ix, false);
21770 return __word._M_pword;
21771 }
21772# 771 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
21773 virtual ~ios_base();
21774
21775 protected:
21776 ios_base();
21777
21778
21779
21780 private:
21781 ios_base(const ios_base&);
21782
21783 ios_base&
21784 operator=(const ios_base&);
21785 };
21786
21787
21788
21789 inline ios_base&
21790 boolalpha(ios_base& __base)
21791 {
21792 __base.setf(ios_base::boolalpha);
21793 return __base;
21794 }
21795
21796
21797 inline ios_base&
21798 noboolalpha(ios_base& __base)
21799 {
21800 __base.unsetf(ios_base::boolalpha);
21801 return __base;
21802 }
21803
21804
21805 inline ios_base&
21806 showbase(ios_base& __base)
21807 {
21808 __base.setf(ios_base::showbase);
21809 return __base;
21810 }
21811
21812
21813 inline ios_base&
21814 noshowbase(ios_base& __base)
21815 {
21816 __base.unsetf(ios_base::showbase);
21817 return __base;
21818 }
21819
21820
21821 inline ios_base&
21822 showpoint(ios_base& __base)
21823 {
21824 __base.setf(ios_base::showpoint);
21825 return __base;
21826 }
21827
21828
21829 inline ios_base&
21830 noshowpoint(ios_base& __base)
21831 {
21832 __base.unsetf(ios_base::showpoint);
21833 return __base;
21834 }
21835
21836
21837 inline ios_base&
21838 showpos(ios_base& __base)
21839 {
21840 __base.setf(ios_base::showpos);
21841 return __base;
21842 }
21843
21844
21845 inline ios_base&
21846 noshowpos(ios_base& __base)
21847 {
21848 __base.unsetf(ios_base::showpos);
21849 return __base;
21850 }
21851
21852
21853 inline ios_base&
21854 skipws(ios_base& __base)
21855 {
21856 __base.setf(ios_base::skipws);
21857 return __base;
21858 }
21859
21860
21861 inline ios_base&
21862 noskipws(ios_base& __base)
21863 {
21864 __base.unsetf(ios_base::skipws);
21865 return __base;
21866 }
21867
21868
21869 inline ios_base&
21870 uppercase(ios_base& __base)
21871 {
21872 __base.setf(ios_base::uppercase);
21873 return __base;
21874 }
21875
21876
21877 inline ios_base&
21878 nouppercase(ios_base& __base)
21879 {
21880 __base.unsetf(ios_base::uppercase);
21881 return __base;
21882 }
21883
21884
21885 inline ios_base&
21886 unitbuf(ios_base& __base)
21887 {
21888 __base.setf(ios_base::unitbuf);
21889 return __base;
21890 }
21891
21892
21893 inline ios_base&
21894 nounitbuf(ios_base& __base)
21895 {
21896 __base.unsetf(ios_base::unitbuf);
21897 return __base;
21898 }
21899
21900
21901
21902 inline ios_base&
21903 internal(ios_base& __base)
21904 {
21905 __base.setf(ios_base::internal, ios_base::adjustfield);
21906 return __base;
21907 }
21908
21909
21910 inline ios_base&
21911 left(ios_base& __base)
21912 {
21913 __base.setf(ios_base::left, ios_base::adjustfield);
21914 return __base;
21915 }
21916
21917
21918 inline ios_base&
21919 right(ios_base& __base)
21920 {
21921 __base.setf(ios_base::right, ios_base::adjustfield);
21922 return __base;
21923 }
21924
21925
21926
21927 inline ios_base&
21928 dec(ios_base& __base)
21929 {
21930 __base.setf(ios_base::dec, ios_base::basefield);
21931 return __base;
21932 }
21933
21934
21935 inline ios_base&
21936 hex(ios_base& __base)
21937 {
21938 __base.setf(ios_base::hex, ios_base::basefield);
21939 return __base;
21940 }
21941
21942
21943 inline ios_base&
21944 oct(ios_base& __base)
21945 {
21946 __base.setf(ios_base::oct, ios_base::basefield);
21947 return __base;
21948 }
21949
21950
21951
21952 inline ios_base&
21953 fixed(ios_base& __base)
21954 {
21955 __base.setf(ios_base::fixed, ios_base::floatfield);
21956 return __base;
21957 }
21958
21959
21960 inline ios_base&
21961 scientific(ios_base& __base)
21962 {
21963 __base.setf(ios_base::scientific, ios_base::floatfield);
21964 return __base;
21965 }
21966
21967}
21968# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 2 3
21969# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 1 3
21970# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
21971
21972# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
21973# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
21974namespace std __attribute__ ((__visibility__ ("default"))) {
21975
21976
21977
21978
21979
21980
21981 template<typename _CharT, typename _Traits>
21982 streamsize
21983 __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
21984 basic_streambuf<_CharT, _Traits>*, bool&);
21985# 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
21986 template<typename _CharT, typename _Traits>
21987 class basic_streambuf
21988 {
21989 public:
21990
21991
21992
21993
21994
21995
21996 typedef _CharT char_type;
21997 typedef _Traits traits_type;
21998 typedef typename traits_type::int_type int_type;
21999 typedef typename traits_type::pos_type pos_type;
22000 typedef typename traits_type::off_type off_type;
22001# 146 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22002 typedef basic_streambuf<char_type, traits_type> __streambuf_type;
22003
22004
22005 friend class basic_ios<char_type, traits_type>;
22006 friend class basic_istream<char_type, traits_type>;
22007 friend class basic_ostream<char_type, traits_type>;
22008 friend class istreambuf_iterator<char_type, traits_type>;
22009 friend class ostreambuf_iterator<char_type, traits_type>;
22010
22011 friend streamsize
22012 __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);
22013
22014 template<typename _CharT2>
22015 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
22016 _CharT2*>::__type
22017 __copy_aux(istreambuf_iterator<_CharT2>,
22018 istreambuf_iterator<_CharT2>, _CharT2*);
22019
22020 template<typename _CharT2>
22021 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
22022 istreambuf_iterator<_CharT2> >::__type
22023 find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
22024 const _CharT2&);
22025
22026 template<typename _CharT2, typename _Traits2>
22027 friend basic_istream<_CharT2, _Traits2>&
22028 operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
22029
22030 template<typename _CharT2, typename _Traits2, typename _Alloc>
22031 friend basic_istream<_CharT2, _Traits2>&
22032 operator>>(basic_istream<_CharT2, _Traits2>&,
22033 basic_string<_CharT2, _Traits2, _Alloc>&);
22034
22035 template<typename _CharT2, typename _Traits2, typename _Alloc>
22036 friend basic_istream<_CharT2, _Traits2>&
22037 getline(basic_istream<_CharT2, _Traits2>&,
22038 basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
22039
22040 protected:
22041# 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22042 char_type* _M_in_beg;
22043 char_type* _M_in_cur;
22044 char_type* _M_in_end;
22045 char_type* _M_out_beg;
22046 char_type* _M_out_cur;
22047 char_type* _M_out_end;
22048
22049
22050
22051
22052
22053
22054 locale _M_buf_locale;
22055
22056 public:
22057
22058 virtual
22059 ~basic_streambuf()
22060 { }
22061# 223 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22062 locale
22063 pubimbue(const locale &__loc)
22064 {
22065 locale __tmp(this->getloc());
22066 this->imbue(__loc);
22067 _M_buf_locale = __loc;
22068 return __tmp;
22069 }
22070# 240 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22071 locale
22072 getloc() const
22073 { return _M_buf_locale; }
22074# 253 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22075 __streambuf_type*
22076 pubsetbuf(char_type* __s, streamsize __n)
22077 { return this->setbuf(__s, __n); }
22078
22079 pos_type
22080 pubseekoff(off_type __off, ios_base::seekdir __way,
22081 ios_base::openmode __mode = ios_base::in | ios_base::out)
22082 { return this->seekoff(__off, __way, __mode); }
22083
22084 pos_type
22085 pubseekpos(pos_type __sp,
22086 ios_base::openmode __mode = ios_base::in | ios_base::out)
22087 { return this->seekpos(__sp, __mode); }
22088
22089 int
22090 pubsync() { return this->sync(); }
22091# 280 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22092 streamsize
22093 in_avail()
22094 {
22095 const streamsize __ret = this->egptr() - this->gptr();
22096 return __ret ? __ret : this->showmanyc();
22097 }
22098# 294 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22099 int_type
22100 snextc()
22101 {
22102 int_type __ret = traits_type::eof();
22103 if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
22104 __ret), true))
22105 __ret = this->sgetc();
22106 return __ret;
22107 }
22108# 312 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22109 int_type
22110 sbumpc()
22111 {
22112 int_type __ret;
22113 if (__builtin_expect(this->gptr() < this->egptr(), true))
22114 {
22115 __ret = traits_type::to_int_type(*this->gptr());
22116 this->gbump(1);
22117 }
22118 else
22119 __ret = this->uflow();
22120 return __ret;
22121 }
22122# 334 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22123 int_type
22124 sgetc()
22125 {
22126 int_type __ret;
22127 if (__builtin_expect(this->gptr() < this->egptr(), true))
22128 __ret = traits_type::to_int_type(*this->gptr());
22129 else
22130 __ret = this->underflow();
22131 return __ret;
22132 }
22133# 353 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22134 streamsize
22135 sgetn(char_type* __s, streamsize __n)
22136 { return this->xsgetn(__s, __n); }
22137# 367 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22138 int_type
22139 sputbackc(char_type __c)
22140 {
22141 int_type __ret;
22142 const bool __testpos = this->eback() < this->gptr();
22143 if (__builtin_expect(!__testpos ||
22144 !traits_type::eq(__c, this->gptr()[-1]), false))
22145 __ret = this->pbackfail(traits_type::to_int_type(__c));
22146 else
22147 {
22148 this->gbump(-1);
22149 __ret = traits_type::to_int_type(*this->gptr());
22150 }
22151 return __ret;
22152 }
22153# 392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22154 int_type
22155 sungetc()
22156 {
22157 int_type __ret;
22158 if (__builtin_expect(this->eback() < this->gptr(), true))
22159 {
22160 this->gbump(-1);
22161 __ret = traits_type::to_int_type(*this->gptr());
22162 }
22163 else
22164 __ret = this->pbackfail();
22165 return __ret;
22166 }
22167# 419 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22168 int_type
22169 sputc(char_type __c)
22170 {
22171 int_type __ret;
22172 if (__builtin_expect(this->pptr() < this->epptr(), true))
22173 {
22174 *this->pptr() = __c;
22175 this->pbump(1);
22176 __ret = traits_type::to_int_type(__c);
22177 }
22178 else
22179 __ret = this->overflow(traits_type::to_int_type(__c));
22180 return __ret;
22181 }
22182# 445 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22183 streamsize
22184 sputn(const char_type* __s, streamsize __n)
22185 { return this->xsputn(__s, __n); }
22186
22187 protected:
22188# 459 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22189 basic_streambuf()
22190 : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
22191 _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
22192 _M_buf_locale(locale())
22193 { }
22194# 477 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22195 char_type*
22196 eback() const { return _M_in_beg; }
22197
22198 char_type*
22199 gptr() const { return _M_in_cur; }
22200
22201 char_type*
22202 egptr() const { return _M_in_end; }
22203# 493 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22204 void
22205 gbump(int __n) { _M_in_cur += __n; }
22206# 504 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22207 void
22208 setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
22209 {
22210 _M_in_beg = __gbeg;
22211 _M_in_cur = __gnext;
22212 _M_in_end = __gend;
22213 }
22214# 524 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22215 char_type*
22216 pbase() const { return _M_out_beg; }
22217
22218 char_type*
22219 pptr() const { return _M_out_cur; }
22220
22221 char_type*
22222 epptr() const { return _M_out_end; }
22223# 540 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22224 void
22225 pbump(int __n) { _M_out_cur += __n; }
22226# 550 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22227 void
22228 setp(char_type* __pbeg, char_type* __pend)
22229 {
22230 _M_out_beg = _M_out_cur = __pbeg;
22231 _M_out_end = __pend;
22232 }
22233# 571 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22234 virtual void
22235 imbue(const locale&)
22236 { }
22237# 586 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22238 virtual basic_streambuf<char_type,_Traits>*
22239 setbuf(char_type*, streamsize)
22240 { return this; }
22241# 597 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22242 virtual pos_type
22243 seekoff(off_type, ios_base::seekdir,
22244 ios_base::openmode = ios_base::in | ios_base::out)
22245 { return pos_type(off_type(-1)); }
22246# 609 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22247 virtual pos_type
22248 seekpos(pos_type,
22249 ios_base::openmode = ios_base::in | ios_base::out)
22250 { return pos_type(off_type(-1)); }
22251# 622 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22252 virtual int
22253 sync() { return 0; }
22254# 644 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22255 virtual streamsize
22256 showmanyc() { return 0; }
22257# 660 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22258 virtual streamsize
22259 xsgetn(char_type* __s, streamsize __n);
22260# 682 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22261 virtual int_type
22262 underflow()
22263 { return traits_type::eof(); }
22264# 695 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22265 virtual int_type
22266 uflow()
22267 {
22268 int_type __ret = traits_type::eof();
22269 const bool __testeof = traits_type::eq_int_type(this->underflow(),
22270 __ret);
22271 if (!__testeof)
22272 {
22273 __ret = traits_type::to_int_type(*this->gptr());
22274 this->gbump(1);
22275 }
22276 return __ret;
22277 }
22278# 719 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22279 virtual int_type
22280 pbackfail(int_type = traits_type::eof())
22281 { return traits_type::eof(); }
22282# 737 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22283 virtual streamsize
22284 xsputn(const char_type* __s, streamsize __n);
22285# 762 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22286 virtual int_type
22287 overflow(int_type = traits_type::eof())
22288 { return traits_type::eof(); }
22289# 791 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
22290 private:
22291
22292
22293 basic_streambuf(const __streambuf_type& __sb)
22294 : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),
22295 _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),
22296 _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
22297 _M_buf_locale(__sb._M_buf_locale)
22298 { }
22299
22300 __streambuf_type&
22301 operator=(const __streambuf_type&) { return *this; };
22302 };
22303
22304
22305 template<>
22306 streamsize
22307 __copy_streambufs_eof(basic_streambuf<char>* __sbin,
22308 basic_streambuf<char>* __sbout, bool& __ineof);
22309
22310 template<>
22311 streamsize
22312 __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
22313 basic_streambuf<wchar_t>* __sbout, bool& __ineof);
22314
22315
22316}
22317
22318
22319# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf.tcc" 1 3
22320# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf.tcc" 3
22321
22322# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf.tcc" 3
22323
22324namespace std __attribute__ ((__visibility__ ("default"))) {
22325
22326 template<typename _CharT, typename _Traits>
22327 streamsize
22328 basic_streambuf<_CharT, _Traits>::
22329 xsgetn(char_type* __s, streamsize __n)
22330 {
22331 streamsize __ret = 0;
22332 while (__ret < __n)
22333 {
22334 const streamsize __buf_len = this->egptr() - this->gptr();
22335 if (__buf_len)
22336 {
22337 const streamsize __remaining = __n - __ret;
22338 const streamsize __len = std::min(__buf_len, __remaining);
22339 traits_type::copy(__s, this->gptr(), __len);
22340 __ret += __len;
22341 __s += __len;
22342 this->gbump(__len);
22343 }
22344
22345 if (__ret < __n)
22346 {
22347 const int_type __c = this->uflow();
22348 if (!traits_type::eq_int_type(__c, traits_type::eof()))
22349 {
22350 traits_type::assign(*__s++, traits_type::to_char_type(__c));
22351 ++__ret;
22352 }
22353 else
22354 break;
22355 }
22356 }
22357 return __ret;
22358 }
22359
22360 template<typename _CharT, typename _Traits>
22361 streamsize
22362 basic_streambuf<_CharT, _Traits>::
22363 xsputn(const char_type* __s, streamsize __n)
22364 {
22365 streamsize __ret = 0;
22366 while (__ret < __n)
22367 {
22368 const streamsize __buf_len = this->epptr() - this->pptr();
22369 if (__buf_len)
22370 {
22371 const streamsize __remaining = __n - __ret;
22372 const streamsize __len = std::min(__buf_len, __remaining);
22373 traits_type::copy(this->pptr(), __s, __len);
22374 __ret += __len;
22375 __s += __len;
22376 this->pbump(__len);
22377 }
22378
22379 if (__ret < __n)
22380 {
22381 int_type __c = this->overflow(traits_type::to_int_type(*__s));
22382 if (!traits_type::eq_int_type(__c, traits_type::eof()))
22383 {
22384 ++__ret;
22385 ++__s;
22386 }
22387 else
22388 break;
22389 }
22390 }
22391 return __ret;
22392 }
22393
22394
22395
22396
22397 template<typename _CharT, typename _Traits>
22398 streamsize
22399 __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
22400 basic_streambuf<_CharT, _Traits>* __sbout,
22401 bool& __ineof)
22402 {
22403 streamsize __ret = 0;
22404 __ineof = true;
22405 typename _Traits::int_type __c = __sbin->sgetc();
22406 while (!_Traits::eq_int_type(__c, _Traits::eof()))
22407 {
22408 __c = __sbout->sputc(_Traits::to_char_type(__c));
22409 if (_Traits::eq_int_type(__c, _Traits::eof()))
22410 {
22411 __ineof = false;
22412 break;
22413 }
22414 ++__ret;
22415 __c = __sbin->snextc();
22416 }
22417 return __ret;
22418 }
22419
22420 template<typename _CharT, typename _Traits>
22421 inline streamsize
22422 __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
22423 basic_streambuf<_CharT, _Traits>* __sbout)
22424 {
22425 bool __ineof;
22426 return __copy_streambufs_eof(__sbin, __sbout, __ineof);
22427 }
22428
22429
22430
22431
22432
22433 extern template class basic_streambuf<char>;
22434 extern template
22435 streamsize
22436 __copy_streambufs(basic_streambuf<char>*,
22437 basic_streambuf<char>*);
22438 extern template
22439 streamsize
22440 __copy_streambufs_eof(basic_streambuf<char>*,
22441 basic_streambuf<char>*, bool&);
22442
22443
22444 extern template class basic_streambuf<wchar_t>;
22445 extern template
22446 streamsize
22447 __copy_streambufs(basic_streambuf<wchar_t>*,
22448 basic_streambuf<wchar_t>*);
22449 extern template
22450 streamsize
22451 __copy_streambufs_eof(basic_streambuf<wchar_t>*,
22452 basic_streambuf<wchar_t>*, bool&);
22453
22454
22455
22456}
22457# 821 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 2 3
22458# 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 2 3
22459# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 1 3
22460# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
22461
22462# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
22463
22464# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf_iterator.h" 1 3
22465# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf_iterator.h" 3
22466
22467# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf_iterator.h" 3
22468
22469
22470
22471
22472namespace std __attribute__ ((__visibility__ ("default"))) {
22473
22474
22475
22476 template<typename _CharT, typename _Traits>
22477 class istreambuf_iterator
22478 : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
22479 _CharT*, _CharT&>
22480 {
22481 public:
22482
22483
22484
22485 typedef _CharT char_type;
22486 typedef _Traits traits_type;
22487 typedef typename _Traits::int_type int_type;
22488 typedef basic_streambuf<_CharT, _Traits> streambuf_type;
22489 typedef basic_istream<_CharT, _Traits> istream_type;
22490
22491
22492 template<typename _CharT2>
22493 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
22494 ostreambuf_iterator<_CharT2> >::__type
22495 copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
22496 ostreambuf_iterator<_CharT2>);
22497
22498 template<typename _CharT2>
22499 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
22500 _CharT2*>::__type
22501 __copy_aux(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
22502 _CharT2*);
22503
22504 template<typename _CharT2>
22505 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
22506 istreambuf_iterator<_CharT2> >::__type
22507 find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
22508 const _CharT2&);
22509
22510 private:
22511
22512
22513
22514
22515
22516
22517
22518 mutable streambuf_type* _M_sbuf;
22519 mutable int_type _M_c;
22520
22521 public:
22522
22523 istreambuf_iterator() throw()
22524 : _M_sbuf(0), _M_c(traits_type::eof()) { }
22525
22526
22527 istreambuf_iterator(istream_type& __s) throw()
22528 : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
22529
22530
22531 istreambuf_iterator(streambuf_type* __s) throw()
22532 : _M_sbuf(__s), _M_c(traits_type::eof()) { }
22533
22534
22535
22536
22537 char_type
22538 operator*() const
22539 {
22540
22541
22542
22543
22544
22545
22546
22547 return traits_type::to_char_type(_M_get());
22548 }
22549
22550
22551 istreambuf_iterator&
22552 operator++()
22553 {
22554 ;
22555
22556
22557 if (_M_sbuf)
22558 {
22559 _M_sbuf->sbumpc();
22560 _M_c = traits_type::eof();
22561 }
22562 return *this;
22563 }
22564
22565
22566 istreambuf_iterator
22567 operator++(int)
22568 {
22569 ;
22570
22571
22572
22573 istreambuf_iterator __old = *this;
22574 if (_M_sbuf)
22575 {
22576 __old._M_c = _M_sbuf->sbumpc();
22577 _M_c = traits_type::eof();
22578 }
22579 return __old;
22580 }
22581
22582
22583
22584
22585
22586 bool
22587 equal(const istreambuf_iterator& __b) const
22588 {
22589 const bool __thiseof = _M_at_eof();
22590 const bool __beof = __b._M_at_eof();
22591 return (__thiseof && __beof || (!__thiseof && !__beof));
22592 }
22593
22594 private:
22595 int_type
22596 _M_get() const
22597 {
22598 const int_type __eof = traits_type::eof();
22599 int_type __ret = __eof;
22600 if (_M_sbuf)
22601 {
22602 if (!traits_type::eq_int_type(_M_c, __eof))
22603 __ret = _M_c;
22604 else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
22605 __eof))
22606 _M_c = __ret;
22607 else
22608 _M_sbuf = 0;
22609 }
22610 return __ret;
22611 }
22612
22613 bool
22614 _M_at_eof() const
22615 {
22616 const int_type __eof = traits_type::eof();
22617 return traits_type::eq_int_type(_M_get(), __eof);
22618 }
22619 };
22620
22621 template<typename _CharT, typename _Traits>
22622 inline bool
22623 operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
22624 const istreambuf_iterator<_CharT, _Traits>& __b)
22625 { return __a.equal(__b); }
22626
22627 template<typename _CharT, typename _Traits>
22628 inline bool
22629 operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
22630 const istreambuf_iterator<_CharT, _Traits>& __b)
22631 { return !__a.equal(__b); }
22632
22633
22634 template<typename _CharT, typename _Traits>
22635 class ostreambuf_iterator
22636 : public iterator<output_iterator_tag, void, void, void, void>
22637 {
22638 public:
22639
22640
22641
22642 typedef _CharT char_type;
22643 typedef _Traits traits_type;
22644 typedef basic_streambuf<_CharT, _Traits> streambuf_type;
22645 typedef basic_ostream<_CharT, _Traits> ostream_type;
22646
22647
22648 template<typename _CharT2>
22649 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
22650 ostreambuf_iterator<_CharT2> >::__type
22651 copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
22652 ostreambuf_iterator<_CharT2>);
22653
22654 private:
22655 streambuf_type* _M_sbuf;
22656 bool _M_failed;
22657
22658 public:
22659
22660 ostreambuf_iterator(ostream_type& __s) throw ()
22661 : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
22662
22663
22664 ostreambuf_iterator(streambuf_type* __s) throw ()
22665 : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
22666
22667
22668 ostreambuf_iterator&
22669 operator=(_CharT __c)
22670 {
22671 if (!_M_failed &&
22672 _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
22673 _M_failed = true;
22674 return *this;
22675 }
22676
22677
22678 ostreambuf_iterator&
22679 operator*()
22680 { return *this; }
22681
22682
22683 ostreambuf_iterator&
22684 operator++(int)
22685 { return *this; }
22686
22687
22688 ostreambuf_iterator&
22689 operator++()
22690 { return *this; }
22691
22692
22693 bool
22694 failed() const throw()
22695 { return _M_failed; }
22696
22697 ostreambuf_iterator&
22698 _M_put(const _CharT* __ws, streamsize __len)
22699 {
22700 if (__builtin_expect(!_M_failed, true)
22701 && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
22702 false))
22703 _M_failed = true;
22704 return *this;
22705 }
22706 };
22707
22708
22709 template<typename _CharT>
22710 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
22711 ostreambuf_iterator<_CharT> >::__type
22712 copy(istreambuf_iterator<_CharT> __first,
22713 istreambuf_iterator<_CharT> __last,
22714 ostreambuf_iterator<_CharT> __result)
22715 {
22716 if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
22717 {
22718 bool __ineof;
22719 __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
22720 if (!__ineof)
22721 __result._M_failed = true;
22722 }
22723 return __result;
22724 }
22725
22726 template<typename _CharT>
22727 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
22728 ostreambuf_iterator<_CharT> >::__type
22729 __copy_aux(_CharT* __first, _CharT* __last,
22730 ostreambuf_iterator<_CharT> __result)
22731 {
22732 const streamsize __num = __last - __first;
22733 if (__num > 0)
22734 __result._M_put(__first, __num);
22735 return __result;
22736 }
22737
22738 template<typename _CharT>
22739 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
22740 ostreambuf_iterator<_CharT> >::__type
22741 __copy_aux(const _CharT* __first, const _CharT* __last,
22742 ostreambuf_iterator<_CharT> __result)
22743 {
22744 const streamsize __num = __last - __first;
22745 if (__num > 0)
22746 __result._M_put(__first, __num);
22747 return __result;
22748 }
22749
22750 template<typename _CharT>
22751 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
22752 _CharT*>::__type
22753 __copy_aux(istreambuf_iterator<_CharT> __first,
22754 istreambuf_iterator<_CharT> __last, _CharT* __result)
22755 {
22756 typedef istreambuf_iterator<_CharT> __is_iterator_type;
22757 typedef typename __is_iterator_type::traits_type traits_type;
22758 typedef typename __is_iterator_type::streambuf_type streambuf_type;
22759 typedef typename traits_type::int_type int_type;
22760
22761 if (__first._M_sbuf && !__last._M_sbuf)
22762 {
22763 streambuf_type* __sb = __first._M_sbuf;
22764 int_type __c = __sb->sgetc();
22765 while (!traits_type::eq_int_type(__c, traits_type::eof()))
22766 {
22767 const streamsize __n = __sb->egptr() - __sb->gptr();
22768 if (__n > 1)
22769 {
22770 traits_type::copy(__result, __sb->gptr(), __n);
22771 __sb->gbump(__n);
22772 __result += __n;
22773 __c = __sb->underflow();
22774 }
22775 else
22776 {
22777 *__result++ = traits_type::to_char_type(__c);
22778 __c = __sb->snextc();
22779 }
22780 }
22781 }
22782 return __result;
22783 }
22784
22785 template<typename _CharT>
22786 typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
22787 istreambuf_iterator<_CharT> >::__type
22788 find(istreambuf_iterator<_CharT> __first,
22789 istreambuf_iterator<_CharT> __last, const _CharT& __val)
22790 {
22791 typedef istreambuf_iterator<_CharT> __is_iterator_type;
22792 typedef typename __is_iterator_type::traits_type traits_type;
22793 typedef typename __is_iterator_type::streambuf_type streambuf_type;
22794 typedef typename traits_type::int_type int_type;
22795
22796 if (__first._M_sbuf && !__last._M_sbuf)
22797 {
22798 const int_type __ival = traits_type::to_int_type(__val);
22799 streambuf_type* __sb = __first._M_sbuf;
22800 int_type __c = __sb->sgetc();
22801 while (!traits_type::eq_int_type(__c, traits_type::eof())
22802 && !traits_type::eq_int_type(__c, __ival))
22803 {
22804 streamsize __n = __sb->egptr() - __sb->gptr();
22805 if (__n > 1)
22806 {
22807 const _CharT* __p = traits_type::find(__sb->gptr(),
22808 __n, __val);
22809 if (__p)
22810 __n = __p - __sb->gptr();
22811 __sb->gbump(__n);
22812 __c = __sb->sgetc();
22813 }
22814 else
22815 __c = __sb->snextc();
22816 }
22817
22818 if (!traits_type::eq_int_type(__c, traits_type::eof()))
22819 __first._M_c = __c;
22820 else
22821 __first._M_sbuf = 0;
22822 }
22823 return __first;
22824 }
22825
22826}
22827# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 2 3
22828
22829
22830# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 1 3
22831# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
22832
22833# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
22834
22835
22836# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwctype" 1 3
22837# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwctype" 3
22838
22839# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwctype" 3
22840
22841
22842
22843
22844# 1 "/usr/include/wctype.h" 1 3 4
22845
22846
22847
22848
22849
22850
22851
22852# 1 "/usr/include/gentoo-multilib/amd64/wctype.h" 1 3 4
22853# 26 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
22854# 1 "/usr/include/features.h" 1 3 4
22855# 27 "/usr/include/gentoo-multilib/amd64/wctype.h" 2 3 4
22856# 1 "/usr/include/bits/types.h" 1 3 4
22857# 28 "/usr/include/gentoo-multilib/amd64/wctype.h" 2 3 4
22858
22859
22860
22861
22862
22863
22864
22865# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
22866# 36 "/usr/include/gentoo-multilib/amd64/wctype.h" 2 3 4
22867# 45 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
22868
22869# 63 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
22870
22871
22872
22873typedef unsigned long int wctype_t;
22874
22875
22876
22877
22878
22879
22880
22881# 1 "/usr/include/endian.h" 1 3 4
22882# 75 "/usr/include/gentoo-multilib/amd64/wctype.h" 2 3 4
22883# 85 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
22884enum
22885{
22886 __ISwupper = 0,
22887 __ISwlower = 1,
22888 __ISwalpha = 2,
22889 __ISwdigit = 3,
22890 __ISwxdigit = 4,
22891 __ISwspace = 5,
22892 __ISwprint = 6,
22893 __ISwgraph = 7,
22894 __ISwblank = 8,
22895 __ISwcntrl = 9,
22896 __ISwpunct = 10,
22897 __ISwalnum = 11,
22898
22899 _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))),
22900 _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))),
22901 _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))),
22902 _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))),
22903 _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))),
22904 _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))),
22905 _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))),
22906 _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))),
22907 _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))),
22908 _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))),
22909 _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))),
22910 _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24))))
22911};
22912
22913
22914
22915extern "C" {
22916
22917
22918
22919
22920
22921
22922
22923
22924extern int iswalnum (wint_t __wc) throw ();
22925
22926
22927
22928
22929
22930extern int iswalpha (wint_t __wc) throw ();
22931
22932
22933extern int iswcntrl (wint_t __wc) throw ();
22934
22935
22936
22937extern int iswdigit (wint_t __wc) throw ();
22938
22939
22940
22941extern int iswgraph (wint_t __wc) throw ();
22942
22943
22944
22945
22946extern int iswlower (wint_t __wc) throw ();
22947
22948
22949extern int iswprint (wint_t __wc) throw ();
22950
22951
22952
22953
22954extern int iswpunct (wint_t __wc) throw ();
22955
22956
22957
22958
22959extern int iswspace (wint_t __wc) throw ();
22960
22961
22962
22963
22964extern int iswupper (wint_t __wc) throw ();
22965
22966
22967
22968
22969extern int iswxdigit (wint_t __wc) throw ();
22970
22971
22972
22973
22974
22975extern int iswblank (wint_t __wc) throw ();
22976# 185 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
22977extern wctype_t wctype (__const char *__property) throw ();
22978
22979
22980
22981extern int iswctype (wint_t __wc, wctype_t __desc) throw ();
22982
22983
22984
22985
22986
22987
22988
22989
22990
22991
22992typedef __const __int32_t *wctrans_t;
22993
22994
22995
22996
22997
22998
22999
23000extern wint_t towlower (wint_t __wc) throw ();
23001
23002
23003extern wint_t towupper (wint_t __wc) throw ();
23004
23005
23006}
23007# 227 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
23008extern "C" {
23009
23010
23011
23012
23013extern wctrans_t wctrans (__const char *__property) throw ();
23014
23015
23016extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw ();
23017
23018
23019
23020
23021# 1 "/usr/include/xlocale.h" 1 3 4
23022# 241 "/usr/include/gentoo-multilib/amd64/wctype.h" 2 3 4
23023
23024
23025
23026extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw ();
23027
23028
23029
23030
23031
23032extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw ();
23033
23034
23035extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw ();
23036
23037
23038
23039extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw ();
23040
23041
23042
23043extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw ();
23044
23045
23046
23047
23048extern int iswlower_l (wint_t __wc, __locale_t __locale) throw ();
23049
23050
23051extern int iswprint_l (wint_t __wc, __locale_t __locale) throw ();
23052
23053
23054
23055
23056extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw ();
23057
23058
23059
23060
23061extern int iswspace_l (wint_t __wc, __locale_t __locale) throw ();
23062
23063
23064
23065
23066extern int iswupper_l (wint_t __wc, __locale_t __locale) throw ();
23067
23068
23069
23070
23071extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw ();
23072
23073
23074
23075
23076extern int iswblank_l (wint_t __wc, __locale_t __locale) throw ();
23077
23078
23079
23080extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
23081 throw ();
23082
23083
23084
23085extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
23086 throw ();
23087
23088
23089
23090
23091
23092
23093
23094extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw ();
23095
23096
23097extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw ();
23098
23099
23100
23101extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
23102 throw ();
23103
23104
23105extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
23106 __locale_t __locale) throw ();
23107
23108
23109
23110}
23111# 9 "/usr/include/wctype.h" 2 3 4
23112# 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwctype" 2 3
23113# 80 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwctype" 3
23114namespace std __attribute__ ((__visibility__ ("default"))) {
23115
23116 using ::wint_t;
23117
23118 using ::wctype_t;
23119 using ::wctrans_t;
23120
23121 using ::iswalnum;
23122 using ::iswalpha;
23123
23124 using ::iswblank;
23125
23126 using ::iswcntrl;
23127 using ::iswctype;
23128 using ::iswdigit;
23129 using ::iswgraph;
23130 using ::iswlower;
23131 using ::iswprint;
23132 using ::iswpunct;
23133 using ::iswspace;
23134 using ::iswupper;
23135 using ::iswxdigit;
23136 using ::towctrans;
23137 using ::towlower;
23138 using ::towupper;
23139 using ::wctrans;
23140 using ::wctype;
23141
23142}
23143# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
23144# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_base.h" 1 3
23145# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_base.h" 3
23146namespace std __attribute__ ((__visibility__ ("default"))) {
23147
23148
23149 struct ctype_base
23150 {
23151
23152 typedef const int* __to_type;
23153
23154
23155
23156 typedef unsigned short mask;
23157 static const mask upper = _ISupper;
23158 static const mask lower = _ISlower;
23159 static const mask alpha = _ISalpha;
23160 static const mask digit = _ISdigit;
23161 static const mask xdigit = _ISxdigit;
23162 static const mask space = _ISspace;
23163 static const mask print = _ISprint;
23164 static const mask graph = _ISalpha | _ISdigit | _ISpunct;
23165 static const mask cntrl = _IScntrl;
23166 static const mask punct = _ISpunct;
23167 static const mask alnum = _ISalpha | _ISdigit;
23168 };
23169
23170}
23171# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
23172
23173
23174
23175
23176
23177namespace std __attribute__ ((__visibility__ ("default"))) {
23178# 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23179 template<typename _Tv>
23180 void
23181 __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err,
23182 const __c_locale& __cloc);
23183
23184
23185 template<>
23186 void
23187 __convert_to_v(const char*, float&, ios_base::iostate&,
23188 const __c_locale&);
23189
23190 template<>
23191 void
23192 __convert_to_v(const char*, double&, ios_base::iostate&,
23193 const __c_locale&);
23194
23195 template<>
23196 void
23197 __convert_to_v(const char*, long double&, ios_base::iostate&,
23198 const __c_locale&);
23199
23200
23201
23202 template<typename _CharT, typename _Traits>
23203 struct __pad
23204 {
23205 static void
23206 _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
23207 const _CharT* __olds, const streamsize __newlen,
23208 const streamsize __oldlen, const bool __num);
23209 };
23210
23211
23212
23213
23214
23215
23216 template<typename _CharT>
23217 _CharT*
23218 __add_grouping(_CharT* __s, _CharT __sep,
23219 const char* __gbeg, size_t __gsize,
23220 const _CharT* __first, const _CharT* __last);
23221
23222
23223
23224
23225 template<typename _CharT>
23226 inline
23227 ostreambuf_iterator<_CharT>
23228 __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
23229 {
23230 __s._M_put(__ws, __len);
23231 return __s;
23232 }
23233
23234
23235 template<typename _CharT, typename _OutIter>
23236 inline
23237 _OutIter
23238 __write(_OutIter __s, const _CharT* __ws, int __len)
23239 {
23240 for (int __j = 0; __j < __len; __j++, ++__s)
23241 *__s = __ws[__j];
23242 return __s;
23243 }
23244# 145 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23245 template<typename _CharT>
23246 class __ctype_abstract_base : public locale::facet, public ctype_base
23247 {
23248 public:
23249
23250
23251 typedef _CharT char_type;
23252# 163 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23253 bool
23254 is(mask __m, char_type __c) const
23255 { return this->do_is(__m, __c); }
23256# 180 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23257 const char_type*
23258 is(const char_type *__lo, const char_type *__hi, mask *__vec) const
23259 { return this->do_is(__lo, __hi, __vec); }
23260# 196 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23261 const char_type*
23262 scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
23263 { return this->do_scan_is(__m, __lo, __hi); }
23264# 212 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23265 const char_type*
23266 scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
23267 { return this->do_scan_not(__m, __lo, __hi); }
23268# 226 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23269 char_type
23270 toupper(char_type __c) const
23271 { return this->do_toupper(__c); }
23272# 241 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23273 const char_type*
23274 toupper(char_type *__lo, const char_type* __hi) const
23275 { return this->do_toupper(__lo, __hi); }
23276# 255 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23277 char_type
23278 tolower(char_type __c) const
23279 { return this->do_tolower(__c); }
23280# 270 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23281 const char_type*
23282 tolower(char_type* __lo, const char_type* __hi) const
23283 { return this->do_tolower(__lo, __hi); }
23284# 287 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23285 char_type
23286 widen(char __c) const
23287 { return this->do_widen(__c); }
23288# 306 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23289 const char*
23290 widen(const char* __lo, const char* __hi, char_type* __to) const
23291 { return this->do_widen(__lo, __hi, __to); }
23292# 325 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23293 char
23294 narrow(char_type __c, char __dfault) const
23295 { return this->do_narrow(__c, __dfault); }
23296# 347 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23297 const char_type*
23298 narrow(const char_type* __lo, const char_type* __hi,
23299 char __dfault, char *__to) const
23300 { return this->do_narrow(__lo, __hi, __dfault, __to); }
23301
23302 protected:
23303 explicit
23304 __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
23305
23306 virtual
23307 ~__ctype_abstract_base() { }
23308# 372 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23309 virtual bool
23310 do_is(mask __m, char_type __c) const = 0;
23311# 391 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23312 virtual const char_type*
23313 do_is(const char_type* __lo, const char_type* __hi,
23314 mask* __vec) const = 0;
23315# 410 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23316 virtual const char_type*
23317 do_scan_is(mask __m, const char_type* __lo,
23318 const char_type* __hi) const = 0;
23319# 429 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23320 virtual const char_type*
23321 do_scan_not(mask __m, const char_type* __lo,
23322 const char_type* __hi) const = 0;
23323# 447 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23324 virtual char_type
23325 do_toupper(char_type) const = 0;
23326# 464 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23327 virtual const char_type*
23328 do_toupper(char_type* __lo, const char_type* __hi) const = 0;
23329# 480 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23330 virtual char_type
23331 do_tolower(char_type) const = 0;
23332# 497 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23333 virtual const char_type*
23334 do_tolower(char_type* __lo, const char_type* __hi) const = 0;
23335# 516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23336 virtual char_type
23337 do_widen(char) const = 0;
23338# 537 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23339 virtual const char*
23340 do_widen(const char* __lo, const char* __hi,
23341 char_type* __dest) const = 0;
23342# 559 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23343 virtual char
23344 do_narrow(char_type, char __dfault) const = 0;
23345# 583 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23346 virtual const char_type*
23347 do_narrow(const char_type* __lo, const char_type* __hi,
23348 char __dfault, char* __dest) const = 0;
23349 };
23350# 606 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23351 template<typename _CharT>
23352 class ctype : public __ctype_abstract_base<_CharT>
23353 {
23354 public:
23355
23356 typedef _CharT char_type;
23357 typedef typename __ctype_abstract_base<_CharT>::mask mask;
23358
23359
23360 static locale::id id;
23361
23362 explicit
23363 ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
23364
23365 protected:
23366 virtual
23367 ~ctype();
23368
23369 virtual bool
23370 do_is(mask __m, char_type __c) const;
23371
23372 virtual const char_type*
23373 do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
23374
23375 virtual const char_type*
23376 do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
23377
23378 virtual const char_type*
23379 do_scan_not(mask __m, const char_type* __lo,
23380 const char_type* __hi) const;
23381
23382 virtual char_type
23383 do_toupper(char_type __c) const;
23384
23385 virtual const char_type*
23386 do_toupper(char_type* __lo, const char_type* __hi) const;
23387
23388 virtual char_type
23389 do_tolower(char_type __c) const;
23390
23391 virtual const char_type*
23392 do_tolower(char_type* __lo, const char_type* __hi) const;
23393
23394 virtual char_type
23395 do_widen(char __c) const;
23396
23397 virtual const char*
23398 do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
23399
23400 virtual char
23401 do_narrow(char_type, char __dfault) const;
23402
23403 virtual const char_type*
23404 do_narrow(const char_type* __lo, const char_type* __hi,
23405 char __dfault, char* __dest) const;
23406 };
23407
23408 template<typename _CharT>
23409 locale::id ctype<_CharT>::id;
23410# 675 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23411 template<>
23412 class ctype<char> : public locale::facet, public ctype_base
23413 {
23414 public:
23415
23416
23417 typedef char char_type;
23418
23419 protected:
23420
23421 __c_locale _M_c_locale_ctype;
23422 bool _M_del;
23423 __to_type _M_toupper;
23424 __to_type _M_tolower;
23425 const mask* _M_table;
23426 mutable char _M_widen_ok;
23427 mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
23428 mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
23429 mutable char _M_narrow_ok;
23430
23431
23432 public:
23433
23434 static locale::id id;
23435
23436 static const size_t table_size = 1 + static_cast<unsigned char>(-1);
23437# 712 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23438 explicit
23439 ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
23440# 725 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23441 explicit
23442 ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
23443 size_t __refs = 0);
23444# 738 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23445 inline bool
23446 is(mask __m, char __c) const;
23447# 753 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23448 inline const char*
23449 is(const char* __lo, const char* __hi, mask* __vec) const;
23450# 767 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23451 inline const char*
23452 scan_is(mask __m, const char* __lo, const char* __hi) const;
23453# 781 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23454 inline const char*
23455 scan_not(mask __m, const char* __lo, const char* __hi) const;
23456# 796 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23457 char_type
23458 toupper(char_type __c) const
23459 { return this->do_toupper(__c); }
23460# 813 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23461 const char_type*
23462 toupper(char_type *__lo, const char_type* __hi) const
23463 { return this->do_toupper(__lo, __hi); }
23464# 829 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23465 char_type
23466 tolower(char_type __c) const
23467 { return this->do_tolower(__c); }
23468# 846 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23469 const char_type*
23470 tolower(char_type* __lo, const char_type* __hi) const
23471 { return this->do_tolower(__lo, __hi); }
23472# 866 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23473 char_type
23474 widen(char __c) const
23475 {
23476 if (_M_widen_ok)
23477 return _M_widen[static_cast<unsigned char>(__c)];
23478 this->_M_widen_init();
23479 return this->do_widen(__c);
23480 }
23481# 893 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23482 const char*
23483 widen(const char* __lo, const char* __hi, char_type* __to) const
23484 {
23485 if (_M_widen_ok == 1)
23486 {
23487 memcpy(__to, __lo, __hi - __lo);
23488 return __hi;
23489 }
23490 if (!_M_widen_ok)
23491 _M_widen_init();
23492 return this->do_widen(__lo, __hi, __to);
23493 }
23494# 924 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23495 char
23496 narrow(char_type __c, char __dfault) const
23497 {
23498 if (_M_narrow[static_cast<unsigned char>(__c)])
23499 return _M_narrow[static_cast<unsigned char>(__c)];
23500 const char __t = do_narrow(__c, __dfault);
23501 if (__t != __dfault)
23502 _M_narrow[static_cast<unsigned char>(__c)] = __t;
23503 return __t;
23504 }
23505# 957 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23506 const char_type*
23507 narrow(const char_type* __lo, const char_type* __hi,
23508 char __dfault, char *__to) const
23509 {
23510 if (__builtin_expect(_M_narrow_ok == 1, true))
23511 {
23512 memcpy(__to, __lo, __hi - __lo);
23513 return __hi;
23514 }
23515 if (!_M_narrow_ok)
23516 _M_narrow_init();
23517 return this->do_narrow(__lo, __hi, __dfault, __to);
23518 }
23519
23520 protected:
23521
23522
23523 const mask*
23524 table() const throw()
23525 { return _M_table; }
23526
23527
23528 static const mask*
23529 classic_table() throw();
23530
23531
23532
23533
23534
23535
23536
23537 virtual
23538 ~ctype();
23539# 1004 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23540 virtual char_type
23541 do_toupper(char_type) const;
23542# 1021 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23543 virtual const char_type*
23544 do_toupper(char_type* __lo, const char_type* __hi) const;
23545# 1037 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23546 virtual char_type
23547 do_tolower(char_type) const;
23548# 1054 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23549 virtual const char_type*
23550 do_tolower(char_type* __lo, const char_type* __hi) const;
23551# 1074 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23552 virtual char_type
23553 do_widen(char __c) const
23554 { return __c; }
23555# 1097 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23556 virtual const char*
23557 do_widen(const char* __lo, const char* __hi, char_type* __dest) const
23558 {
23559 memcpy(__dest, __lo, __hi - __lo);
23560 return __hi;
23561 }
23562# 1123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23563 virtual char
23564 do_narrow(char_type __c, char) const
23565 { return __c; }
23566# 1149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23567 virtual const char_type*
23568 do_narrow(const char_type* __lo, const char_type* __hi,
23569 char, char* __dest) const
23570 {
23571 memcpy(__dest, __lo, __hi - __lo);
23572 return __hi;
23573 }
23574
23575 private:
23576
23577 void _M_widen_init() const
23578 {
23579 char __tmp[sizeof(_M_widen)];
23580 for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
23581 __tmp[__i] = __i;
23582 do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
23583
23584 _M_widen_ok = 1;
23585
23586 if (memcmp(__tmp, _M_widen, sizeof(_M_widen)))
23587 _M_widen_ok = 2;
23588 }
23589
23590
23591
23592
23593 void _M_narrow_init() const
23594 {
23595 char __tmp[sizeof(_M_narrow)];
23596 for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
23597 __tmp[__i] = __i;
23598 do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
23599
23600 _M_narrow_ok = 1;
23601 if (memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
23602 _M_narrow_ok = 2;
23603 else
23604 {
23605
23606
23607 char __c;
23608 do_narrow(__tmp, __tmp + 1, 1, &__c);
23609 if (__c == 1)
23610 _M_narrow_ok = 2;
23611 }
23612 }
23613 };
23614
23615 template<>
23616 const ctype<char>&
23617 use_facet<ctype<char> >(const locale& __loc);
23618# 1213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23619 template<>
23620 class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>
23621 {
23622 public:
23623
23624
23625 typedef wchar_t char_type;
23626 typedef wctype_t __wmask_type;
23627
23628 protected:
23629 __c_locale _M_c_locale_ctype;
23630
23631
23632 bool _M_narrow_ok;
23633 char _M_narrow[128];
23634 wint_t _M_widen[1 + static_cast<unsigned char>(-1)];
23635
23636
23637 mask _M_bit[16];
23638 __wmask_type _M_wmask[16];
23639
23640 public:
23641
23642
23643 static locale::id id;
23644# 1246 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23645 explicit
23646 ctype(size_t __refs = 0);
23647# 1257 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23648 explicit
23649 ctype(__c_locale __cloc, size_t __refs = 0);
23650
23651 protected:
23652 __wmask_type
23653 _M_convert_to_wmask(const mask __m) const;
23654
23655
23656 virtual
23657 ~ctype();
23658# 1281 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23659 virtual bool
23660 do_is(mask __m, char_type __c) const;
23661# 1300 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23662 virtual const char_type*
23663 do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
23664# 1318 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23665 virtual const char_type*
23666 do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
23667# 1336 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23668 virtual const char_type*
23669 do_scan_not(mask __m, const char_type* __lo,
23670 const char_type* __hi) const;
23671# 1353 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23672 virtual char_type
23673 do_toupper(char_type) const;
23674# 1370 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23675 virtual const char_type*
23676 do_toupper(char_type* __lo, const char_type* __hi) const;
23677# 1386 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23678 virtual char_type
23679 do_tolower(char_type) const;
23680# 1403 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23681 virtual const char_type*
23682 do_tolower(char_type* __lo, const char_type* __hi) const;
23683# 1423 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23684 virtual char_type
23685 do_widen(char) const;
23686# 1445 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23687 virtual const char*
23688 do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
23689# 1468 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23690 virtual char
23691 do_narrow(char_type, char __dfault) const;
23692# 1494 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
23693 virtual const char_type*
23694 do_narrow(const char_type* __lo, const char_type* __hi,
23695 char __dfault, char* __dest) const;
23696
23697
23698 void
23699 _M_initialize_ctype();
23700 };
23701
23702 template<>
23703 const ctype<wchar_t>&
23704 use_facet<ctype<wchar_t> >(const locale& __loc);
23705
23706
23707
23708 template<typename _CharT>
23709 class ctype_byname : public ctype<_CharT>
23710 {
23711 public:
23712 typedef _CharT char_type;
23713
23714 explicit
23715 ctype_byname(const char* __s, size_t __refs = 0);
23716
23717 protected:
23718 virtual
23719 ~ctype_byname() { };
23720 };
23721
23722
23723 template<>
23724 ctype_byname<char>::ctype_byname(const char*, size_t refs);
23725
23726 template<>
23727 ctype_byname<wchar_t>::ctype_byname(const char*, size_t refs);
23728
23729}
23730
23731
23732# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_inline.h" 1 3
23733# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_inline.h" 3
23734namespace std __attribute__ ((__visibility__ ("default"))) {
23735
23736 bool
23737 ctype<char>::
23738 is(mask __m, char __c) const
23739 { return _M_table[static_cast<unsigned char>(__c)] & __m; }
23740
23741 const char*
23742 ctype<char>::
23743 is(const char* __low, const char* __high, mask* __vec) const
23744 {
23745 while (__low < __high)
23746 *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
23747 return __high;
23748 }
23749
23750 const char*
23751 ctype<char>::
23752 scan_is(mask __m, const char* __low, const char* __high) const
23753 {
23754 while (__low < __high
23755 && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
23756 ++__low;
23757 return __low;
23758 }
23759
23760 const char*
23761 ctype<char>::
23762 scan_not(mask __m, const char* __low, const char* __high) const
23763 {
23764 while (__low < __high
23765 && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
23766 ++__low;
23767 return __low;
23768 }
23769
23770}
23771# 1534 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
23772
23773
23774# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 1 3
23775# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23776
23777# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23778
23779namespace std __attribute__ ((__visibility__ ("default"))) {
23780
23781
23782 class codecvt_base
23783 {
23784 public:
23785 enum result
23786 {
23787 ok,
23788 partial,
23789 error,
23790 noconv
23791 };
23792 };
23793# 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23794 template<typename _InternT, typename _ExternT, typename _StateT>
23795 class __codecvt_abstract_base
23796 : public locale::facet, public codecvt_base
23797 {
23798 public:
23799
23800 typedef codecvt_base::result result;
23801 typedef _InternT intern_type;
23802 typedef _ExternT extern_type;
23803 typedef _StateT state_type;
23804# 119 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23805 result
23806 out(state_type& __state, const intern_type* __from,
23807 const intern_type* __from_end, const intern_type*& __from_next,
23808 extern_type* __to, extern_type* __to_end,
23809 extern_type*& __to_next) const
23810 {
23811 return this->do_out(__state, __from, __from_end, __from_next,
23812 __to, __to_end, __to_next);
23813 }
23814# 158 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23815 result
23816 unshift(state_type& __state, extern_type* __to, extern_type* __to_end,
23817 extern_type*& __to_next) const
23818 { return this->do_unshift(__state, __to,__to_end,__to_next); }
23819# 199 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23820 result
23821 in(state_type& __state, const extern_type* __from,
23822 const extern_type* __from_end, const extern_type*& __from_next,
23823 intern_type* __to, intern_type* __to_end,
23824 intern_type*& __to_next) const
23825 {
23826 return this->do_in(__state, __from, __from_end, __from_next,
23827 __to, __to_end, __to_next);
23828 }
23829
23830 int
23831 encoding() const throw()
23832 { return this->do_encoding(); }
23833
23834 bool
23835 always_noconv() const throw()
23836 { return this->do_always_noconv(); }
23837
23838 int
23839 length(state_type& __state, const extern_type* __from,
23840 const extern_type* __end, size_t __max) const
23841 { return this->do_length(__state, __from, __end, __max); }
23842
23843 int
23844 max_length() const throw()
23845 { return this->do_max_length(); }
23846
23847 protected:
23848 explicit
23849 __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { }
23850
23851 virtual
23852 ~__codecvt_abstract_base() { }
23853# 240 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
23854 virtual result
23855 do_out(state_type& __state, const intern_type* __from,
23856 const intern_type* __from_end, const intern_type*& __from_next,
23857 extern_type* __to, extern_type* __to_end,
23858 extern_type*& __to_next) const = 0;
23859
23860 virtual result
23861 do_unshift(state_type& __state, extern_type* __to,
23862 extern_type* __to_end, extern_type*& __to_next) const = 0;
23863
23864 virtual result
23865 do_in(state_type& __state, const extern_type* __from,
23866 const extern_type* __from_end, const extern_type*& __from_next,
23867 intern_type* __to, intern_type* __to_end,
23868 intern_type*& __to_next) const = 0;
23869
23870 virtual int
23871 do_encoding() const throw() = 0;
23872
23873 virtual bool
23874 do_always_noconv() const throw() = 0;
23875
23876 virtual int
23877 do_length(state_type&, const extern_type* __from,
23878 const extern_type* __end, size_t __max) const = 0;
23879
23880 virtual int
23881 do_max_length() const throw() = 0;
23882 };
23883
23884
23885
23886 template<typename _InternT, typename _ExternT, typename _StateT>
23887 class codecvt
23888 : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>
23889 {
23890 public:
23891
23892 typedef codecvt_base::result result;
23893 typedef _InternT intern_type;
23894 typedef _ExternT extern_type;
23895 typedef _StateT state_type;
23896
23897 protected:
23898 __c_locale _M_c_locale_codecvt;
23899
23900 public:
23901 static locale::id id;
23902
23903 explicit
23904 codecvt(size_t __refs = 0)
23905 : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs) { }
23906
23907 explicit
23908 codecvt(__c_locale __cloc, size_t __refs = 0);
23909
23910 protected:
23911 virtual
23912 ~codecvt() { }
23913
23914 virtual result
23915 do_out(state_type& __state, const intern_type* __from,
23916 const intern_type* __from_end, const intern_type*& __from_next,
23917 extern_type* __to, extern_type* __to_end,
23918 extern_type*& __to_next) const;
23919
23920 virtual result
23921 do_unshift(state_type& __state, extern_type* __to,
23922 extern_type* __to_end, extern_type*& __to_next) const;
23923
23924 virtual result
23925 do_in(state_type& __state, const extern_type* __from,
23926 const extern_type* __from_end, const extern_type*& __from_next,
23927 intern_type* __to, intern_type* __to_end,
23928 intern_type*& __to_next) const;
23929
23930 virtual int
23931 do_encoding() const throw();
23932
23933 virtual bool
23934 do_always_noconv() const throw();
23935
23936 virtual int
23937 do_length(state_type&, const extern_type* __from,
23938 const extern_type* __end, size_t __max) const;
23939
23940 virtual int
23941 do_max_length() const throw();
23942 };
23943
23944 template<typename _InternT, typename _ExternT, typename _StateT>
23945 locale::id codecvt<_InternT, _ExternT, _StateT>::id;
23946
23947
23948 template<>
23949 class codecvt<char, char, mbstate_t>
23950 : public __codecvt_abstract_base<char, char, mbstate_t>
23951 {
23952 public:
23953
23954 typedef char intern_type;
23955 typedef char extern_type;
23956 typedef mbstate_t state_type;
23957
23958 protected:
23959 __c_locale _M_c_locale_codecvt;
23960
23961 public:
23962 static locale::id id;
23963
23964 explicit
23965 codecvt(size_t __refs = 0);
23966
23967 explicit
23968 codecvt(__c_locale __cloc, size_t __refs = 0);
23969
23970 protected:
23971 virtual
23972 ~codecvt();
23973
23974 virtual result
23975 do_out(state_type& __state, const intern_type* __from,
23976 const intern_type* __from_end, const intern_type*& __from_next,
23977 extern_type* __to, extern_type* __to_end,
23978 extern_type*& __to_next) const;
23979
23980 virtual result
23981 do_unshift(state_type& __state, extern_type* __to,
23982 extern_type* __to_end, extern_type*& __to_next) const;
23983
23984 virtual result
23985 do_in(state_type& __state, const extern_type* __from,
23986 const extern_type* __from_end, const extern_type*& __from_next,
23987 intern_type* __to, intern_type* __to_end,
23988 intern_type*& __to_next) const;
23989
23990 virtual int
23991 do_encoding() const throw();
23992
23993 virtual bool
23994 do_always_noconv() const throw();
23995
23996 virtual int
23997 do_length(state_type&, const extern_type* __from,
23998 const extern_type* __end, size_t __max) const;
23999
24000 virtual int
24001 do_max_length() const throw();
24002 };
24003
24004
24005
24006 template<>
24007 class codecvt<wchar_t, char, mbstate_t>
24008 : public __codecvt_abstract_base<wchar_t, char, mbstate_t>
24009 {
24010 public:
24011
24012 typedef wchar_t intern_type;
24013 typedef char extern_type;
24014 typedef mbstate_t state_type;
24015
24016 protected:
24017 __c_locale _M_c_locale_codecvt;
24018
24019 public:
24020 static locale::id id;
24021
24022 explicit
24023 codecvt(size_t __refs = 0);
24024
24025 explicit
24026 codecvt(__c_locale __cloc, size_t __refs = 0);
24027
24028 protected:
24029 virtual
24030 ~codecvt();
24031
24032 virtual result
24033 do_out(state_type& __state, const intern_type* __from,
24034 const intern_type* __from_end, const intern_type*& __from_next,
24035 extern_type* __to, extern_type* __to_end,
24036 extern_type*& __to_next) const;
24037
24038 virtual result
24039 do_unshift(state_type& __state,
24040 extern_type* __to, extern_type* __to_end,
24041 extern_type*& __to_next) const;
24042
24043 virtual result
24044 do_in(state_type& __state,
24045 const extern_type* __from, const extern_type* __from_end,
24046 const extern_type*& __from_next,
24047 intern_type* __to, intern_type* __to_end,
24048 intern_type*& __to_next) const;
24049
24050 virtual
24051 int do_encoding() const throw();
24052
24053 virtual
24054 bool do_always_noconv() const throw();
24055
24056 virtual
24057 int do_length(state_type&, const extern_type* __from,
24058 const extern_type* __end, size_t __max) const;
24059
24060 virtual int
24061 do_max_length() const throw();
24062 };
24063
24064
24065
24066 template<typename _InternT, typename _ExternT, typename _StateT>
24067 class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>
24068 {
24069 public:
24070 explicit
24071 codecvt_byname(const char* __s, size_t __refs = 0)
24072 : codecvt<_InternT, _ExternT, _StateT>(__refs)
24073 {
24074 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
24075 {
24076 this->_S_destroy_c_locale(this->_M_c_locale_codecvt);
24077 this->_S_create_c_locale(this->_M_c_locale_codecvt, __s);
24078 }
24079 }
24080
24081 protected:
24082 virtual
24083 ~codecvt_byname() { }
24084 };
24085
24086}
24087# 1537 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
24088
24089namespace std __attribute__ ((__visibility__ ("default"))) {
24090
24091
24092 class __num_base
24093 {
24094 public:
24095
24096
24097 enum
24098 {
24099 _S_ominus,
24100 _S_oplus,
24101 _S_ox,
24102 _S_oX,
24103 _S_odigits,
24104 _S_odigits_end = _S_odigits + 16,
24105 _S_oudigits = _S_odigits_end,
24106 _S_oudigits_end = _S_oudigits + 16,
24107 _S_oe = _S_odigits + 14,
24108 _S_oE = _S_oudigits + 14,
24109 _S_oend = _S_oudigits_end
24110 };
24111
24112
24113
24114
24115
24116
24117 static const char* _S_atoms_out;
24118
24119
24120
24121 static const char* _S_atoms_in;
24122
24123 enum
24124 {
24125 _S_iminus,
24126 _S_iplus,
24127 _S_ix,
24128 _S_iX,
24129 _S_izero,
24130 _S_ie = _S_izero + 14,
24131 _S_iE = _S_izero + 20,
24132 _S_iend = 26
24133 };
24134
24135
24136
24137 static void
24138 _S_format_float(const ios_base& __io, char* __fptr, char __mod);
24139 };
24140
24141 template<typename _CharT>
24142 struct __numpunct_cache : public locale::facet
24143 {
24144 const char* _M_grouping;
24145 size_t _M_grouping_size;
24146 bool _M_use_grouping;
24147 const _CharT* _M_truename;
24148 size_t _M_truename_size;
24149 const _CharT* _M_falsename;
24150 size_t _M_falsename_size;
24151 _CharT _M_decimal_point;
24152 _CharT _M_thousands_sep;
24153
24154
24155
24156
24157
24158 _CharT _M_atoms_out[__num_base::_S_oend];
24159
24160
24161
24162
24163
24164 _CharT _M_atoms_in[__num_base::_S_iend];
24165
24166 bool _M_allocated;
24167
24168 __numpunct_cache(size_t __refs = 0) : facet(__refs),
24169 _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false),
24170 _M_truename(__null), _M_truename_size(0), _M_falsename(__null),
24171 _M_falsename_size(0), _M_decimal_point(_CharT()),
24172 _M_thousands_sep(_CharT()), _M_allocated(false)
24173 { }
24174
24175 ~__numpunct_cache();
24176
24177 void
24178 _M_cache(const locale& __loc);
24179
24180 private:
24181 __numpunct_cache&
24182 operator=(const __numpunct_cache&);
24183
24184 explicit
24185 __numpunct_cache(const __numpunct_cache&);
24186 };
24187
24188 template<typename _CharT>
24189 __numpunct_cache<_CharT>::~__numpunct_cache()
24190 {
24191 if (_M_allocated)
24192 {
24193 delete [] _M_grouping;
24194 delete [] _M_truename;
24195 delete [] _M_falsename;
24196 }
24197 }
24198# 1661 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24199 template<typename _CharT>
24200 class numpunct : public locale::facet
24201 {
24202 public:
24203
24204
24205
24206 typedef _CharT char_type;
24207 typedef basic_string<_CharT> string_type;
24208
24209 typedef __numpunct_cache<_CharT> __cache_type;
24210
24211 protected:
24212 __cache_type* _M_data;
24213
24214 public:
24215
24216 static locale::id id;
24217
24218
24219
24220
24221
24222
24223 explicit
24224 numpunct(size_t __refs = 0) : facet(__refs), _M_data(__null)
24225 { _M_initialize_numpunct(); }
24226# 1698 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24227 explicit
24228 numpunct(__cache_type* __cache, size_t __refs = 0)
24229 : facet(__refs), _M_data(__cache)
24230 { _M_initialize_numpunct(); }
24231# 1712 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24232 explicit
24233 numpunct(__c_locale __cloc, size_t __refs = 0)
24234 : facet(__refs), _M_data(__null)
24235 { _M_initialize_numpunct(__cloc); }
24236# 1726 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24237 char_type
24238 decimal_point() const
24239 { return this->do_decimal_point(); }
24240# 1739 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24241 char_type
24242 thousands_sep() const
24243 { return this->do_thousands_sep(); }
24244# 1770 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24245 string
24246 grouping() const
24247 { return this->do_grouping(); }
24248# 1783 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24249 string_type
24250 truename() const
24251 { return this->do_truename(); }
24252# 1796 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24253 string_type
24254 falsename() const
24255 { return this->do_falsename(); }
24256
24257 protected:
24258
24259 virtual
24260 ~numpunct();
24261# 1813 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24262 virtual char_type
24263 do_decimal_point() const
24264 { return _M_data->_M_decimal_point; }
24265# 1825 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24266 virtual char_type
24267 do_thousands_sep() const
24268 { return _M_data->_M_thousands_sep; }
24269# 1838 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24270 virtual string
24271 do_grouping() const
24272 { return _M_data->_M_grouping; }
24273# 1851 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24274 virtual string_type
24275 do_truename() const
24276 { return _M_data->_M_truename; }
24277# 1864 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24278 virtual string_type
24279 do_falsename() const
24280 { return _M_data->_M_falsename; }
24281
24282
24283 void
24284 _M_initialize_numpunct(__c_locale __cloc = __null);
24285 };
24286
24287 template<typename _CharT>
24288 locale::id numpunct<_CharT>::id;
24289
24290 template<>
24291 numpunct<char>::~numpunct();
24292
24293 template<>
24294 void
24295 numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
24296
24297
24298 template<>
24299 numpunct<wchar_t>::~numpunct();
24300
24301 template<>
24302 void
24303 numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);
24304
24305
24306
24307 template<typename _CharT>
24308 class numpunct_byname : public numpunct<_CharT>
24309 {
24310 public:
24311 typedef _CharT char_type;
24312 typedef basic_string<_CharT> string_type;
24313
24314 explicit
24315 numpunct_byname(const char* __s, size_t __refs = 0)
24316 : numpunct<_CharT>(__refs)
24317 {
24318 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
24319 {
24320 __c_locale __tmp;
24321 this->_S_create_c_locale(__tmp, __s);
24322 this->_M_initialize_numpunct(__tmp);
24323 this->_S_destroy_c_locale(__tmp);
24324 }
24325 }
24326
24327 protected:
24328 virtual
24329 ~numpunct_byname() { }
24330 };
24331
24332
24333# 1931 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24334 template<typename _CharT, typename _InIter>
24335 class num_get : public locale::facet
24336 {
24337 public:
24338
24339
24340
24341 typedef _CharT char_type;
24342 typedef _InIter iter_type;
24343
24344
24345
24346 static locale::id id;
24347# 1952 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24348 explicit
24349 num_get(size_t __refs = 0) : facet(__refs) { }
24350# 1978 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24351 iter_type
24352 get(iter_type __in, iter_type __end, ios_base& __io,
24353 ios_base::iostate& __err, bool& __v) const
24354 { return this->do_get(__in, __end, __io, __err, __v); }
24355# 2014 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24356 iter_type
24357 get(iter_type __in, iter_type __end, ios_base& __io,
24358 ios_base::iostate& __err, long& __v) const
24359 { return this->do_get(__in, __end, __io, __err, __v); }
24360
24361 iter_type
24362 get(iter_type __in, iter_type __end, ios_base& __io,
24363 ios_base::iostate& __err, unsigned short& __v) const
24364 { return this->do_get(__in, __end, __io, __err, __v); }
24365
24366 iter_type
24367 get(iter_type __in, iter_type __end, ios_base& __io,
24368 ios_base::iostate& __err, unsigned int& __v) const
24369 { return this->do_get(__in, __end, __io, __err, __v); }
24370
24371 iter_type
24372 get(iter_type __in, iter_type __end, ios_base& __io,
24373 ios_base::iostate& __err, unsigned long& __v) const
24374 { return this->do_get(__in, __end, __io, __err, __v); }
24375
24376
24377 iter_type
24378 get(iter_type __in, iter_type __end, ios_base& __io,
24379 ios_base::iostate& __err, long long& __v) const
24380 { return this->do_get(__in, __end, __io, __err, __v); }
24381
24382 iter_type
24383 get(iter_type __in, iter_type __end, ios_base& __io,
24384 ios_base::iostate& __err, unsigned long long& __v) const
24385 { return this->do_get(__in, __end, __io, __err, __v); }
24386# 2073 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24387 iter_type
24388 get(iter_type __in, iter_type __end, ios_base& __io,
24389 ios_base::iostate& __err, float& __v) const
24390 { return this->do_get(__in, __end, __io, __err, __v); }
24391
24392 iter_type
24393 get(iter_type __in, iter_type __end, ios_base& __io,
24394 ios_base::iostate& __err, double& __v) const
24395 { return this->do_get(__in, __end, __io, __err, __v); }
24396
24397 iter_type
24398 get(iter_type __in, iter_type __end, ios_base& __io,
24399 ios_base::iostate& __err, long double& __v) const
24400 { return this->do_get(__in, __end, __io, __err, __v); }
24401# 2115 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24402 iter_type
24403 get(iter_type __in, iter_type __end, ios_base& __io,
24404 ios_base::iostate& __err, void*& __v) const
24405 { return this->do_get(__in, __end, __io, __err, __v); }
24406
24407 protected:
24408
24409 virtual ~num_get() { }
24410
24411 iter_type
24412 _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
24413 string& __xtrc) const;
24414
24415 template<typename _ValueT>
24416 iter_type
24417 _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
24418 _ValueT& __v) const;
24419
24420 template<typename _CharT2>
24421 typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
24422 _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
24423 {
24424 int __ret = -1;
24425 if (__len <= 10)
24426 {
24427 if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
24428 __ret = __c - _CharT2('0');
24429 }
24430 else
24431 {
24432 if (__c >= _CharT2('0') && __c <= _CharT2('9'))
24433 __ret = __c - _CharT2('0');
24434 else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
24435 __ret = 10 + (__c - _CharT2('a'));
24436 else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
24437 __ret = 10 + (__c - _CharT2('A'));
24438 }
24439 return __ret;
24440 }
24441
24442 template<typename _CharT2>
24443 typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
24444 int>::__type
24445 _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
24446 {
24447 int __ret = -1;
24448 const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
24449 if (__q)
24450 {
24451 __ret = __q - __zero;
24452 if (__ret > 15)
24453 __ret -= 6;
24454 }
24455 return __ret;
24456 }
24457# 2186 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24458 virtual iter_type
24459 do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
24460
24461
24462 virtual iter_type
24463 do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const;
24464
24465 virtual iter_type
24466 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24467 unsigned short&) const;
24468
24469 virtual iter_type
24470 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24471 unsigned int&) const;
24472
24473 virtual iter_type
24474 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24475 unsigned long&) const;
24476
24477
24478 virtual iter_type
24479 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24480 long long&) const;
24481
24482 virtual iter_type
24483 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24484 unsigned long long&) const;
24485
24486
24487 virtual iter_type
24488 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24489 float&) const;
24490
24491 virtual iter_type
24492 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24493 double&) const;
24494
24495
24496
24497
24498
24499
24500
24501 virtual iter_type
24502 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24503 long double&) const;
24504
24505
24506 virtual iter_type
24507 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
24508 void*&) const;
24509# 2245 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24510 };
24511
24512 template<typename _CharT, typename _InIter>
24513 locale::id num_get<_CharT, _InIter>::id;
24514# 2262 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24515 template<typename _CharT, typename _OutIter>
24516 class num_put : public locale::facet
24517 {
24518 public:
24519
24520
24521
24522 typedef _CharT char_type;
24523 typedef _OutIter iter_type;
24524
24525
24526
24527 static locale::id id;
24528# 2283 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24529 explicit
24530 num_put(size_t __refs = 0) : facet(__refs) { }
24531# 2301 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24532 iter_type
24533 put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const
24534 { return this->do_put(__s, __f, __fill, __v); }
24535# 2343 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24536 iter_type
24537 put(iter_type __s, ios_base& __f, char_type __fill, long __v) const
24538 { return this->do_put(__s, __f, __fill, __v); }
24539
24540 iter_type
24541 put(iter_type __s, ios_base& __f, char_type __fill,
24542 unsigned long __v) const
24543 { return this->do_put(__s, __f, __fill, __v); }
24544
24545
24546 iter_type
24547 put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const
24548 { return this->do_put(__s, __f, __fill, __v); }
24549
24550 iter_type
24551 put(iter_type __s, ios_base& __f, char_type __fill,
24552 unsigned long long __v) const
24553 { return this->do_put(__s, __f, __fill, __v); }
24554# 2406 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24555 iter_type
24556 put(iter_type __s, ios_base& __f, char_type __fill, double __v) const
24557 { return this->do_put(__s, __f, __fill, __v); }
24558
24559 iter_type
24560 put(iter_type __s, ios_base& __f, char_type __fill,
24561 long double __v) const
24562 { return this->do_put(__s, __f, __fill, __v); }
24563# 2431 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24564 iter_type
24565 put(iter_type __s, ios_base& __f, char_type __fill,
24566 const void* __v) const
24567 { return this->do_put(__s, __f, __fill, __v); }
24568
24569 protected:
24570 template<typename _ValueT>
24571 iter_type
24572 _M_insert_float(iter_type, ios_base& __io, char_type __fill,
24573 char __mod, _ValueT __v) const;
24574
24575 void
24576 _M_group_float(const char* __grouping, size_t __grouping_size,
24577 char_type __sep, const char_type* __p, char_type* __new,
24578 char_type* __cs, int& __len) const;
24579
24580 template<typename _ValueT>
24581 iter_type
24582 _M_insert_int(iter_type, ios_base& __io, char_type __fill,
24583 _ValueT __v) const;
24584
24585 void
24586 _M_group_int(const char* __grouping, size_t __grouping_size,
24587 char_type __sep, ios_base& __io, char_type* __new,
24588 char_type* __cs, int& __len) const;
24589
24590 void
24591 _M_pad(char_type __fill, streamsize __w, ios_base& __io,
24592 char_type* __new, const char_type* __cs, int& __len) const;
24593
24594
24595 virtual
24596 ~num_put() { };
24597# 2479 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24598 virtual iter_type
24599 do_put(iter_type, ios_base&, char_type __fill, bool __v) const;
24600
24601 virtual iter_type
24602 do_put(iter_type, ios_base&, char_type __fill, long __v) const;
24603
24604 virtual iter_type
24605 do_put(iter_type, ios_base&, char_type __fill, unsigned long) const;
24606
24607
24608 virtual iter_type
24609 do_put(iter_type, ios_base&, char_type __fill, long long __v) const;
24610
24611 virtual iter_type
24612 do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const;
24613
24614
24615 virtual iter_type
24616 do_put(iter_type, ios_base&, char_type __fill, double __v) const;
24617
24618
24619
24620
24621
24622
24623 virtual iter_type
24624 do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
24625
24626
24627 virtual iter_type
24628 do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
24629
24630
24631
24632
24633
24634
24635
24636 };
24637
24638 template <typename _CharT, typename _OutIter>
24639 locale::id num_put<_CharT, _OutIter>::id;
24640
24641
24642# 2536 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24643 template<typename _CharT>
24644 class collate : public locale::facet
24645 {
24646 public:
24647
24648
24649
24650 typedef _CharT char_type;
24651 typedef basic_string<_CharT> string_type;
24652
24653
24654 protected:
24655
24656
24657 __c_locale _M_c_locale_collate;
24658
24659 public:
24660
24661 static locale::id id;
24662# 2563 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24663 explicit
24664 collate(size_t __refs = 0)
24665 : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
24666 { }
24667# 2577 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24668 explicit
24669 collate(__c_locale __cloc, size_t __refs = 0)
24670 : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
24671 { }
24672# 2594 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24673 int
24674 compare(const _CharT* __lo1, const _CharT* __hi1,
24675 const _CharT* __lo2, const _CharT* __hi2) const
24676 { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
24677# 2613 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24678 string_type
24679 transform(const _CharT* __lo, const _CharT* __hi) const
24680 { return this->do_transform(__lo, __hi); }
24681# 2627 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24682 long
24683 hash(const _CharT* __lo, const _CharT* __hi) const
24684 { return this->do_hash(__lo, __hi); }
24685
24686
24687 int
24688 _M_compare(const _CharT*, const _CharT*) const;
24689
24690 size_t
24691 _M_transform(_CharT*, const _CharT*, size_t) const;
24692
24693 protected:
24694
24695 virtual
24696 ~collate()
24697 { _S_destroy_c_locale(_M_c_locale_collate); }
24698# 2656 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24699 virtual int
24700 do_compare(const _CharT* __lo1, const _CharT* __hi1,
24701 const _CharT* __lo2, const _CharT* __hi2) const;
24702# 2672 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24703 virtual string_type
24704 do_transform(const _CharT* __lo, const _CharT* __hi) const;
24705# 2685 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24706 virtual long
24707 do_hash(const _CharT* __lo, const _CharT* __hi) const;
24708 };
24709
24710 template<typename _CharT>
24711 locale::id collate<_CharT>::id;
24712
24713
24714 template<>
24715 int
24716 collate<char>::_M_compare(const char*, const char*) const;
24717
24718 template<>
24719 size_t
24720 collate<char>::_M_transform(char*, const char*, size_t) const;
24721
24722
24723 template<>
24724 int
24725 collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const;
24726
24727 template<>
24728 size_t
24729 collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const;
24730
24731
24732
24733 template<typename _CharT>
24734 class collate_byname : public collate<_CharT>
24735 {
24736 public:
24737
24738
24739 typedef _CharT char_type;
24740 typedef basic_string<_CharT> string_type;
24741
24742
24743 explicit
24744 collate_byname(const char* __s, size_t __refs = 0)
24745 : collate<_CharT>(__refs)
24746 {
24747 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
24748 {
24749 this->_S_destroy_c_locale(this->_M_c_locale_collate);
24750 this->_S_create_c_locale(this->_M_c_locale_collate, __s);
24751 }
24752 }
24753
24754 protected:
24755 virtual
24756 ~collate_byname() { }
24757 };
24758# 2745 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24759 class time_base
24760 {
24761 public:
24762 enum dateorder { no_order, dmy, mdy, ymd, ydm };
24763 };
24764
24765 template<typename _CharT>
24766 struct __timepunct_cache : public locale::facet
24767 {
24768
24769 static const _CharT* _S_timezones[14];
24770
24771 const _CharT* _M_date_format;
24772 const _CharT* _M_date_era_format;
24773 const _CharT* _M_time_format;
24774 const _CharT* _M_time_era_format;
24775 const _CharT* _M_date_time_format;
24776 const _CharT* _M_date_time_era_format;
24777 const _CharT* _M_am;
24778 const _CharT* _M_pm;
24779 const _CharT* _M_am_pm_format;
24780
24781
24782 const _CharT* _M_day1;
24783 const _CharT* _M_day2;
24784 const _CharT* _M_day3;
24785 const _CharT* _M_day4;
24786 const _CharT* _M_day5;
24787 const _CharT* _M_day6;
24788 const _CharT* _M_day7;
24789
24790
24791 const _CharT* _M_aday1;
24792 const _CharT* _M_aday2;
24793 const _CharT* _M_aday3;
24794 const _CharT* _M_aday4;
24795 const _CharT* _M_aday5;
24796 const _CharT* _M_aday6;
24797 const _CharT* _M_aday7;
24798
24799
24800 const _CharT* _M_month01;
24801 const _CharT* _M_month02;
24802 const _CharT* _M_month03;
24803 const _CharT* _M_month04;
24804 const _CharT* _M_month05;
24805 const _CharT* _M_month06;
24806 const _CharT* _M_month07;
24807 const _CharT* _M_month08;
24808 const _CharT* _M_month09;
24809 const _CharT* _M_month10;
24810 const _CharT* _M_month11;
24811 const _CharT* _M_month12;
24812
24813
24814 const _CharT* _M_amonth01;
24815 const _CharT* _M_amonth02;
24816 const _CharT* _M_amonth03;
24817 const _CharT* _M_amonth04;
24818 const _CharT* _M_amonth05;
24819 const _CharT* _M_amonth06;
24820 const _CharT* _M_amonth07;
24821 const _CharT* _M_amonth08;
24822 const _CharT* _M_amonth09;
24823 const _CharT* _M_amonth10;
24824 const _CharT* _M_amonth11;
24825 const _CharT* _M_amonth12;
24826
24827 bool _M_allocated;
24828
24829 __timepunct_cache(size_t __refs = 0) : facet(__refs),
24830 _M_date_format(__null), _M_date_era_format(__null), _M_time_format(__null),
24831 _M_time_era_format(__null), _M_date_time_format(__null),
24832 _M_date_time_era_format(__null), _M_am(__null), _M_pm(__null),
24833 _M_am_pm_format(__null), _M_day1(__null), _M_day2(__null), _M_day3(__null),
24834 _M_day4(__null), _M_day5(__null), _M_day6(__null), _M_day7(__null),
24835 _M_aday1(__null), _M_aday2(__null), _M_aday3(__null), _M_aday4(__null),
24836 _M_aday5(__null), _M_aday6(__null), _M_aday7(__null), _M_month01(__null),
24837 _M_month02(__null), _M_month03(__null), _M_month04(__null), _M_month05(__null),
24838 _M_month06(__null), _M_month07(__null), _M_month08(__null), _M_month09(__null),
24839 _M_month10(__null), _M_month11(__null), _M_month12(__null), _M_amonth01(__null),
24840 _M_amonth02(__null), _M_amonth03(__null), _M_amonth04(__null),
24841 _M_amonth05(__null), _M_amonth06(__null), _M_amonth07(__null),
24842 _M_amonth08(__null), _M_amonth09(__null), _M_amonth10(__null),
24843 _M_amonth11(__null), _M_amonth12(__null), _M_allocated(false)
24844 { }
24845
24846 ~__timepunct_cache();
24847
24848 void
24849 _M_cache(const locale& __loc);
24850
24851 private:
24852 __timepunct_cache&
24853 operator=(const __timepunct_cache&);
24854
24855 explicit
24856 __timepunct_cache(const __timepunct_cache&);
24857 };
24858
24859 template<typename _CharT>
24860 __timepunct_cache<_CharT>::~__timepunct_cache()
24861 {
24862 if (_M_allocated)
24863 {
24864
24865 }
24866 }
24867
24868
24869 template<>
24870 const char*
24871 __timepunct_cache<char>::_S_timezones[14];
24872
24873
24874 template<>
24875 const wchar_t*
24876 __timepunct_cache<wchar_t>::_S_timezones[14];
24877
24878
24879
24880 template<typename _CharT>
24881 const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
24882
24883 template<typename _CharT>
24884 class __timepunct : public locale::facet
24885 {
24886 public:
24887
24888 typedef _CharT __char_type;
24889 typedef basic_string<_CharT> __string_type;
24890 typedef __timepunct_cache<_CharT> __cache_type;
24891
24892 protected:
24893 __cache_type* _M_data;
24894 __c_locale _M_c_locale_timepunct;
24895 const char* _M_name_timepunct;
24896
24897 public:
24898
24899 static locale::id id;
24900
24901 explicit
24902 __timepunct(size_t __refs = 0);
24903
24904 explicit
24905 __timepunct(__cache_type* __cache, size_t __refs = 0);
24906# 2903 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
24907 explicit
24908 __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0);
24909
24910
24911
24912 void
24913 _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,
24914 const tm* __tm) const;
24915
24916 void
24917 _M_date_formats(const _CharT** __date) const
24918 {
24919
24920 __date[0] = _M_data->_M_date_format;
24921 __date[1] = _M_data->_M_date_era_format;
24922 }
24923
24924 void
24925 _M_time_formats(const _CharT** __time) const
24926 {
24927
24928 __time[0] = _M_data->_M_time_format;
24929 __time[1] = _M_data->_M_time_era_format;
24930 }
24931
24932 void
24933 _M_date_time_formats(const _CharT** __dt) const
24934 {
24935
24936 __dt[0] = _M_data->_M_date_time_format;
24937 __dt[1] = _M_data->_M_date_time_era_format;
24938 }
24939
24940 void
24941 _M_am_pm_format(const _CharT* __ampm) const
24942 { __ampm = _M_data->_M_am_pm_format; }
24943
24944 void
24945 _M_am_pm(const _CharT** __ampm) const
24946 {
24947 __ampm[0] = _M_data->_M_am;
24948 __ampm[1] = _M_data->_M_pm;
24949 }
24950
24951 void
24952 _M_days(const _CharT** __days) const
24953 {
24954 __days[0] = _M_data->_M_day1;
24955 __days[1] = _M_data->_M_day2;
24956 __days[2] = _M_data->_M_day3;
24957 __days[3] = _M_data->_M_day4;
24958 __days[4] = _M_data->_M_day5;
24959 __days[5] = _M_data->_M_day6;
24960 __days[6] = _M_data->_M_day7;
24961 }
24962
24963 void
24964 _M_days_abbreviated(const _CharT** __days) const
24965 {
24966 __days[0] = _M_data->_M_aday1;
24967 __days[1] = _M_data->_M_aday2;
24968 __days[2] = _M_data->_M_aday3;
24969 __days[3] = _M_data->_M_aday4;
24970 __days[4] = _M_data->_M_aday5;
24971 __days[5] = _M_data->_M_aday6;
24972 __days[6] = _M_data->_M_aday7;
24973 }
24974
24975 void
24976 _M_months(const _CharT** __months) const
24977 {
24978 __months[0] = _M_data->_M_month01;
24979 __months[1] = _M_data->_M_month02;
24980 __months[2] = _M_data->_M_month03;
24981 __months[3] = _M_data->_M_month04;
24982 __months[4] = _M_data->_M_month05;
24983 __months[5] = _M_data->_M_month06;
24984 __months[6] = _M_data->_M_month07;
24985 __months[7] = _M_data->_M_month08;
24986 __months[8] = _M_data->_M_month09;
24987 __months[9] = _M_data->_M_month10;
24988 __months[10] = _M_data->_M_month11;
24989 __months[11] = _M_data->_M_month12;
24990 }
24991
24992 void
24993 _M_months_abbreviated(const _CharT** __months) const
24994 {
24995 __months[0] = _M_data->_M_amonth01;
24996 __months[1] = _M_data->_M_amonth02;
24997 __months[2] = _M_data->_M_amonth03;
24998 __months[3] = _M_data->_M_amonth04;
24999 __months[4] = _M_data->_M_amonth05;
25000 __months[5] = _M_data->_M_amonth06;
25001 __months[6] = _M_data->_M_amonth07;
25002 __months[7] = _M_data->_M_amonth08;
25003 __months[8] = _M_data->_M_amonth09;
25004 __months[9] = _M_data->_M_amonth10;
25005 __months[10] = _M_data->_M_amonth11;
25006 __months[11] = _M_data->_M_amonth12;
25007 }
25008
25009 protected:
25010 virtual
25011 ~__timepunct();
25012
25013
25014 void
25015 _M_initialize_timepunct(__c_locale __cloc = __null);
25016 };
25017
25018 template<typename _CharT>
25019 locale::id __timepunct<_CharT>::id;
25020
25021
25022 template<>
25023 void
25024 __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
25025
25026 template<>
25027 void
25028 __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const;
25029
25030
25031 template<>
25032 void
25033 __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
25034
25035 template<>
25036 void
25037 __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
25038 const tm*) const;
25039
25040
25041}
25042
25043
25044# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/time_members.h" 1 3
25045# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/time_members.h" 3
25046namespace std __attribute__ ((__visibility__ ("default"))) {
25047
25048 template<typename _CharT>
25049 __timepunct<_CharT>::__timepunct(size_t __refs)
25050 : facet(__refs), _M_data(__null), _M_c_locale_timepunct(__null),
25051 _M_name_timepunct(_S_get_c_name())
25052 { _M_initialize_timepunct(); }
25053
25054 template<typename _CharT>
25055 __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
25056 : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(__null),
25057 _M_name_timepunct(_S_get_c_name())
25058 { _M_initialize_timepunct(); }
25059
25060 template<typename _CharT>
25061 __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
25062 size_t __refs)
25063 : facet(__refs), _M_data(__null), _M_c_locale_timepunct(__null),
25064 _M_name_timepunct(__null)
25065 {
25066 const size_t __len = std::strlen(__s) + 1;
25067 char* __tmp = new char[__len];
25068 std::memcpy(__tmp, __s, __len);
25069 _M_name_timepunct = __tmp;
25070
25071 try
25072 { _M_initialize_timepunct(__cloc); }
25073 catch(...)
25074 {
25075 delete [] _M_name_timepunct;
25076 throw;
25077 }
25078 }
25079
25080 template<typename _CharT>
25081 __timepunct<_CharT>::~__timepunct()
25082 {
25083 if (_M_name_timepunct != _S_get_c_name())
25084 delete [] _M_name_timepunct;
25085 delete _M_data;
25086 _S_destroy_c_locale(_M_c_locale_timepunct);
25087 }
25088
25089}
25090# 3041 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
25091
25092namespace std __attribute__ ((__visibility__ ("default"))) {
25093# 3056 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25094 template<typename _CharT, typename _InIter>
25095 class time_get : public locale::facet, public time_base
25096 {
25097 public:
25098
25099
25100
25101 typedef _CharT char_type;
25102 typedef _InIter iter_type;
25103
25104 typedef basic_string<_CharT> __string_type;
25105
25106
25107 static locale::id id;
25108# 3078 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25109 explicit
25110 time_get(size_t __refs = 0)
25111 : facet (__refs) { }
25112# 3095 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25113 dateorder
25114 date_order() const
25115 { return this->do_date_order(); }
25116# 3119 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25117 iter_type
25118 get_time(iter_type __beg, iter_type __end, ios_base& __io,
25119 ios_base::iostate& __err, tm* __tm) const
25120 { return this->do_get_time(__beg, __end, __io, __err, __tm); }
25121# 3144 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25122 iter_type
25123 get_date(iter_type __beg, iter_type __end, ios_base& __io,
25124 ios_base::iostate& __err, tm* __tm) const
25125 { return this->do_get_date(__beg, __end, __io, __err, __tm); }
25126# 3172 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25127 iter_type
25128 get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
25129 ios_base::iostate& __err, tm* __tm) const
25130 { return this->do_get_weekday(__beg, __end, __io, __err, __tm); }
25131# 3201 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25132 iter_type
25133 get_monthname(iter_type __beg, iter_type __end, ios_base& __io,
25134 ios_base::iostate& __err, tm* __tm) const
25135 { return this->do_get_monthname(__beg, __end, __io, __err, __tm); }
25136# 3227 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25137 iter_type
25138 get_year(iter_type __beg, iter_type __end, ios_base& __io,
25139 ios_base::iostate& __err, tm* __tm) const
25140 { return this->do_get_year(__beg, __end, __io, __err, __tm); }
25141
25142 protected:
25143
25144 virtual
25145 ~time_get() { }
25146# 3247 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25147 virtual dateorder
25148 do_date_order() const;
25149# 3265 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25150 virtual iter_type
25151 do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
25152 ios_base::iostate& __err, tm* __tm) const;
25153# 3284 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25154 virtual iter_type
25155 do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
25156 ios_base::iostate& __err, tm* __tm) const;
25157# 3303 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25158 virtual iter_type
25159 do_get_weekday(iter_type __beg, iter_type __end, ios_base&,
25160 ios_base::iostate& __err, tm* __tm) const;
25161# 3322 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25162 virtual iter_type
25163 do_get_monthname(iter_type __beg, iter_type __end, ios_base&,
25164 ios_base::iostate& __err, tm* __tm) const;
25165# 3341 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25166 virtual iter_type
25167 do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
25168 ios_base::iostate& __err, tm* __tm) const;
25169
25170
25171 iter_type
25172 _M_extract_num(iter_type __beg, iter_type __end, int& __member,
25173 int __min, int __max, size_t __len,
25174 ios_base& __io, ios_base::iostate& __err) const;
25175
25176
25177
25178 iter_type
25179 _M_extract_name(iter_type __beg, iter_type __end, int& __member,
25180 const _CharT** __names, size_t __indexlen,
25181 ios_base& __io, ios_base::iostate& __err) const;
25182
25183
25184 iter_type
25185 _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
25186 ios_base::iostate& __err, tm* __tm,
25187 const _CharT* __format) const;
25188 };
25189
25190 template<typename _CharT, typename _InIter>
25191 locale::id time_get<_CharT, _InIter>::id;
25192
25193
25194 template<typename _CharT, typename _InIter>
25195 class time_get_byname : public time_get<_CharT, _InIter>
25196 {
25197 public:
25198
25199 typedef _CharT char_type;
25200 typedef _InIter iter_type;
25201
25202 explicit
25203 time_get_byname(const char*, size_t __refs = 0)
25204 : time_get<_CharT, _InIter>(__refs) { }
25205
25206 protected:
25207 virtual
25208 ~time_get_byname() { }
25209 };
25210# 3397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25211 template<typename _CharT, typename _OutIter>
25212 class time_put : public locale::facet
25213 {
25214 public:
25215
25216
25217
25218 typedef _CharT char_type;
25219 typedef _OutIter iter_type;
25220
25221
25222
25223 static locale::id id;
25224# 3418 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25225 explicit
25226 time_put(size_t __refs = 0)
25227 : facet(__refs) { }
25228# 3437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25229 iter_type
25230 put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
25231 const _CharT* __beg, const _CharT* __end) const;
25232# 3457 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25233 iter_type
25234 put(iter_type __s, ios_base& __io, char_type __fill,
25235 const tm* __tm, char __format, char __mod = 0) const
25236 { return this->do_put(__s, __io, __fill, __tm, __format, __mod); }
25237
25238 protected:
25239
25240 virtual
25241 ~time_put()
25242 { }
25243# 3484 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25244 virtual iter_type
25245 do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
25246 char __format, char __mod) const;
25247 };
25248
25249 template<typename _CharT, typename _OutIter>
25250 locale::id time_put<_CharT, _OutIter>::id;
25251
25252
25253 template<typename _CharT, typename _OutIter>
25254 class time_put_byname : public time_put<_CharT, _OutIter>
25255 {
25256 public:
25257
25258 typedef _CharT char_type;
25259 typedef _OutIter iter_type;
25260
25261 explicit
25262 time_put_byname(const char*, size_t __refs = 0)
25263 : time_put<_CharT, _OutIter>(__refs)
25264 { };
25265
25266 protected:
25267 virtual
25268 ~time_put_byname() { }
25269 };
25270# 3522 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25271 class money_base
25272 {
25273 public:
25274 enum part { none, space, symbol, sign, value };
25275 struct pattern { char field[4]; };
25276
25277 static const pattern _S_default_pattern;
25278
25279 enum
25280 {
25281 _S_minus,
25282 _S_zero,
25283 _S_end = 11
25284 };
25285
25286
25287
25288 static const char* _S_atoms;
25289
25290
25291
25292 static pattern
25293 _S_construct_pattern(char __precedes, char __space, char __posn);
25294 };
25295
25296 template<typename _CharT, bool _Intl>
25297 struct __moneypunct_cache : public locale::facet
25298 {
25299 const char* _M_grouping;
25300 size_t _M_grouping_size;
25301 bool _M_use_grouping;
25302 _CharT _M_decimal_point;
25303 _CharT _M_thousands_sep;
25304 const _CharT* _M_curr_symbol;
25305 size_t _M_curr_symbol_size;
25306 const _CharT* _M_positive_sign;
25307 size_t _M_positive_sign_size;
25308 const _CharT* _M_negative_sign;
25309 size_t _M_negative_sign_size;
25310 int _M_frac_digits;
25311 money_base::pattern _M_pos_format;
25312 money_base::pattern _M_neg_format;
25313
25314
25315
25316
25317 _CharT _M_atoms[money_base::_S_end];
25318
25319 bool _M_allocated;
25320
25321 __moneypunct_cache(size_t __refs = 0) : facet(__refs),
25322 _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false),
25323 _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()),
25324 _M_curr_symbol(__null), _M_curr_symbol_size(0),
25325 _M_positive_sign(__null), _M_positive_sign_size(0),
25326 _M_negative_sign(__null), _M_negative_sign_size(0),
25327 _M_frac_digits(0),
25328 _M_pos_format(money_base::pattern()),
25329 _M_neg_format(money_base::pattern()), _M_allocated(false)
25330 { }
25331
25332 ~__moneypunct_cache();
25333
25334 void
25335 _M_cache(const locale& __loc);
25336
25337 private:
25338 __moneypunct_cache&
25339 operator=(const __moneypunct_cache&);
25340
25341 explicit
25342 __moneypunct_cache(const __moneypunct_cache&);
25343 };
25344
25345 template<typename _CharT, bool _Intl>
25346 __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
25347 {
25348 if (_M_allocated)
25349 {
25350 delete [] _M_grouping;
25351 delete [] _M_curr_symbol;
25352 delete [] _M_positive_sign;
25353 delete [] _M_negative_sign;
25354 }
25355 }
25356
25357
25358
25359
25360
25361
25362
25363 template<typename _CharT, bool _Intl>
25364 class moneypunct : public locale::facet, public money_base
25365 {
25366 public:
25367
25368
25369
25370 typedef _CharT char_type;
25371 typedef basic_string<_CharT> string_type;
25372
25373 typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
25374
25375 private:
25376 __cache_type* _M_data;
25377
25378 public:
25379
25380
25381 static const bool intl = _Intl;
25382
25383 static locale::id id;
25384# 3643 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25385 explicit
25386 moneypunct(size_t __refs = 0) : facet(__refs), _M_data(__null)
25387 { _M_initialize_moneypunct(); }
25388# 3655 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25389 explicit
25390 moneypunct(__cache_type* __cache, size_t __refs = 0)
25391 : facet(__refs), _M_data(__cache)
25392 { _M_initialize_moneypunct(); }
25393# 3670 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25394 explicit
25395 moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0)
25396 : facet(__refs), _M_data(__null)
25397 { _M_initialize_moneypunct(__cloc, __s); }
25398# 3684 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25399 char_type
25400 decimal_point() const
25401 { return this->do_decimal_point(); }
25402# 3697 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25403 char_type
25404 thousands_sep() const
25405 { return this->do_thousands_sep(); }
25406# 3726 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25407 string
25408 grouping() const
25409 { return this->do_grouping(); }
25410# 3739 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25411 string_type
25412 curr_symbol() const
25413 { return this->do_curr_symbol(); }
25414# 3756 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25415 string_type
25416 positive_sign() const
25417 { return this->do_positive_sign(); }
25418# 3773 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25419 string_type
25420 negative_sign() const
25421 { return this->do_negative_sign(); }
25422# 3789 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25423 int
25424 frac_digits() const
25425 { return this->do_frac_digits(); }
25426# 3824 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25427 pattern
25428 pos_format() const
25429 { return this->do_pos_format(); }
25430
25431 pattern
25432 neg_format() const
25433 { return this->do_neg_format(); }
25434
25435
25436 protected:
25437
25438 virtual
25439 ~moneypunct();
25440# 3846 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25441 virtual char_type
25442 do_decimal_point() const
25443 { return _M_data->_M_decimal_point; }
25444# 3858 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25445 virtual char_type
25446 do_thousands_sep() const
25447 { return _M_data->_M_thousands_sep; }
25448# 3871 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25449 virtual string
25450 do_grouping() const
25451 { return _M_data->_M_grouping; }
25452# 3884 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25453 virtual string_type
25454 do_curr_symbol() const
25455 { return _M_data->_M_curr_symbol; }
25456# 3897 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25457 virtual string_type
25458 do_positive_sign() const
25459 { return _M_data->_M_positive_sign; }
25460# 3910 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25461 virtual string_type
25462 do_negative_sign() const
25463 { return _M_data->_M_negative_sign; }
25464# 3924 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25465 virtual int
25466 do_frac_digits() const
25467 { return _M_data->_M_frac_digits; }
25468# 3938 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25469 virtual pattern
25470 do_pos_format() const
25471 { return _M_data->_M_pos_format; }
25472# 3952 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25473 virtual pattern
25474 do_neg_format() const
25475 { return _M_data->_M_neg_format; }
25476
25477
25478 void
25479 _M_initialize_moneypunct(__c_locale __cloc = __null,
25480 const char* __name = __null);
25481 };
25482
25483 template<typename _CharT, bool _Intl>
25484 locale::id moneypunct<_CharT, _Intl>::id;
25485
25486 template<typename _CharT, bool _Intl>
25487 const bool moneypunct<_CharT, _Intl>::intl;
25488
25489 template<>
25490 moneypunct<char, true>::~moneypunct();
25491
25492 template<>
25493 moneypunct<char, false>::~moneypunct();
25494
25495 template<>
25496 void
25497 moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
25498
25499 template<>
25500 void
25501 moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
25502
25503
25504 template<>
25505 moneypunct<wchar_t, true>::~moneypunct();
25506
25507 template<>
25508 moneypunct<wchar_t, false>::~moneypunct();
25509
25510 template<>
25511 void
25512 moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
25513 const char*);
25514
25515 template<>
25516 void
25517 moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
25518 const char*);
25519
25520
25521
25522 template<typename _CharT, bool _Intl>
25523 class moneypunct_byname : public moneypunct<_CharT, _Intl>
25524 {
25525 public:
25526 typedef _CharT char_type;
25527 typedef basic_string<_CharT> string_type;
25528
25529 static const bool intl = _Intl;
25530
25531 explicit
25532 moneypunct_byname(const char* __s, size_t __refs = 0)
25533 : moneypunct<_CharT, _Intl>(__refs)
25534 {
25535 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
25536 {
25537 __c_locale __tmp;
25538 this->_S_create_c_locale(__tmp, __s);
25539 this->_M_initialize_moneypunct(__tmp);
25540 this->_S_destroy_c_locale(__tmp);
25541 }
25542 }
25543
25544 protected:
25545 virtual
25546 ~moneypunct_byname() { }
25547 };
25548
25549 template<typename _CharT, bool _Intl>
25550 const bool moneypunct_byname<_CharT, _Intl>::intl;
25551
25552
25553# 4044 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25554 template<typename _CharT, typename _InIter>
25555 class money_get : public locale::facet
25556 {
25557 public:
25558
25559
25560
25561 typedef _CharT char_type;
25562 typedef _InIter iter_type;
25563 typedef basic_string<_CharT> string_type;
25564
25565
25566
25567 static locale::id id;
25568# 4066 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25569 explicit
25570 money_get(size_t __refs = 0) : facet(__refs) { }
25571# 4096 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25572 iter_type
25573 get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
25574 ios_base::iostate& __err, long double& __units) const
25575 { return this->do_get(__s, __end, __intl, __io, __err, __units); }
25576# 4126 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25577 iter_type
25578 get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
25579 ios_base::iostate& __err, string_type& __digits) const
25580 { return this->do_get(__s, __end, __intl, __io, __err, __digits); }
25581
25582 protected:
25583
25584 virtual
25585 ~money_get() { }
25586# 4149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25587 virtual iter_type
25588 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
25589 ios_base::iostate& __err, long double& __units) const;
25590# 4161 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25591 virtual iter_type
25592 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
25593 ios_base::iostate& __err, string_type& __digits) const;
25594# 4172 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25595 template<bool _Intl>
25596 iter_type
25597 _M_extract(iter_type __s, iter_type __end, ios_base& __io,
25598 ios_base::iostate& __err, string& __digits) const;
25599 };
25600
25601 template<typename _CharT, typename _InIter>
25602 locale::id money_get<_CharT, _InIter>::id;
25603# 4193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25604 template<typename _CharT, typename _OutIter>
25605 class money_put : public locale::facet
25606 {
25607 public:
25608
25609
25610 typedef _CharT char_type;
25611 typedef _OutIter iter_type;
25612 typedef basic_string<_CharT> string_type;
25613
25614
25615
25616 static locale::id id;
25617# 4214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25618 explicit
25619 money_put(size_t __refs = 0) : facet(__refs) { }
25620# 4234 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25621 iter_type
25622 put(iter_type __s, bool __intl, ios_base& __io,
25623 char_type __fill, long double __units) const
25624 { return this->do_put(__s, __intl, __io, __fill, __units); }
25625# 4256 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25626 iter_type
25627 put(iter_type __s, bool __intl, ios_base& __io,
25628 char_type __fill, const string_type& __digits) const
25629 { return this->do_put(__s, __intl, __io, __fill, __digits); }
25630
25631 protected:
25632
25633 virtual
25634 ~money_put() { }
25635# 4290 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25636 virtual iter_type
25637 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
25638 long double __units) const;
25639# 4313 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25640 virtual iter_type
25641 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
25642 const string_type& __digits) const;
25643# 4324 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25644 template<bool _Intl>
25645 iter_type
25646 _M_insert(iter_type __s, ios_base& __io, char_type __fill,
25647 const string_type& __digits) const;
25648 };
25649
25650 template<typename _CharT, typename _OutIter>
25651 locale::id money_put<_CharT, _OutIter>::id;
25652
25653
25654
25655
25656
25657
25658 struct messages_base
25659 {
25660 typedef int catalog;
25661 };
25662# 4363 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25663 template<typename _CharT>
25664 class messages : public locale::facet, public messages_base
25665 {
25666 public:
25667
25668
25669
25670 typedef _CharT char_type;
25671 typedef basic_string<_CharT> string_type;
25672
25673
25674 protected:
25675
25676
25677 __c_locale _M_c_locale_messages;
25678 const char* _M_name_messages;
25679
25680 public:
25681
25682 static locale::id id;
25683# 4391 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25684 explicit
25685 messages(size_t __refs = 0);
25686# 4405 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25687 explicit
25688 messages(__c_locale __cloc, const char* __s, size_t __refs = 0);
25689# 4418 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25690 catalog
25691 open(const basic_string<char>& __s, const locale& __loc) const
25692 { return this->do_open(__s, __loc); }
25693# 4436 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25694 catalog
25695 open(const basic_string<char>&, const locale&, const char*) const;
25696# 4454 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25697 string_type
25698 get(catalog __c, int __set, int __msgid, const string_type& __s) const
25699 { return this->do_get(__c, __set, __msgid, __s); }
25700# 4465 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25701 void
25702 close(catalog __c) const
25703 { return this->do_close(__c); }
25704
25705 protected:
25706
25707 virtual
25708 ~messages();
25709# 4485 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25710 virtual catalog
25711 do_open(const basic_string<char>&, const locale&) const;
25712# 4504 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25713 virtual string_type
25714 do_get(catalog, int, int, const string_type& __dfault) const;
25715
25716
25717
25718
25719
25720
25721 virtual void
25722 do_close(catalog) const;
25723
25724
25725 char*
25726 _M_convert_to_char(const string_type& __msg) const
25727 {
25728
25729 return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str()));
25730 }
25731
25732
25733 string_type
25734 _M_convert_from_char(char*) const
25735 {
25736# 4561 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
25737 return string_type();
25738 }
25739 };
25740
25741 template<typename _CharT>
25742 locale::id messages<_CharT>::id;
25743
25744
25745 template<>
25746 string
25747 messages<char>::do_get(catalog, int, int, const string&) const;
25748
25749
25750 template<>
25751 wstring
25752 messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;
25753
25754
25755
25756 template<typename _CharT>
25757 class messages_byname : public messages<_CharT>
25758 {
25759 public:
25760 typedef _CharT char_type;
25761 typedef basic_string<_CharT> string_type;
25762
25763 explicit
25764 messages_byname(const char* __s, size_t __refs = 0);
25765
25766 protected:
25767 virtual
25768 ~messages_byname()
25769 { }
25770 };
25771
25772}
25773
25774
25775# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/messages_members.h" 1 3
25776# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/messages_members.h" 3
25777namespace std __attribute__ ((__visibility__ ("default"))) {
25778
25779
25780 template<typename _CharT>
25781 messages<_CharT>::messages(size_t __refs)
25782 : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
25783 _M_name_messages(_S_get_c_name())
25784 { }
25785
25786 template<typename _CharT>
25787 messages<_CharT>::messages(__c_locale __cloc, const char* __s,
25788 size_t __refs)
25789 : facet(__refs), _M_c_locale_messages(__null), _M_name_messages(__null)
25790 {
25791 const size_t __len = std::strlen(__s) + 1;
25792 char* __tmp = new char[__len];
25793 std::memcpy(__tmp, __s, __len);
25794 _M_name_messages = __tmp;
25795
25796
25797 _M_c_locale_messages = _S_clone_c_locale(__cloc);
25798 }
25799
25800 template<typename _CharT>
25801 typename messages<_CharT>::catalog
25802 messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
25803 const char* __dir) const
25804 {
25805 bindtextdomain(__s.c_str(), __dir);
25806 return this->do_open(__s, __loc);
25807 }
25808
25809
25810 template<typename _CharT>
25811 messages<_CharT>::~messages()
25812 {
25813 if (_M_name_messages != _S_get_c_name())
25814 delete [] _M_name_messages;
25815 _S_destroy_c_locale(_M_c_locale_messages);
25816 }
25817
25818 template<typename _CharT>
25819 typename messages<_CharT>::catalog
25820 messages<_CharT>::do_open(const basic_string<char>& __s,
25821 const locale&) const
25822 {
25823
25824
25825 textdomain(__s.c_str());
25826 return 0;
25827 }
25828
25829 template<typename _CharT>
25830 void
25831 messages<_CharT>::do_close(catalog) const
25832 { }
25833
25834
25835 template<typename _CharT>
25836 messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
25837 : messages<_CharT>(__refs)
25838 {
25839 if (this->_M_name_messages != locale::facet::_S_get_c_name())
25840 delete [] this->_M_name_messages;
25841 char* __tmp = new char[std::strlen(__s) + 1];
25842 std::strcpy(__tmp, __s);
25843 this->_M_name_messages = __tmp;
25844
25845 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
25846 {
25847 this->_S_destroy_c_locale(this->_M_c_locale_messages);
25848 this->_S_create_c_locale(this->_M_c_locale_messages, __s);
25849 }
25850 }
25851
25852}
25853# 4600 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
25854
25855namespace std __attribute__ ((__visibility__ ("default"))) {
25856
25857
25858
25859
25860
25861
25862
25863 template<typename _CharT>
25864 inline bool
25865 isspace(_CharT __c, const locale& __loc)
25866 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
25867
25868
25869 template<typename _CharT>
25870 inline bool
25871 isprint(_CharT __c, const locale& __loc)
25872 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
25873
25874
25875 template<typename _CharT>
25876 inline bool
25877 iscntrl(_CharT __c, const locale& __loc)
25878 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
25879
25880
25881 template<typename _CharT>
25882 inline bool
25883 isupper(_CharT __c, const locale& __loc)
25884 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
25885
25886
25887 template<typename _CharT>
25888 inline bool
25889 islower(_CharT __c, const locale& __loc)
25890 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
25891
25892
25893 template<typename _CharT>
25894 inline bool
25895 isalpha(_CharT __c, const locale& __loc)
25896 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
25897
25898
25899 template<typename _CharT>
25900 inline bool
25901 isdigit(_CharT __c, const locale& __loc)
25902 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
25903
25904
25905 template<typename _CharT>
25906 inline bool
25907 ispunct(_CharT __c, const locale& __loc)
25908 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
25909
25910
25911 template<typename _CharT>
25912 inline bool
25913 isxdigit(_CharT __c, const locale& __loc)
25914 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
25915
25916
25917 template<typename _CharT>
25918 inline bool
25919 isalnum(_CharT __c, const locale& __loc)
25920 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
25921
25922
25923 template<typename _CharT>
25924 inline bool
25925 isgraph(_CharT __c, const locale& __loc)
25926 { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
25927
25928
25929 template<typename _CharT>
25930 inline _CharT
25931 toupper(_CharT __c, const locale& __loc)
25932 { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
25933
25934
25935 template<typename _CharT>
25936 inline _CharT
25937 tolower(_CharT __c, const locale& __loc)
25938 { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
25939
25940}
25941# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 2 3
25942
25943namespace std __attribute__ ((__visibility__ ("default"))) {
25944# 55 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
25945 template<typename _CharT, typename _Traits>
25946 class basic_ios : public ios_base
25947 {
25948 public:
25949
25950
25951
25952
25953
25954
25955 typedef _CharT char_type;
25956 typedef typename _Traits::int_type int_type;
25957 typedef typename _Traits::pos_type pos_type;
25958 typedef typename _Traits::off_type off_type;
25959 typedef _Traits traits_type;
25960# 78 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
25961 typedef ctype<_CharT> __ctype_type;
25962 typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
25963 __num_put_type;
25964 typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
25965 __num_get_type;
25966
25967
25968
25969 protected:
25970 basic_ostream<_CharT, _Traits>* _M_tie;
25971 mutable char_type _M_fill;
25972 mutable bool _M_fill_init;
25973 basic_streambuf<_CharT, _Traits>* _M_streambuf;
25974
25975
25976 const __ctype_type* _M_ctype;
25977
25978 const __num_put_type* _M_num_put;
25979
25980 const __num_get_type* _M_num_get;
25981
25982 public:
25983
25984
25985
25986
25987
25988
25989
25990 operator void*() const
25991 { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
25992
25993 bool
25994 operator!() const
25995 { return this->fail(); }
25996# 122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
25997 iostate
25998 rdstate() const
25999 { return _M_streambuf_state; }
26000# 133 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26001 void
26002 clear(iostate __state = goodbit);
26003
26004
26005
26006
26007
26008
26009
26010 void
26011 setstate(iostate __state)
26012 { this->clear(this->rdstate() | __state); }
26013
26014
26015
26016
26017 void
26018 _M_setstate(iostate __state)
26019 {
26020
26021
26022 _M_streambuf_state |= __state;
26023 if (this->exceptions() & __state)
26024 throw;
26025 }
26026
26027
26028
26029
26030
26031
26032
26033 bool
26034 good() const
26035 { return this->rdstate() == 0; }
26036
26037
26038
26039
26040
26041
26042
26043 bool
26044 eof() const
26045 { return (this->rdstate() & eofbit) != 0; }
26046# 186 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26047 bool
26048 fail() const
26049 { return (this->rdstate() & (badbit | failbit)) != 0; }
26050
26051
26052
26053
26054
26055
26056
26057 bool
26058 bad() const
26059 { return (this->rdstate() & badbit) != 0; }
26060# 207 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26061 iostate
26062 exceptions() const
26063 { return _M_exception; }
26064# 242 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26065 void
26066 exceptions(iostate __except)
26067 {
26068 _M_exception = __except;
26069 this->clear(_M_streambuf_state);
26070 }
26071
26072
26073
26074
26075
26076
26077
26078 explicit
26079 basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
26080 : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
26081 _M_ctype(0), _M_num_put(0), _M_num_get(0)
26082 { this->init(__sb); }
26083
26084
26085
26086
26087
26088
26089
26090 virtual
26091 ~basic_ios() { }
26092# 280 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26093 basic_ostream<_CharT, _Traits>*
26094 tie() const
26095 { return _M_tie; }
26096# 292 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26097 basic_ostream<_CharT, _Traits>*
26098 tie(basic_ostream<_CharT, _Traits>* __tiestr)
26099 {
26100 basic_ostream<_CharT, _Traits>* __old = _M_tie;
26101 _M_tie = __tiestr;
26102 return __old;
26103 }
26104
26105
26106
26107
26108
26109
26110
26111 basic_streambuf<_CharT, _Traits>*
26112 rdbuf() const
26113 { return _M_streambuf; }
26114# 332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26115 basic_streambuf<_CharT, _Traits>*
26116 rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
26117# 346 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26118 basic_ios&
26119 copyfmt(const basic_ios& __rhs);
26120
26121
26122
26123
26124
26125
26126
26127 char_type
26128 fill() const
26129 {
26130 if (!_M_fill_init)
26131 {
26132 _M_fill = this->widen(' ');
26133 _M_fill_init = true;
26134 }
26135 return _M_fill;
26136 }
26137# 375 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26138 char_type
26139 fill(char_type __ch)
26140 {
26141 char_type __old = this->fill();
26142 _M_fill = __ch;
26143 return __old;
26144 }
26145# 395 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26146 locale
26147 imbue(const locale& __loc);
26148# 415 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26149 char
26150 narrow(char_type __c, char __dfault) const;
26151# 433 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
26152 char_type
26153 widen(char __c) const;
26154
26155 protected:
26156
26157
26158
26159
26160
26161
26162
26163 basic_ios()
26164 : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
26165 _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
26166 { }
26167
26168
26169
26170
26171
26172
26173
26174 void
26175 init(basic_streambuf<_CharT, _Traits>* __sb);
26176
26177 void
26178 _M_cache_locale(const locale& __loc);
26179 };
26180
26181}
26182
26183
26184# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.tcc" 1 3
26185# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.tcc" 3
26186
26187# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.tcc" 3
26188
26189namespace std __attribute__ ((__visibility__ ("default"))) {
26190
26191 template<typename _CharT, typename _Traits>
26192 void
26193 basic_ios<_CharT, _Traits>::clear(iostate __state)
26194 {
26195 if (this->rdbuf())
26196 _M_streambuf_state = __state;
26197 else
26198 _M_streambuf_state = __state | badbit;
26199 if (this->exceptions() & this->rdstate())
26200 __throw_ios_failure(("basic_ios::clear"));
26201 }
26202
26203 template<typename _CharT, typename _Traits>
26204 basic_streambuf<_CharT, _Traits>*
26205 basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
26206 {
26207 basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
26208 _M_streambuf = __sb;
26209 this->clear();
26210 return __old;
26211 }
26212
26213 template<typename _CharT, typename _Traits>
26214 basic_ios<_CharT, _Traits>&
26215 basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
26216 {
26217
26218
26219 if (this != &__rhs)
26220 {
26221
26222
26223
26224
26225 _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
26226 _M_local_word : new _Words[__rhs._M_word_size];
26227
26228
26229 _Callback_list* __cb = __rhs._M_callbacks;
26230 if (__cb)
26231 __cb->_M_add_reference();
26232 _M_call_callbacks(erase_event);
26233 if (_M_word != _M_local_word)
26234 {
26235 delete [] _M_word;
26236 _M_word = 0;
26237 }
26238 _M_dispose_callbacks();
26239
26240
26241 _M_callbacks = __cb;
26242 for (int __i = 0; __i < __rhs._M_word_size; ++__i)
26243 __words[__i] = __rhs._M_word[__i];
26244 _M_word = __words;
26245 _M_word_size = __rhs._M_word_size;
26246
26247 this->flags(__rhs.flags());
26248 this->width(__rhs.width());
26249 this->precision(__rhs.precision());
26250 this->tie(__rhs.tie());
26251 this->fill(__rhs.fill());
26252 _M_ios_locale = __rhs.getloc();
26253 _M_cache_locale(_M_ios_locale);
26254
26255 _M_call_callbacks(copyfmt_event);
26256
26257
26258 this->exceptions(__rhs.exceptions());
26259 }
26260 return *this;
26261 }
26262
26263 template<typename _CharT, typename _Traits>
26264 char
26265 basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const
26266 { return __check_facet(_M_ctype).narrow(__c, __dfault); }
26267
26268 template<typename _CharT, typename _Traits>
26269 _CharT
26270 basic_ios<_CharT, _Traits>::widen(char __c) const
26271 { return __check_facet(_M_ctype).widen(__c); }
26272
26273
26274 template<typename _CharT, typename _Traits>
26275 locale
26276 basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
26277 {
26278 locale __old(this->getloc());
26279 ios_base::imbue(__loc);
26280 _M_cache_locale(__loc);
26281 if (this->rdbuf() != 0)
26282 this->rdbuf()->pubimbue(__loc);
26283 return __old;
26284 }
26285
26286 template<typename _CharT, typename _Traits>
26287 void
26288 basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
26289 {
26290
26291 ios_base::_M_init();
26292
26293
26294 _M_cache_locale(_M_ios_locale);
26295# 160 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.tcc" 3
26296 _M_fill = _CharT();
26297 _M_fill_init = false;
26298
26299 _M_tie = 0;
26300 _M_exception = goodbit;
26301 _M_streambuf = __sb;
26302 _M_streambuf_state = __sb ? goodbit : badbit;
26303 }
26304
26305 template<typename _CharT, typename _Traits>
26306 void
26307 basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
26308 {
26309 if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
26310 _M_ctype = &use_facet<__ctype_type>(__loc);
26311 else
26312 _M_ctype = 0;
26313
26314 if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
26315 _M_num_put = &use_facet<__num_put_type>(__loc);
26316 else
26317 _M_num_put = 0;
26318
26319 if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
26320 _M_num_get = &use_facet<__num_get_type>(__loc);
26321 else
26322 _M_num_get = 0;
26323 }
26324
26325
26326
26327
26328
26329 extern template class basic_ios<char>;
26330
26331
26332 extern template class basic_ios<wchar_t>;
26333
26334
26335
26336}
26337# 466 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 2 3
26338# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ios" 2 3
26339# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 2 3
26340
26341
26342namespace std __attribute__ ((__visibility__ ("default"))) {
26343# 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26344 template<typename _CharT, typename _Traits>
26345 class basic_ostream : virtual public basic_ios<_CharT, _Traits>
26346 {
26347 public:
26348
26349 typedef _CharT char_type;
26350 typedef typename _Traits::int_type int_type;
26351 typedef typename _Traits::pos_type pos_type;
26352 typedef typename _Traits::off_type off_type;
26353 typedef _Traits traits_type;
26354
26355
26356 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
26357 typedef basic_ios<_CharT, _Traits> __ios_type;
26358 typedef basic_ostream<_CharT, _Traits> __ostream_type;
26359 typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
26360 __num_put_type;
26361 typedef ctype<_CharT> __ctype_type;
26362# 85 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26363 explicit
26364 basic_ostream(__streambuf_type* __sb)
26365 { this->init(__sb); }
26366
26367
26368
26369
26370
26371
26372 virtual
26373 ~basic_ostream() { }
26374
26375
26376 class sentry;
26377 friend class sentry;
26378# 111 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26379 __ostream_type&
26380 operator<<(__ostream_type& (*__pf)(__ostream_type&))
26381 {
26382
26383
26384
26385 return __pf(*this);
26386 }
26387
26388 __ostream_type&
26389 operator<<(__ios_type& (*__pf)(__ios_type&))
26390 {
26391
26392
26393
26394 __pf(*this);
26395 return *this;
26396 }
26397
26398 __ostream_type&
26399 operator<<(ios_base& (*__pf) (ios_base&))
26400 {
26401
26402
26403
26404 __pf(*this);
26405 return *this;
26406 }
26407# 168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26408 __ostream_type&
26409 operator<<(long __n)
26410 { return _M_insert(__n); }
26411
26412 __ostream_type&
26413 operator<<(unsigned long __n)
26414 { return _M_insert(__n); }
26415
26416 __ostream_type&
26417 operator<<(bool __n)
26418 { return _M_insert(__n); }
26419
26420 __ostream_type&
26421 operator<<(short __n);
26422
26423 __ostream_type&
26424 operator<<(unsigned short __n)
26425 {
26426
26427
26428 return _M_insert(static_cast<unsigned long>(__n));
26429 }
26430
26431 __ostream_type&
26432 operator<<(int __n);
26433
26434 __ostream_type&
26435 operator<<(unsigned int __n)
26436 {
26437
26438
26439 return _M_insert(static_cast<unsigned long>(__n));
26440 }
26441
26442
26443 __ostream_type&
26444 operator<<(long long __n)
26445 { return _M_insert(__n); }
26446
26447 __ostream_type&
26448 operator<<(unsigned long long __n)
26449 { return _M_insert(__n); }
26450
26451
26452 __ostream_type&
26453 operator<<(double __f)
26454 { return _M_insert(__f); }
26455
26456 __ostream_type&
26457 operator<<(float __f)
26458 {
26459
26460
26461 return _M_insert(static_cast<double>(__f));
26462 }
26463
26464 __ostream_type&
26465 operator<<(long double __f)
26466 { return _M_insert(__f); }
26467
26468 __ostream_type&
26469 operator<<(const void* __p)
26470 { return _M_insert(__p); }
26471# 253 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26472 __ostream_type&
26473 operator<<(__streambuf_type* __sb);
26474# 286 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26475 __ostream_type&
26476 put(char_type __c);
26477
26478
26479 void
26480 _M_write(const char_type* __s, streamsize __n)
26481 {
26482 const streamsize __put = this->rdbuf()->sputn(__s, __n);
26483 if (__put != __n)
26484 this->setstate(ios_base::badbit);
26485 }
26486# 314 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26487 __ostream_type&
26488 write(const char_type* __s, streamsize __n);
26489# 327 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26490 __ostream_type&
26491 flush();
26492# 338 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26493 pos_type
26494 tellp();
26495# 349 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26496 __ostream_type&
26497 seekp(pos_type);
26498# 361 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26499 __ostream_type&
26500 seekp(off_type, ios_base::seekdir);
26501
26502 protected:
26503 explicit
26504 basic_ostream() { }
26505
26506 template<typename _ValueT>
26507 __ostream_type&
26508 _M_insert(_ValueT __v);
26509 };
26510# 383 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26511 template <typename _CharT, typename _Traits>
26512 class basic_ostream<_CharT, _Traits>::sentry
26513 {
26514
26515 bool _M_ok;
26516 basic_ostream<_CharT, _Traits>& _M_os;
26517
26518 public:
26519# 402 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26520 explicit
26521 sentry(basic_ostream<_CharT, _Traits>& __os);
26522# 412 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26523 ~sentry()
26524 {
26525
26526 if (_M_os.flags() & ios_base::unitbuf && !uncaught_exception())
26527 {
26528
26529 if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
26530 _M_os.setstate(ios_base::badbit);
26531 }
26532 }
26533# 430 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26534 operator bool() const
26535 { return _M_ok; }
26536 };
26537# 451 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26538 template<typename _CharT, typename _Traits>
26539 inline basic_ostream<_CharT, _Traits>&
26540 operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
26541 { return __ostream_insert(__out, &__c, 1); }
26542
26543 template<typename _CharT, typename _Traits>
26544 inline basic_ostream<_CharT, _Traits>&
26545 operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
26546 { return (__out << __out.widen(__c)); }
26547
26548
26549 template <class _Traits>
26550 inline basic_ostream<char, _Traits>&
26551 operator<<(basic_ostream<char, _Traits>& __out, char __c)
26552 { return __ostream_insert(__out, &__c, 1); }
26553
26554
26555 template<class _Traits>
26556 inline basic_ostream<char, _Traits>&
26557 operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
26558 { return (__out << static_cast<char>(__c)); }
26559
26560 template<class _Traits>
26561 inline basic_ostream<char, _Traits>&
26562 operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
26563 { return (__out << static_cast<char>(__c)); }
26564# 493 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26565 template<typename _CharT, typename _Traits>
26566 inline basic_ostream<_CharT, _Traits>&
26567 operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
26568 {
26569 if (!__s)
26570 __out.setstate(ios_base::badbit);
26571 else
26572 __ostream_insert(__out, __s,
26573 static_cast<streamsize>(_Traits::length(__s)));
26574 return __out;
26575 }
26576
26577 template<typename _CharT, typename _Traits>
26578 basic_ostream<_CharT, _Traits> &
26579 operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
26580
26581
26582 template<class _Traits>
26583 inline basic_ostream<char, _Traits>&
26584 operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
26585 {
26586 if (!__s)
26587 __out.setstate(ios_base::badbit);
26588 else
26589 __ostream_insert(__out, __s,
26590 static_cast<streamsize>(_Traits::length(__s)));
26591 return __out;
26592 }
26593
26594
26595 template<class _Traits>
26596 inline basic_ostream<char, _Traits>&
26597 operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
26598 { return (__out << reinterpret_cast<const char*>(__s)); }
26599
26600 template<class _Traits>
26601 inline basic_ostream<char, _Traits> &
26602 operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
26603 { return (__out << reinterpret_cast<const char*>(__s)); }
26604# 543 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
26605 template<typename _CharT, typename _Traits>
26606 inline basic_ostream<_CharT, _Traits>&
26607 endl(basic_ostream<_CharT, _Traits>& __os)
26608 { return flush(__os.put(__os.widen('\n'))); }
26609
26610
26611
26612
26613
26614
26615
26616 template<typename _CharT, typename _Traits>
26617 inline basic_ostream<_CharT, _Traits>&
26618 ends(basic_ostream<_CharT, _Traits>& __os)
26619 { return __os.put(_CharT()); }
26620
26621
26622
26623
26624
26625
26626 template<typename _CharT, typename _Traits>
26627 inline basic_ostream<_CharT, _Traits>&
26628 flush(basic_ostream<_CharT, _Traits>& __os)
26629 { return __os.flush(); }
26630
26631}
26632
26633
26634# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream.tcc" 1 3
26635# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream.tcc" 3
26636
26637# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream.tcc" 3
26638
26639# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/locale" 1 3
26640# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/locale" 3
26641
26642# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/locale" 3
26643
26644
26645
26646
26647# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 1 3
26648# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
26649
26650# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
26651
26652
26653# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/typeinfo" 1 3
26654# 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/typeinfo" 3
26655#pragma GCC visibility push(default)
26656
26657extern "C++" {
26658
26659namespace __cxxabiv1
26660{
26661 class __class_type_info;
26662}
26663# 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/typeinfo" 3
26664namespace std
26665{
26666
26667
26668
26669
26670
26671
26672 class type_info
26673 {
26674 public:
26675
26676
26677
26678
26679 virtual ~type_info();
26680
26681
26682
26683 const char* name() const
26684 { return __name; }
26685# 94 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/typeinfo" 3
26686 bool before(const type_info& __arg) const
26687 { return __name < __arg.__name; }
26688
26689 bool operator==(const type_info& __arg) const
26690 { return __name == __arg.__name; }
26691
26692 bool operator!=(const type_info& __arg) const
26693 { return !operator==(__arg); }
26694
26695
26696 virtual bool __is_pointer_p() const;
26697
26698
26699 virtual bool __is_function_p() const;
26700
26701
26702
26703
26704
26705
26706
26707 virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj,
26708 unsigned __outer) const;
26709
26710
26711 virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target,
26712 void **__obj_ptr) const;
26713
26714 protected:
26715 const char *__name;
26716
26717 explicit type_info(const char *__n): __name(__n) { }
26718
26719 private:
26720
26721 type_info& operator=(const type_info&);
26722 type_info(const type_info&);
26723 };
26724
26725
26726
26727
26728
26729
26730 class bad_cast : public exception
26731 {
26732 public:
26733 bad_cast() throw() { }
26734
26735
26736
26737 virtual ~bad_cast() throw();
26738
26739
26740 virtual const char* what() const throw();
26741 };
26742
26743
26744 class bad_typeid : public exception
26745 {
26746 public:
26747 bad_typeid () throw() { }
26748
26749
26750
26751 virtual ~bad_typeid() throw();
26752
26753
26754 virtual const char* what() const throw();
26755 };
26756}
26757
26758#pragma GCC visibility pop
26759
26760}
26761# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 2 3
26762
26763
26764
26765namespace std __attribute__ ((__visibility__ ("default"))) {
26766
26767 template<typename _Facet>
26768 locale
26769 locale::combine(const locale& __other) const
26770 {
26771 _Impl* __tmp = new _Impl(*_M_impl, 1);
26772 try
26773 {
26774 __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
26775 }
26776 catch(...)
26777 {
26778 __tmp->_M_remove_reference();
26779 throw;
26780 }
26781 return locale(__tmp);
26782 }
26783
26784 template<typename _CharT, typename _Traits, typename _Alloc>
26785 bool
26786 locale::operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
26787 const basic_string<_CharT, _Traits, _Alloc>& __s2) const
26788 {
26789 typedef std::collate<_CharT> __collate_type;
26790 const __collate_type& __collate = use_facet<__collate_type>(*this);
26791 return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
26792 __s2.data(), __s2.data() + __s2.length()) < 0);
26793 }
26794# 87 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
26795 template<typename _Facet>
26796 inline bool
26797 has_facet(const locale& __loc) throw()
26798 {
26799 const size_t __i = _Facet::id._M_id();
26800 const locale::facet** __facets = __loc._M_impl->_M_facets;
26801 return (__i < __loc._M_impl->_M_facets_size && __facets[__i]);
26802 }
26803# 109 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
26804 template<typename _Facet>
26805 inline const _Facet&
26806 use_facet(const locale& __loc)
26807 {
26808 const size_t __i = _Facet::id._M_id();
26809 const locale::facet** __facets = __loc._M_impl->_M_facets;
26810 if (!(__i < __loc._M_impl->_M_facets_size && __facets[__i]))
26811 __throw_bad_cast();
26812 return static_cast<const _Facet&>(*__facets[__i]);
26813 }
26814
26815
26816
26817 template<typename _Facet>
26818 struct __use_cache
26819 {
26820 const _Facet*
26821 operator() (const locale& __loc) const;
26822 };
26823
26824
26825 template<typename _CharT>
26826 struct __use_cache<__numpunct_cache<_CharT> >
26827 {
26828 const __numpunct_cache<_CharT>*
26829 operator() (const locale& __loc) const
26830 {
26831 const size_t __i = numpunct<_CharT>::id._M_id();
26832 const locale::facet** __caches = __loc._M_impl->_M_caches;
26833 if (!__caches[__i])
26834 {
26835 __numpunct_cache<_CharT>* __tmp = __null;
26836 try
26837 {
26838 __tmp = new __numpunct_cache<_CharT>;
26839 __tmp->_M_cache(__loc);
26840 }
26841 catch(...)
26842 {
26843 delete __tmp;
26844 throw;
26845 }
26846 __loc._M_impl->_M_install_cache(__tmp, __i);
26847 }
26848 return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
26849 }
26850 };
26851
26852 template<typename _CharT, bool _Intl>
26853 struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
26854 {
26855 const __moneypunct_cache<_CharT, _Intl>*
26856 operator() (const locale& __loc) const
26857 {
26858 const size_t __i = moneypunct<_CharT, _Intl>::id._M_id();
26859 const locale::facet** __caches = __loc._M_impl->_M_caches;
26860 if (!__caches[__i])
26861 {
26862 __moneypunct_cache<_CharT, _Intl>* __tmp = __null;
26863 try
26864 {
26865 __tmp = new __moneypunct_cache<_CharT, _Intl>;
26866 __tmp->_M_cache(__loc);
26867 }
26868 catch(...)
26869 {
26870 delete __tmp;
26871 throw;
26872 }
26873 __loc._M_impl->_M_install_cache(__tmp, __i);
26874 }
26875 return static_cast<
26876 const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]);
26877 }
26878 };
26879
26880 template<typename _CharT>
26881 void
26882 __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
26883 {
26884 _M_allocated = true;
26885
26886 const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
26887
26888 _M_grouping_size = __np.grouping().size();
26889 char* __grouping = new char[_M_grouping_size];
26890 __np.grouping().copy(__grouping, _M_grouping_size);
26891 _M_grouping = __grouping;
26892 _M_use_grouping = (_M_grouping_size
26893 && static_cast<signed char>(__np.grouping()[0]) > 0);
26894
26895 _M_truename_size = __np.truename().size();
26896 _CharT* __truename = new _CharT[_M_truename_size];
26897 __np.truename().copy(__truename, _M_truename_size);
26898 _M_truename = __truename;
26899
26900 _M_falsename_size = __np.falsename().size();
26901 _CharT* __falsename = new _CharT[_M_falsename_size];
26902 __np.falsename().copy(__falsename, _M_falsename_size);
26903 _M_falsename = __falsename;
26904
26905 _M_decimal_point = __np.decimal_point();
26906 _M_thousands_sep = __np.thousands_sep();
26907
26908 const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
26909 __ct.widen(__num_base::_S_atoms_out,
26910 __num_base::_S_atoms_out + __num_base::_S_oend, _M_atoms_out);
26911 __ct.widen(__num_base::_S_atoms_in,
26912 __num_base::_S_atoms_in + __num_base::_S_iend, _M_atoms_in);
26913 }
26914
26915 template<typename _CharT, bool _Intl>
26916 void
26917 __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
26918 {
26919 _M_allocated = true;
26920
26921 const moneypunct<_CharT, _Intl>& __mp =
26922 use_facet<moneypunct<_CharT, _Intl> >(__loc);
26923
26924 _M_grouping_size = __mp.grouping().size();
26925 char* __grouping = new char[_M_grouping_size];
26926 __mp.grouping().copy(__grouping, _M_grouping_size);
26927 _M_grouping = __grouping;
26928 _M_use_grouping = (_M_grouping_size
26929 && static_cast<signed char>(__mp.grouping()[0]) > 0);
26930
26931 _M_decimal_point = __mp.decimal_point();
26932 _M_thousands_sep = __mp.thousands_sep();
26933 _M_frac_digits = __mp.frac_digits();
26934
26935 _M_curr_symbol_size = __mp.curr_symbol().size();
26936 _CharT* __curr_symbol = new _CharT[_M_curr_symbol_size];
26937 __mp.curr_symbol().copy(__curr_symbol, _M_curr_symbol_size);
26938 _M_curr_symbol = __curr_symbol;
26939
26940 _M_positive_sign_size = __mp.positive_sign().size();
26941 _CharT* __positive_sign = new _CharT[_M_positive_sign_size];
26942 __mp.positive_sign().copy(__positive_sign, _M_positive_sign_size);
26943 _M_positive_sign = __positive_sign;
26944
26945 _M_negative_sign_size = __mp.negative_sign().size();
26946 _CharT* __negative_sign = new _CharT[_M_negative_sign_size];
26947 __mp.negative_sign().copy(__negative_sign, _M_negative_sign_size);
26948 _M_negative_sign = __negative_sign;
26949
26950 _M_pos_format = __mp.pos_format();
26951 _M_neg_format = __mp.neg_format();
26952
26953 const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
26954 __ct.widen(money_base::_S_atoms,
26955 money_base::_S_atoms + money_base::_S_end, _M_atoms);
26956 }
26957# 272 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
26958 static bool
26959 __verify_grouping(const char* __grouping, size_t __grouping_size,
26960 const string& __grouping_tmp);
26961
26962
26963
26964 template<typename _CharT, typename _InIter>
26965 _InIter
26966 num_get<_CharT, _InIter>::
26967 _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
26968 ios_base::iostate& __err, string& __xtrc) const
26969 {
26970 typedef char_traits<_CharT> __traits_type;
26971 typedef __numpunct_cache<_CharT> __cache_type;
26972 __use_cache<__cache_type> __uc;
26973 const locale& __loc = __io._M_getloc();
26974 const __cache_type* __lc = __uc(__loc);
26975 const _CharT* __lit = __lc->_M_atoms_in;
26976 char_type __c = char_type();
26977
26978
26979 bool __testeof = __beg == __end;
26980
26981
26982 if (!__testeof)
26983 {
26984 __c = *__beg;
26985 const bool __plus = __c == __lit[__num_base::_S_iplus];
26986 if ((__plus || __c == __lit[__num_base::_S_iminus])
26987 && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
26988 && !(__c == __lc->_M_decimal_point))
26989 {
26990 __xtrc += __plus ? '+' : '-';
26991 if (++__beg != __end)
26992 __c = *__beg;
26993 else
26994 __testeof = true;
26995 }
26996 }
26997
26998
26999 bool __found_mantissa = false;
27000 int __sep_pos = 0;
27001 while (!__testeof)
27002 {
27003 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep
27004 || __c == __lc->_M_decimal_point)
27005 break;
27006 else if (__c == __lit[__num_base::_S_izero])
27007 {
27008 if (!__found_mantissa)
27009 {
27010 __xtrc += '0';
27011 __found_mantissa = true;
27012 }
27013 ++__sep_pos;
27014
27015 if (++__beg != __end)
27016 __c = *__beg;
27017 else
27018 __testeof = true;
27019 }
27020 else
27021 break;
27022 }
27023
27024
27025 bool __found_dec = false;
27026 bool __found_sci = false;
27027 string __found_grouping;
27028 if (__lc->_M_use_grouping)
27029 __found_grouping.reserve(32);
27030 const char_type* __lit_zero = __lit + __num_base::_S_izero;
27031
27032 if (!__lc->_M_allocated)
27033
27034 while (!__testeof)
27035 {
27036 const int __digit = _M_find(__lit_zero, 10, __c);
27037 if (__digit != -1)
27038 {
27039 __xtrc += '0' + __digit;
27040 __found_mantissa = true;
27041 }
27042 else if (__c == __lc->_M_decimal_point
27043 && !__found_dec && !__found_sci)
27044 {
27045 __xtrc += '.';
27046 __found_dec = true;
27047 }
27048 else if ((__c == __lit[__num_base::_S_ie]
27049 || __c == __lit[__num_base::_S_iE])
27050 && !__found_sci && __found_mantissa)
27051 {
27052
27053 __xtrc += 'e';
27054 __found_sci = true;
27055
27056
27057 if (++__beg != __end)
27058 {
27059 __c = *__beg;
27060 const bool __plus = __c == __lit[__num_base::_S_iplus];
27061 if (__plus || __c == __lit[__num_base::_S_iminus])
27062 __xtrc += __plus ? '+' : '-';
27063 else
27064 continue;
27065 }
27066 else
27067 {
27068 __testeof = true;
27069 break;
27070 }
27071 }
27072 else
27073 break;
27074
27075 if (++__beg != __end)
27076 __c = *__beg;
27077 else
27078 __testeof = true;
27079 }
27080 else
27081 while (!__testeof)
27082 {
27083
27084
27085 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
27086 {
27087 if (!__found_dec && !__found_sci)
27088 {
27089
27090
27091 if (__sep_pos)
27092 {
27093 __found_grouping += static_cast<char>(__sep_pos);
27094 __sep_pos = 0;
27095 }
27096 else
27097 {
27098
27099
27100 __xtrc.clear();
27101 break;
27102 }
27103 }
27104 else
27105 break;
27106 }
27107 else if (__c == __lc->_M_decimal_point)
27108 {
27109 if (!__found_dec && !__found_sci)
27110 {
27111
27112
27113
27114 if (__found_grouping.size())
27115 __found_grouping += static_cast<char>(__sep_pos);
27116 __xtrc += '.';
27117 __found_dec = true;
27118 }
27119 else
27120 break;
27121 }
27122 else
27123 {
27124 const char_type* __q =
27125 __traits_type::find(__lit_zero, 10, __c);
27126 if (__q)
27127 {
27128 __xtrc += '0' + (__q - __lit_zero);
27129 __found_mantissa = true;
27130 ++__sep_pos;
27131 }
27132 else if ((__c == __lit[__num_base::_S_ie]
27133 || __c == __lit[__num_base::_S_iE])
27134 && !__found_sci && __found_mantissa)
27135 {
27136
27137 if (__found_grouping.size() && !__found_dec)
27138 __found_grouping += static_cast<char>(__sep_pos);
27139 __xtrc += 'e';
27140 __found_sci = true;
27141
27142
27143 if (++__beg != __end)
27144 {
27145 __c = *__beg;
27146 const bool __plus = __c == __lit[__num_base::_S_iplus];
27147 if ((__plus || __c == __lit[__num_base::_S_iminus])
27148 && !(__lc->_M_use_grouping
27149 && __c == __lc->_M_thousands_sep)
27150 && !(__c == __lc->_M_decimal_point))
27151 __xtrc += __plus ? '+' : '-';
27152 else
27153 continue;
27154 }
27155 else
27156 {
27157 __testeof = true;
27158 break;
27159 }
27160 }
27161 else
27162 break;
27163 }
27164
27165 if (++__beg != __end)
27166 __c = *__beg;
27167 else
27168 __testeof = true;
27169 }
27170
27171
27172
27173 if (__found_grouping.size())
27174 {
27175
27176 if (!__found_dec && !__found_sci)
27177 __found_grouping += static_cast<char>(__sep_pos);
27178
27179 if (!std::__verify_grouping(__lc->_M_grouping,
27180 __lc->_M_grouping_size,
27181 __found_grouping))
27182 __err |= ios_base::failbit;
27183 }
27184
27185
27186 if (__testeof)
27187 __err |= ios_base::eofbit;
27188 return __beg;
27189 }
27190
27191
27192
27193
27194
27195 template<typename _CharT, typename _InIter>
27196 template<typename _ValueT>
27197 _InIter
27198 num_get<_CharT, _InIter>::
27199 _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
27200 ios_base::iostate& __err, _ValueT& __v) const
27201 {
27202 typedef char_traits<_CharT> __traits_type;
27203 using __gnu_cxx::__add_unsigned;
27204 typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
27205 typedef __numpunct_cache<_CharT> __cache_type;
27206 __use_cache<__cache_type> __uc;
27207 const locale& __loc = __io._M_getloc();
27208 const __cache_type* __lc = __uc(__loc);
27209 const _CharT* __lit = __lc->_M_atoms_in;
27210 char_type __c = char_type();
27211
27212
27213 const ios_base::fmtflags __basefield = __io.flags()
27214 & ios_base::basefield;
27215 const bool __oct = __basefield == ios_base::oct;
27216 int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
27217
27218
27219 bool __testeof = __beg == __end;
27220
27221
27222 bool __negative = false;
27223 if (!__testeof)
27224 {
27225 __c = *__beg;
27226 if (numeric_limits<_ValueT>::is_signed)
27227 __negative = __c == __lit[__num_base::_S_iminus];
27228 if ((__negative || __c == __lit[__num_base::_S_iplus])
27229 && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
27230 && !(__c == __lc->_M_decimal_point))
27231 {
27232 if (++__beg != __end)
27233 __c = *__beg;
27234 else
27235 __testeof = true;
27236 }
27237 }
27238
27239
27240
27241 bool __found_zero = false;
27242 int __sep_pos = 0;
27243 while (!__testeof)
27244 {
27245 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep
27246 || __c == __lc->_M_decimal_point)
27247 break;
27248 else if (__c == __lit[__num_base::_S_izero]
27249 && (!__found_zero || __base == 10))
27250 {
27251 __found_zero = true;
27252 ++__sep_pos;
27253 if (__basefield == 0)
27254 __base = 8;
27255 if (__base == 8)
27256 __sep_pos = 0;
27257 }
27258 else if (__found_zero
27259 && (__c == __lit[__num_base::_S_ix]
27260 || __c == __lit[__num_base::_S_iX]))
27261 {
27262 if (__basefield == 0)
27263 __base = 16;
27264 if (__base == 16)
27265 {
27266 __found_zero = false;
27267 __sep_pos = 0;
27268 }
27269 else
27270 break;
27271 }
27272 else
27273 break;
27274
27275 if (++__beg != __end)
27276 {
27277 __c = *__beg;
27278 if (!__found_zero)
27279 break;
27280 }
27281 else
27282 __testeof = true;
27283 }
27284
27285
27286
27287 const size_t __len = (__base == 16 ? __num_base::_S_iend
27288 - __num_base::_S_izero : __base);
27289
27290
27291 string __found_grouping;
27292 if (__lc->_M_use_grouping)
27293 __found_grouping.reserve(32);
27294 bool __testfail = false;
27295 const __unsigned_type __max = __negative ?
27296 -numeric_limits<_ValueT>::min() : numeric_limits<_ValueT>::max();
27297 const __unsigned_type __smax = __max / __base;
27298 __unsigned_type __result = 0;
27299 int __digit = 0;
27300 const char_type* __lit_zero = __lit + __num_base::_S_izero;
27301
27302 if (!__lc->_M_allocated)
27303
27304 while (!__testeof)
27305 {
27306 __digit = _M_find(__lit_zero, __len, __c);
27307 if (__digit == -1)
27308 break;
27309
27310 if (__result > __smax)
27311 __testfail = true;
27312 else
27313 {
27314 __result *= __base;
27315 __testfail |= __result > __max - __digit;
27316 __result += __digit;
27317 ++__sep_pos;
27318 }
27319
27320 if (++__beg != __end)
27321 __c = *__beg;
27322 else
27323 __testeof = true;
27324 }
27325 else
27326 while (!__testeof)
27327 {
27328
27329
27330 if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
27331 {
27332
27333
27334 if (__sep_pos)
27335 {
27336 __found_grouping += static_cast<char>(__sep_pos);
27337 __sep_pos = 0;
27338 }
27339 else
27340 {
27341 __testfail = true;
27342 break;
27343 }
27344 }
27345 else if (__c == __lc->_M_decimal_point)
27346 break;
27347 else
27348 {
27349 const char_type* __q =
27350 __traits_type::find(__lit_zero, __len, __c);
27351 if (!__q)
27352 break;
27353
27354 __digit = __q - __lit_zero;
27355 if (__digit > 15)
27356 __digit -= 6;
27357 if (__result > __smax)
27358 __testfail = true;
27359 else
27360 {
27361 __result *= __base;
27362 __testfail |= __result > __max - __digit;
27363 __result += __digit;
27364 ++__sep_pos;
27365 }
27366 }
27367
27368 if (++__beg != __end)
27369 __c = *__beg;
27370 else
27371 __testeof = true;
27372 }
27373
27374
27375
27376 if (__found_grouping.size())
27377 {
27378
27379 __found_grouping += static_cast<char>(__sep_pos);
27380
27381 if (!std::__verify_grouping(__lc->_M_grouping,
27382 __lc->_M_grouping_size,
27383 __found_grouping))
27384 __err |= ios_base::failbit;
27385 }
27386
27387 if (!__testfail && (__sep_pos || __found_zero
27388 || __found_grouping.size()))
27389 __v = __negative ? -__result : __result;
27390 else
27391 __err |= ios_base::failbit;
27392
27393 if (__testeof)
27394 __err |= ios_base::eofbit;
27395 return __beg;
27396 }
27397
27398
27399
27400 template<typename _CharT, typename _InIter>
27401 _InIter
27402 num_get<_CharT, _InIter>::
27403 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27404 ios_base::iostate& __err, bool& __v) const
27405 {
27406 if (!(__io.flags() & ios_base::boolalpha))
27407 {
27408
27409
27410
27411 long __l = -1;
27412 __beg = _M_extract_int(__beg, __end, __io, __err, __l);
27413 if (__l == 0 || __l == 1)
27414 __v = __l;
27415 else
27416 __err |= ios_base::failbit;
27417 }
27418 else
27419 {
27420
27421 typedef __numpunct_cache<_CharT> __cache_type;
27422 __use_cache<__cache_type> __uc;
27423 const locale& __loc = __io._M_getloc();
27424 const __cache_type* __lc = __uc(__loc);
27425
27426 bool __testf = true;
27427 bool __testt = true;
27428 size_t __n;
27429 bool __testeof = __beg == __end;
27430 for (__n = 0; !__testeof; ++__n)
27431 {
27432 const char_type __c = *__beg;
27433
27434 if (__testf)
27435 if (__n < __lc->_M_falsename_size)
27436 __testf = __c == __lc->_M_falsename[__n];
27437 else
27438 break;
27439
27440 if (__testt)
27441 if (__n < __lc->_M_truename_size)
27442 __testt = __c == __lc->_M_truename[__n];
27443 else
27444 break;
27445
27446 if (!__testf && !__testt)
27447 break;
27448
27449 if (++__beg == __end)
27450 __testeof = true;
27451 }
27452 if (__testf && __n == __lc->_M_falsename_size)
27453 __v = 0;
27454 else if (__testt && __n == __lc->_M_truename_size)
27455 __v = 1;
27456 else
27457 __err |= ios_base::failbit;
27458
27459 if (__testeof)
27460 __err |= ios_base::eofbit;
27461 }
27462 return __beg;
27463 }
27464
27465 template<typename _CharT, typename _InIter>
27466 _InIter
27467 num_get<_CharT, _InIter>::
27468 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27469 ios_base::iostate& __err, long& __v) const
27470 { return _M_extract_int(__beg, __end, __io, __err, __v); }
27471
27472 template<typename _CharT, typename _InIter>
27473 _InIter
27474 num_get<_CharT, _InIter>::
27475 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27476 ios_base::iostate& __err, unsigned short& __v) const
27477 { return _M_extract_int(__beg, __end, __io, __err, __v); }
27478
27479 template<typename _CharT, typename _InIter>
27480 _InIter
27481 num_get<_CharT, _InIter>::
27482 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27483 ios_base::iostate& __err, unsigned int& __v) const
27484 { return _M_extract_int(__beg, __end, __io, __err, __v); }
27485
27486 template<typename _CharT, typename _InIter>
27487 _InIter
27488 num_get<_CharT, _InIter>::
27489 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27490 ios_base::iostate& __err, unsigned long& __v) const
27491 { return _M_extract_int(__beg, __end, __io, __err, __v); }
27492
27493
27494 template<typename _CharT, typename _InIter>
27495 _InIter
27496 num_get<_CharT, _InIter>::
27497 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27498 ios_base::iostate& __err, long long& __v) const
27499 { return _M_extract_int(__beg, __end, __io, __err, __v); }
27500
27501 template<typename _CharT, typename _InIter>
27502 _InIter
27503 num_get<_CharT, _InIter>::
27504 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27505 ios_base::iostate& __err, unsigned long long& __v) const
27506 { return _M_extract_int(__beg, __end, __io, __err, __v); }
27507
27508
27509 template<typename _CharT, typename _InIter>
27510 _InIter
27511 num_get<_CharT, _InIter>::
27512 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27513 ios_base::iostate& __err, float& __v) const
27514 {
27515 string __xtrc;
27516 __xtrc.reserve(32);
27517 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
27518 std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
27519 return __beg;
27520 }
27521
27522 template<typename _CharT, typename _InIter>
27523 _InIter
27524 num_get<_CharT, _InIter>::
27525 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27526 ios_base::iostate& __err, double& __v) const
27527 {
27528 string __xtrc;
27529 __xtrc.reserve(32);
27530 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
27531 std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
27532 return __beg;
27533 }
27534# 864 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
27535 template<typename _CharT, typename _InIter>
27536 _InIter
27537 num_get<_CharT, _InIter>::
27538 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27539 ios_base::iostate& __err, long double& __v) const
27540 {
27541 string __xtrc;
27542 __xtrc.reserve(32);
27543 __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
27544 std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
27545 return __beg;
27546 }
27547
27548 template<typename _CharT, typename _InIter>
27549 _InIter
27550 num_get<_CharT, _InIter>::
27551 do_get(iter_type __beg, iter_type __end, ios_base& __io,
27552 ios_base::iostate& __err, void*& __v) const
27553 {
27554
27555 typedef ios_base::fmtflags fmtflags;
27556 const fmtflags __fmt = __io.flags();
27557 __io.flags(__fmt & ~ios_base::basefield | ios_base::hex);
27558
27559 unsigned long __ul;
27560 __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
27561
27562
27563 __io.flags(__fmt);
27564
27565 if (!(__err & ios_base::failbit))
27566 __v = reinterpret_cast<void*>(__ul);
27567 return __beg;
27568 }
27569
27570
27571
27572 template<typename _CharT, typename _OutIter>
27573 void
27574 num_put<_CharT, _OutIter>::
27575 _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
27576 _CharT* __new, const _CharT* __cs, int& __len) const
27577 {
27578
27579
27580 __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, __cs,
27581 __w, __len, true);
27582 __len = static_cast<int>(__w);
27583 }
27584
27585
27586
27587 template<typename _CharT, typename _ValueT>
27588 int
27589 __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
27590 ios_base::fmtflags __flags, bool __dec)
27591 {
27592 _CharT* __buf = __bufend;
27593 if (__builtin_expect(__dec, true))
27594 {
27595
27596 do
27597 {
27598 *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
27599 __v /= 10;
27600 }
27601 while (__v != 0);
27602 }
27603 else if ((__flags & ios_base::basefield) == ios_base::oct)
27604 {
27605
27606 do
27607 {
27608 *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
27609 __v >>= 3;
27610 }
27611 while (__v != 0);
27612 }
27613 else
27614 {
27615
27616 const bool __uppercase = __flags & ios_base::uppercase;
27617 const int __case_offset = __uppercase ? __num_base::_S_oudigits
27618 : __num_base::_S_odigits;
27619 do
27620 {
27621 *--__buf = __lit[(__v & 0xf) + __case_offset];
27622 __v >>= 4;
27623 }
27624 while (__v != 0);
27625 }
27626 return __bufend - __buf;
27627 }
27628
27629
27630
27631 template<typename _CharT, typename _OutIter>
27632 void
27633 num_put<_CharT, _OutIter>::
27634 _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
27635 ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
27636 {
27637 _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
27638 __grouping_size, __cs, __cs + __len);
27639 __len = __p - __new;
27640 }
27641
27642 template<typename _CharT, typename _OutIter>
27643 template<typename _ValueT>
27644 _OutIter
27645 num_put<_CharT, _OutIter>::
27646 _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
27647 _ValueT __v) const
27648 {
27649 using __gnu_cxx::__add_unsigned;
27650 typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
27651 typedef __numpunct_cache<_CharT> __cache_type;
27652 __use_cache<__cache_type> __uc;
27653 const locale& __loc = __io._M_getloc();
27654 const __cache_type* __lc = __uc(__loc);
27655 const _CharT* __lit = __lc->_M_atoms_out;
27656 const ios_base::fmtflags __flags = __io.flags();
27657
27658
27659 const int __ilen = 5 * sizeof(_ValueT);
27660 _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27661 * __ilen));
27662
27663
27664
27665 const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
27666 const bool __dec = (__basefield != ios_base::oct
27667 && __basefield != ios_base::hex);
27668 const __unsigned_type __u = (__v > 0 || !__dec) ? __v : -__v;
27669 int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
27670 __cs += __ilen - __len;
27671
27672
27673 if (__lc->_M_use_grouping)
27674 {
27675
27676
27677 _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27678 * (__len + 1)
27679 * 2));
27680 _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
27681 __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
27682 __cs = __cs2 + 2;
27683 }
27684
27685
27686 if (__builtin_expect(__dec, true))
27687 {
27688
27689 if (__v > 0)
27690 {
27691 if (__flags & ios_base::showpos
27692 && numeric_limits<_ValueT>::is_signed)
27693 *--__cs = __lit[__num_base::_S_oplus], ++__len;
27694 }
27695 else if (__v)
27696 *--__cs = __lit[__num_base::_S_ominus], ++__len;
27697 }
27698 else if (__flags & ios_base::showbase && __v)
27699 {
27700 if (__basefield == ios_base::oct)
27701 *--__cs = __lit[__num_base::_S_odigits], ++__len;
27702 else
27703 {
27704
27705 const bool __uppercase = __flags & ios_base::uppercase;
27706 *--__cs = __lit[__num_base::_S_ox + __uppercase];
27707
27708 *--__cs = __lit[__num_base::_S_odigits];
27709 __len += 2;
27710 }
27711 }
27712
27713
27714 const streamsize __w = __io.width();
27715 if (__w > static_cast<streamsize>(__len))
27716 {
27717 _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27718 * __w));
27719 _M_pad(__fill, __w, __io, __cs3, __cs, __len);
27720 __cs = __cs3;
27721 }
27722 __io.width(0);
27723
27724
27725
27726 return std::__write(__s, __cs, __len);
27727 }
27728
27729 template<typename _CharT, typename _OutIter>
27730 void
27731 num_put<_CharT, _OutIter>::
27732 _M_group_float(const char* __grouping, size_t __grouping_size,
27733 _CharT __sep, const _CharT* __p, _CharT* __new,
27734 _CharT* __cs, int& __len) const
27735 {
27736
27737
27738
27739 const int __declen = __p ? __p - __cs : __len;
27740 _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
27741 __grouping_size,
27742 __cs, __cs + __declen);
27743
27744
27745 int __newlen = __p2 - __new;
27746 if (__p)
27747 {
27748 char_traits<_CharT>::copy(__p2, __p, __len - __declen);
27749 __newlen += __len - __declen;
27750 }
27751 __len = __newlen;
27752 }
27753# 1093 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
27754 template<typename _CharT, typename _OutIter>
27755 template<typename _ValueT>
27756 _OutIter
27757 num_put<_CharT, _OutIter>::
27758 _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
27759 _ValueT __v) const
27760 {
27761 typedef __numpunct_cache<_CharT> __cache_type;
27762 __use_cache<__cache_type> __uc;
27763 const locale& __loc = __io._M_getloc();
27764 const __cache_type* __lc = __uc(__loc);
27765
27766
27767 const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
27768
27769 const int __max_digits = numeric_limits<_ValueT>::digits10;
27770
27771
27772 int __len;
27773
27774 char __fbuf[16];
27775 __num_base::_S_format_float(__io, __fbuf, __mod);
27776
27777
27778
27779
27780 int __cs_size = __max_digits * 3;
27781 char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
27782 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
27783 __fbuf, __prec, __v);
27784
27785
27786 if (__len >= __cs_size)
27787 {
27788 __cs_size = __len + 1;
27789 __cs = static_cast<char*>(__builtin_alloca(__cs_size));
27790 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
27791 __fbuf, __prec, __v);
27792 }
27793# 1152 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
27794 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
27795
27796 _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27797 * __len));
27798 __ctype.widen(__cs, __cs + __len, __ws);
27799
27800
27801 _CharT* __wp = 0;
27802 const char* __p = char_traits<char>::find(__cs, __len, '.');
27803 if (__p)
27804 {
27805 __wp = __ws + (__p - __cs);
27806 *__wp = __lc->_M_decimal_point;
27807 }
27808
27809
27810
27811
27812 if (__lc->_M_use_grouping
27813 && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
27814 && __cs[1] >= '0' && __cs[2] >= '0')))
27815 {
27816
27817
27818 _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27819 * __len * 2));
27820
27821 streamsize __off = 0;
27822 if (__cs[0] == '-' || __cs[0] == '+')
27823 {
27824 __off = 1;
27825 __ws2[0] = __ws[0];
27826 __len -= 1;
27827 }
27828
27829 _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
27830 __lc->_M_thousands_sep, __wp, __ws2 + __off,
27831 __ws + __off, __len);
27832 __len += __off;
27833
27834 __ws = __ws2;
27835 }
27836
27837
27838 const streamsize __w = __io.width();
27839 if (__w > static_cast<streamsize>(__len))
27840 {
27841 _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27842 * __w));
27843 _M_pad(__fill, __w, __io, __ws3, __ws, __len);
27844 __ws = __ws3;
27845 }
27846 __io.width(0);
27847
27848
27849
27850 return std::__write(__s, __ws, __len);
27851 }
27852
27853 template<typename _CharT, typename _OutIter>
27854 _OutIter
27855 num_put<_CharT, _OutIter>::
27856 do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
27857 {
27858 const ios_base::fmtflags __flags = __io.flags();
27859 if ((__flags & ios_base::boolalpha) == 0)
27860 {
27861 const long __l = __v;
27862 __s = _M_insert_int(__s, __io, __fill, __l);
27863 }
27864 else
27865 {
27866 typedef __numpunct_cache<_CharT> __cache_type;
27867 __use_cache<__cache_type> __uc;
27868 const locale& __loc = __io._M_getloc();
27869 const __cache_type* __lc = __uc(__loc);
27870
27871 const _CharT* __name = __v ? __lc->_M_truename
27872 : __lc->_M_falsename;
27873 int __len = __v ? __lc->_M_truename_size
27874 : __lc->_M_falsename_size;
27875
27876 const streamsize __w = __io.width();
27877 if (__w > static_cast<streamsize>(__len))
27878 {
27879 _CharT* __cs
27880 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
27881 * __w));
27882 _M_pad(__fill, __w, __io, __cs, __name, __len);
27883 __name = __cs;
27884 }
27885 __io.width(0);
27886 __s = std::__write(__s, __name, __len);
27887 }
27888 return __s;
27889 }
27890
27891 template<typename _CharT, typename _OutIter>
27892 _OutIter
27893 num_put<_CharT, _OutIter>::
27894 do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
27895 { return _M_insert_int(__s, __io, __fill, __v); }
27896
27897 template<typename _CharT, typename _OutIter>
27898 _OutIter
27899 num_put<_CharT, _OutIter>::
27900 do_put(iter_type __s, ios_base& __io, char_type __fill,
27901 unsigned long __v) const
27902 { return _M_insert_int(__s, __io, __fill, __v); }
27903
27904
27905 template<typename _CharT, typename _OutIter>
27906 _OutIter
27907 num_put<_CharT, _OutIter>::
27908 do_put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const
27909 { return _M_insert_int(__s, __io, __fill, __v); }
27910
27911 template<typename _CharT, typename _OutIter>
27912 _OutIter
27913 num_put<_CharT, _OutIter>::
27914 do_put(iter_type __s, ios_base& __io, char_type __fill,
27915 unsigned long long __v) const
27916 { return _M_insert_int(__s, __io, __fill, __v); }
27917
27918
27919 template<typename _CharT, typename _OutIter>
27920 _OutIter
27921 num_put<_CharT, _OutIter>::
27922 do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
27923 { return _M_insert_float(__s, __io, __fill, char(), __v); }
27924# 1291 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
27925 template<typename _CharT, typename _OutIter>
27926 _OutIter
27927 num_put<_CharT, _OutIter>::
27928 do_put(iter_type __s, ios_base& __io, char_type __fill,
27929 long double __v) const
27930 { return _M_insert_float(__s, __io, __fill, 'L', __v); }
27931
27932 template<typename _CharT, typename _OutIter>
27933 _OutIter
27934 num_put<_CharT, _OutIter>::
27935 do_put(iter_type __s, ios_base& __io, char_type __fill,
27936 const void* __v) const
27937 {
27938 const ios_base::fmtflags __flags = __io.flags();
27939 const ios_base::fmtflags __fmt = ~(ios_base::basefield
27940 | ios_base::uppercase
27941 | ios_base::internal);
27942 __io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase));
27943
27944 __s = _M_insert_int(__s, __io, __fill,
27945 reinterpret_cast<unsigned long>(__v));
27946 __io.flags(__flags);
27947 return __s;
27948 }
27949
27950 template<typename _CharT, typename _InIter>
27951 template<bool _Intl>
27952 _InIter
27953 money_get<_CharT, _InIter>::
27954 _M_extract(iter_type __beg, iter_type __end, ios_base& __io,
27955 ios_base::iostate& __err, string& __units) const
27956 {
27957 typedef char_traits<_CharT> __traits_type;
27958 typedef typename string_type::size_type size_type;
27959 typedef money_base::part part;
27960 typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
27961
27962 const locale& __loc = __io._M_getloc();
27963 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
27964
27965 __use_cache<__cache_type> __uc;
27966 const __cache_type* __lc = __uc(__loc);
27967 const char_type* __lit = __lc->_M_atoms;
27968
27969
27970 bool __negative = false;
27971
27972 size_type __sign_size = 0;
27973
27974 const bool __mandatory_sign = (__lc->_M_positive_sign_size
27975 && __lc->_M_negative_sign_size);
27976
27977 string __grouping_tmp;
27978 if (__lc->_M_use_grouping)
27979 __grouping_tmp.reserve(32);
27980
27981 int __last_pos = 0;
27982
27983 int __n = 0;
27984
27985 bool __testvalid = true;
27986
27987 bool __testdecfound = false;
27988
27989
27990 string __res;
27991 __res.reserve(32);
27992
27993 const char_type* __lit_zero = __lit + money_base::_S_zero;
27994 const money_base::pattern __p = __lc->_M_neg_format;
27995 for (int __i = 0; __i < 4 && __testvalid; ++__i)
27996 {
27997 const part __which = static_cast<part>(__p.field[__i]);
27998 switch (__which)
27999 {
28000 case money_base::symbol:
28001
28002
28003
28004
28005 if (__io.flags() & ios_base::showbase || __sign_size > 1
28006 || __i == 0
28007 || (__i == 1 && (__mandatory_sign
28008 || (static_cast<part>(__p.field[0])
28009 == money_base::sign)
28010 || (static_cast<part>(__p.field[2])
28011 == money_base::space)))
28012 || (__i == 2 && ((static_cast<part>(__p.field[3])
28013 == money_base::value)
28014 || __mandatory_sign
28015 && (static_cast<part>(__p.field[3])
28016 == money_base::sign))))
28017 {
28018 const size_type __len = __lc->_M_curr_symbol_size;
28019 size_type __j = 0;
28020 for (; __beg != __end && __j < __len
28021 && *__beg == __lc->_M_curr_symbol[__j];
28022 ++__beg, ++__j);
28023 if (__j != __len
28024 && (__j || __io.flags() & ios_base::showbase))
28025 __testvalid = false;
28026 }
28027 break;
28028 case money_base::sign:
28029
28030 if (__lc->_M_positive_sign_size && __beg != __end
28031 && *__beg == __lc->_M_positive_sign[0])
28032 {
28033 __sign_size = __lc->_M_positive_sign_size;
28034 ++__beg;
28035 }
28036 else if (__lc->_M_negative_sign_size && __beg != __end
28037 && *__beg == __lc->_M_negative_sign[0])
28038 {
28039 __negative = true;
28040 __sign_size = __lc->_M_negative_sign_size;
28041 ++__beg;
28042 }
28043 else if (__lc->_M_positive_sign_size
28044 && !__lc->_M_negative_sign_size)
28045
28046
28047 __negative = true;
28048 else if (__mandatory_sign)
28049 __testvalid = false;
28050 break;
28051 case money_base::value:
28052
28053
28054 for (; __beg != __end; ++__beg)
28055 {
28056 const char_type __c = *__beg;
28057 const char_type* __q = __traits_type::find(__lit_zero,
28058 10, __c);
28059 if (__q != 0)
28060 {
28061 __res += money_base::_S_atoms[__q - __lit];
28062 ++__n;
28063 }
28064 else if (__c == __lc->_M_decimal_point
28065 && !__testdecfound)
28066 {
28067 __last_pos = __n;
28068 __n = 0;
28069 __testdecfound = true;
28070 }
28071 else if (__lc->_M_use_grouping
28072 && __c == __lc->_M_thousands_sep
28073 && !__testdecfound)
28074 {
28075 if (__n)
28076 {
28077
28078 __grouping_tmp += static_cast<char>(__n);
28079 __n = 0;
28080 }
28081 else
28082 {
28083 __testvalid = false;
28084 break;
28085 }
28086 }
28087 else
28088 break;
28089 }
28090 if (__res.empty())
28091 __testvalid = false;
28092 break;
28093 case money_base::space:
28094
28095 if (__beg != __end && __ctype.is(ctype_base::space, *__beg))
28096 ++__beg;
28097 else
28098 __testvalid = false;
28099 case money_base::none:
28100
28101 if (__i != 3)
28102 for (; __beg != __end
28103 && __ctype.is(ctype_base::space, *__beg); ++__beg);
28104 break;
28105 }
28106 }
28107
28108
28109 if (__sign_size > 1 && __testvalid)
28110 {
28111 const char_type* __sign = __negative ? __lc->_M_negative_sign
28112 : __lc->_M_positive_sign;
28113 size_type __i = 1;
28114 for (; __beg != __end && __i < __sign_size
28115 && *__beg == __sign[__i]; ++__beg, ++__i);
28116
28117 if (__i != __sign_size)
28118 __testvalid = false;
28119 }
28120
28121 if (__testvalid)
28122 {
28123
28124 if (__res.size() > 1)
28125 {
28126 const size_type __first = __res.find_first_not_of('0');
28127 const bool __only_zeros = __first == string::npos;
28128 if (__first)
28129 __res.erase(0, __only_zeros ? __res.size() - 1 : __first);
28130 }
28131
28132
28133 if (__negative && __res[0] != '0')
28134 __res.insert(__res.begin(), '-');
28135
28136
28137 if (__grouping_tmp.size())
28138 {
28139
28140 __grouping_tmp += static_cast<char>(__testdecfound ? __last_pos
28141 : __n);
28142 if (!std::__verify_grouping(__lc->_M_grouping,
28143 __lc->_M_grouping_size,
28144 __grouping_tmp))
28145 __err |= ios_base::failbit;
28146 }
28147
28148
28149 if (__testdecfound && __lc->_M_frac_digits > 0
28150 && __n != __lc->_M_frac_digits)
28151 __testvalid = false;
28152 }
28153
28154
28155 if (!__testvalid)
28156 __err |= ios_base::failbit;
28157 else
28158 __units.swap(__res);
28159
28160
28161 if (__beg == __end)
28162 __err |= ios_base::eofbit;
28163 return __beg;
28164 }
28165# 1547 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
28166 template<typename _CharT, typename _InIter>
28167 _InIter
28168 money_get<_CharT, _InIter>::
28169 do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
28170 ios_base::iostate& __err, long double& __units) const
28171 {
28172 string __str;
28173 __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
28174 : _M_extract<false>(__beg, __end, __io, __err, __str);
28175 std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
28176 return __beg;
28177 }
28178
28179 template<typename _CharT, typename _InIter>
28180 _InIter
28181 money_get<_CharT, _InIter>::
28182 do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
28183 ios_base::iostate& __err, string_type& __digits) const
28184 {
28185 typedef typename string::size_type size_type;
28186
28187 const locale& __loc = __io._M_getloc();
28188 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28189
28190 string __str;
28191 __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
28192 : _M_extract<false>(__beg, __end, __io, __err, __str);
28193 const size_type __len = __str.size();
28194 if (__len)
28195 {
28196 __digits.resize(__len);
28197 __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]);
28198 }
28199 return __beg;
28200 }
28201
28202 template<typename _CharT, typename _OutIter>
28203 template<bool _Intl>
28204 _OutIter
28205 money_put<_CharT, _OutIter>::
28206 _M_insert(iter_type __s, ios_base& __io, char_type __fill,
28207 const string_type& __digits) const
28208 {
28209 typedef typename string_type::size_type size_type;
28210 typedef money_base::part part;
28211 typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
28212
28213 const locale& __loc = __io._M_getloc();
28214 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28215
28216 __use_cache<__cache_type> __uc;
28217 const __cache_type* __lc = __uc(__loc);
28218 const char_type* __lit = __lc->_M_atoms;
28219
28220
28221
28222 const char_type* __beg = __digits.data();
28223
28224 money_base::pattern __p;
28225 const char_type* __sign;
28226 size_type __sign_size;
28227 if (!(*__beg == __lit[money_base::_S_minus]))
28228 {
28229 __p = __lc->_M_pos_format;
28230 __sign = __lc->_M_positive_sign;
28231 __sign_size = __lc->_M_positive_sign_size;
28232 }
28233 else
28234 {
28235 __p = __lc->_M_neg_format;
28236 __sign = __lc->_M_negative_sign;
28237 __sign_size = __lc->_M_negative_sign_size;
28238 if (__digits.size())
28239 ++__beg;
28240 }
28241
28242
28243 size_type __len = __ctype.scan_not(ctype_base::digit, __beg,
28244 __beg + __digits.size()) - __beg;
28245 if (__len)
28246 {
28247
28248
28249
28250 string_type __value;
28251 __value.reserve(2 * __len);
28252
28253
28254
28255 long __paddec = __len - __lc->_M_frac_digits;
28256 if (__paddec > 0)
28257 {
28258 if (__lc->_M_frac_digits < 0)
28259 __paddec = __len;
28260 if (__lc->_M_grouping_size)
28261 {
28262 __value.assign(2 * __paddec, char_type());
28263 _CharT* __vend =
28264 std::__add_grouping(&__value[0], __lc->_M_thousands_sep,
28265 __lc->_M_grouping,
28266 __lc->_M_grouping_size,
28267 __beg, __beg + __paddec);
28268 __value.erase(__vend - &__value[0]);
28269 }
28270 else
28271 __value.assign(__beg, __paddec);
28272 }
28273
28274
28275 if (__lc->_M_frac_digits > 0)
28276 {
28277 __value += __lc->_M_decimal_point;
28278 if (__paddec >= 0)
28279 __value.append(__beg + __paddec, __lc->_M_frac_digits);
28280 else
28281 {
28282
28283 __value.append(-__paddec, __lit[money_base::_S_zero]);
28284 __value.append(__beg, __len);
28285 }
28286 }
28287
28288
28289 const ios_base::fmtflags __f = __io.flags()
28290 & ios_base::adjustfield;
28291 __len = __value.size() + __sign_size;
28292 __len += ((__io.flags() & ios_base::showbase)
28293 ? __lc->_M_curr_symbol_size : 0);
28294
28295 string_type __res;
28296 __res.reserve(2 * __len);
28297
28298 const size_type __width = static_cast<size_type>(__io.width());
28299 const bool __testipad = (__f == ios_base::internal
28300 && __len < __width);
28301
28302 for (int __i = 0; __i < 4; ++__i)
28303 {
28304 const part __which = static_cast<part>(__p.field[__i]);
28305 switch (__which)
28306 {
28307 case money_base::symbol:
28308 if (__io.flags() & ios_base::showbase)
28309 __res.append(__lc->_M_curr_symbol,
28310 __lc->_M_curr_symbol_size);
28311 break;
28312 case money_base::sign:
28313
28314
28315
28316 if (__sign_size)
28317 __res += __sign[0];
28318 break;
28319 case money_base::value:
28320 __res += __value;
28321 break;
28322 case money_base::space:
28323
28324
28325
28326 if (__testipad)
28327 __res.append(__width - __len, __fill);
28328 else
28329 __res += __fill;
28330 break;
28331 case money_base::none:
28332 if (__testipad)
28333 __res.append(__width - __len, __fill);
28334 break;
28335 }
28336 }
28337
28338
28339 if (__sign_size > 1)
28340 __res.append(__sign + 1, __sign_size - 1);
28341
28342
28343 __len = __res.size();
28344 if (__width > __len)
28345 {
28346 if (__f == ios_base::left)
28347
28348 __res.append(__width - __len, __fill);
28349 else
28350
28351 __res.insert(0, __width - __len, __fill);
28352 __len = __width;
28353 }
28354
28355
28356 __s = std::__write(__s, __res.data(), __len);
28357 }
28358 __io.width(0);
28359 return __s;
28360 }
28361# 1752 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
28362 template<typename _CharT, typename _OutIter>
28363 _OutIter
28364 money_put<_CharT, _OutIter>::
28365 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
28366 long double __units) const
28367 {
28368 const locale __loc = __io.getloc();
28369 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28370
28371
28372 int __cs_size = 64;
28373 char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
28374
28375
28376 int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
28377 "%.*Lf", 0, __units);
28378
28379 if (__len >= __cs_size)
28380 {
28381 __cs_size = __len + 1;
28382 __cs = static_cast<char*>(__builtin_alloca(__cs_size));
28383 __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
28384 "%.*Lf", 0, __units);
28385 }
28386
28387
28388
28389
28390
28391
28392
28393 string_type __digits(__len, char_type());
28394 __ctype.widen(__cs, __cs + __len, &__digits[0]);
28395 return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
28396 : _M_insert<false>(__s, __io, __fill, __digits);
28397 }
28398
28399 template<typename _CharT, typename _OutIter>
28400 _OutIter
28401 money_put<_CharT, _OutIter>::
28402 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
28403 const string_type& __digits) const
28404 { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
28405 : _M_insert<false>(__s, __io, __fill, __digits); }
28406
28407
28408
28409
28410
28411
28412 template<typename _CharT, typename _InIter>
28413 time_base::dateorder
28414 time_get<_CharT, _InIter>::do_date_order() const
28415 { return time_base::no_order; }
28416
28417
28418
28419 template<typename _CharT, typename _InIter>
28420 _InIter
28421 time_get<_CharT, _InIter>::
28422 _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
28423 ios_base::iostate& __err, tm* __tm,
28424 const _CharT* __format) const
28425 {
28426 const locale& __loc = __io._M_getloc();
28427 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
28428 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28429 const size_t __len = char_traits<_CharT>::length(__format);
28430
28431 ios_base::iostate __tmperr = ios_base::goodbit;
28432 for (size_t __i = 0; __beg != __end && __i < __len && !__tmperr; ++__i)
28433 {
28434 if (__ctype.narrow(__format[__i], 0) == '%')
28435 {
28436
28437 char __c = __ctype.narrow(__format[++__i], 0);
28438 int __mem = 0;
28439 if (__c == 'E' || __c == 'O')
28440 __c = __ctype.narrow(__format[++__i], 0);
28441 switch (__c)
28442 {
28443 const char* __cs;
28444 _CharT __wcs[10];
28445 case 'a':
28446
28447 const char_type* __days1[7];
28448 __tp._M_days_abbreviated(__days1);
28449 __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days1,
28450 7, __io, __tmperr);
28451 break;
28452 case 'A':
28453
28454 const char_type* __days2[7];
28455 __tp._M_days(__days2);
28456 __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days2,
28457 7, __io, __tmperr);
28458 break;
28459 case 'h':
28460 case 'b':
28461
28462 const char_type* __months1[12];
28463 __tp._M_months_abbreviated(__months1);
28464 __beg = _M_extract_name(__beg, __end, __tm->tm_mon,
28465 __months1, 12, __io, __tmperr);
28466 break;
28467 case 'B':
28468
28469 const char_type* __months2[12];
28470 __tp._M_months(__months2);
28471 __beg = _M_extract_name(__beg, __end, __tm->tm_mon,
28472 __months2, 12, __io, __tmperr);
28473 break;
28474 case 'c':
28475
28476 const char_type* __dt[2];
28477 __tp._M_date_time_formats(__dt);
28478 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
28479 __tm, __dt[0]);
28480 break;
28481 case 'd':
28482
28483 __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2,
28484 __io, __tmperr);
28485 break;
28486 case 'e':
28487
28488
28489 if (__ctype.is(ctype_base::space, *__beg))
28490 __beg = _M_extract_num(++__beg, __end, __tm->tm_mday, 1, 9,
28491 1, __io, __tmperr);
28492 else
28493 __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 10, 31,
28494 2, __io, __tmperr);
28495 break;
28496 case 'D':
28497
28498 __cs = "%m/%d/%y";
28499 __ctype.widen(__cs, __cs + 9, __wcs);
28500 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
28501 __tm, __wcs);
28502 break;
28503 case 'H':
28504
28505 __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2,
28506 __io, __tmperr);
28507 break;
28508 case 'I':
28509
28510 __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2,
28511 __io, __tmperr);
28512 break;
28513 case 'm':
28514
28515 __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2,
28516 __io, __tmperr);
28517 if (!__tmperr)
28518 __tm->tm_mon = __mem - 1;
28519 break;
28520 case 'M':
28521
28522 __beg = _M_extract_num(__beg, __end, __tm->tm_min, 0, 59, 2,
28523 __io, __tmperr);
28524 break;
28525 case 'n':
28526 if (__ctype.narrow(*__beg, 0) == '\n')
28527 ++__beg;
28528 else
28529 __tmperr |= ios_base::failbit;
28530 break;
28531 case 'R':
28532
28533 __cs = "%H:%M";
28534 __ctype.widen(__cs, __cs + 6, __wcs);
28535 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
28536 __tm, __wcs);
28537 break;
28538 case 'S':
28539
28540
28541
28542 __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 60, 2,
28543
28544
28545
28546 __io, __tmperr);
28547 break;
28548 case 't':
28549 if (__ctype.narrow(*__beg, 0) == '\t')
28550 ++__beg;
28551 else
28552 __tmperr |= ios_base::failbit;
28553 break;
28554 case 'T':
28555
28556 __cs = "%H:%M:%S";
28557 __ctype.widen(__cs, __cs + 9, __wcs);
28558 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
28559 __tm, __wcs);
28560 break;
28561 case 'x':
28562
28563 const char_type* __dates[2];
28564 __tp._M_date_formats(__dates);
28565 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
28566 __tm, __dates[0]);
28567 break;
28568 case 'X':
28569
28570 const char_type* __times[2];
28571 __tp._M_time_formats(__times);
28572 __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
28573 __tm, __times[0]);
28574 break;
28575 case 'y':
28576 case 'C':
28577
28578 __beg = _M_extract_num(__beg, __end, __tm->tm_year, 0, 99, 2,
28579 __io, __tmperr);
28580 break;
28581 case 'Y':
28582
28583 __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4,
28584 __io, __tmperr);
28585 if (!__tmperr)
28586 __tm->tm_year = __mem - 1900;
28587 break;
28588 case 'Z':
28589
28590 if (__ctype.is(ctype_base::upper, *__beg))
28591 {
28592 int __tmp;
28593 __beg = _M_extract_name(__beg, __end, __tmp,
28594 __timepunct_cache<_CharT>::_S_timezones,
28595 14, __io, __tmperr);
28596
28597
28598 if (__beg != __end && !__tmperr && __tmp == 0
28599 && (*__beg == __ctype.widen('-')
28600 || *__beg == __ctype.widen('+')))
28601 {
28602 __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2,
28603 __io, __tmperr);
28604 __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2,
28605 __io, __tmperr);
28606 }
28607 }
28608 else
28609 __tmperr |= ios_base::failbit;
28610 break;
28611 default:
28612
28613 __tmperr |= ios_base::failbit;
28614 }
28615 }
28616 else
28617 {
28618
28619 if (__format[__i] == *__beg)
28620 ++__beg;
28621 else
28622 __tmperr |= ios_base::failbit;
28623 }
28624 }
28625
28626 if (__tmperr)
28627 __err |= ios_base::failbit;
28628
28629 return __beg;
28630 }
28631
28632 template<typename _CharT, typename _InIter>
28633 _InIter
28634 time_get<_CharT, _InIter>::
28635 _M_extract_num(iter_type __beg, iter_type __end, int& __member,
28636 int __min, int __max, size_t __len,
28637 ios_base& __io, ios_base::iostate& __err) const
28638 {
28639 const locale& __loc = __io._M_getloc();
28640 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28641
28642
28643 int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1);
28644
28645 ++__min;
28646 size_t __i = 0;
28647 int __value = 0;
28648 for (; __beg != __end && __i < __len; ++__beg, ++__i)
28649 {
28650 const char __c = __ctype.narrow(*__beg, '*');
28651 if (__c >= '0' && __c <= '9')
28652 {
28653 __value = __value * 10 + (__c - '0');
28654 const int __valuec = __value * __mult;
28655 if (__valuec > __max || __valuec + __mult < __min)
28656 break;
28657 __mult /= 10;
28658 }
28659 else
28660 break;
28661 }
28662 if (__i == __len)
28663 __member = __value;
28664 else
28665 __err |= ios_base::failbit;
28666
28667 return __beg;
28668 }
28669
28670
28671
28672 template<typename _CharT, typename _InIter>
28673 _InIter
28674 time_get<_CharT, _InIter>::
28675 _M_extract_name(iter_type __beg, iter_type __end, int& __member,
28676 const _CharT** __names, size_t __indexlen,
28677 ios_base& __io, ios_base::iostate& __err) const
28678 {
28679 typedef char_traits<_CharT> __traits_type;
28680 const locale& __loc = __io._M_getloc();
28681 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28682
28683 int* __matches = static_cast<int*>(__builtin_alloca(sizeof(int)
28684 * __indexlen));
28685 size_t __nmatches = 0;
28686 size_t __pos = 0;
28687 bool __testvalid = true;
28688 const char_type* __name;
28689
28690
28691
28692
28693
28694 if (__beg != __end)
28695 {
28696 const char_type __c = *__beg;
28697 for (size_t __i1 = 0; __i1 < __indexlen; ++__i1)
28698 if (__c == __names[__i1][0]
28699 || __c == __ctype.toupper(__names[__i1][0]))
28700 __matches[__nmatches++] = __i1;
28701 }
28702
28703 while (__nmatches > 1)
28704 {
28705
28706 size_t __minlen = __traits_type::length(__names[__matches[0]]);
28707 for (size_t __i2 = 1; __i2 < __nmatches; ++__i2)
28708 __minlen = std::min(__minlen,
28709 __traits_type::length(__names[__matches[__i2]]));
28710 ++__beg, ++__pos;
28711 if (__pos < __minlen && __beg != __end)
28712 for (size_t __i3 = 0; __i3 < __nmatches;)
28713 {
28714 __name = __names[__matches[__i3]];
28715 if (!(__name[__pos] == *__beg))
28716 __matches[__i3] = __matches[--__nmatches];
28717 else
28718 ++__i3;
28719 }
28720 else
28721 break;
28722 }
28723
28724 if (__nmatches == 1)
28725 {
28726
28727 ++__beg, ++__pos;
28728 __name = __names[__matches[0]];
28729 const size_t __len = __traits_type::length(__name);
28730 while (__pos < __len && __beg != __end && __name[__pos] == *__beg)
28731 ++__beg, ++__pos;
28732
28733 if (__len == __pos)
28734 __member = __matches[0];
28735 else
28736 __testvalid = false;
28737 }
28738 else
28739 __testvalid = false;
28740 if (!__testvalid)
28741 __err |= ios_base::failbit;
28742
28743 return __beg;
28744 }
28745
28746 template<typename _CharT, typename _InIter>
28747 _InIter
28748 time_get<_CharT, _InIter>::
28749 do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
28750 ios_base::iostate& __err, tm* __tm) const
28751 {
28752 const locale& __loc = __io._M_getloc();
28753 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
28754 const char_type* __times[2];
28755 __tp._M_time_formats(__times);
28756 __beg = _M_extract_via_format(__beg, __end, __io, __err,
28757 __tm, __times[0]);
28758 if (__beg == __end)
28759 __err |= ios_base::eofbit;
28760 return __beg;
28761 }
28762
28763 template<typename _CharT, typename _InIter>
28764 _InIter
28765 time_get<_CharT, _InIter>::
28766 do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
28767 ios_base::iostate& __err, tm* __tm) const
28768 {
28769 const locale& __loc = __io._M_getloc();
28770 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
28771 const char_type* __dates[2];
28772 __tp._M_date_formats(__dates);
28773 __beg = _M_extract_via_format(__beg, __end, __io, __err,
28774 __tm, __dates[0]);
28775 if (__beg == __end)
28776 __err |= ios_base::eofbit;
28777 return __beg;
28778 }
28779
28780 template<typename _CharT, typename _InIter>
28781 _InIter
28782 time_get<_CharT, _InIter>::
28783 do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
28784 ios_base::iostate& __err, tm* __tm) const
28785 {
28786 typedef char_traits<_CharT> __traits_type;
28787 const locale& __loc = __io._M_getloc();
28788 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
28789 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28790 const char_type* __days[7];
28791 __tp._M_days_abbreviated(__days);
28792 int __tmpwday;
28793 ios_base::iostate __tmperr = ios_base::goodbit;
28794 __beg = _M_extract_name(__beg, __end, __tmpwday, __days, 7,
28795 __io, __tmperr);
28796
28797
28798
28799
28800
28801
28802
28803 if (!__tmperr && __beg != __end)
28804 {
28805 size_t __pos = __traits_type::length(__days[__tmpwday]);
28806 __tp._M_days(__days);
28807 const char_type* __name = __days[__tmpwday];
28808 if (__name[__pos] == *__beg)
28809 {
28810
28811 const size_t __len = __traits_type::length(__name);
28812 while (__pos < __len && __beg != __end
28813 && __name[__pos] == *__beg)
28814 ++__beg, ++__pos;
28815 if (__len != __pos)
28816 __tmperr |= ios_base::failbit;
28817 }
28818 }
28819 if (!__tmperr)
28820 __tm->tm_wday = __tmpwday;
28821 else
28822 __err |= ios_base::failbit;
28823
28824 if (__beg == __end)
28825 __err |= ios_base::eofbit;
28826 return __beg;
28827 }
28828
28829 template<typename _CharT, typename _InIter>
28830 _InIter
28831 time_get<_CharT, _InIter>::
28832 do_get_monthname(iter_type __beg, iter_type __end,
28833 ios_base& __io, ios_base::iostate& __err, tm* __tm) const
28834 {
28835 typedef char_traits<_CharT> __traits_type;
28836 const locale& __loc = __io._M_getloc();
28837 const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
28838 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28839 const char_type* __months[12];
28840 __tp._M_months_abbreviated(__months);
28841 int __tmpmon;
28842 ios_base::iostate __tmperr = ios_base::goodbit;
28843 __beg = _M_extract_name(__beg, __end, __tmpmon, __months, 12,
28844 __io, __tmperr);
28845
28846
28847
28848
28849
28850
28851
28852 if (!__tmperr && __beg != __end)
28853 {
28854 size_t __pos = __traits_type::length(__months[__tmpmon]);
28855 __tp._M_months(__months);
28856 const char_type* __name = __months[__tmpmon];
28857 if (__name[__pos] == *__beg)
28858 {
28859
28860 const size_t __len = __traits_type::length(__name);
28861 while (__pos < __len && __beg != __end
28862 && __name[__pos] == *__beg)
28863 ++__beg, ++__pos;
28864 if (__len != __pos)
28865 __tmperr |= ios_base::failbit;
28866 }
28867 }
28868 if (!__tmperr)
28869 __tm->tm_mon = __tmpmon;
28870 else
28871 __err |= ios_base::failbit;
28872
28873 if (__beg == __end)
28874 __err |= ios_base::eofbit;
28875 return __beg;
28876 }
28877
28878 template<typename _CharT, typename _InIter>
28879 _InIter
28880 time_get<_CharT, _InIter>::
28881 do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
28882 ios_base::iostate& __err, tm* __tm) const
28883 {
28884 const locale& __loc = __io._M_getloc();
28885 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
28886
28887 size_t __i = 0;
28888 int __value = 0;
28889 for (; __beg != __end && __i < 4; ++__beg, ++__i)
28890 {
28891 const char __c = __ctype.narrow(*__beg, '*');
28892 if (__c >= '0' && __c <= '9')
28893 __value = __value * 10 + (__c - '0');
28894 else
28895 break;
28896 }
28897 if (__i == 2 || __i == 4)
28898 __tm->tm_year = __i == 2 ? __value : __value - 1900;
28899 else
28900 __err |= ios_base::failbit;
28901
28902 if (__beg == __end)
28903 __err |= ios_base::eofbit;
28904 return __beg;
28905 }
28906
28907 template<typename _CharT, typename _OutIter>
28908 _OutIter
28909 time_put<_CharT, _OutIter>::
28910 put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
28911 const _CharT* __beg, const _CharT* __end) const
28912 {
28913 const locale& __loc = __io._M_getloc();
28914 ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
28915 for (; __beg != __end; ++__beg)
28916 if (__ctype.narrow(*__beg, 0) != '%')
28917 {
28918 *__s = *__beg;
28919 ++__s;
28920 }
28921 else if (++__beg != __end)
28922 {
28923 char __format;
28924 char __mod = 0;
28925 const char __c = __ctype.narrow(*__beg, 0);
28926 if (__c != 'E' && __c != 'O')
28927 __format = __c;
28928 else if (++__beg != __end)
28929 {
28930 __mod = __c;
28931 __format = __ctype.narrow(*__beg, 0);
28932 }
28933 else
28934 break;
28935 __s = this->do_put(__s, __io, __fill, __tm, __format, __mod);
28936 }
28937 else
28938 break;
28939 return __s;
28940 }
28941
28942 template<typename _CharT, typename _OutIter>
28943 _OutIter
28944 time_put<_CharT, _OutIter>::
28945 do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm,
28946 char __format, char __mod) const
28947 {
28948 const locale& __loc = __io._M_getloc();
28949 ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
28950 __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
28951
28952
28953
28954 const size_t __maxlen = 128;
28955 char_type* __res =
28956 static_cast<char_type*>(__builtin_alloca(sizeof(char_type) * __maxlen));
28957
28958
28959
28960
28961
28962
28963 char_type __fmt[4];
28964 __fmt[0] = __ctype.widen('%');
28965 if (!__mod)
28966 {
28967 __fmt[1] = __format;
28968 __fmt[2] = char_type();
28969 }
28970 else
28971 {
28972 __fmt[1] = __mod;
28973 __fmt[2] = __format;
28974 __fmt[3] = char_type();
28975 }
28976
28977 __tp._M_put(__res, __maxlen, __fmt, __tm);
28978
28979
28980 return std::__write(__s, __res, char_traits<char_type>::length(__res));
28981 }
28982
28983
28984 template<typename _CharT>
28985 int
28986 collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const
28987 { return 0; }
28988
28989
28990 template<typename _CharT>
28991 size_t
28992 collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const
28993 { return 0; }
28994
28995 template<typename _CharT>
28996 int
28997 collate<_CharT>::
28998 do_compare(const _CharT* __lo1, const _CharT* __hi1,
28999 const _CharT* __lo2, const _CharT* __hi2) const
29000 {
29001
29002
29003 const string_type __one(__lo1, __hi1);
29004 const string_type __two(__lo2, __hi2);
29005
29006 const _CharT* __p = __one.c_str();
29007 const _CharT* __pend = __one.data() + __one.length();
29008 const _CharT* __q = __two.c_str();
29009 const _CharT* __qend = __two.data() + __two.length();
29010
29011
29012
29013
29014 for (;;)
29015 {
29016 const int __res = _M_compare(__p, __q);
29017 if (__res)
29018 return __res;
29019
29020 __p += char_traits<_CharT>::length(__p);
29021 __q += char_traits<_CharT>::length(__q);
29022 if (__p == __pend && __q == __qend)
29023 return 0;
29024 else if (__p == __pend)
29025 return -1;
29026 else if (__q == __qend)
29027 return 1;
29028
29029 __p++;
29030 __q++;
29031 }
29032 }
29033
29034 template<typename _CharT>
29035 typename collate<_CharT>::string_type
29036 collate<_CharT>::
29037 do_transform(const _CharT* __lo, const _CharT* __hi) const
29038 {
29039 string_type __ret;
29040
29041
29042 const string_type __str(__lo, __hi);
29043
29044 const _CharT* __p = __str.c_str();
29045 const _CharT* __pend = __str.data() + __str.length();
29046
29047 size_t __len = (__hi - __lo) * 2;
29048
29049 _CharT* __c = new _CharT[__len];
29050
29051 try
29052 {
29053
29054
29055
29056 for (;;)
29057 {
29058
29059 size_t __res = _M_transform(__c, __p, __len);
29060
29061
29062 if (__res >= __len)
29063 {
29064 __len = __res + 1;
29065 delete [] __c, __c = 0;
29066 __c = new _CharT[__len];
29067 __res = _M_transform(__c, __p, __len);
29068 }
29069
29070 __ret.append(__c, __res);
29071 __p += char_traits<_CharT>::length(__p);
29072 if (__p == __pend)
29073 break;
29074
29075 __p++;
29076 __ret.push_back(_CharT());
29077 }
29078 }
29079 catch(...)
29080 {
29081 delete [] __c;
29082 throw;
29083 }
29084
29085 delete [] __c;
29086
29087 return __ret;
29088 }
29089
29090 template<typename _CharT>
29091 long
29092 collate<_CharT>::
29093 do_hash(const _CharT* __lo, const _CharT* __hi) const
29094 {
29095 unsigned long __val = 0;
29096 for (; __lo < __hi; ++__lo)
29097 __val = *__lo + ((__val << 7) |
29098 (__val >> (numeric_limits<unsigned long>::digits - 7)));
29099 return static_cast<long>(__val);
29100 }
29101# 2503 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
29102 template<typename _CharT, typename _Traits>
29103 void
29104 __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
29105 _CharT* __news, const _CharT* __olds,
29106 const streamsize __newlen,
29107 const streamsize __oldlen, const bool __num)
29108 {
29109 const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
29110 const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
29111
29112
29113 if (__adjust == ios_base::left)
29114 {
29115 _Traits::copy(__news, const_cast<_CharT*>(__olds), __oldlen);
29116 _Traits::assign(__news + __oldlen, __plen, __fill);
29117 return;
29118 }
29119
29120 size_t __mod = 0;
29121 if (__adjust == ios_base::internal && __num)
29122 {
29123
29124
29125
29126 const locale& __loc = __io._M_getloc();
29127 const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
29128
29129 const bool __testsign = (__ctype.widen('-') == __olds[0]
29130 || __ctype.widen('+') == __olds[0]);
29131 const bool __testhex = (__ctype.widen('0') == __olds[0]
29132 && __oldlen > 1
29133 && (__ctype.widen('x') == __olds[1]
29134 || __ctype.widen('X') == __olds[1]));
29135 if (__testhex)
29136 {
29137 __news[0] = __olds[0];
29138 __news[1] = __olds[1];
29139 __mod = 2;
29140 __news += 2;
29141 }
29142 else if (__testsign)
29143 {
29144 __news[0] = __olds[0];
29145 __mod = 1;
29146 ++__news;
29147 }
29148
29149 }
29150 _Traits::assign(__news, __plen, __fill);
29151 _Traits::copy(__news + __plen, const_cast<_CharT*>(__olds + __mod),
29152 __oldlen - __mod);
29153 }
29154
29155 bool
29156 __verify_grouping(const char* __grouping, size_t __grouping_size,
29157 const string& __grouping_tmp)
29158 {
29159 const size_t __n = __grouping_tmp.size() - 1;
29160 const size_t __min = std::min(__n, size_t(__grouping_size - 1));
29161 size_t __i = __n;
29162 bool __test = true;
29163
29164
29165
29166
29167 for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
29168 __test = __grouping_tmp[__i] == __grouping[__j];
29169 for (; __i && __test; --__i)
29170 __test = __grouping_tmp[__i] == __grouping[__min];
29171
29172
29173
29174 if (static_cast<signed char>(__grouping[__min]) > 0)
29175 __test &= __grouping_tmp[0] <= __grouping[__min];
29176 return __test;
29177 }
29178
29179 template<typename _CharT>
29180 _CharT*
29181 __add_grouping(_CharT* __s, _CharT __sep,
29182 const char* __gbeg, size_t __gsize,
29183 const _CharT* __first, const _CharT* __last)
29184 {
29185 size_t __idx = 0;
29186 size_t __ctr = 0;
29187
29188 while (__last - __first > __gbeg[__idx]
29189 && static_cast<signed char>(__gbeg[__idx]) > 0)
29190 {
29191 __last -= __gbeg[__idx];
29192 __idx < __gsize - 1 ? ++__idx : ++__ctr;
29193 }
29194
29195 while (__first != __last)
29196 *__s++ = *__first++;
29197
29198 while (__ctr--)
29199 {
29200 *__s++ = __sep;
29201 for (char __i = __gbeg[__idx]; __i > 0; --__i)
29202 *__s++ = *__first++;
29203 }
29204
29205 while (__idx--)
29206 {
29207 *__s++ = __sep;
29208 for (char __i = __gbeg[__idx]; __i > 0; --__i)
29209 *__s++ = *__first++;
29210 }
29211
29212 return __s;
29213 }
29214
29215
29216
29217
29218
29219 extern template class moneypunct<char, false>;
29220 extern template class moneypunct<char, true>;
29221 extern template class moneypunct_byname<char, false>;
29222 extern template class moneypunct_byname<char, true>;
29223 extern template class money_get<char>;
29224 extern template class money_put<char>;
29225 extern template class numpunct<char>;
29226 extern template class numpunct_byname<char>;
29227 extern template class num_get<char>;
29228 extern template class num_put<char>;
29229 extern template class __timepunct<char>;
29230 extern template class time_put<char>;
29231 extern template class time_put_byname<char>;
29232 extern template class time_get<char>;
29233 extern template class time_get_byname<char>;
29234 extern template class messages<char>;
29235 extern template class messages_byname<char>;
29236 extern template class ctype_byname<char>;
29237 extern template class codecvt_byname<char, char, mbstate_t>;
29238 extern template class collate<char>;
29239 extern template class collate_byname<char>;
29240
29241 extern template
29242 const codecvt<char, char, mbstate_t>&
29243 use_facet<codecvt<char, char, mbstate_t> >(const locale&);
29244
29245 extern template
29246 const collate<char>&
29247 use_facet<collate<char> >(const locale&);
29248
29249 extern template
29250 const numpunct<char>&
29251 use_facet<numpunct<char> >(const locale&);
29252
29253 extern template
29254 const num_put<char>&
29255 use_facet<num_put<char> >(const locale&);
29256
29257 extern template
29258 const num_get<char>&
29259 use_facet<num_get<char> >(const locale&);
29260
29261 extern template
29262 const moneypunct<char, true>&
29263 use_facet<moneypunct<char, true> >(const locale&);
29264
29265 extern template
29266 const moneypunct<char, false>&
29267 use_facet<moneypunct<char, false> >(const locale&);
29268
29269 extern template
29270 const money_put<char>&
29271 use_facet<money_put<char> >(const locale&);
29272
29273 extern template
29274 const money_get<char>&
29275 use_facet<money_get<char> >(const locale&);
29276
29277 extern template
29278 const __timepunct<char>&
29279 use_facet<__timepunct<char> >(const locale&);
29280
29281 extern template
29282 const time_put<char>&
29283 use_facet<time_put<char> >(const locale&);
29284
29285 extern template
29286 const time_get<char>&
29287 use_facet<time_get<char> >(const locale&);
29288
29289 extern template
29290 const messages<char>&
29291 use_facet<messages<char> >(const locale&);
29292
29293 extern template
29294 bool
29295 has_facet<ctype<char> >(const locale&);
29296
29297 extern template
29298 bool
29299 has_facet<codecvt<char, char, mbstate_t> >(const locale&);
29300
29301 extern template
29302 bool
29303 has_facet<collate<char> >(const locale&);
29304
29305 extern template
29306 bool
29307 has_facet<numpunct<char> >(const locale&);
29308
29309 extern template
29310 bool
29311 has_facet<num_put<char> >(const locale&);
29312
29313 extern template
29314 bool
29315 has_facet<num_get<char> >(const locale&);
29316
29317 extern template
29318 bool
29319 has_facet<moneypunct<char> >(const locale&);
29320
29321 extern template
29322 bool
29323 has_facet<money_put<char> >(const locale&);
29324
29325 extern template
29326 bool
29327 has_facet<money_get<char> >(const locale&);
29328
29329 extern template
29330 bool
29331 has_facet<__timepunct<char> >(const locale&);
29332
29333 extern template
29334 bool
29335 has_facet<time_put<char> >(const locale&);
29336
29337 extern template
29338 bool
29339 has_facet<time_get<char> >(const locale&);
29340
29341 extern template
29342 bool
29343 has_facet<messages<char> >(const locale&);
29344
29345
29346 extern template class moneypunct<wchar_t, false>;
29347 extern template class moneypunct<wchar_t, true>;
29348 extern template class moneypunct_byname<wchar_t, false>;
29349 extern template class moneypunct_byname<wchar_t, true>;
29350 extern template class money_get<wchar_t>;
29351 extern template class money_put<wchar_t>;
29352 extern template class numpunct<wchar_t>;
29353 extern template class numpunct_byname<wchar_t>;
29354 extern template class num_get<wchar_t>;
29355 extern template class num_put<wchar_t>;
29356 extern template class __timepunct<wchar_t>;
29357 extern template class time_put<wchar_t>;
29358 extern template class time_put_byname<wchar_t>;
29359 extern template class time_get<wchar_t>;
29360 extern template class time_get_byname<wchar_t>;
29361 extern template class messages<wchar_t>;
29362 extern template class messages_byname<wchar_t>;
29363 extern template class ctype_byname<wchar_t>;
29364 extern template class codecvt_byname<wchar_t, char, mbstate_t>;
29365 extern template class collate<wchar_t>;
29366 extern template class collate_byname<wchar_t>;
29367
29368 extern template
29369 const codecvt<wchar_t, char, mbstate_t>&
29370 use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
29371
29372 extern template
29373 const collate<wchar_t>&
29374 use_facet<collate<wchar_t> >(const locale&);
29375
29376 extern template
29377 const numpunct<wchar_t>&
29378 use_facet<numpunct<wchar_t> >(const locale&);
29379
29380 extern template
29381 const num_put<wchar_t>&
29382 use_facet<num_put<wchar_t> >(const locale&);
29383
29384 extern template
29385 const num_get<wchar_t>&
29386 use_facet<num_get<wchar_t> >(const locale&);
29387
29388 extern template
29389 const moneypunct<wchar_t, true>&
29390 use_facet<moneypunct<wchar_t, true> >(const locale&);
29391
29392 extern template
29393 const moneypunct<wchar_t, false>&
29394 use_facet<moneypunct<wchar_t, false> >(const locale&);
29395
29396 extern template
29397 const money_put<wchar_t>&
29398 use_facet<money_put<wchar_t> >(const locale&);
29399
29400 extern template
29401 const money_get<wchar_t>&
29402 use_facet<money_get<wchar_t> >(const locale&);
29403
29404 extern template
29405 const __timepunct<wchar_t>&
29406 use_facet<__timepunct<wchar_t> >(const locale&);
29407
29408 extern template
29409 const time_put<wchar_t>&
29410 use_facet<time_put<wchar_t> >(const locale&);
29411
29412 extern template
29413 const time_get<wchar_t>&
29414 use_facet<time_get<wchar_t> >(const locale&);
29415
29416 extern template
29417 const messages<wchar_t>&
29418 use_facet<messages<wchar_t> >(const locale&);
29419
29420 extern template
29421 bool
29422 has_facet<ctype<wchar_t> >(const locale&);
29423
29424 extern template
29425 bool
29426 has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
29427
29428 extern template
29429 bool
29430 has_facet<collate<wchar_t> >(const locale&);
29431
29432 extern template
29433 bool
29434 has_facet<numpunct<wchar_t> >(const locale&);
29435
29436 extern template
29437 bool
29438 has_facet<num_put<wchar_t> >(const locale&);
29439
29440 extern template
29441 bool
29442 has_facet<num_get<wchar_t> >(const locale&);
29443
29444 extern template
29445 bool
29446 has_facet<moneypunct<wchar_t> >(const locale&);
29447
29448 extern template
29449 bool
29450 has_facet<money_put<wchar_t> >(const locale&);
29451
29452 extern template
29453 bool
29454 has_facet<money_get<wchar_t> >(const locale&);
29455
29456 extern template
29457 bool
29458 has_facet<__timepunct<wchar_t> >(const locale&);
29459
29460 extern template
29461 bool
29462 has_facet<time_put<wchar_t> >(const locale&);
29463
29464 extern template
29465 bool
29466 has_facet<time_get<wchar_t> >(const locale&);
29467
29468 extern template
29469 bool
29470 has_facet<messages<wchar_t> >(const locale&);
29471
29472
29473
29474}
29475# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/locale" 2 3
29476# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream.tcc" 2 3
29477
29478namespace std __attribute__ ((__visibility__ ("default"))) {
29479
29480 template<typename _CharT, typename _Traits>
29481 basic_ostream<_CharT, _Traits>::sentry::
29482 sentry(basic_ostream<_CharT, _Traits>& __os)
29483 : _M_ok(false), _M_os(__os)
29484 {
29485
29486 if (__os.tie() && __os.good())
29487 __os.tie()->flush();
29488
29489 if (__os.good())
29490 _M_ok = true;
29491 else
29492 __os.setstate(ios_base::failbit);
29493 }
29494
29495 template<typename _CharT, typename _Traits>
29496 template<typename _ValueT>
29497 basic_ostream<_CharT, _Traits>&
29498 basic_ostream<_CharT, _Traits>::
29499 _M_insert(_ValueT __v)
29500 {
29501 sentry __cerb(*this);
29502 if (__cerb)
29503 {
29504 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
29505 try
29506 {
29507 const __num_put_type& __np = __check_facet(this->_M_num_put);
29508 if (__np.put(*this, *this, this->fill(), __v).failed())
29509 __err |= ios_base::badbit;
29510 }
29511 catch(...)
29512 { this->_M_setstate(ios_base::badbit); }
29513 if (__err)
29514 this->setstate(__err);
29515 }
29516 return *this;
29517 }
29518
29519 template<typename _CharT, typename _Traits>
29520 basic_ostream<_CharT, _Traits>&
29521 basic_ostream<_CharT, _Traits>::
29522 operator<<(short __n)
29523 {
29524
29525
29526 const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
29527 if (__fmt == ios_base::oct || __fmt == ios_base::hex)
29528 return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
29529 else
29530 return _M_insert(static_cast<long>(__n));
29531 }
29532
29533 template<typename _CharT, typename _Traits>
29534 basic_ostream<_CharT, _Traits>&
29535 basic_ostream<_CharT, _Traits>::
29536 operator<<(int __n)
29537 {
29538
29539
29540 const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
29541 if (__fmt == ios_base::oct || __fmt == ios_base::hex)
29542 return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
29543 else
29544 return _M_insert(static_cast<long>(__n));
29545 }
29546
29547 template<typename _CharT, typename _Traits>
29548 basic_ostream<_CharT, _Traits>&
29549 basic_ostream<_CharT, _Traits>::
29550 operator<<(__streambuf_type* __sbin)
29551 {
29552 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
29553 sentry __cerb(*this);
29554 if (__cerb && __sbin)
29555 {
29556 try
29557 {
29558 if (!__copy_streambufs(__sbin, this->rdbuf()))
29559 __err |= ios_base::failbit;
29560 }
29561 catch(...)
29562 { this->_M_setstate(ios_base::failbit); }
29563 }
29564 else if (!__sbin)
29565 __err |= ios_base::badbit;
29566 if (__err)
29567 this->setstate(__err);
29568 return *this;
29569 }
29570
29571 template<typename _CharT, typename _Traits>
29572 basic_ostream<_CharT, _Traits>&
29573 basic_ostream<_CharT, _Traits>::
29574 put(char_type __c)
29575 {
29576
29577
29578
29579
29580
29581
29582 sentry __cerb(*this);
29583 if (__cerb)
29584 {
29585 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
29586 try
29587 {
29588 const int_type __put = this->rdbuf()->sputc(__c);
29589 if (traits_type::eq_int_type(__put, traits_type::eof()))
29590 __err |= ios_base::badbit;
29591 }
29592 catch (...)
29593 { this->_M_setstate(ios_base::badbit); }
29594 if (__err)
29595 this->setstate(__err);
29596 }
29597 return *this;
29598 }
29599
29600 template<typename _CharT, typename _Traits>
29601 basic_ostream<_CharT, _Traits>&
29602 basic_ostream<_CharT, _Traits>::
29603 write(const _CharT* __s, streamsize __n)
29604 {
29605
29606
29607
29608
29609
29610
29611
29612 sentry __cerb(*this);
29613 if (__cerb)
29614 {
29615 try
29616 { _M_write(__s, __n); }
29617 catch (...)
29618 { this->_M_setstate(ios_base::badbit); }
29619 }
29620 return *this;
29621 }
29622
29623 template<typename _CharT, typename _Traits>
29624 basic_ostream<_CharT, _Traits>&
29625 basic_ostream<_CharT, _Traits>::
29626 flush()
29627 {
29628
29629
29630
29631 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
29632 try
29633 {
29634 if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
29635 __err |= ios_base::badbit;
29636 }
29637 catch(...)
29638 { this->_M_setstate(ios_base::badbit); }
29639 if (__err)
29640 this->setstate(__err);
29641 return *this;
29642 }
29643
29644 template<typename _CharT, typename _Traits>
29645 typename basic_ostream<_CharT, _Traits>::pos_type
29646 basic_ostream<_CharT, _Traits>::
29647 tellp()
29648 {
29649 pos_type __ret = pos_type(-1);
29650 try
29651 {
29652 if (!this->fail())
29653 __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
29654 }
29655 catch(...)
29656 { this->_M_setstate(ios_base::badbit); }
29657 return __ret;
29658 }
29659
29660 template<typename _CharT, typename _Traits>
29661 basic_ostream<_CharT, _Traits>&
29662 basic_ostream<_CharT, _Traits>::
29663 seekp(pos_type __pos)
29664 {
29665 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
29666 try
29667 {
29668 if (!this->fail())
29669 {
29670
29671
29672 const pos_type __p = this->rdbuf()->pubseekpos(__pos,
29673 ios_base::out);
29674
29675
29676 if (__p == pos_type(off_type(-1)))
29677 __err |= ios_base::failbit;
29678 }
29679 }
29680 catch(...)
29681 { this->_M_setstate(ios_base::badbit); }
29682 if (__err)
29683 this->setstate(__err);
29684 return *this;
29685 }
29686
29687 template<typename _CharT, typename _Traits>
29688 basic_ostream<_CharT, _Traits>&
29689 basic_ostream<_CharT, _Traits>::
29690 seekp(off_type __off, ios_base::seekdir __dir)
29691 {
29692 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
29693 try
29694 {
29695 if (!this->fail())
29696 {
29697
29698
29699 const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
29700 ios_base::out);
29701
29702
29703 if (__p == pos_type(off_type(-1)))
29704 __err |= ios_base::failbit;
29705 }
29706 }
29707 catch(...)
29708 { this->_M_setstate(ios_base::badbit); }
29709 if (__err)
29710 this->setstate(__err);
29711 return *this;
29712 }
29713
29714 template<typename _CharT, typename _Traits>
29715 basic_ostream<_CharT, _Traits>&
29716 operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
29717 {
29718 if (!__s)
29719 __out.setstate(ios_base::badbit);
29720 else
29721 {
29722
29723
29724 const size_t __clen = char_traits<char>::length(__s);
29725 _CharT* __ws = 0;
29726 try
29727 {
29728 __ws = new _CharT[__clen];
29729 for (size_t __i = 0; __i < __clen; ++__i)
29730 __ws[__i] = __out.widen(__s[__i]);
29731 }
29732 catch(...)
29733 {
29734 delete [] __ws;
29735 __out._M_setstate(ios_base::badbit);
29736 return __out;
29737 }
29738
29739 try
29740 {
29741 __ostream_insert(__out, __ws, __clen);
29742 delete [] __ws;
29743 }
29744 catch(...)
29745 {
29746 delete [] __ws;
29747 throw;
29748 }
29749 }
29750 return __out;
29751 }
29752
29753
29754
29755
29756
29757 extern template class basic_ostream<char>;
29758 extern template ostream& endl(ostream&);
29759 extern template ostream& ends(ostream&);
29760 extern template ostream& flush(ostream&);
29761 extern template ostream& operator<<(ostream&, char);
29762 extern template ostream& operator<<(ostream&, unsigned char);
29763 extern template ostream& operator<<(ostream&, signed char);
29764 extern template ostream& operator<<(ostream&, const char*);
29765 extern template ostream& operator<<(ostream&, const unsigned char*);
29766 extern template ostream& operator<<(ostream&, const signed char*);
29767
29768 extern template ostream& ostream::_M_insert(long);
29769 extern template ostream& ostream::_M_insert(unsigned long);
29770 extern template ostream& ostream::_M_insert(bool);
29771
29772 extern template ostream& ostream::_M_insert(long long);
29773 extern template ostream& ostream::_M_insert(unsigned long long);
29774
29775 extern template ostream& ostream::_M_insert(double);
29776 extern template ostream& ostream::_M_insert(long double);
29777 extern template ostream& ostream::_M_insert(const void*);
29778
29779
29780 extern template class basic_ostream<wchar_t>;
29781 extern template wostream& endl(wostream&);
29782 extern template wostream& ends(wostream&);
29783 extern template wostream& flush(wostream&);
29784 extern template wostream& operator<<(wostream&, wchar_t);
29785 extern template wostream& operator<<(wostream&, char);
29786 extern template wostream& operator<<(wostream&, const wchar_t*);
29787 extern template wostream& operator<<(wostream&, const char*);
29788
29789 extern template wostream& wostream::_M_insert(long);
29790 extern template wostream& wostream::_M_insert(unsigned long);
29791 extern template wostream& wostream::_M_insert(bool);
29792
29793 extern template wostream& wostream::_M_insert(long long);
29794 extern template wostream& wostream::_M_insert(unsigned long long);
29795
29796 extern template wostream& wostream::_M_insert(double);
29797 extern template wostream& wostream::_M_insert(long double);
29798 extern template wostream& wostream::_M_insert(const void*);
29799
29800
29801
29802}
29803# 573 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 2 3
29804# 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iterator" 2 3
29805# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 1 3
29806# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29807
29808# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29809
29810
29811
29812
29813namespace std __attribute__ ((__visibility__ ("default"))) {
29814# 57 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29815 template<typename _CharT, typename _Traits>
29816 class basic_istream : virtual public basic_ios<_CharT, _Traits>
29817 {
29818 public:
29819
29820 typedef _CharT char_type;
29821 typedef typename _Traits::int_type int_type;
29822 typedef typename _Traits::pos_type pos_type;
29823 typedef typename _Traits::off_type off_type;
29824 typedef _Traits traits_type;
29825
29826
29827 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
29828 typedef basic_ios<_CharT, _Traits> __ios_type;
29829 typedef basic_istream<_CharT, _Traits> __istream_type;
29830 typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
29831 __num_get_type;
29832 typedef ctype<_CharT> __ctype_type;
29833
29834 template<typename _CharT2, typename _Traits2>
29835 friend basic_istream<_CharT2, _Traits2>&
29836 operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2&);
29837
29838 template<typename _CharT2, typename _Traits2>
29839 friend basic_istream<_CharT2, _Traits2>&
29840 operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
29841
29842 protected:
29843
29844
29845
29846
29847
29848
29849
29850 streamsize _M_gcount;
29851
29852 public:
29853# 103 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29854 explicit
29855 basic_istream(__streambuf_type* __sb): _M_gcount(streamsize(0))
29856 { this->init(__sb); }
29857
29858
29859
29860
29861
29862
29863 virtual
29864 ~basic_istream()
29865 { _M_gcount = streamsize(0); }
29866
29867
29868 class sentry;
29869 friend class sentry;
29870# 130 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29871 __istream_type&
29872 operator>>(__istream_type& (*__pf)(__istream_type&))
29873 { return __pf(*this); }
29874
29875 __istream_type&
29876 operator>>(__ios_type& (*__pf)(__ios_type&))
29877 {
29878 __pf(*this);
29879 return *this;
29880 }
29881
29882 __istream_type&
29883 operator>>(ios_base& (*__pf)(ios_base&))
29884 {
29885 __pf(*this);
29886 return *this;
29887 }
29888# 177 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29889 __istream_type&
29890 operator>>(bool& __n)
29891 { return _M_extract(__n); }
29892
29893 __istream_type&
29894 operator>>(short& __n);
29895
29896 __istream_type&
29897 operator>>(unsigned short& __n)
29898 { return _M_extract(__n); }
29899
29900 __istream_type&
29901 operator>>(int& __n);
29902
29903 __istream_type&
29904 operator>>(unsigned int& __n)
29905 { return _M_extract(__n); }
29906
29907 __istream_type&
29908 operator>>(long& __n)
29909 { return _M_extract(__n); }
29910
29911 __istream_type&
29912 operator>>(unsigned long& __n)
29913 { return _M_extract(__n); }
29914
29915
29916 __istream_type&
29917 operator>>(long long& __n)
29918 { return _M_extract(__n); }
29919
29920 __istream_type&
29921 operator>>(unsigned long long& __n)
29922 { return _M_extract(__n); }
29923
29924
29925 __istream_type&
29926 operator>>(float& __f)
29927 { return _M_extract(__f); }
29928
29929 __istream_type&
29930 operator>>(double& __f)
29931 { return _M_extract(__f); }
29932
29933 __istream_type&
29934 operator>>(long double& __f)
29935 { return _M_extract(__f); }
29936
29937 __istream_type&
29938 operator>>(void*& __p)
29939 { return _M_extract(__p); }
29940# 249 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29941 __istream_type&
29942 operator>>(__streambuf_type* __sb);
29943# 259 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29944 streamsize
29945 gcount() const
29946 { return _M_gcount; }
29947# 291 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29948 int_type
29949 get();
29950# 305 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29951 __istream_type&
29952 get(char_type& __c);
29953# 332 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29954 __istream_type&
29955 get(char_type* __s, streamsize __n, char_type __delim);
29956# 343 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29957 __istream_type&
29958 get(char_type* __s, streamsize __n)
29959 { return this->get(__s, __n, this->widen('\n')); }
29960# 366 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29961 __istream_type&
29962 get(__streambuf_type& __sb, char_type __delim);
29963# 376 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29964 __istream_type&
29965 get(__streambuf_type& __sb)
29966 { return this->get(__sb, this->widen('\n')); }
29967# 405 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29968 __istream_type&
29969 getline(char_type* __s, streamsize __n, char_type __delim);
29970# 416 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29971 __istream_type&
29972 getline(char_type* __s, streamsize __n)
29973 { return this->getline(__s, __n, this->widen('\n')); }
29974# 440 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29975 __istream_type&
29976 ignore();
29977
29978 __istream_type&
29979 ignore(streamsize __n);
29980
29981 __istream_type&
29982 ignore(streamsize __n, int_type __delim);
29983# 457 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29984 int_type
29985 peek();
29986# 475 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29987 __istream_type&
29988 read(char_type* __s, streamsize __n);
29989# 494 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29990 streamsize
29991 readsome(char_type* __s, streamsize __n);
29992# 510 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29993 __istream_type&
29994 putback(char_type __c);
29995# 525 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29996 __istream_type&
29997 unget();
29998# 543 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
29999 int
30000 sync();
30001# 557 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30002 pos_type
30003 tellg();
30004# 572 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30005 __istream_type&
30006 seekg(pos_type);
30007# 588 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30008 __istream_type&
30009 seekg(off_type, ios_base::seekdir);
30010
30011
30012 protected:
30013 explicit
30014 basic_istream(): _M_gcount(streamsize(0)) { }
30015
30016 template<typename _ValueT>
30017 __istream_type&
30018 _M_extract(_ValueT& __v);
30019 };
30020
30021
30022 template<>
30023 basic_istream<char>&
30024 basic_istream<char>::
30025 getline(char_type* __s, streamsize __n, char_type __delim);
30026
30027 template<>
30028 basic_istream<char>&
30029 basic_istream<char>::
30030 ignore(streamsize __n);
30031
30032 template<>
30033 basic_istream<char>&
30034 basic_istream<char>::
30035 ignore(streamsize __n, int_type __delim);
30036
30037
30038 template<>
30039 basic_istream<wchar_t>&
30040 basic_istream<wchar_t>::
30041 getline(char_type* __s, streamsize __n, char_type __delim);
30042
30043 template<>
30044 basic_istream<wchar_t>&
30045 basic_istream<wchar_t>::
30046 ignore(streamsize __n);
30047
30048 template<>
30049 basic_istream<wchar_t>&
30050 basic_istream<wchar_t>::
30051 ignore(streamsize __n, int_type __delim);
30052# 645 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30053 template<typename _CharT, typename _Traits>
30054 class basic_istream<_CharT, _Traits>::sentry
30055 {
30056 public:
30057
30058 typedef _Traits traits_type;
30059 typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
30060 typedef basic_istream<_CharT, _Traits> __istream_type;
30061 typedef typename __istream_type::__ctype_type __ctype_type;
30062 typedef typename _Traits::int_type __int_type;
30063# 677 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30064 explicit
30065 sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
30066# 687 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30067 operator bool() const
30068 { return _M_ok; }
30069
30070 private:
30071 bool _M_ok;
30072 };
30073# 707 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30074 template<typename _CharT, typename _Traits>
30075 basic_istream<_CharT, _Traits>&
30076 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
30077
30078 template<class _Traits>
30079 inline basic_istream<char, _Traits>&
30080 operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
30081 { return (__in >> reinterpret_cast<char&>(__c)); }
30082
30083 template<class _Traits>
30084 inline basic_istream<char, _Traits>&
30085 operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
30086 { return (__in >> reinterpret_cast<char&>(__c)); }
30087# 748 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30088 template<typename _CharT, typename _Traits>
30089 basic_istream<_CharT, _Traits>&
30090 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
30091
30092
30093 template<>
30094 basic_istream<char>&
30095 operator>>(basic_istream<char>& __in, char* __s);
30096
30097 template<class _Traits>
30098 inline basic_istream<char, _Traits>&
30099 operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
30100 { return (__in >> reinterpret_cast<char*>(__s)); }
30101
30102 template<class _Traits>
30103 inline basic_istream<char, _Traits>&
30104 operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
30105 { return (__in >> reinterpret_cast<char*>(__s)); }
30106# 775 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30107 template<typename _CharT, typename _Traits>
30108 class basic_iostream
30109 : public basic_istream<_CharT, _Traits>,
30110 public basic_ostream<_CharT, _Traits>
30111 {
30112 public:
30113
30114
30115
30116 typedef _CharT char_type;
30117 typedef typename _Traits::int_type int_type;
30118 typedef typename _Traits::pos_type pos_type;
30119 typedef typename _Traits::off_type off_type;
30120 typedef _Traits traits_type;
30121
30122
30123 typedef basic_istream<_CharT, _Traits> __istream_type;
30124 typedef basic_ostream<_CharT, _Traits> __ostream_type;
30125
30126
30127
30128
30129
30130
30131
30132 explicit
30133 basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
30134 : __istream_type(), __ostream_type()
30135 { this->init(__sb); }
30136
30137
30138
30139
30140 virtual
30141 ~basic_iostream() { }
30142
30143 protected:
30144 explicit
30145 basic_iostream() : __istream_type(), __ostream_type()
30146 { }
30147 };
30148# 838 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
30149 template<typename _CharT, typename _Traits>
30150 basic_istream<_CharT, _Traits>&
30151 ws(basic_istream<_CharT, _Traits>& __is);
30152
30153}
30154
30155
30156# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/istream.tcc" 1 3
30157# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/istream.tcc" 3
30158
30159# 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/istream.tcc" 3
30160
30161
30162
30163
30164namespace std __attribute__ ((__visibility__ ("default"))) {
30165
30166 template<typename _CharT, typename _Traits>
30167 basic_istream<_CharT, _Traits>::sentry::
30168 sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
30169 {
30170 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30171 if (__in.good())
30172 {
30173 if (__in.tie())
30174 __in.tie()->flush();
30175 if (!__noskip && (__in.flags() & ios_base::skipws))
30176 {
30177 const __int_type __eof = traits_type::eof();
30178 __streambuf_type* __sb = __in.rdbuf();
30179 __int_type __c = __sb->sgetc();
30180
30181 const __ctype_type& __ct = __check_facet(__in._M_ctype);
30182 while (!traits_type::eq_int_type(__c, __eof)
30183 && __ct.is(ctype_base::space,
30184 traits_type::to_char_type(__c)))
30185 __c = __sb->snextc();
30186
30187
30188
30189
30190 if (traits_type::eq_int_type(__c, __eof))
30191 __err |= ios_base::eofbit;
30192 }
30193 }
30194
30195 if (__in.good() && __err == ios_base::goodbit)
30196 _M_ok = true;
30197 else
30198 {
30199 __err |= ios_base::failbit;
30200 __in.setstate(__err);
30201 }
30202 }
30203
30204 template<typename _CharT, typename _Traits>
30205 template<typename _ValueT>
30206 basic_istream<_CharT, _Traits>&
30207 basic_istream<_CharT, _Traits>::
30208 _M_extract(_ValueT& __v)
30209 {
30210 sentry __cerb(*this, false);
30211 if (__cerb)
30212 {
30213 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30214 try
30215 {
30216 const __num_get_type& __ng = __check_facet(this->_M_num_get);
30217 __ng.get(*this, 0, *this, __err, __v);
30218 }
30219 catch(...)
30220 { this->_M_setstate(ios_base::badbit); }
30221 if (__err)
30222 this->setstate(__err);
30223 }
30224 return *this;
30225 }
30226
30227 template<typename _CharT, typename _Traits>
30228 basic_istream<_CharT, _Traits>&
30229 basic_istream<_CharT, _Traits>::
30230 operator>>(short& __n)
30231 {
30232
30233
30234 long __l;
30235 _M_extract(__l);
30236 if (!this->fail())
30237 {
30238 if (numeric_limits<short>::min() <= __l
30239 && __l <= numeric_limits<short>::max())
30240 __n = __l;
30241 else
30242 this->setstate(ios_base::failbit);
30243 }
30244 return *this;
30245 }
30246
30247 template<typename _CharT, typename _Traits>
30248 basic_istream<_CharT, _Traits>&
30249 basic_istream<_CharT, _Traits>::
30250 operator>>(int& __n)
30251 {
30252
30253
30254 long __l;
30255 _M_extract(__l);
30256 if (!this->fail())
30257 {
30258 if (numeric_limits<int>::min() <= __l
30259 && __l <= numeric_limits<int>::max())
30260 __n = __l;
30261 else
30262 this->setstate(ios_base::failbit);
30263 }
30264 return *this;
30265 }
30266
30267 template<typename _CharT, typename _Traits>
30268 basic_istream<_CharT, _Traits>&
30269 basic_istream<_CharT, _Traits>::
30270 operator>>(__streambuf_type* __sbout)
30271 {
30272 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30273 sentry __cerb(*this, false);
30274 if (__cerb && __sbout)
30275 {
30276 try
30277 {
30278 bool __ineof;
30279 if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
30280 __err |= ios_base::failbit;
30281 if (__ineof)
30282 __err |= ios_base::eofbit;
30283 }
30284 catch(...)
30285 { this->_M_setstate(ios_base::failbit); }
30286 }
30287 else if (!__sbout)
30288 __err |= ios_base::failbit;
30289 if (__err)
30290 this->setstate(__err);
30291 return *this;
30292 }
30293
30294 template<typename _CharT, typename _Traits>
30295 typename basic_istream<_CharT, _Traits>::int_type
30296 basic_istream<_CharT, _Traits>::
30297 get(void)
30298 {
30299 const int_type __eof = traits_type::eof();
30300 int_type __c = __eof;
30301 _M_gcount = 0;
30302 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30303 sentry __cerb(*this, true);
30304 if (__cerb)
30305 {
30306 try
30307 {
30308 __c = this->rdbuf()->sbumpc();
30309
30310 if (!traits_type::eq_int_type(__c, __eof))
30311 _M_gcount = 1;
30312 else
30313 __err |= ios_base::eofbit;
30314 }
30315 catch(...)
30316 { this->_M_setstate(ios_base::badbit); }
30317 }
30318 if (!_M_gcount)
30319 __err |= ios_base::failbit;
30320 if (__err)
30321 this->setstate(__err);
30322 return __c;
30323 }
30324
30325 template<typename _CharT, typename _Traits>
30326 basic_istream<_CharT, _Traits>&
30327 basic_istream<_CharT, _Traits>::
30328 get(char_type& __c)
30329 {
30330 _M_gcount = 0;
30331 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30332 sentry __cerb(*this, true);
30333 if (__cerb)
30334 {
30335 try
30336 {
30337 const int_type __cb = this->rdbuf()->sbumpc();
30338
30339 if (!traits_type::eq_int_type(__cb, traits_type::eof()))
30340 {
30341 _M_gcount = 1;
30342 __c = traits_type::to_char_type(__cb);
30343 }
30344 else
30345 __err |= ios_base::eofbit;
30346 }
30347 catch(...)
30348 { this->_M_setstate(ios_base::badbit); }
30349 }
30350 if (!_M_gcount)
30351 __err |= ios_base::failbit;
30352 if (__err)
30353 this->setstate(__err);
30354 return *this;
30355 }
30356
30357 template<typename _CharT, typename _Traits>
30358 basic_istream<_CharT, _Traits>&
30359 basic_istream<_CharT, _Traits>::
30360 get(char_type* __s, streamsize __n, char_type __delim)
30361 {
30362 _M_gcount = 0;
30363 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30364 sentry __cerb(*this, true);
30365 if (__cerb)
30366 {
30367 try
30368 {
30369 const int_type __idelim = traits_type::to_int_type(__delim);
30370 const int_type __eof = traits_type::eof();
30371 __streambuf_type* __sb = this->rdbuf();
30372 int_type __c = __sb->sgetc();
30373
30374 while (_M_gcount + 1 < __n
30375 && !traits_type::eq_int_type(__c, __eof)
30376 && !traits_type::eq_int_type(__c, __idelim))
30377 {
30378 *__s++ = traits_type::to_char_type(__c);
30379 ++_M_gcount;
30380 __c = __sb->snextc();
30381 }
30382 if (traits_type::eq_int_type(__c, __eof))
30383 __err |= ios_base::eofbit;
30384 }
30385 catch(...)
30386 { this->_M_setstate(ios_base::badbit); }
30387 }
30388
30389
30390 if (__n > 0)
30391 *__s = char_type();
30392 if (!_M_gcount)
30393 __err |= ios_base::failbit;
30394 if (__err)
30395 this->setstate(__err);
30396 return *this;
30397 }
30398
30399 template<typename _CharT, typename _Traits>
30400 basic_istream<_CharT, _Traits>&
30401 basic_istream<_CharT, _Traits>::
30402 get(__streambuf_type& __sb, char_type __delim)
30403 {
30404 _M_gcount = 0;
30405 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30406 sentry __cerb(*this, true);
30407 if (__cerb)
30408 {
30409 try
30410 {
30411 const int_type __idelim = traits_type::to_int_type(__delim);
30412 const int_type __eof = traits_type::eof();
30413 __streambuf_type* __this_sb = this->rdbuf();
30414 int_type __c = __this_sb->sgetc();
30415 char_type __c2 = traits_type::to_char_type(__c);
30416
30417 while (!traits_type::eq_int_type(__c, __eof)
30418 && !traits_type::eq_int_type(__c, __idelim)
30419 && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
30420 {
30421 ++_M_gcount;
30422 __c = __this_sb->snextc();
30423 __c2 = traits_type::to_char_type(__c);
30424 }
30425 if (traits_type::eq_int_type(__c, __eof))
30426 __err |= ios_base::eofbit;
30427 }
30428 catch(...)
30429 { this->_M_setstate(ios_base::badbit); }
30430 }
30431 if (!_M_gcount)
30432 __err |= ios_base::failbit;
30433 if (__err)
30434 this->setstate(__err);
30435 return *this;
30436 }
30437
30438 template<typename _CharT, typename _Traits>
30439 basic_istream<_CharT, _Traits>&
30440 basic_istream<_CharT, _Traits>::
30441 getline(char_type* __s, streamsize __n, char_type __delim)
30442 {
30443 _M_gcount = 0;
30444 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30445 sentry __cerb(*this, true);
30446 if (__cerb)
30447 {
30448 try
30449 {
30450 const int_type __idelim = traits_type::to_int_type(__delim);
30451 const int_type __eof = traits_type::eof();
30452 __streambuf_type* __sb = this->rdbuf();
30453 int_type __c = __sb->sgetc();
30454
30455 while (_M_gcount + 1 < __n
30456 && !traits_type::eq_int_type(__c, __eof)
30457 && !traits_type::eq_int_type(__c, __idelim))
30458 {
30459 *__s++ = traits_type::to_char_type(__c);
30460 __c = __sb->snextc();
30461 ++_M_gcount;
30462 }
30463 if (traits_type::eq_int_type(__c, __eof))
30464 __err |= ios_base::eofbit;
30465 else
30466 {
30467 if (traits_type::eq_int_type(__c, __idelim))
30468 {
30469 __sb->sbumpc();
30470 ++_M_gcount;
30471 }
30472 else
30473 __err |= ios_base::failbit;
30474 }
30475 }
30476 catch(...)
30477 { this->_M_setstate(ios_base::badbit); }
30478 }
30479
30480
30481 if (__n > 0)
30482 *__s = char_type();
30483 if (!_M_gcount)
30484 __err |= ios_base::failbit;
30485 if (__err)
30486 this->setstate(__err);
30487 return *this;
30488 }
30489
30490
30491
30492
30493 template<typename _CharT, typename _Traits>
30494 basic_istream<_CharT, _Traits>&
30495 basic_istream<_CharT, _Traits>::
30496 ignore(void)
30497 {
30498 _M_gcount = 0;
30499 sentry __cerb(*this, true);
30500 if (__cerb)
30501 {
30502 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30503 try
30504 {
30505 const int_type __eof = traits_type::eof();
30506 __streambuf_type* __sb = this->rdbuf();
30507
30508 if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
30509 __err |= ios_base::eofbit;
30510 else
30511 _M_gcount = 1;
30512 }
30513 catch(...)
30514 { this->_M_setstate(ios_base::badbit); }
30515 if (__err)
30516 this->setstate(__err);
30517 }
30518 return *this;
30519 }
30520
30521 template<typename _CharT, typename _Traits>
30522 basic_istream<_CharT, _Traits>&
30523 basic_istream<_CharT, _Traits>::
30524 ignore(streamsize __n)
30525 {
30526 _M_gcount = 0;
30527 sentry __cerb(*this, true);
30528 if (__cerb && __n > 0)
30529 {
30530 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30531 try
30532 {
30533 const int_type __eof = traits_type::eof();
30534 __streambuf_type* __sb = this->rdbuf();
30535 int_type __c = __sb->sgetc();
30536# 429 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/istream.tcc" 3
30537 bool __large_ignore = false;
30538 while (true)
30539 {
30540 while (_M_gcount < __n
30541 && !traits_type::eq_int_type(__c, __eof))
30542 {
30543 ++_M_gcount;
30544 __c = __sb->snextc();
30545 }
30546 if (__n == numeric_limits<streamsize>::max()
30547 && !traits_type::eq_int_type(__c, __eof))
30548 {
30549 _M_gcount = numeric_limits<streamsize>::min();
30550 __large_ignore = true;
30551 }
30552 else
30553 break;
30554 }
30555
30556 if (__large_ignore)
30557 _M_gcount = numeric_limits<streamsize>::max();
30558
30559 if (traits_type::eq_int_type(__c, __eof))
30560 __err |= ios_base::eofbit;
30561 }
30562 catch(...)
30563 { this->_M_setstate(ios_base::badbit); }
30564 if (__err)
30565 this->setstate(__err);
30566 }
30567 return *this;
30568 }
30569
30570 template<typename _CharT, typename _Traits>
30571 basic_istream<_CharT, _Traits>&
30572 basic_istream<_CharT, _Traits>::
30573 ignore(streamsize __n, int_type __delim)
30574 {
30575 _M_gcount = 0;
30576 sentry __cerb(*this, true);
30577 if (__cerb && __n > 0)
30578 {
30579 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30580 try
30581 {
30582 const int_type __eof = traits_type::eof();
30583 __streambuf_type* __sb = this->rdbuf();
30584 int_type __c = __sb->sgetc();
30585
30586
30587 bool __large_ignore = false;
30588 while (true)
30589 {
30590 while (_M_gcount < __n
30591 && !traits_type::eq_int_type(__c, __eof)
30592 && !traits_type::eq_int_type(__c, __delim))
30593 {
30594 ++_M_gcount;
30595 __c = __sb->snextc();
30596 }
30597 if (__n == numeric_limits<streamsize>::max()
30598 && !traits_type::eq_int_type(__c, __eof)
30599 && !traits_type::eq_int_type(__c, __delim))
30600 {
30601 _M_gcount = numeric_limits<streamsize>::min();
30602 __large_ignore = true;
30603 }
30604 else
30605 break;
30606 }
30607
30608 if (__large_ignore)
30609 _M_gcount = numeric_limits<streamsize>::max();
30610
30611 if (traits_type::eq_int_type(__c, __eof))
30612 __err |= ios_base::eofbit;
30613 else if (traits_type::eq_int_type(__c, __delim))
30614 {
30615 if (_M_gcount < numeric_limits<streamsize>::max())
30616 ++_M_gcount;
30617 __sb->sbumpc();
30618 }
30619 }
30620 catch(...)
30621 { this->_M_setstate(ios_base::badbit); }
30622 if (__err)
30623 this->setstate(__err);
30624 }
30625 return *this;
30626 }
30627
30628 template<typename _CharT, typename _Traits>
30629 typename basic_istream<_CharT, _Traits>::int_type
30630 basic_istream<_CharT, _Traits>::
30631 peek(void)
30632 {
30633 int_type __c = traits_type::eof();
30634 _M_gcount = 0;
30635 sentry __cerb(*this, true);
30636 if (__cerb)
30637 {
30638 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30639 try
30640 {
30641 __c = this->rdbuf()->sgetc();
30642 if (traits_type::eq_int_type(__c, traits_type::eof()))
30643 __err |= ios_base::eofbit;
30644 }
30645 catch(...)
30646 { this->_M_setstate(ios_base::badbit); }
30647 if (__err)
30648 this->setstate(__err);
30649 }
30650 return __c;
30651 }
30652
30653 template<typename _CharT, typename _Traits>
30654 basic_istream<_CharT, _Traits>&
30655 basic_istream<_CharT, _Traits>::
30656 read(char_type* __s, streamsize __n)
30657 {
30658 _M_gcount = 0;
30659 sentry __cerb(*this, true);
30660 if (__cerb)
30661 {
30662 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30663 try
30664 {
30665 _M_gcount = this->rdbuf()->sgetn(__s, __n);
30666 if (_M_gcount != __n)
30667 __err |= (ios_base::eofbit | ios_base::failbit);
30668 }
30669 catch(...)
30670 { this->_M_setstate(ios_base::badbit); }
30671 if (__err)
30672 this->setstate(__err);
30673 }
30674 return *this;
30675 }
30676
30677 template<typename _CharT, typename _Traits>
30678 streamsize
30679 basic_istream<_CharT, _Traits>::
30680 readsome(char_type* __s, streamsize __n)
30681 {
30682 _M_gcount = 0;
30683 sentry __cerb(*this, true);
30684 if (__cerb)
30685 {
30686 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30687 try
30688 {
30689
30690 const streamsize __num = this->rdbuf()->in_avail();
30691 if (__num > 0)
30692 _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
30693 else if (__num == -1)
30694 __err |= ios_base::eofbit;
30695 }
30696 catch(...)
30697 { this->_M_setstate(ios_base::badbit); }
30698 if (__err)
30699 this->setstate(__err);
30700 }
30701 return _M_gcount;
30702 }
30703
30704 template<typename _CharT, typename _Traits>
30705 basic_istream<_CharT, _Traits>&
30706 basic_istream<_CharT, _Traits>::
30707 putback(char_type __c)
30708 {
30709
30710
30711 _M_gcount = 0;
30712 sentry __cerb(*this, true);
30713 if (__cerb)
30714 {
30715 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30716 try
30717 {
30718 const int_type __eof = traits_type::eof();
30719 __streambuf_type* __sb = this->rdbuf();
30720 if (!__sb
30721 || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
30722 __err |= ios_base::badbit;
30723 }
30724 catch(...)
30725 { this->_M_setstate(ios_base::badbit); }
30726 if (__err)
30727 this->setstate(__err);
30728 }
30729 return *this;
30730 }
30731
30732 template<typename _CharT, typename _Traits>
30733 basic_istream<_CharT, _Traits>&
30734 basic_istream<_CharT, _Traits>::
30735 unget(void)
30736 {
30737
30738
30739 _M_gcount = 0;
30740 sentry __cerb(*this, true);
30741 if (__cerb)
30742 {
30743 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30744 try
30745 {
30746 const int_type __eof = traits_type::eof();
30747 __streambuf_type* __sb = this->rdbuf();
30748 if (!__sb
30749 || traits_type::eq_int_type(__sb->sungetc(), __eof))
30750 __err |= ios_base::badbit;
30751 }
30752 catch(...)
30753 { this->_M_setstate(ios_base::badbit); }
30754 if (__err)
30755 this->setstate(__err);
30756 }
30757 return *this;
30758 }
30759
30760 template<typename _CharT, typename _Traits>
30761 int
30762 basic_istream<_CharT, _Traits>::
30763 sync(void)
30764 {
30765
30766
30767 int __ret = -1;
30768 sentry __cerb(*this, true);
30769 if (__cerb)
30770 {
30771 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30772 try
30773 {
30774 __streambuf_type* __sb = this->rdbuf();
30775 if (__sb)
30776 {
30777 if (__sb->pubsync() == -1)
30778 __err |= ios_base::badbit;
30779 else
30780 __ret = 0;
30781 }
30782 }
30783 catch(...)
30784 { this->_M_setstate(ios_base::badbit); }
30785 if (__err)
30786 this->setstate(__err);
30787 }
30788 return __ret;
30789 }
30790
30791 template<typename _CharT, typename _Traits>
30792 typename basic_istream<_CharT, _Traits>::pos_type
30793 basic_istream<_CharT, _Traits>::
30794 tellg(void)
30795 {
30796
30797
30798 pos_type __ret = pos_type(-1);
30799 try
30800 {
30801 if (!this->fail())
30802 __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
30803 ios_base::in);
30804 }
30805 catch(...)
30806 { this->_M_setstate(ios_base::badbit); }
30807 return __ret;
30808 }
30809
30810 template<typename _CharT, typename _Traits>
30811 basic_istream<_CharT, _Traits>&
30812 basic_istream<_CharT, _Traits>::
30813 seekg(pos_type __pos)
30814 {
30815
30816
30817 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30818 try
30819 {
30820 if (!this->fail())
30821 {
30822
30823 const pos_type __p = this->rdbuf()->pubseekpos(__pos,
30824 ios_base::in);
30825
30826
30827 if (__p == pos_type(off_type(-1)))
30828 __err |= ios_base::failbit;
30829 }
30830 }
30831 catch(...)
30832 { this->_M_setstate(ios_base::badbit); }
30833 if (__err)
30834 this->setstate(__err);
30835 return *this;
30836 }
30837
30838 template<typename _CharT, typename _Traits>
30839 basic_istream<_CharT, _Traits>&
30840 basic_istream<_CharT, _Traits>::
30841 seekg(off_type __off, ios_base::seekdir __dir)
30842 {
30843
30844
30845 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30846 try
30847 {
30848 if (!this->fail())
30849 {
30850
30851 const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
30852 ios_base::in);
30853
30854
30855 if (__p == pos_type(off_type(-1)))
30856 __err |= ios_base::failbit;
30857 }
30858 }
30859 catch(...)
30860 { this->_M_setstate(ios_base::badbit); }
30861 if (__err)
30862 this->setstate(__err);
30863 return *this;
30864 }
30865
30866
30867 template<typename _CharT, typename _Traits>
30868 basic_istream<_CharT, _Traits>&
30869 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
30870 {
30871 typedef basic_istream<_CharT, _Traits> __istream_type;
30872 typedef typename __istream_type::int_type __int_type;
30873
30874 typename __istream_type::sentry __cerb(__in, false);
30875 if (__cerb)
30876 {
30877 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30878 try
30879 {
30880 const __int_type __cb = __in.rdbuf()->sbumpc();
30881 if (!_Traits::eq_int_type(__cb, _Traits::eof()))
30882 __c = _Traits::to_char_type(__cb);
30883 else
30884 __err |= (ios_base::eofbit | ios_base::failbit);
30885 }
30886 catch(...)
30887 { __in._M_setstate(ios_base::badbit); }
30888 if (__err)
30889 __in.setstate(__err);
30890 }
30891 return __in;
30892 }
30893
30894 template<typename _CharT, typename _Traits>
30895 basic_istream<_CharT, _Traits>&
30896 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
30897 {
30898 typedef basic_istream<_CharT, _Traits> __istream_type;
30899 typedef typename __istream_type::__streambuf_type __streambuf_type;
30900 typedef typename _Traits::int_type int_type;
30901 typedef _CharT char_type;
30902 typedef ctype<_CharT> __ctype_type;
30903
30904 streamsize __extracted = 0;
30905 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30906 typename __istream_type::sentry __cerb(__in, false);
30907 if (__cerb)
30908 {
30909 try
30910 {
30911
30912 streamsize __num = __in.width();
30913 if (__num <= 0)
30914 __num = numeric_limits<streamsize>::max();
30915
30916 const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
30917
30918 const int_type __eof = _Traits::eof();
30919 __streambuf_type* __sb = __in.rdbuf();
30920 int_type __c = __sb->sgetc();
30921
30922 while (__extracted < __num - 1
30923 && !_Traits::eq_int_type(__c, __eof)
30924 && !__ct.is(ctype_base::space,
30925 _Traits::to_char_type(__c)))
30926 {
30927 *__s++ = _Traits::to_char_type(__c);
30928 ++__extracted;
30929 __c = __sb->snextc();
30930 }
30931 if (_Traits::eq_int_type(__c, __eof))
30932 __err |= ios_base::eofbit;
30933
30934
30935
30936 *__s = char_type();
30937 __in.width(0);
30938 }
30939 catch(...)
30940 { __in._M_setstate(ios_base::badbit); }
30941 }
30942 if (!__extracted)
30943 __err |= ios_base::failbit;
30944 if (__err)
30945 __in.setstate(__err);
30946 return __in;
30947 }
30948
30949
30950 template<typename _CharT, typename _Traits>
30951 basic_istream<_CharT,_Traits>&
30952 ws(basic_istream<_CharT,_Traits>& __in)
30953 {
30954 typedef basic_istream<_CharT, _Traits> __istream_type;
30955 typedef typename __istream_type::__streambuf_type __streambuf_type;
30956 typedef typename __istream_type::__ctype_type __ctype_type;
30957 typedef typename __istream_type::int_type __int_type;
30958
30959 const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
30960 const __int_type __eof = _Traits::eof();
30961 __streambuf_type* __sb = __in.rdbuf();
30962 __int_type __c = __sb->sgetc();
30963
30964 while (!_Traits::eq_int_type(__c, __eof)
30965 && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
30966 __c = __sb->snextc();
30967
30968 if (_Traits::eq_int_type(__c, __eof))
30969 __in.setstate(ios_base::eofbit);
30970 return __in;
30971 }
30972
30973
30974 template<typename _CharT, typename _Traits, typename _Alloc>
30975 basic_istream<_CharT, _Traits>&
30976 operator>>(basic_istream<_CharT, _Traits>& __in,
30977 basic_string<_CharT, _Traits, _Alloc>& __str)
30978 {
30979 typedef basic_istream<_CharT, _Traits> __istream_type;
30980 typedef typename __istream_type::int_type __int_type;
30981 typedef typename __istream_type::__streambuf_type __streambuf_type;
30982 typedef typename __istream_type::__ctype_type __ctype_type;
30983 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
30984 typedef typename __string_type::size_type __size_type;
30985
30986 __size_type __extracted = 0;
30987 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
30988 typename __istream_type::sentry __cerb(__in, false);
30989 if (__cerb)
30990 {
30991 try
30992 {
30993
30994 __str.erase();
30995 _CharT __buf[128];
30996 __size_type __len = 0;
30997 const streamsize __w = __in.width();
30998 const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
30999 : __str.max_size();
31000 const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
31001 const __int_type __eof = _Traits::eof();
31002 __streambuf_type* __sb = __in.rdbuf();
31003 __int_type __c = __sb->sgetc();
31004
31005 while (__extracted < __n
31006 && !_Traits::eq_int_type(__c, __eof)
31007 && !__ct.is(ctype_base::space, _Traits::to_char_type(__c)))
31008 {
31009 if (__len == sizeof(__buf) / sizeof(_CharT))
31010 {
31011 __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
31012 __len = 0;
31013 }
31014 __buf[__len++] = _Traits::to_char_type(__c);
31015 ++__extracted;
31016 __c = __sb->snextc();
31017 }
31018 __str.append(__buf, __len);
31019
31020 if (_Traits::eq_int_type(__c, __eof))
31021 __err |= ios_base::eofbit;
31022 __in.width(0);
31023 }
31024 catch(...)
31025 {
31026
31027
31028
31029 __in._M_setstate(ios_base::badbit);
31030 }
31031 }
31032
31033 if (!__extracted)
31034 __err |= ios_base::failbit;
31035 if (__err)
31036 __in.setstate(__err);
31037 return __in;
31038 }
31039
31040 template<typename _CharT, typename _Traits, typename _Alloc>
31041 basic_istream<_CharT, _Traits>&
31042 getline(basic_istream<_CharT, _Traits>& __in,
31043 basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
31044 {
31045 typedef basic_istream<_CharT, _Traits> __istream_type;
31046 typedef typename __istream_type::int_type __int_type;
31047 typedef typename __istream_type::__streambuf_type __streambuf_type;
31048 typedef typename __istream_type::__ctype_type __ctype_type;
31049 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
31050 typedef typename __string_type::size_type __size_type;
31051
31052 __size_type __extracted = 0;
31053 const __size_type __n = __str.max_size();
31054 ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
31055 typename __istream_type::sentry __cerb(__in, true);
31056 if (__cerb)
31057 {
31058 try
31059 {
31060 __str.erase();
31061 const __int_type __idelim = _Traits::to_int_type(__delim);
31062 const __int_type __eof = _Traits::eof();
31063 __streambuf_type* __sb = __in.rdbuf();
31064 __int_type __c = __sb->sgetc();
31065
31066 while (__extracted < __n
31067 && !_Traits::eq_int_type(__c, __eof)
31068 && !_Traits::eq_int_type(__c, __idelim))
31069 {
31070 __str += _Traits::to_char_type(__c);
31071 ++__extracted;
31072 __c = __sb->snextc();
31073 }
31074
31075 if (_Traits::eq_int_type(__c, __eof))
31076 __err |= ios_base::eofbit;
31077 else if (_Traits::eq_int_type(__c, __idelim))
31078 {
31079 ++__extracted;
31080 __sb->sbumpc();
31081 }
31082 else
31083 __err |= ios_base::failbit;
31084 }
31085 catch(...)
31086 {
31087
31088
31089
31090 __in._M_setstate(ios_base::badbit);
31091 }
31092 }
31093 if (!__extracted)
31094 __err |= ios_base::failbit;
31095 if (__err)
31096 __in.setstate(__err);
31097 return __in;
31098 }
31099
31100
31101
31102
31103
31104 extern template class basic_istream<char>;
31105 extern template istream& ws(istream&);
31106 extern template istream& operator>>(istream&, char&);
31107 extern template istream& operator>>(istream&, char*);
31108 extern template istream& operator>>(istream&, unsigned char&);
31109 extern template istream& operator>>(istream&, signed char&);
31110 extern template istream& operator>>(istream&, unsigned char*);
31111 extern template istream& operator>>(istream&, signed char*);
31112
31113 extern template istream& istream::_M_extract(unsigned short&);
31114 extern template istream& istream::_M_extract(unsigned int&);
31115 extern template istream& istream::_M_extract(long&);
31116 extern template istream& istream::_M_extract(unsigned long&);
31117 extern template istream& istream::_M_extract(bool&);
31118
31119 extern template istream& istream::_M_extract(long long&);
31120 extern template istream& istream::_M_extract(unsigned long long&);
31121
31122 extern template istream& istream::_M_extract(float&);
31123 extern template istream& istream::_M_extract(double&);
31124 extern template istream& istream::_M_extract(long double&);
31125 extern template istream& istream::_M_extract(void*&);
31126
31127 extern template class basic_iostream<char>;
31128
31129
31130 extern template class basic_istream<wchar_t>;
31131 extern template wistream& ws(wistream&);
31132 extern template wistream& operator>>(wistream&, wchar_t&);
31133 extern template wistream& operator>>(wistream&, wchar_t*);
31134
31135 extern template wistream& wistream::_M_extract(unsigned short&);
31136 extern template wistream& wistream::_M_extract(unsigned int&);
31137 extern template wistream& wistream::_M_extract(long&);
31138 extern template wistream& wistream::_M_extract(unsigned long&);
31139 extern template wistream& wistream::_M_extract(bool&);
31140
31141 extern template wistream& wistream::_M_extract(long long&);
31142 extern template wistream& wistream::_M_extract(unsigned long long&);
31143
31144 extern template wistream& wistream::_M_extract(float&);
31145 extern template wistream& wistream::_M_extract(double&);
31146 extern template wistream& wistream::_M_extract(long double&);
31147 extern template wistream& wistream::_M_extract(void*&);
31148
31149 extern template class basic_iostream<wchar_t>;
31150
31151
31152
31153}
31154# 846 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 2 3
31155# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iterator" 2 3
31156# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stream_iterator.h" 1 3
31157# 38 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stream_iterator.h" 3
31158
31159# 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stream_iterator.h" 3
31160
31161
31162
31163namespace std __attribute__ ((__visibility__ ("default"))) {
31164
31165
31166 template<typename _Tp, typename _CharT = char,
31167 typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
31168 class istream_iterator
31169 : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
31170 {
31171 public:
31172 typedef _CharT char_type;
31173 typedef _Traits traits_type;
31174 typedef basic_istream<_CharT, _Traits> istream_type;
31175
31176 private:
31177 istream_type* _M_stream;
31178 _Tp _M_value;
31179 bool _M_ok;
31180
31181 public:
31182
31183 istream_iterator()
31184 : _M_stream(0), _M_value(), _M_ok(false) {}
31185
31186
31187 istream_iterator(istream_type& __s)
31188 : _M_stream(&__s)
31189 { _M_read(); }
31190
31191 istream_iterator(const istream_iterator& __obj)
31192 : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
31193 _M_ok(__obj._M_ok)
31194 { }
31195
31196 const _Tp&
31197 operator*() const
31198 {
31199 ;
31200
31201
31202 return _M_value;
31203 }
31204
31205 const _Tp*
31206 operator->() const { return &(operator*()); }
31207
31208 istream_iterator&
31209 operator++()
31210 {
31211 ;
31212
31213
31214 _M_read();
31215 return *this;
31216 }
31217
31218 istream_iterator
31219 operator++(int)
31220 {
31221 ;
31222
31223
31224 istream_iterator __tmp = *this;
31225 _M_read();
31226 return __tmp;
31227 }
31228
31229 bool
31230 _M_equal(const istream_iterator& __x) const
31231 { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
31232
31233 private:
31234 void
31235 _M_read()
31236 {
31237 _M_ok = (_M_stream && *_M_stream) ? true : false;
31238 if (_M_ok)
31239 {
31240 *_M_stream >> _M_value;
31241 _M_ok = *_M_stream ? true : false;
31242 }
31243 }
31244 };
31245
31246
31247 template<typename _Tp, typename _CharT, typename _Traits, typename _Dist>
31248 inline bool
31249 operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
31250 const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
31251 { return __x._M_equal(__y); }
31252
31253
31254 template <class _Tp, class _CharT, class _Traits, class _Dist>
31255 inline bool
31256 operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
31257 const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
31258 { return !__x._M_equal(__y); }
31259# 150 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stream_iterator.h" 3
31260 template<typename _Tp, typename _CharT = char,
31261 typename _Traits = char_traits<_CharT> >
31262 class ostream_iterator
31263 : public iterator<output_iterator_tag, void, void, void, void>
31264 {
31265 public:
31266
31267
31268 typedef _CharT char_type;
31269 typedef _Traits traits_type;
31270 typedef basic_ostream<_CharT, _Traits> ostream_type;
31271
31272
31273 private:
31274 ostream_type* _M_stream;
31275 const _CharT* _M_string;
31276
31277 public:
31278
31279 ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
31280# 181 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stream_iterator.h" 3
31281 ostream_iterator(ostream_type& __s, const _CharT* __c)
31282 : _M_stream(&__s), _M_string(__c) { }
31283
31284
31285 ostream_iterator(const ostream_iterator& __obj)
31286 : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
31287
31288
31289
31290 ostream_iterator&
31291 operator=(const _Tp& __value)
31292 {
31293 ;
31294
31295
31296 *_M_stream << __value;
31297 if (_M_string) *_M_stream << _M_string;
31298 return *this;
31299 }
31300
31301 ostream_iterator&
31302 operator*()
31303 { return *this; }
31304
31305 ostream_iterator&
31306 operator++()
31307 { return *this; }
31308
31309 ostream_iterator&
31310 operator++(int)
31311 { return *this; }
31312 };
31313
31314}
31315# 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iterator" 2 3
31316# 55 "/usr/include/boost/detail/iterator.hpp" 2 3 4
31317# 77 "/usr/include/boost/detail/iterator.hpp" 3 4
31318namespace boost { namespace detail {
31319
31320
31321template <class Iterator>
31322struct iterator_traits
31323 : std::iterator_traits<Iterator>
31324{};
31325using std::distance;
31326
31327}}
31328# 33 "/usr/include/boost/array.hpp" 2 3 4
31329# 1 "/usr/include/boost/throw_exception.hpp" 1 3 4
31330# 28 "/usr/include/boost/throw_exception.hpp" 3 4
31331namespace boost
31332{
31333
31334
31335
31336
31337
31338
31339
31340template<class E> inline void throw_exception(E const & e)
31341{
31342 throw e;
31343}
31344
31345
31346
31347}
31348# 34 "/usr/include/boost/array.hpp" 2 3 4
31349
31350
31351
31352
31353
31354
31355namespace boost {
31356
31357 template<class T, std::size_t N>
31358 class array {
31359 public:
31360 T elems[N];
31361
31362 public:
31363
31364 typedef T value_type;
31365 typedef T* iterator;
31366 typedef const T* const_iterator;
31367 typedef T& reference;
31368 typedef const T& const_reference;
31369 typedef std::size_t size_type;
31370 typedef std::ptrdiff_t difference_type;
31371
31372
31373 iterator begin() { return elems; }
31374 const_iterator begin() const { return elems; }
31375 iterator end() { return elems+N; }
31376 const_iterator end() const { return elems+N; }
31377
31378
31379
31380 typedef std::reverse_iterator<iterator> reverse_iterator;
31381 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
31382# 79 "/usr/include/boost/array.hpp" 3 4
31383 reverse_iterator rbegin() { return reverse_iterator(end()); }
31384 const_reverse_iterator rbegin() const {
31385 return const_reverse_iterator(end());
31386 }
31387 reverse_iterator rend() { return reverse_iterator(begin()); }
31388 const_reverse_iterator rend() const {
31389 return const_reverse_iterator(begin());
31390 }
31391
31392
31393 reference operator[](size_type i)
31394 {
31395 ((i < N && "out of range") ? static_cast<void> (0) : __assert_fail ("i < N && \"out of range\"", "/usr/include/boost/array.hpp", 91, __PRETTY_FUNCTION__));
31396 return elems[i];
31397 }
31398
31399 const_reference operator[](size_type i) const
31400 {
31401 ((i < N && "out of range") ? static_cast<void> (0) : __assert_fail ("i < N && \"out of range\"", "/usr/include/boost/array.hpp", 97, __PRETTY_FUNCTION__));
31402 return elems[i];
31403 }
31404
31405
31406 reference at(size_type i) { rangecheck(i); return elems[i]; }
31407 const_reference at(size_type i) const { rangecheck(i); return elems[i]; }
31408
31409
31410 reference front()
31411 {
31412 return elems[0];
31413 }
31414
31415 const_reference front() const
31416 {
31417 return elems[0];
31418 }
31419
31420 reference back()
31421 {
31422 return elems[N-1];
31423 }
31424
31425 const_reference back() const
31426 {
31427 return elems[N-1];
31428 }
31429
31430
31431 static size_type size() { return N; }
31432 static bool empty() { return false; }
31433 static size_type max_size() { return N; }
31434 enum { static_size = N };
31435
31436
31437 void swap (array<T,N>& y) {
31438 std::swap_ranges(begin(),end(),y.begin());
31439 }
31440
31441
31442 const T* data() const { return elems; }
31443 T* data() { return elems; }
31444
31445
31446 T* c_array() { return elems; }
31447
31448
31449 template <typename T2>
31450 array<T,N>& operator= (const array<T2,N>& rhs) {
31451 std::copy(rhs.begin(),rhs.end(), begin());
31452 return *this;
31453 }
31454
31455
31456 void assign (const T& value)
31457 {
31458 std::fill_n(begin(),size(),value);
31459 }
31460
31461
31462 static void rangecheck (size_type i) {
31463 if (i >= size()) {
31464 throw std::range_error("array<>: index out of range");
31465 }
31466 }
31467
31468 };
31469
31470
31471 template< class T >
31472 class array< T, 0 > {
31473
31474 public:
31475
31476 typedef T value_type;
31477 typedef T* iterator;
31478 typedef const T* const_iterator;
31479 typedef T& reference;
31480 typedef const T& const_reference;
31481 typedef std::size_t size_type;
31482 typedef std::ptrdiff_t difference_type;
31483
31484
31485 iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
31486 const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
31487 iterator end() { return begin(); }
31488 const_iterator end() const { return begin(); }
31489
31490
31491
31492 typedef std::reverse_iterator<iterator> reverse_iterator;
31493 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
31494# 202 "/usr/include/boost/array.hpp" 3 4
31495 reverse_iterator rbegin() { return reverse_iterator(end()); }
31496 const_reverse_iterator rbegin() const {
31497 return const_reverse_iterator(end());
31498 }
31499 reverse_iterator rend() { return reverse_iterator(begin()); }
31500 const_reverse_iterator rend() const {
31501 return const_reverse_iterator(begin());
31502 }
31503
31504
31505 reference operator[](size_type i)
31506 {
31507 return failed_rangecheck();
31508 }
31509
31510 const_reference operator[](size_type i) const
31511 {
31512 return failed_rangecheck();
31513 }
31514
31515
31516 reference at(size_type i) { return failed_rangecheck(); }
31517 const_reference at(size_type i) const { return failed_rangecheck(); }
31518
31519
31520 reference front()
31521 {
31522 return failed_rangecheck();
31523 }
31524
31525 const_reference front() const
31526 {
31527 return failed_rangecheck();
31528 }
31529
31530 reference back()
31531 {
31532 return failed_rangecheck();
31533 }
31534
31535 const_reference back() const
31536 {
31537 return failed_rangecheck();
31538 }
31539
31540
31541 static size_type size() { return 0; }
31542 static bool empty() { return true; }
31543 static size_type max_size() { return 0; }
31544 enum { static_size = 0 };
31545
31546 void swap (array<T,0>& y) {
31547 }
31548
31549
31550 const T* data() const { return 0; }
31551 T* data() { return 0; }
31552
31553
31554 T* c_array() { return 0; }
31555
31556
31557 template <typename T2>
31558 array<T,0>& operator= (const array<T2,0>& ) {
31559 return *this;
31560 }
31561
31562
31563 void assign (const T& ) { }
31564
31565
31566 static reference failed_rangecheck () {
31567 std::range_error e("attempt to access element of an empty array");
31568 boost::throw_exception(e);
31569
31570
31571
31572
31573
31574 static T placeholder;
31575 return placeholder;
31576 }
31577 };
31578
31579
31580
31581 template<class T, std::size_t N>
31582 bool operator== (const array<T,N>& x, const array<T,N>& y) {
31583 return std::equal(x.begin(), x.end(), y.begin());
31584 }
31585 template<class T, std::size_t N>
31586 bool operator< (const array<T,N>& x, const array<T,N>& y) {
31587 return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
31588 }
31589 template<class T, std::size_t N>
31590 bool operator!= (const array<T,N>& x, const array<T,N>& y) {
31591 return !(x==y);
31592 }
31593 template<class T, std::size_t N>
31594 bool operator> (const array<T,N>& x, const array<T,N>& y) {
31595 return y<x;
31596 }
31597 template<class T, std::size_t N>
31598 bool operator<= (const array<T,N>& x, const array<T,N>& y) {
31599 return !(y<x);
31600 }
31601 template<class T, std::size_t N>
31602 bool operator>= (const array<T,N>& x, const array<T,N>& y) {
31603 return !(x<y);
31604 }
31605
31606
31607 template<class T, std::size_t N>
31608 inline void swap (array<T,N>& x, array<T,N>& y) {
31609 x.swap(y);
31610 }
31611
31612}
31613# 3 "genfield.cxx" 2
31614# 1 "/usr/include/boost/lexical_cast.hpp" 1 3 4
31615# 21 "/usr/include/boost/lexical_cast.hpp" 3 4
31616# 1 "/usr/include/boost/limits.hpp" 1 3 4
31617# 22 "/usr/include/boost/lexical_cast.hpp" 2 3 4
31618
31619# 1 "/usr/include/boost/type_traits/is_pointer.hpp" 1 3 4
31620# 24 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
31621# 1 "/usr/include/boost/type_traits/is_member_pointer.hpp" 1 3 4
31622# 24 "/usr/include/boost/type_traits/is_member_pointer.hpp" 3 4
31623# 1 "/usr/include/boost/type_traits/config.hpp" 1 3 4
31624# 16 "/usr/include/boost/type_traits/config.hpp" 3 4
31625# 1 "/usr/include/boost/detail/workaround.hpp" 1 3 4
31626# 17 "/usr/include/boost/type_traits/config.hpp" 2 3 4
31627# 25 "/usr/include/boost/type_traits/is_member_pointer.hpp" 2 3 4
31628
31629
31630
31631# 1 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 1 3 4
31632# 24 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4
31633# 1 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 1 3 4
31634# 25 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 3 4
31635namespace boost {
31636namespace type_traits {
31637
31638template <typename T>
31639struct is_mem_fun_pointer_impl
31640{
31641 static const bool value = false;
31642};
31643
31644
31645
31646
31647
31648template <class R, class T >
31649struct is_mem_fun_pointer_impl<R (T::*)() > { static const bool value = true; };
31650
31651template <class R, class T >
31652struct is_mem_fun_pointer_impl<R (T::*)( ...) > { static const bool value = true; };
31653
31654
31655
31656template <class R, class T >
31657struct is_mem_fun_pointer_impl<R (T::*)() const > { static const bool value = true; };
31658
31659template <class R, class T >
31660struct is_mem_fun_pointer_impl<R (T::*)() volatile > { static const bool value = true; };
31661
31662template <class R, class T >
31663struct is_mem_fun_pointer_impl<R (T::*)() const volatile > { static const bool value = true; };
31664
31665
31666template <class R, class T >
31667struct is_mem_fun_pointer_impl<R (T::*)( ...) const > { static const bool value = true; };
31668
31669template <class R, class T >
31670struct is_mem_fun_pointer_impl<R (T::*)( ...) volatile > { static const bool value = true; };
31671
31672template <class R, class T >
31673struct is_mem_fun_pointer_impl<R (T::*)( ...) const volatile > { static const bool value = true; };
31674
31675
31676template <class R, class T , class T0>
31677struct is_mem_fun_pointer_impl<R (T::*)( T0) > { static const bool value = true; };
31678
31679template <class R, class T , class T0>
31680struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) > { static const bool value = true; };
31681
31682
31683
31684template <class R, class T , class T0>
31685struct is_mem_fun_pointer_impl<R (T::*)( T0) const > { static const bool value = true; };
31686
31687template <class R, class T , class T0>
31688struct is_mem_fun_pointer_impl<R (T::*)( T0) volatile > { static const bool value = true; };
31689
31690template <class R, class T , class T0>
31691struct is_mem_fun_pointer_impl<R (T::*)( T0) const volatile > { static const bool value = true; };
31692
31693
31694template <class R, class T , class T0>
31695struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const > { static const bool value = true; };
31696
31697template <class R, class T , class T0>
31698struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) volatile > { static const bool value = true; };
31699
31700template <class R, class T , class T0>
31701struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const volatile > { static const bool value = true; };
31702
31703
31704template <class R, class T , class T0 , class T1>
31705struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) > { static const bool value = true; };
31706
31707template <class R, class T , class T0 , class T1>
31708struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) > { static const bool value = true; };
31709
31710
31711
31712template <class R, class T , class T0 , class T1>
31713struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const > { static const bool value = true; };
31714
31715template <class R, class T , class T0 , class T1>
31716struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) volatile > { static const bool value = true; };
31717
31718template <class R, class T , class T0 , class T1>
31719struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const volatile > { static const bool value = true; };
31720
31721
31722template <class R, class T , class T0 , class T1>
31723struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const > { static const bool value = true; };
31724
31725template <class R, class T , class T0 , class T1>
31726struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) volatile > { static const bool value = true; };
31727
31728template <class R, class T , class T0 , class T1>
31729struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const volatile > { static const bool value = true; };
31730
31731
31732template <class R, class T , class T0 , class T1 , class T2>
31733struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) > { static const bool value = true; };
31734
31735template <class R, class T , class T0 , class T1 , class T2>
31736struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) > { static const bool value = true; };
31737
31738
31739
31740template <class R, class T , class T0 , class T1 , class T2>
31741struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const > { static const bool value = true; };
31742
31743template <class R, class T , class T0 , class T1 , class T2>
31744struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) volatile > { static const bool value = true; };
31745
31746template <class R, class T , class T0 , class T1 , class T2>
31747struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const volatile > { static const bool value = true; };
31748
31749
31750template <class R, class T , class T0 , class T1 , class T2>
31751struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const > { static const bool value = true; };
31752
31753template <class R, class T , class T0 , class T1 , class T2>
31754struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) volatile > { static const bool value = true; };
31755
31756template <class R, class T , class T0 , class T1 , class T2>
31757struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const volatile > { static const bool value = true; };
31758
31759
31760template <class R, class T , class T0 , class T1 , class T2 , class T3>
31761struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) > { static const bool value = true; };
31762
31763template <class R, class T , class T0 , class T1 , class T2 , class T3>
31764struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) > { static const bool value = true; };
31765
31766
31767
31768template <class R, class T , class T0 , class T1 , class T2 , class T3>
31769struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const > { static const bool value = true; };
31770
31771template <class R, class T , class T0 , class T1 , class T2 , class T3>
31772struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) volatile > { static const bool value = true; };
31773
31774template <class R, class T , class T0 , class T1 , class T2 , class T3>
31775struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const volatile > { static const bool value = true; };
31776
31777
31778template <class R, class T , class T0 , class T1 , class T2 , class T3>
31779struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const > { static const bool value = true; };
31780
31781template <class R, class T , class T0 , class T1 , class T2 , class T3>
31782struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) volatile > { static const bool value = true; };
31783
31784template <class R, class T , class T0 , class T1 , class T2 , class T3>
31785struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const volatile > { static const bool value = true; };
31786
31787
31788template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31789struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) > { static const bool value = true; };
31790
31791template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31792struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) > { static const bool value = true; };
31793
31794
31795
31796template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31797struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const > { static const bool value = true; };
31798
31799template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31800struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) volatile > { static const bool value = true; };
31801
31802template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31803struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const volatile > { static const bool value = true; };
31804
31805
31806template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31807struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const > { static const bool value = true; };
31808
31809template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31810struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) volatile > { static const bool value = true; };
31811
31812template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31813struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const volatile > { static const bool value = true; };
31814
31815
31816template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31817struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) > { static const bool value = true; };
31818
31819template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31820struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) > { static const bool value = true; };
31821
31822
31823
31824template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31825struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const > { static const bool value = true; };
31826
31827template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31828struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) volatile > { static const bool value = true; };
31829
31830template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31831struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile > { static const bool value = true; };
31832
31833
31834template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31835struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const > { static const bool value = true; };
31836
31837template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31838struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile > { static const bool value = true; };
31839
31840template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31841struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile > { static const bool value = true; };
31842
31843
31844template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31845struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) > { static const bool value = true; };
31846
31847template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31848struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) > { static const bool value = true; };
31849
31850
31851
31852template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31853struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const > { static const bool value = true; };
31854
31855template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31856struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile > { static const bool value = true; };
31857
31858template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31859struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile > { static const bool value = true; };
31860
31861
31862template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31863struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const > { static const bool value = true; };
31864
31865template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31866struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile > { static const bool value = true; };
31867
31868template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31869struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile > { static const bool value = true; };
31870
31871
31872template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31873struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) > { static const bool value = true; };
31874
31875template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31876struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) > { static const bool value = true; };
31877
31878
31879
31880template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31881struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const > { static const bool value = true; };
31882
31883template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31884struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile > { static const bool value = true; };
31885
31886template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31887struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile > { static const bool value = true; };
31888
31889
31890template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31891struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const > { static const bool value = true; };
31892
31893template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31894struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile > { static const bool value = true; };
31895
31896template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31897struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile > { static const bool value = true; };
31898
31899
31900template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31901struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) > { static const bool value = true; };
31902
31903template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31904struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) > { static const bool value = true; };
31905
31906
31907
31908template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31909struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const > { static const bool value = true; };
31910
31911template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31912struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile > { static const bool value = true; };
31913
31914template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31915struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile > { static const bool value = true; };
31916
31917
31918template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31919struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const > { static const bool value = true; };
31920
31921template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31922struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile > { static const bool value = true; };
31923
31924template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31925struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile > { static const bool value = true; };
31926
31927
31928template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31929struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) > { static const bool value = true; };
31930
31931template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31932struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) > { static const bool value = true; };
31933
31934
31935
31936template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31937struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const > { static const bool value = true; };
31938
31939template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31940struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile > { static const bool value = true; };
31941
31942template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31943struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile > { static const bool value = true; };
31944
31945
31946template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31947struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const > { static const bool value = true; };
31948
31949template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31950struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile > { static const bool value = true; };
31951
31952template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31953struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile > { static const bool value = true; };
31954
31955
31956template <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>
31957struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) > { static const bool value = true; };
31958
31959template <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>
31960struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) > { static const bool value = true; };
31961
31962
31963
31964template <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>
31965struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const > { static const bool value = true; };
31966
31967template <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>
31968struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile > { static const bool value = true; };
31969
31970template <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>
31971struct 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; };
31972
31973
31974template <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>
31975struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const > { static const bool value = true; };
31976
31977template <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>
31978struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile > { static const bool value = true; };
31979
31980template <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>
31981struct 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; };
31982
31983
31984template <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>
31985struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) > { static const bool value = true; };
31986
31987template <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>
31988struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) > { static const bool value = true; };
31989
31990
31991
31992template <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>
31993struct 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; };
31994
31995template <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>
31996struct 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; };
31997
31998template <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>
31999struct 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; };
32000
32001
32002template <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>
32003struct 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; };
32004
32005template <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>
32006struct 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; };
32007
32008template <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>
32009struct 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; };
32010
32011
32012template <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>
32013struct 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; };
32014
32015template <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>
32016struct 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; };
32017
32018
32019
32020template <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>
32021struct 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; };
32022
32023template <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>
32024struct 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; };
32025
32026template <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>
32027struct 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; };
32028
32029
32030template <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>
32031struct 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; };
32032
32033template <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>
32034struct 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; };
32035
32036template <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>
32037struct 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; };
32038
32039
32040template <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>
32041struct 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; };
32042
32043template <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>
32044struct 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; };
32045
32046
32047
32048template <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>
32049struct 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; };
32050
32051template <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>
32052struct 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; };
32053
32054template <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>
32055struct 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; };
32056
32057
32058template <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>
32059struct 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; };
32060
32061template <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>
32062struct 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; };
32063
32064template <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>
32065struct 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; };
32066
32067
32068template <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>
32069struct 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; };
32070
32071template <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>
32072struct 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; };
32073
32074
32075
32076template <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>
32077struct 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; };
32078
32079template <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>
32080struct 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; };
32081
32082template <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>
32083struct 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; };
32084
32085
32086template <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>
32087struct 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; };
32088
32089template <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>
32090struct 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; };
32091
32092template <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>
32093struct 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; };
32094
32095
32096template <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>
32097struct 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; };
32098
32099template <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>
32100struct 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; };
32101
32102
32103
32104template <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>
32105struct 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; };
32106
32107template <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>
32108struct 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; };
32109
32110template <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>
32111struct 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; };
32112
32113
32114template <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>
32115struct 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; };
32116
32117template <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>
32118struct 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; };
32119
32120template <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>
32121struct 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; };
32122
32123
32124template <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>
32125struct 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; };
32126
32127template <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>
32128struct 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; };
32129
32130
32131
32132template <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>
32133struct 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; };
32134
32135template <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>
32136struct 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; };
32137
32138template <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>
32139struct 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; };
32140
32141
32142template <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>
32143struct 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; };
32144
32145template <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>
32146struct 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; };
32147
32148template <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>
32149struct 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; };
32150
32151
32152template <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>
32153struct 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; };
32154
32155template <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>
32156struct 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; };
32157
32158
32159
32160template <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>
32161struct 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; };
32162
32163template <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>
32164struct 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; };
32165
32166template <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>
32167struct 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; };
32168
32169
32170template <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>
32171struct 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; };
32172
32173template <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>
32174struct 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; };
32175
32176template <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>
32177struct 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; };
32178
32179
32180template <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>
32181struct 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; };
32182
32183template <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>
32184struct 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; };
32185
32186
32187
32188template <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>
32189struct 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; };
32190
32191template <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>
32192struct 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; };
32193
32194template <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>
32195struct 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; };
32196
32197
32198template <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>
32199struct 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; };
32200
32201template <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>
32202struct 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; };
32203
32204template <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>
32205struct 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; };
32206
32207
32208template <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>
32209struct 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; };
32210
32211template <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>
32212struct 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; };
32213
32214
32215
32216template <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>
32217struct 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; };
32218
32219template <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>
32220struct 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; };
32221
32222template <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>
32223struct 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; };
32224
32225
32226template <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>
32227struct 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; };
32228
32229template <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>
32230struct 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; };
32231
32232template <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>
32233struct 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; };
32234
32235
32236template <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>
32237struct 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; };
32238
32239template <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>
32240struct 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; };
32241
32242
32243
32244template <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>
32245struct 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; };
32246
32247template <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>
32248struct 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; };
32249
32250template <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>
32251struct 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; };
32252
32253
32254template <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>
32255struct 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; };
32256
32257template <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>
32258struct 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; };
32259
32260template <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>
32261struct 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; };
32262
32263
32264template <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>
32265struct 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; };
32266
32267template <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>
32268struct 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; };
32269
32270
32271
32272template <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>
32273struct 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; };
32274
32275template <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>
32276struct 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; };
32277
32278template <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>
32279struct 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; };
32280
32281
32282template <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>
32283struct 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; };
32284
32285template <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>
32286struct 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; };
32287
32288template <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>
32289struct 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; };
32290
32291
32292template <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>
32293struct 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; };
32294
32295template <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>
32296struct 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; };
32297
32298
32299
32300template <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>
32301struct 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; };
32302
32303template <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>
32304struct 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; };
32305
32306template <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>
32307struct 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; };
32308
32309
32310template <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>
32311struct 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; };
32312
32313template <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>
32314struct 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; };
32315
32316template <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>
32317struct 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; };
32318
32319
32320template <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>
32321struct 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; };
32322
32323template <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>
32324struct 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; };
32325
32326
32327
32328template <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>
32329struct 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; };
32330
32331template <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>
32332struct 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; };
32333
32334template <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>
32335struct 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; };
32336
32337
32338template <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>
32339struct 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; };
32340
32341template <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>
32342struct 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; };
32343
32344template <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>
32345struct 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; };
32346
32347
32348template <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>
32349struct 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; };
32350
32351template <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>
32352struct 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; };
32353
32354
32355
32356template <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>
32357struct 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; };
32358
32359template <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>
32360struct 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; };
32361
32362template <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>
32363struct 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; };
32364
32365
32366template <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>
32367struct 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; };
32368
32369template <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>
32370struct 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; };
32371
32372template <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>
32373struct 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; };
32374# 776 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 3 4
32375}
32376}
32377# 25 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 2 3 4
32378# 35 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4
32379# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
32380# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
32381# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
32382# 10 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 3 4
32383# 1 "/usr/include/boost/mpl/int.hpp" 1 3 4
32384# 17 "/usr/include/boost/mpl/int.hpp" 3 4
32385# 1 "/usr/include/boost/mpl/int_fwd.hpp" 1 3 4
32386# 17 "/usr/include/boost/mpl/int_fwd.hpp" 3 4
32387# 1 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 1 3 4
32388# 17 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 3 4
32389# 1 "/usr/include/boost/mpl/aux_/config/adl.hpp" 1 3 4
32390# 17 "/usr/include/boost/mpl/aux_/config/adl.hpp" 3 4
32391# 1 "/usr/include/boost/mpl/aux_/config/msvc.hpp" 1 3 4
32392# 18 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
32393# 1 "/usr/include/boost/mpl/aux_/config/intel.hpp" 1 3 4
32394# 19 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
32395# 1 "/usr/include/boost/mpl/aux_/config/gcc.hpp" 1 3 4
32396# 20 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
32397# 1 "/usr/include/boost/mpl/aux_/config/workaround.hpp" 1 3 4
32398# 21 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
32399# 18 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 2 3 4
32400# 33 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 3 4
32401namespace mpl_ { namespace aux {} }
32402namespace boost { namespace mpl { using namespace mpl_;
32403namespace aux { using namespace mpl_::aux; }
32404}}
32405# 18 "/usr/include/boost/mpl/int_fwd.hpp" 2 3 4
32406# 1 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 1 3 4
32407# 17 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 3 4
32408# 1 "/usr/include/boost/mpl/aux_/config/nttp.hpp" 1 3 4
32409# 18 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 2 3 4
32410# 19 "/usr/include/boost/mpl/int_fwd.hpp" 2 3 4
32411
32412namespace mpl_ {
32413
32414template< int N > struct int_;
32415
32416}
32417namespace boost { namespace mpl { using ::mpl_::int_; } }
32418# 18 "/usr/include/boost/mpl/int.hpp" 2 3 4
32419
32420
32421# 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4
32422# 16 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
32423# 1 "/usr/include/boost/mpl/integral_c_tag.hpp" 1 3 4
32424# 19 "/usr/include/boost/mpl/integral_c_tag.hpp" 3 4
32425# 1 "/usr/include/boost/mpl/aux_/config/static_constant.hpp" 1 3 4
32426# 20 "/usr/include/boost/mpl/integral_c_tag.hpp" 2 3 4
32427
32428namespace mpl_ {
32429struct integral_c_tag { static const int value = 0; };
32430}
32431namespace boost { namespace mpl { using ::mpl_::integral_c_tag; } }
32432# 17 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 2 3 4
32433# 1 "/usr/include/boost/mpl/aux_/static_cast.hpp" 1 3 4
32434# 18 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 2 3 4
32435
32436
32437
32438
32439# 1 "/usr/include/boost/preprocessor/cat.hpp" 1 3 4
32440# 17 "/usr/include/boost/preprocessor/cat.hpp" 3 4
32441# 1 "/usr/include/boost/preprocessor/config/config.hpp" 1 3 4
32442# 18 "/usr/include/boost/preprocessor/cat.hpp" 2 3 4
32443# 23 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 2 3 4
32444# 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
32445namespace mpl_ {
32446
32447template< int N >
32448struct int_
32449{
32450 static const int value = N;
32451
32452
32453
32454
32455
32456 typedef int_ type;
32457
32458 typedef int value_type;
32459 typedef integral_c_tag tag;
32460# 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
32461 typedef mpl_::int_< static_cast<int>((value + 1)) > next;
32462 typedef mpl_::int_< static_cast<int>((value - 1)) > prior;
32463
32464
32465
32466
32467
32468
32469 operator int() const { return static_cast<int>(this->value); }
32470};
32471
32472
32473template< int N >
32474int const mpl_::int_< N >::value;
32475
32476
32477}
32478# 21 "/usr/include/boost/mpl/int.hpp" 2 3 4
32479# 11 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 2 3 4
32480# 1 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 1 3 4
32481# 17 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 3 4
32482namespace boost { namespace mpl { namespace aux {
32483
32484template< typename F > struct template_arity;
32485
32486}}}
32487# 12 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 2 3 4
32488# 1 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 1 3 4
32489# 17 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 3 4
32490# 1 "/usr/include/boost/mpl/aux_/config/preprocessor.hpp" 1 3 4
32491# 18 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
32492# 45 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 3 4
32493# 1 "/usr/include/boost/preprocessor/comma_if.hpp" 1 3 4
32494# 15 "/usr/include/boost/preprocessor/comma_if.hpp" 3 4
32495# 1 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 1 3 4
32496# 18 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 3 4
32497# 1 "/usr/include/boost/preprocessor/control/if.hpp" 1 3 4
32498# 18 "/usr/include/boost/preprocessor/control/if.hpp" 3 4
32499# 1 "/usr/include/boost/preprocessor/control/iif.hpp" 1 3 4
32500# 19 "/usr/include/boost/preprocessor/control/if.hpp" 2 3 4
32501# 1 "/usr/include/boost/preprocessor/logical/bool.hpp" 1 3 4
32502# 20 "/usr/include/boost/preprocessor/control/if.hpp" 2 3 4
32503# 19 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4
32504# 1 "/usr/include/boost/preprocessor/facilities/empty.hpp" 1 3 4
32505# 20 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4
32506# 1 "/usr/include/boost/preprocessor/punctuation/comma.hpp" 1 3 4
32507# 21 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4
32508# 16 "/usr/include/boost/preprocessor/comma_if.hpp" 2 3 4
32509# 46 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
32510# 1 "/usr/include/boost/preprocessor/repeat.hpp" 1 3 4
32511# 15 "/usr/include/boost/preprocessor/repeat.hpp" 3 4
32512# 1 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 1 3 4
32513# 19 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 3 4
32514# 1 "/usr/include/boost/preprocessor/debug/error.hpp" 1 3 4
32515# 20 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4
32516# 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
32517# 21 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4
32518# 1 "/usr/include/boost/preprocessor/tuple/eat.hpp" 1 3 4
32519# 22 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4
32520# 16 "/usr/include/boost/preprocessor/repeat.hpp" 2 3 4
32521# 47 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
32522# 1 "/usr/include/boost/preprocessor/inc.hpp" 1 3 4
32523# 15 "/usr/include/boost/preprocessor/inc.hpp" 3 4
32524# 1 "/usr/include/boost/preprocessor/arithmetic/inc.hpp" 1 3 4
32525# 16 "/usr/include/boost/preprocessor/inc.hpp" 2 3 4
32526# 48 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
32527# 13 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 2 3 4
32528# 1 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 1 3 4
32529# 17 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 3 4
32530# 1 "/usr/include/boost/mpl/aux_/config/ttp.hpp" 1 3 4
32531# 18 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 2 3 4
32532# 1 "/usr/include/boost/mpl/aux_/config/ctps.hpp" 1 3 4
32533# 19 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 2 3 4
32534# 14 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 2 3 4
32535# 1 "/usr/include/boost/mpl/aux_/config/overload_resolution.hpp" 1 3 4
32536# 15 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 2 3 4
32537# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
32538# 1 "/usr/include/boost/type_traits/integral_constant.hpp" 1 3 4
32539# 10 "/usr/include/boost/type_traits/integral_constant.hpp" 3 4
32540# 1 "/usr/include/boost/mpl/bool.hpp" 1 3 4
32541# 17 "/usr/include/boost/mpl/bool.hpp" 3 4
32542# 1 "/usr/include/boost/mpl/bool_fwd.hpp" 1 3 4
32543# 19 "/usr/include/boost/mpl/bool_fwd.hpp" 3 4
32544namespace mpl_ {
32545
32546template< bool C_ > struct bool_;
32547
32548
32549typedef bool_<true> true_;
32550typedef bool_<false> false_;
32551
32552}
32553
32554namespace boost { namespace mpl { using ::mpl_::bool_; } }
32555namespace boost { namespace mpl { using ::mpl_::true_; } }
32556namespace boost { namespace mpl { using ::mpl_::false_; } }
32557# 18 "/usr/include/boost/mpl/bool.hpp" 2 3 4
32558
32559
32560
32561namespace mpl_ {
32562
32563template< bool C_ > struct bool_
32564{
32565 static const bool value = C_;
32566 typedef integral_c_tag tag;
32567 typedef bool_ type;
32568 typedef bool value_type;
32569 operator bool() const { return this->value; }
32570};
32571
32572
32573template< bool C_ >
32574bool const bool_<C_>::value;
32575
32576
32577}
32578# 11 "/usr/include/boost/type_traits/integral_constant.hpp" 2 3 4
32579# 1 "/usr/include/boost/mpl/integral_c.hpp" 1 3 4
32580# 17 "/usr/include/boost/mpl/integral_c.hpp" 3 4
32581# 1 "/usr/include/boost/mpl/integral_c_fwd.hpp" 1 3 4
32582# 20 "/usr/include/boost/mpl/integral_c_fwd.hpp" 3 4
32583namespace mpl_ {
32584
32585
32586
32587
32588
32589template< typename T, T N > struct integral_c;
32590
32591
32592}
32593namespace boost { namespace mpl { using ::mpl_::integral_c; } }
32594# 18 "/usr/include/boost/mpl/integral_c.hpp" 2 3 4
32595# 32 "/usr/include/boost/mpl/integral_c.hpp" 3 4
32596# 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4
32597# 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
32598namespace mpl_ {
32599
32600template< typename T, T N >
32601struct integral_c
32602{
32603 static const T value = N;
32604
32605
32606
32607
32608
32609 typedef integral_c type;
32610
32611 typedef T value_type;
32612 typedef integral_c_tag tag;
32613# 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
32614 typedef integral_c< T, static_cast<T>((value + 1)) > next;
32615 typedef integral_c< T, static_cast<T>((value - 1)) > prior;
32616
32617
32618
32619
32620
32621
32622 operator T() const { return static_cast<T>(this->value); }
32623};
32624
32625
32626template< typename T, T N >
32627T const integral_c< T, N >::value;
32628
32629
32630}
32631# 33 "/usr/include/boost/mpl/integral_c.hpp" 2 3 4
32632
32633
32634
32635
32636namespace mpl_ {
32637
32638template< bool C >
32639struct integral_c<bool, C>
32640{
32641 static const bool value = C;
32642 typedef integral_c_tag tag;
32643 typedef integral_c type;
32644 typedef bool value_type;
32645 operator bool() const { return this->value; }
32646};
32647}
32648# 12 "/usr/include/boost/type_traits/integral_constant.hpp" 2 3 4
32649
32650namespace boost{
32651
32652
32653
32654
32655template <class T, T val>
32656
32657struct integral_constant : public mpl::integral_c<T, val>
32658{
32659 typedef integral_constant<T,val> type;
32660};
32661
32662template<> struct integral_constant<bool,true> : public mpl::true_
32663{
32664
32665
32666
32667
32668
32669
32670
32671 typedef integral_constant<bool,true> type;
32672};
32673template<> struct integral_constant<bool,false> : public mpl::false_
32674{
32675
32676
32677
32678
32679
32680
32681
32682 typedef integral_constant<bool,false> type;
32683};
32684
32685typedef integral_constant<bool,true> true_type;
32686typedef integral_constant<bool,false> false_type;
32687
32688}
32689# 16 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
32690
32691# 1 "/usr/include/boost/mpl/aux_/lambda_support.hpp" 1 3 4
32692# 18 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
32693# 36 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 2 3 4
32694
32695namespace boost {
32696
32697
32698
32699template< typename T > struct is_member_function_pointer : ::boost::integral_constant<bool,::boost::type_traits::is_mem_fun_pointer_impl<T>::value> { };
32700# 122 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4
32701}
32702
32703# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
32704# 125 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 2 3 4
32705# 29 "/usr/include/boost/type_traits/is_member_pointer.hpp" 2 3 4
32706# 39 "/usr/include/boost/type_traits/is_member_pointer.hpp" 3 4
32707# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
32708# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
32709# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
32710# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
32711# 40 "/usr/include/boost/type_traits/is_member_pointer.hpp" 2 3 4
32712
32713namespace boost {
32714
32715
32716
32717
32718
32719
32720template< typename T > struct is_member_pointer : ::boost::integral_constant<bool,::boost::is_member_function_pointer<T>::value> { };
32721template< typename T, typename U > struct is_member_pointer< U T::* > : ::boost::integral_constant<bool,true> { };
32722# 104 "/usr/include/boost/type_traits/is_member_pointer.hpp" 3 4
32723}
32724
32725# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
32726# 107 "/usr/include/boost/type_traits/is_member_pointer.hpp" 2 3 4
32727# 25 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
32728# 1 "/usr/include/boost/type_traits/detail/ice_and.hpp" 1 3 4
32729# 14 "/usr/include/boost/type_traits/detail/ice_and.hpp" 3 4
32730namespace boost {
32731namespace type_traits {
32732
32733template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
32734struct ice_and;
32735
32736template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
32737struct ice_and
32738{
32739 static const bool value = false;
32740};
32741
32742template <>
32743struct ice_and<true, true, true, true, true, true, true>
32744{
32745 static const bool value = true;
32746};
32747
32748}
32749}
32750# 26 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
32751# 1 "/usr/include/boost/type_traits/detail/ice_not.hpp" 1 3 4
32752# 13 "/usr/include/boost/type_traits/detail/ice_not.hpp" 3 4
32753namespace boost {
32754namespace type_traits {
32755
32756template <bool b>
32757struct ice_not
32758{
32759 static const bool value = true;
32760};
32761
32762template <>
32763struct ice_not<true>
32764{
32765 static const bool value = false;
32766};
32767
32768}
32769}
32770# 27 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
32771# 38 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
32772# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
32773# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
32774# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
32775# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
32776# 39 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
32777
32778namespace boost {
32779
32780
32781
32782namespace detail {
32783
32784template< typename T > struct is_pointer_helper
32785{
32786 static const bool value = false;
32787};
32788# 58 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
32789template< typename T > struct is_pointer_helper<T*> { static const bool value = true; };
32790template< typename T > struct is_pointer_helper<T* const> { static const bool value = true; };
32791template< typename T > struct is_pointer_helper<T* volatile> { static const bool value = true; };
32792template< typename T > struct is_pointer_helper<T* const volatile> { static const bool value = true; };
32793
32794
32795
32796template< typename T >
32797struct is_pointer_impl
32798{
32799 static const bool value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper<T>::value , ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value >::value);
32800
32801
32802
32803
32804
32805
32806
32807};
32808
32809}
32810
32811template< typename T > struct is_pointer : ::boost::integral_constant<bool,::boost::detail::is_pointer_impl<T>::value> { };
32812# 145 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
32813}
32814
32815# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
32816# 148 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
32817# 24 "/usr/include/boost/lexical_cast.hpp" 2 3 4
32818
32819
32820
32821
32822# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 1 3 4
32823# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3 4
32824
32825# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32826
32827
32828
32829
32830namespace std __attribute__ ((__visibility__ ("default"))) {
32831# 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32832 template<typename _CharT, typename _Traits, typename _Alloc>
32833 class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
32834 {
32835 public:
32836
32837 typedef _CharT char_type;
32838 typedef _Traits traits_type;
32839
32840
32841 typedef _Alloc allocator_type;
32842 typedef typename traits_type::int_type int_type;
32843 typedef typename traits_type::pos_type pos_type;
32844 typedef typename traits_type::off_type off_type;
32845
32846 typedef basic_streambuf<char_type, traits_type> __streambuf_type;
32847 typedef basic_string<char_type, _Traits, _Alloc> __string_type;
32848 typedef typename __string_type::size_type __size_type;
32849
32850 protected:
32851
32852
32853
32854
32855
32856 ios_base::openmode _M_mode;
32857
32858
32859 __string_type _M_string;
32860
32861 public:
32862# 99 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32863 explicit
32864 basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out)
32865 : __streambuf_type(), _M_mode(__mode), _M_string()
32866 { }
32867# 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32868 explicit
32869 basic_stringbuf(const __string_type& __str,
32870 ios_base::openmode __mode = ios_base::in | ios_base::out)
32871 : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size())
32872 { _M_stringbuf_init(__mode); }
32873# 127 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32874 __string_type
32875 str() const
32876 {
32877 __string_type __ret;
32878 if (this->pptr())
32879 {
32880
32881 if (this->pptr() > this->egptr())
32882 __ret = __string_type(this->pbase(), this->pptr());
32883 else
32884 __ret = __string_type(this->pbase(), this->egptr());
32885 }
32886 else
32887 __ret = _M_string;
32888 return __ret;
32889 }
32890# 151 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32891 void
32892 str(const __string_type& __s)
32893 {
32894
32895 _M_string.assign(__s.data(), __s.size());
32896 _M_stringbuf_init(_M_mode);
32897 }
32898
32899 protected:
32900
32901 void
32902 _M_stringbuf_init(ios_base::openmode __mode)
32903 {
32904 _M_mode = __mode;
32905 __size_type __len = 0;
32906 if (_M_mode & (ios_base::ate | ios_base::app))
32907 __len = _M_string.size();
32908 _M_sync(const_cast<char_type*>(_M_string.data()), 0, __len);
32909 }
32910
32911 virtual streamsize
32912 showmanyc()
32913 {
32914 streamsize __ret = -1;
32915 if (_M_mode & ios_base::in)
32916 {
32917 _M_update_egptr();
32918 __ret = this->egptr() - this->gptr();
32919 }
32920 return __ret;
32921 }
32922
32923 virtual int_type
32924 underflow();
32925
32926 virtual int_type
32927 pbackfail(int_type __c = traits_type::eof());
32928
32929 virtual int_type
32930 overflow(int_type __c = traits_type::eof());
32931# 203 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32932 virtual __streambuf_type*
32933 setbuf(char_type* __s, streamsize __n)
32934 {
32935 if (__s && __n >= 0)
32936 {
32937
32938
32939
32940
32941
32942
32943 _M_string.clear();
32944
32945
32946 _M_sync(__s, __n, 0);
32947 }
32948 return this;
32949 }
32950
32951 virtual pos_type
32952 seekoff(off_type __off, ios_base::seekdir __way,
32953 ios_base::openmode __mode = ios_base::in | ios_base::out);
32954
32955 virtual pos_type
32956 seekpos(pos_type __sp,
32957 ios_base::openmode __mode = ios_base::in | ios_base::out);
32958
32959
32960
32961
32962 void
32963 _M_sync(char_type* __base, __size_type __i, __size_type __o);
32964
32965
32966
32967 void
32968 _M_update_egptr()
32969 {
32970 const bool __testin = _M_mode & ios_base::in;
32971 if (this->pptr() && this->pptr() > this->egptr())
32972 if (__testin)
32973 this->setg(this->eback(), this->gptr(), this->pptr());
32974 else
32975 this->setg(this->pptr(), this->pptr(), this->pptr());
32976 }
32977 };
32978# 260 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
32979 template<typename _CharT, typename _Traits, typename _Alloc>
32980 class basic_istringstream : public basic_istream<_CharT, _Traits>
32981 {
32982 public:
32983
32984 typedef _CharT char_type;
32985 typedef _Traits traits_type;
32986
32987
32988 typedef _Alloc allocator_type;
32989 typedef typename traits_type::int_type int_type;
32990 typedef typename traits_type::pos_type pos_type;
32991 typedef typename traits_type::off_type off_type;
32992
32993
32994 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
32995 typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
32996 typedef basic_istream<char_type, traits_type> __istream_type;
32997
32998 private:
32999 __stringbuf_type _M_stringbuf;
33000
33001 public:
33002# 298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33003 explicit
33004 basic_istringstream(ios_base::openmode __mode = ios_base::in)
33005 : __istream_type(), _M_stringbuf(__mode | ios_base::in)
33006 { this->init(&_M_stringbuf); }
33007# 318 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33008 explicit
33009 basic_istringstream(const __string_type& __str,
33010 ios_base::openmode __mode = ios_base::in)
33011 : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
33012 { this->init(&_M_stringbuf); }
33013
33014
33015
33016
33017
33018
33019
33020 ~basic_istringstream()
33021 { }
33022# 340 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33023 __stringbuf_type*
33024 rdbuf() const
33025 { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
33026
33027
33028
33029
33030
33031 __string_type
33032 str() const
33033 { return _M_stringbuf.str(); }
33034
33035
33036
33037
33038
33039
33040
33041 void
33042 str(const __string_type& __s)
33043 { _M_stringbuf.str(__s); }
33044 };
33045# 373 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33046 template <typename _CharT, typename _Traits, typename _Alloc>
33047 class basic_ostringstream : public basic_ostream<_CharT, _Traits>
33048 {
33049 public:
33050
33051 typedef _CharT char_type;
33052 typedef _Traits traits_type;
33053
33054
33055 typedef _Alloc allocator_type;
33056 typedef typename traits_type::int_type int_type;
33057 typedef typename traits_type::pos_type pos_type;
33058 typedef typename traits_type::off_type off_type;
33059
33060
33061 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
33062 typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
33063 typedef basic_ostream<char_type, traits_type> __ostream_type;
33064
33065 private:
33066 __stringbuf_type _M_stringbuf;
33067
33068 public:
33069# 411 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33070 explicit
33071 basic_ostringstream(ios_base::openmode __mode = ios_base::out)
33072 : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
33073 { this->init(&_M_stringbuf); }
33074# 431 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33075 explicit
33076 basic_ostringstream(const __string_type& __str,
33077 ios_base::openmode __mode = ios_base::out)
33078 : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
33079 { this->init(&_M_stringbuf); }
33080
33081
33082
33083
33084
33085
33086
33087 ~basic_ostringstream()
33088 { }
33089# 453 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33090 __stringbuf_type*
33091 rdbuf() const
33092 { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
33093
33094
33095
33096
33097
33098 __string_type
33099 str() const
33100 { return _M_stringbuf.str(); }
33101
33102
33103
33104
33105
33106
33107
33108 void
33109 str(const __string_type& __s)
33110 { _M_stringbuf.str(__s); }
33111 };
33112# 486 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33113 template <typename _CharT, typename _Traits, typename _Alloc>
33114 class basic_stringstream : public basic_iostream<_CharT, _Traits>
33115 {
33116 public:
33117
33118 typedef _CharT char_type;
33119 typedef _Traits traits_type;
33120
33121
33122 typedef _Alloc allocator_type;
33123 typedef typename traits_type::int_type int_type;
33124 typedef typename traits_type::pos_type pos_type;
33125 typedef typename traits_type::off_type off_type;
33126
33127
33128 typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
33129 typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
33130 typedef basic_iostream<char_type, traits_type> __iostream_type;
33131
33132 private:
33133 __stringbuf_type _M_stringbuf;
33134
33135 public:
33136# 522 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33137 explicit
33138 basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in)
33139 : __iostream_type(), _M_stringbuf(__m)
33140 { this->init(&_M_stringbuf); }
33141# 540 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33142 explicit
33143 basic_stringstream(const __string_type& __str,
33144 ios_base::openmode __m = ios_base::out | ios_base::in)
33145 : __iostream_type(), _M_stringbuf(__str, __m)
33146 { this->init(&_M_stringbuf); }
33147
33148
33149
33150
33151
33152
33153
33154 ~basic_stringstream()
33155 { }
33156# 562 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
33157 __stringbuf_type*
33158 rdbuf() const
33159 { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
33160
33161
33162
33163
33164
33165 __string_type
33166 str() const
33167 { return _M_stringbuf.str(); }
33168
33169
33170
33171
33172
33173
33174
33175 void
33176 str(const __string_type& __s)
33177 { _M_stringbuf.str(__s); }
33178 };
33179
33180}
33181
33182
33183# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/sstream.tcc" 1 3
33184# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/sstream.tcc" 3
33185
33186# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/sstream.tcc" 3
33187
33188# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 1 3
33189# 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/sstream.tcc" 2 3
33190
33191namespace std __attribute__ ((__visibility__ ("default"))) {
33192
33193 template <class _CharT, class _Traits, class _Alloc>
33194 typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
33195 basic_stringbuf<_CharT, _Traits, _Alloc>::
33196 pbackfail(int_type __c)
33197 {
33198 int_type __ret = traits_type::eof();
33199 if (this->eback() < this->gptr())
33200 {
33201
33202
33203 const bool __testeof = traits_type::eq_int_type(__c, __ret);
33204 if (!__testeof)
33205 {
33206 const bool __testeq = traits_type::eq(traits_type::
33207 to_char_type(__c),
33208 this->gptr()[-1]);
33209 const bool __testout = this->_M_mode & ios_base::out;
33210 if (__testeq || __testout)
33211 {
33212 this->gbump(-1);
33213 if (!__testeq)
33214 *this->gptr() = traits_type::to_char_type(__c);
33215 __ret = __c;
33216 }
33217 }
33218 else
33219 {
33220 this->gbump(-1);
33221 __ret = traits_type::not_eof(__c);
33222 }
33223 }
33224 return __ret;
33225 }
33226
33227 template <class _CharT, class _Traits, class _Alloc>
33228 typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
33229 basic_stringbuf<_CharT, _Traits, _Alloc>::
33230 overflow(int_type __c)
33231 {
33232 const bool __testout = this->_M_mode & ios_base::out;
33233 if (__builtin_expect(!__testout, false))
33234 return traits_type::eof();
33235
33236 const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof());
33237 if (__builtin_expect(__testeof, false))
33238 return traits_type::not_eof(__c);
33239
33240 const __size_type __capacity = _M_string.capacity();
33241 const __size_type __max_size = _M_string.max_size();
33242 const bool __testput = this->pptr() < this->epptr();
33243 if (__builtin_expect(!__testput && __capacity == __max_size, false))
33244 return traits_type::eof();
33245
33246
33247
33248 const char_type __conv = traits_type::to_char_type(__c);
33249 if (!__testput)
33250 {
33251# 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/sstream.tcc" 3
33252 const __size_type __opt_len = std::max(__size_type(2 * __capacity),
33253 __size_type(512));
33254 const __size_type __len = std::min(__opt_len, __max_size);
33255 __string_type __tmp;
33256 __tmp.reserve(__len);
33257 if (this->pbase())
33258 __tmp.assign(this->pbase(), this->epptr() - this->pbase());
33259 __tmp.push_back(__conv);
33260 _M_string.swap(__tmp);
33261 _M_sync(const_cast<char_type*>(_M_string.data()),
33262 this->gptr() - this->eback(), this->pptr() - this->pbase());
33263 }
33264 else
33265 *this->pptr() = __conv;
33266 this->pbump(1);
33267 return __c;
33268 }
33269
33270 template <class _CharT, class _Traits, class _Alloc>
33271 typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
33272 basic_stringbuf<_CharT, _Traits, _Alloc>::
33273 underflow()
33274 {
33275 int_type __ret = traits_type::eof();
33276 const bool __testin = this->_M_mode & ios_base::in;
33277 if (__testin)
33278 {
33279
33280 _M_update_egptr();
33281
33282 if (this->gptr() < this->egptr())
33283 __ret = traits_type::to_int_type(*this->gptr());
33284 }
33285 return __ret;
33286 }
33287
33288 template <class _CharT, class _Traits, class _Alloc>
33289 typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
33290 basic_stringbuf<_CharT, _Traits, _Alloc>::
33291 seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode)
33292 {
33293 pos_type __ret = pos_type(off_type(-1));
33294 bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
33295 bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
33296 const bool __testboth = __testin && __testout && __way != ios_base::cur;
33297 __testin &= !(__mode & ios_base::out);
33298 __testout &= !(__mode & ios_base::in);
33299
33300
33301
33302 const char_type* __beg = __testin ? this->eback() : this->pbase();
33303 if ((__beg || !__off) && (__testin || __testout || __testboth))
33304 {
33305 _M_update_egptr();
33306
33307 off_type __newoffi = __off;
33308 off_type __newoffo = __newoffi;
33309 if (__way == ios_base::cur)
33310 {
33311 __newoffi += this->gptr() - __beg;
33312 __newoffo += this->pptr() - __beg;
33313 }
33314 else if (__way == ios_base::end)
33315 __newoffo = __newoffi += this->egptr() - __beg;
33316
33317 if ((__testin || __testboth)
33318 && __newoffi >= 0
33319 && this->egptr() - __beg >= __newoffi)
33320 {
33321 this->gbump((__beg + __newoffi) - this->gptr());
33322 __ret = pos_type(__newoffi);
33323 }
33324 if ((__testout || __testboth)
33325 && __newoffo >= 0
33326 && this->egptr() - __beg >= __newoffo)
33327 {
33328 this->pbump((__beg + __newoffo) - this->pptr());
33329 __ret = pos_type(__newoffo);
33330 }
33331 }
33332 return __ret;
33333 }
33334
33335 template <class _CharT, class _Traits, class _Alloc>
33336 typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
33337 basic_stringbuf<_CharT, _Traits, _Alloc>::
33338 seekpos(pos_type __sp, ios_base::openmode __mode)
33339 {
33340 pos_type __ret = pos_type(off_type(-1));
33341 const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
33342 const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
33343
33344 const char_type* __beg = __testin ? this->eback() : this->pbase();
33345 if ((__beg || !off_type(__sp)) && (__testin || __testout))
33346 {
33347 _M_update_egptr();
33348
33349 const off_type __pos(__sp);
33350 const bool __testpos = (0 <= __pos
33351 && __pos <= this->egptr() - __beg);
33352 if (__testpos)
33353 {
33354 if (__testin)
33355 this->gbump((__beg + __pos) - this->gptr());
33356 if (__testout)
33357 this->pbump((__beg + __pos) - this->pptr());
33358 __ret = __sp;
33359 }
33360 }
33361 return __ret;
33362 }
33363
33364 template <class _CharT, class _Traits, class _Alloc>
33365 void
33366 basic_stringbuf<_CharT, _Traits, _Alloc>::
33367 _M_sync(char_type* __base, __size_type __i, __size_type __o)
33368 {
33369 const bool __testin = _M_mode & ios_base::in;
33370 const bool __testout = _M_mode & ios_base::out;
33371 char_type* __endg = __base + _M_string.size();
33372 char_type* __endp = __base + _M_string.capacity();
33373
33374 if (__base != _M_string.data())
33375 {
33376
33377 __endg += __i;
33378 __i = 0;
33379 __endp = __endg;
33380 }
33381
33382 if (__testin)
33383 this->setg(__base, __base + __i, __endg);
33384 if (__testout)
33385 {
33386 this->setp(__base, __endp);
33387 this->pbump(__o);
33388
33389
33390
33391 if (!__testin)
33392 this->setg(__endg, __endg, __endg);
33393 }
33394 }
33395
33396
33397
33398
33399
33400 extern template class basic_stringbuf<char>;
33401 extern template class basic_istringstream<char>;
33402 extern template class basic_ostringstream<char>;
33403 extern template class basic_stringstream<char>;
33404
33405
33406 extern template class basic_stringbuf<wchar_t>;
33407 extern template class basic_istringstream<wchar_t>;
33408 extern template class basic_ostringstream<wchar_t>;
33409 extern template class basic_stringstream<wchar_t>;
33410
33411
33412
33413}
33414# 589 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 2 3
33415# 29 "/usr/include/boost/lexical_cast.hpp" 2 3 4
33416# 37 "/usr/include/boost/lexical_cast.hpp" 3 4
33417namespace boost
33418{
33419
33420 class bad_lexical_cast : public std::bad_cast
33421 {
33422 public:
33423 bad_lexical_cast() :
33424 source(&typeid(void)), target(&typeid(void))
33425 {
33426 }
33427 bad_lexical_cast(
33428 const std::type_info &source_type,
33429 const std::type_info &target_type) :
33430 source(&source_type), target(&target_type)
33431 {
33432 }
33433 const std::type_info &source_type() const
33434 {
33435 return *source;
33436 }
33437 const std::type_info &target_type() const
33438 {
33439 return *target;
33440 }
33441 virtual const char *what() const throw()
33442 {
33443 return "bad lexical cast: "
33444 "source type value could not be interpreted as target";
33445 }
33446 virtual ~bad_lexical_cast() throw()
33447 {
33448 }
33449 private:
33450 const std::type_info *source;
33451 const std::type_info *target;
33452 };
33453
33454 namespace detail
33455 {
33456 template<typename Type>
33457 struct stream_char
33458 {
33459 typedef char type;
33460 };
33461
33462
33463
33464 template<>
33465 struct stream_char<wchar_t>
33466 {
33467 typedef wchar_t type;
33468 };
33469
33470
33471 template<>
33472 struct stream_char<wchar_t *>
33473 {
33474 typedef wchar_t type;
33475 };
33476
33477 template<>
33478 struct stream_char<const wchar_t *>
33479 {
33480 typedef wchar_t type;
33481 };
33482
33483 template<>
33484 struct stream_char<std::wstring>
33485 {
33486 typedef wchar_t type;
33487 };
33488
33489
33490 template<typename TargetChar, typename SourceChar>
33491 struct widest_char
33492 {
33493 typedef TargetChar type;
33494 };
33495
33496 template<>
33497 struct widest_char<char, wchar_t>
33498 {
33499 typedef wchar_t type;
33500 };
33501 }
33502
33503 namespace detail
33504 {
33505 template<typename Target, typename Source>
33506 class lexical_stream
33507 {
33508 private:
33509 typedef typename widest_char<
33510 typename stream_char<Target>::type,
33511 typename stream_char<Source>::type>::type char_type;
33512
33513 public:
33514 lexical_stream()
33515 {
33516 stream.unsetf(std::ios::skipws);
33517
33518 if(std::numeric_limits<Target>::is_specialized)
33519 stream.precision(std::numeric_limits<Target>::digits10 + 1);
33520 else if(std::numeric_limits<Source>::is_specialized)
33521 stream.precision(std::numeric_limits<Source>::digits10 + 1);
33522 }
33523 ~lexical_stream()
33524 {
33525
33526
33527
33528 }
33529 bool operator<<(const Source &input)
33530 {
33531 return !(stream << input).fail();
33532 }
33533 template<typename InputStreamable>
33534 bool operator>>(InputStreamable &output)
33535 {
33536 return !is_pointer<InputStreamable>::value &&
33537 stream >> output &&
33538 stream.get() ==
33539
33540
33541
33542
33543
33544
33545
33546 std::char_traits<char_type>::eof();
33547
33548 }
33549 bool operator>>(std::string &output)
33550 {
33551
33552
33553
33554 output = stream.str();
33555 return true;
33556 }
33557
33558 bool operator>>(std::wstring &output)
33559 {
33560 output = stream.str();
33561 return true;
33562 }
33563
33564 private:
33565
33566
33567
33568
33569
33570 std::basic_stringstream<char_type> stream;
33571
33572 };
33573 }
33574
33575
33576
33577
33578
33579 namespace detail
33580 {
33581 template<class T>
33582 struct array_to_pointer_decay
33583 {
33584 typedef T type;
33585 };
33586
33587 template<class T, std::size_t N>
33588 struct array_to_pointer_decay<T[N]>
33589 {
33590 typedef const T * type;
33591 };
33592 }
33593
33594 template<typename Target, typename Source>
33595 Target lexical_cast(const Source &arg)
33596 {
33597 typedef typename detail::array_to_pointer_decay<Source>::type NewSource;
33598
33599 detail::lexical_stream<Target, NewSource> interpreter;
33600 Target result;
33601
33602 if(!(interpreter << arg && interpreter >> result))
33603 throw_exception(bad_lexical_cast(typeid(NewSource), typeid(Target)));
33604 return result;
33605 }
33606# 243 "/usr/include/boost/lexical_cast.hpp" 3 4
33607}
33608# 4 "genfield.cxx" 2
33609# 1 "/usr/include/boost/program_options.hpp" 1 3 4
33610# 13 "/usr/include/boost/program_options.hpp" 3 4
33611# 1 "/usr/include/boost/program_options/options_description.hpp" 1 3 4
33612# 11 "/usr/include/boost/program_options/options_description.hpp" 3 4
33613# 1 "/usr/include/boost/program_options/config.hpp" 1 3 4
33614# 11 "/usr/include/boost/program_options/config.hpp" 3 4
33615# 1 "/usr/include/boost/version.hpp" 1 3 4
33616# 12 "/usr/include/boost/program_options/config.hpp" 2 3 4
33617# 30 "/usr/include/boost/program_options/config.hpp" 3 4
33618# 1 "/usr/include/boost/config/auto_link.hpp" 1 3 4
33619# 31 "/usr/include/boost/program_options/config.hpp" 2 3 4
33620# 12 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
33621# 1 "/usr/include/boost/program_options/errors.hpp" 1 3 4
33622# 14 "/usr/include/boost/program_options/errors.hpp" 3 4
33623# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/vector" 1 3 4
33624# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/vector" 3 4
33625
33626# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/vector" 3
33627
33628
33629
33630
33631
33632
33633# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 1 3
33634# 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33635namespace std __attribute__ ((__visibility__ ("default"))) {
33636
33637
33638
33639
33640
33641
33642 template<typename _Tp, typename _Alloc>
33643 struct _Vector_base
33644 {
33645 typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
33646
33647 struct _Vector_impl
33648 : public _Tp_alloc_type
33649 {
33650 _Tp* _M_start;
33651 _Tp* _M_finish;
33652 _Tp* _M_end_of_storage;
33653 _Vector_impl(_Tp_alloc_type const& __a)
33654 : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
33655 { }
33656 };
33657
33658 public:
33659 typedef _Alloc allocator_type;
33660
33661 _Tp_alloc_type&
33662 _M_get_Tp_allocator()
33663 { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
33664
33665 const _Tp_alloc_type&
33666 _M_get_Tp_allocator() const
33667 { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
33668
33669 allocator_type
33670 get_allocator() const
33671 { return allocator_type(_M_get_Tp_allocator()); }
33672
33673 _Vector_base(const allocator_type& __a)
33674 : _M_impl(__a)
33675 { }
33676
33677 _Vector_base(size_t __n, const allocator_type& __a)
33678 : _M_impl(__a)
33679 {
33680 this->_M_impl._M_start = this->_M_allocate(__n);
33681 this->_M_impl._M_finish = this->_M_impl._M_start;
33682 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
33683 }
33684
33685 ~_Vector_base()
33686 { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage
33687 - this->_M_impl._M_start); }
33688
33689 public:
33690 _Vector_impl _M_impl;
33691
33692 _Tp*
33693 _M_allocate(size_t __n)
33694 { return _M_impl.allocate(__n); }
33695
33696 void
33697 _M_deallocate(_Tp* __p, size_t __n)
33698 {
33699 if (__p)
33700 _M_impl.deallocate(__p, __n);
33701 }
33702 };
33703# 158 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33704 template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
33705 class vector : protected _Vector_base<_Tp, _Alloc>
33706 {
33707
33708 typedef typename _Alloc::value_type _Alloc_value_type;
33709
33710
33711
33712 typedef _Vector_base<_Tp, _Alloc> _Base;
33713 typedef vector<_Tp, _Alloc> vector_type;
33714 typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
33715
33716 public:
33717 typedef _Tp value_type;
33718 typedef typename _Tp_alloc_type::pointer pointer;
33719 typedef typename _Tp_alloc_type::const_pointer const_pointer;
33720 typedef typename _Tp_alloc_type::reference reference;
33721 typedef typename _Tp_alloc_type::const_reference const_reference;
33722 typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;
33723 typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>
33724 const_iterator;
33725 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
33726 typedef std::reverse_iterator<iterator> reverse_iterator;
33727 typedef size_t size_type;
33728 typedef ptrdiff_t difference_type;
33729 typedef _Alloc allocator_type;
33730
33731 protected:
33732 using _Base::_M_allocate;
33733 using _Base::_M_deallocate;
33734 using _Base::_M_impl;
33735 using _Base::_M_get_Tp_allocator;
33736
33737 public:
33738
33739
33740
33741
33742
33743 explicit
33744 vector(const allocator_type& __a = allocator_type())
33745 : _Base(__a)
33746 { }
33747# 209 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33748 explicit
33749 vector(size_type __n, const value_type& __value = value_type(),
33750 const allocator_type& __a = allocator_type())
33751 : _Base(__n, __a)
33752 {
33753 std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
33754 _M_get_Tp_allocator());
33755 this->_M_impl._M_finish = this->_M_impl._M_start + __n;
33756 }
33757# 228 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33758 vector(const vector& __x)
33759 : _Base(__x.size(), __x._M_get_Tp_allocator())
33760 { this->_M_impl._M_finish =
33761 std::__uninitialized_copy_a(__x.begin(), __x.end(),
33762 this->_M_impl._M_start,
33763 _M_get_Tp_allocator());
33764 }
33765# 251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33766 template<typename _InputIterator>
33767 vector(_InputIterator __first, _InputIterator __last,
33768 const allocator_type& __a = allocator_type())
33769 : _Base(__a)
33770 {
33771
33772 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
33773 _M_initialize_dispatch(__first, __last, _Integral());
33774 }
33775
33776
33777
33778
33779
33780
33781
33782 ~vector()
33783 { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
33784 _M_get_Tp_allocator()); }
33785# 279 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33786 vector&
33787 operator=(const vector& __x);
33788# 292 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33789 void
33790 assign(size_type __n, const value_type& __val)
33791 { _M_fill_assign(__n, __val); }
33792# 308 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33793 template<typename _InputIterator>
33794 void
33795 assign(_InputIterator __first, _InputIterator __last)
33796 {
33797
33798 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
33799 _M_assign_dispatch(__first, __last, _Integral());
33800 }
33801
33802
33803 using _Base::get_allocator;
33804
33805
33806
33807
33808
33809
33810
33811 iterator
33812 begin()
33813 { return iterator(this->_M_impl._M_start); }
33814
33815
33816
33817
33818
33819
33820 const_iterator
33821 begin() const
33822 { return const_iterator(this->_M_impl._M_start); }
33823
33824
33825
33826
33827
33828
33829 iterator
33830 end()
33831 { return iterator(this->_M_impl._M_finish); }
33832
33833
33834
33835
33836
33837
33838 const_iterator
33839 end() const
33840 { return const_iterator(this->_M_impl._M_finish); }
33841
33842
33843
33844
33845
33846
33847 reverse_iterator
33848 rbegin()
33849 { return reverse_iterator(end()); }
33850
33851
33852
33853
33854
33855
33856 const_reverse_iterator
33857 rbegin() const
33858 { return const_reverse_iterator(end()); }
33859
33860
33861
33862
33863
33864
33865 reverse_iterator
33866 rend()
33867 { return reverse_iterator(begin()); }
33868
33869
33870
33871
33872
33873
33874 const_reverse_iterator
33875 rend() const
33876 { return const_reverse_iterator(begin()); }
33877
33878
33879
33880 size_type
33881 size() const
33882 { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
33883
33884
33885 size_type
33886 max_size() const
33887 { return _M_get_Tp_allocator().max_size(); }
33888# 415 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33889 void
33890 resize(size_type __new_size, value_type __x = value_type())
33891 {
33892 if (__new_size < size())
33893 _M_erase_at_end(this->_M_impl._M_start + __new_size);
33894 else
33895 insert(end(), __new_size - size(), __x);
33896 }
33897
33898
33899
33900
33901
33902 size_type
33903 capacity() const
33904 { return size_type(this->_M_impl._M_end_of_storage
33905 - this->_M_impl._M_start); }
33906
33907
33908
33909
33910
33911 bool
33912 empty() const
33913 { return begin() == end(); }
33914# 458 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33915 void
33916 reserve(size_type __n);
33917# 473 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33918 reference
33919 operator[](size_type __n)
33920 { return *(this->_M_impl._M_start + __n); }
33921# 488 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33922 const_reference
33923 operator[](size_type __n) const
33924 { return *(this->_M_impl._M_start + __n); }
33925
33926 protected:
33927
33928 void
33929 _M_range_check(size_type __n) const
33930 {
33931 if (__n >= this->size())
33932 __throw_out_of_range(("vector::_M_range_check"));
33933 }
33934
33935 public:
33936# 513 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33937 reference
33938 at(size_type __n)
33939 {
33940 _M_range_check(__n);
33941 return (*this)[__n];
33942 }
33943# 531 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33944 const_reference
33945 at(size_type __n) const
33946 {
33947 _M_range_check(__n);
33948 return (*this)[__n];
33949 }
33950
33951
33952
33953
33954
33955 reference
33956 front()
33957 { return *begin(); }
33958
33959
33960
33961
33962
33963 const_reference
33964 front() const
33965 { return *begin(); }
33966
33967
33968
33969
33970
33971 reference
33972 back()
33973 { return *(end() - 1); }
33974
33975
33976
33977
33978
33979 const_reference
33980 back() const
33981 { return *(end() - 1); }
33982# 577 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33983 pointer
33984 data()
33985 { return pointer(this->_M_impl._M_start); }
33986
33987 const_pointer
33988 data() const
33989 { return const_pointer(this->_M_impl._M_start); }
33990# 596 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
33991 void
33992 push_back(const value_type& __x)
33993 {
33994 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
33995 {
33996 this->_M_impl.construct(this->_M_impl._M_finish, __x);
33997 ++this->_M_impl._M_finish;
33998 }
33999 else
34000 _M_insert_aux(end(), __x);
34001 }
34002# 617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34003 void
34004 pop_back()
34005 {
34006 --this->_M_impl._M_finish;
34007 this->_M_impl.destroy(this->_M_impl._M_finish);
34008 }
34009# 635 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34010 iterator
34011 insert(iterator __position, const value_type& __x);
34012# 651 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34013 void
34014 insert(iterator __position, size_type __n, const value_type& __x)
34015 { _M_fill_insert(__position, __n, __x); }
34016# 669 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34017 template<typename _InputIterator>
34018 void
34019 insert(iterator __position, _InputIterator __first,
34020 _InputIterator __last)
34021 {
34022
34023 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
34024 _M_insert_dispatch(__position, __first, __last, _Integral());
34025 }
34026# 694 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34027 iterator
34028 erase(iterator __position);
34029# 715 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34030 iterator
34031 erase(iterator __first, iterator __last);
34032# 727 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34033 void
34034 swap(vector& __x)
34035 {
34036 std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
34037 std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
34038 std::swap(this->_M_impl._M_end_of_storage,
34039 __x._M_impl._M_end_of_storage);
34040
34041
34042
34043 std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
34044 __x._M_get_Tp_allocator());
34045 }
34046
34047
34048
34049
34050
34051
34052
34053 void
34054 clear()
34055 { _M_erase_at_end(this->_M_impl._M_start); }
34056
34057 protected:
34058
34059
34060
34061
34062
34063
34064 template<typename _ForwardIterator>
34065 pointer
34066 _M_allocate_and_copy(size_type __n,
34067 _ForwardIterator __first, _ForwardIterator __last)
34068 {
34069 pointer __result = this->_M_allocate(__n);
34070 try
34071 {
34072 std::__uninitialized_copy_a(__first, __last, __result,
34073 _M_get_Tp_allocator());
34074 return __result;
34075 }
34076 catch(...)
34077 {
34078 _M_deallocate(__result, __n);
34079 throw;
34080 }
34081 }
34082
34083
34084
34085
34086
34087 template<typename _Integer>
34088 void
34089 _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
34090 {
34091 this->_M_impl._M_start = _M_allocate(__n);
34092 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
34093 std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
34094 _M_get_Tp_allocator());
34095 this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
34096 }
34097
34098
34099 template<typename _InputIterator>
34100 void
34101 _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
34102 __false_type)
34103 {
34104 typedef typename std::iterator_traits<_InputIterator>::
34105 iterator_category _IterCategory;
34106 _M_range_initialize(__first, __last, _IterCategory());
34107 }
34108
34109
34110 template<typename _InputIterator>
34111 void
34112 _M_range_initialize(_InputIterator __first,
34113 _InputIterator __last, std::input_iterator_tag)
34114 {
34115 for (; __first != __last; ++__first)
34116 push_back(*__first);
34117 }
34118
34119
34120 template<typename _ForwardIterator>
34121 void
34122 _M_range_initialize(_ForwardIterator __first,
34123 _ForwardIterator __last, std::forward_iterator_tag)
34124 {
34125 const size_type __n = std::distance(__first, __last);
34126 this->_M_impl._M_start = this->_M_allocate(__n);
34127 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
34128 this->_M_impl._M_finish =
34129 std::__uninitialized_copy_a(__first, __last,
34130 this->_M_impl._M_start,
34131 _M_get_Tp_allocator());
34132 }
34133
34134
34135
34136
34137
34138
34139 template<typename _Integer>
34140 void
34141 _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
34142 {
34143 _M_fill_assign(static_cast<size_type>(__n),
34144 static_cast<value_type>(__val));
34145 }
34146
34147
34148 template<typename _InputIterator>
34149 void
34150 _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
34151 __false_type)
34152 {
34153 typedef typename std::iterator_traits<_InputIterator>::
34154 iterator_category _IterCategory;
34155 _M_assign_aux(__first, __last, _IterCategory());
34156 }
34157
34158
34159 template<typename _InputIterator>
34160 void
34161 _M_assign_aux(_InputIterator __first, _InputIterator __last,
34162 std::input_iterator_tag);
34163
34164
34165 template<typename _ForwardIterator>
34166 void
34167 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
34168 std::forward_iterator_tag);
34169
34170
34171
34172 void
34173 _M_fill_assign(size_type __n, const value_type& __val);
34174
34175
34176
34177
34178
34179 template<typename _Integer>
34180 void
34181 _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
34182 __true_type)
34183 {
34184 _M_fill_insert(__pos, static_cast<size_type>(__n),
34185 static_cast<value_type>(__val));
34186 }
34187
34188
34189 template<typename _InputIterator>
34190 void
34191 _M_insert_dispatch(iterator __pos, _InputIterator __first,
34192 _InputIterator __last, __false_type)
34193 {
34194 typedef typename std::iterator_traits<_InputIterator>::
34195 iterator_category _IterCategory;
34196 _M_range_insert(__pos, __first, __last, _IterCategory());
34197 }
34198
34199
34200 template<typename _InputIterator>
34201 void
34202 _M_range_insert(iterator __pos, _InputIterator __first,
34203 _InputIterator __last, std::input_iterator_tag);
34204
34205
34206 template<typename _ForwardIterator>
34207 void
34208 _M_range_insert(iterator __pos, _ForwardIterator __first,
34209 _ForwardIterator __last, std::forward_iterator_tag);
34210
34211
34212
34213 void
34214 _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
34215
34216
34217 void
34218 _M_insert_aux(iterator __position, const value_type& __x);
34219
34220
34221
34222
34223
34224 void
34225 _M_erase_at_end(pointer __pos)
34226 {
34227 std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());
34228 this->_M_impl._M_finish = __pos;
34229 }
34230 };
34231# 937 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34232 template<typename _Tp, typename _Alloc>
34233 inline bool
34234 operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
34235 { return (__x.size() == __y.size()
34236 && std::equal(__x.begin(), __x.end(), __y.begin())); }
34237# 954 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
34238 template<typename _Tp, typename _Alloc>
34239 inline bool
34240 operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
34241 { return std::lexicographical_compare(__x.begin(), __x.end(),
34242 __y.begin(), __y.end()); }
34243
34244
34245 template<typename _Tp, typename _Alloc>
34246 inline bool
34247 operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
34248 { return !(__x == __y); }
34249
34250
34251 template<typename _Tp, typename _Alloc>
34252 inline bool
34253 operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
34254 { return __y < __x; }
34255
34256
34257 template<typename _Tp, typename _Alloc>
34258 inline bool
34259 operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
34260 { return !(__y < __x); }
34261
34262
34263 template<typename _Tp, typename _Alloc>
34264 inline bool
34265 operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
34266 { return !(__x < __y); }
34267
34268
34269 template<typename _Tp, typename _Alloc>
34270 inline void
34271 swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
34272 { __x.swap(__y); }
34273
34274}
34275# 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/vector" 2 3
34276# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_bvector.h" 1 3
34277# 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_bvector.h" 3
34278namespace std __attribute__ ((__visibility__ ("default"))) {
34279
34280 typedef unsigned long _Bit_type;
34281 enum { _S_word_bit = int(8 * sizeof(_Bit_type)) };
34282
34283 struct _Bit_reference
34284 {
34285 _Bit_type * _M_p;
34286 _Bit_type _M_mask;
34287
34288 _Bit_reference(_Bit_type * __x, _Bit_type __y)
34289 : _M_p(__x), _M_mask(__y) { }
34290
34291 _Bit_reference() : _M_p(0), _M_mask(0) { }
34292
34293 operator bool() const
34294 { return !!(*_M_p & _M_mask); }
34295
34296 _Bit_reference&
34297 operator=(bool __x)
34298 {
34299 if (__x)
34300 *_M_p |= _M_mask;
34301 else
34302 *_M_p &= ~_M_mask;
34303 return *this;
34304 }
34305
34306 _Bit_reference&
34307 operator=(const _Bit_reference& __x)
34308 { return *this = bool(__x); }
34309
34310 bool
34311 operator==(const _Bit_reference& __x) const
34312 { return bool(*this) == bool(__x); }
34313
34314 bool
34315 operator<(const _Bit_reference& __x) const
34316 { return !bool(*this) && bool(__x); }
34317
34318 void
34319 flip()
34320 { *_M_p ^= _M_mask; }
34321 };
34322
34323 struct _Bit_iterator_base
34324 : public std::iterator<std::random_access_iterator_tag, bool>
34325 {
34326 _Bit_type * _M_p;
34327 unsigned int _M_offset;
34328
34329 _Bit_iterator_base(_Bit_type * __x, unsigned int __y)
34330 : _M_p(__x), _M_offset(__y) { }
34331
34332 void
34333 _M_bump_up()
34334 {
34335 if (_M_offset++ == int(_S_word_bit) - 1)
34336 {
34337 _M_offset = 0;
34338 ++_M_p;
34339 }
34340 }
34341
34342 void
34343 _M_bump_down()
34344 {
34345 if (_M_offset-- == 0)
34346 {
34347 _M_offset = int(_S_word_bit) - 1;
34348 --_M_p;
34349 }
34350 }
34351
34352 void
34353 _M_incr(ptrdiff_t __i)
34354 {
34355 difference_type __n = __i + _M_offset;
34356 _M_p += __n / int(_S_word_bit);
34357 __n = __n % int(_S_word_bit);
34358 if (__n < 0)
34359 {
34360 __n += int(_S_word_bit);
34361 --_M_p;
34362 }
34363 _M_offset = static_cast<unsigned int>(__n);
34364 }
34365
34366 bool
34367 operator==(const _Bit_iterator_base& __i) const
34368 { return _M_p == __i._M_p && _M_offset == __i._M_offset; }
34369
34370 bool
34371 operator<(const _Bit_iterator_base& __i) const
34372 {
34373 return _M_p < __i._M_p
34374 || (_M_p == __i._M_p && _M_offset < __i._M_offset);
34375 }
34376
34377 bool
34378 operator!=(const _Bit_iterator_base& __i) const
34379 { return !(*this == __i); }
34380
34381 bool
34382 operator>(const _Bit_iterator_base& __i) const
34383 { return __i < *this; }
34384
34385 bool
34386 operator<=(const _Bit_iterator_base& __i) const
34387 { return !(__i < *this); }
34388
34389 bool
34390 operator>=(const _Bit_iterator_base& __i) const
34391 { return !(*this < __i); }
34392 };
34393
34394 inline ptrdiff_t
34395 operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
34396 {
34397 return (int(_S_word_bit) * (__x._M_p - __y._M_p)
34398 + __x._M_offset - __y._M_offset);
34399 }
34400
34401 struct _Bit_iterator : public _Bit_iterator_base
34402 {
34403 typedef _Bit_reference reference;
34404 typedef _Bit_reference* pointer;
34405 typedef _Bit_iterator iterator;
34406
34407 _Bit_iterator() : _Bit_iterator_base(0, 0) { }
34408
34409 _Bit_iterator(_Bit_type * __x, unsigned int __y)
34410 : _Bit_iterator_base(__x, __y) { }
34411
34412 reference
34413 operator*() const
34414 { return reference(_M_p, 1UL << _M_offset); }
34415
34416 iterator&
34417 operator++()
34418 {
34419 _M_bump_up();
34420 return *this;
34421 }
34422
34423 iterator
34424 operator++(int)
34425 {
34426 iterator __tmp = *this;
34427 _M_bump_up();
34428 return __tmp;
34429 }
34430
34431 iterator&
34432 operator--()
34433 {
34434 _M_bump_down();
34435 return *this;
34436 }
34437
34438 iterator
34439 operator--(int)
34440 {
34441 iterator __tmp = *this;
34442 _M_bump_down();
34443 return __tmp;
34444 }
34445
34446 iterator&
34447 operator+=(difference_type __i)
34448 {
34449 _M_incr(__i);
34450 return *this;
34451 }
34452
34453 iterator&
34454 operator-=(difference_type __i)
34455 {
34456 *this += -__i;
34457 return *this;
34458 }
34459
34460 iterator
34461 operator+(difference_type __i) const
34462 {
34463 iterator __tmp = *this;
34464 return __tmp += __i;
34465 }
34466
34467 iterator
34468 operator-(difference_type __i) const
34469 {
34470 iterator __tmp = *this;
34471 return __tmp -= __i;
34472 }
34473
34474 reference
34475 operator[](difference_type __i) const
34476 { return *(*this + __i); }
34477 };
34478
34479 inline _Bit_iterator
34480 operator+(ptrdiff_t __n, const _Bit_iterator& __x)
34481 { return __x + __n; }
34482
34483 struct _Bit_const_iterator : public _Bit_iterator_base
34484 {
34485 typedef bool reference;
34486 typedef bool const_reference;
34487 typedef const bool* pointer;
34488 typedef _Bit_const_iterator const_iterator;
34489
34490 _Bit_const_iterator() : _Bit_iterator_base(0, 0) { }
34491
34492 _Bit_const_iterator(_Bit_type * __x, unsigned int __y)
34493 : _Bit_iterator_base(__x, __y) { }
34494
34495 _Bit_const_iterator(const _Bit_iterator& __x)
34496 : _Bit_iterator_base(__x._M_p, __x._M_offset) { }
34497
34498 const_reference
34499 operator*() const
34500 { return _Bit_reference(_M_p, 1UL << _M_offset); }
34501
34502 const_iterator&
34503 operator++()
34504 {
34505 _M_bump_up();
34506 return *this;
34507 }
34508
34509 const_iterator
34510 operator++(int)
34511 {
34512 const_iterator __tmp = *this;
34513 _M_bump_up();
34514 return __tmp;
34515 }
34516
34517 const_iterator&
34518 operator--()
34519 {
34520 _M_bump_down();
34521 return *this;
34522 }
34523
34524 const_iterator
34525 operator--(int)
34526 {
34527 const_iterator __tmp = *this;
34528 _M_bump_down();
34529 return __tmp;
34530 }
34531
34532 const_iterator&
34533 operator+=(difference_type __i)
34534 {
34535 _M_incr(__i);
34536 return *this;
34537 }
34538
34539 const_iterator&
34540 operator-=(difference_type __i)
34541 {
34542 *this += -__i;
34543 return *this;
34544 }
34545
34546 const_iterator
34547 operator+(difference_type __i) const
34548 {
34549 const_iterator __tmp = *this;
34550 return __tmp += __i;
34551 }
34552
34553 const_iterator
34554 operator-(difference_type __i) const
34555 {
34556 const_iterator __tmp = *this;
34557 return __tmp -= __i;
34558 }
34559
34560 const_reference
34561 operator[](difference_type __i) const
34562 { return *(*this + __i); }
34563 };
34564
34565 inline _Bit_const_iterator
34566 operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
34567 { return __x + __n; }
34568
34569 inline void
34570 __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x)
34571 {
34572 for (; __first != __last; ++__first)
34573 *__first = __x;
34574 }
34575
34576 inline void
34577 fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
34578 {
34579 if (__first._M_p != __last._M_p)
34580 {
34581 std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0);
34582 __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x);
34583 __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x);
34584 }
34585 else
34586 __fill_bvector(__first, __last, __x);
34587 }
34588
34589 template<class _Alloc>
34590 struct _Bvector_base
34591 {
34592 typedef typename _Alloc::template rebind<_Bit_type>::other
34593 _Bit_alloc_type;
34594
34595 struct _Bvector_impl
34596 : public _Bit_alloc_type
34597 {
34598 _Bit_iterator _M_start;
34599 _Bit_iterator _M_finish;
34600 _Bit_type* _M_end_of_storage;
34601 _Bvector_impl(const _Bit_alloc_type& __a)
34602 : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0)
34603 { }
34604 };
34605
34606 public:
34607 typedef _Alloc allocator_type;
34608
34609 _Bit_alloc_type&
34610 _M_get_Bit_allocator()
34611 { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); }
34612
34613 const _Bit_alloc_type&
34614 _M_get_Bit_allocator() const
34615 { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); }
34616
34617 allocator_type
34618 get_allocator() const
34619 { return allocator_type(_M_get_Bit_allocator()); }
34620
34621 _Bvector_base(const allocator_type& __a) : _M_impl(__a) { }
34622
34623 ~_Bvector_base()
34624 { this->_M_deallocate(); }
34625
34626 protected:
34627 _Bvector_impl _M_impl;
34628
34629 _Bit_type*
34630 _M_allocate(size_t __n)
34631 { return _M_impl.allocate((__n + int(_S_word_bit) - 1)
34632 / int(_S_word_bit)); }
34633
34634 void
34635 _M_deallocate()
34636 {
34637 if (_M_impl._M_start._M_p)
34638 _M_impl.deallocate(_M_impl._M_start._M_p,
34639 _M_impl._M_end_of_storage - _M_impl._M_start._M_p);
34640 }
34641 };
34642
34643}
34644
34645
34646
34647
34648namespace std __attribute__ ((__visibility__ ("default"))) {
34649# 455 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_bvector.h" 3
34650template<typename _Alloc>
34651 class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
34652 {
34653 typedef _Bvector_base<_Alloc> _Base;
34654
34655 public:
34656 typedef bool value_type;
34657 typedef size_t size_type;
34658 typedef ptrdiff_t difference_type;
34659 typedef _Bit_reference reference;
34660 typedef bool const_reference;
34661 typedef _Bit_reference* pointer;
34662 typedef const bool* const_pointer;
34663 typedef _Bit_iterator iterator;
34664 typedef _Bit_const_iterator const_iterator;
34665 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
34666 typedef std::reverse_iterator<iterator> reverse_iterator;
34667 typedef _Alloc allocator_type;
34668
34669 allocator_type get_allocator() const
34670 { return _Base::get_allocator(); }
34671
34672 protected:
34673 using _Base::_M_allocate;
34674 using _Base::_M_deallocate;
34675 using _Base::_M_get_Bit_allocator;
34676
34677 public:
34678 explicit
34679 vector(const allocator_type& __a = allocator_type())
34680 : _Base(__a) { }
34681
34682 explicit
34683 vector(size_type __n, const bool& __value = bool(),
34684 const allocator_type& __a = allocator_type())
34685 : _Base(__a)
34686 {
34687 _M_initialize(__n);
34688 std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage,
34689 __value ? ~0 : 0);
34690 }
34691
34692 vector(const vector& __x)
34693 : _Base(__x._M_get_Bit_allocator())
34694 {
34695 _M_initialize(__x.size());
34696 _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
34697 }
34698
34699 template<class _InputIterator>
34700 vector(_InputIterator __first, _InputIterator __last,
34701 const allocator_type& __a = allocator_type())
34702 : _Base(__a)
34703 {
34704 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
34705 _M_initialize_dispatch(__first, __last, _Integral());
34706 }
34707
34708 ~vector() { }
34709
34710 vector&
34711 operator=(const vector& __x)
34712 {
34713 if (&__x == this)
34714 return *this;
34715 if (__x.size() > capacity())
34716 {
34717 this->_M_deallocate();
34718 _M_initialize(__x.size());
34719 }
34720 this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
34721 begin());
34722 return *this;
34723 }
34724
34725
34726
34727
34728
34729 void
34730 assign(size_type __n, const bool& __x)
34731 { _M_fill_assign(__n, __x); }
34732
34733 template<class _InputIterator>
34734 void
34735 assign(_InputIterator __first, _InputIterator __last)
34736 {
34737 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
34738 _M_assign_dispatch(__first, __last, _Integral());
34739 }
34740
34741 iterator
34742 begin()
34743 { return this->_M_impl._M_start; }
34744
34745 const_iterator
34746 begin() const
34747 { return this->_M_impl._M_start; }
34748
34749 iterator
34750 end()
34751 { return this->_M_impl._M_finish; }
34752
34753 const_iterator
34754 end() const
34755 { return this->_M_impl._M_finish; }
34756
34757 reverse_iterator
34758 rbegin()
34759 { return reverse_iterator(end()); }
34760
34761 const_reverse_iterator
34762 rbegin() const
34763 { return const_reverse_iterator(end()); }
34764
34765 reverse_iterator
34766 rend()
34767 { return reverse_iterator(begin()); }
34768
34769 const_reverse_iterator
34770 rend() const
34771 { return const_reverse_iterator(begin()); }
34772
34773 size_type
34774 size() const
34775 { return size_type(end() - begin()); }
34776
34777 size_type
34778 max_size() const
34779 {
34780 const size_type __asize = _M_get_Bit_allocator().max_size();
34781 return (__asize <= size_type(-1) / int(_S_word_bit) ?
34782 __asize * int(_S_word_bit) : size_type(-1));
34783 }
34784
34785 size_type
34786 capacity() const
34787 { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0)
34788 - begin()); }
34789
34790 bool
34791 empty() const
34792 { return begin() == end(); }
34793
34794 reference
34795 operator[](size_type __n)
34796 {
34797 return *iterator(this->_M_impl._M_start._M_p
34798 + __n / int(_S_word_bit), __n % int(_S_word_bit));
34799 }
34800
34801 const_reference
34802 operator[](size_type __n) const
34803 {
34804 return *const_iterator(this->_M_impl._M_start._M_p
34805 + __n / int(_S_word_bit), __n % int(_S_word_bit));
34806 }
34807
34808 protected:
34809 void
34810 _M_range_check(size_type __n) const
34811 {
34812 if (__n >= this->size())
34813 __throw_out_of_range(("vector<bool>::_M_range_check"));
34814 }
34815
34816 public:
34817 reference
34818 at(size_type __n)
34819 { _M_range_check(__n); return (*this)[__n]; }
34820
34821 const_reference
34822 at(size_type __n) const
34823 { _M_range_check(__n); return (*this)[__n]; }
34824
34825 void
34826 reserve(size_type __n)
34827 {
34828 if (__n > this->max_size())
34829 __throw_length_error(("vector::reserve"));
34830 if (this->capacity() < __n)
34831 {
34832 _Bit_type* __q = this->_M_allocate(__n);
34833 this->_M_impl._M_finish = _M_copy_aligned(begin(), end(),
34834 iterator(__q, 0));
34835 this->_M_deallocate();
34836 this->_M_impl._M_start = iterator(__q, 0);
34837 this->_M_impl._M_end_of_storage = (__q + (__n + int(_S_word_bit) - 1)
34838 / int(_S_word_bit));
34839 }
34840 }
34841
34842 reference
34843 front()
34844 { return *begin(); }
34845
34846 const_reference
34847 front() const
34848 { return *begin(); }
34849
34850 reference
34851 back()
34852 { return *(end() - 1); }
34853
34854 const_reference
34855 back() const
34856 { return *(end() - 1); }
34857
34858
34859
34860
34861
34862
34863 void
34864 data() { }
34865
34866 void
34867 push_back(bool __x)
34868 {
34869 if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
34870 *this->_M_impl._M_finish++ = __x;
34871 else
34872 _M_insert_aux(end(), __x);
34873 }
34874
34875 void
34876 swap(vector<bool, _Alloc>& __x)
34877 {
34878 std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
34879 std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
34880 std::swap(this->_M_impl._M_end_of_storage,
34881 __x._M_impl._M_end_of_storage);
34882
34883
34884
34885 std::__alloc_swap<typename _Base::_Bit_alloc_type>::
34886 _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator());
34887 }
34888
34889
34890 static void
34891 swap(reference __x, reference __y)
34892 {
34893 bool __tmp = __x;
34894 __x = __y;
34895 __y = __tmp;
34896 }
34897
34898 iterator
34899 insert(iterator __position, const bool& __x = bool())
34900 {
34901 const difference_type __n = __position - begin();
34902 if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage
34903 && __position == end())
34904 *this->_M_impl._M_finish++ = __x;
34905 else
34906 _M_insert_aux(__position, __x);
34907 return begin() + __n;
34908 }
34909
34910 template<class _InputIterator>
34911 void
34912 insert(iterator __position,
34913 _InputIterator __first, _InputIterator __last)
34914 {
34915 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
34916 _M_insert_dispatch(__position, __first, __last, _Integral());
34917 }
34918
34919 void
34920 insert(iterator __position, size_type __n, const bool& __x)
34921 { _M_fill_insert(__position, __n, __x); }
34922
34923 void
34924 pop_back()
34925 { --this->_M_impl._M_finish; }
34926
34927 iterator
34928 erase(iterator __position)
34929 {
34930 if (__position + 1 != end())
34931 std::copy(__position + 1, end(), __position);
34932 --this->_M_impl._M_finish;
34933 return __position;
34934 }
34935
34936 iterator
34937 erase(iterator __first, iterator __last)
34938 {
34939 _M_erase_at_end(std::copy(__last, end(), __first));
34940 return __first;
34941 }
34942
34943 void
34944 resize(size_type __new_size, bool __x = bool())
34945 {
34946 if (__new_size < size())
34947 _M_erase_at_end(begin() + difference_type(__new_size));
34948 else
34949 insert(end(), __new_size - size(), __x);
34950 }
34951
34952 void
34953 flip()
34954 {
34955 for (_Bit_type * __p = this->_M_impl._M_start._M_p;
34956 __p != this->_M_impl._M_end_of_storage; ++__p)
34957 *__p = ~*__p;
34958 }
34959
34960 void
34961 clear()
34962 { _M_erase_at_end(begin()); }
34963
34964
34965 protected:
34966
34967 iterator
34968 _M_copy_aligned(const_iterator __first, const_iterator __last,
34969 iterator __result)
34970 {
34971 _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p);
34972 return std::copy(const_iterator(__last._M_p, 0), __last,
34973 iterator(__q, 0));
34974 }
34975
34976 void
34977 _M_initialize(size_type __n)
34978 {
34979 _Bit_type* __q = this->_M_allocate(__n);
34980 this->_M_impl._M_end_of_storage = (__q
34981 + ((__n + int(_S_word_bit) - 1)
34982 / int(_S_word_bit)));
34983 this->_M_impl._M_start = iterator(__q, 0);
34984 this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
34985 }
34986
34987
34988 template<class _Integer>
34989 void
34990 _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
34991 {
34992 _M_initialize(__n);
34993 std::fill(this->_M_impl._M_start._M_p,
34994 this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
34995 }
34996
34997 template<class _InputIterator>
34998 void
34999 _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
35000 __false_type)
35001 { _M_initialize_range(__first, __last,
35002 std::__iterator_category(__first)); }
35003
35004 template<class _InputIterator>
35005 void
35006 _M_initialize_range(_InputIterator __first, _InputIterator __last,
35007 std::input_iterator_tag)
35008 {
35009 for (; __first != __last; ++__first)
35010 push_back(*__first);
35011 }
35012
35013 template<class _ForwardIterator>
35014 void
35015 _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
35016 std::forward_iterator_tag)
35017 {
35018 const size_type __n = std::distance(__first, __last);
35019 _M_initialize(__n);
35020 std::copy(__first, __last, this->_M_impl._M_start);
35021 }
35022
35023 template<class _Integer>
35024 void
35025 _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
35026 { _M_fill_assign((size_t) __n, (bool) __val); }
35027
35028 template<class _InputIterator>
35029 void
35030 _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
35031 __false_type)
35032 { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
35033
35034 void
35035 _M_fill_assign(size_t __n, bool __x)
35036 {
35037 if (__n > size())
35038 {
35039 std::fill(this->_M_impl._M_start._M_p,
35040 this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
35041 insert(end(), __n - size(), __x);
35042 }
35043 else
35044 {
35045 _M_erase_at_end(begin() + __n);
35046 std::fill(this->_M_impl._M_start._M_p,
35047 this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
35048 }
35049 }
35050
35051 template<class _InputIterator>
35052 void
35053 _M_assign_aux(_InputIterator __first, _InputIterator __last,
35054 std::input_iterator_tag)
35055 {
35056 iterator __cur = begin();
35057 for (; __first != __last && __cur != end(); ++__cur, ++__first)
35058 *__cur = *__first;
35059 if (__first == __last)
35060 _M_erase_at_end(__cur);
35061 else
35062 insert(end(), __first, __last);
35063 }
35064
35065 template<class _ForwardIterator>
35066 void
35067 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
35068 std::forward_iterator_tag)
35069 {
35070 const size_type __len = std::distance(__first, __last);
35071 if (__len < size())
35072 _M_erase_at_end(std::copy(__first, __last, begin()));
35073 else
35074 {
35075 _ForwardIterator __mid = __first;
35076 std::advance(__mid, size());
35077 std::copy(__first, __mid, begin());
35078 insert(end(), __mid, __last);
35079 }
35080 }
35081
35082
35083 template<class _Integer>
35084 void
35085 _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
35086 __true_type)
35087 { _M_fill_insert(__pos, __n, __x); }
35088
35089 template<class _InputIterator>
35090 void
35091 _M_insert_dispatch(iterator __pos,
35092 _InputIterator __first, _InputIterator __last,
35093 __false_type)
35094 { _M_insert_range(__pos, __first, __last,
35095 std::__iterator_category(__first)); }
35096
35097 void
35098 _M_fill_insert(iterator __position, size_type __n, bool __x)
35099 {
35100 if (__n == 0)
35101 return;
35102 if (capacity() - size() >= __n)
35103 {
35104 std::copy_backward(__position, end(),
35105 this->_M_impl._M_finish + difference_type(__n));
35106 std::fill(__position, __position + difference_type(__n), __x);
35107 this->_M_impl._M_finish += difference_type(__n);
35108 }
35109 else
35110 {
35111 const size_type __len = size() + std::max(size(), __n);
35112 _Bit_type * __q = this->_M_allocate(__len);
35113 iterator __i = _M_copy_aligned(begin(), __position,
35114 iterator(__q, 0));
35115 std::fill(__i, __i + difference_type(__n), __x);
35116 this->_M_impl._M_finish = std::copy(__position, end(),
35117 __i + difference_type(__n));
35118 this->_M_deallocate();
35119 this->_M_impl._M_end_of_storage = (__q + ((__len
35120 + int(_S_word_bit) - 1)
35121 / int(_S_word_bit)));
35122 this->_M_impl._M_start = iterator(__q, 0);
35123 }
35124 }
35125
35126 template<class _InputIterator>
35127 void
35128 _M_insert_range(iterator __pos, _InputIterator __first,
35129 _InputIterator __last, std::input_iterator_tag)
35130 {
35131 for (; __first != __last; ++__first)
35132 {
35133 __pos = insert(__pos, *__first);
35134 ++__pos;
35135 }
35136 }
35137
35138 template<class _ForwardIterator>
35139 void
35140 _M_insert_range(iterator __position, _ForwardIterator __first,
35141 _ForwardIterator __last, std::forward_iterator_tag)
35142 {
35143 if (__first != __last)
35144 {
35145 size_type __n = std::distance(__first, __last);
35146 if (capacity() - size() >= __n)
35147 {
35148 std::copy_backward(__position, end(),
35149 this->_M_impl._M_finish
35150 + difference_type(__n));
35151 std::copy(__first, __last, __position);
35152 this->_M_impl._M_finish += difference_type(__n);
35153 }
35154 else
35155 {
35156 const size_type __len = size() + std::max(size(), __n);
35157 _Bit_type * __q = this->_M_allocate(__len);
35158 iterator __i = _M_copy_aligned(begin(), __position,
35159 iterator(__q, 0));
35160 __i = std::copy(__first, __last, __i);
35161 this->_M_impl._M_finish = std::copy(__position, end(), __i);
35162 this->_M_deallocate();
35163 this->_M_impl._M_end_of_storage = (__q
35164 + ((__len
35165 + int(_S_word_bit) - 1)
35166 / int(_S_word_bit)));
35167 this->_M_impl._M_start = iterator(__q, 0);
35168 }
35169 }
35170 }
35171
35172 void
35173 _M_insert_aux(iterator __position, bool __x)
35174 {
35175 if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
35176 {
35177 std::copy_backward(__position, this->_M_impl._M_finish,
35178 this->_M_impl._M_finish + 1);
35179 *__position = __x;
35180 ++this->_M_impl._M_finish;
35181 }
35182 else
35183 {
35184 const size_type __len = size() ? 2 * size()
35185 : static_cast<size_type>(_S_word_bit);
35186 _Bit_type * __q = this->_M_allocate(__len);
35187 iterator __i = _M_copy_aligned(begin(), __position,
35188 iterator(__q, 0));
35189 *__i++ = __x;
35190 this->_M_impl._M_finish = std::copy(__position, end(), __i);
35191 this->_M_deallocate();
35192 this->_M_impl._M_end_of_storage = (__q + ((__len
35193 + int(_S_word_bit) - 1)
35194 / int(_S_word_bit)));
35195 this->_M_impl._M_start = iterator(__q, 0);
35196 }
35197 }
35198
35199 void
35200 _M_erase_at_end(iterator __pos)
35201 { this->_M_impl._M_finish = __pos; }
35202 };
35203
35204}
35205# 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/vector" 2 3
35206
35207
35208# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/vector.tcc" 1 3
35209# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/vector.tcc" 3
35210namespace std __attribute__ ((__visibility__ ("default"))) {
35211
35212 template<typename _Tp, typename _Alloc>
35213 void
35214 vector<_Tp, _Alloc>::
35215 reserve(size_type __n)
35216 {
35217 if (__n > this->max_size())
35218 __throw_length_error(("vector::reserve"));
35219 if (this->capacity() < __n)
35220 {
35221 const size_type __old_size = size();
35222 pointer __tmp = _M_allocate_and_copy(__n, this->_M_impl._M_start,
35223 this->_M_impl._M_finish);
35224 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
35225 _M_get_Tp_allocator());
35226 _M_deallocate(this->_M_impl._M_start,
35227 this->_M_impl._M_end_of_storage
35228 - this->_M_impl._M_start);
35229 this->_M_impl._M_start = __tmp;
35230 this->_M_impl._M_finish = __tmp + __old_size;
35231 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
35232 }
35233 }
35234
35235 template<typename _Tp, typename _Alloc>
35236 typename vector<_Tp, _Alloc>::iterator
35237 vector<_Tp, _Alloc>::
35238 insert(iterator __position, const value_type& __x)
35239 {
35240 const size_type __n = __position - begin();
35241 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
35242 && __position == end())
35243 {
35244 this->_M_impl.construct(this->_M_impl._M_finish, __x);
35245 ++this->_M_impl._M_finish;
35246 }
35247 else
35248 _M_insert_aux(__position, __x);
35249 return iterator(this->_M_impl._M_start + __n);
35250 }
35251
35252 template<typename _Tp, typename _Alloc>
35253 typename vector<_Tp, _Alloc>::iterator
35254 vector<_Tp, _Alloc>::
35255 erase(iterator __position)
35256 {
35257 if (__position + 1 != end())
35258 std::copy(__position + 1, end(), __position);
35259 --this->_M_impl._M_finish;
35260 this->_M_impl.destroy(this->_M_impl._M_finish);
35261 return __position;
35262 }
35263
35264 template<typename _Tp, typename _Alloc>
35265 typename vector<_Tp, _Alloc>::iterator
35266 vector<_Tp, _Alloc>::
35267 erase(iterator __first, iterator __last)
35268 {
35269 if (__last != end())
35270 std::copy(__last, end(), __first);
35271 _M_erase_at_end(__first.base() + (end() - __last));
35272 return __first;
35273 }
35274
35275 template<typename _Tp, typename _Alloc>
35276 vector<_Tp, _Alloc>&
35277 vector<_Tp, _Alloc>::
35278 operator=(const vector<_Tp, _Alloc>& __x)
35279 {
35280 if (&__x != this)
35281 {
35282 const size_type __xlen = __x.size();
35283 if (__xlen > capacity())
35284 {
35285 pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
35286 __x.end());
35287 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
35288 _M_get_Tp_allocator());
35289 _M_deallocate(this->_M_impl._M_start,
35290 this->_M_impl._M_end_of_storage
35291 - this->_M_impl._M_start);
35292 this->_M_impl._M_start = __tmp;
35293 this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
35294 }
35295 else if (size() >= __xlen)
35296 {
35297 std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
35298 end(), _M_get_Tp_allocator());
35299 }
35300 else
35301 {
35302 std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
35303 this->_M_impl._M_start);
35304 std::__uninitialized_copy_a(__x._M_impl._M_start + size(),
35305 __x._M_impl._M_finish,
35306 this->_M_impl._M_finish,
35307 _M_get_Tp_allocator());
35308 }
35309 this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
35310 }
35311 return *this;
35312 }
35313
35314 template<typename _Tp, typename _Alloc>
35315 void
35316 vector<_Tp, _Alloc>::
35317 _M_fill_assign(size_t __n, const value_type& __val)
35318 {
35319 if (__n > capacity())
35320 {
35321 vector __tmp(__n, __val, _M_get_Tp_allocator());
35322 __tmp.swap(*this);
35323 }
35324 else if (__n > size())
35325 {
35326 std::fill(begin(), end(), __val);
35327 std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
35328 __n - size(), __val,
35329 _M_get_Tp_allocator());
35330 this->_M_impl._M_finish += __n - size();
35331 }
35332 else
35333 _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
35334 }
35335
35336 template<typename _Tp, typename _Alloc>
35337 template<typename _InputIterator>
35338 void
35339 vector<_Tp, _Alloc>::
35340 _M_assign_aux(_InputIterator __first, _InputIterator __last,
35341 std::input_iterator_tag)
35342 {
35343 pointer __cur(this->_M_impl._M_start);
35344 for (; __first != __last && __cur != this->_M_impl._M_finish;
35345 ++__cur, ++__first)
35346 *__cur = *__first;
35347 if (__first == __last)
35348 _M_erase_at_end(__cur);
35349 else
35350 insert(end(), __first, __last);
35351 }
35352
35353 template<typename _Tp, typename _Alloc>
35354 template<typename _ForwardIterator>
35355 void
35356 vector<_Tp, _Alloc>::
35357 _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
35358 std::forward_iterator_tag)
35359 {
35360 const size_type __len = std::distance(__first, __last);
35361
35362 if (__len > capacity())
35363 {
35364 pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
35365 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
35366 _M_get_Tp_allocator());
35367 _M_deallocate(this->_M_impl._M_start,
35368 this->_M_impl._M_end_of_storage
35369 - this->_M_impl._M_start);
35370 this->_M_impl._M_start = __tmp;
35371 this->_M_impl._M_finish = this->_M_impl._M_start + __len;
35372 this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
35373 }
35374 else if (size() >= __len)
35375 _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
35376 else
35377 {
35378 _ForwardIterator __mid = __first;
35379 std::advance(__mid, size());
35380 std::copy(__first, __mid, this->_M_impl._M_start);
35381 this->_M_impl._M_finish =
35382 std::__uninitialized_copy_a(__mid, __last,
35383 this->_M_impl._M_finish,
35384 _M_get_Tp_allocator());
35385 }
35386 }
35387
35388 template<typename _Tp, typename _Alloc>
35389 void
35390 vector<_Tp, _Alloc>::
35391 _M_insert_aux(iterator __position, const _Tp& __x)
35392 {
35393 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
35394 {
35395 this->_M_impl.construct(this->_M_impl._M_finish,
35396 *(this->_M_impl._M_finish - 1));
35397 ++this->_M_impl._M_finish;
35398 _Tp __x_copy = __x;
35399 std::copy_backward(__position.base(),
35400 this->_M_impl._M_finish - 2,
35401 this->_M_impl._M_finish - 1);
35402 *__position = __x_copy;
35403 }
35404 else
35405 {
35406 const size_type __old_size = size();
35407 if (__old_size == this->max_size())
35408 __throw_length_error(("vector::_M_insert_aux"));
35409
35410
35411
35412
35413 size_type __len = __old_size != 0 ? 2 * __old_size : 1;
35414 if (__len < __old_size)
35415 __len = this->max_size();
35416
35417 pointer __new_start(this->_M_allocate(__len));
35418 pointer __new_finish(__new_start);
35419 try
35420 {
35421 __new_finish =
35422 std::__uninitialized_copy_a(this->_M_impl._M_start,
35423 __position.base(), __new_start,
35424 _M_get_Tp_allocator());
35425 this->_M_impl.construct(__new_finish, __x);
35426 ++__new_finish;
35427 __new_finish =
35428 std::__uninitialized_copy_a(__position.base(),
35429 this->_M_impl._M_finish,
35430 __new_finish,
35431 _M_get_Tp_allocator());
35432 }
35433 catch(...)
35434 {
35435 std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator());
35436 _M_deallocate(__new_start, __len);
35437 throw;
35438 }
35439 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
35440 _M_get_Tp_allocator());
35441 _M_deallocate(this->_M_impl._M_start,
35442 this->_M_impl._M_end_of_storage
35443 - this->_M_impl._M_start);
35444 this->_M_impl._M_start = __new_start;
35445 this->_M_impl._M_finish = __new_finish;
35446 this->_M_impl._M_end_of_storage = __new_start + __len;
35447 }
35448 }
35449
35450 template<typename _Tp, typename _Alloc>
35451 void
35452 vector<_Tp, _Alloc>::
35453 _M_fill_insert(iterator __position, size_type __n, const value_type& __x)
35454 {
35455 if (__n != 0)
35456 {
35457 if (size_type(this->_M_impl._M_end_of_storage
35458 - this->_M_impl._M_finish) >= __n)
35459 {
35460 value_type __x_copy = __x;
35461 const size_type __elems_after = end() - __position;
35462 pointer __old_finish(this->_M_impl._M_finish);
35463 if (__elems_after > __n)
35464 {
35465 std::__uninitialized_copy_a(this->_M_impl._M_finish - __n,
35466 this->_M_impl._M_finish,
35467 this->_M_impl._M_finish,
35468 _M_get_Tp_allocator());
35469 this->_M_impl._M_finish += __n;
35470 std::copy_backward(__position.base(), __old_finish - __n,
35471 __old_finish);
35472 std::fill(__position.base(), __position.base() + __n,
35473 __x_copy);
35474 }
35475 else
35476 {
35477 std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
35478 __n - __elems_after,
35479 __x_copy,
35480 _M_get_Tp_allocator());
35481 this->_M_impl._M_finish += __n - __elems_after;
35482 std::__uninitialized_copy_a(__position.base(), __old_finish,
35483 this->_M_impl._M_finish,
35484 _M_get_Tp_allocator());
35485 this->_M_impl._M_finish += __elems_after;
35486 std::fill(__position.base(), __old_finish, __x_copy);
35487 }
35488 }
35489 else
35490 {
35491 const size_type __old_size = size();
35492 if (this->max_size() - __old_size < __n)
35493 __throw_length_error(("vector::_M_fill_insert"));
35494
35495
35496 size_type __len = __old_size + std::max(__old_size, __n);
35497 if (__len < __old_size)
35498 __len = this->max_size();
35499
35500 pointer __new_start(this->_M_allocate(__len));
35501 pointer __new_finish(__new_start);
35502 try
35503 {
35504 __new_finish =
35505 std::__uninitialized_copy_a(this->_M_impl._M_start,
35506 __position.base(),
35507 __new_start,
35508 _M_get_Tp_allocator());
35509 std::__uninitialized_fill_n_a(__new_finish, __n, __x,
35510 _M_get_Tp_allocator());
35511 __new_finish += __n;
35512 __new_finish =
35513 std::__uninitialized_copy_a(__position.base(),
35514 this->_M_impl._M_finish,
35515 __new_finish,
35516 _M_get_Tp_allocator());
35517 }
35518 catch(...)
35519 {
35520 std::_Destroy(__new_start, __new_finish,
35521 _M_get_Tp_allocator());
35522 _M_deallocate(__new_start, __len);
35523 throw;
35524 }
35525 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
35526 _M_get_Tp_allocator());
35527 _M_deallocate(this->_M_impl._M_start,
35528 this->_M_impl._M_end_of_storage
35529 - this->_M_impl._M_start);
35530 this->_M_impl._M_start = __new_start;
35531 this->_M_impl._M_finish = __new_finish;
35532 this->_M_impl._M_end_of_storage = __new_start + __len;
35533 }
35534 }
35535 }
35536
35537 template<typename _Tp, typename _Alloc> template<typename _InputIterator>
35538 void
35539 vector<_Tp, _Alloc>::
35540 _M_range_insert(iterator __pos, _InputIterator __first,
35541 _InputIterator __last, std::input_iterator_tag)
35542 {
35543 for (; __first != __last; ++__first)
35544 {
35545 __pos = insert(__pos, *__first);
35546 ++__pos;
35547 }
35548 }
35549
35550 template<typename _Tp, typename _Alloc>
35551 template<typename _ForwardIterator>
35552 void
35553 vector<_Tp, _Alloc>::
35554 _M_range_insert(iterator __position, _ForwardIterator __first,
35555 _ForwardIterator __last, std::forward_iterator_tag)
35556 {
35557 if (__first != __last)
35558 {
35559 const size_type __n = std::distance(__first, __last);
35560 if (size_type(this->_M_impl._M_end_of_storage
35561 - this->_M_impl._M_finish) >= __n)
35562 {
35563 const size_type __elems_after = end() - __position;
35564 pointer __old_finish(this->_M_impl._M_finish);
35565 if (__elems_after > __n)
35566 {
35567 std::__uninitialized_copy_a(this->_M_impl._M_finish - __n,
35568 this->_M_impl._M_finish,
35569 this->_M_impl._M_finish,
35570 _M_get_Tp_allocator());
35571 this->_M_impl._M_finish += __n;
35572 std::copy_backward(__position.base(), __old_finish - __n,
35573 __old_finish);
35574 std::copy(__first, __last, __position);
35575 }
35576 else
35577 {
35578 _ForwardIterator __mid = __first;
35579 std::advance(__mid, __elems_after);
35580 std::__uninitialized_copy_a(__mid, __last,
35581 this->_M_impl._M_finish,
35582 _M_get_Tp_allocator());
35583 this->_M_impl._M_finish += __n - __elems_after;
35584 std::__uninitialized_copy_a(__position.base(),
35585 __old_finish,
35586 this->_M_impl._M_finish,
35587 _M_get_Tp_allocator());
35588 this->_M_impl._M_finish += __elems_after;
35589 std::copy(__first, __mid, __position);
35590 }
35591 }
35592 else
35593 {
35594 const size_type __old_size = size();
35595 if (this->max_size() - __old_size < __n)
35596 __throw_length_error(("vector::_M_range_insert"));
35597
35598
35599 size_type __len = __old_size + std::max(__old_size, __n);
35600 if (__len < __old_size)
35601 __len = this->max_size();
35602
35603 pointer __new_start(this->_M_allocate(__len));
35604 pointer __new_finish(__new_start);
35605 try
35606 {
35607 __new_finish =
35608 std::__uninitialized_copy_a(this->_M_impl._M_start,
35609 __position.base(),
35610 __new_start,
35611 _M_get_Tp_allocator());
35612 __new_finish =
35613 std::__uninitialized_copy_a(__first, __last, __new_finish,
35614 _M_get_Tp_allocator());
35615 __new_finish =
35616 std::__uninitialized_copy_a(__position.base(),
35617 this->_M_impl._M_finish,
35618 __new_finish,
35619 _M_get_Tp_allocator());
35620 }
35621 catch(...)
35622 {
35623 std::_Destroy(__new_start, __new_finish,
35624 _M_get_Tp_allocator());
35625 _M_deallocate(__new_start, __len);
35626 throw;
35627 }
35628 std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
35629 _M_get_Tp_allocator());
35630 _M_deallocate(this->_M_impl._M_start,
35631 this->_M_impl._M_end_of_storage
35632 - this->_M_impl._M_start);
35633 this->_M_impl._M_start = __new_start;
35634 this->_M_impl._M_finish = __new_finish;
35635 this->_M_impl._M_end_of_storage = __new_start + __len;
35636 }
35637 }
35638 }
35639
35640}
35641# 75 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/vector" 2 3
35642# 15 "/usr/include/boost/program_options/errors.hpp" 2 3 4
35643
35644
35645
35646namespace boost { namespace program_options {
35647
35648
35649 class error : public std::logic_error {
35650 public:
35651 error(const std::string& what) : std::logic_error(what) {}
35652 };
35653
35654 class invalid_syntax : public error {
35655 public:
35656 invalid_syntax(const std::string& tokens, const std::string& msg)
35657 : error(std::string(msg).append(" in '").append(tokens).append("'")),
35658 tokens(tokens), msg(msg)
35659 {}
35660
35661
35662
35663 ~invalid_syntax() throw() {}
35664
35665
35666 std::string tokens, msg;
35667 };
35668
35669
35670 class unknown_option : public error {
35671 public:
35672 unknown_option(const std::string& name)
35673 : error(std::string("unknown option ").append(name))
35674 {}
35675 };
35676
35677
35678 class ambiguous_option : public error {
35679 public:
35680 ambiguous_option(const std::string& name,
35681 const std::vector<std::string>& alternatives)
35682 : error(std::string("ambiguous option ").append(name)),
35683 alternatives(alternatives)
35684 {}
35685
35686 ~ambiguous_option() throw() {}
35687
35688
35689 std::vector<std::string> alternatives;
35690 };
35691
35692
35693
35694 class multiple_values : public error {
35695 public:
35696 multiple_values(const std::string& what) : error(what) {}
35697 };
35698
35699
35700
35701
35702 class multiple_occurrences : public error {
35703 public:
35704 multiple_occurrences(const std::string& what) : error(what) {}
35705 };
35706
35707
35708 class validation_error : public error {
35709 public:
35710 validation_error(const std::string& what) : error(what) {}
35711 ~validation_error() throw() {}
35712 void set_option_name(const std::string& option);
35713
35714 const char* what() const throw();
35715 private:
35716 mutable std::string m_message;
35717 std::string m_option_name;
35718
35719 };
35720
35721 class invalid_option_value
35722 : public validation_error
35723 {
35724 public:
35725 invalid_option_value(const std::string& value);
35726
35727 invalid_option_value(const std::wstring& value);
35728
35729 };
35730
35731
35732 class too_many_positional_options_error : public error {
35733 public:
35734 too_many_positional_options_error(const std::string& what)
35735 : error(what) {}
35736 };
35737
35738
35739 class too_few_positional_options_error : public error {
35740 public:
35741 too_few_positional_options_error(const std::string& what)
35742 : error(what) {}
35743 };
35744
35745 class invalid_command_line_syntax : public invalid_syntax {
35746 public:
35747 enum kind_t {
35748 long_not_allowed = 30,
35749 long_adjacent_not_allowed,
35750 short_adjacent_not_allowed,
35751 empty_adjacent_parameter,
35752 missing_parameter,
35753 extra_parameter
35754 };
35755
35756 invalid_command_line_syntax(const std::string& tokens, kind_t kind);
35757 kind_t kind() const;
35758 protected:
35759 static std::string error_message(kind_t kind);
35760 private:
35761 kind_t m_kind;
35762 };
35763
35764 class invalid_command_line_style : public error {
35765 public:
35766 invalid_command_line_style(const std::string& msg)
35767 : error(msg)
35768 {}
35769 };
35770
35771}}
35772# 13 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
35773# 1 "/usr/include/boost/program_options/value_semantic.hpp" 1 3 4
35774# 12 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
35775# 1 "/usr/include/boost/any.hpp" 1 3 4
35776# 17 "/usr/include/boost/any.hpp" 3 4
35777# 1 "/usr/include/boost/type_traits/remove_reference.hpp" 1 3 4
35778# 12 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4
35779# 1 "/usr/include/boost/type_traits/broken_compiler_spec.hpp" 1 3 4
35780# 95 "/usr/include/boost/type_traits/broken_compiler_spec.hpp" 3 4
35781
35782
35783
35784
35785
35786
35787
35788
35789
35790
35791
35792
35793
35794
35795
35796# 13 "/usr/include/boost/type_traits/remove_reference.hpp" 2 3 4
35797# 21 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4
35798# 1 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 1 3 4
35799# 14 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 3 4
35800# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
35801# 15 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 2 3 4
35802# 22 "/usr/include/boost/type_traits/remove_reference.hpp" 2 3 4
35803
35804namespace boost {
35805
35806
35807
35808template< typename T > struct remove_reference { typedef T type; };
35809template< typename T > struct remove_reference<T&> { typedef T type; };
35810# 46 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4
35811}
35812
35813# 1 "/usr/include/boost/type_traits/detail/type_trait_undef.hpp" 1 3 4
35814# 49 "/usr/include/boost/type_traits/remove_reference.hpp" 2 3 4
35815# 18 "/usr/include/boost/any.hpp" 2 3 4
35816# 1 "/usr/include/boost/type_traits/is_reference.hpp" 1 3 4
35817# 32 "/usr/include/boost/type_traits/is_reference.hpp" 3 4
35818# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
35819# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
35820# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
35821# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
35822# 33 "/usr/include/boost/type_traits/is_reference.hpp" 2 3 4
35823
35824namespace boost {
35825
35826
35827
35828template< typename T > struct is_reference : ::boost::integral_constant<bool,false> { };
35829template< typename T > struct is_reference< T& > : ::boost::integral_constant<bool,true> { };
35830# 111 "/usr/include/boost/type_traits/is_reference.hpp" 3 4
35831}
35832
35833# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
35834# 114 "/usr/include/boost/type_traits/is_reference.hpp" 2 3 4
35835# 19 "/usr/include/boost/any.hpp" 2 3 4
35836
35837# 1 "/usr/include/boost/static_assert.hpp" 1 3 4
35838# 31 "/usr/include/boost/static_assert.hpp" 3 4
35839namespace boost{
35840
35841
35842template <bool x> struct STATIC_ASSERTION_FAILURE;
35843
35844template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
35845
35846
35847template<int x> struct static_assert_test{};
35848
35849}
35850# 21 "/usr/include/boost/any.hpp" 2 3 4
35851
35852namespace boost
35853{
35854 class any
35855 {
35856 public:
35857
35858 any()
35859 : content(0)
35860 {
35861 }
35862
35863 template<typename ValueType>
35864 any(const ValueType & value)
35865 : content(new holder<ValueType>(value))
35866 {
35867 }
35868
35869 any(const any & other)
35870 : content(other.content ? other.content->clone() : 0)
35871 {
35872 }
35873
35874 ~any()
35875 {
35876 delete content;
35877 }
35878
35879 public:
35880
35881 any & swap(any & rhs)
35882 {
35883 std::swap(content, rhs.content);
35884 return *this;
35885 }
35886
35887 template<typename ValueType>
35888 any & operator=(const ValueType & rhs)
35889 {
35890 any(rhs).swap(*this);
35891 return *this;
35892 }
35893
35894 any & operator=(const any & rhs)
35895 {
35896 any(rhs).swap(*this);
35897 return *this;
35898 }
35899
35900 public:
35901
35902 bool empty() const
35903 {
35904 return !content;
35905 }
35906
35907 const std::type_info & type() const
35908 {
35909 return content ? content->type() : typeid(void);
35910 }
35911
35912
35913 private:
35914
35915
35916
35917
35918 class placeholder
35919 {
35920 public:
35921
35922 virtual ~placeholder()
35923 {
35924 }
35925
35926 public:
35927
35928 virtual const std::type_info & type() const = 0;
35929
35930 virtual placeholder * clone() const = 0;
35931
35932 };
35933
35934 template<typename ValueType>
35935 class holder : public placeholder
35936 {
35937 public:
35938
35939 holder(const ValueType & value)
35940 : held(value)
35941 {
35942 }
35943
35944 public:
35945
35946 virtual const std::type_info & type() const
35947 {
35948 return typeid(ValueType);
35949 }
35950
35951 virtual placeholder * clone() const
35952 {
35953 return new holder(held);
35954 }
35955
35956 public:
35957
35958 ValueType held;
35959
35960 };
35961
35962
35963
35964 private:
35965
35966 template<typename ValueType>
35967 friend ValueType * any_cast(any *);
35968
35969 template<typename ValueType>
35970 friend ValueType * unsafe_any_cast(any *);
35971
35972
35973
35974
35975
35976
35977
35978 placeholder * content;
35979
35980 };
35981
35982 class bad_any_cast : public std::bad_cast
35983 {
35984 public:
35985 virtual const char * what() const throw()
35986 {
35987 return "boost::bad_any_cast: "
35988 "failed conversion using boost::any_cast";
35989 }
35990 };
35991
35992 template<typename ValueType>
35993 ValueType * any_cast(any * operand)
35994 {
35995 return operand && operand->type() == typeid(ValueType)
35996 ? &static_cast<any::holder<ValueType> *>(operand->content)->held
35997 : 0;
35998 }
35999
36000 template<typename ValueType>
36001 const ValueType * any_cast(const any * operand)
36002 {
36003 return any_cast<ValueType>(const_cast<any *>(operand));
36004 }
36005
36006 template<typename ValueType>
36007 ValueType any_cast(const any & operand)
36008 {
36009 typedef typename remove_reference<ValueType>::type nonref;
36010# 191 "/usr/include/boost/any.hpp" 3 4
36011 const nonref * result = any_cast<nonref>(&operand);
36012 if(!result)
36013 boost::throw_exception(bad_any_cast());
36014 return *result;
36015 }
36016
36017 template<typename ValueType>
36018 ValueType any_cast(any & operand)
36019 {
36020 typedef typename remove_reference<ValueType>::type nonref;
36021
36022
36023
36024
36025
36026
36027
36028 nonref * result = any_cast<nonref>(&operand);
36029 if(!result)
36030 boost::throw_exception(bad_any_cast());
36031 return *result;
36032 }
36033
36034
36035
36036
36037
36038
36039 template<typename ValueType>
36040 inline ValueType * unsafe_any_cast(any * operand)
36041 {
36042 return &static_cast<any::holder<ValueType> *>(operand->content)->held;
36043 }
36044
36045 template<typename ValueType>
36046 inline const ValueType * unsafe_any_cast(const any * operand)
36047 {
36048 return unsafe_any_cast<ValueType>(const_cast<any *>(operand));
36049 }
36050}
36051# 13 "/usr/include/boost/program_options/value_semantic.hpp" 2 3 4
36052# 1 "/usr/include/boost/function/function1.hpp" 1 3 4
36053# 11 "/usr/include/boost/function/function1.hpp" 3 4
36054# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
36055# 18 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
36056# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
36057# 12 "/usr/include/boost/function/function_template.hpp" 3 4
36058# 1 "/usr/include/boost/function/detail/prologue.hpp" 1 3 4
36059# 12 "/usr/include/boost/function/detail/prologue.hpp" 3 4
36060# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cassert" 1 3 4
36061# 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cassert" 3 4
36062
36063# 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cassert" 3
36064
36065# 1 "/usr/include/assert.h" 1 3 4
36066
36067
36068
36069
36070
36071
36072
36073# 1 "/usr/include/gentoo-multilib/amd64/assert.h" 1 3 4
36074# 37 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
36075# 1 "/usr/include/features.h" 1 3 4
36076# 38 "/usr/include/gentoo-multilib/amd64/assert.h" 2 3 4
36077# 66 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
36078extern "C" {
36079
36080
36081extern void __assert_fail (__const char *__assertion, __const char *__file,
36082 unsigned int __line, __const char *__function)
36083 throw () __attribute__ ((__noreturn__));
36084
36085
36086extern void __assert_perror_fail (int __errnum, __const char *__file,
36087 unsigned int __line,
36088 __const char *__function)
36089 throw () __attribute__ ((__noreturn__));
36090
36091
36092
36093
36094extern void __assert (const char *__assertion, const char *__file, int __line)
36095 throw () __attribute__ ((__noreturn__));
36096
36097
36098}
36099# 9 "/usr/include/assert.h" 2 3 4
36100# 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cassert" 2 3
36101# 13 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
36102
36103
36104
36105# 1 "/usr/include/boost/function/function_base.hpp" 1 3 4
36106# 19 "/usr/include/boost/function/function_base.hpp" 3 4
36107# 1 "/usr/include/boost/assert.hpp" 1 3 4
36108# 35 "/usr/include/boost/assert.hpp" 3 4
36109# 1 "/usr/include/assert.h" 1 3 4
36110
36111
36112
36113
36114
36115
36116
36117# 1 "/usr/include/gentoo-multilib/amd64/assert.h" 1 3 4
36118# 37 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
36119# 1 "/usr/include/features.h" 1 3 4
36120# 38 "/usr/include/gentoo-multilib/amd64/assert.h" 2 3 4
36121# 66 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
36122extern "C" {
36123
36124
36125extern void __assert_fail (__const char *__assertion, __const char *__file,
36126 unsigned int __line, __const char *__function)
36127 throw () __attribute__ ((__noreturn__));
36128
36129
36130extern void __assert_perror_fail (int __errnum, __const char *__file,
36131 unsigned int __line,
36132 __const char *__function)
36133 throw () __attribute__ ((__noreturn__));
36134
36135
36136
36137
36138extern void __assert (const char *__assertion, const char *__file, int __line)
36139 throw () __attribute__ ((__noreturn__));
36140
36141
36142}
36143# 9 "/usr/include/assert.h" 2 3 4
36144# 36 "/usr/include/boost/assert.hpp" 2 3 4
36145# 20 "/usr/include/boost/function/function_base.hpp" 2 3 4
36146# 1 "/usr/include/boost/type_traits/is_integral.hpp" 1 3 4
36147# 15 "/usr/include/boost/type_traits/is_integral.hpp" 3 4
36148# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36149# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36150# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36151# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36152# 16 "/usr/include/boost/type_traits/is_integral.hpp" 2 3 4
36153
36154namespace boost {
36155
36156
36157
36158
36159template< typename T > struct is_integral : ::boost::integral_constant<bool,false> { };
36160
36161template<> struct is_integral< unsigned char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const volatile > : ::boost::integral_constant<bool,true> { };
36162template<> struct is_integral< unsigned short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const volatile > : ::boost::integral_constant<bool,true> { };
36163template<> struct is_integral< unsigned int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const volatile > : ::boost::integral_constant<bool,true> { };
36164template<> struct is_integral< unsigned long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const volatile > : ::boost::integral_constant<bool,true> { };
36165
36166template<> struct is_integral< signed char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const volatile > : ::boost::integral_constant<bool,true> { };
36167template<> struct is_integral< signed short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const volatile > : ::boost::integral_constant<bool,true> { };
36168template<> struct is_integral< signed int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const volatile > : ::boost::integral_constant<bool,true> { };
36169template<> struct is_integral< signed long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const volatile > : ::boost::integral_constant<bool,true> { };
36170
36171template<> struct is_integral< bool > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const volatile > : ::boost::integral_constant<bool,true> { };
36172template<> struct is_integral< char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const volatile > : ::boost::integral_constant<bool,true> { };
36173
36174
36175
36176
36177
36178template<> struct is_integral< wchar_t > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const volatile > : ::boost::integral_constant<bool,true> { };
36179# 60 "/usr/include/boost/type_traits/is_integral.hpp" 3 4
36180template<> struct is_integral< ::boost::ulong_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const volatile > : ::boost::integral_constant<bool,true> { };
36181template<> struct is_integral< ::boost::long_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const volatile > : ::boost::integral_constant<bool,true> { };
36182
36183
36184
36185
36186
36187}
36188
36189# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36190# 70 "/usr/include/boost/type_traits/is_integral.hpp" 2 3 4
36191# 21 "/usr/include/boost/function/function_base.hpp" 2 3 4
36192# 1 "/usr/include/boost/type_traits/composite_traits.hpp" 1 3 4
36193# 16 "/usr/include/boost/type_traits/composite_traits.hpp" 3 4
36194# 1 "/usr/include/boost/type_traits/is_array.hpp" 1 3 4
36195# 27 "/usr/include/boost/type_traits/is_array.hpp" 3 4
36196# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36197# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36198# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36199# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36200# 28 "/usr/include/boost/type_traits/is_array.hpp" 2 3 4
36201
36202namespace boost {
36203
36204
36205
36206template< typename T > struct is_array : ::boost::integral_constant<bool,false> { };
36207
36208template< typename T, std::size_t N > struct is_array< T[N] > : ::boost::integral_constant<bool,true> { };
36209template< typename T, std::size_t N > struct is_array< T const[N] > : ::boost::integral_constant<bool,true> { };
36210template< typename T, std::size_t N > struct is_array< T volatile[N] > : ::boost::integral_constant<bool,true> { };
36211template< typename T, std::size_t N > struct is_array< T const volatile[N] > : ::boost::integral_constant<bool,true> { };
36212
36213template< typename T > struct is_array< T[] > : ::boost::integral_constant<bool,true> { };
36214template< typename T > struct is_array< T const[] > : ::boost::integral_constant<bool,true> { };
36215template< typename T > struct is_array< T volatile[] > : ::boost::integral_constant<bool,true> { };
36216template< typename T > struct is_array< T const volatile[] > : ::boost::integral_constant<bool,true> { };
36217# 86 "/usr/include/boost/type_traits/is_array.hpp" 3 4
36218}
36219
36220# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36221# 89 "/usr/include/boost/type_traits/is_array.hpp" 2 3 4
36222# 17 "/usr/include/boost/type_traits/composite_traits.hpp" 2 3 4
36223# 1 "/usr/include/boost/type_traits/is_enum.hpp" 1 3 4
36224# 14 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
36225# 1 "/usr/include/boost/type_traits/add_reference.hpp" 1 3 4
36226# 17 "/usr/include/boost/type_traits/add_reference.hpp" 3 4
36227# 1 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 1 3 4
36228# 14 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 3 4
36229# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36230# 15 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 2 3 4
36231# 18 "/usr/include/boost/type_traits/add_reference.hpp" 2 3 4
36232
36233namespace boost {
36234
36235namespace detail {
36236# 55 "/usr/include/boost/type_traits/add_reference.hpp" 3 4
36237template <typename T>
36238struct add_reference_impl
36239{
36240 typedef T& type;
36241};
36242
36243
36244template< typename T > struct add_reference_impl<T&> { typedef T& type; };
36245
36246
36247
36248
36249
36250template<> struct add_reference_impl<void> { typedef void type; };
36251
36252template<> struct add_reference_impl<void const> { typedef void const type; };
36253template<> struct add_reference_impl<void volatile> { typedef void volatile type; };
36254template<> struct add_reference_impl<void const volatile> { typedef void const volatile type; };
36255
36256
36257}
36258
36259template< typename T > struct add_reference { typedef typename boost::detail::add_reference_impl<T>::type type; };
36260
36261
36262
36263
36264
36265
36266
36267}
36268
36269# 1 "/usr/include/boost/type_traits/detail/type_trait_undef.hpp" 1 3 4
36270# 88 "/usr/include/boost/type_traits/add_reference.hpp" 2 3 4
36271# 15 "/usr/include/boost/type_traits/is_enum.hpp" 2 3 4
36272# 1 "/usr/include/boost/type_traits/is_arithmetic.hpp" 1 3 4
36273# 13 "/usr/include/boost/type_traits/is_arithmetic.hpp" 3 4
36274# 1 "/usr/include/boost/type_traits/is_float.hpp" 1 3 4
36275# 13 "/usr/include/boost/type_traits/is_float.hpp" 3 4
36276# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36277# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36278# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36279# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36280# 14 "/usr/include/boost/type_traits/is_float.hpp" 2 3 4
36281
36282namespace boost {
36283
36284
36285template< typename T > struct is_float : ::boost::integral_constant<bool,false> { };
36286template<> struct is_float< float > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float const volatile > : ::boost::integral_constant<bool,true> { };
36287template<> struct is_float< double > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double const volatile > : ::boost::integral_constant<bool,true> { };
36288template<> struct is_float< long double > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double const volatile > : ::boost::integral_constant<bool,true> { };
36289
36290}
36291
36292# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36293# 26 "/usr/include/boost/type_traits/is_float.hpp" 2 3 4
36294# 14 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4
36295# 1 "/usr/include/boost/type_traits/detail/ice_or.hpp" 1 3 4
36296# 13 "/usr/include/boost/type_traits/detail/ice_or.hpp" 3 4
36297namespace boost {
36298namespace type_traits {
36299
36300template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
36301struct ice_or;
36302
36303template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
36304struct ice_or
36305{
36306 static const bool value = true;
36307};
36308
36309template <>
36310struct ice_or<false, false, false, false, false, false, false>
36311{
36312 static const bool value = false;
36313};
36314
36315}
36316}
36317# 15 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4
36318
36319
36320
36321# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36322# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36323# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36324# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36325# 19 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4
36326
36327namespace boost {
36328
36329namespace detail {
36330
36331template< typename T >
36332struct is_arithmetic_impl
36333{
36334 static const bool value = (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_float<T>::value >::value);
36335
36336
36337
36338
36339};
36340
36341}
36342
36343
36344template< typename T > struct is_arithmetic : ::boost::integral_constant<bool,::boost::detail::is_arithmetic_impl<T>::value> { };
36345
36346}
36347
36348# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36349# 42 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4
36350# 16 "/usr/include/boost/type_traits/is_enum.hpp" 2 3 4
36351
36352# 1 "/usr/include/boost/type_traits/is_convertible.hpp" 1 3 4
36353# 15 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36354# 1 "/usr/include/boost/type_traits/detail/yes_no_type.hpp" 1 3 4
36355# 14 "/usr/include/boost/type_traits/detail/yes_no_type.hpp" 3 4
36356namespace boost {
36357namespace type_traits {
36358
36359typedef char yes_type;
36360struct no_type
36361{
36362 char padding[8];
36363};
36364
36365}
36366}
36367# 16 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
36368
36369
36370
36371# 1 "/usr/include/boost/type_traits/ice.hpp" 1 3 4
36372# 18 "/usr/include/boost/type_traits/ice.hpp" 3 4
36373# 1 "/usr/include/boost/type_traits/detail/ice_eq.hpp" 1 3 4
36374# 13 "/usr/include/boost/type_traits/detail/ice_eq.hpp" 3 4
36375namespace boost {
36376namespace type_traits {
36377
36378template <int b1, int b2>
36379struct ice_eq
36380{
36381 static const bool value = (b1 == b2);
36382};
36383
36384template <int b1, int b2>
36385struct ice_ne
36386{
36387 static const bool value = (b1 != b2);
36388};
36389
36390
36391template <int b1, int b2> bool const ice_eq<b1,b2>::value;
36392template <int b1, int b2> bool const ice_ne<b1,b2>::value;
36393
36394
36395}
36396}
36397# 19 "/usr/include/boost/type_traits/ice.hpp" 2 3 4
36398# 20 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
36399
36400# 1 "/usr/include/boost/type_traits/is_void.hpp" 1 3 4
36401# 15 "/usr/include/boost/type_traits/is_void.hpp" 3 4
36402# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36403# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36404# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36405# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36406# 16 "/usr/include/boost/type_traits/is_void.hpp" 2 3 4
36407
36408namespace boost {
36409
36410
36411template< typename T > struct is_void : ::boost::integral_constant<bool,false> { };
36412template<> struct is_void< void > : ::boost::integral_constant<bool,true> { };
36413
36414
36415template<> struct is_void< void const > : ::boost::integral_constant<bool,true> { };
36416template<> struct is_void< void volatile > : ::boost::integral_constant<bool,true> { };
36417template<> struct is_void< void const volatile > : ::boost::integral_constant<bool,true> { };
36418
36419
36420}
36421
36422# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36423# 32 "/usr/include/boost/type_traits/is_void.hpp" 2 3 4
36424# 22 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
36425
36426# 1 "/usr/include/boost/type_traits/is_abstract.hpp" 1 3 4
36427# 53 "/usr/include/boost/type_traits/is_abstract.hpp" 3 4
36428# 1 "/usr/include/boost/type_traits/is_class.hpp" 1 3 4
36429# 14 "/usr/include/boost/type_traits/is_class.hpp" 3 4
36430# 1 "/usr/include/boost/type_traits/is_union.hpp" 1 3 4
36431# 14 "/usr/include/boost/type_traits/is_union.hpp" 3 4
36432# 1 "/usr/include/boost/type_traits/remove_cv.hpp" 1 3 4
36433# 15 "/usr/include/boost/type_traits/remove_cv.hpp" 3 4
36434# 1 "/usr/include/boost/type_traits/detail/cv_traits_impl.hpp" 1 3 4
36435# 23 "/usr/include/boost/type_traits/detail/cv_traits_impl.hpp" 3 4
36436namespace boost {
36437namespace detail {
36438
36439
36440
36441
36442
36443
36444
36445template <typename T> struct cv_traits_imp {};
36446
36447template <typename T>
36448struct cv_traits_imp<T*>
36449{
36450 static const bool is_const = false;
36451 static const bool is_volatile = false;
36452 typedef T unqualified_type;
36453};
36454
36455template <typename T>
36456struct cv_traits_imp<const T*>
36457{
36458 static const bool is_const = true;
36459 static const bool is_volatile = false;
36460 typedef T unqualified_type;
36461};
36462
36463template <typename T>
36464struct cv_traits_imp<volatile T*>
36465{
36466 static const bool is_const = false;
36467 static const bool is_volatile = true;
36468 typedef T unqualified_type;
36469};
36470
36471template <typename T>
36472struct cv_traits_imp<const volatile T*>
36473{
36474 static const bool is_const = true;
36475 static const bool is_volatile = true;
36476 typedef T unqualified_type;
36477};
36478# 92 "/usr/include/boost/type_traits/detail/cv_traits_impl.hpp" 3 4
36479}
36480}
36481# 16 "/usr/include/boost/type_traits/remove_cv.hpp" 2 3 4
36482# 26 "/usr/include/boost/type_traits/remove_cv.hpp" 3 4
36483# 1 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 1 3 4
36484# 14 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 3 4
36485# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36486# 15 "/usr/include/boost/type_traits/detail/type_trait_def.hpp" 2 3 4
36487# 27 "/usr/include/boost/type_traits/remove_cv.hpp" 2 3 4
36488
36489namespace boost {
36490
36491
36492
36493
36494template< typename T > struct remove_cv { typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type; };
36495template< typename T > struct remove_cv<T&> { typedef T& type; };
36496
36497template< typename T, std::size_t N > struct remove_cv<T const[N]> { typedef T type[N]; };
36498template< typename T, std::size_t N > struct remove_cv<T volatile[N]> { typedef T type[N]; };
36499template< typename T, std::size_t N > struct remove_cv<T const volatile[N]> { typedef T type[N]; };
36500# 57 "/usr/include/boost/type_traits/remove_cv.hpp" 3 4
36501}
36502
36503# 1 "/usr/include/boost/type_traits/detail/type_trait_undef.hpp" 1 3 4
36504# 60 "/usr/include/boost/type_traits/remove_cv.hpp" 2 3 4
36505# 15 "/usr/include/boost/type_traits/is_union.hpp" 2 3 4
36506
36507# 1 "/usr/include/boost/type_traits/intrinsics.hpp" 1 3 4
36508# 17 "/usr/include/boost/type_traits/is_union.hpp" 2 3 4
36509
36510
36511# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36512# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36513# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36514# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36515# 20 "/usr/include/boost/type_traits/is_union.hpp" 2 3 4
36516
36517namespace boost {
36518
36519namespace detail {
36520# 36 "/usr/include/boost/type_traits/is_union.hpp" 3 4
36521template <typename T> struct is_union_impl
36522{
36523 static const bool value = false;
36524};
36525
36526}
36527
36528template< typename T > struct is_union : ::boost::integral_constant<bool,::boost::detail::is_union_impl<T>::value> { };
36529
36530}
36531
36532# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36533# 48 "/usr/include/boost/type_traits/is_union.hpp" 2 3 4
36534# 15 "/usr/include/boost/type_traits/is_class.hpp" 2 3 4
36535# 33 "/usr/include/boost/type_traits/is_class.hpp" 3 4
36536# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36537# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36538# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36539# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36540# 34 "/usr/include/boost/type_traits/is_class.hpp" 2 3 4
36541
36542namespace boost {
36543
36544namespace detail {
36545# 53 "/usr/include/boost/type_traits/is_class.hpp" 3 4
36546template <class U> ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
36547template <class U> ::boost::type_traits::no_type is_class_tester(...);
36548
36549template <typename T>
36550struct is_class_impl
36551{
36552
36553 static const bool value = (::boost::type_traits::ice_and< sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type), ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value >::value);
36554
36555
36556
36557
36558
36559};
36560# 115 "/usr/include/boost/type_traits/is_class.hpp" 3 4
36561}
36562
36563
36564
36565
36566
36567template< typename T > struct is_class : ::boost::integral_constant<bool,::boost::detail::is_class_impl<T>::value> { };
36568
36569
36570}
36571
36572# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36573# 127 "/usr/include/boost/type_traits/is_class.hpp" 2 3 4
36574# 54 "/usr/include/boost/type_traits/is_abstract.hpp" 2 3 4
36575
36576
36577
36578
36579
36580# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36581# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36582# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36583# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36584# 60 "/usr/include/boost/type_traits/is_abstract.hpp" 2 3 4
36585
36586
36587namespace boost {
36588namespace detail{
36589
36590
36591template<class T>
36592struct is_abstract_imp2
36593{
36594
36595
36596
36597
36598 template<class U>
36599 static type_traits::no_type check_sig(U (*)[1]);
36600 template<class U>
36601 static type_traits::yes_type check_sig(...);
36602
36603
36604
36605
36606 typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( sizeof(T) != 0 ) >)> boost_static_assert_typedef_81;
36607
36608
36609
36610
36611 static const unsigned s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0));
36612
36613
36614
36615
36616 static const bool value = (s1 == sizeof(type_traits::yes_type));
36617
36618};
36619
36620template <bool v>
36621struct is_abstract_select
36622{
36623 template <class T>
36624 struct rebind
36625 {
36626 typedef is_abstract_imp2<T> type;
36627 };
36628};
36629template <>
36630struct is_abstract_select<false>
36631{
36632 template <class T>
36633 struct rebind
36634 {
36635 typedef false_type type;
36636 };
36637};
36638
36639template <class T>
36640struct is_abstract_imp
36641{
36642 typedef is_abstract_select< ::boost::is_class<T>::value> selector;
36643 typedef typename selector::template rebind<T> binder;
36644 typedef typename binder::type type;
36645
36646 static const bool value = type::value;
36647};
36648
36649
36650}
36651
36652
36653template< typename T > struct is_abstract : ::boost::integral_constant<bool,::boost::detail::is_abstract_imp<T>::value> { };
36654
36655
36656
36657
36658}
36659
36660# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36661# 136 "/usr/include/boost/type_traits/is_abstract.hpp" 2 3 4
36662# 24 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
36663# 32 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36664# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36665# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36666# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36667# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36668# 33 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
36669
36670namespace boost {
36671# 46 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36672namespace detail {
36673# 113 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36674struct any_conversion
36675{
36676 template <typename T> any_conversion(const volatile T&);
36677 template <typename T> any_conversion(T&);
36678};
36679
36680template <typename T> struct checker
36681{
36682 static boost::type_traits::no_type _m_check(any_conversion ...);
36683 static boost::type_traits::yes_type _m_check(T, int);
36684};
36685
36686template <typename From, typename To>
36687struct is_convertible_basic_impl
36688{
36689 static From _m_from;
36690 static bool const value = sizeof( detail::checker<To>::_m_check(_m_from, 0) )
36691 == sizeof(::boost::type_traits::yes_type);
36692};
36693# 282 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36694template <typename From, typename To>
36695struct is_convertible_impl
36696{
36697 typedef typename add_reference<From>::type ref_type;
36698 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);
36699# 297 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36700};
36701
36702
36703template <bool trivial1, bool trivial2, bool abstract_target>
36704struct is_convertible_impl_select
36705{
36706 template <class From, class To>
36707 struct rebind
36708 {
36709 typedef is_convertible_impl<From, To> type;
36710 };
36711};
36712
36713template <>
36714struct is_convertible_impl_select<true, true, false>
36715{
36716 template <class From, class To>
36717 struct rebind
36718 {
36719 typedef true_type type;
36720 };
36721};
36722
36723template <>
36724struct is_convertible_impl_select<false, false, true>
36725{
36726 template <class From, class To>
36727 struct rebind
36728 {
36729 typedef false_type type;
36730 };
36731};
36732
36733template <>
36734struct is_convertible_impl_select<true, false, true>
36735{
36736 template <class From, class To>
36737 struct rebind
36738 {
36739 typedef false_type type;
36740 };
36741};
36742
36743template <typename From, typename To>
36744struct is_convertible_impl_dispatch_base
36745{
36746
36747 typedef is_convertible_impl_select<
36748 ::boost::is_arithmetic<From>::value,
36749 ::boost::is_arithmetic<To>::value,
36750
36751 ::boost::is_abstract<To>::value
36752
36753
36754
36755 > selector;
36756
36757
36758
36759 typedef typename selector::template rebind<From, To> isc_binder;
36760 typedef typename isc_binder::type type;
36761};
36762
36763template <typename From, typename To>
36764struct is_convertible_impl_dispatch
36765 : public is_convertible_impl_dispatch_base<From, To>::type
36766{};
36767# 385 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36768 template<> struct is_convertible_impl< void,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const volatile > { static const bool value = (true); };
36769# 395 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36770template< typename To > struct is_convertible_impl< void,To > { static const bool value = (false); };
36771template< typename From > struct is_convertible_impl< From,void > { static const bool value = (true); };
36772
36773template< typename To > struct is_convertible_impl< void const,To > { static const bool value = (false); };
36774template< typename To > struct is_convertible_impl< void volatile,To > { static const bool value = (false); };
36775template< typename To > struct is_convertible_impl< void const volatile,To > { static const bool value = (false); };
36776template< typename From > struct is_convertible_impl< From,void const > { static const bool value = (true); };
36777template< typename From > struct is_convertible_impl< From,void volatile > { static const bool value = (true); };
36778template< typename From > struct is_convertible_impl< From,void const volatile > { static const bool value = (true); };
36779
36780
36781
36782}
36783
36784template< typename From, typename To > struct is_convertible : ::boost::integral_constant<bool,(::boost::detail::is_convertible_impl_dispatch<From,To>::value)> { };
36785
36786}
36787
36788# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
36789# 414 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
36790# 18 "/usr/include/boost/type_traits/is_enum.hpp" 2 3 4
36791
36792
36793# 1 "/usr/include/boost/type_traits/is_function.hpp" 1 3 4
36794# 15 "/usr/include/boost/type_traits/is_function.hpp" 3 4
36795# 1 "/usr/include/boost/type_traits/detail/false_result.hpp" 1 3 4
36796# 14 "/usr/include/boost/type_traits/detail/false_result.hpp" 3 4
36797namespace boost {
36798namespace type_traits {
36799
36800
36801struct false_result
36802{
36803 template <typename T> struct result_
36804 {
36805 static const bool value = false;
36806 };
36807};
36808
36809}}
36810# 16 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4
36811
36812
36813
36814# 1 "/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp" 1 3 4
36815# 26 "/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp" 3 4
36816namespace boost {
36817namespace type_traits {
36818
36819template <class R>
36820struct is_function_ptr_helper
36821{
36822 static const bool value = false;
36823};
36824
36825
36826
36827
36828template <class R >
36829struct is_function_ptr_helper<R (*)()> { static const bool value = true; };
36830
36831template <class R >
36832struct is_function_ptr_helper<R (*)( ...)> { static const bool value = true; };
36833
36834template <class R , class T0>
36835struct is_function_ptr_helper<R (*)( T0)> { static const bool value = true; };
36836
36837template <class R , class T0>
36838struct is_function_ptr_helper<R (*)( T0 ...)> { static const bool value = true; };
36839
36840template <class R , class T0 , class T1>
36841struct is_function_ptr_helper<R (*)( T0 , T1)> { static const bool value = true; };
36842
36843template <class R , class T0 , class T1>
36844struct is_function_ptr_helper<R (*)( T0 , T1 ...)> { static const bool value = true; };
36845
36846template <class R , class T0 , class T1 , class T2>
36847struct is_function_ptr_helper<R (*)( T0 , T1 , T2)> { static const bool value = true; };
36848
36849template <class R , class T0 , class T1 , class T2>
36850struct is_function_ptr_helper<R (*)( T0 , T1 , T2 ...)> { static const bool value = true; };
36851
36852template <class R , class T0 , class T1 , class T2 , class T3>
36853struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3)> { static const bool value = true; };
36854
36855template <class R , class T0 , class T1 , class T2 , class T3>
36856struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 ...)> { static const bool value = true; };
36857
36858template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
36859struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4)> { static const bool value = true; };
36860
36861template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
36862struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 ...)> { static const bool value = true; };
36863
36864template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
36865struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5)> { static const bool value = true; };
36866
36867template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
36868struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)> { static const bool value = true; };
36869
36870template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
36871struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { static const bool value = true; };
36872
36873template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
36874struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)> { static const bool value = true; };
36875
36876template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
36877struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { static const bool value = true; };
36878
36879template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
36880struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)> { static const bool value = true; };
36881
36882template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
36883struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { static const bool value = true; };
36884
36885template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
36886struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)> { static const bool value = true; };
36887
36888template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
36889struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { static const bool value = true; };
36890
36891template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
36892struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)> { static const bool value = true; };
36893
36894template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
36895struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { static const bool value = true; };
36896
36897template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
36898struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)> { static const bool value = true; };
36899
36900template <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>
36901struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { static const bool value = true; };
36902
36903template <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>
36904struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)> { static const bool value = true; };
36905
36906template <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>
36907struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { static const bool value = true; };
36908
36909template <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>
36910struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)> { static const bool value = true; };
36911
36912template <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>
36913struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { static const bool value = true; };
36914
36915template <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>
36916struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)> { static const bool value = true; };
36917
36918template <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>
36919struct 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; };
36920
36921template <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>
36922struct 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; };
36923
36924template <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>
36925struct 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; };
36926
36927template <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>
36928struct 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; };
36929
36930template <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>
36931struct 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; };
36932
36933template <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>
36934struct 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; };
36935
36936template <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>
36937struct 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; };
36938
36939template <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>
36940struct 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; };
36941
36942template <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>
36943struct 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; };
36944
36945template <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>
36946struct 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; };
36947
36948template <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>
36949struct 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; };
36950
36951template <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>
36952struct 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; };
36953
36954template <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>
36955struct 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; };
36956
36957template <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>
36958struct 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; };
36959
36960template <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>
36961struct 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; };
36962
36963template <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>
36964struct 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; };
36965
36966template <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>
36967struct 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; };
36968
36969template <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>
36970struct 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; };
36971
36972template <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>
36973struct 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; };
36974
36975template <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>
36976struct 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; };
36977
36978template <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>
36979struct 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; };
36980
36981template <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>
36982struct 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; };
36983# 203 "/usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp" 3 4
36984}
36985}
36986# 20 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4
36987
36988
36989
36990
36991
36992
36993# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
36994# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
36995# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
36996# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
36997# 27 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4
36998
36999
37000
37001
37002
37003
37004
37005namespace boost {
37006namespace detail {
37007
37008
37009template<bool is_ref = true>
37010struct is_function_chooser
37011 : ::boost::type_traits::false_result
37012{
37013};
37014
37015template <>
37016struct is_function_chooser<false>
37017{
37018 template< typename T > struct result_
37019 : ::boost::type_traits::is_function_ptr_helper<T*>
37020 {
37021 };
37022};
37023
37024template <typename T>
37025struct is_function_impl
37026 : is_function_chooser< ::boost::is_reference<T>::value >
37027 ::template result_<T>
37028{
37029};
37030# 80 "/usr/include/boost/type_traits/is_function.hpp" 3 4
37031}
37032
37033template< typename T > struct is_function : ::boost::integral_constant<bool,::boost::detail::is_function_impl<T>::value> { };
37034
37035}
37036
37037# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
37038# 87 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4
37039# 21 "/usr/include/boost/type_traits/is_enum.hpp" 2 3 4
37040# 30 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
37041# 1 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 1 3 4
37042# 14 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 3 4
37043# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
37044# 15 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
37045# 31 "/usr/include/boost/type_traits/is_enum.hpp" 2 3 4
37046
37047namespace boost {
37048
37049
37050
37051namespace detail {
37052
37053
37054
37055template <typename T>
37056struct is_class_or_union
37057{
37058 static const bool value = (::boost::type_traits::ice_or< ::boost::is_class<T>::value , ::boost::is_union<T>::value >::value);
37059
37060
37061
37062
37063};
37064# 75 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
37065struct int_convertible
37066{
37067 int_convertible(int);
37068};
37069
37070
37071
37072template <bool is_typename_arithmetic_or_reference = true>
37073struct is_enum_helper
37074{
37075 template <typename T> struct type
37076 {
37077 static const bool value = false;
37078 };
37079};
37080
37081template <>
37082struct is_enum_helper<false>
37083{
37084 template <typename T> struct type
37085 : ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible>
37086 {
37087 };
37088};
37089
37090template <typename T> struct is_enum_impl
37091{
37092# 112 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
37093 static const bool selector = (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value , ::boost::is_reference<T>::value , ::boost::is_function<T>::value , is_class_or_union<T>::value , is_array<T>::value >::value);
37094# 149 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
37095 typedef ::boost::detail::is_enum_helper<selector> se_t;
37096
37097
37098 typedef typename se_t::template type<T> helper;
37099 static const bool value = helper::value;
37100};
37101
37102
37103template<> struct is_enum_impl< void > { static const bool value = (false); };
37104
37105template<> struct is_enum_impl< void const > { static const bool value = (false); };
37106template<> struct is_enum_impl< void volatile > { static const bool value = (false); };
37107template<> struct is_enum_impl< void const volatile > { static const bool value = (false); };
37108
37109
37110}
37111
37112template< typename T > struct is_enum : ::boost::integral_constant<bool,::boost::detail::is_enum_impl<T>::value> { };
37113# 176 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
37114}
37115
37116# 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
37117# 179 "/usr/include/boost/type_traits/is_enum.hpp" 2 3 4
37118# 18 "/usr/include/boost/type_traits/composite_traits.hpp" 2 3 4
37119# 22 "/usr/include/boost/function/function_base.hpp" 2 3 4
37120# 1 "/usr/include/boost/ref.hpp" 1 3 4
37121# 11 "/usr/include/boost/ref.hpp" 3 4
37122# 1 "/usr/include/boost/utility/addressof.hpp" 1 3 4
37123# 17 "/usr/include/boost/utility/addressof.hpp" 3 4
37124namespace boost {
37125# 32 "/usr/include/boost/utility/addressof.hpp" 3 4
37126template <typename T> T*
37127
37128addressof(T& v)
37129{
37130 return reinterpret_cast<T*>(
37131 &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
37132}
37133# 56 "/usr/include/boost/utility/addressof.hpp" 3 4
37134}
37135# 12 "/usr/include/boost/ref.hpp" 2 3 4
37136# 29 "/usr/include/boost/ref.hpp" 3 4
37137namespace boost
37138{
37139
37140template<class T> class reference_wrapper
37141{
37142public:
37143 typedef T type;
37144
37145
37146
37147
37148
37149
37150
37151 explicit reference_wrapper(T& t): t_(boost::addressof(t)) {}
37152
37153
37154
37155 operator T& () const { return *t_; }
37156
37157 T& get() const { return *t_; }
37158
37159 T* get_pointer() const { return t_; }
37160
37161private:
37162
37163 T* t_;
37164};
37165
37166
37167
37168
37169
37170
37171
37172template<class T> inline reference_wrapper<T> const ref(T & t)
37173{
37174 return reference_wrapper<T>(t);
37175}
37176
37177template<class T> inline reference_wrapper<T const> const cref(T const & t)
37178{
37179 return reference_wrapper<T const>(t);
37180}
37181
37182
37183
37184
37185
37186template<typename T>
37187class is_reference_wrapper
37188 : public mpl::false_
37189{
37190};
37191
37192template<typename T>
37193class unwrap_reference
37194{
37195 public:
37196 typedef T type;
37197};
37198# 106 "/usr/include/boost/ref.hpp" 3 4
37199template<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; };
37200
37201template<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; };
37202template<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; };
37203template<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; };
37204# 176 "/usr/include/boost/ref.hpp" 3 4
37205}
37206# 23 "/usr/include/boost/function/function_base.hpp" 2 3 4
37207# 1 "/usr/include/boost/mpl/if.hpp" 1 3 4
37208# 17 "/usr/include/boost/mpl/if.hpp" 3 4
37209# 1 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 1 3 4
37210# 18 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
37211# 1 "/usr/include/boost/mpl/aux_/config/integral.hpp" 1 3 4
37212# 19 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 2 3 4
37213# 1 "/usr/include/boost/mpl/aux_/config/eti.hpp" 1 3 4
37214# 20 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 2 3 4
37215# 73 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
37216namespace boost { namespace mpl { namespace aux {
37217
37218template< typename T > struct value_type_wknd
37219{
37220 typedef typename T::value_type type;
37221};
37222# 87 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
37223}}}
37224# 18 "/usr/include/boost/mpl/if.hpp" 2 3 4
37225
37226# 1 "/usr/include/boost/mpl/aux_/na_spec.hpp" 1 3 4
37227# 18 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4
37228# 1 "/usr/include/boost/mpl/lambda_fwd.hpp" 1 3 4
37229# 17 "/usr/include/boost/mpl/lambda_fwd.hpp" 3 4
37230# 1 "/usr/include/boost/mpl/void_fwd.hpp" 1 3 4
37231# 19 "/usr/include/boost/mpl/void_fwd.hpp" 3 4
37232namespace mpl_ {
37233
37234struct void_;
37235
37236}
37237namespace boost { namespace mpl { using ::mpl_::void_; } }
37238# 18 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
37239# 1 "/usr/include/boost/mpl/aux_/na.hpp" 1 3 4
37240# 18 "/usr/include/boost/mpl/aux_/na.hpp" 3 4
37241# 1 "/usr/include/boost/mpl/aux_/na_fwd.hpp" 1 3 4
37242# 19 "/usr/include/boost/mpl/aux_/na_fwd.hpp" 3 4
37243namespace mpl_ {
37244
37245
37246struct na
37247{
37248 typedef na type;
37249 enum { value = 0 };
37250};
37251
37252}
37253namespace boost { namespace mpl { using ::mpl_::na; } }
37254# 19 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4
37255
37256
37257
37258namespace boost { namespace mpl {
37259
37260template< typename T >
37261struct is_na
37262 : false_
37263{
37264
37265
37266
37267};
37268
37269template<>
37270struct is_na<na>
37271 : true_
37272{
37273
37274
37275
37276};
37277
37278template< typename T >
37279struct is_not_na
37280 : true_
37281{
37282
37283
37284
37285};
37286
37287template<>
37288struct is_not_na<na>
37289 : false_
37290{
37291
37292
37293
37294};
37295
37296
37297template< typename T, typename U > struct if_na
37298{
37299 typedef T type;
37300};
37301
37302template< typename U > struct if_na<na,U>
37303{
37304 typedef U type;
37305};
37306# 93 "/usr/include/boost/mpl/aux_/na.hpp" 3 4
37307}}
37308# 19 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
37309
37310
37311
37312
37313
37314# 1 "/usr/include/boost/mpl/aux_/lambda_arity_param.hpp" 1 3 4
37315# 25 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
37316
37317
37318namespace boost { namespace mpl {
37319
37320template<
37321 typename T = na
37322 , typename Tag = void_
37323 , typename Arity = int_< aux::template_arity<T>::value >
37324
37325
37326 >
37327struct lambda;
37328
37329}}
37330# 19 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
37331
37332
37333
37334# 1 "/usr/include/boost/mpl/aux_/arity.hpp" 1 3 4
37335# 17 "/usr/include/boost/mpl/aux_/arity.hpp" 3 4
37336# 1 "/usr/include/boost/mpl/aux_/config/dtp.hpp" 1 3 4
37337# 18 "/usr/include/boost/mpl/aux_/arity.hpp" 2 3 4
37338# 23 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
37339
37340
37341
37342
37343# 1 "/usr/include/boost/mpl/aux_/preprocessor/enum.hpp" 1 3 4
37344# 28 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
37345# 1 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 1 3 4
37346# 17 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4
37347# 1 "/usr/include/boost/mpl/limits/arity.hpp" 1 3 4
37348# 18 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
37349
37350
37351
37352
37353# 1 "/usr/include/boost/preprocessor/logical/and.hpp" 1 3 4
37354# 19 "/usr/include/boost/preprocessor/logical/and.hpp" 3 4
37355# 1 "/usr/include/boost/preprocessor/logical/bitand.hpp" 1 3 4
37356# 20 "/usr/include/boost/preprocessor/logical/and.hpp" 2 3 4
37357# 23 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
37358# 1 "/usr/include/boost/preprocessor/identity.hpp" 1 3 4
37359# 15 "/usr/include/boost/preprocessor/identity.hpp" 3 4
37360# 1 "/usr/include/boost/preprocessor/facilities/identity.hpp" 1 3 4
37361# 16 "/usr/include/boost/preprocessor/identity.hpp" 2 3 4
37362# 24 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
37363# 1 "/usr/include/boost/preprocessor/empty.hpp" 1 3 4
37364# 25 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
37365# 66 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4
37366# 1 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 1 3 4
37367# 17 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 3 4
37368# 1 "/usr/include/boost/preprocessor/arithmetic/dec.hpp" 1 3 4
37369# 18 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4
37370
37371
37372# 1 "/usr/include/boost/preprocessor/control/while.hpp" 1 3 4
37373# 20 "/usr/include/boost/preprocessor/control/while.hpp" 3 4
37374# 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
37375# 21 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
37376# 1 "/usr/include/boost/preprocessor/list/fold_left.hpp" 1 3 4
37377# 18 "/usr/include/boost/preprocessor/list/fold_left.hpp" 3 4
37378# 1 "/usr/include/boost/preprocessor/control/while.hpp" 1 3 4
37379# 19 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4
37380
37381# 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
37382# 21 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4
37383# 41 "/usr/include/boost/preprocessor/list/fold_left.hpp" 3 4
37384# 1 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 1 3 4
37385# 17 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 3 4
37386# 1 "/usr/include/boost/preprocessor/control/expr_iif.hpp" 1 3 4
37387# 18 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 2 3 4
37388
37389# 1 "/usr/include/boost/preprocessor/list/adt.hpp" 1 3 4
37390# 18 "/usr/include/boost/preprocessor/list/adt.hpp" 3 4
37391# 1 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 1 3 4
37392# 16 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 3 4
37393# 1 "/usr/include/boost/preprocessor/detail/check.hpp" 1 3 4
37394# 17 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 2 3 4
37395# 19 "/usr/include/boost/preprocessor/list/adt.hpp" 2 3 4
37396# 1 "/usr/include/boost/preprocessor/logical/compl.hpp" 1 3 4
37397# 20 "/usr/include/boost/preprocessor/list/adt.hpp" 2 3 4
37398# 20 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 2 3 4
37399# 42 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4
37400# 22 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
37401# 1 "/usr/include/boost/preprocessor/list/fold_right.hpp" 1 3 4
37402# 20 "/usr/include/boost/preprocessor/list/fold_right.hpp" 3 4
37403# 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
37404# 21 "/usr/include/boost/preprocessor/list/fold_right.hpp" 2 3 4
37405# 37 "/usr/include/boost/preprocessor/list/fold_right.hpp" 3 4
37406# 1 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 1 3 4
37407# 18 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 3 4
37408# 1 "/usr/include/boost/preprocessor/list/reverse.hpp" 1 3 4
37409# 19 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 2 3 4
37410# 38 "/usr/include/boost/preprocessor/list/fold_right.hpp" 2 3 4
37411# 23 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
37412# 48 "/usr/include/boost/preprocessor/control/while.hpp" 3 4
37413# 1 "/usr/include/boost/preprocessor/control/detail/while.hpp" 1 3 4
37414# 49 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
37415# 21 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4
37416# 1 "/usr/include/boost/preprocessor/tuple/elem.hpp" 1 3 4
37417# 22 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4
37418# 67 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
37419# 1 "/usr/include/boost/preprocessor/arithmetic/sub.hpp" 1 3 4
37420# 68 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
37421# 29 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
37422# 20 "/usr/include/boost/mpl/if.hpp" 2 3 4
37423
37424
37425
37426
37427
37428namespace boost { namespace mpl {
37429
37430
37431
37432template<
37433 bool C
37434 , typename T1
37435 , typename T2
37436 >
37437struct if_c
37438{
37439 typedef T1 type;
37440};
37441
37442template<
37443 typename T1
37444 , typename T2
37445 >
37446struct if_c<false,T1,T2>
37447{
37448 typedef T2 type;
37449};
37450
37451
37452
37453template<
37454 typename T1 = na
37455 , typename T2 = na
37456 , typename T3 = na
37457 >
37458struct if_
37459{
37460 private:
37461
37462 typedef if_c<
37463
37464
37465
37466 static_cast<bool>(T1::value)
37467
37468 , T2
37469 , T3
37470 > almost_type_;
37471
37472 public:
37473 typedef typename almost_type_::type type;
37474
37475
37476};
37477# 131 "/usr/include/boost/mpl/if.hpp" 3 4
37478template<> 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> { }; }
37479
37480}}
37481# 24 "/usr/include/boost/function/function_base.hpp" 2 3 4
37482
37483# 1 "/usr/include/boost/type_traits/alignment_of.hpp" 1 3 4
37484# 16 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
37485# 1 "/usr/include/boost/type_traits/detail/size_t_trait_def.hpp" 1 3 4
37486# 14 "/usr/include/boost/type_traits/detail/size_t_trait_def.hpp" 3 4
37487# 1 "/usr/include/boost/type_traits/detail/template_arity_spec.hpp" 1 3 4
37488# 15 "/usr/include/boost/type_traits/detail/size_t_trait_def.hpp" 2 3 4
37489
37490
37491# 1 "/usr/include/boost/mpl/size_t.hpp" 1 3 4
37492# 17 "/usr/include/boost/mpl/size_t.hpp" 3 4
37493# 1 "/usr/include/boost/mpl/size_t_fwd.hpp" 1 3 4
37494# 21 "/usr/include/boost/mpl/size_t_fwd.hpp" 3 4
37495namespace mpl_ {
37496
37497template< std::size_t N > struct size_t;
37498
37499}
37500namespace boost { namespace mpl { using ::mpl_::size_t; } }
37501# 18 "/usr/include/boost/mpl/size_t.hpp" 2 3 4
37502
37503
37504
37505
37506
37507# 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4
37508# 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
37509namespace mpl_ {
37510
37511template< std::size_t N >
37512struct size_t
37513{
37514 static const std::size_t value = N;
37515
37516
37517
37518
37519
37520 typedef size_t type;
37521
37522 typedef std::size_t value_type;
37523 typedef integral_c_tag tag;
37524# 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
37525 typedef mpl_::size_t< static_cast<std::size_t>((value + 1)) > next;
37526 typedef mpl_::size_t< static_cast<std::size_t>((value - 1)) > prior;
37527
37528
37529
37530
37531
37532
37533 operator std::size_t() const { return static_cast<std::size_t>(this->value); }
37534};
37535
37536
37537template< std::size_t N >
37538std::size_t const mpl_::size_t< N >::value;
37539
37540
37541}
37542# 24 "/usr/include/boost/mpl/size_t.hpp" 2 3 4
37543# 18 "/usr/include/boost/type_traits/detail/size_t_trait_def.hpp" 2 3 4
37544# 17 "/usr/include/boost/type_traits/alignment_of.hpp" 2 3 4
37545# 26 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
37546namespace boost {
37547
37548template <typename T> struct alignment_of;
37549
37550
37551namespace detail {
37552
37553template <typename T>
37554struct alignment_of_hack
37555{
37556 char c;
37557 T t;
37558 alignment_of_hack();
37559};
37560
37561
37562template <unsigned A, unsigned S>
37563struct alignment_logic
37564{
37565 static const std::size_t value = A < S ? A : S;
37566};
37567
37568
37569template< typename T >
37570struct alignment_of_impl
37571{
37572 static const std::size_t value = (::boost::detail::alignment_logic< sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T), sizeof(T) >::value);
37573
37574
37575
37576
37577};
37578
37579}
37580
37581template< typename T > struct alignment_of : ::boost::integral_constant<std::size_t,::boost::detail::alignment_of_impl<T>::value> { };
37582
37583
37584
37585
37586template <typename T>
37587struct alignment_of<T&>
37588 : alignment_of<T*>
37589{
37590};
37591# 81 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
37592template<> struct alignment_of<void> : ::boost::integral_constant<std::size_t,0> { };
37593
37594template<> struct alignment_of<void const> : ::boost::integral_constant<std::size_t,0> { };
37595template<> struct alignment_of<void volatile> : ::boost::integral_constant<std::size_t,0> { };
37596template<> struct alignment_of<void const volatile> : ::boost::integral_constant<std::size_t,0> { };
37597
37598
37599}
37600# 97 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
37601# 1 "/usr/include/boost/type_traits/detail/size_t_trait_undef.hpp" 1 3 4
37602# 98 "/usr/include/boost/type_traits/alignment_of.hpp" 2 3 4
37603# 26 "/usr/include/boost/function/function_base.hpp" 2 3 4
37604
37605# 1 "/usr/include/boost/utility/enable_if.hpp" 1 3 4
37606# 24 "/usr/include/boost/utility/enable_if.hpp" 3 4
37607namespace boost
37608{
37609
37610 template <bool B, class T = void>
37611 struct enable_if_c {
37612 typedef T type;
37613 };
37614
37615 template <class T>
37616 struct enable_if_c<false, T> {};
37617
37618 template <class Cond, class T = void>
37619 struct enable_if : public enable_if_c<Cond::value, T> {};
37620
37621 template <bool B, class T>
37622 struct lazy_enable_if_c {
37623 typedef typename T::type type;
37624 };
37625
37626 template <class T>
37627 struct lazy_enable_if_c<false, T> {};
37628
37629 template <class Cond, class T>
37630 struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
37631
37632
37633 template <bool B, class T = void>
37634 struct disable_if_c {
37635 typedef T type;
37636 };
37637
37638 template <class T>
37639 struct disable_if_c<true, T> {};
37640
37641 template <class Cond, class T = void>
37642 struct disable_if : public disable_if_c<Cond::value, T> {};
37643
37644 template <bool B, class T>
37645 struct lazy_disable_if_c {
37646 typedef typename T::type type;
37647 };
37648
37649 template <class T>
37650 struct lazy_disable_if_c<true, T> {};
37651
37652 template <class Cond, class T>
37653 struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
37654
37655}
37656# 28 "/usr/include/boost/function/function_base.hpp" 2 3 4
37657
37658
37659
37660# 1 "/usr/include/boost/function_equal.hpp" 1 3 4
37661# 13 "/usr/include/boost/function_equal.hpp" 3 4
37662namespace boost {
37663
37664template<typename F, typename G>
37665 bool function_equal_impl(const F& f, const G& g, long)
37666 { return f == g; }
37667
37668
37669
37670
37671template<typename F, typename G>
37672 bool function_equal(const F& f, const G& g)
37673 { return function_equal_impl(f, g, 0); }
37674
37675}
37676# 32 "/usr/include/boost/function/function_base.hpp" 2 3 4
37677# 81 "/usr/include/boost/function/function_base.hpp" 3 4
37678namespace boost {
37679# 91 "/usr/include/boost/function/function_base.hpp" 3 4
37680template<typename Signature, typename Allocator = std::allocator<void> >
37681class function;
37682
37683
37684template<typename Signature, typename Allocator>
37685inline void swap(function<Signature, Allocator>& f1,
37686 function<Signature, Allocator>& f2)
37687{
37688 f1.swap(f2);
37689}
37690
37691}
37692
37693
37694namespace boost {
37695 namespace detail {
37696 namespace function {
37697 class X;
37698
37699
37700
37701
37702
37703
37704
37705 union function_buffer
37706 {
37707
37708 void* obj_ptr;
37709
37710
37711
37712 const void* const_obj_ptr;
37713
37714
37715 mutable void (*func_ptr)();
37716
37717
37718 struct bound_memfunc_ptr_t {
37719 void (X::*memfunc_ptr)(int);
37720 void* obj_ptr;
37721 } bound_memfunc_ptr;
37722
37723
37724 mutable char data;
37725 };
37726
37727
37728
37729
37730
37731
37732
37733 struct unusable
37734 {
37735 unusable() {}
37736 template<typename T> unusable(const T&) {}
37737 };
37738
37739
37740
37741
37742
37743 template<typename T> struct function_return_type { typedef T type; };
37744
37745 template<>
37746 struct function_return_type<void>
37747 {
37748 typedef unusable type;
37749 };
37750
37751
37752 enum functor_manager_operation_type {
37753 clone_functor_tag,
37754 destroy_functor_tag,
37755 check_functor_type_tag,
37756 get_functor_type_tag
37757 };
37758
37759
37760 struct function_ptr_tag {};
37761 struct function_obj_tag {};
37762 struct member_ptr_tag {};
37763 struct function_obj_ref_tag {};
37764
37765 template<typename F>
37766 class get_function_tag
37767 {
37768 typedef typename mpl::if_c<(is_pointer<F>::value),
37769 function_ptr_tag,
37770 function_obj_tag>::type ptr_or_obj_tag;
37771
37772 typedef typename mpl::if_c<(is_member_pointer<F>::value),
37773 member_ptr_tag,
37774 ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag;
37775
37776 typedef typename mpl::if_c<(is_reference_wrapper<F>::value),
37777 function_obj_ref_tag,
37778 ptr_or_obj_or_mem_tag>::type or_ref_tag;
37779
37780 public:
37781 typedef or_ref_tag type;
37782 };
37783
37784
37785
37786 template<typename F>
37787 struct reference_manager
37788 {
37789 static inline void
37790 get(const function_buffer& in_buffer, function_buffer& out_buffer,
37791 functor_manager_operation_type op)
37792 {
37793 switch (op) {
37794 case clone_functor_tag:
37795 out_buffer.obj_ptr = in_buffer.obj_ptr;
37796 return;
37797
37798 case destroy_functor_tag:
37799 out_buffer.obj_ptr = 0;
37800 return;
37801
37802 case check_functor_type_tag:
37803 {
37804
37805
37806
37807 const std::type_info& check_type =
37808 *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
37809 if ((std::strcmp((check_type).name(),(typeid(F)).name()) == 0))
37810 out_buffer.obj_ptr = in_buffer.obj_ptr;
37811 else
37812 out_buffer.obj_ptr = 0;
37813 }
37814 return;
37815
37816 case get_functor_type_tag:
37817 out_buffer.const_obj_ptr = &typeid(F);
37818 return;
37819 }
37820 }
37821 };
37822
37823
37824
37825
37826
37827 template<typename F>
37828 struct function_allows_small_object_optimization
37829 {
37830 static const bool value = ((sizeof(F) <= sizeof(function_buffer) && (alignment_of<function_buffer>::value % alignment_of<F>::value == 0)));
37831
37832
37833
37834
37835 };
37836
37837
37838
37839
37840
37841 template<typename Functor, typename Allocator>
37842 struct functor_manager
37843 {
37844 private:
37845 typedef Functor functor_type;
37846
37847
37848 static inline void
37849 manager(const function_buffer& in_buffer, function_buffer& out_buffer,
37850 functor_manager_operation_type op, function_ptr_tag)
37851 {
37852 if (op == clone_functor_tag)
37853 out_buffer.func_ptr = in_buffer.func_ptr;
37854 else if (op == destroy_functor_tag)
37855 out_buffer.func_ptr = 0;
37856 else {
37857 const std::type_info& check_type =
37858 *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
37859 if ((std::strcmp((check_type).name(),(typeid(Functor)).name()) == 0))
37860 out_buffer.obj_ptr = &in_buffer.func_ptr;
37861 else
37862 out_buffer.obj_ptr = 0;
37863 }
37864 }
37865
37866
37867 static inline void
37868 manager(const function_buffer& in_buffer, function_buffer& out_buffer,
37869 functor_manager_operation_type op, mpl::true_)
37870 {
37871 if (op == clone_functor_tag) {
37872 const functor_type* in_functor =
37873 reinterpret_cast<const functor_type*>(&in_buffer.data);
37874 new ((void*)&out_buffer.data) functor_type(*in_functor);
37875 } else if (op == destroy_functor_tag) {
37876
37877 reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor();
37878 } else {
37879 const std::type_info& check_type =
37880 *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
37881 if ((std::strcmp((check_type).name(),(typeid(Functor)).name()) == 0))
37882 out_buffer.obj_ptr = &in_buffer.data;
37883 else
37884 out_buffer.obj_ptr = 0;
37885 }
37886 }
37887
37888
37889 static inline void
37890 manager(const function_buffer& in_buffer, function_buffer& out_buffer,
37891 functor_manager_operation_type op, mpl::false_)
37892 {
37893
37894 typedef typename Allocator::template rebind<functor_type>::other
37895 allocator_type;
37896 typedef typename allocator_type::pointer pointer_type;
37897
37898
37899
37900
37901
37902 allocator_type allocator;
37903
37904
37905 if (op == clone_functor_tag) {
37906
37907
37908 const functor_type* f =
37909 (const functor_type*)(in_buffer.obj_ptr);
37910
37911
37912
37913 pointer_type copy = allocator.allocate(1);
37914 allocator.construct(copy, *f);
37915
37916
37917 functor_type* new_f = static_cast<functor_type*>(copy);
37918
37919
37920
37921 out_buffer.obj_ptr = new_f;
37922 } else if (op == destroy_functor_tag) {
37923
37924 functor_type* f =
37925 static_cast<functor_type*>(out_buffer.obj_ptr);
37926
37927
37928
37929
37930 pointer_type victim = static_cast<pointer_type>(f);
37931
37932
37933 allocator.destroy(victim);
37934 allocator.deallocate(victim, 1);
37935
37936
37937
37938 out_buffer.obj_ptr = 0;
37939 } else {
37940 const std::type_info& check_type =
37941 *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
37942 if ((std::strcmp((check_type).name(),(typeid(Functor)).name()) == 0))
37943 out_buffer.obj_ptr = in_buffer.obj_ptr;
37944 else
37945 out_buffer.obj_ptr = 0;
37946 }
37947 }
37948
37949
37950
37951
37952 static inline void
37953 manager(const function_buffer& in_buffer, function_buffer& out_buffer,
37954 functor_manager_operation_type op, function_obj_tag)
37955 {
37956 manager(in_buffer, out_buffer, op,
37957 mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
37958 }
37959
37960 public:
37961
37962
37963 static inline void
37964 manage(const function_buffer& in_buffer, function_buffer& out_buffer,
37965 functor_manager_operation_type op)
37966 {
37967 typedef typename get_function_tag<functor_type>::type tag_type;
37968 switch (op) {
37969 case get_functor_type_tag:
37970 out_buffer.const_obj_ptr = &typeid(functor_type);
37971 return;
37972
37973 default:
37974 manager(in_buffer, out_buffer, op, tag_type());
37975 return;
37976 }
37977 }
37978 };
37979
37980
37981 struct useless_clear_type {};
37982# 457 "/usr/include/boost/function/function_base.hpp" 3 4
37983 struct vtable_base
37984 {
37985 vtable_base() : manager(0) { }
37986 void (*manager)(const function_buffer& in_buffer,
37987 function_buffer& out_buffer,
37988 functor_manager_operation_type op);
37989 };
37990 }
37991 }
37992
37993
37994
37995
37996
37997
37998
37999class function_base
38000{
38001public:
38002 function_base() : vtable(0) { }
38003
38004
38005 bool empty() const { return !vtable; }
38006
38007
38008
38009 const std::type_info& target_type() const
38010 {
38011 if (!vtable) return typeid(void);
38012
38013 detail::function::function_buffer type;
38014 vtable->manager(functor, type, detail::function::get_functor_type_tag);
38015 return *static_cast<const std::type_info*>(type.const_obj_ptr);
38016 }
38017
38018 template<typename Functor>
38019 Functor* target()
38020 {
38021 if (!vtable) return 0;
38022
38023 detail::function::function_buffer type_result;
38024 type_result.const_obj_ptr = &typeid(Functor);
38025 vtable->manager(functor, type_result,
38026 detail::function::check_functor_type_tag);
38027 return static_cast<Functor*>(type_result.obj_ptr);
38028 }
38029
38030 template<typename Functor>
38031
38032
38033
38034 const Functor* target() const
38035
38036 {
38037 if (!vtable) return 0;
38038
38039 detail::function::function_buffer type_result;
38040 type_result.const_obj_ptr = &typeid(Functor);
38041 vtable->manager(functor, type_result,
38042 detail::function::check_functor_type_tag);
38043
38044
38045 return (const Functor*)(type_result.obj_ptr);
38046 }
38047
38048 template<typename F>
38049 bool contains(const F& f) const
38050 {
38051
38052
38053
38054 if (const F* fp = this->template target<F>())
38055
38056 {
38057 return function_equal(*fp, f);
38058 } else {
38059 return false;
38060 }
38061 }
38062# 560 "/usr/include/boost/function/function_base.hpp" 3 4
38063public:
38064 detail::function::vtable_base* vtable;
38065 mutable detail::function::function_buffer functor;
38066};
38067
38068
38069
38070
38071
38072class bad_function_call : public std::runtime_error
38073{
38074public:
38075 bad_function_call() : std::runtime_error("call to empty boost::function") {}
38076};
38077
38078
38079inline bool operator==(const function_base& f,
38080 detail::function::useless_clear_type*)
38081{
38082 return f.empty();
38083}
38084
38085inline bool operator!=(const function_base& f,
38086 detail::function::useless_clear_type*)
38087{
38088 return !f.empty();
38089}
38090
38091inline bool operator==(detail::function::useless_clear_type*,
38092 const function_base& f)
38093{
38094 return f.empty();
38095}
38096
38097inline bool operator!=(detail::function::useless_clear_type*,
38098 const function_base& f)
38099{
38100 return !f.empty();
38101}
38102# 636 "/usr/include/boost/function/function_base.hpp" 3 4
38103template<typename Functor>
38104 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38105 operator==(const function_base& f, Functor g)
38106 {
38107 if (const Functor* fp = f.template target<Functor>())
38108 return function_equal(*fp, g);
38109 else return false;
38110 }
38111
38112template<typename Functor>
38113 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38114 operator==(Functor g, const function_base& f)
38115 {
38116 if (const Functor* fp = f.template target<Functor>())
38117 return function_equal(g, *fp);
38118 else return false;
38119 }
38120
38121template<typename Functor>
38122 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38123 operator!=(const function_base& f, Functor g)
38124 {
38125 if (const Functor* fp = f.template target<Functor>())
38126 return !function_equal(*fp, g);
38127 else return true;
38128 }
38129
38130template<typename Functor>
38131 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38132 operator!=(Functor g, const function_base& f)
38133 {
38134 if (const Functor* fp = f.template target<Functor>())
38135 return !function_equal(g, *fp);
38136 else return true;
38137 }
38138
38139
38140template<typename Functor>
38141 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38142 operator==(const function_base& f, reference_wrapper<Functor> g)
38143 {
38144 if (const Functor* fp = f.template target<Functor>())
38145 return fp == g.get_pointer();
38146 else return false;
38147 }
38148
38149template<typename Functor>
38150 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38151 operator==(reference_wrapper<Functor> g, const function_base& f)
38152 {
38153 if (const Functor* fp = f.template target<Functor>())
38154 return g.get_pointer() == fp;
38155 else return false;
38156 }
38157
38158template<typename Functor>
38159 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38160 operator!=(const function_base& f, reference_wrapper<Functor> g)
38161 {
38162 if (const Functor* fp = f.template target<Functor>())
38163 return fp != g.get_pointer();
38164 else return true;
38165 }
38166
38167template<typename Functor>
38168 typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type
38169 operator!=(reference_wrapper<Functor> g, const function_base& f)
38170 {
38171 if (const Functor* fp = f.template target<Functor>())
38172 return g.get_pointer() != fp;
38173 else return true;
38174 }
38175
38176
38177
38178namespace detail {
38179 namespace function {
38180 inline bool has_empty_target(const function_base* f)
38181 {
38182 return f->empty();
38183 }
38184
38185
38186
38187
38188
38189
38190
38191 inline bool has_empty_target(...)
38192 {
38193 return false;
38194 }
38195
38196 }
38197}
38198}
38199# 17 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
38200# 1 "/usr/include/boost/mem_fn.hpp" 1 3 4
38201# 25 "/usr/include/boost/mem_fn.hpp" 3 4
38202# 1 "/usr/include/boost/get_pointer.hpp" 1 3 4
38203# 10 "/usr/include/boost/get_pointer.hpp" 3 4
38204namespace boost {
38205
38206
38207
38208template<class T> T * get_pointer(T * p)
38209{
38210 return p;
38211}
38212
38213
38214
38215template<class T> T * get_pointer(std::auto_ptr<T> const& p)
38216{
38217 return p.get();
38218}
38219
38220
38221}
38222# 26 "/usr/include/boost/mem_fn.hpp" 2 3 4
38223
38224
38225namespace boost
38226{
38227# 207 "/usr/include/boost/mem_fn.hpp" 3 4
38228namespace _mfi
38229{
38230
38231
38232
38233
38234
38235
38236# 1 "/usr/include/boost/bind/mem_fn_template.hpp" 1 3 4
38237# 21 "/usr/include/boost/bind/mem_fn_template.hpp" 3 4
38238template<class R, class T > class mf0
38239{
38240public:
38241
38242 typedef R result_type;
38243 typedef T * argument_type;
38244
38245private:
38246
38247 typedef R ( T::*F) ();
38248 F f_;
38249
38250 template<class U> R call(U & u, T const *) const
38251 {
38252 return (u.*f_)();
38253 }
38254
38255 template<class U> R call(U & u, void const *) const
38256 {
38257 return (get_pointer(u)->*f_)();
38258 }
38259
38260public:
38261
38262 explicit mf0(F f): f_(f) {}
38263
38264 R operator()(T * p) const
38265 {
38266 return (p->*f_)();
38267 }
38268
38269 template<class U> R operator()(U & u) const
38270 {
38271 return call(u, &u);
38272 }
38273
38274
38275
38276 template<class U> R operator()(U const & u) const
38277 {
38278 return call(u, &u);
38279 }
38280
38281
38282
38283 R operator()(T & t) const
38284 {
38285 return (t.*f_)();
38286 }
38287
38288 bool operator==(mf0 const & rhs) const
38289 {
38290 return f_ == rhs.f_;
38291 }
38292
38293 bool operator!=(mf0 const & rhs) const
38294 {
38295 return f_ != rhs.f_;
38296 }
38297};
38298
38299
38300
38301template<class R, class T > class cmf0
38302{
38303public:
38304
38305 typedef R result_type;
38306 typedef T const * argument_type;
38307
38308private:
38309
38310 typedef R ( T::*F) () const;
38311 F f_;
38312
38313 template<class U> R call(U & u, T const *) const
38314 {
38315 return (u.*f_)();
38316 }
38317
38318 template<class U> R call(U & u, void const *) const
38319 {
38320 return (get_pointer(u)->*f_)();
38321 }
38322
38323public:
38324
38325 explicit cmf0(F f): f_(f) {}
38326
38327 template<class U> R operator()(U const & u) const
38328 {
38329 return call(u, &u);
38330 }
38331
38332 R operator()(T const & t) const
38333 {
38334 return (t.*f_)();
38335 }
38336
38337 bool operator==(cmf0 const & rhs) const
38338 {
38339 return f_ == rhs.f_;
38340 }
38341
38342 bool operator!=(cmf0 const & rhs) const
38343 {
38344 return f_ != rhs.f_;
38345 }
38346};
38347
38348
38349
38350template<class R, class T, class A1 > class mf1
38351{
38352public:
38353
38354 typedef R result_type;
38355 typedef T * first_argument_type;
38356 typedef A1 second_argument_type;
38357
38358private:
38359
38360 typedef R ( T::*F) (A1);
38361 F f_;
38362
38363 template<class U, class B1> R call(U & u, T const *, B1 & b1) const
38364 {
38365 return (u.*f_)(b1);
38366 }
38367
38368 template<class U, class B1> R call(U & u, void const *, B1 & b1) const
38369 {
38370 return (get_pointer(u)->*f_)(b1);
38371 }
38372
38373public:
38374
38375 explicit mf1(F f): f_(f) {}
38376
38377 R operator()(T * p, A1 a1) const
38378 {
38379 return (p->*f_)(a1);
38380 }
38381
38382 template<class U> R operator()(U & u, A1 a1) const
38383 {
38384 return call(u, &u, a1);
38385 }
38386
38387
38388
38389 template<class U> R operator()(U const & u, A1 a1) const
38390 {
38391 return call(u, &u, a1);
38392 }
38393
38394
38395
38396 R operator()(T & t, A1 a1) const
38397 {
38398 return (t.*f_)(a1);
38399 }
38400
38401 bool operator==(mf1 const & rhs) const
38402 {
38403 return f_ == rhs.f_;
38404 }
38405
38406 bool operator!=(mf1 const & rhs) const
38407 {
38408 return f_ != rhs.f_;
38409 }
38410};
38411
38412
38413
38414template<class R, class T, class A1 > class cmf1
38415{
38416public:
38417
38418 typedef R result_type;
38419 typedef T const * first_argument_type;
38420 typedef A1 second_argument_type;
38421
38422private:
38423
38424 typedef R ( T::*F) (A1) const;
38425 F f_;
38426
38427 template<class U, class B1> R call(U & u, T const *, B1 & b1) const
38428 {
38429 return (u.*f_)(b1);
38430 }
38431
38432 template<class U, class B1> R call(U & u, void const *, B1 & b1) const
38433 {
38434 return (get_pointer(u)->*f_)(b1);
38435 }
38436
38437public:
38438
38439 explicit cmf1(F f): f_(f) {}
38440
38441 template<class U> R operator()(U const & u, A1 a1) const
38442 {
38443 return call(u, &u, a1);
38444 }
38445
38446 R operator()(T const & t, A1 a1) const
38447 {
38448 return (t.*f_)(a1);
38449 }
38450
38451 bool operator==(cmf1 const & rhs) const
38452 {
38453 return f_ == rhs.f_;
38454 }
38455
38456 bool operator!=(cmf1 const & rhs) const
38457 {
38458 return f_ != rhs.f_;
38459 }
38460};
38461
38462
38463
38464template<class R, class T, class A1, class A2 > class mf2
38465{
38466public:
38467
38468 typedef R result_type;
38469
38470private:
38471
38472 typedef R ( T::*F) (A1, A2);
38473 F f_;
38474
38475 template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
38476 {
38477 return (u.*f_)(b1, b2);
38478 }
38479
38480 template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
38481 {
38482 return (get_pointer(u)->*f_)(b1, b2);
38483 }
38484
38485public:
38486
38487 explicit mf2(F f): f_(f) {}
38488
38489 R operator()(T * p, A1 a1, A2 a2) const
38490 {
38491 return (p->*f_)(a1, a2);
38492 }
38493
38494 template<class U> R operator()(U & u, A1 a1, A2 a2) const
38495 {
38496 return call(u, &u, a1, a2);
38497 }
38498
38499
38500
38501 template<class U> R operator()(U const & u, A1 a1, A2 a2) const
38502 {
38503 return call(u, &u, a1, a2);
38504 }
38505
38506
38507
38508 R operator()(T & t, A1 a1, A2 a2) const
38509 {
38510 return (t.*f_)(a1, a2);
38511 }
38512
38513 bool operator==(mf2 const & rhs) const
38514 {
38515 return f_ == rhs.f_;
38516 }
38517
38518 bool operator!=(mf2 const & rhs) const
38519 {
38520 return f_ != rhs.f_;
38521 }
38522};
38523
38524
38525
38526template<class R, class T, class A1, class A2 > class cmf2
38527{
38528public:
38529
38530 typedef R result_type;
38531
38532private:
38533
38534 typedef R ( T::*F) (A1, A2) const;
38535 F f_;
38536
38537 template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
38538 {
38539 return (u.*f_)(b1, b2);
38540 }
38541
38542 template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
38543 {
38544 return (get_pointer(u)->*f_)(b1, b2);
38545 }
38546
38547public:
38548
38549 explicit cmf2(F f): f_(f) {}
38550
38551 template<class U> R operator()(U const & u, A1 a1, A2 a2) const
38552 {
38553 return call(u, &u, a1, a2);
38554 }
38555
38556 R operator()(T const & t, A1 a1, A2 a2) const
38557 {
38558 return (t.*f_)(a1, a2);
38559 }
38560
38561 bool operator==(cmf2 const & rhs) const
38562 {
38563 return f_ == rhs.f_;
38564 }
38565
38566 bool operator!=(cmf2 const & rhs) const
38567 {
38568 return f_ != rhs.f_;
38569 }
38570};
38571
38572
38573
38574template<class R, class T, class A1, class A2, class A3 > class mf3
38575{
38576public:
38577
38578 typedef R result_type;
38579
38580private:
38581
38582 typedef R ( T::*F) (A1, A2, A3);
38583 F f_;
38584
38585 template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
38586 {
38587 return (u.*f_)(b1, b2, b3);
38588 }
38589
38590 template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
38591 {
38592 return (get_pointer(u)->*f_)(b1, b2, b3);
38593 }
38594
38595public:
38596
38597 explicit mf3(F f): f_(f) {}
38598
38599 R operator()(T * p, A1 a1, A2 a2, A3 a3) const
38600 {
38601 return (p->*f_)(a1, a2, a3);
38602 }
38603
38604 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
38605 {
38606 return call(u, &u, a1, a2, a3);
38607 }
38608
38609
38610
38611 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
38612 {
38613 return call(u, &u, a1, a2, a3);
38614 }
38615
38616
38617
38618 R operator()(T & t, A1 a1, A2 a2, A3 a3) const
38619 {
38620 return (t.*f_)(a1, a2, a3);
38621 }
38622
38623 bool operator==(mf3 const & rhs) const
38624 {
38625 return f_ == rhs.f_;
38626 }
38627
38628 bool operator!=(mf3 const & rhs) const
38629 {
38630 return f_ != rhs.f_;
38631 }
38632};
38633
38634
38635
38636template<class R, class T, class A1, class A2, class A3 > class cmf3
38637{
38638public:
38639
38640 typedef R result_type;
38641
38642private:
38643
38644 typedef R ( T::*F) (A1, A2, A3) const;
38645 F f_;
38646
38647 template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
38648 {
38649 return (u.*f_)(b1, b2, b3);
38650 }
38651
38652 template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
38653 {
38654 return (get_pointer(u)->*f_)(b1, b2, b3);
38655 }
38656
38657public:
38658
38659 explicit cmf3(F f): f_(f) {}
38660
38661 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
38662 {
38663 return call(u, &u, a1, a2, a3);
38664 }
38665
38666 R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
38667 {
38668 return (t.*f_)(a1, a2, a3);
38669 }
38670
38671 bool operator==(cmf3 const & rhs) const
38672 {
38673 return f_ == rhs.f_;
38674 }
38675
38676 bool operator!=(cmf3 const & rhs) const
38677 {
38678 return f_ != rhs.f_;
38679 }
38680};
38681
38682
38683
38684template<class R, class T, class A1, class A2, class A3, class A4 > class mf4
38685{
38686public:
38687
38688 typedef R result_type;
38689
38690private:
38691
38692 typedef R ( T::*F) (A1, A2, A3, A4);
38693 F f_;
38694
38695 template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
38696 {
38697 return (u.*f_)(b1, b2, b3, b4);
38698 }
38699
38700 template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
38701 {
38702 return (get_pointer(u)->*f_)(b1, b2, b3, b4);
38703 }
38704
38705public:
38706
38707 explicit mf4(F f): f_(f) {}
38708
38709 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const
38710 {
38711 return (p->*f_)(a1, a2, a3, a4);
38712 }
38713
38714 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
38715 {
38716 return call(u, &u, a1, a2, a3, a4);
38717 }
38718
38719
38720
38721 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
38722 {
38723 return call(u, &u, a1, a2, a3, a4);
38724 }
38725
38726
38727
38728 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const
38729 {
38730 return (t.*f_)(a1, a2, a3, a4);
38731 }
38732
38733 bool operator==(mf4 const & rhs) const
38734 {
38735 return f_ == rhs.f_;
38736 }
38737
38738 bool operator!=(mf4 const & rhs) const
38739 {
38740 return f_ != rhs.f_;
38741 }
38742};
38743
38744
38745
38746template<class R, class T, class A1, class A2, class A3, class A4 > class cmf4
38747{
38748public:
38749
38750 typedef R result_type;
38751
38752private:
38753
38754 typedef R ( T::*F) (A1, A2, A3, A4) const;
38755 F f_;
38756
38757 template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
38758 {
38759 return (u.*f_)(b1, b2, b3, b4);
38760 }
38761
38762 template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
38763 {
38764 return (get_pointer(u)->*f_)(b1, b2, b3, b4);
38765 }
38766
38767public:
38768
38769 explicit cmf4(F f): f_(f) {}
38770
38771 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
38772 {
38773 return call(u, &u, a1, a2, a3, a4);
38774 }
38775
38776 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
38777 {
38778 return (t.*f_)(a1, a2, a3, a4);
38779 }
38780
38781 bool operator==(cmf4 const & rhs) const
38782 {
38783 return f_ == rhs.f_;
38784 }
38785
38786 bool operator!=(cmf4 const & rhs) const
38787 {
38788 return f_ != rhs.f_;
38789 }
38790};
38791
38792
38793
38794template<class R, class T, class A1, class A2, class A3, class A4, class A5 > class mf5
38795{
38796public:
38797
38798 typedef R result_type;
38799
38800private:
38801
38802 typedef R ( T::*F) (A1, A2, A3, A4, A5);
38803 F f_;
38804
38805 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
38806 {
38807 return (u.*f_)(b1, b2, b3, b4, b5);
38808 }
38809
38810 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
38811 {
38812 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
38813 }
38814
38815public:
38816
38817 explicit mf5(F f): f_(f) {}
38818
38819 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
38820 {
38821 return (p->*f_)(a1, a2, a3, a4, a5);
38822 }
38823
38824 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
38825 {
38826 return call(u, &u, a1, a2, a3, a4, a5);
38827 }
38828
38829
38830
38831 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
38832 {
38833 return call(u, &u, a1, a2, a3, a4, a5);
38834 }
38835
38836
38837
38838 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
38839 {
38840 return (t.*f_)(a1, a2, a3, a4, a5);
38841 }
38842
38843 bool operator==(mf5 const & rhs) const
38844 {
38845 return f_ == rhs.f_;
38846 }
38847
38848 bool operator!=(mf5 const & rhs) const
38849 {
38850 return f_ != rhs.f_;
38851 }
38852};
38853
38854
38855
38856template<class R, class T, class A1, class A2, class A3, class A4, class A5 > class cmf5
38857{
38858public:
38859
38860 typedef R result_type;
38861
38862private:
38863
38864 typedef R ( T::*F) (A1, A2, A3, A4, A5) const;
38865 F f_;
38866
38867 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
38868 {
38869 return (u.*f_)(b1, b2, b3, b4, b5);
38870 }
38871
38872 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
38873 {
38874 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
38875 }
38876
38877public:
38878
38879 explicit cmf5(F f): f_(f) {}
38880
38881 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
38882 {
38883 return call(u, &u, a1, a2, a3, a4, a5);
38884 }
38885
38886 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
38887 {
38888 return (t.*f_)(a1, a2, a3, a4, a5);
38889 }
38890
38891 bool operator==(cmf5 const & rhs) const
38892 {
38893 return f_ == rhs.f_;
38894 }
38895
38896 bool operator!=(cmf5 const & rhs) const
38897 {
38898 return f_ != rhs.f_;
38899 }
38900};
38901
38902
38903
38904template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 > class mf6
38905{
38906public:
38907
38908 typedef R result_type;
38909
38910private:
38911
38912 typedef R ( T::*F) (A1, A2, A3, A4, A5, A6);
38913 F f_;
38914
38915 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
38916 {
38917 return (u.*f_)(b1, b2, b3, b4, b5, b6);
38918 }
38919
38920 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
38921 {
38922 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
38923 }
38924
38925public:
38926
38927 explicit mf6(F f): f_(f) {}
38928
38929 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
38930 {
38931 return (p->*f_)(a1, a2, a3, a4, a5, a6);
38932 }
38933
38934 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
38935 {
38936 return call(u, &u, a1, a2, a3, a4, a5, a6);
38937 }
38938
38939
38940
38941 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
38942 {
38943 return call(u, &u, a1, a2, a3, a4, a5, a6);
38944 }
38945
38946
38947
38948 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
38949 {
38950 return (t.*f_)(a1, a2, a3, a4, a5, a6);
38951 }
38952
38953 bool operator==(mf6 const & rhs) const
38954 {
38955 return f_ == rhs.f_;
38956 }
38957
38958 bool operator!=(mf6 const & rhs) const
38959 {
38960 return f_ != rhs.f_;
38961 }
38962};
38963
38964
38965
38966template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 > class cmf6
38967{
38968public:
38969
38970 typedef R result_type;
38971
38972private:
38973
38974 typedef R ( T::*F) (A1, A2, A3, A4, A5, A6) const;
38975 F f_;
38976
38977 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
38978 {
38979 return (u.*f_)(b1, b2, b3, b4, b5, b6);
38980 }
38981
38982 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
38983 {
38984 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
38985 }
38986
38987public:
38988
38989 explicit cmf6(F f): f_(f) {}
38990
38991 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
38992 {
38993 return call(u, &u, a1, a2, a3, a4, a5, a6);
38994 }
38995
38996 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
38997 {
38998 return (t.*f_)(a1, a2, a3, a4, a5, a6);
38999 }
39000
39001 bool operator==(cmf6 const & rhs) const
39002 {
39003 return f_ == rhs.f_;
39004 }
39005
39006 bool operator!=(cmf6 const & rhs) const
39007 {
39008 return f_ != rhs.f_;
39009 }
39010};
39011
39012
39013
39014template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class mf7
39015{
39016public:
39017
39018 typedef R result_type;
39019
39020private:
39021
39022 typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7);
39023 F f_;
39024
39025 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
39026 {
39027 return (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
39028 }
39029
39030 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
39031 {
39032 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
39033 }
39034
39035public:
39036
39037 explicit mf7(F f): f_(f) {}
39038
39039 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
39040 {
39041 return (p->*f_)(a1, a2, a3, a4, a5, a6, a7);
39042 }
39043
39044 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
39045 {
39046 return call(u, &u, a1, a2, a3, a4, a5, a6, a7);
39047 }
39048
39049
39050
39051 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
39052 {
39053 return call(u, &u, a1, a2, a3, a4, a5, a6, a7);
39054 }
39055
39056
39057
39058 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
39059 {
39060 return (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
39061 }
39062
39063 bool operator==(mf7 const & rhs) const
39064 {
39065 return f_ == rhs.f_;
39066 }
39067
39068 bool operator!=(mf7 const & rhs) const
39069 {
39070 return f_ != rhs.f_;
39071 }
39072};
39073
39074
39075
39076template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class cmf7
39077{
39078public:
39079
39080 typedef R result_type;
39081
39082private:
39083
39084 typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7) const;
39085 F f_;
39086
39087 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
39088 {
39089 return (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
39090 }
39091
39092 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
39093 {
39094 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
39095 }
39096
39097public:
39098
39099 explicit cmf7(F f): f_(f) {}
39100
39101 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
39102 {
39103 return call(u, &u, a1, a2, a3, a4, a5, a6, a7);
39104 }
39105
39106 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
39107 {
39108 return (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
39109 }
39110
39111 bool operator==(cmf7 const & rhs) const
39112 {
39113 return f_ == rhs.f_;
39114 }
39115
39116 bool operator!=(cmf7 const & rhs) const
39117 {
39118 return f_ != rhs.f_;
39119 }
39120};
39121
39122
39123
39124template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class mf8
39125{
39126public:
39127
39128 typedef R result_type;
39129
39130private:
39131
39132 typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7, A8);
39133 F f_;
39134
39135 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
39136 {
39137 return (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
39138 }
39139
39140 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
39141 {
39142 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
39143 }
39144
39145public:
39146
39147 explicit mf8(F f): f_(f) {}
39148
39149 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39150 {
39151 return (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
39152 }
39153
39154 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39155 {
39156 return call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
39157 }
39158
39159
39160
39161 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39162 {
39163 return call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
39164 }
39165
39166
39167
39168 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39169 {
39170 return (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
39171 }
39172
39173 bool operator==(mf8 const & rhs) const
39174 {
39175 return f_ == rhs.f_;
39176 }
39177
39178 bool operator!=(mf8 const & rhs) const
39179 {
39180 return f_ != rhs.f_;
39181 }
39182};
39183
39184
39185
39186template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class cmf8
39187{
39188public:
39189
39190 typedef R result_type;
39191
39192private:
39193
39194 typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const;
39195 F f_;
39196
39197 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
39198 {
39199 return (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
39200 }
39201
39202 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
39203 {
39204 return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
39205 }
39206
39207public:
39208
39209 explicit cmf8(F f): f_(f) {}
39210
39211 R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39212 {
39213 return (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
39214 }
39215
39216 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39217 {
39218 return call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
39219 }
39220
39221 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
39222 {
39223 return (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
39224 }
39225
39226 bool operator==(cmf8 const & rhs) const
39227 {
39228 return f_ == rhs.f_;
39229 }
39230
39231 bool operator!=(cmf8 const & rhs) const
39232 {
39233 return f_ != rhs.f_;
39234 }
39235};
39236# 216 "/usr/include/boost/mem_fn.hpp" 2 3 4
39237# 258 "/usr/include/boost/mem_fn.hpp" 3 4
39238}
39239# 268 "/usr/include/boost/mem_fn.hpp" 3 4
39240# 1 "/usr/include/boost/bind/mem_fn_cc.hpp" 1 3 4
39241# 15 "/usr/include/boost/bind/mem_fn_cc.hpp" 3 4
39242template<class R, class T> _mfi::mf0<R, T> mem_fn(R ( T::*f) ())
39243{
39244 return _mfi::mf0<R, T>(f);
39245}
39246
39247template<class R, class T> _mfi::cmf0<R, T> mem_fn(R ( T::*f) () const)
39248{
39249 return _mfi::cmf0<R, T>(f);
39250}
39251
39252template<class R, class T, class A1> _mfi::mf1<R, T, A1> mem_fn(R ( T::*f) (A1))
39253{
39254 return _mfi::mf1<R, T, A1>(f);
39255}
39256
39257template<class R, class T, class A1> _mfi::cmf1<R, T, A1> mem_fn(R ( T::*f) (A1) const)
39258{
39259 return _mfi::cmf1<R, T, A1>(f);
39260}
39261
39262template<class R, class T, class A1, class A2> _mfi::mf2<R, T, A1, A2> mem_fn(R ( T::*f) (A1, A2))
39263{
39264 return _mfi::mf2<R, T, A1, A2>(f);
39265}
39266
39267template<class R, class T, class A1, class A2> _mfi::cmf2<R, T, A1, A2> mem_fn(R ( T::*f) (A1, A2) const)
39268{
39269 return _mfi::cmf2<R, T, A1, A2>(f);
39270}
39271
39272template<class R, class T, class A1, class A2, class A3> _mfi::mf3<R, T, A1, A2, A3> mem_fn(R ( T::*f) (A1, A2, A3))
39273{
39274 return _mfi::mf3<R, T, A1, A2, A3>(f);
39275}
39276
39277template<class R, class T, class A1, class A2, class A3> _mfi::cmf3<R, T, A1, A2, A3> mem_fn(R ( T::*f) (A1, A2, A3) const)
39278{
39279 return _mfi::cmf3<R, T, A1, A2, A3>(f);
39280}
39281
39282template<class R, class T, class A1, class A2, class A3, class A4> _mfi::mf4<R, T, A1, A2, A3, A4> mem_fn(R ( T::*f) (A1, A2, A3, A4))
39283{
39284 return _mfi::mf4<R, T, A1, A2, A3, A4>(f);
39285}
39286
39287template<class R, class T, class A1, class A2, class A3, class A4> _mfi::cmf4<R, T, A1, A2, A3, A4> mem_fn(R ( T::*f) (A1, A2, A3, A4) const)
39288{
39289 return _mfi::cmf4<R, T, A1, A2, A3, A4>(f);
39290}
39291
39292template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::mf5<R, T, A1, A2, A3, A4, A5> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5))
39293{
39294 return _mfi::mf5<R, T, A1, A2, A3, A4, A5>(f);
39295}
39296
39297template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::cmf5<R, T, A1, A2, A3, A4, A5> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5) const)
39298{
39299 return _mfi::cmf5<R, T, A1, A2, A3, A4, A5>(f);
39300}
39301
39302template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::mf6<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6))
39303{
39304 return _mfi::mf6<R, T, A1, A2, A3, A4, A5, A6>(f);
39305}
39306
39307template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::cmf6<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6) const)
39308{
39309 return _mfi::cmf6<R, T, A1, A2, A3, A4, A5, A6>(f);
39310}
39311
39312template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::mf7<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7))
39313{
39314 return _mfi::mf7<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
39315}
39316
39317template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::cmf7<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7) const)
39318{
39319 return _mfi::cmf7<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
39320}
39321
39322template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::mf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7, A8))
39323{
39324 return _mfi::mf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
39325}
39326
39327template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::cmf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const)
39328{
39329 return _mfi::cmf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
39330}
39331# 269 "/usr/include/boost/mem_fn.hpp" 2 3 4
39332# 311 "/usr/include/boost/mem_fn.hpp" 3 4
39333namespace _mfi
39334{
39335
39336template<class R, class T> class dm
39337{
39338public:
39339
39340 typedef R const & result_type;
39341 typedef T const * argument_type;
39342
39343private:
39344
39345 typedef R (T::*F);
39346 F f_;
39347
39348 template<class U> R const & call(U & u, T const *) const
39349 {
39350 return (u.*f_);
39351 }
39352
39353 template<class U> R const & call(U & u, void const *) const
39354 {
39355 return (get_pointer(u)->*f_);
39356 }
39357
39358public:
39359
39360 explicit dm(F f): f_(f) {}
39361
39362 R & operator()(T * p) const
39363 {
39364 return (p->*f_);
39365 }
39366
39367 R const & operator()(T const * p) const
39368 {
39369 return (p->*f_);
39370 }
39371
39372 template<class U> R const & operator()(U const & u) const
39373 {
39374 return call(u, &u);
39375 }
39376
39377
39378
39379 R & operator()(T & t) const
39380 {
39381 return (t.*f_);
39382 }
39383
39384 R const & operator()(T const & t) const
39385 {
39386 return (t.*f_);
39387 }
39388
39389
39390
39391 bool operator==(dm const & rhs) const
39392 {
39393 return f_ == rhs.f_;
39394 }
39395
39396 bool operator!=(dm const & rhs) const
39397 {
39398 return f_ != rhs.f_;
39399 }
39400};
39401
39402}
39403
39404template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f)
39405{
39406 return _mfi::dm<R, T>(f);
39407}
39408
39409}
39410# 18 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
39411
39412# 1 "/usr/include/boost/preprocessor/enum.hpp" 1 3 4
39413# 15 "/usr/include/boost/preprocessor/enum.hpp" 3 4
39414# 1 "/usr/include/boost/preprocessor/repetition/enum.hpp" 1 3 4
39415# 20 "/usr/include/boost/preprocessor/repetition/enum.hpp" 3 4
39416# 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
39417# 21 "/usr/include/boost/preprocessor/repetition/enum.hpp" 2 3 4
39418
39419
39420
39421# 1 "/usr/include/boost/preprocessor/tuple/rem.hpp" 1 3 4
39422# 25 "/usr/include/boost/preprocessor/repetition/enum.hpp" 2 3 4
39423# 16 "/usr/include/boost/preprocessor/enum.hpp" 2 3 4
39424# 20 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
39425# 1 "/usr/include/boost/preprocessor/enum_params.hpp" 1 3 4
39426# 15 "/usr/include/boost/preprocessor/enum_params.hpp" 3 4
39427# 1 "/usr/include/boost/preprocessor/repetition/enum_params.hpp" 1 3 4
39428# 16 "/usr/include/boost/preprocessor/enum_params.hpp" 2 3 4
39429# 21 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
39430# 13 "/usr/include/boost/function/function_template.hpp" 2 3 4
39431# 83 "/usr/include/boost/function/function_template.hpp" 3 4
39432namespace boost {
39433 namespace detail {
39434 namespace function {
39435 template<
39436 typename FunctionPtr,
39437 typename R ,
39438 typename T0
39439 >
39440 struct function_invoker1
39441 {
39442 static R invoke(function_buffer& function_ptr ,
39443 T0 a0)
39444 {
39445 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
39446 return f( a0);
39447 }
39448 };
39449
39450 template<
39451 typename FunctionPtr,
39452 typename R ,
39453 typename T0
39454 >
39455 struct void_function_invoker1
39456 {
39457 static void
39458 invoke(function_buffer& function_ptr ,
39459 T0 a0)
39460
39461 {
39462 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
39463 f( a0);
39464 }
39465 };
39466
39467 template<
39468 typename FunctionObj,
39469 typename R ,
39470 typename T0
39471 >
39472 struct function_obj_invoker1
39473 {
39474 static R invoke(function_buffer& function_obj_ptr ,
39475 T0 a0)
39476
39477 {
39478 FunctionObj* f;
39479 if (function_allows_small_object_optimization<FunctionObj>::value)
39480 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
39481 else
39482 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
39483 return (*f)( a0);
39484 }
39485 };
39486
39487 template<
39488 typename FunctionObj,
39489 typename R ,
39490 typename T0
39491 >
39492 struct void_function_obj_invoker1
39493 {
39494 static void
39495 invoke(function_buffer& function_obj_ptr ,
39496 T0 a0)
39497
39498 {
39499 FunctionObj* f;
39500 if (function_allows_small_object_optimization<FunctionObj>::value)
39501 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
39502 else
39503 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
39504 (*f)( a0);
39505 }
39506 };
39507
39508 template<
39509 typename FunctionObj,
39510 typename R ,
39511 typename T0
39512 >
39513 struct function_ref_invoker1
39514 {
39515 static R invoke(function_buffer& function_obj_ptr ,
39516 T0 a0)
39517
39518 {
39519 FunctionObj* f =
39520 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
39521 return (*f)( a0);
39522 }
39523 };
39524
39525 template<
39526 typename FunctionObj,
39527 typename R ,
39528 typename T0
39529 >
39530 struct void_function_ref_invoker1
39531 {
39532 static void
39533 invoke(function_buffer& function_obj_ptr ,
39534 T0 a0)
39535
39536 {
39537 FunctionObj* f =
39538 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
39539 (*f)( a0);
39540 }
39541 };
39542
39543 template<
39544 typename FunctionPtr,
39545 typename R ,
39546 typename T0
39547 >
39548 struct get_function_invoker1
39549 {
39550 typedef typename mpl::if_c<(is_void<R>::value),
39551 void_function_invoker1<
39552 FunctionPtr,
39553 R ,
39554 T0
39555 >,
39556 function_invoker1<
39557 FunctionPtr,
39558 R ,
39559 T0
39560 >
39561 >::type type;
39562 };
39563
39564 template<
39565 typename FunctionObj,
39566 typename R ,
39567 typename T0
39568 >
39569 struct get_function_obj_invoker1
39570 {
39571 typedef typename mpl::if_c<(is_void<R>::value),
39572 void_function_obj_invoker1<
39573 FunctionObj,
39574 R ,
39575 T0
39576 >,
39577 function_obj_invoker1<
39578 FunctionObj,
39579 R ,
39580 T0
39581 >
39582 >::type type;
39583 };
39584
39585 template<
39586 typename FunctionObj,
39587 typename R ,
39588 typename T0
39589 >
39590 struct get_function_ref_invoker1
39591 {
39592 typedef typename mpl::if_c<(is_void<R>::value),
39593 void_function_ref_invoker1<
39594 FunctionObj,
39595 R ,
39596 T0
39597 >,
39598 function_ref_invoker1<
39599 FunctionObj,
39600 R ,
39601 T0
39602 >
39603 >::type type;
39604 };
39605
39606
39607
39608
39609 template<typename R , typename T0,
39610 typename Allocator>
39611 struct basic_vtable1 : vtable_base
39612 {
39613
39614 typedef R result_type;
39615
39616
39617
39618
39619 typedef result_type (*invoker_type)(function_buffer&
39620 ,
39621 T0);
39622
39623 template<typename F>
39624 basic_vtable1(F f) : vtable_base(), invoker(0)
39625 {
39626 init(f);
39627 }
39628
39629 template<typename F>
39630 bool assign_to(F f, function_buffer& functor)
39631 {
39632 typedef typename get_function_tag<F>::type tag;
39633 return assign_to(f, functor, tag());
39634 }
39635
39636 void clear(function_buffer& functor)
39637 {
39638 if (manager)
39639 manager(functor, functor, destroy_functor_tag);
39640 }
39641
39642 private:
39643 template<typename F>
39644 void init(F f)
39645 {
39646 typedef typename get_function_tag<F>::type tag;
39647 init(f, tag());
39648 }
39649
39650
39651 template<typename FunctionPtr>
39652 void init(FunctionPtr , function_ptr_tag)
39653 {
39654 typedef typename get_function_invoker1<
39655 FunctionPtr,
39656 R ,
39657 T0
39658 >::type
39659 actual_invoker_type;
39660
39661 invoker = &actual_invoker_type::invoke;
39662 manager = &functor_manager<FunctionPtr, Allocator>::manage;
39663 }
39664
39665 template<typename FunctionPtr>
39666 bool
39667 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
39668 {
39669 this->clear(functor);
39670 if (f) {
39671
39672
39673 functor.func_ptr = (void (*)())(f);
39674 return true;
39675 } else {
39676 return false;
39677 }
39678 }
39679
39680
39681
39682 template<typename MemberPtr>
39683 void init(MemberPtr f, member_ptr_tag)
39684 {
39685
39686
39687
39688 this->init(mem_fn(f));
39689 }
39690
39691 template<typename MemberPtr>
39692 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
39693 {
39694
39695
39696
39697 if (f) {
39698 this->assign_to(mem_fn(f), functor);
39699 return true;
39700 } else {
39701 return false;
39702 }
39703 }
39704
39705
39706
39707 template<typename FunctionObj>
39708 void init(FunctionObj , function_obj_tag)
39709 {
39710 typedef typename get_function_obj_invoker1<
39711 FunctionObj,
39712 R ,
39713 T0
39714 >::type
39715 actual_invoker_type;
39716
39717 invoker = &actual_invoker_type::invoke;
39718 manager = &functor_manager<FunctionObj, Allocator>::manage;
39719 }
39720
39721
39722 template<typename FunctionObj>
39723 void
39724 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
39725 {
39726 new ((void*)&functor.data) FunctionObj(f);
39727 }
39728
39729
39730 template<typename FunctionObj>
39731 void
39732 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
39733 {
39734
39735 typedef typename Allocator::template rebind<FunctionObj>::other
39736 allocator_type;
39737 typedef typename allocator_type::pointer pointer_type;
39738
39739 allocator_type allocator;
39740 pointer_type copy = allocator.allocate(1);
39741 allocator.construct(copy, f);
39742
39743
39744 functor.obj_ptr = static_cast<FunctionObj*>(copy);
39745
39746
39747
39748 }
39749
39750 template<typename FunctionObj>
39751 bool
39752 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
39753 {
39754 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
39755 assign_functor(f, functor,
39756 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
39757 return true;
39758 } else {
39759 return false;
39760 }
39761 }
39762
39763
39764 template<typename FunctionObj>
39765 void
39766 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
39767 {
39768 typedef typename get_function_ref_invoker1<
39769 FunctionObj,
39770 R ,
39771 T0
39772 >::type
39773 actual_invoker_type;
39774
39775 invoker = &actual_invoker_type::invoke;
39776 manager = &reference_manager<FunctionObj>::get;
39777 }
39778
39779 template<typename FunctionObj>
39780 bool
39781 assign_to(const reference_wrapper<FunctionObj>& f,
39782 function_buffer& functor, function_obj_ref_tag)
39783 {
39784 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
39785
39786
39787
39788
39789 functor.const_obj_ptr = f.get_pointer();
39790 return true;
39791 } else {
39792 return false;
39793 }
39794 }
39795
39796 public:
39797 invoker_type invoker;
39798 };
39799 }
39800 }
39801
39802 template<
39803 typename R ,
39804 typename T0,
39805 typename Allocator = std::allocator<function_base>
39806 >
39807 class function1 : public function_base
39808 {
39809 public:
39810
39811 typedef R result_type;
39812
39813
39814
39815
39816
39817 private:
39818 typedef boost::detail::function::basic_vtable1<
39819 R , T0, Allocator>
39820 vtable_type;
39821
39822 struct clear_type {};
39823
39824 public:
39825 static const int args = 1;
39826
39827
39828 template<typename Args>
39829 struct sig
39830 {
39831 typedef result_type type;
39832 };
39833
39834
39835 typedef T0 argument_type;
39836
39837
39838
39839
39840
39841 static const int arity = 1;
39842 typedef T0 arg1_type;
39843
39844 typedef Allocator allocator_type;
39845 typedef function1 self_type;
39846
39847 function1() : function_base() { }
39848
39849
39850
39851 template<typename Functor>
39852 function1(Functor f
39853
39854 ,typename enable_if_c<
39855 (boost::type_traits::ice_not<
39856 (is_integral<Functor>::value)>::value),
39857 int>::type = 0
39858
39859 ) :
39860 function_base()
39861 {
39862 this->assign_to(f);
39863 }
39864
39865
39866 function1(clear_type*) : function_base() { }
39867
39868
39869
39870
39871
39872
39873
39874 function1(const function1& f) : function_base()
39875 {
39876 this->assign_to_own(f);
39877 }
39878
39879 ~function1() { clear(); }
39880# 544 "/usr/include/boost/function/function_template.hpp" 3 4
39881 result_type operator()( T0 a0) const;
39882
39883
39884
39885
39886
39887
39888
39889 template<typename Functor>
39890
39891 typename enable_if_c<
39892 (boost::type_traits::ice_not<
39893 (is_integral<Functor>::value)>::value),
39894 function1&>::type
39895
39896
39897
39898 operator=(Functor f)
39899 {
39900 this->clear();
39901 try {
39902 this->assign_to(f);
39903 } catch (...) {
39904 vtable = 0;
39905 throw;
39906 }
39907 return *this;
39908 }
39909
39910
39911 function1& operator=(clear_type*)
39912 {
39913 this->clear();
39914 return *this;
39915 }
39916# 589 "/usr/include/boost/function/function_template.hpp" 3 4
39917 function1& operator=(const function1& f)
39918 {
39919 if (&f == this)
39920 return *this;
39921
39922 this->clear();
39923 try {
39924 this->assign_to_own(f);
39925 } catch (...) {
39926 vtable = 0;
39927 throw;
39928 }
39929 return *this;
39930 }
39931
39932 void swap(function1& other)
39933 {
39934 if (&other == this)
39935 return;
39936
39937 function1 tmp = *this;
39938 *this = other;
39939 other = tmp;
39940 }
39941
39942
39943 void clear()
39944 {
39945 if (vtable) {
39946 static_cast<vtable_type*>(vtable)->clear(this->functor);
39947 vtable = 0;
39948 }
39949 }
39950
39951
39952
39953
39954
39955 private:
39956 struct dummy {
39957 void nonnull() {};
39958 };
39959
39960 typedef void (dummy::*safe_bool)();
39961
39962 public:
39963 operator safe_bool () const
39964 { return (this->empty())? 0 : &dummy::nonnull; }
39965
39966 bool operator!() const
39967 { return this->empty(); }
39968
39969
39970 private:
39971 void assign_to_own(const function1& f)
39972 {
39973 if (!f.empty()) {
39974 this->vtable = f.vtable;
39975 f.vtable->manager(f.functor, this->functor,
39976 boost::detail::function::clone_functor_tag);
39977 }
39978 }
39979
39980 template<typename Functor>
39981 void assign_to(Functor f)
39982 {
39983 static vtable_type stored_vtable(f);
39984 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
39985 else vtable = 0;
39986 }
39987 };
39988
39989 template<typename R , typename T0 ,
39990 typename Allocator>
39991 inline void swap(function1<
39992 R ,
39993 T0 ,
39994 Allocator
39995 >& f1,
39996 function1<
39997 R ,
39998 T0,
39999 Allocator
40000 >& f2)
40001 {
40002 f1.swap(f2);
40003 }
40004
40005
40006 template<typename R , typename T0,
40007 typename Allocator>
40008 typename function1<
40009 R , T0,
40010 Allocator>::result_type
40011 function1<R , T0,
40012
40013 Allocator>
40014 ::operator()( T0 a0) const
40015 {
40016 if (this->empty())
40017 boost::throw_exception(bad_function_call());
40018
40019 return static_cast<vtable_type*>(vtable)->invoker
40020 (this->functor , a0);
40021 }
40022
40023
40024
40025template<typename R , typename T0 ,
40026 typename Allocator>
40027 void operator==(const function1<
40028 R ,
40029 T0 ,
40030 Allocator>&,
40031 const function1<
40032 R ,
40033 T0 ,
40034 Allocator>&);
40035template<typename R , typename T0 ,
40036 typename Allocator>
40037 void operator!=(const function1<
40038 R ,
40039 T0 ,
40040 Allocator>&,
40041 const function1<
40042 R ,
40043 T0 ,
40044 Allocator>&);
40045# 726 "/usr/include/boost/function/function_template.hpp" 3 4
40046template<typename R ,
40047 typename T0,
40048 typename Allocator>
40049class function<R ( T0), Allocator>
40050 : public function1<R, T0
40051 , Allocator>
40052{
40053 typedef function1<R, T0
40054 , Allocator> base_type;
40055 typedef function self_type;
40056
40057 struct clear_type {};
40058
40059public:
40060 typedef typename base_type::allocator_type allocator_type;
40061
40062 function() : base_type() {}
40063
40064 template<typename Functor>
40065 function(Functor f
40066
40067 ,typename enable_if_c<
40068 (boost::type_traits::ice_not<
40069 (is_integral<Functor>::value)>::value),
40070 int>::type = 0
40071
40072 ) :
40073 base_type(f)
40074 {
40075 }
40076
40077
40078 function(clear_type*) : base_type() {}
40079
40080
40081 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
40082
40083 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
40084
40085 self_type& operator=(const self_type& f)
40086 {
40087 self_type(f).swap(*this);
40088 return *this;
40089 }
40090
40091 template<typename Functor>
40092
40093 typename enable_if_c<
40094 (boost::type_traits::ice_not<
40095 (is_integral<Functor>::value)>::value),
40096 self_type&>::type
40097
40098
40099
40100 operator=(Functor f)
40101 {
40102 self_type(f).swap(*this);
40103 return *this;
40104 }
40105
40106
40107 self_type& operator=(clear_type*)
40108 {
40109 this->clear();
40110 return *this;
40111 }
40112
40113
40114 self_type& operator=(const base_type& f)
40115 {
40116 self_type(f).swap(*this);
40117 return *this;
40118 }
40119};
40120# 808 "/usr/include/boost/function/function_template.hpp" 3 4
40121}
40122# 19 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
40123# 12 "/usr/include/boost/function/function1.hpp" 2 3 4
40124# 14 "/usr/include/boost/program_options/value_semantic.hpp" 2 3 4
40125
40126
40127
40128
40129
40130
40131
40132namespace boost { namespace program_options {
40133
40134
40135
40136
40137 class value_semantic {
40138 public:
40139
40140
40141
40142 virtual std::string name() const = 0;
40143
40144
40145
40146 virtual unsigned min_tokens() const = 0;
40147
40148
40149
40150 virtual unsigned max_tokens() const = 0;
40151
40152
40153
40154
40155
40156 virtual bool is_composing() const = 0;
40157
40158
40159
40160
40161
40162
40163 virtual void parse(boost::any& value_store,
40164 const std::vector<std::string>& new_tokens,
40165 bool utf8) const
40166 = 0;
40167
40168
40169
40170
40171 virtual bool apply_default(boost::any& value_store) const = 0;
40172
40173
40174
40175 virtual void notify(const boost::any& value_store) const = 0;
40176
40177 virtual ~value_semantic() {}
40178 };
40179
40180
40181
40182
40183 template<class charT>
40184 class value_semantic_codecvt_helper {
40185
40186 };
40187# 84 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
40188 template<>
40189 class
40190 value_semantic_codecvt_helper<char> : public value_semantic {
40191 private:
40192 void parse(boost::any& value_store,
40193 const std::vector<std::string>& new_tokens,
40194 bool utf8) const;
40195 protected:
40196 virtual void xparse(boost::any& value_store,
40197 const std::vector<std::string>& new_tokens)
40198 const = 0;
40199 };
40200# 104 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
40201 template<>
40202 class
40203 value_semantic_codecvt_helper<wchar_t> : public value_semantic {
40204 private:
40205 void parse(boost::any& value_store,
40206 const std::vector<std::string>& new_tokens,
40207 bool utf8) const;
40208 protected:
40209
40210 virtual void xparse(boost::any& value_store,
40211 const std::vector<std::wstring>& new_tokens)
40212 const = 0;
40213
40214 };
40215
40216
40217
40218 class
40219 untyped_value : public value_semantic_codecvt_helper<char> {
40220 public:
40221 untyped_value(bool zero_tokens = false)
40222 : m_zero_tokens(zero_tokens)
40223 {}
40224
40225 std::string name() const;
40226
40227 unsigned min_tokens() const;
40228 unsigned max_tokens() const;
40229
40230 bool is_composing() const { return false; }
40231
40232
40233
40234
40235
40236
40237 void xparse(boost::any& value_store,
40238 const std::vector<std::string>& new_tokens) const;
40239
40240
40241 bool apply_default(boost::any&) const { return false; }
40242
40243
40244 void notify(const boost::any&) const {}
40245 private:
40246 bool m_zero_tokens;
40247 };
40248
40249
40250
40251
40252
40253
40254
40255 class typed_value_base
40256 {
40257 public:
40258
40259
40260 virtual const std::type_info& value_type() const = 0;
40261
40262
40263 virtual ~typed_value_base() {}
40264 };
40265
40266
40267
40268 template<class T, class charT = char>
40269 class typed_value : public value_semantic_codecvt_helper<charT>,
40270 public typed_value_base
40271 {
40272 public:
40273
40274
40275 typed_value(T* store_to)
40276 : m_store_to(store_to), m_composing(false),
40277 m_multitoken(false), m_zero_tokens(false)
40278 {}
40279
40280
40281
40282
40283
40284 typed_value* default_value(const T& v)
40285 {
40286 m_default_value = boost::any(v);
40287 m_default_value_as_text = boost::lexical_cast<std::string>(v);
40288 return this;
40289 }
40290
40291
40292
40293
40294
40295
40296
40297 typed_value* default_value(const T& v, const std::string& textual)
40298 {
40299 m_default_value = boost::any(v);
40300 m_default_value_as_text = textual;
40301 return this;
40302 }
40303
40304
40305
40306 typed_value* notifier(function1<void, const T&> f)
40307 {
40308 m_notifier = f;
40309 return this;
40310 }
40311
40312
40313
40314
40315 typed_value* composing()
40316 {
40317 m_composing = true;
40318 return this;
40319 }
40320
40321
40322 typed_value* multitoken()
40323 {
40324 m_multitoken = true;
40325 return this;
40326 }
40327
40328 typed_value* zero_tokens()
40329 {
40330 m_zero_tokens = true;
40331 return this;
40332 }
40333
40334
40335 public:
40336
40337 std::string name() const;
40338
40339 bool is_composing() const { return m_composing; }
40340
40341 unsigned min_tokens() const
40342 {
40343 if (m_zero_tokens) {
40344 return 0;
40345 } else {
40346 return 1;
40347 }
40348 }
40349
40350 unsigned max_tokens() const {
40351 if (m_multitoken) {
40352 return 32000;
40353 } else if (m_zero_tokens) {
40354 return 0;
40355 } else {
40356 return 1;
40357 }
40358 }
40359
40360
40361
40362
40363 void xparse(boost::any& value_store,
40364 const std::vector< std::basic_string<charT> >& new_tokens)
40365 const;
40366
40367
40368
40369
40370
40371 virtual bool apply_default(boost::any& value_store) const
40372 {
40373 if (m_default_value.empty()) {
40374 return false;
40375 } else {
40376 value_store = m_default_value;
40377 return true;
40378 }
40379 }
40380
40381
40382
40383
40384 void notify(const boost::any& value_store) const;
40385
40386 public:
40387
40388 const std::type_info& value_type() const
40389 {
40390 return typeid(T);
40391 }
40392
40393
40394 private:
40395 T* m_store_to;
40396
40397
40398
40399 boost::any m_default_value;
40400 std::string m_default_value_as_text;
40401 bool m_composing, m_implicit, m_multitoken, m_zero_tokens;
40402 boost::function1<void, const T&> m_notifier;
40403 };
40404# 315 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
40405 template<class T>
40406 typed_value<T>*
40407 value();
40408
40409
40410
40411 template<class T>
40412 typed_value<T>*
40413 value(T* v);
40414
40415
40416
40417
40418
40419 template<class T>
40420 typed_value<T, wchar_t>*
40421 wvalue();
40422
40423
40424
40425 template<class T>
40426 typed_value<T, wchar_t>*
40427 wvalue(T* v);
40428
40429
40430
40431
40432
40433 typed_value<bool>*
40434 bool_switch();
40435
40436
40437
40438 typed_value<bool>*
40439 bool_switch(bool* v);
40440
40441}}
40442
40443# 1 "/usr/include/boost/program_options/detail/value_semantic.hpp" 1 3 4
40444# 11 "/usr/include/boost/program_options/detail/value_semantic.hpp" 3 4
40445namespace boost { namespace program_options {
40446
40447 extern std::string arg;
40448
40449 template<class T, class charT>
40450 std::string
40451 typed_value<T, charT>::name() const
40452 {
40453 if (!m_default_value.empty() && !m_default_value_as_text.empty()) {
40454 return arg + " (=" + m_default_value_as_text + ")";
40455 } else {
40456 return arg;
40457 }
40458 }
40459
40460 template<class T, class charT>
40461 void
40462 typed_value<T, charT>::notify(const boost::any& value_store) const
40463 {
40464 const T* value = boost::any_cast<const T>(&value_store);
40465 if (m_store_to) {
40466 *m_store_to = *value;
40467 }
40468 if (m_notifier) {
40469 m_notifier(*value);
40470 }
40471 }
40472
40473 namespace validators {
40474
40475
40476
40477
40478
40479 template<class charT>
40480 const std::basic_string<charT>& get_single_string(
40481 const std::vector<std::basic_string<charT> >& v,
40482 bool allow_empty = false)
40483 {
40484 static std::basic_string<charT> empty;
40485 if (v.size() > 1)
40486 throw validation_error("multiple values not allowed");
40487 if (v.size() == 1)
40488 return v.front();
40489 else if (allow_empty)
40490 return empty;
40491 else
40492 throw validation_error("at least one value required");
40493 }
40494
40495
40496 void
40497 check_first_occurrence(const boost::any& value);
40498 }
40499
40500 using namespace validators;
40501# 75 "/usr/include/boost/program_options/detail/value_semantic.hpp" 3 4
40502 template<class T, class charT>
40503 void validate(boost::any& v,
40504 const std::vector< std::basic_string<charT> >& xs,
40505 T*, long)
40506 {
40507 validators::check_first_occurrence(v);
40508 std::basic_string<charT> s(validators::get_single_string(xs));
40509 try {
40510 v = any(lexical_cast<T>(s));
40511 }
40512 catch(const bad_lexical_cast&) {
40513 boost::throw_exception(invalid_option_value(s));
40514 }
40515 }
40516
40517 void validate(boost::any& v,
40518 const std::vector<std::string>& xs,
40519 bool*,
40520 int);
40521
40522
40523 void validate(boost::any& v,
40524 const std::vector<std::wstring>& xs,
40525 bool*,
40526 int);
40527# 108 "/usr/include/boost/program_options/detail/value_semantic.hpp" 3 4
40528 void validate(boost::any& v,
40529 const std::vector<std::string>& xs,
40530 std::string*,
40531 int);
40532
40533
40534 void validate(boost::any& v,
40535 const std::vector<std::wstring>& xs,
40536 std::string*,
40537 int);
40538
40539
40540
40541
40542
40543 template<class T, class charT>
40544 void validate(boost::any& v,
40545 const std::vector<std::basic_string<charT> >& s,
40546 std::vector<T>*,
40547 int)
40548 {
40549 if (v.empty()) {
40550 v = boost::any(std::vector<T>());
40551 }
40552 std::vector<T>* tv = boost::any_cast< std::vector<T> >(&v);
40553 ((__null != tv) ? static_cast<void> (0) : __assert_fail ("__null != tv", "/usr/include/boost/program_options/detail/value_semantic.hpp", 133, __PRETTY_FUNCTION__));
40554 for (unsigned i = 0; i < s.size(); ++i)
40555 {
40556 try {
40557 tv->push_back(boost::lexical_cast<T>(s[i]));
40558 }
40559 catch(const bad_lexical_cast& ) {
40560 boost::throw_exception(invalid_option_value(s[i]));
40561 }
40562 }
40563 }
40564
40565 template<class T, class charT>
40566 void
40567 typed_value<T, charT>::
40568 xparse(boost::any& value_store,
40569 const std::vector<std::basic_string<charT> >& new_tokens) const
40570 {
40571 validate(value_store, new_tokens, (T*)0, 0);
40572 }
40573
40574 template<class T>
40575 typed_value<T>*
40576 value()
40577 {
40578
40579 return boost::program_options::value<T>(0);
40580 }
40581
40582 template<class T>
40583 typed_value<T>*
40584 value(T* v)
40585 {
40586 typed_value<T>* r = new typed_value<T>(v);
40587
40588 return r;
40589 }
40590
40591 template<class T>
40592 typed_value<T, wchar_t>*
40593 wvalue()
40594 {
40595 return wvalue<T>(0);
40596 }
40597
40598 template<class T>
40599 typed_value<T, wchar_t>*
40600 wvalue(T* v)
40601 {
40602 typed_value<T, wchar_t>* r = new typed_value<T, wchar_t>(v);
40603
40604 return r;
40605 }
40606
40607
40608
40609}}
40610# 354 "/usr/include/boost/program_options/value_semantic.hpp" 2 3 4
40611# 14 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
40612
40613# 1 "/usr/include/boost/function.hpp" 1 3 4
40614# 13 "/usr/include/boost/function.hpp" 3 4
40615# 1 "/usr/include/boost/preprocessor/iterate.hpp" 1 3 4
40616# 15 "/usr/include/boost/preprocessor/iterate.hpp" 3 4
40617# 1 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 1 3 4
40618# 17 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 3 4
40619# 1 "/usr/include/boost/preprocessor/array/elem.hpp" 1 3 4
40620# 15 "/usr/include/boost/preprocessor/array/elem.hpp" 3 4
40621# 1 "/usr/include/boost/preprocessor/array/data.hpp" 1 3 4
40622# 16 "/usr/include/boost/preprocessor/array/elem.hpp" 2 3 4
40623# 1 "/usr/include/boost/preprocessor/array/size.hpp" 1 3 4
40624# 17 "/usr/include/boost/preprocessor/array/elem.hpp" 2 3 4
40625# 18 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 2 3 4
40626
40627
40628# 1 "/usr/include/boost/preprocessor/slot/slot.hpp" 1 3 4
40629# 16 "/usr/include/boost/preprocessor/slot/slot.hpp" 3 4
40630# 1 "/usr/include/boost/preprocessor/slot/detail/def.hpp" 1 3 4
40631# 17 "/usr/include/boost/preprocessor/slot/slot.hpp" 2 3 4
40632# 21 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 2 3 4
40633# 16 "/usr/include/boost/preprocessor/iterate.hpp" 2 3 4
40634# 14 "/usr/include/boost/function.hpp" 2 3 4
40635# 62 "/usr/include/boost/function.hpp" 3 4
40636# 1 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 1 3 4
40637# 24 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
40638# 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 1 3 4
40639# 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
40640# 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
40641# 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 2 3 4
40642# 25 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
40643
40644# 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 1 3 4
40645# 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
40646# 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
40647# 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 2 3 4
40648# 27 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
40649# 47 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
40650# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
40651# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
40652# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
40653# 13 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
40654# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
40655# 83 "/usr/include/boost/function/function_template.hpp" 3 4
40656namespace boost {
40657 namespace detail {
40658 namespace function {
40659 template<
40660 typename FunctionPtr,
40661 typename R
40662
40663 >
40664 struct function_invoker0
40665 {
40666 static R invoke(function_buffer& function_ptr
40667 )
40668 {
40669 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
40670 return f();
40671 }
40672 };
40673
40674 template<
40675 typename FunctionPtr,
40676 typename R
40677
40678 >
40679 struct void_function_invoker0
40680 {
40681 static void
40682 invoke(function_buffer& function_ptr
40683 )
40684
40685 {
40686 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
40687 f();
40688 }
40689 };
40690
40691 template<
40692 typename FunctionObj,
40693 typename R
40694
40695 >
40696 struct function_obj_invoker0
40697 {
40698 static R invoke(function_buffer& function_obj_ptr
40699 )
40700
40701 {
40702 FunctionObj* f;
40703 if (function_allows_small_object_optimization<FunctionObj>::value)
40704 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
40705 else
40706 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
40707 return (*f)();
40708 }
40709 };
40710
40711 template<
40712 typename FunctionObj,
40713 typename R
40714
40715 >
40716 struct void_function_obj_invoker0
40717 {
40718 static void
40719 invoke(function_buffer& function_obj_ptr
40720 )
40721
40722 {
40723 FunctionObj* f;
40724 if (function_allows_small_object_optimization<FunctionObj>::value)
40725 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
40726 else
40727 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
40728 (*f)();
40729 }
40730 };
40731
40732 template<
40733 typename FunctionObj,
40734 typename R
40735
40736 >
40737 struct function_ref_invoker0
40738 {
40739 static R invoke(function_buffer& function_obj_ptr
40740 )
40741
40742 {
40743 FunctionObj* f =
40744 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
40745 return (*f)();
40746 }
40747 };
40748
40749 template<
40750 typename FunctionObj,
40751 typename R
40752
40753 >
40754 struct void_function_ref_invoker0
40755 {
40756 static void
40757 invoke(function_buffer& function_obj_ptr
40758 )
40759
40760 {
40761 FunctionObj* f =
40762 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
40763 (*f)();
40764 }
40765 };
40766
40767 template<
40768 typename FunctionPtr,
40769 typename R
40770
40771 >
40772 struct get_function_invoker0
40773 {
40774 typedef typename mpl::if_c<(is_void<R>::value),
40775 void_function_invoker0<
40776 FunctionPtr,
40777 R
40778
40779 >,
40780 function_invoker0<
40781 FunctionPtr,
40782 R
40783
40784 >
40785 >::type type;
40786 };
40787
40788 template<
40789 typename FunctionObj,
40790 typename R
40791
40792 >
40793 struct get_function_obj_invoker0
40794 {
40795 typedef typename mpl::if_c<(is_void<R>::value),
40796 void_function_obj_invoker0<
40797 FunctionObj,
40798 R
40799
40800 >,
40801 function_obj_invoker0<
40802 FunctionObj,
40803 R
40804
40805 >
40806 >::type type;
40807 };
40808
40809 template<
40810 typename FunctionObj,
40811 typename R
40812
40813 >
40814 struct get_function_ref_invoker0
40815 {
40816 typedef typename mpl::if_c<(is_void<R>::value),
40817 void_function_ref_invoker0<
40818 FunctionObj,
40819 R
40820
40821 >,
40822 function_ref_invoker0<
40823 FunctionObj,
40824 R
40825
40826 >
40827 >::type type;
40828 };
40829
40830
40831
40832
40833 template<typename R ,
40834 typename Allocator>
40835 struct basic_vtable0 : vtable_base
40836 {
40837
40838 typedef R result_type;
40839
40840
40841
40842
40843 typedef result_type (*invoker_type)(function_buffer&
40844
40845 );
40846
40847 template<typename F>
40848 basic_vtable0(F f) : vtable_base(), invoker(0)
40849 {
40850 init(f);
40851 }
40852
40853 template<typename F>
40854 bool assign_to(F f, function_buffer& functor)
40855 {
40856 typedef typename get_function_tag<F>::type tag;
40857 return assign_to(f, functor, tag());
40858 }
40859
40860 void clear(function_buffer& functor)
40861 {
40862 if (manager)
40863 manager(functor, functor, destroy_functor_tag);
40864 }
40865
40866 private:
40867 template<typename F>
40868 void init(F f)
40869 {
40870 typedef typename get_function_tag<F>::type tag;
40871 init(f, tag());
40872 }
40873
40874
40875 template<typename FunctionPtr>
40876 void init(FunctionPtr , function_ptr_tag)
40877 {
40878 typedef typename get_function_invoker0<
40879 FunctionPtr,
40880 R
40881
40882 >::type
40883 actual_invoker_type;
40884
40885 invoker = &actual_invoker_type::invoke;
40886 manager = &functor_manager<FunctionPtr, Allocator>::manage;
40887 }
40888
40889 template<typename FunctionPtr>
40890 bool
40891 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
40892 {
40893 this->clear(functor);
40894 if (f) {
40895
40896
40897 functor.func_ptr = (void (*)())(f);
40898 return true;
40899 } else {
40900 return false;
40901 }
40902 }
40903# 358 "/usr/include/boost/function/function_template.hpp" 3 4
40904 template<typename FunctionObj>
40905 void init(FunctionObj , function_obj_tag)
40906 {
40907 typedef typename get_function_obj_invoker0<
40908 FunctionObj,
40909 R
40910
40911 >::type
40912 actual_invoker_type;
40913
40914 invoker = &actual_invoker_type::invoke;
40915 manager = &functor_manager<FunctionObj, Allocator>::manage;
40916 }
40917
40918
40919 template<typename FunctionObj>
40920 void
40921 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
40922 {
40923 new ((void*)&functor.data) FunctionObj(f);
40924 }
40925
40926
40927 template<typename FunctionObj>
40928 void
40929 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
40930 {
40931
40932 typedef typename Allocator::template rebind<FunctionObj>::other
40933 allocator_type;
40934 typedef typename allocator_type::pointer pointer_type;
40935
40936 allocator_type allocator;
40937 pointer_type copy = allocator.allocate(1);
40938 allocator.construct(copy, f);
40939
40940
40941 functor.obj_ptr = static_cast<FunctionObj*>(copy);
40942
40943
40944
40945 }
40946
40947 template<typename FunctionObj>
40948 bool
40949 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
40950 {
40951 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
40952 assign_functor(f, functor,
40953 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
40954 return true;
40955 } else {
40956 return false;
40957 }
40958 }
40959
40960
40961 template<typename FunctionObj>
40962 void
40963 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
40964 {
40965 typedef typename get_function_ref_invoker0<
40966 FunctionObj,
40967 R
40968
40969 >::type
40970 actual_invoker_type;
40971
40972 invoker = &actual_invoker_type::invoke;
40973 manager = &reference_manager<FunctionObj>::get;
40974 }
40975
40976 template<typename FunctionObj>
40977 bool
40978 assign_to(const reference_wrapper<FunctionObj>& f,
40979 function_buffer& functor, function_obj_ref_tag)
40980 {
40981 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
40982
40983
40984
40985
40986 functor.const_obj_ptr = f.get_pointer();
40987 return true;
40988 } else {
40989 return false;
40990 }
40991 }
40992
40993 public:
40994 invoker_type invoker;
40995 };
40996 }
40997 }
40998
40999 template<
41000 typename R
41001 ,
41002 typename Allocator = std::allocator<function_base>
41003 >
41004 class function0 : public function_base
41005 {
41006 public:
41007
41008 typedef R result_type;
41009
41010
41011
41012
41013
41014 private:
41015 typedef boost::detail::function::basic_vtable0<
41016 R , Allocator>
41017 vtable_type;
41018
41019 struct clear_type {};
41020
41021 public:
41022 static const int args = 0;
41023
41024
41025 template<typename Args>
41026 struct sig
41027 {
41028 typedef result_type type;
41029 };
41030# 492 "/usr/include/boost/function/function_template.hpp" 3 4
41031 static const int arity = 0;
41032
41033
41034 typedef Allocator allocator_type;
41035 typedef function0 self_type;
41036
41037 function0() : function_base() { }
41038
41039
41040
41041 template<typename Functor>
41042 function0(Functor f
41043
41044 ,typename enable_if_c<
41045 (boost::type_traits::ice_not<
41046 (is_integral<Functor>::value)>::value),
41047 int>::type = 0
41048
41049 ) :
41050 function_base()
41051 {
41052 this->assign_to(f);
41053 }
41054
41055
41056 function0(clear_type*) : function_base() { }
41057
41058
41059
41060
41061
41062
41063
41064 function0(const function0& f) : function_base()
41065 {
41066 this->assign_to_own(f);
41067 }
41068
41069 ~function0() { clear(); }
41070# 544 "/usr/include/boost/function/function_template.hpp" 3 4
41071 result_type operator()() const;
41072
41073
41074
41075
41076
41077
41078
41079 template<typename Functor>
41080
41081 typename enable_if_c<
41082 (boost::type_traits::ice_not<
41083 (is_integral<Functor>::value)>::value),
41084 function0&>::type
41085
41086
41087
41088 operator=(Functor f)
41089 {
41090 this->clear();
41091 try {
41092 this->assign_to(f);
41093 } catch (...) {
41094 vtable = 0;
41095 throw;
41096 }
41097 return *this;
41098 }
41099
41100
41101 function0& operator=(clear_type*)
41102 {
41103 this->clear();
41104 return *this;
41105 }
41106# 589 "/usr/include/boost/function/function_template.hpp" 3 4
41107 function0& operator=(const function0& f)
41108 {
41109 if (&f == this)
41110 return *this;
41111
41112 this->clear();
41113 try {
41114 this->assign_to_own(f);
41115 } catch (...) {
41116 vtable = 0;
41117 throw;
41118 }
41119 return *this;
41120 }
41121
41122 void swap(function0& other)
41123 {
41124 if (&other == this)
41125 return;
41126
41127 function0 tmp = *this;
41128 *this = other;
41129 other = tmp;
41130 }
41131
41132
41133 void clear()
41134 {
41135 if (vtable) {
41136 static_cast<vtable_type*>(vtable)->clear(this->functor);
41137 vtable = 0;
41138 }
41139 }
41140
41141
41142
41143
41144
41145 private:
41146 struct dummy {
41147 void nonnull() {};
41148 };
41149
41150 typedef void (dummy::*safe_bool)();
41151
41152 public:
41153 operator safe_bool () const
41154 { return (this->empty())? 0 : &dummy::nonnull; }
41155
41156 bool operator!() const
41157 { return this->empty(); }
41158
41159
41160 private:
41161 void assign_to_own(const function0& f)
41162 {
41163 if (!f.empty()) {
41164 this->vtable = f.vtable;
41165 f.vtable->manager(f.functor, this->functor,
41166 boost::detail::function::clone_functor_tag);
41167 }
41168 }
41169
41170 template<typename Functor>
41171 void assign_to(Functor f)
41172 {
41173 static vtable_type stored_vtable(f);
41174 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
41175 else vtable = 0;
41176 }
41177 };
41178
41179 template<typename R ,
41180 typename Allocator>
41181 inline void swap(function0<
41182 R
41183 ,
41184 Allocator
41185 >& f1,
41186 function0<
41187 R
41188 ,
41189 Allocator
41190 >& f2)
41191 {
41192 f1.swap(f2);
41193 }
41194
41195
41196 template<typename R ,
41197 typename Allocator>
41198 typename function0<
41199 R ,
41200 Allocator>::result_type
41201 function0<R ,
41202
41203 Allocator>
41204 ::operator()() const
41205 {
41206 if (this->empty())
41207 boost::throw_exception(bad_function_call());
41208
41209 return static_cast<vtable_type*>(vtable)->invoker
41210 (this->functor );
41211 }
41212
41213
41214
41215template<typename R ,
41216 typename Allocator>
41217 void operator==(const function0<
41218 R
41219 ,
41220 Allocator>&,
41221 const function0<
41222 R
41223 ,
41224 Allocator>&);
41225template<typename R ,
41226 typename Allocator>
41227 void operator!=(const function0<
41228 R
41229 ,
41230 Allocator>&,
41231 const function0<
41232 R
41233 ,
41234 Allocator>&);
41235# 726 "/usr/include/boost/function/function_template.hpp" 3 4
41236template<typename R
41237 ,
41238 typename Allocator>
41239class function<R (void), Allocator>
41240 : public function0<R,
41241 Allocator>
41242{
41243 typedef function0<R,
41244 Allocator> base_type;
41245 typedef function self_type;
41246
41247 struct clear_type {};
41248
41249public:
41250 typedef typename base_type::allocator_type allocator_type;
41251
41252 function() : base_type() {}
41253
41254 template<typename Functor>
41255 function(Functor f
41256
41257 ,typename enable_if_c<
41258 (boost::type_traits::ice_not<
41259 (is_integral<Functor>::value)>::value),
41260 int>::type = 0
41261
41262 ) :
41263 base_type(f)
41264 {
41265 }
41266
41267
41268 function(clear_type*) : base_type() {}
41269
41270
41271 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
41272
41273 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
41274
41275 self_type& operator=(const self_type& f)
41276 {
41277 self_type(f).swap(*this);
41278 return *this;
41279 }
41280
41281 template<typename Functor>
41282
41283 typename enable_if_c<
41284 (boost::type_traits::ice_not<
41285 (is_integral<Functor>::value)>::value),
41286 self_type&>::type
41287
41288
41289
41290 operator=(Functor f)
41291 {
41292 self_type(f).swap(*this);
41293 return *this;
41294 }
41295
41296
41297 self_type& operator=(clear_type*)
41298 {
41299 this->clear();
41300 return *this;
41301 }
41302
41303
41304 self_type& operator=(const base_type& f)
41305 {
41306 self_type(f).swap(*this);
41307 return *this;
41308 }
41309};
41310# 808 "/usr/include/boost/function/function_template.hpp" 3 4
41311}
41312# 14 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
41313# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
41314# 48 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
41315
41316
41317
41318
41319# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
41320# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
41321# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
41322# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
41323# 53 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
41324
41325
41326
41327
41328# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
41329# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
41330# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
41331# 23 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
41332# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
41333# 83 "/usr/include/boost/function/function_template.hpp" 3 4
41334namespace boost {
41335 namespace detail {
41336 namespace function {
41337 template<
41338 typename FunctionPtr,
41339 typename R ,
41340 typename T0 , typename T1
41341 >
41342 struct function_invoker2
41343 {
41344 static R invoke(function_buffer& function_ptr ,
41345 T0 a0 , T1 a1)
41346 {
41347 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
41348 return f( a0 , a1);
41349 }
41350 };
41351
41352 template<
41353 typename FunctionPtr,
41354 typename R ,
41355 typename T0 , typename T1
41356 >
41357 struct void_function_invoker2
41358 {
41359 static void
41360 invoke(function_buffer& function_ptr ,
41361 T0 a0 , T1 a1)
41362
41363 {
41364 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
41365 f( a0 , a1);
41366 }
41367 };
41368
41369 template<
41370 typename FunctionObj,
41371 typename R ,
41372 typename T0 , typename T1
41373 >
41374 struct function_obj_invoker2
41375 {
41376 static R invoke(function_buffer& function_obj_ptr ,
41377 T0 a0 , T1 a1)
41378
41379 {
41380 FunctionObj* f;
41381 if (function_allows_small_object_optimization<FunctionObj>::value)
41382 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
41383 else
41384 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
41385 return (*f)( a0 , a1);
41386 }
41387 };
41388
41389 template<
41390 typename FunctionObj,
41391 typename R ,
41392 typename T0 , typename T1
41393 >
41394 struct void_function_obj_invoker2
41395 {
41396 static void
41397 invoke(function_buffer& function_obj_ptr ,
41398 T0 a0 , T1 a1)
41399
41400 {
41401 FunctionObj* f;
41402 if (function_allows_small_object_optimization<FunctionObj>::value)
41403 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
41404 else
41405 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
41406 (*f)( a0 , a1);
41407 }
41408 };
41409
41410 template<
41411 typename FunctionObj,
41412 typename R ,
41413 typename T0 , typename T1
41414 >
41415 struct function_ref_invoker2
41416 {
41417 static R invoke(function_buffer& function_obj_ptr ,
41418 T0 a0 , T1 a1)
41419
41420 {
41421 FunctionObj* f =
41422 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
41423 return (*f)( a0 , a1);
41424 }
41425 };
41426
41427 template<
41428 typename FunctionObj,
41429 typename R ,
41430 typename T0 , typename T1
41431 >
41432 struct void_function_ref_invoker2
41433 {
41434 static void
41435 invoke(function_buffer& function_obj_ptr ,
41436 T0 a0 , T1 a1)
41437
41438 {
41439 FunctionObj* f =
41440 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
41441 (*f)( a0 , a1);
41442 }
41443 };
41444
41445 template<
41446 typename FunctionPtr,
41447 typename R ,
41448 typename T0 , typename T1
41449 >
41450 struct get_function_invoker2
41451 {
41452 typedef typename mpl::if_c<(is_void<R>::value),
41453 void_function_invoker2<
41454 FunctionPtr,
41455 R ,
41456 T0 , T1
41457 >,
41458 function_invoker2<
41459 FunctionPtr,
41460 R ,
41461 T0 , T1
41462 >
41463 >::type type;
41464 };
41465
41466 template<
41467 typename FunctionObj,
41468 typename R ,
41469 typename T0 , typename T1
41470 >
41471 struct get_function_obj_invoker2
41472 {
41473 typedef typename mpl::if_c<(is_void<R>::value),
41474 void_function_obj_invoker2<
41475 FunctionObj,
41476 R ,
41477 T0 , T1
41478 >,
41479 function_obj_invoker2<
41480 FunctionObj,
41481 R ,
41482 T0 , T1
41483 >
41484 >::type type;
41485 };
41486
41487 template<
41488 typename FunctionObj,
41489 typename R ,
41490 typename T0 , typename T1
41491 >
41492 struct get_function_ref_invoker2
41493 {
41494 typedef typename mpl::if_c<(is_void<R>::value),
41495 void_function_ref_invoker2<
41496 FunctionObj,
41497 R ,
41498 T0 , T1
41499 >,
41500 function_ref_invoker2<
41501 FunctionObj,
41502 R ,
41503 T0 , T1
41504 >
41505 >::type type;
41506 };
41507
41508
41509
41510
41511 template<typename R , typename T0 , typename T1,
41512 typename Allocator>
41513 struct basic_vtable2 : vtable_base
41514 {
41515
41516 typedef R result_type;
41517
41518
41519
41520
41521 typedef result_type (*invoker_type)(function_buffer&
41522 ,
41523 T0 , T1);
41524
41525 template<typename F>
41526 basic_vtable2(F f) : vtable_base(), invoker(0)
41527 {
41528 init(f);
41529 }
41530
41531 template<typename F>
41532 bool assign_to(F f, function_buffer& functor)
41533 {
41534 typedef typename get_function_tag<F>::type tag;
41535 return assign_to(f, functor, tag());
41536 }
41537
41538 void clear(function_buffer& functor)
41539 {
41540 if (manager)
41541 manager(functor, functor, destroy_functor_tag);
41542 }
41543
41544 private:
41545 template<typename F>
41546 void init(F f)
41547 {
41548 typedef typename get_function_tag<F>::type tag;
41549 init(f, tag());
41550 }
41551
41552
41553 template<typename FunctionPtr>
41554 void init(FunctionPtr , function_ptr_tag)
41555 {
41556 typedef typename get_function_invoker2<
41557 FunctionPtr,
41558 R ,
41559 T0 , T1
41560 >::type
41561 actual_invoker_type;
41562
41563 invoker = &actual_invoker_type::invoke;
41564 manager = &functor_manager<FunctionPtr, Allocator>::manage;
41565 }
41566
41567 template<typename FunctionPtr>
41568 bool
41569 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
41570 {
41571 this->clear(functor);
41572 if (f) {
41573
41574
41575 functor.func_ptr = (void (*)())(f);
41576 return true;
41577 } else {
41578 return false;
41579 }
41580 }
41581
41582
41583
41584 template<typename MemberPtr>
41585 void init(MemberPtr f, member_ptr_tag)
41586 {
41587
41588
41589
41590 this->init(mem_fn(f));
41591 }
41592
41593 template<typename MemberPtr>
41594 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
41595 {
41596
41597
41598
41599 if (f) {
41600 this->assign_to(mem_fn(f), functor);
41601 return true;
41602 } else {
41603 return false;
41604 }
41605 }
41606
41607
41608
41609 template<typename FunctionObj>
41610 void init(FunctionObj , function_obj_tag)
41611 {
41612 typedef typename get_function_obj_invoker2<
41613 FunctionObj,
41614 R ,
41615 T0 , T1
41616 >::type
41617 actual_invoker_type;
41618
41619 invoker = &actual_invoker_type::invoke;
41620 manager = &functor_manager<FunctionObj, Allocator>::manage;
41621 }
41622
41623
41624 template<typename FunctionObj>
41625 void
41626 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
41627 {
41628 new ((void*)&functor.data) FunctionObj(f);
41629 }
41630
41631
41632 template<typename FunctionObj>
41633 void
41634 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
41635 {
41636
41637 typedef typename Allocator::template rebind<FunctionObj>::other
41638 allocator_type;
41639 typedef typename allocator_type::pointer pointer_type;
41640
41641 allocator_type allocator;
41642 pointer_type copy = allocator.allocate(1);
41643 allocator.construct(copy, f);
41644
41645
41646 functor.obj_ptr = static_cast<FunctionObj*>(copy);
41647
41648
41649
41650 }
41651
41652 template<typename FunctionObj>
41653 bool
41654 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
41655 {
41656 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
41657 assign_functor(f, functor,
41658 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
41659 return true;
41660 } else {
41661 return false;
41662 }
41663 }
41664
41665
41666 template<typename FunctionObj>
41667 void
41668 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
41669 {
41670 typedef typename get_function_ref_invoker2<
41671 FunctionObj,
41672 R ,
41673 T0 , T1
41674 >::type
41675 actual_invoker_type;
41676
41677 invoker = &actual_invoker_type::invoke;
41678 manager = &reference_manager<FunctionObj>::get;
41679 }
41680
41681 template<typename FunctionObj>
41682 bool
41683 assign_to(const reference_wrapper<FunctionObj>& f,
41684 function_buffer& functor, function_obj_ref_tag)
41685 {
41686 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
41687
41688
41689
41690
41691 functor.const_obj_ptr = f.get_pointer();
41692 return true;
41693 } else {
41694 return false;
41695 }
41696 }
41697
41698 public:
41699 invoker_type invoker;
41700 };
41701 }
41702 }
41703
41704 template<
41705 typename R ,
41706 typename T0 , typename T1,
41707 typename Allocator = std::allocator<function_base>
41708 >
41709 class function2 : public function_base
41710 {
41711 public:
41712
41713 typedef R result_type;
41714
41715
41716
41717
41718
41719 private:
41720 typedef boost::detail::function::basic_vtable2<
41721 R , T0 , T1, Allocator>
41722 vtable_type;
41723
41724 struct clear_type {};
41725
41726 public:
41727 static const int args = 2;
41728
41729
41730 template<typename Args>
41731 struct sig
41732 {
41733 typedef result_type type;
41734 };
41735
41736
41737
41738
41739 typedef T0 first_argument_type;
41740 typedef T1 second_argument_type;
41741
41742
41743 static const int arity = 2;
41744 typedef T0 arg1_type; typedef T1 arg2_type;
41745
41746 typedef Allocator allocator_type;
41747 typedef function2 self_type;
41748
41749 function2() : function_base() { }
41750
41751
41752
41753 template<typename Functor>
41754 function2(Functor f
41755
41756 ,typename enable_if_c<
41757 (boost::type_traits::ice_not<
41758 (is_integral<Functor>::value)>::value),
41759 int>::type = 0
41760
41761 ) :
41762 function_base()
41763 {
41764 this->assign_to(f);
41765 }
41766
41767
41768 function2(clear_type*) : function_base() { }
41769
41770
41771
41772
41773
41774
41775
41776 function2(const function2& f) : function_base()
41777 {
41778 this->assign_to_own(f);
41779 }
41780
41781 ~function2() { clear(); }
41782# 544 "/usr/include/boost/function/function_template.hpp" 3 4
41783 result_type operator()( T0 a0 , T1 a1) const;
41784
41785
41786
41787
41788
41789
41790
41791 template<typename Functor>
41792
41793 typename enable_if_c<
41794 (boost::type_traits::ice_not<
41795 (is_integral<Functor>::value)>::value),
41796 function2&>::type
41797
41798
41799
41800 operator=(Functor f)
41801 {
41802 this->clear();
41803 try {
41804 this->assign_to(f);
41805 } catch (...) {
41806 vtable = 0;
41807 throw;
41808 }
41809 return *this;
41810 }
41811
41812
41813 function2& operator=(clear_type*)
41814 {
41815 this->clear();
41816 return *this;
41817 }
41818# 589 "/usr/include/boost/function/function_template.hpp" 3 4
41819 function2& operator=(const function2& f)
41820 {
41821 if (&f == this)
41822 return *this;
41823
41824 this->clear();
41825 try {
41826 this->assign_to_own(f);
41827 } catch (...) {
41828 vtable = 0;
41829 throw;
41830 }
41831 return *this;
41832 }
41833
41834 void swap(function2& other)
41835 {
41836 if (&other == this)
41837 return;
41838
41839 function2 tmp = *this;
41840 *this = other;
41841 other = tmp;
41842 }
41843
41844
41845 void clear()
41846 {
41847 if (vtable) {
41848 static_cast<vtable_type*>(vtable)->clear(this->functor);
41849 vtable = 0;
41850 }
41851 }
41852
41853
41854
41855
41856
41857 private:
41858 struct dummy {
41859 void nonnull() {};
41860 };
41861
41862 typedef void (dummy::*safe_bool)();
41863
41864 public:
41865 operator safe_bool () const
41866 { return (this->empty())? 0 : &dummy::nonnull; }
41867
41868 bool operator!() const
41869 { return this->empty(); }
41870
41871
41872 private:
41873 void assign_to_own(const function2& f)
41874 {
41875 if (!f.empty()) {
41876 this->vtable = f.vtable;
41877 f.vtable->manager(f.functor, this->functor,
41878 boost::detail::function::clone_functor_tag);
41879 }
41880 }
41881
41882 template<typename Functor>
41883 void assign_to(Functor f)
41884 {
41885 static vtable_type stored_vtable(f);
41886 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
41887 else vtable = 0;
41888 }
41889 };
41890
41891 template<typename R , typename T0 , typename T1 ,
41892 typename Allocator>
41893 inline void swap(function2<
41894 R ,
41895 T0 , T1 ,
41896 Allocator
41897 >& f1,
41898 function2<
41899 R ,
41900 T0 , T1,
41901 Allocator
41902 >& f2)
41903 {
41904 f1.swap(f2);
41905 }
41906
41907
41908 template<typename R , typename T0 , typename T1,
41909 typename Allocator>
41910 typename function2<
41911 R , T0 , T1,
41912 Allocator>::result_type
41913 function2<R , T0 , T1,
41914
41915 Allocator>
41916 ::operator()( T0 a0 , T1 a1) const
41917 {
41918 if (this->empty())
41919 boost::throw_exception(bad_function_call());
41920
41921 return static_cast<vtable_type*>(vtable)->invoker
41922 (this->functor , a0 , a1);
41923 }
41924
41925
41926
41927template<typename R , typename T0 , typename T1 ,
41928 typename Allocator>
41929 void operator==(const function2<
41930 R ,
41931 T0 , T1 ,
41932 Allocator>&,
41933 const function2<
41934 R ,
41935 T0 , T1 ,
41936 Allocator>&);
41937template<typename R , typename T0 , typename T1 ,
41938 typename Allocator>
41939 void operator!=(const function2<
41940 R ,
41941 T0 , T1 ,
41942 Allocator>&,
41943 const function2<
41944 R ,
41945 T0 , T1 ,
41946 Allocator>&);
41947# 726 "/usr/include/boost/function/function_template.hpp" 3 4
41948template<typename R ,
41949 typename T0 , typename T1,
41950 typename Allocator>
41951class function<R ( T0 , T1), Allocator>
41952 : public function2<R, T0 , T1
41953 , Allocator>
41954{
41955 typedef function2<R, T0 , T1
41956 , Allocator> base_type;
41957 typedef function self_type;
41958
41959 struct clear_type {};
41960
41961public:
41962 typedef typename base_type::allocator_type allocator_type;
41963
41964 function() : base_type() {}
41965
41966 template<typename Functor>
41967 function(Functor f
41968
41969 ,typename enable_if_c<
41970 (boost::type_traits::ice_not<
41971 (is_integral<Functor>::value)>::value),
41972 int>::type = 0
41973
41974 ) :
41975 base_type(f)
41976 {
41977 }
41978
41979
41980 function(clear_type*) : base_type() {}
41981
41982
41983 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
41984
41985 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
41986
41987 self_type& operator=(const self_type& f)
41988 {
41989 self_type(f).swap(*this);
41990 return *this;
41991 }
41992
41993 template<typename Functor>
41994
41995 typename enable_if_c<
41996 (boost::type_traits::ice_not<
41997 (is_integral<Functor>::value)>::value),
41998 self_type&>::type
41999
42000
42001
42002 operator=(Functor f)
42003 {
42004 self_type(f).swap(*this);
42005 return *this;
42006 }
42007
42008
42009 self_type& operator=(clear_type*)
42010 {
42011 this->clear();
42012 return *this;
42013 }
42014
42015
42016 self_type& operator=(const base_type& f)
42017 {
42018 self_type(f).swap(*this);
42019 return *this;
42020 }
42021};
42022# 808 "/usr/include/boost/function/function_template.hpp" 3 4
42023}
42024# 24 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
42025# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
42026# 58 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
42027
42028
42029
42030
42031# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
42032# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
42033# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
42034# 28 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
42035# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
42036# 83 "/usr/include/boost/function/function_template.hpp" 3 4
42037namespace boost {
42038 namespace detail {
42039 namespace function {
42040 template<
42041 typename FunctionPtr,
42042 typename R ,
42043 typename T0 , typename T1 , typename T2
42044 >
42045 struct function_invoker3
42046 {
42047 static R invoke(function_buffer& function_ptr ,
42048 T0 a0 , T1 a1 , T2 a2)
42049 {
42050 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
42051 return f( a0 , a1 , a2);
42052 }
42053 };
42054
42055 template<
42056 typename FunctionPtr,
42057 typename R ,
42058 typename T0 , typename T1 , typename T2
42059 >
42060 struct void_function_invoker3
42061 {
42062 static void
42063 invoke(function_buffer& function_ptr ,
42064 T0 a0 , T1 a1 , T2 a2)
42065
42066 {
42067 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
42068 f( a0 , a1 , a2);
42069 }
42070 };
42071
42072 template<
42073 typename FunctionObj,
42074 typename R ,
42075 typename T0 , typename T1 , typename T2
42076 >
42077 struct function_obj_invoker3
42078 {
42079 static R invoke(function_buffer& function_obj_ptr ,
42080 T0 a0 , T1 a1 , T2 a2)
42081
42082 {
42083 FunctionObj* f;
42084 if (function_allows_small_object_optimization<FunctionObj>::value)
42085 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
42086 else
42087 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42088 return (*f)( a0 , a1 , a2);
42089 }
42090 };
42091
42092 template<
42093 typename FunctionObj,
42094 typename R ,
42095 typename T0 , typename T1 , typename T2
42096 >
42097 struct void_function_obj_invoker3
42098 {
42099 static void
42100 invoke(function_buffer& function_obj_ptr ,
42101 T0 a0 , T1 a1 , T2 a2)
42102
42103 {
42104 FunctionObj* f;
42105 if (function_allows_small_object_optimization<FunctionObj>::value)
42106 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
42107 else
42108 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42109 (*f)( a0 , a1 , a2);
42110 }
42111 };
42112
42113 template<
42114 typename FunctionObj,
42115 typename R ,
42116 typename T0 , typename T1 , typename T2
42117 >
42118 struct function_ref_invoker3
42119 {
42120 static R invoke(function_buffer& function_obj_ptr ,
42121 T0 a0 , T1 a1 , T2 a2)
42122
42123 {
42124 FunctionObj* f =
42125 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42126 return (*f)( a0 , a1 , a2);
42127 }
42128 };
42129
42130 template<
42131 typename FunctionObj,
42132 typename R ,
42133 typename T0 , typename T1 , typename T2
42134 >
42135 struct void_function_ref_invoker3
42136 {
42137 static void
42138 invoke(function_buffer& function_obj_ptr ,
42139 T0 a0 , T1 a1 , T2 a2)
42140
42141 {
42142 FunctionObj* f =
42143 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42144 (*f)( a0 , a1 , a2);
42145 }
42146 };
42147
42148 template<
42149 typename FunctionPtr,
42150 typename R ,
42151 typename T0 , typename T1 , typename T2
42152 >
42153 struct get_function_invoker3
42154 {
42155 typedef typename mpl::if_c<(is_void<R>::value),
42156 void_function_invoker3<
42157 FunctionPtr,
42158 R ,
42159 T0 , T1 , T2
42160 >,
42161 function_invoker3<
42162 FunctionPtr,
42163 R ,
42164 T0 , T1 , T2
42165 >
42166 >::type type;
42167 };
42168
42169 template<
42170 typename FunctionObj,
42171 typename R ,
42172 typename T0 , typename T1 , typename T2
42173 >
42174 struct get_function_obj_invoker3
42175 {
42176 typedef typename mpl::if_c<(is_void<R>::value),
42177 void_function_obj_invoker3<
42178 FunctionObj,
42179 R ,
42180 T0 , T1 , T2
42181 >,
42182 function_obj_invoker3<
42183 FunctionObj,
42184 R ,
42185 T0 , T1 , T2
42186 >
42187 >::type type;
42188 };
42189
42190 template<
42191 typename FunctionObj,
42192 typename R ,
42193 typename T0 , typename T1 , typename T2
42194 >
42195 struct get_function_ref_invoker3
42196 {
42197 typedef typename mpl::if_c<(is_void<R>::value),
42198 void_function_ref_invoker3<
42199 FunctionObj,
42200 R ,
42201 T0 , T1 , T2
42202 >,
42203 function_ref_invoker3<
42204 FunctionObj,
42205 R ,
42206 T0 , T1 , T2
42207 >
42208 >::type type;
42209 };
42210
42211
42212
42213
42214 template<typename R , typename T0 , typename T1 , typename T2,
42215 typename Allocator>
42216 struct basic_vtable3 : vtable_base
42217 {
42218
42219 typedef R result_type;
42220
42221
42222
42223
42224 typedef result_type (*invoker_type)(function_buffer&
42225 ,
42226 T0 , T1 , T2);
42227
42228 template<typename F>
42229 basic_vtable3(F f) : vtable_base(), invoker(0)
42230 {
42231 init(f);
42232 }
42233
42234 template<typename F>
42235 bool assign_to(F f, function_buffer& functor)
42236 {
42237 typedef typename get_function_tag<F>::type tag;
42238 return assign_to(f, functor, tag());
42239 }
42240
42241 void clear(function_buffer& functor)
42242 {
42243 if (manager)
42244 manager(functor, functor, destroy_functor_tag);
42245 }
42246
42247 private:
42248 template<typename F>
42249 void init(F f)
42250 {
42251 typedef typename get_function_tag<F>::type tag;
42252 init(f, tag());
42253 }
42254
42255
42256 template<typename FunctionPtr>
42257 void init(FunctionPtr , function_ptr_tag)
42258 {
42259 typedef typename get_function_invoker3<
42260 FunctionPtr,
42261 R ,
42262 T0 , T1 , T2
42263 >::type
42264 actual_invoker_type;
42265
42266 invoker = &actual_invoker_type::invoke;
42267 manager = &functor_manager<FunctionPtr, Allocator>::manage;
42268 }
42269
42270 template<typename FunctionPtr>
42271 bool
42272 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
42273 {
42274 this->clear(functor);
42275 if (f) {
42276
42277
42278 functor.func_ptr = (void (*)())(f);
42279 return true;
42280 } else {
42281 return false;
42282 }
42283 }
42284
42285
42286
42287 template<typename MemberPtr>
42288 void init(MemberPtr f, member_ptr_tag)
42289 {
42290
42291
42292
42293 this->init(mem_fn(f));
42294 }
42295
42296 template<typename MemberPtr>
42297 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
42298 {
42299
42300
42301
42302 if (f) {
42303 this->assign_to(mem_fn(f), functor);
42304 return true;
42305 } else {
42306 return false;
42307 }
42308 }
42309
42310
42311
42312 template<typename FunctionObj>
42313 void init(FunctionObj , function_obj_tag)
42314 {
42315 typedef typename get_function_obj_invoker3<
42316 FunctionObj,
42317 R ,
42318 T0 , T1 , T2
42319 >::type
42320 actual_invoker_type;
42321
42322 invoker = &actual_invoker_type::invoke;
42323 manager = &functor_manager<FunctionObj, Allocator>::manage;
42324 }
42325
42326
42327 template<typename FunctionObj>
42328 void
42329 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
42330 {
42331 new ((void*)&functor.data) FunctionObj(f);
42332 }
42333
42334
42335 template<typename FunctionObj>
42336 void
42337 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
42338 {
42339
42340 typedef typename Allocator::template rebind<FunctionObj>::other
42341 allocator_type;
42342 typedef typename allocator_type::pointer pointer_type;
42343
42344 allocator_type allocator;
42345 pointer_type copy = allocator.allocate(1);
42346 allocator.construct(copy, f);
42347
42348
42349 functor.obj_ptr = static_cast<FunctionObj*>(copy);
42350
42351
42352
42353 }
42354
42355 template<typename FunctionObj>
42356 bool
42357 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
42358 {
42359 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
42360 assign_functor(f, functor,
42361 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
42362 return true;
42363 } else {
42364 return false;
42365 }
42366 }
42367
42368
42369 template<typename FunctionObj>
42370 void
42371 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
42372 {
42373 typedef typename get_function_ref_invoker3<
42374 FunctionObj,
42375 R ,
42376 T0 , T1 , T2
42377 >::type
42378 actual_invoker_type;
42379
42380 invoker = &actual_invoker_type::invoke;
42381 manager = &reference_manager<FunctionObj>::get;
42382 }
42383
42384 template<typename FunctionObj>
42385 bool
42386 assign_to(const reference_wrapper<FunctionObj>& f,
42387 function_buffer& functor, function_obj_ref_tag)
42388 {
42389 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
42390
42391
42392
42393
42394 functor.const_obj_ptr = f.get_pointer();
42395 return true;
42396 } else {
42397 return false;
42398 }
42399 }
42400
42401 public:
42402 invoker_type invoker;
42403 };
42404 }
42405 }
42406
42407 template<
42408 typename R ,
42409 typename T0 , typename T1 , typename T2,
42410 typename Allocator = std::allocator<function_base>
42411 >
42412 class function3 : public function_base
42413 {
42414 public:
42415
42416 typedef R result_type;
42417
42418
42419
42420
42421
42422 private:
42423 typedef boost::detail::function::basic_vtable3<
42424 R , T0 , T1 , T2, Allocator>
42425 vtable_type;
42426
42427 struct clear_type {};
42428
42429 public:
42430 static const int args = 3;
42431
42432
42433 template<typename Args>
42434 struct sig
42435 {
42436 typedef result_type type;
42437 };
42438# 492 "/usr/include/boost/function/function_template.hpp" 3 4
42439 static const int arity = 3;
42440 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type;
42441
42442 typedef Allocator allocator_type;
42443 typedef function3 self_type;
42444
42445 function3() : function_base() { }
42446
42447
42448
42449 template<typename Functor>
42450 function3(Functor f
42451
42452 ,typename enable_if_c<
42453 (boost::type_traits::ice_not<
42454 (is_integral<Functor>::value)>::value),
42455 int>::type = 0
42456
42457 ) :
42458 function_base()
42459 {
42460 this->assign_to(f);
42461 }
42462
42463
42464 function3(clear_type*) : function_base() { }
42465
42466
42467
42468
42469
42470
42471
42472 function3(const function3& f) : function_base()
42473 {
42474 this->assign_to_own(f);
42475 }
42476
42477 ~function3() { clear(); }
42478# 544 "/usr/include/boost/function/function_template.hpp" 3 4
42479 result_type operator()( T0 a0 , T1 a1 , T2 a2) const;
42480
42481
42482
42483
42484
42485
42486
42487 template<typename Functor>
42488
42489 typename enable_if_c<
42490 (boost::type_traits::ice_not<
42491 (is_integral<Functor>::value)>::value),
42492 function3&>::type
42493
42494
42495
42496 operator=(Functor f)
42497 {
42498 this->clear();
42499 try {
42500 this->assign_to(f);
42501 } catch (...) {
42502 vtable = 0;
42503 throw;
42504 }
42505 return *this;
42506 }
42507
42508
42509 function3& operator=(clear_type*)
42510 {
42511 this->clear();
42512 return *this;
42513 }
42514# 589 "/usr/include/boost/function/function_template.hpp" 3 4
42515 function3& operator=(const function3& f)
42516 {
42517 if (&f == this)
42518 return *this;
42519
42520 this->clear();
42521 try {
42522 this->assign_to_own(f);
42523 } catch (...) {
42524 vtable = 0;
42525 throw;
42526 }
42527 return *this;
42528 }
42529
42530 void swap(function3& other)
42531 {
42532 if (&other == this)
42533 return;
42534
42535 function3 tmp = *this;
42536 *this = other;
42537 other = tmp;
42538 }
42539
42540
42541 void clear()
42542 {
42543 if (vtable) {
42544 static_cast<vtable_type*>(vtable)->clear(this->functor);
42545 vtable = 0;
42546 }
42547 }
42548
42549
42550
42551
42552
42553 private:
42554 struct dummy {
42555 void nonnull() {};
42556 };
42557
42558 typedef void (dummy::*safe_bool)();
42559
42560 public:
42561 operator safe_bool () const
42562 { return (this->empty())? 0 : &dummy::nonnull; }
42563
42564 bool operator!() const
42565 { return this->empty(); }
42566
42567
42568 private:
42569 void assign_to_own(const function3& f)
42570 {
42571 if (!f.empty()) {
42572 this->vtable = f.vtable;
42573 f.vtable->manager(f.functor, this->functor,
42574 boost::detail::function::clone_functor_tag);
42575 }
42576 }
42577
42578 template<typename Functor>
42579 void assign_to(Functor f)
42580 {
42581 static vtable_type stored_vtable(f);
42582 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
42583 else vtable = 0;
42584 }
42585 };
42586
42587 template<typename R , typename T0 , typename T1 , typename T2 ,
42588 typename Allocator>
42589 inline void swap(function3<
42590 R ,
42591 T0 , T1 , T2 ,
42592 Allocator
42593 >& f1,
42594 function3<
42595 R ,
42596 T0 , T1 , T2,
42597 Allocator
42598 >& f2)
42599 {
42600 f1.swap(f2);
42601 }
42602
42603
42604 template<typename R , typename T0 , typename T1 , typename T2,
42605 typename Allocator>
42606 typename function3<
42607 R , T0 , T1 , T2,
42608 Allocator>::result_type
42609 function3<R , T0 , T1 , T2,
42610
42611 Allocator>
42612 ::operator()( T0 a0 , T1 a1 , T2 a2) const
42613 {
42614 if (this->empty())
42615 boost::throw_exception(bad_function_call());
42616
42617 return static_cast<vtable_type*>(vtable)->invoker
42618 (this->functor , a0 , a1 , a2);
42619 }
42620
42621
42622
42623template<typename R , typename T0 , typename T1 , typename T2 ,
42624 typename Allocator>
42625 void operator==(const function3<
42626 R ,
42627 T0 , T1 , T2 ,
42628 Allocator>&,
42629 const function3<
42630 R ,
42631 T0 , T1 , T2 ,
42632 Allocator>&);
42633template<typename R , typename T0 , typename T1 , typename T2 ,
42634 typename Allocator>
42635 void operator!=(const function3<
42636 R ,
42637 T0 , T1 , T2 ,
42638 Allocator>&,
42639 const function3<
42640 R ,
42641 T0 , T1 , T2 ,
42642 Allocator>&);
42643# 726 "/usr/include/boost/function/function_template.hpp" 3 4
42644template<typename R ,
42645 typename T0 , typename T1 , typename T2,
42646 typename Allocator>
42647class function<R ( T0 , T1 , T2), Allocator>
42648 : public function3<R, T0 , T1 , T2
42649 , Allocator>
42650{
42651 typedef function3<R, T0 , T1 , T2
42652 , Allocator> base_type;
42653 typedef function self_type;
42654
42655 struct clear_type {};
42656
42657public:
42658 typedef typename base_type::allocator_type allocator_type;
42659
42660 function() : base_type() {}
42661
42662 template<typename Functor>
42663 function(Functor f
42664
42665 ,typename enable_if_c<
42666 (boost::type_traits::ice_not<
42667 (is_integral<Functor>::value)>::value),
42668 int>::type = 0
42669
42670 ) :
42671 base_type(f)
42672 {
42673 }
42674
42675
42676 function(clear_type*) : base_type() {}
42677
42678
42679 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
42680
42681 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
42682
42683 self_type& operator=(const self_type& f)
42684 {
42685 self_type(f).swap(*this);
42686 return *this;
42687 }
42688
42689 template<typename Functor>
42690
42691 typename enable_if_c<
42692 (boost::type_traits::ice_not<
42693 (is_integral<Functor>::value)>::value),
42694 self_type&>::type
42695
42696
42697
42698 operator=(Functor f)
42699 {
42700 self_type(f).swap(*this);
42701 return *this;
42702 }
42703
42704
42705 self_type& operator=(clear_type*)
42706 {
42707 this->clear();
42708 return *this;
42709 }
42710
42711
42712 self_type& operator=(const base_type& f)
42713 {
42714 self_type(f).swap(*this);
42715 return *this;
42716 }
42717};
42718# 808 "/usr/include/boost/function/function_template.hpp" 3 4
42719}
42720# 29 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
42721# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
42722# 63 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
42723
42724
42725
42726
42727# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
42728# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
42729# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
42730# 33 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
42731# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
42732# 83 "/usr/include/boost/function/function_template.hpp" 3 4
42733namespace boost {
42734 namespace detail {
42735 namespace function {
42736 template<
42737 typename FunctionPtr,
42738 typename R ,
42739 typename T0 , typename T1 , typename T2 , typename T3
42740 >
42741 struct function_invoker4
42742 {
42743 static R invoke(function_buffer& function_ptr ,
42744 T0 a0 , T1 a1 , T2 a2 , T3 a3)
42745 {
42746 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
42747 return f( a0 , a1 , a2 , a3);
42748 }
42749 };
42750
42751 template<
42752 typename FunctionPtr,
42753 typename R ,
42754 typename T0 , typename T1 , typename T2 , typename T3
42755 >
42756 struct void_function_invoker4
42757 {
42758 static void
42759 invoke(function_buffer& function_ptr ,
42760 T0 a0 , T1 a1 , T2 a2 , T3 a3)
42761
42762 {
42763 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
42764 f( a0 , a1 , a2 , a3);
42765 }
42766 };
42767
42768 template<
42769 typename FunctionObj,
42770 typename R ,
42771 typename T0 , typename T1 , typename T2 , typename T3
42772 >
42773 struct function_obj_invoker4
42774 {
42775 static R invoke(function_buffer& function_obj_ptr ,
42776 T0 a0 , T1 a1 , T2 a2 , T3 a3)
42777
42778 {
42779 FunctionObj* f;
42780 if (function_allows_small_object_optimization<FunctionObj>::value)
42781 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
42782 else
42783 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42784 return (*f)( a0 , a1 , a2 , a3);
42785 }
42786 };
42787
42788 template<
42789 typename FunctionObj,
42790 typename R ,
42791 typename T0 , typename T1 , typename T2 , typename T3
42792 >
42793 struct void_function_obj_invoker4
42794 {
42795 static void
42796 invoke(function_buffer& function_obj_ptr ,
42797 T0 a0 , T1 a1 , T2 a2 , T3 a3)
42798
42799 {
42800 FunctionObj* f;
42801 if (function_allows_small_object_optimization<FunctionObj>::value)
42802 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
42803 else
42804 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42805 (*f)( a0 , a1 , a2 , a3);
42806 }
42807 };
42808
42809 template<
42810 typename FunctionObj,
42811 typename R ,
42812 typename T0 , typename T1 , typename T2 , typename T3
42813 >
42814 struct function_ref_invoker4
42815 {
42816 static R invoke(function_buffer& function_obj_ptr ,
42817 T0 a0 , T1 a1 , T2 a2 , T3 a3)
42818
42819 {
42820 FunctionObj* f =
42821 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42822 return (*f)( a0 , a1 , a2 , a3);
42823 }
42824 };
42825
42826 template<
42827 typename FunctionObj,
42828 typename R ,
42829 typename T0 , typename T1 , typename T2 , typename T3
42830 >
42831 struct void_function_ref_invoker4
42832 {
42833 static void
42834 invoke(function_buffer& function_obj_ptr ,
42835 T0 a0 , T1 a1 , T2 a2 , T3 a3)
42836
42837 {
42838 FunctionObj* f =
42839 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
42840 (*f)( a0 , a1 , a2 , a3);
42841 }
42842 };
42843
42844 template<
42845 typename FunctionPtr,
42846 typename R ,
42847 typename T0 , typename T1 , typename T2 , typename T3
42848 >
42849 struct get_function_invoker4
42850 {
42851 typedef typename mpl::if_c<(is_void<R>::value),
42852 void_function_invoker4<
42853 FunctionPtr,
42854 R ,
42855 T0 , T1 , T2 , T3
42856 >,
42857 function_invoker4<
42858 FunctionPtr,
42859 R ,
42860 T0 , T1 , T2 , T3
42861 >
42862 >::type type;
42863 };
42864
42865 template<
42866 typename FunctionObj,
42867 typename R ,
42868 typename T0 , typename T1 , typename T2 , typename T3
42869 >
42870 struct get_function_obj_invoker4
42871 {
42872 typedef typename mpl::if_c<(is_void<R>::value),
42873 void_function_obj_invoker4<
42874 FunctionObj,
42875 R ,
42876 T0 , T1 , T2 , T3
42877 >,
42878 function_obj_invoker4<
42879 FunctionObj,
42880 R ,
42881 T0 , T1 , T2 , T3
42882 >
42883 >::type type;
42884 };
42885
42886 template<
42887 typename FunctionObj,
42888 typename R ,
42889 typename T0 , typename T1 , typename T2 , typename T3
42890 >
42891 struct get_function_ref_invoker4
42892 {
42893 typedef typename mpl::if_c<(is_void<R>::value),
42894 void_function_ref_invoker4<
42895 FunctionObj,
42896 R ,
42897 T0 , T1 , T2 , T3
42898 >,
42899 function_ref_invoker4<
42900 FunctionObj,
42901 R ,
42902 T0 , T1 , T2 , T3
42903 >
42904 >::type type;
42905 };
42906
42907
42908
42909
42910 template<typename R , typename T0 , typename T1 , typename T2 , typename T3,
42911 typename Allocator>
42912 struct basic_vtable4 : vtable_base
42913 {
42914
42915 typedef R result_type;
42916
42917
42918
42919
42920 typedef result_type (*invoker_type)(function_buffer&
42921 ,
42922 T0 , T1 , T2 , T3);
42923
42924 template<typename F>
42925 basic_vtable4(F f) : vtable_base(), invoker(0)
42926 {
42927 init(f);
42928 }
42929
42930 template<typename F>
42931 bool assign_to(F f, function_buffer& functor)
42932 {
42933 typedef typename get_function_tag<F>::type tag;
42934 return assign_to(f, functor, tag());
42935 }
42936
42937 void clear(function_buffer& functor)
42938 {
42939 if (manager)
42940 manager(functor, functor, destroy_functor_tag);
42941 }
42942
42943 private:
42944 template<typename F>
42945 void init(F f)
42946 {
42947 typedef typename get_function_tag<F>::type tag;
42948 init(f, tag());
42949 }
42950
42951
42952 template<typename FunctionPtr>
42953 void init(FunctionPtr , function_ptr_tag)
42954 {
42955 typedef typename get_function_invoker4<
42956 FunctionPtr,
42957 R ,
42958 T0 , T1 , T2 , T3
42959 >::type
42960 actual_invoker_type;
42961
42962 invoker = &actual_invoker_type::invoke;
42963 manager = &functor_manager<FunctionPtr, Allocator>::manage;
42964 }
42965
42966 template<typename FunctionPtr>
42967 bool
42968 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
42969 {
42970 this->clear(functor);
42971 if (f) {
42972
42973
42974 functor.func_ptr = (void (*)())(f);
42975 return true;
42976 } else {
42977 return false;
42978 }
42979 }
42980
42981
42982
42983 template<typename MemberPtr>
42984 void init(MemberPtr f, member_ptr_tag)
42985 {
42986
42987
42988
42989 this->init(mem_fn(f));
42990 }
42991
42992 template<typename MemberPtr>
42993 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
42994 {
42995
42996
42997
42998 if (f) {
42999 this->assign_to(mem_fn(f), functor);
43000 return true;
43001 } else {
43002 return false;
43003 }
43004 }
43005
43006
43007
43008 template<typename FunctionObj>
43009 void init(FunctionObj , function_obj_tag)
43010 {
43011 typedef typename get_function_obj_invoker4<
43012 FunctionObj,
43013 R ,
43014 T0 , T1 , T2 , T3
43015 >::type
43016 actual_invoker_type;
43017
43018 invoker = &actual_invoker_type::invoke;
43019 manager = &functor_manager<FunctionObj, Allocator>::manage;
43020 }
43021
43022
43023 template<typename FunctionObj>
43024 void
43025 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
43026 {
43027 new ((void*)&functor.data) FunctionObj(f);
43028 }
43029
43030
43031 template<typename FunctionObj>
43032 void
43033 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
43034 {
43035
43036 typedef typename Allocator::template rebind<FunctionObj>::other
43037 allocator_type;
43038 typedef typename allocator_type::pointer pointer_type;
43039
43040 allocator_type allocator;
43041 pointer_type copy = allocator.allocate(1);
43042 allocator.construct(copy, f);
43043
43044
43045 functor.obj_ptr = static_cast<FunctionObj*>(copy);
43046
43047
43048
43049 }
43050
43051 template<typename FunctionObj>
43052 bool
43053 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
43054 {
43055 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
43056 assign_functor(f, functor,
43057 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
43058 return true;
43059 } else {
43060 return false;
43061 }
43062 }
43063
43064
43065 template<typename FunctionObj>
43066 void
43067 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
43068 {
43069 typedef typename get_function_ref_invoker4<
43070 FunctionObj,
43071 R ,
43072 T0 , T1 , T2 , T3
43073 >::type
43074 actual_invoker_type;
43075
43076 invoker = &actual_invoker_type::invoke;
43077 manager = &reference_manager<FunctionObj>::get;
43078 }
43079
43080 template<typename FunctionObj>
43081 bool
43082 assign_to(const reference_wrapper<FunctionObj>& f,
43083 function_buffer& functor, function_obj_ref_tag)
43084 {
43085 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
43086
43087
43088
43089
43090 functor.const_obj_ptr = f.get_pointer();
43091 return true;
43092 } else {
43093 return false;
43094 }
43095 }
43096
43097 public:
43098 invoker_type invoker;
43099 };
43100 }
43101 }
43102
43103 template<
43104 typename R ,
43105 typename T0 , typename T1 , typename T2 , typename T3,
43106 typename Allocator = std::allocator<function_base>
43107 >
43108 class function4 : public function_base
43109 {
43110 public:
43111
43112 typedef R result_type;
43113
43114
43115
43116
43117
43118 private:
43119 typedef boost::detail::function::basic_vtable4<
43120 R , T0 , T1 , T2 , T3, Allocator>
43121 vtable_type;
43122
43123 struct clear_type {};
43124
43125 public:
43126 static const int args = 4;
43127
43128
43129 template<typename Args>
43130 struct sig
43131 {
43132 typedef result_type type;
43133 };
43134# 492 "/usr/include/boost/function/function_template.hpp" 3 4
43135 static const int arity = 4;
43136 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type;
43137
43138 typedef Allocator allocator_type;
43139 typedef function4 self_type;
43140
43141 function4() : function_base() { }
43142
43143
43144
43145 template<typename Functor>
43146 function4(Functor f
43147
43148 ,typename enable_if_c<
43149 (boost::type_traits::ice_not<
43150 (is_integral<Functor>::value)>::value),
43151 int>::type = 0
43152
43153 ) :
43154 function_base()
43155 {
43156 this->assign_to(f);
43157 }
43158
43159
43160 function4(clear_type*) : function_base() { }
43161
43162
43163
43164
43165
43166
43167
43168 function4(const function4& f) : function_base()
43169 {
43170 this->assign_to_own(f);
43171 }
43172
43173 ~function4() { clear(); }
43174# 544 "/usr/include/boost/function/function_template.hpp" 3 4
43175 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3) const;
43176
43177
43178
43179
43180
43181
43182
43183 template<typename Functor>
43184
43185 typename enable_if_c<
43186 (boost::type_traits::ice_not<
43187 (is_integral<Functor>::value)>::value),
43188 function4&>::type
43189
43190
43191
43192 operator=(Functor f)
43193 {
43194 this->clear();
43195 try {
43196 this->assign_to(f);
43197 } catch (...) {
43198 vtable = 0;
43199 throw;
43200 }
43201 return *this;
43202 }
43203
43204
43205 function4& operator=(clear_type*)
43206 {
43207 this->clear();
43208 return *this;
43209 }
43210# 589 "/usr/include/boost/function/function_template.hpp" 3 4
43211 function4& operator=(const function4& f)
43212 {
43213 if (&f == this)
43214 return *this;
43215
43216 this->clear();
43217 try {
43218 this->assign_to_own(f);
43219 } catch (...) {
43220 vtable = 0;
43221 throw;
43222 }
43223 return *this;
43224 }
43225
43226 void swap(function4& other)
43227 {
43228 if (&other == this)
43229 return;
43230
43231 function4 tmp = *this;
43232 *this = other;
43233 other = tmp;
43234 }
43235
43236
43237 void clear()
43238 {
43239 if (vtable) {
43240 static_cast<vtable_type*>(vtable)->clear(this->functor);
43241 vtable = 0;
43242 }
43243 }
43244
43245
43246
43247
43248
43249 private:
43250 struct dummy {
43251 void nonnull() {};
43252 };
43253
43254 typedef void (dummy::*safe_bool)();
43255
43256 public:
43257 operator safe_bool () const
43258 { return (this->empty())? 0 : &dummy::nonnull; }
43259
43260 bool operator!() const
43261 { return this->empty(); }
43262
43263
43264 private:
43265 void assign_to_own(const function4& f)
43266 {
43267 if (!f.empty()) {
43268 this->vtable = f.vtable;
43269 f.vtable->manager(f.functor, this->functor,
43270 boost::detail::function::clone_functor_tag);
43271 }
43272 }
43273
43274 template<typename Functor>
43275 void assign_to(Functor f)
43276 {
43277 static vtable_type stored_vtable(f);
43278 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
43279 else vtable = 0;
43280 }
43281 };
43282
43283 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 ,
43284 typename Allocator>
43285 inline void swap(function4<
43286 R ,
43287 T0 , T1 , T2 , T3 ,
43288 Allocator
43289 >& f1,
43290 function4<
43291 R ,
43292 T0 , T1 , T2 , T3,
43293 Allocator
43294 >& f2)
43295 {
43296 f1.swap(f2);
43297 }
43298
43299
43300 template<typename R , typename T0 , typename T1 , typename T2 , typename T3,
43301 typename Allocator>
43302 typename function4<
43303 R , T0 , T1 , T2 , T3,
43304 Allocator>::result_type
43305 function4<R , T0 , T1 , T2 , T3,
43306
43307 Allocator>
43308 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3) const
43309 {
43310 if (this->empty())
43311 boost::throw_exception(bad_function_call());
43312
43313 return static_cast<vtable_type*>(vtable)->invoker
43314 (this->functor , a0 , a1 , a2 , a3);
43315 }
43316
43317
43318
43319template<typename R , typename T0 , typename T1 , typename T2 , typename T3 ,
43320 typename Allocator>
43321 void operator==(const function4<
43322 R ,
43323 T0 , T1 , T2 , T3 ,
43324 Allocator>&,
43325 const function4<
43326 R ,
43327 T0 , T1 , T2 , T3 ,
43328 Allocator>&);
43329template<typename R , typename T0 , typename T1 , typename T2 , typename T3 ,
43330 typename Allocator>
43331 void operator!=(const function4<
43332 R ,
43333 T0 , T1 , T2 , T3 ,
43334 Allocator>&,
43335 const function4<
43336 R ,
43337 T0 , T1 , T2 , T3 ,
43338 Allocator>&);
43339# 726 "/usr/include/boost/function/function_template.hpp" 3 4
43340template<typename R ,
43341 typename T0 , typename T1 , typename T2 , typename T3,
43342 typename Allocator>
43343class function<R ( T0 , T1 , T2 , T3), Allocator>
43344 : public function4<R, T0 , T1 , T2 , T3
43345 , Allocator>
43346{
43347 typedef function4<R, T0 , T1 , T2 , T3
43348 , Allocator> base_type;
43349 typedef function self_type;
43350
43351 struct clear_type {};
43352
43353public:
43354 typedef typename base_type::allocator_type allocator_type;
43355
43356 function() : base_type() {}
43357
43358 template<typename Functor>
43359 function(Functor f
43360
43361 ,typename enable_if_c<
43362 (boost::type_traits::ice_not<
43363 (is_integral<Functor>::value)>::value),
43364 int>::type = 0
43365
43366 ) :
43367 base_type(f)
43368 {
43369 }
43370
43371
43372 function(clear_type*) : base_type() {}
43373
43374
43375 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
43376
43377 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
43378
43379 self_type& operator=(const self_type& f)
43380 {
43381 self_type(f).swap(*this);
43382 return *this;
43383 }
43384
43385 template<typename Functor>
43386
43387 typename enable_if_c<
43388 (boost::type_traits::ice_not<
43389 (is_integral<Functor>::value)>::value),
43390 self_type&>::type
43391
43392
43393
43394 operator=(Functor f)
43395 {
43396 self_type(f).swap(*this);
43397 return *this;
43398 }
43399
43400
43401 self_type& operator=(clear_type*)
43402 {
43403 this->clear();
43404 return *this;
43405 }
43406
43407
43408 self_type& operator=(const base_type& f)
43409 {
43410 self_type(f).swap(*this);
43411 return *this;
43412 }
43413};
43414# 808 "/usr/include/boost/function/function_template.hpp" 3 4
43415}
43416# 34 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
43417# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
43418# 68 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
43419
43420
43421
43422
43423# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
43424# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
43425# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
43426# 38 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
43427# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
43428# 83 "/usr/include/boost/function/function_template.hpp" 3 4
43429namespace boost {
43430 namespace detail {
43431 namespace function {
43432 template<
43433 typename FunctionPtr,
43434 typename R ,
43435 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43436 >
43437 struct function_invoker5
43438 {
43439 static R invoke(function_buffer& function_ptr ,
43440 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
43441 {
43442 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
43443 return f( a0 , a1 , a2 , a3 , a4);
43444 }
43445 };
43446
43447 template<
43448 typename FunctionPtr,
43449 typename R ,
43450 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43451 >
43452 struct void_function_invoker5
43453 {
43454 static void
43455 invoke(function_buffer& function_ptr ,
43456 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
43457
43458 {
43459 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
43460 f( a0 , a1 , a2 , a3 , a4);
43461 }
43462 };
43463
43464 template<
43465 typename FunctionObj,
43466 typename R ,
43467 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43468 >
43469 struct function_obj_invoker5
43470 {
43471 static R invoke(function_buffer& function_obj_ptr ,
43472 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
43473
43474 {
43475 FunctionObj* f;
43476 if (function_allows_small_object_optimization<FunctionObj>::value)
43477 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
43478 else
43479 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
43480 return (*f)( a0 , a1 , a2 , a3 , a4);
43481 }
43482 };
43483
43484 template<
43485 typename FunctionObj,
43486 typename R ,
43487 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43488 >
43489 struct void_function_obj_invoker5
43490 {
43491 static void
43492 invoke(function_buffer& function_obj_ptr ,
43493 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
43494
43495 {
43496 FunctionObj* f;
43497 if (function_allows_small_object_optimization<FunctionObj>::value)
43498 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
43499 else
43500 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
43501 (*f)( a0 , a1 , a2 , a3 , a4);
43502 }
43503 };
43504
43505 template<
43506 typename FunctionObj,
43507 typename R ,
43508 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43509 >
43510 struct function_ref_invoker5
43511 {
43512 static R invoke(function_buffer& function_obj_ptr ,
43513 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
43514
43515 {
43516 FunctionObj* f =
43517 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
43518 return (*f)( a0 , a1 , a2 , a3 , a4);
43519 }
43520 };
43521
43522 template<
43523 typename FunctionObj,
43524 typename R ,
43525 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43526 >
43527 struct void_function_ref_invoker5
43528 {
43529 static void
43530 invoke(function_buffer& function_obj_ptr ,
43531 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
43532
43533 {
43534 FunctionObj* f =
43535 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
43536 (*f)( a0 , a1 , a2 , a3 , a4);
43537 }
43538 };
43539
43540 template<
43541 typename FunctionPtr,
43542 typename R ,
43543 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43544 >
43545 struct get_function_invoker5
43546 {
43547 typedef typename mpl::if_c<(is_void<R>::value),
43548 void_function_invoker5<
43549 FunctionPtr,
43550 R ,
43551 T0 , T1 , T2 , T3 , T4
43552 >,
43553 function_invoker5<
43554 FunctionPtr,
43555 R ,
43556 T0 , T1 , T2 , T3 , T4
43557 >
43558 >::type type;
43559 };
43560
43561 template<
43562 typename FunctionObj,
43563 typename R ,
43564 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43565 >
43566 struct get_function_obj_invoker5
43567 {
43568 typedef typename mpl::if_c<(is_void<R>::value),
43569 void_function_obj_invoker5<
43570 FunctionObj,
43571 R ,
43572 T0 , T1 , T2 , T3 , T4
43573 >,
43574 function_obj_invoker5<
43575 FunctionObj,
43576 R ,
43577 T0 , T1 , T2 , T3 , T4
43578 >
43579 >::type type;
43580 };
43581
43582 template<
43583 typename FunctionObj,
43584 typename R ,
43585 typename T0 , typename T1 , typename T2 , typename T3 , typename T4
43586 >
43587 struct get_function_ref_invoker5
43588 {
43589 typedef typename mpl::if_c<(is_void<R>::value),
43590 void_function_ref_invoker5<
43591 FunctionObj,
43592 R ,
43593 T0 , T1 , T2 , T3 , T4
43594 >,
43595 function_ref_invoker5<
43596 FunctionObj,
43597 R ,
43598 T0 , T1 , T2 , T3 , T4
43599 >
43600 >::type type;
43601 };
43602
43603
43604
43605
43606 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4,
43607 typename Allocator>
43608 struct basic_vtable5 : vtable_base
43609 {
43610
43611 typedef R result_type;
43612
43613
43614
43615
43616 typedef result_type (*invoker_type)(function_buffer&
43617 ,
43618 T0 , T1 , T2 , T3 , T4);
43619
43620 template<typename F>
43621 basic_vtable5(F f) : vtable_base(), invoker(0)
43622 {
43623 init(f);
43624 }
43625
43626 template<typename F>
43627 bool assign_to(F f, function_buffer& functor)
43628 {
43629 typedef typename get_function_tag<F>::type tag;
43630 return assign_to(f, functor, tag());
43631 }
43632
43633 void clear(function_buffer& functor)
43634 {
43635 if (manager)
43636 manager(functor, functor, destroy_functor_tag);
43637 }
43638
43639 private:
43640 template<typename F>
43641 void init(F f)
43642 {
43643 typedef typename get_function_tag<F>::type tag;
43644 init(f, tag());
43645 }
43646
43647
43648 template<typename FunctionPtr>
43649 void init(FunctionPtr , function_ptr_tag)
43650 {
43651 typedef typename get_function_invoker5<
43652 FunctionPtr,
43653 R ,
43654 T0 , T1 , T2 , T3 , T4
43655 >::type
43656 actual_invoker_type;
43657
43658 invoker = &actual_invoker_type::invoke;
43659 manager = &functor_manager<FunctionPtr, Allocator>::manage;
43660 }
43661
43662 template<typename FunctionPtr>
43663 bool
43664 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
43665 {
43666 this->clear(functor);
43667 if (f) {
43668
43669
43670 functor.func_ptr = (void (*)())(f);
43671 return true;
43672 } else {
43673 return false;
43674 }
43675 }
43676
43677
43678
43679 template<typename MemberPtr>
43680 void init(MemberPtr f, member_ptr_tag)
43681 {
43682
43683
43684
43685 this->init(mem_fn(f));
43686 }
43687
43688 template<typename MemberPtr>
43689 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
43690 {
43691
43692
43693
43694 if (f) {
43695 this->assign_to(mem_fn(f), functor);
43696 return true;
43697 } else {
43698 return false;
43699 }
43700 }
43701
43702
43703
43704 template<typename FunctionObj>
43705 void init(FunctionObj , function_obj_tag)
43706 {
43707 typedef typename get_function_obj_invoker5<
43708 FunctionObj,
43709 R ,
43710 T0 , T1 , T2 , T3 , T4
43711 >::type
43712 actual_invoker_type;
43713
43714 invoker = &actual_invoker_type::invoke;
43715 manager = &functor_manager<FunctionObj, Allocator>::manage;
43716 }
43717
43718
43719 template<typename FunctionObj>
43720 void
43721 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
43722 {
43723 new ((void*)&functor.data) FunctionObj(f);
43724 }
43725
43726
43727 template<typename FunctionObj>
43728 void
43729 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
43730 {
43731
43732 typedef typename Allocator::template rebind<FunctionObj>::other
43733 allocator_type;
43734 typedef typename allocator_type::pointer pointer_type;
43735
43736 allocator_type allocator;
43737 pointer_type copy = allocator.allocate(1);
43738 allocator.construct(copy, f);
43739
43740
43741 functor.obj_ptr = static_cast<FunctionObj*>(copy);
43742
43743
43744
43745 }
43746
43747 template<typename FunctionObj>
43748 bool
43749 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
43750 {
43751 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
43752 assign_functor(f, functor,
43753 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
43754 return true;
43755 } else {
43756 return false;
43757 }
43758 }
43759
43760
43761 template<typename FunctionObj>
43762 void
43763 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
43764 {
43765 typedef typename get_function_ref_invoker5<
43766 FunctionObj,
43767 R ,
43768 T0 , T1 , T2 , T3 , T4
43769 >::type
43770 actual_invoker_type;
43771
43772 invoker = &actual_invoker_type::invoke;
43773 manager = &reference_manager<FunctionObj>::get;
43774 }
43775
43776 template<typename FunctionObj>
43777 bool
43778 assign_to(const reference_wrapper<FunctionObj>& f,
43779 function_buffer& functor, function_obj_ref_tag)
43780 {
43781 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
43782
43783
43784
43785
43786 functor.const_obj_ptr = f.get_pointer();
43787 return true;
43788 } else {
43789 return false;
43790 }
43791 }
43792
43793 public:
43794 invoker_type invoker;
43795 };
43796 }
43797 }
43798
43799 template<
43800 typename R ,
43801 typename T0 , typename T1 , typename T2 , typename T3 , typename T4,
43802 typename Allocator = std::allocator<function_base>
43803 >
43804 class function5 : public function_base
43805 {
43806 public:
43807
43808 typedef R result_type;
43809
43810
43811
43812
43813
43814 private:
43815 typedef boost::detail::function::basic_vtable5<
43816 R , T0 , T1 , T2 , T3 , T4, Allocator>
43817 vtable_type;
43818
43819 struct clear_type {};
43820
43821 public:
43822 static const int args = 5;
43823
43824
43825 template<typename Args>
43826 struct sig
43827 {
43828 typedef result_type type;
43829 };
43830# 492 "/usr/include/boost/function/function_template.hpp" 3 4
43831 static const int arity = 5;
43832 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type;
43833
43834 typedef Allocator allocator_type;
43835 typedef function5 self_type;
43836
43837 function5() : function_base() { }
43838
43839
43840
43841 template<typename Functor>
43842 function5(Functor f
43843
43844 ,typename enable_if_c<
43845 (boost::type_traits::ice_not<
43846 (is_integral<Functor>::value)>::value),
43847 int>::type = 0
43848
43849 ) :
43850 function_base()
43851 {
43852 this->assign_to(f);
43853 }
43854
43855
43856 function5(clear_type*) : function_base() { }
43857
43858
43859
43860
43861
43862
43863
43864 function5(const function5& f) : function_base()
43865 {
43866 this->assign_to_own(f);
43867 }
43868
43869 ~function5() { clear(); }
43870# 544 "/usr/include/boost/function/function_template.hpp" 3 4
43871 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4) const;
43872
43873
43874
43875
43876
43877
43878
43879 template<typename Functor>
43880
43881 typename enable_if_c<
43882 (boost::type_traits::ice_not<
43883 (is_integral<Functor>::value)>::value),
43884 function5&>::type
43885
43886
43887
43888 operator=(Functor f)
43889 {
43890 this->clear();
43891 try {
43892 this->assign_to(f);
43893 } catch (...) {
43894 vtable = 0;
43895 throw;
43896 }
43897 return *this;
43898 }
43899
43900
43901 function5& operator=(clear_type*)
43902 {
43903 this->clear();
43904 return *this;
43905 }
43906# 589 "/usr/include/boost/function/function_template.hpp" 3 4
43907 function5& operator=(const function5& f)
43908 {
43909 if (&f == this)
43910 return *this;
43911
43912 this->clear();
43913 try {
43914 this->assign_to_own(f);
43915 } catch (...) {
43916 vtable = 0;
43917 throw;
43918 }
43919 return *this;
43920 }
43921
43922 void swap(function5& other)
43923 {
43924 if (&other == this)
43925 return;
43926
43927 function5 tmp = *this;
43928 *this = other;
43929 other = tmp;
43930 }
43931
43932
43933 void clear()
43934 {
43935 if (vtable) {
43936 static_cast<vtable_type*>(vtable)->clear(this->functor);
43937 vtable = 0;
43938 }
43939 }
43940
43941
43942
43943
43944
43945 private:
43946 struct dummy {
43947 void nonnull() {};
43948 };
43949
43950 typedef void (dummy::*safe_bool)();
43951
43952 public:
43953 operator safe_bool () const
43954 { return (this->empty())? 0 : &dummy::nonnull; }
43955
43956 bool operator!() const
43957 { return this->empty(); }
43958
43959
43960 private:
43961 void assign_to_own(const function5& f)
43962 {
43963 if (!f.empty()) {
43964 this->vtable = f.vtable;
43965 f.vtable->manager(f.functor, this->functor,
43966 boost::detail::function::clone_functor_tag);
43967 }
43968 }
43969
43970 template<typename Functor>
43971 void assign_to(Functor f)
43972 {
43973 static vtable_type stored_vtable(f);
43974 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
43975 else vtable = 0;
43976 }
43977 };
43978
43979 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 ,
43980 typename Allocator>
43981 inline void swap(function5<
43982 R ,
43983 T0 , T1 , T2 , T3 , T4 ,
43984 Allocator
43985 >& f1,
43986 function5<
43987 R ,
43988 T0 , T1 , T2 , T3 , T4,
43989 Allocator
43990 >& f2)
43991 {
43992 f1.swap(f2);
43993 }
43994
43995
43996 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4,
43997 typename Allocator>
43998 typename function5<
43999 R , T0 , T1 , T2 , T3 , T4,
44000 Allocator>::result_type
44001 function5<R , T0 , T1 , T2 , T3 , T4,
44002
44003 Allocator>
44004 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4) const
44005 {
44006 if (this->empty())
44007 boost::throw_exception(bad_function_call());
44008
44009 return static_cast<vtable_type*>(vtable)->invoker
44010 (this->functor , a0 , a1 , a2 , a3 , a4);
44011 }
44012
44013
44014
44015template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 ,
44016 typename Allocator>
44017 void operator==(const function5<
44018 R ,
44019 T0 , T1 , T2 , T3 , T4 ,
44020 Allocator>&,
44021 const function5<
44022 R ,
44023 T0 , T1 , T2 , T3 , T4 ,
44024 Allocator>&);
44025template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 ,
44026 typename Allocator>
44027 void operator!=(const function5<
44028 R ,
44029 T0 , T1 , T2 , T3 , T4 ,
44030 Allocator>&,
44031 const function5<
44032 R ,
44033 T0 , T1 , T2 , T3 , T4 ,
44034 Allocator>&);
44035# 726 "/usr/include/boost/function/function_template.hpp" 3 4
44036template<typename R ,
44037 typename T0 , typename T1 , typename T2 , typename T3 , typename T4,
44038 typename Allocator>
44039class function<R ( T0 , T1 , T2 , T3 , T4), Allocator>
44040 : public function5<R, T0 , T1 , T2 , T3 , T4
44041 , Allocator>
44042{
44043 typedef function5<R, T0 , T1 , T2 , T3 , T4
44044 , Allocator> base_type;
44045 typedef function self_type;
44046
44047 struct clear_type {};
44048
44049public:
44050 typedef typename base_type::allocator_type allocator_type;
44051
44052 function() : base_type() {}
44053
44054 template<typename Functor>
44055 function(Functor f
44056
44057 ,typename enable_if_c<
44058 (boost::type_traits::ice_not<
44059 (is_integral<Functor>::value)>::value),
44060 int>::type = 0
44061
44062 ) :
44063 base_type(f)
44064 {
44065 }
44066
44067
44068 function(clear_type*) : base_type() {}
44069
44070
44071 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
44072
44073 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
44074
44075 self_type& operator=(const self_type& f)
44076 {
44077 self_type(f).swap(*this);
44078 return *this;
44079 }
44080
44081 template<typename Functor>
44082
44083 typename enable_if_c<
44084 (boost::type_traits::ice_not<
44085 (is_integral<Functor>::value)>::value),
44086 self_type&>::type
44087
44088
44089
44090 operator=(Functor f)
44091 {
44092 self_type(f).swap(*this);
44093 return *this;
44094 }
44095
44096
44097 self_type& operator=(clear_type*)
44098 {
44099 this->clear();
44100 return *this;
44101 }
44102
44103
44104 self_type& operator=(const base_type& f)
44105 {
44106 self_type(f).swap(*this);
44107 return *this;
44108 }
44109};
44110# 808 "/usr/include/boost/function/function_template.hpp" 3 4
44111}
44112# 39 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
44113# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
44114# 73 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
44115
44116
44117
44118
44119# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
44120# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
44121# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
44122# 43 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
44123# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
44124# 83 "/usr/include/boost/function/function_template.hpp" 3 4
44125namespace boost {
44126 namespace detail {
44127 namespace function {
44128 template<
44129 typename FunctionPtr,
44130 typename R ,
44131 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44132 >
44133 struct function_invoker6
44134 {
44135 static R invoke(function_buffer& function_ptr ,
44136 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
44137 {
44138 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
44139 return f( a0 , a1 , a2 , a3 , a4 , a5);
44140 }
44141 };
44142
44143 template<
44144 typename FunctionPtr,
44145 typename R ,
44146 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44147 >
44148 struct void_function_invoker6
44149 {
44150 static void
44151 invoke(function_buffer& function_ptr ,
44152 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
44153
44154 {
44155 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
44156 f( a0 , a1 , a2 , a3 , a4 , a5);
44157 }
44158 };
44159
44160 template<
44161 typename FunctionObj,
44162 typename R ,
44163 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44164 >
44165 struct function_obj_invoker6
44166 {
44167 static R invoke(function_buffer& function_obj_ptr ,
44168 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
44169
44170 {
44171 FunctionObj* f;
44172 if (function_allows_small_object_optimization<FunctionObj>::value)
44173 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
44174 else
44175 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44176 return (*f)( a0 , a1 , a2 , a3 , a4 , a5);
44177 }
44178 };
44179
44180 template<
44181 typename FunctionObj,
44182 typename R ,
44183 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44184 >
44185 struct void_function_obj_invoker6
44186 {
44187 static void
44188 invoke(function_buffer& function_obj_ptr ,
44189 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
44190
44191 {
44192 FunctionObj* f;
44193 if (function_allows_small_object_optimization<FunctionObj>::value)
44194 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
44195 else
44196 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44197 (*f)( a0 , a1 , a2 , a3 , a4 , a5);
44198 }
44199 };
44200
44201 template<
44202 typename FunctionObj,
44203 typename R ,
44204 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44205 >
44206 struct function_ref_invoker6
44207 {
44208 static R invoke(function_buffer& function_obj_ptr ,
44209 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
44210
44211 {
44212 FunctionObj* f =
44213 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44214 return (*f)( a0 , a1 , a2 , a3 , a4 , a5);
44215 }
44216 };
44217
44218 template<
44219 typename FunctionObj,
44220 typename R ,
44221 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44222 >
44223 struct void_function_ref_invoker6
44224 {
44225 static void
44226 invoke(function_buffer& function_obj_ptr ,
44227 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
44228
44229 {
44230 FunctionObj* f =
44231 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44232 (*f)( a0 , a1 , a2 , a3 , a4 , a5);
44233 }
44234 };
44235
44236 template<
44237 typename FunctionPtr,
44238 typename R ,
44239 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44240 >
44241 struct get_function_invoker6
44242 {
44243 typedef typename mpl::if_c<(is_void<R>::value),
44244 void_function_invoker6<
44245 FunctionPtr,
44246 R ,
44247 T0 , T1 , T2 , T3 , T4 , T5
44248 >,
44249 function_invoker6<
44250 FunctionPtr,
44251 R ,
44252 T0 , T1 , T2 , T3 , T4 , T5
44253 >
44254 >::type type;
44255 };
44256
44257 template<
44258 typename FunctionObj,
44259 typename R ,
44260 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44261 >
44262 struct get_function_obj_invoker6
44263 {
44264 typedef typename mpl::if_c<(is_void<R>::value),
44265 void_function_obj_invoker6<
44266 FunctionObj,
44267 R ,
44268 T0 , T1 , T2 , T3 , T4 , T5
44269 >,
44270 function_obj_invoker6<
44271 FunctionObj,
44272 R ,
44273 T0 , T1 , T2 , T3 , T4 , T5
44274 >
44275 >::type type;
44276 };
44277
44278 template<
44279 typename FunctionObj,
44280 typename R ,
44281 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
44282 >
44283 struct get_function_ref_invoker6
44284 {
44285 typedef typename mpl::if_c<(is_void<R>::value),
44286 void_function_ref_invoker6<
44287 FunctionObj,
44288 R ,
44289 T0 , T1 , T2 , T3 , T4 , T5
44290 >,
44291 function_ref_invoker6<
44292 FunctionObj,
44293 R ,
44294 T0 , T1 , T2 , T3 , T4 , T5
44295 >
44296 >::type type;
44297 };
44298
44299
44300
44301
44302 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5,
44303 typename Allocator>
44304 struct basic_vtable6 : vtable_base
44305 {
44306
44307 typedef R result_type;
44308
44309
44310
44311
44312 typedef result_type (*invoker_type)(function_buffer&
44313 ,
44314 T0 , T1 , T2 , T3 , T4 , T5);
44315
44316 template<typename F>
44317 basic_vtable6(F f) : vtable_base(), invoker(0)
44318 {
44319 init(f);
44320 }
44321
44322 template<typename F>
44323 bool assign_to(F f, function_buffer& functor)
44324 {
44325 typedef typename get_function_tag<F>::type tag;
44326 return assign_to(f, functor, tag());
44327 }
44328
44329 void clear(function_buffer& functor)
44330 {
44331 if (manager)
44332 manager(functor, functor, destroy_functor_tag);
44333 }
44334
44335 private:
44336 template<typename F>
44337 void init(F f)
44338 {
44339 typedef typename get_function_tag<F>::type tag;
44340 init(f, tag());
44341 }
44342
44343
44344 template<typename FunctionPtr>
44345 void init(FunctionPtr , function_ptr_tag)
44346 {
44347 typedef typename get_function_invoker6<
44348 FunctionPtr,
44349 R ,
44350 T0 , T1 , T2 , T3 , T4 , T5
44351 >::type
44352 actual_invoker_type;
44353
44354 invoker = &actual_invoker_type::invoke;
44355 manager = &functor_manager<FunctionPtr, Allocator>::manage;
44356 }
44357
44358 template<typename FunctionPtr>
44359 bool
44360 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
44361 {
44362 this->clear(functor);
44363 if (f) {
44364
44365
44366 functor.func_ptr = (void (*)())(f);
44367 return true;
44368 } else {
44369 return false;
44370 }
44371 }
44372
44373
44374
44375 template<typename MemberPtr>
44376 void init(MemberPtr f, member_ptr_tag)
44377 {
44378
44379
44380
44381 this->init(mem_fn(f));
44382 }
44383
44384 template<typename MemberPtr>
44385 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
44386 {
44387
44388
44389
44390 if (f) {
44391 this->assign_to(mem_fn(f), functor);
44392 return true;
44393 } else {
44394 return false;
44395 }
44396 }
44397
44398
44399
44400 template<typename FunctionObj>
44401 void init(FunctionObj , function_obj_tag)
44402 {
44403 typedef typename get_function_obj_invoker6<
44404 FunctionObj,
44405 R ,
44406 T0 , T1 , T2 , T3 , T4 , T5
44407 >::type
44408 actual_invoker_type;
44409
44410 invoker = &actual_invoker_type::invoke;
44411 manager = &functor_manager<FunctionObj, Allocator>::manage;
44412 }
44413
44414
44415 template<typename FunctionObj>
44416 void
44417 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
44418 {
44419 new ((void*)&functor.data) FunctionObj(f);
44420 }
44421
44422
44423 template<typename FunctionObj>
44424 void
44425 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
44426 {
44427
44428 typedef typename Allocator::template rebind<FunctionObj>::other
44429 allocator_type;
44430 typedef typename allocator_type::pointer pointer_type;
44431
44432 allocator_type allocator;
44433 pointer_type copy = allocator.allocate(1);
44434 allocator.construct(copy, f);
44435
44436
44437 functor.obj_ptr = static_cast<FunctionObj*>(copy);
44438
44439
44440
44441 }
44442
44443 template<typename FunctionObj>
44444 bool
44445 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
44446 {
44447 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
44448 assign_functor(f, functor,
44449 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
44450 return true;
44451 } else {
44452 return false;
44453 }
44454 }
44455
44456
44457 template<typename FunctionObj>
44458 void
44459 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
44460 {
44461 typedef typename get_function_ref_invoker6<
44462 FunctionObj,
44463 R ,
44464 T0 , T1 , T2 , T3 , T4 , T5
44465 >::type
44466 actual_invoker_type;
44467
44468 invoker = &actual_invoker_type::invoke;
44469 manager = &reference_manager<FunctionObj>::get;
44470 }
44471
44472 template<typename FunctionObj>
44473 bool
44474 assign_to(const reference_wrapper<FunctionObj>& f,
44475 function_buffer& functor, function_obj_ref_tag)
44476 {
44477 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
44478
44479
44480
44481
44482 functor.const_obj_ptr = f.get_pointer();
44483 return true;
44484 } else {
44485 return false;
44486 }
44487 }
44488
44489 public:
44490 invoker_type invoker;
44491 };
44492 }
44493 }
44494
44495 template<
44496 typename R ,
44497 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5,
44498 typename Allocator = std::allocator<function_base>
44499 >
44500 class function6 : public function_base
44501 {
44502 public:
44503
44504 typedef R result_type;
44505
44506
44507
44508
44509
44510 private:
44511 typedef boost::detail::function::basic_vtable6<
44512 R , T0 , T1 , T2 , T3 , T4 , T5, Allocator>
44513 vtable_type;
44514
44515 struct clear_type {};
44516
44517 public:
44518 static const int args = 6;
44519
44520
44521 template<typename Args>
44522 struct sig
44523 {
44524 typedef result_type type;
44525 };
44526# 492 "/usr/include/boost/function/function_template.hpp" 3 4
44527 static const int arity = 6;
44528 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type;
44529
44530 typedef Allocator allocator_type;
44531 typedef function6 self_type;
44532
44533 function6() : function_base() { }
44534
44535
44536
44537 template<typename Functor>
44538 function6(Functor f
44539
44540 ,typename enable_if_c<
44541 (boost::type_traits::ice_not<
44542 (is_integral<Functor>::value)>::value),
44543 int>::type = 0
44544
44545 ) :
44546 function_base()
44547 {
44548 this->assign_to(f);
44549 }
44550
44551
44552 function6(clear_type*) : function_base() { }
44553
44554
44555
44556
44557
44558
44559
44560 function6(const function6& f) : function_base()
44561 {
44562 this->assign_to_own(f);
44563 }
44564
44565 ~function6() { clear(); }
44566# 544 "/usr/include/boost/function/function_template.hpp" 3 4
44567 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5) const;
44568
44569
44570
44571
44572
44573
44574
44575 template<typename Functor>
44576
44577 typename enable_if_c<
44578 (boost::type_traits::ice_not<
44579 (is_integral<Functor>::value)>::value),
44580 function6&>::type
44581
44582
44583
44584 operator=(Functor f)
44585 {
44586 this->clear();
44587 try {
44588 this->assign_to(f);
44589 } catch (...) {
44590 vtable = 0;
44591 throw;
44592 }
44593 return *this;
44594 }
44595
44596
44597 function6& operator=(clear_type*)
44598 {
44599 this->clear();
44600 return *this;
44601 }
44602# 589 "/usr/include/boost/function/function_template.hpp" 3 4
44603 function6& operator=(const function6& f)
44604 {
44605 if (&f == this)
44606 return *this;
44607
44608 this->clear();
44609 try {
44610 this->assign_to_own(f);
44611 } catch (...) {
44612 vtable = 0;
44613 throw;
44614 }
44615 return *this;
44616 }
44617
44618 void swap(function6& other)
44619 {
44620 if (&other == this)
44621 return;
44622
44623 function6 tmp = *this;
44624 *this = other;
44625 other = tmp;
44626 }
44627
44628
44629 void clear()
44630 {
44631 if (vtable) {
44632 static_cast<vtable_type*>(vtable)->clear(this->functor);
44633 vtable = 0;
44634 }
44635 }
44636
44637
44638
44639
44640
44641 private:
44642 struct dummy {
44643 void nonnull() {};
44644 };
44645
44646 typedef void (dummy::*safe_bool)();
44647
44648 public:
44649 operator safe_bool () const
44650 { return (this->empty())? 0 : &dummy::nonnull; }
44651
44652 bool operator!() const
44653 { return this->empty(); }
44654
44655
44656 private:
44657 void assign_to_own(const function6& f)
44658 {
44659 if (!f.empty()) {
44660 this->vtable = f.vtable;
44661 f.vtable->manager(f.functor, this->functor,
44662 boost::detail::function::clone_functor_tag);
44663 }
44664 }
44665
44666 template<typename Functor>
44667 void assign_to(Functor f)
44668 {
44669 static vtable_type stored_vtable(f);
44670 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
44671 else vtable = 0;
44672 }
44673 };
44674
44675 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 ,
44676 typename Allocator>
44677 inline void swap(function6<
44678 R ,
44679 T0 , T1 , T2 , T3 , T4 , T5 ,
44680 Allocator
44681 >& f1,
44682 function6<
44683 R ,
44684 T0 , T1 , T2 , T3 , T4 , T5,
44685 Allocator
44686 >& f2)
44687 {
44688 f1.swap(f2);
44689 }
44690
44691
44692 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5,
44693 typename Allocator>
44694 typename function6<
44695 R , T0 , T1 , T2 , T3 , T4 , T5,
44696 Allocator>::result_type
44697 function6<R , T0 , T1 , T2 , T3 , T4 , T5,
44698
44699 Allocator>
44700 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5) const
44701 {
44702 if (this->empty())
44703 boost::throw_exception(bad_function_call());
44704
44705 return static_cast<vtable_type*>(vtable)->invoker
44706 (this->functor , a0 , a1 , a2 , a3 , a4 , a5);
44707 }
44708
44709
44710
44711template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 ,
44712 typename Allocator>
44713 void operator==(const function6<
44714 R ,
44715 T0 , T1 , T2 , T3 , T4 , T5 ,
44716 Allocator>&,
44717 const function6<
44718 R ,
44719 T0 , T1 , T2 , T3 , T4 , T5 ,
44720 Allocator>&);
44721template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 ,
44722 typename Allocator>
44723 void operator!=(const function6<
44724 R ,
44725 T0 , T1 , T2 , T3 , T4 , T5 ,
44726 Allocator>&,
44727 const function6<
44728 R ,
44729 T0 , T1 , T2 , T3 , T4 , T5 ,
44730 Allocator>&);
44731# 726 "/usr/include/boost/function/function_template.hpp" 3 4
44732template<typename R ,
44733 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5,
44734 typename Allocator>
44735class function<R ( T0 , T1 , T2 , T3 , T4 , T5), Allocator>
44736 : public function6<R, T0 , T1 , T2 , T3 , T4 , T5
44737 , Allocator>
44738{
44739 typedef function6<R, T0 , T1 , T2 , T3 , T4 , T5
44740 , Allocator> base_type;
44741 typedef function self_type;
44742
44743 struct clear_type {};
44744
44745public:
44746 typedef typename base_type::allocator_type allocator_type;
44747
44748 function() : base_type() {}
44749
44750 template<typename Functor>
44751 function(Functor f
44752
44753 ,typename enable_if_c<
44754 (boost::type_traits::ice_not<
44755 (is_integral<Functor>::value)>::value),
44756 int>::type = 0
44757
44758 ) :
44759 base_type(f)
44760 {
44761 }
44762
44763
44764 function(clear_type*) : base_type() {}
44765
44766
44767 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
44768
44769 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
44770
44771 self_type& operator=(const self_type& f)
44772 {
44773 self_type(f).swap(*this);
44774 return *this;
44775 }
44776
44777 template<typename Functor>
44778
44779 typename enable_if_c<
44780 (boost::type_traits::ice_not<
44781 (is_integral<Functor>::value)>::value),
44782 self_type&>::type
44783
44784
44785
44786 operator=(Functor f)
44787 {
44788 self_type(f).swap(*this);
44789 return *this;
44790 }
44791
44792
44793 self_type& operator=(clear_type*)
44794 {
44795 this->clear();
44796 return *this;
44797 }
44798
44799
44800 self_type& operator=(const base_type& f)
44801 {
44802 self_type(f).swap(*this);
44803 return *this;
44804 }
44805};
44806# 808 "/usr/include/boost/function/function_template.hpp" 3 4
44807}
44808# 44 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
44809# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
44810# 78 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
44811
44812
44813
44814
44815# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
44816# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
44817# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
44818# 48 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
44819# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
44820# 83 "/usr/include/boost/function/function_template.hpp" 3 4
44821namespace boost {
44822 namespace detail {
44823 namespace function {
44824 template<
44825 typename FunctionPtr,
44826 typename R ,
44827 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44828 >
44829 struct function_invoker7
44830 {
44831 static R invoke(function_buffer& function_ptr ,
44832 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
44833 {
44834 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
44835 return f( a0 , a1 , a2 , a3 , a4 , a5 , a6);
44836 }
44837 };
44838
44839 template<
44840 typename FunctionPtr,
44841 typename R ,
44842 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44843 >
44844 struct void_function_invoker7
44845 {
44846 static void
44847 invoke(function_buffer& function_ptr ,
44848 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
44849
44850 {
44851 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
44852 f( a0 , a1 , a2 , a3 , a4 , a5 , a6);
44853 }
44854 };
44855
44856 template<
44857 typename FunctionObj,
44858 typename R ,
44859 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44860 >
44861 struct function_obj_invoker7
44862 {
44863 static R invoke(function_buffer& function_obj_ptr ,
44864 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
44865
44866 {
44867 FunctionObj* f;
44868 if (function_allows_small_object_optimization<FunctionObj>::value)
44869 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
44870 else
44871 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44872 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6);
44873 }
44874 };
44875
44876 template<
44877 typename FunctionObj,
44878 typename R ,
44879 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44880 >
44881 struct void_function_obj_invoker7
44882 {
44883 static void
44884 invoke(function_buffer& function_obj_ptr ,
44885 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
44886
44887 {
44888 FunctionObj* f;
44889 if (function_allows_small_object_optimization<FunctionObj>::value)
44890 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
44891 else
44892 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44893 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6);
44894 }
44895 };
44896
44897 template<
44898 typename FunctionObj,
44899 typename R ,
44900 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44901 >
44902 struct function_ref_invoker7
44903 {
44904 static R invoke(function_buffer& function_obj_ptr ,
44905 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
44906
44907 {
44908 FunctionObj* f =
44909 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44910 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6);
44911 }
44912 };
44913
44914 template<
44915 typename FunctionObj,
44916 typename R ,
44917 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44918 >
44919 struct void_function_ref_invoker7
44920 {
44921 static void
44922 invoke(function_buffer& function_obj_ptr ,
44923 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
44924
44925 {
44926 FunctionObj* f =
44927 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
44928 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6);
44929 }
44930 };
44931
44932 template<
44933 typename FunctionPtr,
44934 typename R ,
44935 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44936 >
44937 struct get_function_invoker7
44938 {
44939 typedef typename mpl::if_c<(is_void<R>::value),
44940 void_function_invoker7<
44941 FunctionPtr,
44942 R ,
44943 T0 , T1 , T2 , T3 , T4 , T5 , T6
44944 >,
44945 function_invoker7<
44946 FunctionPtr,
44947 R ,
44948 T0 , T1 , T2 , T3 , T4 , T5 , T6
44949 >
44950 >::type type;
44951 };
44952
44953 template<
44954 typename FunctionObj,
44955 typename R ,
44956 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44957 >
44958 struct get_function_obj_invoker7
44959 {
44960 typedef typename mpl::if_c<(is_void<R>::value),
44961 void_function_obj_invoker7<
44962 FunctionObj,
44963 R ,
44964 T0 , T1 , T2 , T3 , T4 , T5 , T6
44965 >,
44966 function_obj_invoker7<
44967 FunctionObj,
44968 R ,
44969 T0 , T1 , T2 , T3 , T4 , T5 , T6
44970 >
44971 >::type type;
44972 };
44973
44974 template<
44975 typename FunctionObj,
44976 typename R ,
44977 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
44978 >
44979 struct get_function_ref_invoker7
44980 {
44981 typedef typename mpl::if_c<(is_void<R>::value),
44982 void_function_ref_invoker7<
44983 FunctionObj,
44984 R ,
44985 T0 , T1 , T2 , T3 , T4 , T5 , T6
44986 >,
44987 function_ref_invoker7<
44988 FunctionObj,
44989 R ,
44990 T0 , T1 , T2 , T3 , T4 , T5 , T6
44991 >
44992 >::type type;
44993 };
44994
44995
44996
44997
44998 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6,
44999 typename Allocator>
45000 struct basic_vtable7 : vtable_base
45001 {
45002
45003 typedef R result_type;
45004
45005
45006
45007
45008 typedef result_type (*invoker_type)(function_buffer&
45009 ,
45010 T0 , T1 , T2 , T3 , T4 , T5 , T6);
45011
45012 template<typename F>
45013 basic_vtable7(F f) : vtable_base(), invoker(0)
45014 {
45015 init(f);
45016 }
45017
45018 template<typename F>
45019 bool assign_to(F f, function_buffer& functor)
45020 {
45021 typedef typename get_function_tag<F>::type tag;
45022 return assign_to(f, functor, tag());
45023 }
45024
45025 void clear(function_buffer& functor)
45026 {
45027 if (manager)
45028 manager(functor, functor, destroy_functor_tag);
45029 }
45030
45031 private:
45032 template<typename F>
45033 void init(F f)
45034 {
45035 typedef typename get_function_tag<F>::type tag;
45036 init(f, tag());
45037 }
45038
45039
45040 template<typename FunctionPtr>
45041 void init(FunctionPtr , function_ptr_tag)
45042 {
45043 typedef typename get_function_invoker7<
45044 FunctionPtr,
45045 R ,
45046 T0 , T1 , T2 , T3 , T4 , T5 , T6
45047 >::type
45048 actual_invoker_type;
45049
45050 invoker = &actual_invoker_type::invoke;
45051 manager = &functor_manager<FunctionPtr, Allocator>::manage;
45052 }
45053
45054 template<typename FunctionPtr>
45055 bool
45056 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
45057 {
45058 this->clear(functor);
45059 if (f) {
45060
45061
45062 functor.func_ptr = (void (*)())(f);
45063 return true;
45064 } else {
45065 return false;
45066 }
45067 }
45068
45069
45070
45071 template<typename MemberPtr>
45072 void init(MemberPtr f, member_ptr_tag)
45073 {
45074
45075
45076
45077 this->init(mem_fn(f));
45078 }
45079
45080 template<typename MemberPtr>
45081 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
45082 {
45083
45084
45085
45086 if (f) {
45087 this->assign_to(mem_fn(f), functor);
45088 return true;
45089 } else {
45090 return false;
45091 }
45092 }
45093
45094
45095
45096 template<typename FunctionObj>
45097 void init(FunctionObj , function_obj_tag)
45098 {
45099 typedef typename get_function_obj_invoker7<
45100 FunctionObj,
45101 R ,
45102 T0 , T1 , T2 , T3 , T4 , T5 , T6
45103 >::type
45104 actual_invoker_type;
45105
45106 invoker = &actual_invoker_type::invoke;
45107 manager = &functor_manager<FunctionObj, Allocator>::manage;
45108 }
45109
45110
45111 template<typename FunctionObj>
45112 void
45113 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
45114 {
45115 new ((void*)&functor.data) FunctionObj(f);
45116 }
45117
45118
45119 template<typename FunctionObj>
45120 void
45121 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
45122 {
45123
45124 typedef typename Allocator::template rebind<FunctionObj>::other
45125 allocator_type;
45126 typedef typename allocator_type::pointer pointer_type;
45127
45128 allocator_type allocator;
45129 pointer_type copy = allocator.allocate(1);
45130 allocator.construct(copy, f);
45131
45132
45133 functor.obj_ptr = static_cast<FunctionObj*>(copy);
45134
45135
45136
45137 }
45138
45139 template<typename FunctionObj>
45140 bool
45141 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
45142 {
45143 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
45144 assign_functor(f, functor,
45145 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
45146 return true;
45147 } else {
45148 return false;
45149 }
45150 }
45151
45152
45153 template<typename FunctionObj>
45154 void
45155 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
45156 {
45157 typedef typename get_function_ref_invoker7<
45158 FunctionObj,
45159 R ,
45160 T0 , T1 , T2 , T3 , T4 , T5 , T6
45161 >::type
45162 actual_invoker_type;
45163
45164 invoker = &actual_invoker_type::invoke;
45165 manager = &reference_manager<FunctionObj>::get;
45166 }
45167
45168 template<typename FunctionObj>
45169 bool
45170 assign_to(const reference_wrapper<FunctionObj>& f,
45171 function_buffer& functor, function_obj_ref_tag)
45172 {
45173 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
45174
45175
45176
45177
45178 functor.const_obj_ptr = f.get_pointer();
45179 return true;
45180 } else {
45181 return false;
45182 }
45183 }
45184
45185 public:
45186 invoker_type invoker;
45187 };
45188 }
45189 }
45190
45191 template<
45192 typename R ,
45193 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6,
45194 typename Allocator = std::allocator<function_base>
45195 >
45196 class function7 : public function_base
45197 {
45198 public:
45199
45200 typedef R result_type;
45201
45202
45203
45204
45205
45206 private:
45207 typedef boost::detail::function::basic_vtable7<
45208 R , T0 , T1 , T2 , T3 , T4 , T5 , T6, Allocator>
45209 vtable_type;
45210
45211 struct clear_type {};
45212
45213 public:
45214 static const int args = 7;
45215
45216
45217 template<typename Args>
45218 struct sig
45219 {
45220 typedef result_type type;
45221 };
45222# 492 "/usr/include/boost/function/function_template.hpp" 3 4
45223 static const int arity = 7;
45224 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type;
45225
45226 typedef Allocator allocator_type;
45227 typedef function7 self_type;
45228
45229 function7() : function_base() { }
45230
45231
45232
45233 template<typename Functor>
45234 function7(Functor f
45235
45236 ,typename enable_if_c<
45237 (boost::type_traits::ice_not<
45238 (is_integral<Functor>::value)>::value),
45239 int>::type = 0
45240
45241 ) :
45242 function_base()
45243 {
45244 this->assign_to(f);
45245 }
45246
45247
45248 function7(clear_type*) : function_base() { }
45249
45250
45251
45252
45253
45254
45255
45256 function7(const function7& f) : function_base()
45257 {
45258 this->assign_to_own(f);
45259 }
45260
45261 ~function7() { clear(); }
45262# 544 "/usr/include/boost/function/function_template.hpp" 3 4
45263 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6) const;
45264
45265
45266
45267
45268
45269
45270
45271 template<typename Functor>
45272
45273 typename enable_if_c<
45274 (boost::type_traits::ice_not<
45275 (is_integral<Functor>::value)>::value),
45276 function7&>::type
45277
45278
45279
45280 operator=(Functor f)
45281 {
45282 this->clear();
45283 try {
45284 this->assign_to(f);
45285 } catch (...) {
45286 vtable = 0;
45287 throw;
45288 }
45289 return *this;
45290 }
45291
45292
45293 function7& operator=(clear_type*)
45294 {
45295 this->clear();
45296 return *this;
45297 }
45298# 589 "/usr/include/boost/function/function_template.hpp" 3 4
45299 function7& operator=(const function7& f)
45300 {
45301 if (&f == this)
45302 return *this;
45303
45304 this->clear();
45305 try {
45306 this->assign_to_own(f);
45307 } catch (...) {
45308 vtable = 0;
45309 throw;
45310 }
45311 return *this;
45312 }
45313
45314 void swap(function7& other)
45315 {
45316 if (&other == this)
45317 return;
45318
45319 function7 tmp = *this;
45320 *this = other;
45321 other = tmp;
45322 }
45323
45324
45325 void clear()
45326 {
45327 if (vtable) {
45328 static_cast<vtable_type*>(vtable)->clear(this->functor);
45329 vtable = 0;
45330 }
45331 }
45332
45333
45334
45335
45336
45337 private:
45338 struct dummy {
45339 void nonnull() {};
45340 };
45341
45342 typedef void (dummy::*safe_bool)();
45343
45344 public:
45345 operator safe_bool () const
45346 { return (this->empty())? 0 : &dummy::nonnull; }
45347
45348 bool operator!() const
45349 { return this->empty(); }
45350
45351
45352 private:
45353 void assign_to_own(const function7& f)
45354 {
45355 if (!f.empty()) {
45356 this->vtable = f.vtable;
45357 f.vtable->manager(f.functor, this->functor,
45358 boost::detail::function::clone_functor_tag);
45359 }
45360 }
45361
45362 template<typename Functor>
45363 void assign_to(Functor f)
45364 {
45365 static vtable_type stored_vtable(f);
45366 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
45367 else vtable = 0;
45368 }
45369 };
45370
45371 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 ,
45372 typename Allocator>
45373 inline void swap(function7<
45374 R ,
45375 T0 , T1 , T2 , T3 , T4 , T5 , T6 ,
45376 Allocator
45377 >& f1,
45378 function7<
45379 R ,
45380 T0 , T1 , T2 , T3 , T4 , T5 , T6,
45381 Allocator
45382 >& f2)
45383 {
45384 f1.swap(f2);
45385 }
45386
45387
45388 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6,
45389 typename Allocator>
45390 typename function7<
45391 R , T0 , T1 , T2 , T3 , T4 , T5 , T6,
45392 Allocator>::result_type
45393 function7<R , T0 , T1 , T2 , T3 , T4 , T5 , T6,
45394
45395 Allocator>
45396 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6) const
45397 {
45398 if (this->empty())
45399 boost::throw_exception(bad_function_call());
45400
45401 return static_cast<vtable_type*>(vtable)->invoker
45402 (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6);
45403 }
45404
45405
45406
45407template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 ,
45408 typename Allocator>
45409 void operator==(const function7<
45410 R ,
45411 T0 , T1 , T2 , T3 , T4 , T5 , T6 ,
45412 Allocator>&,
45413 const function7<
45414 R ,
45415 T0 , T1 , T2 , T3 , T4 , T5 , T6 ,
45416 Allocator>&);
45417template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 ,
45418 typename Allocator>
45419 void operator!=(const function7<
45420 R ,
45421 T0 , T1 , T2 , T3 , T4 , T5 , T6 ,
45422 Allocator>&,
45423 const function7<
45424 R ,
45425 T0 , T1 , T2 , T3 , T4 , T5 , T6 ,
45426 Allocator>&);
45427# 726 "/usr/include/boost/function/function_template.hpp" 3 4
45428template<typename R ,
45429 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6,
45430 typename Allocator>
45431class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6), Allocator>
45432 : public function7<R, T0 , T1 , T2 , T3 , T4 , T5 , T6
45433 , Allocator>
45434{
45435 typedef function7<R, T0 , T1 , T2 , T3 , T4 , T5 , T6
45436 , Allocator> base_type;
45437 typedef function self_type;
45438
45439 struct clear_type {};
45440
45441public:
45442 typedef typename base_type::allocator_type allocator_type;
45443
45444 function() : base_type() {}
45445
45446 template<typename Functor>
45447 function(Functor f
45448
45449 ,typename enable_if_c<
45450 (boost::type_traits::ice_not<
45451 (is_integral<Functor>::value)>::value),
45452 int>::type = 0
45453
45454 ) :
45455 base_type(f)
45456 {
45457 }
45458
45459
45460 function(clear_type*) : base_type() {}
45461
45462
45463 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
45464
45465 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
45466
45467 self_type& operator=(const self_type& f)
45468 {
45469 self_type(f).swap(*this);
45470 return *this;
45471 }
45472
45473 template<typename Functor>
45474
45475 typename enable_if_c<
45476 (boost::type_traits::ice_not<
45477 (is_integral<Functor>::value)>::value),
45478 self_type&>::type
45479
45480
45481
45482 operator=(Functor f)
45483 {
45484 self_type(f).swap(*this);
45485 return *this;
45486 }
45487
45488
45489 self_type& operator=(clear_type*)
45490 {
45491 this->clear();
45492 return *this;
45493 }
45494
45495
45496 self_type& operator=(const base_type& f)
45497 {
45498 self_type(f).swap(*this);
45499 return *this;
45500 }
45501};
45502# 808 "/usr/include/boost/function/function_template.hpp" 3 4
45503}
45504# 49 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
45505# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
45506# 83 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
45507
45508
45509
45510
45511# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
45512# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
45513# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
45514# 53 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
45515# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
45516# 83 "/usr/include/boost/function/function_template.hpp" 3 4
45517namespace boost {
45518 namespace detail {
45519 namespace function {
45520 template<
45521 typename FunctionPtr,
45522 typename R ,
45523 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45524 >
45525 struct function_invoker8
45526 {
45527 static R invoke(function_buffer& function_ptr ,
45528 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
45529 {
45530 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
45531 return f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
45532 }
45533 };
45534
45535 template<
45536 typename FunctionPtr,
45537 typename R ,
45538 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45539 >
45540 struct void_function_invoker8
45541 {
45542 static void
45543 invoke(function_buffer& function_ptr ,
45544 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
45545
45546 {
45547 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
45548 f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
45549 }
45550 };
45551
45552 template<
45553 typename FunctionObj,
45554 typename R ,
45555 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45556 >
45557 struct function_obj_invoker8
45558 {
45559 static R invoke(function_buffer& function_obj_ptr ,
45560 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
45561
45562 {
45563 FunctionObj* f;
45564 if (function_allows_small_object_optimization<FunctionObj>::value)
45565 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
45566 else
45567 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
45568 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
45569 }
45570 };
45571
45572 template<
45573 typename FunctionObj,
45574 typename R ,
45575 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45576 >
45577 struct void_function_obj_invoker8
45578 {
45579 static void
45580 invoke(function_buffer& function_obj_ptr ,
45581 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
45582
45583 {
45584 FunctionObj* f;
45585 if (function_allows_small_object_optimization<FunctionObj>::value)
45586 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
45587 else
45588 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
45589 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
45590 }
45591 };
45592
45593 template<
45594 typename FunctionObj,
45595 typename R ,
45596 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45597 >
45598 struct function_ref_invoker8
45599 {
45600 static R invoke(function_buffer& function_obj_ptr ,
45601 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
45602
45603 {
45604 FunctionObj* f =
45605 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
45606 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
45607 }
45608 };
45609
45610 template<
45611 typename FunctionObj,
45612 typename R ,
45613 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45614 >
45615 struct void_function_ref_invoker8
45616 {
45617 static void
45618 invoke(function_buffer& function_obj_ptr ,
45619 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
45620
45621 {
45622 FunctionObj* f =
45623 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
45624 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
45625 }
45626 };
45627
45628 template<
45629 typename FunctionPtr,
45630 typename R ,
45631 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45632 >
45633 struct get_function_invoker8
45634 {
45635 typedef typename mpl::if_c<(is_void<R>::value),
45636 void_function_invoker8<
45637 FunctionPtr,
45638 R ,
45639 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45640 >,
45641 function_invoker8<
45642 FunctionPtr,
45643 R ,
45644 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45645 >
45646 >::type type;
45647 };
45648
45649 template<
45650 typename FunctionObj,
45651 typename R ,
45652 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45653 >
45654 struct get_function_obj_invoker8
45655 {
45656 typedef typename mpl::if_c<(is_void<R>::value),
45657 void_function_obj_invoker8<
45658 FunctionObj,
45659 R ,
45660 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45661 >,
45662 function_obj_invoker8<
45663 FunctionObj,
45664 R ,
45665 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45666 >
45667 >::type type;
45668 };
45669
45670 template<
45671 typename FunctionObj,
45672 typename R ,
45673 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
45674 >
45675 struct get_function_ref_invoker8
45676 {
45677 typedef typename mpl::if_c<(is_void<R>::value),
45678 void_function_ref_invoker8<
45679 FunctionObj,
45680 R ,
45681 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45682 >,
45683 function_ref_invoker8<
45684 FunctionObj,
45685 R ,
45686 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45687 >
45688 >::type type;
45689 };
45690
45691
45692
45693
45694 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,
45695 typename Allocator>
45696 struct basic_vtable8 : vtable_base
45697 {
45698
45699 typedef R result_type;
45700
45701
45702
45703
45704 typedef result_type (*invoker_type)(function_buffer&
45705 ,
45706 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7);
45707
45708 template<typename F>
45709 basic_vtable8(F f) : vtable_base(), invoker(0)
45710 {
45711 init(f);
45712 }
45713
45714 template<typename F>
45715 bool assign_to(F f, function_buffer& functor)
45716 {
45717 typedef typename get_function_tag<F>::type tag;
45718 return assign_to(f, functor, tag());
45719 }
45720
45721 void clear(function_buffer& functor)
45722 {
45723 if (manager)
45724 manager(functor, functor, destroy_functor_tag);
45725 }
45726
45727 private:
45728 template<typename F>
45729 void init(F f)
45730 {
45731 typedef typename get_function_tag<F>::type tag;
45732 init(f, tag());
45733 }
45734
45735
45736 template<typename FunctionPtr>
45737 void init(FunctionPtr , function_ptr_tag)
45738 {
45739 typedef typename get_function_invoker8<
45740 FunctionPtr,
45741 R ,
45742 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45743 >::type
45744 actual_invoker_type;
45745
45746 invoker = &actual_invoker_type::invoke;
45747 manager = &functor_manager<FunctionPtr, Allocator>::manage;
45748 }
45749
45750 template<typename FunctionPtr>
45751 bool
45752 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
45753 {
45754 this->clear(functor);
45755 if (f) {
45756
45757
45758 functor.func_ptr = (void (*)())(f);
45759 return true;
45760 } else {
45761 return false;
45762 }
45763 }
45764
45765
45766
45767 template<typename MemberPtr>
45768 void init(MemberPtr f, member_ptr_tag)
45769 {
45770
45771
45772
45773 this->init(mem_fn(f));
45774 }
45775
45776 template<typename MemberPtr>
45777 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
45778 {
45779
45780
45781
45782 if (f) {
45783 this->assign_to(mem_fn(f), functor);
45784 return true;
45785 } else {
45786 return false;
45787 }
45788 }
45789
45790
45791
45792 template<typename FunctionObj>
45793 void init(FunctionObj , function_obj_tag)
45794 {
45795 typedef typename get_function_obj_invoker8<
45796 FunctionObj,
45797 R ,
45798 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45799 >::type
45800 actual_invoker_type;
45801
45802 invoker = &actual_invoker_type::invoke;
45803 manager = &functor_manager<FunctionObj, Allocator>::manage;
45804 }
45805
45806
45807 template<typename FunctionObj>
45808 void
45809 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
45810 {
45811 new ((void*)&functor.data) FunctionObj(f);
45812 }
45813
45814
45815 template<typename FunctionObj>
45816 void
45817 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
45818 {
45819
45820 typedef typename Allocator::template rebind<FunctionObj>::other
45821 allocator_type;
45822 typedef typename allocator_type::pointer pointer_type;
45823
45824 allocator_type allocator;
45825 pointer_type copy = allocator.allocate(1);
45826 allocator.construct(copy, f);
45827
45828
45829 functor.obj_ptr = static_cast<FunctionObj*>(copy);
45830
45831
45832
45833 }
45834
45835 template<typename FunctionObj>
45836 bool
45837 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
45838 {
45839 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
45840 assign_functor(f, functor,
45841 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
45842 return true;
45843 } else {
45844 return false;
45845 }
45846 }
45847
45848
45849 template<typename FunctionObj>
45850 void
45851 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
45852 {
45853 typedef typename get_function_ref_invoker8<
45854 FunctionObj,
45855 R ,
45856 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
45857 >::type
45858 actual_invoker_type;
45859
45860 invoker = &actual_invoker_type::invoke;
45861 manager = &reference_manager<FunctionObj>::get;
45862 }
45863
45864 template<typename FunctionObj>
45865 bool
45866 assign_to(const reference_wrapper<FunctionObj>& f,
45867 function_buffer& functor, function_obj_ref_tag)
45868 {
45869 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
45870
45871
45872
45873
45874 functor.const_obj_ptr = f.get_pointer();
45875 return true;
45876 } else {
45877 return false;
45878 }
45879 }
45880
45881 public:
45882 invoker_type invoker;
45883 };
45884 }
45885 }
45886
45887 template<
45888 typename R ,
45889 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,
45890 typename Allocator = std::allocator<function_base>
45891 >
45892 class function8 : public function_base
45893 {
45894 public:
45895
45896 typedef R result_type;
45897
45898
45899
45900
45901
45902 private:
45903 typedef boost::detail::function::basic_vtable8<
45904 R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7, Allocator>
45905 vtable_type;
45906
45907 struct clear_type {};
45908
45909 public:
45910 static const int args = 8;
45911
45912
45913 template<typename Args>
45914 struct sig
45915 {
45916 typedef result_type type;
45917 };
45918# 492 "/usr/include/boost/function/function_template.hpp" 3 4
45919 static const int arity = 8;
45920 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type;
45921
45922 typedef Allocator allocator_type;
45923 typedef function8 self_type;
45924
45925 function8() : function_base() { }
45926
45927
45928
45929 template<typename Functor>
45930 function8(Functor f
45931
45932 ,typename enable_if_c<
45933 (boost::type_traits::ice_not<
45934 (is_integral<Functor>::value)>::value),
45935 int>::type = 0
45936
45937 ) :
45938 function_base()
45939 {
45940 this->assign_to(f);
45941 }
45942
45943
45944 function8(clear_type*) : function_base() { }
45945
45946
45947
45948
45949
45950
45951
45952 function8(const function8& f) : function_base()
45953 {
45954 this->assign_to_own(f);
45955 }
45956
45957 ~function8() { clear(); }
45958# 544 "/usr/include/boost/function/function_template.hpp" 3 4
45959 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7) const;
45960
45961
45962
45963
45964
45965
45966
45967 template<typename Functor>
45968
45969 typename enable_if_c<
45970 (boost::type_traits::ice_not<
45971 (is_integral<Functor>::value)>::value),
45972 function8&>::type
45973
45974
45975
45976 operator=(Functor f)
45977 {
45978 this->clear();
45979 try {
45980 this->assign_to(f);
45981 } catch (...) {
45982 vtable = 0;
45983 throw;
45984 }
45985 return *this;
45986 }
45987
45988
45989 function8& operator=(clear_type*)
45990 {
45991 this->clear();
45992 return *this;
45993 }
45994# 589 "/usr/include/boost/function/function_template.hpp" 3 4
45995 function8& operator=(const function8& f)
45996 {
45997 if (&f == this)
45998 return *this;
45999
46000 this->clear();
46001 try {
46002 this->assign_to_own(f);
46003 } catch (...) {
46004 vtable = 0;
46005 throw;
46006 }
46007 return *this;
46008 }
46009
46010 void swap(function8& other)
46011 {
46012 if (&other == this)
46013 return;
46014
46015 function8 tmp = *this;
46016 *this = other;
46017 other = tmp;
46018 }
46019
46020
46021 void clear()
46022 {
46023 if (vtable) {
46024 static_cast<vtable_type*>(vtable)->clear(this->functor);
46025 vtable = 0;
46026 }
46027 }
46028
46029
46030
46031
46032
46033 private:
46034 struct dummy {
46035 void nonnull() {};
46036 };
46037
46038 typedef void (dummy::*safe_bool)();
46039
46040 public:
46041 operator safe_bool () const
46042 { return (this->empty())? 0 : &dummy::nonnull; }
46043
46044 bool operator!() const
46045 { return this->empty(); }
46046
46047
46048 private:
46049 void assign_to_own(const function8& f)
46050 {
46051 if (!f.empty()) {
46052 this->vtable = f.vtable;
46053 f.vtable->manager(f.functor, this->functor,
46054 boost::detail::function::clone_functor_tag);
46055 }
46056 }
46057
46058 template<typename Functor>
46059 void assign_to(Functor f)
46060 {
46061 static vtable_type stored_vtable(f);
46062 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
46063 else vtable = 0;
46064 }
46065 };
46066
46067 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 ,
46068 typename Allocator>
46069 inline void swap(function8<
46070 R ,
46071 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,
46072 Allocator
46073 >& f1,
46074 function8<
46075 R ,
46076 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7,
46077 Allocator
46078 >& f2)
46079 {
46080 f1.swap(f2);
46081 }
46082
46083
46084 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,
46085 typename Allocator>
46086 typename function8<
46087 R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7,
46088 Allocator>::result_type
46089 function8<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7,
46090
46091 Allocator>
46092 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7) const
46093 {
46094 if (this->empty())
46095 boost::throw_exception(bad_function_call());
46096
46097 return static_cast<vtable_type*>(vtable)->invoker
46098 (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
46099 }
46100
46101
46102
46103template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 ,
46104 typename Allocator>
46105 void operator==(const function8<
46106 R ,
46107 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,
46108 Allocator>&,
46109 const function8<
46110 R ,
46111 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,
46112 Allocator>&);
46113template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 ,
46114 typename Allocator>
46115 void operator!=(const function8<
46116 R ,
46117 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,
46118 Allocator>&,
46119 const function8<
46120 R ,
46121 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,
46122 Allocator>&);
46123# 726 "/usr/include/boost/function/function_template.hpp" 3 4
46124template<typename R ,
46125 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,
46126 typename Allocator>
46127class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), Allocator>
46128 : public function8<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
46129 , Allocator>
46130{
46131 typedef function8<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
46132 , Allocator> base_type;
46133 typedef function self_type;
46134
46135 struct clear_type {};
46136
46137public:
46138 typedef typename base_type::allocator_type allocator_type;
46139
46140 function() : base_type() {}
46141
46142 template<typename Functor>
46143 function(Functor f
46144
46145 ,typename enable_if_c<
46146 (boost::type_traits::ice_not<
46147 (is_integral<Functor>::value)>::value),
46148 int>::type = 0
46149
46150 ) :
46151 base_type(f)
46152 {
46153 }
46154
46155
46156 function(clear_type*) : base_type() {}
46157
46158
46159 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
46160
46161 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
46162
46163 self_type& operator=(const self_type& f)
46164 {
46165 self_type(f).swap(*this);
46166 return *this;
46167 }
46168
46169 template<typename Functor>
46170
46171 typename enable_if_c<
46172 (boost::type_traits::ice_not<
46173 (is_integral<Functor>::value)>::value),
46174 self_type&>::type
46175
46176
46177
46178 operator=(Functor f)
46179 {
46180 self_type(f).swap(*this);
46181 return *this;
46182 }
46183
46184
46185 self_type& operator=(clear_type*)
46186 {
46187 this->clear();
46188 return *this;
46189 }
46190
46191
46192 self_type& operator=(const base_type& f)
46193 {
46194 self_type(f).swap(*this);
46195 return *this;
46196 }
46197};
46198# 808 "/usr/include/boost/function/function_template.hpp" 3 4
46199}
46200# 54 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
46201# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
46202# 88 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
46203
46204
46205
46206
46207# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
46208# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
46209# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
46210# 58 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
46211# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
46212# 83 "/usr/include/boost/function/function_template.hpp" 3 4
46213namespace boost {
46214 namespace detail {
46215 namespace function {
46216 template<
46217 typename FunctionPtr,
46218 typename R ,
46219 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46220 >
46221 struct function_invoker9
46222 {
46223 static R invoke(function_buffer& function_ptr ,
46224 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
46225 {
46226 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
46227 return f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46228 }
46229 };
46230
46231 template<
46232 typename FunctionPtr,
46233 typename R ,
46234 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46235 >
46236 struct void_function_invoker9
46237 {
46238 static void
46239 invoke(function_buffer& function_ptr ,
46240 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
46241
46242 {
46243 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
46244 f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46245 }
46246 };
46247
46248 template<
46249 typename FunctionObj,
46250 typename R ,
46251 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46252 >
46253 struct function_obj_invoker9
46254 {
46255 static R invoke(function_buffer& function_obj_ptr ,
46256 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
46257
46258 {
46259 FunctionObj* f;
46260 if (function_allows_small_object_optimization<FunctionObj>::value)
46261 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
46262 else
46263 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46264 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46265 }
46266 };
46267
46268 template<
46269 typename FunctionObj,
46270 typename R ,
46271 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46272 >
46273 struct void_function_obj_invoker9
46274 {
46275 static void
46276 invoke(function_buffer& function_obj_ptr ,
46277 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
46278
46279 {
46280 FunctionObj* f;
46281 if (function_allows_small_object_optimization<FunctionObj>::value)
46282 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
46283 else
46284 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46285 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46286 }
46287 };
46288
46289 template<
46290 typename FunctionObj,
46291 typename R ,
46292 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46293 >
46294 struct function_ref_invoker9
46295 {
46296 static R invoke(function_buffer& function_obj_ptr ,
46297 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
46298
46299 {
46300 FunctionObj* f =
46301 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46302 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46303 }
46304 };
46305
46306 template<
46307 typename FunctionObj,
46308 typename R ,
46309 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46310 >
46311 struct void_function_ref_invoker9
46312 {
46313 static void
46314 invoke(function_buffer& function_obj_ptr ,
46315 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
46316
46317 {
46318 FunctionObj* f =
46319 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46320 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46321 }
46322 };
46323
46324 template<
46325 typename FunctionPtr,
46326 typename R ,
46327 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46328 >
46329 struct get_function_invoker9
46330 {
46331 typedef typename mpl::if_c<(is_void<R>::value),
46332 void_function_invoker9<
46333 FunctionPtr,
46334 R ,
46335 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46336 >,
46337 function_invoker9<
46338 FunctionPtr,
46339 R ,
46340 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46341 >
46342 >::type type;
46343 };
46344
46345 template<
46346 typename FunctionObj,
46347 typename R ,
46348 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46349 >
46350 struct get_function_obj_invoker9
46351 {
46352 typedef typename mpl::if_c<(is_void<R>::value),
46353 void_function_obj_invoker9<
46354 FunctionObj,
46355 R ,
46356 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46357 >,
46358 function_obj_invoker9<
46359 FunctionObj,
46360 R ,
46361 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46362 >
46363 >::type type;
46364 };
46365
46366 template<
46367 typename FunctionObj,
46368 typename R ,
46369 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
46370 >
46371 struct get_function_ref_invoker9
46372 {
46373 typedef typename mpl::if_c<(is_void<R>::value),
46374 void_function_ref_invoker9<
46375 FunctionObj,
46376 R ,
46377 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46378 >,
46379 function_ref_invoker9<
46380 FunctionObj,
46381 R ,
46382 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46383 >
46384 >::type type;
46385 };
46386
46387
46388
46389
46390 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,
46391 typename Allocator>
46392 struct basic_vtable9 : vtable_base
46393 {
46394
46395 typedef R result_type;
46396
46397
46398
46399
46400 typedef result_type (*invoker_type)(function_buffer&
46401 ,
46402 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8);
46403
46404 template<typename F>
46405 basic_vtable9(F f) : vtable_base(), invoker(0)
46406 {
46407 init(f);
46408 }
46409
46410 template<typename F>
46411 bool assign_to(F f, function_buffer& functor)
46412 {
46413 typedef typename get_function_tag<F>::type tag;
46414 return assign_to(f, functor, tag());
46415 }
46416
46417 void clear(function_buffer& functor)
46418 {
46419 if (manager)
46420 manager(functor, functor, destroy_functor_tag);
46421 }
46422
46423 private:
46424 template<typename F>
46425 void init(F f)
46426 {
46427 typedef typename get_function_tag<F>::type tag;
46428 init(f, tag());
46429 }
46430
46431
46432 template<typename FunctionPtr>
46433 void init(FunctionPtr , function_ptr_tag)
46434 {
46435 typedef typename get_function_invoker9<
46436 FunctionPtr,
46437 R ,
46438 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46439 >::type
46440 actual_invoker_type;
46441
46442 invoker = &actual_invoker_type::invoke;
46443 manager = &functor_manager<FunctionPtr, Allocator>::manage;
46444 }
46445
46446 template<typename FunctionPtr>
46447 bool
46448 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
46449 {
46450 this->clear(functor);
46451 if (f) {
46452
46453
46454 functor.func_ptr = (void (*)())(f);
46455 return true;
46456 } else {
46457 return false;
46458 }
46459 }
46460
46461
46462
46463 template<typename MemberPtr>
46464 void init(MemberPtr f, member_ptr_tag)
46465 {
46466
46467
46468
46469 this->init(mem_fn(f));
46470 }
46471
46472 template<typename MemberPtr>
46473 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
46474 {
46475
46476
46477
46478 if (f) {
46479 this->assign_to(mem_fn(f), functor);
46480 return true;
46481 } else {
46482 return false;
46483 }
46484 }
46485
46486
46487
46488 template<typename FunctionObj>
46489 void init(FunctionObj , function_obj_tag)
46490 {
46491 typedef typename get_function_obj_invoker9<
46492 FunctionObj,
46493 R ,
46494 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46495 >::type
46496 actual_invoker_type;
46497
46498 invoker = &actual_invoker_type::invoke;
46499 manager = &functor_manager<FunctionObj, Allocator>::manage;
46500 }
46501
46502
46503 template<typename FunctionObj>
46504 void
46505 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
46506 {
46507 new ((void*)&functor.data) FunctionObj(f);
46508 }
46509
46510
46511 template<typename FunctionObj>
46512 void
46513 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
46514 {
46515
46516 typedef typename Allocator::template rebind<FunctionObj>::other
46517 allocator_type;
46518 typedef typename allocator_type::pointer pointer_type;
46519
46520 allocator_type allocator;
46521 pointer_type copy = allocator.allocate(1);
46522 allocator.construct(copy, f);
46523
46524
46525 functor.obj_ptr = static_cast<FunctionObj*>(copy);
46526
46527
46528
46529 }
46530
46531 template<typename FunctionObj>
46532 bool
46533 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
46534 {
46535 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
46536 assign_functor(f, functor,
46537 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
46538 return true;
46539 } else {
46540 return false;
46541 }
46542 }
46543
46544
46545 template<typename FunctionObj>
46546 void
46547 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
46548 {
46549 typedef typename get_function_ref_invoker9<
46550 FunctionObj,
46551 R ,
46552 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46553 >::type
46554 actual_invoker_type;
46555
46556 invoker = &actual_invoker_type::invoke;
46557 manager = &reference_manager<FunctionObj>::get;
46558 }
46559
46560 template<typename FunctionObj>
46561 bool
46562 assign_to(const reference_wrapper<FunctionObj>& f,
46563 function_buffer& functor, function_obj_ref_tag)
46564 {
46565 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
46566
46567
46568
46569
46570 functor.const_obj_ptr = f.get_pointer();
46571 return true;
46572 } else {
46573 return false;
46574 }
46575 }
46576
46577 public:
46578 invoker_type invoker;
46579 };
46580 }
46581 }
46582
46583 template<
46584 typename R ,
46585 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,
46586 typename Allocator = std::allocator<function_base>
46587 >
46588 class function9 : public function_base
46589 {
46590 public:
46591
46592 typedef R result_type;
46593
46594
46595
46596
46597
46598 private:
46599 typedef boost::detail::function::basic_vtable9<
46600 R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8, Allocator>
46601 vtable_type;
46602
46603 struct clear_type {};
46604
46605 public:
46606 static const int args = 9;
46607
46608
46609 template<typename Args>
46610 struct sig
46611 {
46612 typedef result_type type;
46613 };
46614# 492 "/usr/include/boost/function/function_template.hpp" 3 4
46615 static const int arity = 9;
46616 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type;
46617
46618 typedef Allocator allocator_type;
46619 typedef function9 self_type;
46620
46621 function9() : function_base() { }
46622
46623
46624
46625 template<typename Functor>
46626 function9(Functor f
46627
46628 ,typename enable_if_c<
46629 (boost::type_traits::ice_not<
46630 (is_integral<Functor>::value)>::value),
46631 int>::type = 0
46632
46633 ) :
46634 function_base()
46635 {
46636 this->assign_to(f);
46637 }
46638
46639
46640 function9(clear_type*) : function_base() { }
46641
46642
46643
46644
46645
46646
46647
46648 function9(const function9& f) : function_base()
46649 {
46650 this->assign_to_own(f);
46651 }
46652
46653 ~function9() { clear(); }
46654# 544 "/usr/include/boost/function/function_template.hpp" 3 4
46655 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8) const;
46656
46657
46658
46659
46660
46661
46662
46663 template<typename Functor>
46664
46665 typename enable_if_c<
46666 (boost::type_traits::ice_not<
46667 (is_integral<Functor>::value)>::value),
46668 function9&>::type
46669
46670
46671
46672 operator=(Functor f)
46673 {
46674 this->clear();
46675 try {
46676 this->assign_to(f);
46677 } catch (...) {
46678 vtable = 0;
46679 throw;
46680 }
46681 return *this;
46682 }
46683
46684
46685 function9& operator=(clear_type*)
46686 {
46687 this->clear();
46688 return *this;
46689 }
46690# 589 "/usr/include/boost/function/function_template.hpp" 3 4
46691 function9& operator=(const function9& f)
46692 {
46693 if (&f == this)
46694 return *this;
46695
46696 this->clear();
46697 try {
46698 this->assign_to_own(f);
46699 } catch (...) {
46700 vtable = 0;
46701 throw;
46702 }
46703 return *this;
46704 }
46705
46706 void swap(function9& other)
46707 {
46708 if (&other == this)
46709 return;
46710
46711 function9 tmp = *this;
46712 *this = other;
46713 other = tmp;
46714 }
46715
46716
46717 void clear()
46718 {
46719 if (vtable) {
46720 static_cast<vtable_type*>(vtable)->clear(this->functor);
46721 vtable = 0;
46722 }
46723 }
46724
46725
46726
46727
46728
46729 private:
46730 struct dummy {
46731 void nonnull() {};
46732 };
46733
46734 typedef void (dummy::*safe_bool)();
46735
46736 public:
46737 operator safe_bool () const
46738 { return (this->empty())? 0 : &dummy::nonnull; }
46739
46740 bool operator!() const
46741 { return this->empty(); }
46742
46743
46744 private:
46745 void assign_to_own(const function9& f)
46746 {
46747 if (!f.empty()) {
46748 this->vtable = f.vtable;
46749 f.vtable->manager(f.functor, this->functor,
46750 boost::detail::function::clone_functor_tag);
46751 }
46752 }
46753
46754 template<typename Functor>
46755 void assign_to(Functor f)
46756 {
46757 static vtable_type stored_vtable(f);
46758 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
46759 else vtable = 0;
46760 }
46761 };
46762
46763 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 ,
46764 typename Allocator>
46765 inline void swap(function9<
46766 R ,
46767 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,
46768 Allocator
46769 >& f1,
46770 function9<
46771 R ,
46772 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8,
46773 Allocator
46774 >& f2)
46775 {
46776 f1.swap(f2);
46777 }
46778
46779
46780 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,
46781 typename Allocator>
46782 typename function9<
46783 R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8,
46784 Allocator>::result_type
46785 function9<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8,
46786
46787 Allocator>
46788 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8) const
46789 {
46790 if (this->empty())
46791 boost::throw_exception(bad_function_call());
46792
46793 return static_cast<vtable_type*>(vtable)->invoker
46794 (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
46795 }
46796
46797
46798
46799template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 ,
46800 typename Allocator>
46801 void operator==(const function9<
46802 R ,
46803 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,
46804 Allocator>&,
46805 const function9<
46806 R ,
46807 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,
46808 Allocator>&);
46809template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 ,
46810 typename Allocator>
46811 void operator!=(const function9<
46812 R ,
46813 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,
46814 Allocator>&,
46815 const function9<
46816 R ,
46817 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,
46818 Allocator>&);
46819# 726 "/usr/include/boost/function/function_template.hpp" 3 4
46820template<typename R ,
46821 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,
46822 typename Allocator>
46823class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), Allocator>
46824 : public function9<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46825 , Allocator>
46826{
46827 typedef function9<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
46828 , Allocator> base_type;
46829 typedef function self_type;
46830
46831 struct clear_type {};
46832
46833public:
46834 typedef typename base_type::allocator_type allocator_type;
46835
46836 function() : base_type() {}
46837
46838 template<typename Functor>
46839 function(Functor f
46840
46841 ,typename enable_if_c<
46842 (boost::type_traits::ice_not<
46843 (is_integral<Functor>::value)>::value),
46844 int>::type = 0
46845
46846 ) :
46847 base_type(f)
46848 {
46849 }
46850
46851
46852 function(clear_type*) : base_type() {}
46853
46854
46855 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
46856
46857 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
46858
46859 self_type& operator=(const self_type& f)
46860 {
46861 self_type(f).swap(*this);
46862 return *this;
46863 }
46864
46865 template<typename Functor>
46866
46867 typename enable_if_c<
46868 (boost::type_traits::ice_not<
46869 (is_integral<Functor>::value)>::value),
46870 self_type&>::type
46871
46872
46873
46874 operator=(Functor f)
46875 {
46876 self_type(f).swap(*this);
46877 return *this;
46878 }
46879
46880
46881 self_type& operator=(clear_type*)
46882 {
46883 this->clear();
46884 return *this;
46885 }
46886
46887
46888 self_type& operator=(const base_type& f)
46889 {
46890 self_type(f).swap(*this);
46891 return *this;
46892 }
46893};
46894# 808 "/usr/include/boost/function/function_template.hpp" 3 4
46895}
46896# 59 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
46897# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
46898# 93 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
46899
46900
46901
46902
46903# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
46904# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
46905# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
46906# 63 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
46907# 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
46908# 83 "/usr/include/boost/function/function_template.hpp" 3 4
46909namespace boost {
46910 namespace detail {
46911 namespace function {
46912 template<
46913 typename FunctionPtr,
46914 typename R ,
46915 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
46916 >
46917 struct function_invoker10
46918 {
46919 static R invoke(function_buffer& function_ptr ,
46920 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
46921 {
46922 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
46923 return f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
46924 }
46925 };
46926
46927 template<
46928 typename FunctionPtr,
46929 typename R ,
46930 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
46931 >
46932 struct void_function_invoker10
46933 {
46934 static void
46935 invoke(function_buffer& function_ptr ,
46936 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
46937
46938 {
46939 FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
46940 f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
46941 }
46942 };
46943
46944 template<
46945 typename FunctionObj,
46946 typename R ,
46947 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
46948 >
46949 struct function_obj_invoker10
46950 {
46951 static R invoke(function_buffer& function_obj_ptr ,
46952 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
46953
46954 {
46955 FunctionObj* f;
46956 if (function_allows_small_object_optimization<FunctionObj>::value)
46957 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
46958 else
46959 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46960 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
46961 }
46962 };
46963
46964 template<
46965 typename FunctionObj,
46966 typename R ,
46967 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
46968 >
46969 struct void_function_obj_invoker10
46970 {
46971 static void
46972 invoke(function_buffer& function_obj_ptr ,
46973 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
46974
46975 {
46976 FunctionObj* f;
46977 if (function_allows_small_object_optimization<FunctionObj>::value)
46978 f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
46979 else
46980 f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46981 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
46982 }
46983 };
46984
46985 template<
46986 typename FunctionObj,
46987 typename R ,
46988 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
46989 >
46990 struct function_ref_invoker10
46991 {
46992 static R invoke(function_buffer& function_obj_ptr ,
46993 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
46994
46995 {
46996 FunctionObj* f =
46997 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
46998 return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
46999 }
47000 };
47001
47002 template<
47003 typename FunctionObj,
47004 typename R ,
47005 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
47006 >
47007 struct void_function_ref_invoker10
47008 {
47009 static void
47010 invoke(function_buffer& function_obj_ptr ,
47011 T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
47012
47013 {
47014 FunctionObj* f =
47015 reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
47016 (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
47017 }
47018 };
47019
47020 template<
47021 typename FunctionPtr,
47022 typename R ,
47023 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
47024 >
47025 struct get_function_invoker10
47026 {
47027 typedef typename mpl::if_c<(is_void<R>::value),
47028 void_function_invoker10<
47029 FunctionPtr,
47030 R ,
47031 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47032 >,
47033 function_invoker10<
47034 FunctionPtr,
47035 R ,
47036 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47037 >
47038 >::type type;
47039 };
47040
47041 template<
47042 typename FunctionObj,
47043 typename R ,
47044 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
47045 >
47046 struct get_function_obj_invoker10
47047 {
47048 typedef typename mpl::if_c<(is_void<R>::value),
47049 void_function_obj_invoker10<
47050 FunctionObj,
47051 R ,
47052 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47053 >,
47054 function_obj_invoker10<
47055 FunctionObj,
47056 R ,
47057 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47058 >
47059 >::type type;
47060 };
47061
47062 template<
47063 typename FunctionObj,
47064 typename R ,
47065 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
47066 >
47067 struct get_function_ref_invoker10
47068 {
47069 typedef typename mpl::if_c<(is_void<R>::value),
47070 void_function_ref_invoker10<
47071 FunctionObj,
47072 R ,
47073 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47074 >,
47075 function_ref_invoker10<
47076 FunctionObj,
47077 R ,
47078 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47079 >
47080 >::type type;
47081 };
47082
47083
47084
47085
47086 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,
47087 typename Allocator>
47088 struct basic_vtable10 : vtable_base
47089 {
47090
47091 typedef R result_type;
47092
47093
47094
47095
47096 typedef result_type (*invoker_type)(function_buffer&
47097 ,
47098 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9);
47099
47100 template<typename F>
47101 basic_vtable10(F f) : vtable_base(), invoker(0)
47102 {
47103 init(f);
47104 }
47105
47106 template<typename F>
47107 bool assign_to(F f, function_buffer& functor)
47108 {
47109 typedef typename get_function_tag<F>::type tag;
47110 return assign_to(f, functor, tag());
47111 }
47112
47113 void clear(function_buffer& functor)
47114 {
47115 if (manager)
47116 manager(functor, functor, destroy_functor_tag);
47117 }
47118
47119 private:
47120 template<typename F>
47121 void init(F f)
47122 {
47123 typedef typename get_function_tag<F>::type tag;
47124 init(f, tag());
47125 }
47126
47127
47128 template<typename FunctionPtr>
47129 void init(FunctionPtr , function_ptr_tag)
47130 {
47131 typedef typename get_function_invoker10<
47132 FunctionPtr,
47133 R ,
47134 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47135 >::type
47136 actual_invoker_type;
47137
47138 invoker = &actual_invoker_type::invoke;
47139 manager = &functor_manager<FunctionPtr, Allocator>::manage;
47140 }
47141
47142 template<typename FunctionPtr>
47143 bool
47144 assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
47145 {
47146 this->clear(functor);
47147 if (f) {
47148
47149
47150 functor.func_ptr = (void (*)())(f);
47151 return true;
47152 } else {
47153 return false;
47154 }
47155 }
47156
47157
47158
47159 template<typename MemberPtr>
47160 void init(MemberPtr f, member_ptr_tag)
47161 {
47162
47163
47164
47165 this->init(mem_fn(f));
47166 }
47167
47168 template<typename MemberPtr>
47169 bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
47170 {
47171
47172
47173
47174 if (f) {
47175 this->assign_to(mem_fn(f), functor);
47176 return true;
47177 } else {
47178 return false;
47179 }
47180 }
47181
47182
47183
47184 template<typename FunctionObj>
47185 void init(FunctionObj , function_obj_tag)
47186 {
47187 typedef typename get_function_obj_invoker10<
47188 FunctionObj,
47189 R ,
47190 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47191 >::type
47192 actual_invoker_type;
47193
47194 invoker = &actual_invoker_type::invoke;
47195 manager = &functor_manager<FunctionObj, Allocator>::manage;
47196 }
47197
47198
47199 template<typename FunctionObj>
47200 void
47201 assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
47202 {
47203 new ((void*)&functor.data) FunctionObj(f);
47204 }
47205
47206
47207 template<typename FunctionObj>
47208 void
47209 assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
47210 {
47211
47212 typedef typename Allocator::template rebind<FunctionObj>::other
47213 allocator_type;
47214 typedef typename allocator_type::pointer pointer_type;
47215
47216 allocator_type allocator;
47217 pointer_type copy = allocator.allocate(1);
47218 allocator.construct(copy, f);
47219
47220
47221 functor.obj_ptr = static_cast<FunctionObj*>(copy);
47222
47223
47224
47225 }
47226
47227 template<typename FunctionObj>
47228 bool
47229 assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
47230 {
47231 if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
47232 assign_functor(f, functor,
47233 mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
47234 return true;
47235 } else {
47236 return false;
47237 }
47238 }
47239
47240
47241 template<typename FunctionObj>
47242 void
47243 init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)
47244 {
47245 typedef typename get_function_ref_invoker10<
47246 FunctionObj,
47247 R ,
47248 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47249 >::type
47250 actual_invoker_type;
47251
47252 invoker = &actual_invoker_type::invoke;
47253 manager = &reference_manager<FunctionObj>::get;
47254 }
47255
47256 template<typename FunctionObj>
47257 bool
47258 assign_to(const reference_wrapper<FunctionObj>& f,
47259 function_buffer& functor, function_obj_ref_tag)
47260 {
47261 if (!boost::detail::function::has_empty_target(f.get_pointer())) {
47262
47263
47264
47265
47266 functor.const_obj_ptr = f.get_pointer();
47267 return true;
47268 } else {
47269 return false;
47270 }
47271 }
47272
47273 public:
47274 invoker_type invoker;
47275 };
47276 }
47277 }
47278
47279 template<
47280 typename R ,
47281 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,
47282 typename Allocator = std::allocator<function_base>
47283 >
47284 class function10 : public function_base
47285 {
47286 public:
47287
47288 typedef R result_type;
47289
47290
47291
47292
47293
47294 private:
47295 typedef boost::detail::function::basic_vtable10<
47296 R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9, Allocator>
47297 vtable_type;
47298
47299 struct clear_type {};
47300
47301 public:
47302 static const int args = 10;
47303
47304
47305 template<typename Args>
47306 struct sig
47307 {
47308 typedef result_type type;
47309 };
47310# 492 "/usr/include/boost/function/function_template.hpp" 3 4
47311 static const int arity = 10;
47312 typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type; typedef T9 arg10_type;
47313
47314 typedef Allocator allocator_type;
47315 typedef function10 self_type;
47316
47317 function10() : function_base() { }
47318
47319
47320
47321 template<typename Functor>
47322 function10(Functor f
47323
47324 ,typename enable_if_c<
47325 (boost::type_traits::ice_not<
47326 (is_integral<Functor>::value)>::value),
47327 int>::type = 0
47328
47329 ) :
47330 function_base()
47331 {
47332 this->assign_to(f);
47333 }
47334
47335
47336 function10(clear_type*) : function_base() { }
47337
47338
47339
47340
47341
47342
47343
47344 function10(const function10& f) : function_base()
47345 {
47346 this->assign_to_own(f);
47347 }
47348
47349 ~function10() { clear(); }
47350# 544 "/usr/include/boost/function/function_template.hpp" 3 4
47351 result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9) const;
47352
47353
47354
47355
47356
47357
47358
47359 template<typename Functor>
47360
47361 typename enable_if_c<
47362 (boost::type_traits::ice_not<
47363 (is_integral<Functor>::value)>::value),
47364 function10&>::type
47365
47366
47367
47368 operator=(Functor f)
47369 {
47370 this->clear();
47371 try {
47372 this->assign_to(f);
47373 } catch (...) {
47374 vtable = 0;
47375 throw;
47376 }
47377 return *this;
47378 }
47379
47380
47381 function10& operator=(clear_type*)
47382 {
47383 this->clear();
47384 return *this;
47385 }
47386# 589 "/usr/include/boost/function/function_template.hpp" 3 4
47387 function10& operator=(const function10& f)
47388 {
47389 if (&f == this)
47390 return *this;
47391
47392 this->clear();
47393 try {
47394 this->assign_to_own(f);
47395 } catch (...) {
47396 vtable = 0;
47397 throw;
47398 }
47399 return *this;
47400 }
47401
47402 void swap(function10& other)
47403 {
47404 if (&other == this)
47405 return;
47406
47407 function10 tmp = *this;
47408 *this = other;
47409 other = tmp;
47410 }
47411
47412
47413 void clear()
47414 {
47415 if (vtable) {
47416 static_cast<vtable_type*>(vtable)->clear(this->functor);
47417 vtable = 0;
47418 }
47419 }
47420
47421
47422
47423
47424
47425 private:
47426 struct dummy {
47427 void nonnull() {};
47428 };
47429
47430 typedef void (dummy::*safe_bool)();
47431
47432 public:
47433 operator safe_bool () const
47434 { return (this->empty())? 0 : &dummy::nonnull; }
47435
47436 bool operator!() const
47437 { return this->empty(); }
47438
47439
47440 private:
47441 void assign_to_own(const function10& f)
47442 {
47443 if (!f.empty()) {
47444 this->vtable = f.vtable;
47445 f.vtable->manager(f.functor, this->functor,
47446 boost::detail::function::clone_functor_tag);
47447 }
47448 }
47449
47450 template<typename Functor>
47451 void assign_to(Functor f)
47452 {
47453 static vtable_type stored_vtable(f);
47454 if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
47455 else vtable = 0;
47456 }
47457 };
47458
47459 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 ,
47460 typename Allocator>
47461 inline void swap(function10<
47462 R ,
47463 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,
47464 Allocator
47465 >& f1,
47466 function10<
47467 R ,
47468 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9,
47469 Allocator
47470 >& f2)
47471 {
47472 f1.swap(f2);
47473 }
47474
47475
47476 template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,
47477 typename Allocator>
47478 typename function10<
47479 R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9,
47480 Allocator>::result_type
47481 function10<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9,
47482
47483 Allocator>
47484 ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9) const
47485 {
47486 if (this->empty())
47487 boost::throw_exception(bad_function_call());
47488
47489 return static_cast<vtable_type*>(vtable)->invoker
47490 (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
47491 }
47492
47493
47494
47495template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 ,
47496 typename Allocator>
47497 void operator==(const function10<
47498 R ,
47499 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,
47500 Allocator>&,
47501 const function10<
47502 R ,
47503 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,
47504 Allocator>&);
47505template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 ,
47506 typename Allocator>
47507 void operator!=(const function10<
47508 R ,
47509 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,
47510 Allocator>&,
47511 const function10<
47512 R ,
47513 T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,
47514 Allocator>&);
47515# 726 "/usr/include/boost/function/function_template.hpp" 3 4
47516template<typename R ,
47517 typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,
47518 typename Allocator>
47519class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), Allocator>
47520 : public function10<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47521 , Allocator>
47522{
47523 typedef function10<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
47524 , Allocator> base_type;
47525 typedef function self_type;
47526
47527 struct clear_type {};
47528
47529public:
47530 typedef typename base_type::allocator_type allocator_type;
47531
47532 function() : base_type() {}
47533
47534 template<typename Functor>
47535 function(Functor f
47536
47537 ,typename enable_if_c<
47538 (boost::type_traits::ice_not<
47539 (is_integral<Functor>::value)>::value),
47540 int>::type = 0
47541
47542 ) :
47543 base_type(f)
47544 {
47545 }
47546
47547
47548 function(clear_type*) : base_type() {}
47549
47550
47551 function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
47552
47553 function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
47554
47555 self_type& operator=(const self_type& f)
47556 {
47557 self_type(f).swap(*this);
47558 return *this;
47559 }
47560
47561 template<typename Functor>
47562
47563 typename enable_if_c<
47564 (boost::type_traits::ice_not<
47565 (is_integral<Functor>::value)>::value),
47566 self_type&>::type
47567
47568
47569
47570 operator=(Functor f)
47571 {
47572 self_type(f).swap(*this);
47573 return *this;
47574 }
47575
47576
47577 self_type& operator=(clear_type*)
47578 {
47579 this->clear();
47580 return *this;
47581 }
47582
47583
47584 self_type& operator=(const base_type& f)
47585 {
47586 self_type(f).swap(*this);
47587 return *this;
47588 }
47589};
47590# 808 "/usr/include/boost/function/function_template.hpp" 3 4
47591}
47592# 64 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
47593# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
47594# 98 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
47595# 63 "/usr/include/boost/function.hpp" 2 3 4
47596# 16 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
47597# 1 "/usr/include/boost/shared_ptr.hpp" 1 3 4
47598# 25 "/usr/include/boost/shared_ptr.hpp" 3 4
47599# 1 "/usr/include/boost/assert.hpp" 1 3 4
47600# 35 "/usr/include/boost/assert.hpp" 3 4
47601# 1 "/usr/include/assert.h" 1 3 4
47602
47603
47604
47605
47606
47607
47608
47609# 1 "/usr/include/gentoo-multilib/amd64/assert.h" 1 3 4
47610# 37 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
47611# 1 "/usr/include/features.h" 1 3 4
47612# 38 "/usr/include/gentoo-multilib/amd64/assert.h" 2 3 4
47613# 66 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
47614extern "C" {
47615
47616
47617extern void __assert_fail (__const char *__assertion, __const char *__file,
47618 unsigned int __line, __const char *__function)
47619 throw () __attribute__ ((__noreturn__));
47620
47621
47622extern void __assert_perror_fail (int __errnum, __const char *__file,
47623 unsigned int __line,
47624 __const char *__function)
47625 throw () __attribute__ ((__noreturn__));
47626
47627
47628
47629
47630extern void __assert (const char *__assertion, const char *__file, int __line)
47631 throw () __attribute__ ((__noreturn__));
47632
47633
47634}
47635# 9 "/usr/include/assert.h" 2 3 4
47636# 36 "/usr/include/boost/assert.hpp" 2 3 4
47637# 26 "/usr/include/boost/shared_ptr.hpp" 2 3 4
47638# 1 "/usr/include/boost/checked_delete.hpp" 1 3 4
47639# 24 "/usr/include/boost/checked_delete.hpp" 3 4
47640namespace boost
47641{
47642
47643
47644
47645template<class T> inline void checked_delete(T * x)
47646{
47647
47648 typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
47649 (void) sizeof(type_must_be_complete);
47650 delete x;
47651}
47652
47653template<class T> inline void checked_array_delete(T * x)
47654{
47655 typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
47656 (void) sizeof(type_must_be_complete);
47657 delete [] x;
47658}
47659
47660template<class T> struct checked_deleter
47661{
47662 typedef void result_type;
47663 typedef T * argument_type;
47664
47665 void operator()(T * x) const
47666 {
47667
47668 boost::checked_delete(x);
47669 }
47670};
47671
47672template<class T> struct checked_array_deleter
47673{
47674 typedef void result_type;
47675 typedef T * argument_type;
47676
47677 void operator()(T * x) const
47678 {
47679 boost::checked_array_delete(x);
47680 }
47681};
47682
47683}
47684# 27 "/usr/include/boost/shared_ptr.hpp" 2 3 4
47685
47686# 1 "/usr/include/boost/detail/shared_count.hpp" 1 3 4
47687# 28 "/usr/include/boost/detail/shared_count.hpp" 3 4
47688# 1 "/usr/include/boost/detail/bad_weak_ptr.hpp" 1 3 4
47689# 26 "/usr/include/boost/detail/bad_weak_ptr.hpp" 3 4
47690namespace boost
47691{
47692# 39 "/usr/include/boost/detail/bad_weak_ptr.hpp" 3 4
47693class bad_weak_ptr: public std::exception
47694{
47695public:
47696
47697 virtual char const * what() const throw()
47698 {
47699 return "tr1::bad_weak_ptr";
47700 }
47701};
47702
47703
47704
47705
47706
47707}
47708# 29 "/usr/include/boost/detail/shared_count.hpp" 2 3 4
47709# 1 "/usr/include/boost/detail/sp_counted_base.hpp" 1 3 4
47710# 32 "/usr/include/boost/detail/sp_counted_base.hpp" 3 4
47711# 1 "/usr/include/boost/detail/sp_counted_base_gcc_x86.hpp" 1 3 4
47712# 29 "/usr/include/boost/detail/sp_counted_base_gcc_x86.hpp" 3 4
47713namespace boost
47714{
47715
47716namespace detail
47717{
47718
47719inline int atomic_exchange_and_add( int * pw, int dv )
47720{
47721
47722
47723
47724
47725 int r;
47726
47727 __asm__ __volatile__
47728 (
47729 "lock\n\t"
47730 "xadd %1, %0":
47731 "=m"( *pw ), "=r"( r ):
47732 "m"( *pw ), "1"( dv ):
47733 "memory", "cc"
47734 );
47735
47736 return r;
47737}
47738
47739inline void atomic_increment( int * pw )
47740{
47741
47742
47743 __asm__
47744 (
47745 "lock\n\t"
47746 "incl %0":
47747 "=m"( *pw ):
47748 "m"( *pw ):
47749 "cc"
47750 );
47751}
47752
47753inline int atomic_conditional_increment( int * pw )
47754{
47755
47756
47757
47758
47759 int rv, tmp;
47760
47761 __asm__
47762 (
47763 "movl %0, %%eax\n\t"
47764 "0:\n\t"
47765 "test %%eax, %%eax\n\t"
47766 "je 1f\n\t"
47767 "movl %%eax, %2\n\t"
47768 "incl %2\n\t"
47769 "lock\n\t"
47770 "cmpxchgl %2, %0\n\t"
47771 "jne 0b\n\t"
47772 "1:":
47773 "=m"( *pw ), "=&a"( rv ), "=&r"( tmp ):
47774 "m"( *pw ):
47775 "cc"
47776 );
47777
47778 return rv;
47779}
47780
47781class sp_counted_base
47782{
47783private:
47784
47785 sp_counted_base( sp_counted_base const & );
47786 sp_counted_base & operator= ( sp_counted_base const & );
47787
47788 int use_count_;
47789 int weak_count_;
47790
47791public:
47792
47793 sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
47794 {
47795 }
47796
47797 virtual ~sp_counted_base()
47798 {
47799 }
47800
47801
47802
47803
47804 virtual void dispose() = 0;
47805
47806
47807
47808 virtual void destroy()
47809 {
47810 delete this;
47811 }
47812
47813 virtual void * get_deleter( std::type_info const & ti ) = 0;
47814
47815 void add_ref_copy()
47816 {
47817 atomic_increment( &use_count_ );
47818 }
47819
47820 bool add_ref_lock()
47821 {
47822 return atomic_conditional_increment( &use_count_ ) != 0;
47823 }
47824
47825 void release()
47826 {
47827 if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
47828 {
47829 dispose();
47830 weak_release();
47831 }
47832 }
47833
47834 void weak_add_ref()
47835 {
47836 atomic_increment( &weak_count_ );
47837 }
47838
47839 void weak_release()
47840 {
47841 if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
47842 {
47843 destroy();
47844 }
47845 }
47846
47847 long use_count() const
47848 {
47849 return static_cast<int const volatile &>( use_count_ );
47850 }
47851};
47852
47853}
47854
47855}
47856# 33 "/usr/include/boost/detail/sp_counted_base.hpp" 2 3 4
47857# 30 "/usr/include/boost/detail/shared_count.hpp" 2 3 4
47858# 1 "/usr/include/boost/detail/sp_counted_impl.hpp" 1 3 4
47859# 41 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
47860namespace boost
47861{
47862# 51 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
47863namespace detail
47864{
47865
47866template<class X> class sp_counted_impl_p: public sp_counted_base
47867{
47868private:
47869
47870 X * px_;
47871
47872 sp_counted_impl_p( sp_counted_impl_p const & );
47873 sp_counted_impl_p & operator= ( sp_counted_impl_p const & );
47874
47875 typedef sp_counted_impl_p<X> this_type;
47876
47877public:
47878
47879 explicit sp_counted_impl_p( X * px ): px_( px )
47880 {
47881
47882
47883
47884 }
47885
47886 virtual void dispose()
47887 {
47888
47889
47890
47891 boost::checked_delete( px_ );
47892 }
47893
47894 virtual void * get_deleter( std::type_info const & )
47895 {
47896 return 0;
47897 }
47898# 114 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
47899};
47900# 123 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
47901template<class P, class D> class sp_counted_impl_pd: public sp_counted_base
47902{
47903private:
47904
47905 P ptr;
47906 D del;
47907
47908 sp_counted_impl_pd( sp_counted_impl_pd const & );
47909 sp_counted_impl_pd & operator= ( sp_counted_impl_pd const & );
47910
47911 typedef sp_counted_impl_pd<P, D> this_type;
47912
47913public:
47914
47915
47916
47917 sp_counted_impl_pd( P p, D d ): ptr(p), del(d)
47918 {
47919 }
47920
47921 virtual void dispose()
47922 {
47923 del( ptr );
47924 }
47925
47926 virtual void * get_deleter( std::type_info const & ti )
47927 {
47928 return ti == typeid(D)? &del: 0;
47929 }
47930# 180 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
47931};
47932
47933template<class P, class D, class A> class sp_counted_impl_pda: public sp_counted_base
47934{
47935private:
47936
47937 P p_;
47938 D d_;
47939 A a_;
47940
47941 sp_counted_impl_pda( sp_counted_impl_pda const & );
47942 sp_counted_impl_pda & operator= ( sp_counted_impl_pda const & );
47943
47944 typedef sp_counted_impl_pda<P, D, A> this_type;
47945
47946public:
47947
47948
47949
47950 sp_counted_impl_pda( P p, D d, A a ): p_( p ), d_( d ), a_( a )
47951 {
47952 }
47953
47954 virtual void dispose()
47955 {
47956 d_( p_ );
47957 }
47958
47959 virtual void destroy()
47960 {
47961 typedef typename A::template rebind< this_type >::other A2;
47962
47963 A2 a2( a_ );
47964
47965 this->~this_type();
47966 a2.deallocate( this, 1 );
47967 }
47968
47969 virtual void * get_deleter( std::type_info const & ti )
47970 {
47971 return ti == typeid( D )? &d_: 0;
47972 }
47973};
47974
47975
47976
47977
47978
47979}
47980
47981}
47982# 31 "/usr/include/boost/detail/shared_count.hpp" 2 3 4
47983
47984
47985# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/functional" 1 3 4
47986# 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/functional" 3 4
47987
47988# 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/functional" 3
47989# 34 "/usr/include/boost/detail/shared_count.hpp" 2 3 4
47990
47991
47992
47993namespace boost
47994{
47995
47996namespace detail
47997{
47998# 50 "/usr/include/boost/detail/shared_count.hpp" 3 4
47999class weak_count;
48000
48001class shared_count
48002{
48003private:
48004
48005 sp_counted_base * pi_;
48006
48007
48008
48009
48010
48011 friend class weak_count;
48012
48013public:
48014
48015 shared_count(): pi_(0)
48016
48017
48018
48019 {
48020 }
48021
48022 template<class Y> explicit shared_count( Y * p ): pi_( 0 )
48023
48024
48025
48026 {
48027
48028
48029 try
48030 {
48031 pi_ = new sp_counted_impl_p<Y>( p );
48032 }
48033 catch(...)
48034 {
48035 boost::checked_delete( p );
48036 throw;
48037 }
48038# 101 "/usr/include/boost/detail/shared_count.hpp" 3 4
48039 }
48040
48041 template<class P, class D> shared_count(P p, D d): pi_(0)
48042
48043
48044
48045 {
48046
48047
48048 try
48049 {
48050 pi_ = new sp_counted_impl_pd<P, D>(p, d);
48051 }
48052 catch(...)
48053 {
48054 d(p);
48055 throw;
48056 }
48057# 131 "/usr/include/boost/detail/shared_count.hpp" 3 4
48058 }
48059
48060 template<class P, class D, class A> shared_count( P p, D d, A a ): pi_( 0 )
48061
48062
48063
48064 {
48065 typedef sp_counted_impl_pda<P, D, A> impl_type;
48066 typedef typename A::template rebind< impl_type >::other A2;
48067
48068 A2 a2( a );
48069
48070
48071
48072 try
48073 {
48074 pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
48075 new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
48076 }
48077 catch(...)
48078 {
48079 d( p );
48080
48081 if( pi_ != 0 )
48082 {
48083 a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
48084 }
48085
48086 throw;
48087 }
48088# 177 "/usr/include/boost/detail/shared_count.hpp" 3 4
48089 }
48090
48091
48092
48093
48094
48095 template<class Y>
48096 explicit shared_count( std::auto_ptr<Y> & r ): pi_( new sp_counted_impl_p<Y>( r.get() ) )
48097
48098
48099
48100 {
48101# 198 "/usr/include/boost/detail/shared_count.hpp" 3 4
48102 r.release();
48103 }
48104
48105
48106
48107 ~shared_count()
48108 {
48109 if( pi_ != 0 ) pi_->release();
48110
48111
48112
48113 }
48114
48115 shared_count(shared_count const & r): pi_(r.pi_)
48116
48117
48118
48119 {
48120 if( pi_ != 0 ) pi_->add_ref_copy();
48121 }
48122
48123 explicit shared_count(weak_count const & r);
48124
48125 shared_count & operator= (shared_count const & r)
48126 {
48127 sp_counted_base * tmp = r.pi_;
48128
48129 if( tmp != pi_ )
48130 {
48131 if( tmp != 0 ) tmp->add_ref_copy();
48132 if( pi_ != 0 ) pi_->release();
48133 pi_ = tmp;
48134 }
48135
48136 return *this;
48137 }
48138
48139 void swap(shared_count & r)
48140 {
48141 sp_counted_base * tmp = r.pi_;
48142 r.pi_ = pi_;
48143 pi_ = tmp;
48144 }
48145
48146 long use_count() const
48147 {
48148 return pi_ != 0? pi_->use_count(): 0;
48149 }
48150
48151 bool unique() const
48152 {
48153 return use_count() == 1;
48154 }
48155
48156 friend inline bool operator==(shared_count const & a, shared_count const & b)
48157 {
48158 return a.pi_ == b.pi_;
48159 }
48160
48161 friend inline bool operator<(shared_count const & a, shared_count const & b)
48162 {
48163 return std::less<sp_counted_base *>()( a.pi_, b.pi_ );
48164 }
48165
48166 void * get_deleter(std::type_info const & ti) const
48167 {
48168 return pi_? pi_->get_deleter( ti ): 0;
48169 }
48170};
48171
48172
48173class weak_count
48174{
48175private:
48176
48177 sp_counted_base * pi_;
48178
48179
48180
48181
48182
48183 friend class shared_count;
48184
48185public:
48186
48187 weak_count(): pi_(0)
48188
48189
48190
48191 {
48192 }
48193
48194 weak_count(shared_count const & r): pi_(r.pi_)
48195
48196
48197
48198 {
48199 if(pi_ != 0) pi_->weak_add_ref();
48200 }
48201
48202 weak_count(weak_count const & r): pi_(r.pi_)
48203
48204
48205
48206 {
48207 if(pi_ != 0) pi_->weak_add_ref();
48208 }
48209
48210 ~weak_count()
48211 {
48212 if(pi_ != 0) pi_->weak_release();
48213
48214
48215
48216 }
48217
48218 weak_count & operator= (shared_count const & r)
48219 {
48220 sp_counted_base * tmp = r.pi_;
48221 if(tmp != 0) tmp->weak_add_ref();
48222 if(pi_ != 0) pi_->weak_release();
48223 pi_ = tmp;
48224
48225 return *this;
48226 }
48227
48228 weak_count & operator= (weak_count const & r)
48229 {
48230 sp_counted_base * tmp = r.pi_;
48231 if(tmp != 0) tmp->weak_add_ref();
48232 if(pi_ != 0) pi_->weak_release();
48233 pi_ = tmp;
48234
48235 return *this;
48236 }
48237
48238 void swap(weak_count & r)
48239 {
48240 sp_counted_base * tmp = r.pi_;
48241 r.pi_ = pi_;
48242 pi_ = tmp;
48243 }
48244
48245 long use_count() const
48246 {
48247 return pi_ != 0? pi_->use_count(): 0;
48248 }
48249
48250 friend inline bool operator==(weak_count const & a, weak_count const & b)
48251 {
48252 return a.pi_ == b.pi_;
48253 }
48254
48255 friend inline bool operator<(weak_count const & a, weak_count const & b)
48256 {
48257 return std::less<sp_counted_base *>()(a.pi_, b.pi_);
48258 }
48259};
48260
48261inline shared_count::shared_count( weak_count const & r ): pi_( r.pi_ )
48262
48263
48264
48265{
48266 if( pi_ == 0 || !pi_->add_ref_lock() )
48267 {
48268 boost::throw_exception( boost::bad_weak_ptr() );
48269 }
48270}
48271
48272}
48273
48274}
48275# 29 "/usr/include/boost/shared_ptr.hpp" 2 3 4
48276# 41 "/usr/include/boost/shared_ptr.hpp" 3 4
48277namespace boost
48278{
48279
48280template<class T> class weak_ptr;
48281template<class T> class enable_shared_from_this;
48282
48283namespace detail
48284{
48285
48286struct static_cast_tag {};
48287struct const_cast_tag {};
48288struct dynamic_cast_tag {};
48289struct polymorphic_cast_tag {};
48290
48291template<class T> struct shared_ptr_traits
48292{
48293 typedef T & reference;
48294};
48295
48296template<> struct shared_ptr_traits<void>
48297{
48298 typedef void reference;
48299};
48300
48301
48302
48303template<> struct shared_ptr_traits<void const>
48304{
48305 typedef void reference;
48306};
48307
48308template<> struct shared_ptr_traits<void volatile>
48309{
48310 typedef void reference;
48311};
48312
48313template<> struct shared_ptr_traits<void const volatile>
48314{
48315 typedef void reference;
48316};
48317
48318
48319
48320
48321
48322template<class T, class Y> void sp_enable_shared_from_this( shared_count const & pn, boost::enable_shared_from_this<T> const * pe, Y const * px )
48323{
48324 if(pe != 0) pe->_internal_weak_this._internal_assign(const_cast<Y*>(px), pn);
48325}
48326
48327
48328
48329
48330
48331
48332inline void sp_enable_shared_from_this( shared_count const & , ... )
48333{
48334}
48335# 108 "/usr/include/boost/shared_ptr.hpp" 3 4
48336template< class T, class R > struct sp_enable_if_auto_ptr
48337{
48338};
48339
48340template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
48341{
48342 typedef R type;
48343};
48344
48345
48346
48347}
48348# 130 "/usr/include/boost/shared_ptr.hpp" 3 4
48349template<class T> class shared_ptr
48350{
48351private:
48352
48353
48354 typedef shared_ptr<T> this_type;
48355
48356public:
48357
48358 typedef T element_type;
48359 typedef T value_type;
48360 typedef T * pointer;
48361 typedef typename boost::detail::shared_ptr_traits<T>::reference reference;
48362
48363 shared_ptr(): px(0), pn()
48364 {
48365 }
48366
48367 template<class Y>
48368 explicit shared_ptr( Y * p ): px( p ), pn( p )
48369 {
48370 boost::detail::sp_enable_shared_from_this( pn, p, p );
48371 }
48372
48373
48374
48375
48376
48377
48378
48379 template<class Y, class D> shared_ptr(Y * p, D d): px(p), pn(p, d)
48380 {
48381 boost::detail::sp_enable_shared_from_this( pn, p, p );
48382 }
48383
48384
48385
48386 template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
48387 {
48388 boost::detail::sp_enable_shared_from_this( pn, p, p );
48389 }
48390
48391
48392
48393
48394
48395
48396 shared_ptr & operator=(shared_ptr const & r)
48397 {
48398 px = r.px;
48399 pn = r.pn;
48400 return *this;
48401 }
48402
48403
48404
48405 template<class Y>
48406 explicit shared_ptr(weak_ptr<Y> const & r): pn(r.pn)
48407 {
48408
48409 px = r.px;
48410 }
48411
48412 template<class Y>
48413 shared_ptr(shared_ptr<Y> const & r): px(r.px), pn(r.pn)
48414 {
48415 }
48416
48417 template<class Y>
48418 shared_ptr(shared_ptr<Y> const & r, boost::detail::static_cast_tag): px(static_cast<element_type *>(r.px)), pn(r.pn)
48419 {
48420 }
48421
48422 template<class Y>
48423 shared_ptr(shared_ptr<Y> const & r, boost::detail::const_cast_tag): px(const_cast<element_type *>(r.px)), pn(r.pn)
48424 {
48425 }
48426
48427 template<class Y>
48428 shared_ptr(shared_ptr<Y> const & r, boost::detail::dynamic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
48429 {
48430 if(px == 0)
48431 {
48432 pn = boost::detail::shared_count();
48433 }
48434 }
48435
48436 template<class Y>
48437 shared_ptr(shared_ptr<Y> const & r, boost::detail::polymorphic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
48438 {
48439 if(px == 0)
48440 {
48441 boost::throw_exception(std::bad_cast());
48442 }
48443 }
48444
48445
48446
48447 template<class Y>
48448 explicit shared_ptr(std::auto_ptr<Y> & r): px(r.get()), pn()
48449 {
48450 Y * tmp = r.get();
48451 pn = boost::detail::shared_count(r);
48452 boost::detail::sp_enable_shared_from_this( pn, tmp, tmp );
48453 }
48454
48455
48456
48457 template<class Ap>
48458 explicit shared_ptr( Ap r, typename boost::detail::sp_enable_if_auto_ptr<Ap, int>::type = 0 ): px( r.get() ), pn()
48459 {
48460 typename Ap::element_type * tmp = r.get();
48461 pn = boost::detail::shared_count( r );
48462 boost::detail::sp_enable_shared_from_this( pn, tmp, tmp );
48463 }
48464# 253 "/usr/include/boost/shared_ptr.hpp" 3 4
48465 template<class Y>
48466 shared_ptr & operator=(shared_ptr<Y> const & r)
48467 {
48468 px = r.px;
48469 pn = r.pn;
48470 return *this;
48471 }
48472
48473
48474
48475
48476
48477 template<class Y>
48478 shared_ptr & operator=( std::auto_ptr<Y> & r )
48479 {
48480 this_type(r).swap(*this);
48481 return *this;
48482 }
48483
48484
48485
48486 template<class Ap>
48487 typename boost::detail::sp_enable_if_auto_ptr< Ap, shared_ptr & >::type operator=( Ap r )
48488 {
48489 this_type( r ).swap( *this );
48490 return *this;
48491 }
48492
48493
48494
48495
48496
48497
48498 void reset()
48499 {
48500 this_type().swap(*this);
48501 }
48502
48503 template<class Y> void reset(Y * p)
48504 {
48505 ((p == 0 || p != px) ? static_cast<void> (0) : __assert_fail ("p == 0 || p != px", "/usr/include/boost/shared_ptr.hpp", 293, __PRETTY_FUNCTION__));
48506 this_type(p).swap(*this);
48507 }
48508
48509 template<class Y, class D> void reset( Y * p, D d )
48510 {
48511 this_type( p, d ).swap( *this );
48512 }
48513
48514 template<class Y, class D, class A> void reset( Y * p, D d, A a )
48515 {
48516 this_type( p, d, a ).swap( *this );
48517 }
48518
48519 reference operator* () const
48520 {
48521 ((px != 0) ? static_cast<void> (0) : __assert_fail ("px != 0", "/usr/include/boost/shared_ptr.hpp", 309, __PRETTY_FUNCTION__));
48522 return *px;
48523 }
48524
48525 T * operator-> () const
48526 {
48527 ((px != 0) ? static_cast<void> (0) : __assert_fail ("px != 0", "/usr/include/boost/shared_ptr.hpp", 315, __PRETTY_FUNCTION__));
48528 return px;
48529 }
48530
48531 T * get() const
48532 {
48533 return px;
48534 }
48535# 359 "/usr/include/boost/shared_ptr.hpp" 3 4
48536 typedef T * this_type::*unspecified_bool_type;
48537
48538 operator unspecified_bool_type() const
48539 {
48540 return px == 0? 0: &this_type::px;
48541 }
48542
48543
48544
48545
48546
48547 bool operator! () const
48548 {
48549 return px == 0;
48550 }
48551
48552 bool unique() const
48553 {
48554 return pn.unique();
48555 }
48556
48557 long use_count() const
48558 {
48559 return pn.use_count();
48560 }
48561
48562 void swap(shared_ptr<T> & other)
48563 {
48564 std::swap(px, other.px);
48565 pn.swap(other.pn);
48566 }
48567
48568 template<class Y> bool _internal_less(shared_ptr<Y> const & rhs) const
48569 {
48570 return pn < rhs.pn;
48571 }
48572
48573 void * _internal_get_deleter(std::type_info const & ti) const
48574 {
48575 return pn.get_deleter(ti);
48576 }
48577
48578
48579
48580
48581
48582
48583private:
48584
48585 template<class Y> friend class shared_ptr;
48586 template<class Y> friend class weak_ptr;
48587
48588
48589
48590
48591 T * px;
48592 boost::detail::shared_count pn;
48593
48594};
48595
48596template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
48597{
48598 return a.get() == b.get();
48599}
48600
48601template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b)
48602{
48603 return a.get() != b.get();
48604}
48605# 440 "/usr/include/boost/shared_ptr.hpp" 3 4
48606template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b)
48607{
48608 return a._internal_less(b);
48609}
48610
48611template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b)
48612{
48613 a.swap(b);
48614}
48615
48616template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r)
48617{
48618 return shared_ptr<T>(r, boost::detail::static_cast_tag());
48619}
48620
48621template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r)
48622{
48623 return shared_ptr<T>(r, boost::detail::const_cast_tag());
48624}
48625
48626template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r)
48627{
48628 return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
48629}
48630
48631
48632
48633template<class T, class U> shared_ptr<T> shared_static_cast(shared_ptr<U> const & r)
48634{
48635 return shared_ptr<T>(r, boost::detail::static_cast_tag());
48636}
48637
48638template<class T, class U> shared_ptr<T> shared_dynamic_cast(shared_ptr<U> const & r)
48639{
48640 return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
48641}
48642
48643template<class T, class U> shared_ptr<T> shared_polymorphic_cast(shared_ptr<U> const & r)
48644{
48645 return shared_ptr<T>(r, boost::detail::polymorphic_cast_tag());
48646}
48647
48648template<class T, class U> shared_ptr<T> shared_polymorphic_downcast(shared_ptr<U> const & r)
48649{
48650 ((dynamic_cast<T *>(r.get()) == r.get()) ? static_cast<void> (0) : __assert_fail ("dynamic_cast<T *>(r.get()) == r.get()", "/usr/include/boost/shared_ptr.hpp", 484, __PRETTY_FUNCTION__));
48651 return shared_static_cast<T>(r);
48652}
48653
48654
48655
48656template<class T> inline T * get_pointer(shared_ptr<T> const & p)
48657{
48658 return p.get();
48659}
48660# 515 "/usr/include/boost/shared_ptr.hpp" 3 4
48661template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, shared_ptr<Y> const & p)
48662
48663{
48664 os << p.get();
48665 return os;
48666}
48667# 543 "/usr/include/boost/shared_ptr.hpp" 3 4
48668template<class D, class T> D * get_deleter(shared_ptr<T> const & p)
48669{
48670 return static_cast<D *>(p._internal_get_deleter(typeid(D)));
48671}
48672
48673
48674
48675}
48676# 17 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
48677
48678
48679
48680
48681
48682# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/set" 1 3 4
48683# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/set" 3 4
48684
48685# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/set" 3
48686
48687# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tree.h" 1 3
48688# 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tree.h" 3
48689namespace std __attribute__ ((__visibility__ ("default"))) {
48690# 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tree.h" 3
48691 enum _Rb_tree_color { _S_red = false, _S_black = true };
48692
48693 struct _Rb_tree_node_base
48694 {
48695 typedef _Rb_tree_node_base* _Base_ptr;
48696 typedef const _Rb_tree_node_base* _Const_Base_ptr;
48697
48698 _Rb_tree_color _M_color;
48699 _Base_ptr _M_parent;
48700 _Base_ptr _M_left;
48701 _Base_ptr _M_right;
48702
48703 static _Base_ptr
48704 _S_minimum(_Base_ptr __x)
48705 {
48706 while (__x->_M_left != 0) __x = __x->_M_left;
48707 return __x;
48708 }
48709
48710 static _Const_Base_ptr
48711 _S_minimum(_Const_Base_ptr __x)
48712 {
48713 while (__x->_M_left != 0) __x = __x->_M_left;
48714 return __x;
48715 }
48716
48717 static _Base_ptr
48718 _S_maximum(_Base_ptr __x)
48719 {
48720 while (__x->_M_right != 0) __x = __x->_M_right;
48721 return __x;
48722 }
48723
48724 static _Const_Base_ptr
48725 _S_maximum(_Const_Base_ptr __x)
48726 {
48727 while (__x->_M_right != 0) __x = __x->_M_right;
48728 return __x;
48729 }
48730 };
48731
48732 template<typename _Val>
48733 struct _Rb_tree_node : public _Rb_tree_node_base
48734 {
48735 typedef _Rb_tree_node<_Val>* _Link_type;
48736 _Val _M_value_field;
48737 };
48738
48739 _Rb_tree_node_base*
48740 _Rb_tree_increment(_Rb_tree_node_base* __x);
48741
48742 const _Rb_tree_node_base*
48743 _Rb_tree_increment(const _Rb_tree_node_base* __x);
48744
48745 _Rb_tree_node_base*
48746 _Rb_tree_decrement(_Rb_tree_node_base* __x);
48747
48748 const _Rb_tree_node_base*
48749 _Rb_tree_decrement(const _Rb_tree_node_base* __x);
48750
48751 template<typename _Tp>
48752 struct _Rb_tree_iterator
48753 {
48754 typedef _Tp value_type;
48755 typedef _Tp& reference;
48756 typedef _Tp* pointer;
48757
48758 typedef bidirectional_iterator_tag iterator_category;
48759 typedef ptrdiff_t difference_type;
48760
48761 typedef _Rb_tree_iterator<_Tp> _Self;
48762 typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
48763 typedef _Rb_tree_node<_Tp>* _Link_type;
48764
48765 _Rb_tree_iterator()
48766 : _M_node() { }
48767
48768 explicit
48769 _Rb_tree_iterator(_Link_type __x)
48770 : _M_node(__x) { }
48771
48772 reference
48773 operator*() const
48774 { return static_cast<_Link_type>(_M_node)->_M_value_field; }
48775
48776 pointer
48777 operator->() const
48778 { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
48779
48780 _Self&
48781 operator++()
48782 {
48783 _M_node = _Rb_tree_increment(_M_node);
48784 return *this;
48785 }
48786
48787 _Self
48788 operator++(int)
48789 {
48790 _Self __tmp = *this;
48791 _M_node = _Rb_tree_increment(_M_node);
48792 return __tmp;
48793 }
48794
48795 _Self&
48796 operator--()
48797 {
48798 _M_node = _Rb_tree_decrement(_M_node);
48799 return *this;
48800 }
48801
48802 _Self
48803 operator--(int)
48804 {
48805 _Self __tmp = *this;
48806 _M_node = _Rb_tree_decrement(_M_node);
48807 return __tmp;
48808 }
48809
48810 bool
48811 operator==(const _Self& __x) const
48812 { return _M_node == __x._M_node; }
48813
48814 bool
48815 operator!=(const _Self& __x) const
48816 { return _M_node != __x._M_node; }
48817
48818 _Base_ptr _M_node;
48819 };
48820
48821 template<typename _Tp>
48822 struct _Rb_tree_const_iterator
48823 {
48824 typedef _Tp value_type;
48825 typedef const _Tp& reference;
48826 typedef const _Tp* pointer;
48827
48828 typedef _Rb_tree_iterator<_Tp> iterator;
48829
48830 typedef bidirectional_iterator_tag iterator_category;
48831 typedef ptrdiff_t difference_type;
48832
48833 typedef _Rb_tree_const_iterator<_Tp> _Self;
48834 typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
48835 typedef const _Rb_tree_node<_Tp>* _Link_type;
48836
48837 _Rb_tree_const_iterator()
48838 : _M_node() { }
48839
48840 explicit
48841 _Rb_tree_const_iterator(_Link_type __x)
48842 : _M_node(__x) { }
48843
48844 _Rb_tree_const_iterator(const iterator& __it)
48845 : _M_node(__it._M_node) { }
48846
48847 reference
48848 operator*() const
48849 { return static_cast<_Link_type>(_M_node)->_M_value_field; }
48850
48851 pointer
48852 operator->() const
48853 { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
48854
48855 _Self&
48856 operator++()
48857 {
48858 _M_node = _Rb_tree_increment(_M_node);
48859 return *this;
48860 }
48861
48862 _Self
48863 operator++(int)
48864 {
48865 _Self __tmp = *this;
48866 _M_node = _Rb_tree_increment(_M_node);
48867 return __tmp;
48868 }
48869
48870 _Self&
48871 operator--()
48872 {
48873 _M_node = _Rb_tree_decrement(_M_node);
48874 return *this;
48875 }
48876
48877 _Self
48878 operator--(int)
48879 {
48880 _Self __tmp = *this;
48881 _M_node = _Rb_tree_decrement(_M_node);
48882 return __tmp;
48883 }
48884
48885 bool
48886 operator==(const _Self& __x) const
48887 { return _M_node == __x._M_node; }
48888
48889 bool
48890 operator!=(const _Self& __x) const
48891 { return _M_node != __x._M_node; }
48892
48893 _Base_ptr _M_node;
48894 };
48895
48896 template<typename _Val>
48897 inline bool
48898 operator==(const _Rb_tree_iterator<_Val>& __x,
48899 const _Rb_tree_const_iterator<_Val>& __y)
48900 { return __x._M_node == __y._M_node; }
48901
48902 template<typename _Val>
48903 inline bool
48904 operator!=(const _Rb_tree_iterator<_Val>& __x,
48905 const _Rb_tree_const_iterator<_Val>& __y)
48906 { return __x._M_node != __y._M_node; }
48907
48908 void
48909 _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
48910 _Rb_tree_node_base*& __root);
48911
48912 void
48913 _Rb_tree_rotate_right(_Rb_tree_node_base* const __x,
48914 _Rb_tree_node_base*& __root);
48915
48916 void
48917 _Rb_tree_insert_and_rebalance(const bool __insert_left,
48918 _Rb_tree_node_base* __x,
48919 _Rb_tree_node_base* __p,
48920 _Rb_tree_node_base& __header);
48921
48922 _Rb_tree_node_base*
48923 _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
48924 _Rb_tree_node_base& __header);
48925
48926
48927 template<typename _Key, typename _Val, typename _KeyOfValue,
48928 typename _Compare, typename _Alloc = allocator<_Val> >
48929 class _Rb_tree
48930 {
48931 typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other
48932 _Node_allocator;
48933
48934 protected:
48935 typedef _Rb_tree_node_base* _Base_ptr;
48936 typedef const _Rb_tree_node_base* _Const_Base_ptr;
48937 typedef _Rb_tree_node<_Val> _Rb_tree_node;
48938
48939 public:
48940 typedef _Key key_type;
48941 typedef _Val value_type;
48942 typedef value_type* pointer;
48943 typedef const value_type* const_pointer;
48944 typedef value_type& reference;
48945 typedef const value_type& const_reference;
48946 typedef _Rb_tree_node* _Link_type;
48947 typedef const _Rb_tree_node* _Const_Link_type;
48948 typedef size_t size_type;
48949 typedef ptrdiff_t difference_type;
48950 typedef _Alloc allocator_type;
48951
48952 _Node_allocator&
48953 _M_get_Node_allocator()
48954 { return *static_cast<_Node_allocator*>(&this->_M_impl); }
48955
48956 const _Node_allocator&
48957 _M_get_Node_allocator() const
48958 { return *static_cast<const _Node_allocator*>(&this->_M_impl); }
48959
48960 allocator_type
48961 get_allocator() const
48962 { return allocator_type(_M_get_Node_allocator()); }
48963
48964 protected:
48965 _Rb_tree_node*
48966 _M_get_node()
48967 { return _M_impl._Node_allocator::allocate(1); }
48968
48969 void
48970 _M_put_node(_Rb_tree_node* __p)
48971 { _M_impl._Node_allocator::deallocate(__p, 1); }
48972
48973 _Link_type
48974 _M_create_node(const value_type& __x)
48975 {
48976 _Link_type __tmp = _M_get_node();
48977 try
48978 { get_allocator().construct(&__tmp->_M_value_field, __x); }
48979 catch(...)
48980 {
48981 _M_put_node(__tmp);
48982 throw;
48983 }
48984 return __tmp;
48985 }
48986
48987 _Link_type
48988 _M_clone_node(_Const_Link_type __x)
48989 {
48990 _Link_type __tmp = _M_create_node(__x->_M_value_field);
48991 __tmp->_M_color = __x->_M_color;
48992 __tmp->_M_left = 0;
48993 __tmp->_M_right = 0;
48994 return __tmp;
48995 }
48996
48997 void
48998 _M_destroy_node(_Link_type __p)
48999 {
49000 get_allocator().destroy(&__p->_M_value_field);
49001 _M_put_node(__p);
49002 }
49003
49004 protected:
49005 template<typename _Key_compare,
49006 bool _Is_pod_comparator = std::__is_pod<_Key_compare>::__value>
49007 struct _Rb_tree_impl : public _Node_allocator
49008 {
49009 _Key_compare _M_key_compare;
49010 _Rb_tree_node_base _M_header;
49011 size_type _M_node_count;
49012
49013 _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(),
49014 const _Key_compare& __comp = _Key_compare())
49015 : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
49016 _M_node_count(0)
49017 {
49018 this->_M_header._M_color = _S_red;
49019 this->_M_header._M_parent = 0;
49020 this->_M_header._M_left = &this->_M_header;
49021 this->_M_header._M_right = &this->_M_header;
49022 }
49023 };
49024
49025
49026
49027 template<typename _Key_compare>
49028 struct _Rb_tree_impl<_Key_compare, true> : public _Node_allocator
49029 {
49030 _Key_compare _M_key_compare;
49031 _Rb_tree_node_base _M_header;
49032 size_type _M_node_count;
49033
49034 _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(),
49035 const _Key_compare& __comp = _Key_compare())
49036 : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
49037 _M_node_count(0)
49038 {
49039 this->_M_header._M_color = _S_red;
49040 this->_M_header._M_parent = 0;
49041 this->_M_header._M_left = &this->_M_header;
49042 this->_M_header._M_right = &this->_M_header;
49043 }
49044 };
49045
49046 _Rb_tree_impl<_Compare> _M_impl;
49047
49048 protected:
49049 _Base_ptr&
49050 _M_root()
49051 { return this->_M_impl._M_header._M_parent; }
49052
49053 _Const_Base_ptr
49054 _M_root() const
49055 { return this->_M_impl._M_header._M_parent; }
49056
49057 _Base_ptr&
49058 _M_leftmost()
49059 { return this->_M_impl._M_header._M_left; }
49060
49061 _Const_Base_ptr
49062 _M_leftmost() const
49063 { return this->_M_impl._M_header._M_left; }
49064
49065 _Base_ptr&
49066 _M_rightmost()
49067 { return this->_M_impl._M_header._M_right; }
49068
49069 _Const_Base_ptr
49070 _M_rightmost() const
49071 { return this->_M_impl._M_header._M_right; }
49072
49073 _Link_type
49074 _M_begin()
49075 { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
49076
49077 _Const_Link_type
49078 _M_begin() const
49079 {
49080 return static_cast<_Const_Link_type>
49081 (this->_M_impl._M_header._M_parent);
49082 }
49083
49084 _Link_type
49085 _M_end()
49086 { return static_cast<_Link_type>(&this->_M_impl._M_header); }
49087
49088 _Const_Link_type
49089 _M_end() const
49090 { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
49091
49092 static const_reference
49093 _S_value(_Const_Link_type __x)
49094 { return __x->_M_value_field; }
49095
49096 static const _Key&
49097 _S_key(_Const_Link_type __x)
49098 { return _KeyOfValue()(_S_value(__x)); }
49099
49100 static _Link_type
49101 _S_left(_Base_ptr __x)
49102 { return static_cast<_Link_type>(__x->_M_left); }
49103
49104 static _Const_Link_type
49105 _S_left(_Const_Base_ptr __x)
49106 { return static_cast<_Const_Link_type>(__x->_M_left); }
49107
49108 static _Link_type
49109 _S_right(_Base_ptr __x)
49110 { return static_cast<_Link_type>(__x->_M_right); }
49111
49112 static _Const_Link_type
49113 _S_right(_Const_Base_ptr __x)
49114 { return static_cast<_Const_Link_type>(__x->_M_right); }
49115
49116 static const_reference
49117 _S_value(_Const_Base_ptr __x)
49118 { return static_cast<_Const_Link_type>(__x)->_M_value_field; }
49119
49120 static const _Key&
49121 _S_key(_Const_Base_ptr __x)
49122 { return _KeyOfValue()(_S_value(__x)); }
49123
49124 static _Base_ptr
49125 _S_minimum(_Base_ptr __x)
49126 { return _Rb_tree_node_base::_S_minimum(__x); }
49127
49128 static _Const_Base_ptr
49129 _S_minimum(_Const_Base_ptr __x)
49130 { return _Rb_tree_node_base::_S_minimum(__x); }
49131
49132 static _Base_ptr
49133 _S_maximum(_Base_ptr __x)
49134 { return _Rb_tree_node_base::_S_maximum(__x); }
49135
49136 static _Const_Base_ptr
49137 _S_maximum(_Const_Base_ptr __x)
49138 { return _Rb_tree_node_base::_S_maximum(__x); }
49139
49140 public:
49141 typedef _Rb_tree_iterator<value_type> iterator;
49142 typedef _Rb_tree_const_iterator<value_type> const_iterator;
49143
49144 typedef std::reverse_iterator<iterator> reverse_iterator;
49145 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
49146
49147 private:
49148 iterator
49149 _M_insert(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
49150
49151
49152
49153 iterator
49154 _M_insert_lower(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
49155
49156 const_iterator
49157 _M_insert(_Const_Base_ptr __x, _Const_Base_ptr __y,
49158 const value_type& __v);
49159
49160 _Link_type
49161 _M_copy(_Const_Link_type __x, _Link_type __p);
49162
49163 void
49164 _M_erase(_Link_type __x);
49165
49166 public:
49167
49168 _Rb_tree()
49169 { }
49170
49171 _Rb_tree(const _Compare& __comp)
49172 : _M_impl(allocator_type(), __comp)
49173 { }
49174
49175 _Rb_tree(const _Compare& __comp, const allocator_type& __a)
49176 : _M_impl(__a, __comp)
49177 { }
49178
49179 _Rb_tree(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)
49180 : _M_impl(__x._M_get_Node_allocator(), __x._M_impl._M_key_compare)
49181 {
49182 if (__x._M_root() != 0)
49183 {
49184 _M_root() = _M_copy(__x._M_begin(), _M_end());
49185 _M_leftmost() = _S_minimum(_M_root());
49186 _M_rightmost() = _S_maximum(_M_root());
49187 _M_impl._M_node_count = __x._M_impl._M_node_count;
49188 }
49189 }
49190
49191 ~_Rb_tree()
49192 { _M_erase(_M_begin()); }
49193
49194 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
49195 operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x);
49196
49197
49198 _Compare
49199 key_comp() const
49200 { return _M_impl._M_key_compare; }
49201
49202 iterator
49203 begin()
49204 {
49205 return iterator(static_cast<_Link_type>
49206 (this->_M_impl._M_header._M_left));
49207 }
49208
49209 const_iterator
49210 begin() const
49211 {
49212 return const_iterator(static_cast<_Const_Link_type>
49213 (this->_M_impl._M_header._M_left));
49214 }
49215
49216 iterator
49217 end()
49218 { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }
49219
49220 const_iterator
49221 end() const
49222 {
49223 return const_iterator(static_cast<_Const_Link_type>
49224 (&this->_M_impl._M_header));
49225 }
49226
49227 reverse_iterator
49228 rbegin()
49229 { return reverse_iterator(end()); }
49230
49231 const_reverse_iterator
49232 rbegin() const
49233 { return const_reverse_iterator(end()); }
49234
49235 reverse_iterator
49236 rend()
49237 { return reverse_iterator(begin()); }
49238
49239 const_reverse_iterator
49240 rend() const
49241 { return const_reverse_iterator(begin()); }
49242
49243 bool
49244 empty() const
49245 { return _M_impl._M_node_count == 0; }
49246
49247 size_type
49248 size() const
49249 { return _M_impl._M_node_count; }
49250
49251 size_type
49252 max_size() const
49253 { return get_allocator().max_size(); }
49254
49255 void
49256 swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t);
49257
49258
49259 pair<iterator, bool>
49260 _M_insert_unique(const value_type& __x);
49261
49262 iterator
49263 _M_insert_equal(const value_type& __x);
49264
49265
49266
49267 iterator
49268 _M_insert_equal_lower(const value_type& __x);
49269
49270 iterator
49271 _M_insert_unique(iterator __position, const value_type& __x);
49272
49273 const_iterator
49274 _M_insert_unique(const_iterator __position, const value_type& __x);
49275
49276 iterator
49277 _M_insert_equal(iterator __position, const value_type& __x);
49278
49279 const_iterator
49280 _M_insert_equal(const_iterator __position, const value_type& __x);
49281
49282 template<typename _InputIterator>
49283 void
49284 _M_insert_unique(_InputIterator __first, _InputIterator __last);
49285
49286 template<typename _InputIterator>
49287 void
49288 _M_insert_equal(_InputIterator __first, _InputIterator __last);
49289
49290 void
49291 erase(iterator __position);
49292
49293 void
49294 erase(const_iterator __position);
49295
49296 size_type
49297 erase(const key_type& __x);
49298
49299 void
49300 erase(iterator __first, iterator __last);
49301
49302 void
49303 erase(const_iterator __first, const_iterator __last);
49304
49305 void
49306 erase(const key_type* __first, const key_type* __last);
49307
49308 void
49309 clear()
49310 {
49311 _M_erase(_M_begin());
49312 _M_leftmost() = _M_end();
49313 _M_root() = 0;
49314 _M_rightmost() = _M_end();
49315 _M_impl._M_node_count = 0;
49316 }
49317
49318
49319 iterator
49320 find(const key_type& __x);
49321
49322 const_iterator
49323 find(const key_type& __x) const;
49324
49325 size_type
49326 count(const key_type& __x) const;
49327
49328 iterator
49329 lower_bound(const key_type& __x);
49330
49331 const_iterator
49332 lower_bound(const key_type& __x) const;
49333
49334 iterator
49335 upper_bound(const key_type& __x);
49336
49337 const_iterator
49338 upper_bound(const key_type& __x) const;
49339
49340 pair<iterator,iterator>
49341 equal_range(const key_type& __x);
49342
49343 pair<const_iterator, const_iterator>
49344 equal_range(const key_type& __x) const;
49345
49346
49347 bool
49348 __rb_verify() const;
49349 };
49350
49351 template<typename _Key, typename _Val, typename _KeyOfValue,
49352 typename _Compare, typename _Alloc>
49353 inline bool
49354 operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49355 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49356 {
49357 return __x.size() == __y.size()
49358 && std::equal(__x.begin(), __x.end(), __y.begin());
49359 }
49360
49361 template<typename _Key, typename _Val, typename _KeyOfValue,
49362 typename _Compare, typename _Alloc>
49363 inline bool
49364 operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49365 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49366 {
49367 return std::lexicographical_compare(__x.begin(), __x.end(),
49368 __y.begin(), __y.end());
49369 }
49370
49371 template<typename _Key, typename _Val, typename _KeyOfValue,
49372 typename _Compare, typename _Alloc>
49373 inline bool
49374 operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49375 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49376 { return !(__x == __y); }
49377
49378 template<typename _Key, typename _Val, typename _KeyOfValue,
49379 typename _Compare, typename _Alloc>
49380 inline bool
49381 operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49382 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49383 { return __y < __x; }
49384
49385 template<typename _Key, typename _Val, typename _KeyOfValue,
49386 typename _Compare, typename _Alloc>
49387 inline bool
49388 operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49389 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49390 { return !(__y < __x); }
49391
49392 template<typename _Key, typename _Val, typename _KeyOfValue,
49393 typename _Compare, typename _Alloc>
49394 inline bool
49395 operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49396 const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49397 { return !(__x < __y); }
49398
49399 template<typename _Key, typename _Val, typename _KeyOfValue,
49400 typename _Compare, typename _Alloc>
49401 inline void
49402 swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
49403 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
49404 { __x.swap(__y); }
49405
49406 template<typename _Key, typename _Val, typename _KeyOfValue,
49407 typename _Compare, typename _Alloc>
49408 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
49409 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49410 operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)
49411 {
49412 if (this != &__x)
49413 {
49414
49415 clear();
49416 _M_impl._M_key_compare = __x._M_impl._M_key_compare;
49417 if (__x._M_root() != 0)
49418 {
49419 _M_root() = _M_copy(__x._M_begin(), _M_end());
49420 _M_leftmost() = _S_minimum(_M_root());
49421 _M_rightmost() = _S_maximum(_M_root());
49422 _M_impl._M_node_count = __x._M_impl._M_node_count;
49423 }
49424 }
49425 return *this;
49426 }
49427
49428 template<typename _Key, typename _Val, typename _KeyOfValue,
49429 typename _Compare, typename _Alloc>
49430 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49431 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49432 _M_insert(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
49433 {
49434 bool __insert_left = (__x != 0 || __p == _M_end()
49435 || _M_impl._M_key_compare(_KeyOfValue()(__v),
49436 _S_key(__p)));
49437
49438 _Link_type __z = _M_create_node(__v);
49439
49440 _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
49441 this->_M_impl._M_header);
49442 ++_M_impl._M_node_count;
49443 return iterator(__z);
49444 }
49445
49446 template<typename _Key, typename _Val, typename _KeyOfValue,
49447 typename _Compare, typename _Alloc>
49448 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49449 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49450 _M_insert_lower(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
49451 {
49452 bool __insert_left = (__x != 0 || __p == _M_end()
49453 || !_M_impl._M_key_compare(_S_key(__p),
49454 _KeyOfValue()(__v)));
49455
49456 _Link_type __z = _M_create_node(__v);
49457
49458 _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
49459 this->_M_impl._M_header);
49460 ++_M_impl._M_node_count;
49461 return iterator(__z);
49462 }
49463
49464 template<typename _Key, typename _Val, typename _KeyOfValue,
49465 typename _Compare, typename _Alloc>
49466 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
49467 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49468 _M_insert(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)
49469 {
49470 bool __insert_left = (__x != 0 || __p == _M_end()
49471 || _M_impl._M_key_compare(_KeyOfValue()(__v),
49472 _S_key(__p)));
49473
49474 _Link_type __z = _M_create_node(__v);
49475
49476 _Rb_tree_insert_and_rebalance(__insert_left, __z,
49477 const_cast<_Base_ptr>(__p),
49478 this->_M_impl._M_header);
49479 ++_M_impl._M_node_count;
49480 return const_iterator(__z);
49481 }
49482
49483 template<typename _Key, typename _Val, typename _KeyOfValue,
49484 typename _Compare, typename _Alloc>
49485 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49486 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49487 _M_insert_equal(const _Val& __v)
49488 {
49489 _Link_type __x = _M_begin();
49490 _Link_type __y = _M_end();
49491 while (__x != 0)
49492 {
49493 __y = __x;
49494 __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?
49495 _S_left(__x) : _S_right(__x);
49496 }
49497 return _M_insert(__x, __y, __v);
49498 }
49499
49500 template<typename _Key, typename _Val, typename _KeyOfValue,
49501 typename _Compare, typename _Alloc>
49502 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49503 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49504 _M_insert_equal_lower(const _Val& __v)
49505 {
49506 _Link_type __x = _M_begin();
49507 _Link_type __y = _M_end();
49508 while (__x != 0)
49509 {
49510 __y = __x;
49511 __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
49512 _S_left(__x) : _S_right(__x);
49513 }
49514 return _M_insert_lower(__x, __y, __v);
49515 }
49516
49517 template<typename _Key, typename _Val, typename _KeyOfValue,
49518 typename _Compare, typename _Alloc>
49519 void
49520 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49521 swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
49522 {
49523 if (_M_root() == 0)
49524 {
49525 if (__t._M_root() != 0)
49526 {
49527 _M_root() = __t._M_root();
49528 _M_leftmost() = __t._M_leftmost();
49529 _M_rightmost() = __t._M_rightmost();
49530 _M_root()->_M_parent = _M_end();
49531
49532 __t._M_root() = 0;
49533 __t._M_leftmost() = __t._M_end();
49534 __t._M_rightmost() = __t._M_end();
49535 }
49536 }
49537 else if (__t._M_root() == 0)
49538 {
49539 __t._M_root() = _M_root();
49540 __t._M_leftmost() = _M_leftmost();
49541 __t._M_rightmost() = _M_rightmost();
49542 __t._M_root()->_M_parent = __t._M_end();
49543
49544 _M_root() = 0;
49545 _M_leftmost() = _M_end();
49546 _M_rightmost() = _M_end();
49547 }
49548 else
49549 {
49550 std::swap(_M_root(),__t._M_root());
49551 std::swap(_M_leftmost(),__t._M_leftmost());
49552 std::swap(_M_rightmost(),__t._M_rightmost());
49553
49554 _M_root()->_M_parent = _M_end();
49555 __t._M_root()->_M_parent = __t._M_end();
49556 }
49557
49558 std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
49559 std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
49560
49561
49562
49563 std::__alloc_swap<_Node_allocator>::
49564 _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator());
49565 }
49566
49567 template<typename _Key, typename _Val, typename _KeyOfValue,
49568 typename _Compare, typename _Alloc>
49569 pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
49570 _Compare, _Alloc>::iterator, bool>
49571 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49572 _M_insert_unique(const _Val& __v)
49573 {
49574 _Link_type __x = _M_begin();
49575 _Link_type __y = _M_end();
49576 bool __comp = true;
49577 while (__x != 0)
49578 {
49579 __y = __x;
49580 __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x));
49581 __x = __comp ? _S_left(__x) : _S_right(__x);
49582 }
49583 iterator __j = iterator(__y);
49584 if (__comp)
49585 if (__j == begin())
49586 return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
49587 else
49588 --__j;
49589 if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
49590 return pair<iterator, bool>(_M_insert(__x, __y, __v), true);
49591 return pair<iterator, bool>(__j, false);
49592 }
49593
49594 template<typename _Key, typename _Val, typename _KeyOfValue,
49595 typename _Compare, typename _Alloc>
49596 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49597 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49598 _M_insert_unique(iterator __position, const _Val& __v)
49599 {
49600
49601 if (__position._M_node == _M_end())
49602 {
49603 if (size() > 0
49604 && _M_impl._M_key_compare(_S_key(_M_rightmost()),
49605 _KeyOfValue()(__v)))
49606 return _M_insert(0, _M_rightmost(), __v);
49607 else
49608 return _M_insert_unique(__v).first;
49609 }
49610 else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
49611 _S_key(__position._M_node)))
49612 {
49613
49614 iterator __before = __position;
49615 if (__position._M_node == _M_leftmost())
49616 return _M_insert(_M_leftmost(), _M_leftmost(), __v);
49617 else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),
49618 _KeyOfValue()(__v)))
49619 {
49620 if (_S_right(__before._M_node) == 0)
49621 return _M_insert(0, __before._M_node, __v);
49622 else
49623 return _M_insert(__position._M_node,
49624 __position._M_node, __v);
49625 }
49626 else
49627 return _M_insert_unique(__v).first;
49628 }
49629 else if (_M_impl._M_key_compare(_S_key(__position._M_node),
49630 _KeyOfValue()(__v)))
49631 {
49632
49633 iterator __after = __position;
49634 if (__position._M_node == _M_rightmost())
49635 return _M_insert(0, _M_rightmost(), __v);
49636 else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
49637 _S_key((++__after)._M_node)))
49638 {
49639 if (_S_right(__position._M_node) == 0)
49640 return _M_insert(0, __position._M_node, __v);
49641 else
49642 return _M_insert(__after._M_node, __after._M_node, __v);
49643 }
49644 else
49645 return _M_insert_unique(__v).first;
49646 }
49647 else
49648 return __position;
49649 }
49650
49651 template<typename _Key, typename _Val, typename _KeyOfValue,
49652 typename _Compare, typename _Alloc>
49653 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
49654 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49655 _M_insert_unique(const_iterator __position, const _Val& __v)
49656 {
49657
49658 if (__position._M_node == _M_end())
49659 {
49660 if (size() > 0
49661 && _M_impl._M_key_compare(_S_key(_M_rightmost()),
49662 _KeyOfValue()(__v)))
49663 return _M_insert(0, _M_rightmost(), __v);
49664 else
49665 return const_iterator(_M_insert_unique(__v).first);
49666 }
49667 else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
49668 _S_key(__position._M_node)))
49669 {
49670
49671 const_iterator __before = __position;
49672 if (__position._M_node == _M_leftmost())
49673 return _M_insert(_M_leftmost(), _M_leftmost(), __v);
49674 else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),
49675 _KeyOfValue()(__v)))
49676 {
49677 if (_S_right(__before._M_node) == 0)
49678 return _M_insert(0, __before._M_node, __v);
49679 else
49680 return _M_insert(__position._M_node,
49681 __position._M_node, __v);
49682 }
49683 else
49684 return const_iterator(_M_insert_unique(__v).first);
49685 }
49686 else if (_M_impl._M_key_compare(_S_key(__position._M_node),
49687 _KeyOfValue()(__v)))
49688 {
49689
49690 const_iterator __after = __position;
49691 if (__position._M_node == _M_rightmost())
49692 return _M_insert(0, _M_rightmost(), __v);
49693 else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
49694 _S_key((++__after)._M_node)))
49695 {
49696 if (_S_right(__position._M_node) == 0)
49697 return _M_insert(0, __position._M_node, __v);
49698 else
49699 return _M_insert(__after._M_node, __after._M_node, __v);
49700 }
49701 else
49702 return const_iterator(_M_insert_unique(__v).first);
49703 }
49704 else
49705 return __position;
49706 }
49707
49708 template<typename _Key, typename _Val, typename _KeyOfValue,
49709 typename _Compare, typename _Alloc>
49710 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49711 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49712 _M_insert_equal(iterator __position, const _Val& __v)
49713 {
49714
49715 if (__position._M_node == _M_end())
49716 {
49717 if (size() > 0
49718 && !_M_impl._M_key_compare(_KeyOfValue()(__v),
49719 _S_key(_M_rightmost())))
49720 return _M_insert(0, _M_rightmost(), __v);
49721 else
49722 return _M_insert_equal(__v);
49723 }
49724 else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
49725 _KeyOfValue()(__v)))
49726 {
49727
49728 iterator __before = __position;
49729 if (__position._M_node == _M_leftmost())
49730 return _M_insert(_M_leftmost(), _M_leftmost(), __v);
49731 else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),
49732 _S_key((--__before)._M_node)))
49733 {
49734 if (_S_right(__before._M_node) == 0)
49735 return _M_insert(0, __before._M_node, __v);
49736 else
49737 return _M_insert(__position._M_node,
49738 __position._M_node, __v);
49739 }
49740 else
49741 return _M_insert_equal(__v);
49742 }
49743 else
49744 {
49745
49746 iterator __after = __position;
49747 if (__position._M_node == _M_rightmost())
49748 return _M_insert(0, _M_rightmost(), __v);
49749 else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),
49750 _KeyOfValue()(__v)))
49751 {
49752 if (_S_right(__position._M_node) == 0)
49753 return _M_insert(0, __position._M_node, __v);
49754 else
49755 return _M_insert(__after._M_node, __after._M_node, __v);
49756 }
49757 else
49758 return _M_insert_equal_lower(__v);
49759 }
49760 }
49761
49762 template<typename _Key, typename _Val, typename _KeyOfValue,
49763 typename _Compare, typename _Alloc>
49764 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
49765 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49766 _M_insert_equal(const_iterator __position, const _Val& __v)
49767 {
49768
49769 if (__position._M_node == _M_end())
49770 {
49771 if (size() > 0
49772 && !_M_impl._M_key_compare(_KeyOfValue()(__v),
49773 _S_key(_M_rightmost())))
49774 return _M_insert(0, _M_rightmost(), __v);
49775 else
49776 return const_iterator(_M_insert_equal(__v));
49777 }
49778 else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
49779 _KeyOfValue()(__v)))
49780 {
49781
49782 const_iterator __before = __position;
49783 if (__position._M_node == _M_leftmost())
49784 return _M_insert(_M_leftmost(), _M_leftmost(), __v);
49785 else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),
49786 _S_key((--__before)._M_node)))
49787 {
49788 if (_S_right(__before._M_node) == 0)
49789 return _M_insert(0, __before._M_node, __v);
49790 else
49791 return _M_insert(__position._M_node,
49792 __position._M_node, __v);
49793 }
49794 else
49795 return const_iterator(_M_insert_equal(__v));
49796 }
49797 else
49798 {
49799
49800 const_iterator __after = __position;
49801 if (__position._M_node == _M_rightmost())
49802 return _M_insert(0, _M_rightmost(), __v);
49803 else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),
49804 _KeyOfValue()(__v)))
49805 {
49806 if (_S_right(__position._M_node) == 0)
49807 return _M_insert(0, __position._M_node, __v);
49808 else
49809 return _M_insert(__after._M_node, __after._M_node, __v);
49810 }
49811 else
49812 return const_iterator(_M_insert_equal_lower(__v));
49813 }
49814 }
49815
49816 template<typename _Key, typename _Val, typename _KoV,
49817 typename _Cmp, typename _Alloc>
49818 template<class _II>
49819 void
49820 _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
49821 _M_insert_equal(_II __first, _II __last)
49822 {
49823 for (; __first != __last; ++__first)
49824 _M_insert_equal(end(), *__first);
49825 }
49826
49827 template<typename _Key, typename _Val, typename _KoV,
49828 typename _Cmp, typename _Alloc>
49829 template<class _II>
49830 void
49831 _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
49832 _M_insert_unique(_II __first, _II __last)
49833 {
49834 for (; __first != __last; ++__first)
49835 _M_insert_unique(end(), *__first);
49836 }
49837
49838 template<typename _Key, typename _Val, typename _KeyOfValue,
49839 typename _Compare, typename _Alloc>
49840 inline void
49841 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49842 erase(iterator __position)
49843 {
49844 _Link_type __y =
49845 static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
49846 (__position._M_node,
49847 this->_M_impl._M_header));
49848 _M_destroy_node(__y);
49849 --_M_impl._M_node_count;
49850 }
49851
49852 template<typename _Key, typename _Val, typename _KeyOfValue,
49853 typename _Compare, typename _Alloc>
49854 inline void
49855 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49856 erase(const_iterator __position)
49857 {
49858 _Link_type __y =
49859 static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
49860 (const_cast<_Base_ptr>(__position._M_node),
49861 this->_M_impl._M_header));
49862 _M_destroy_node(__y);
49863 --_M_impl._M_node_count;
49864 }
49865
49866 template<typename _Key, typename _Val, typename _KeyOfValue,
49867 typename _Compare, typename _Alloc>
49868 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
49869 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49870 erase(const _Key& __x)
49871 {
49872 pair<iterator, iterator> __p = equal_range(__x);
49873 const size_type __old_size = size();
49874 erase(__p.first, __p.second);
49875 return __old_size - size();
49876 }
49877
49878 template<typename _Key, typename _Val, typename _KoV,
49879 typename _Compare, typename _Alloc>
49880 typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
49881 _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
49882 _M_copy(_Const_Link_type __x, _Link_type __p)
49883 {
49884
49885 _Link_type __top = _M_clone_node(__x);
49886 __top->_M_parent = __p;
49887
49888 try
49889 {
49890 if (__x->_M_right)
49891 __top->_M_right = _M_copy(_S_right(__x), __top);
49892 __p = __top;
49893 __x = _S_left(__x);
49894
49895 while (__x != 0)
49896 {
49897 _Link_type __y = _M_clone_node(__x);
49898 __p->_M_left = __y;
49899 __y->_M_parent = __p;
49900 if (__x->_M_right)
49901 __y->_M_right = _M_copy(_S_right(__x), __y);
49902 __p = __y;
49903 __x = _S_left(__x);
49904 }
49905 }
49906 catch(...)
49907 {
49908 _M_erase(__top);
49909 throw;
49910 }
49911 return __top;
49912 }
49913
49914 template<typename _Key, typename _Val, typename _KeyOfValue,
49915 typename _Compare, typename _Alloc>
49916 void
49917 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49918 _M_erase(_Link_type __x)
49919 {
49920
49921 while (__x != 0)
49922 {
49923 _M_erase(_S_right(__x));
49924 _Link_type __y = _S_left(__x);
49925 _M_destroy_node(__x);
49926 __x = __y;
49927 }
49928 }
49929
49930 template<typename _Key, typename _Val, typename _KeyOfValue,
49931 typename _Compare, typename _Alloc>
49932 void
49933 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49934 erase(iterator __first, iterator __last)
49935 {
49936 if (__first == begin() && __last == end())
49937 clear();
49938 else
49939 while (__first != __last)
49940 erase(__first++);
49941 }
49942
49943 template<typename _Key, typename _Val, typename _KeyOfValue,
49944 typename _Compare, typename _Alloc>
49945 void
49946 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49947 erase(const_iterator __first, const_iterator __last)
49948 {
49949 if (__first == begin() && __last == end())
49950 clear();
49951 else
49952 while (__first != __last)
49953 erase(__first++);
49954 }
49955
49956 template<typename _Key, typename _Val, typename _KeyOfValue,
49957 typename _Compare, typename _Alloc>
49958 void
49959 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49960 erase(const _Key* __first, const _Key* __last)
49961 {
49962 while (__first != __last)
49963 erase(*__first++);
49964 }
49965
49966 template<typename _Key, typename _Val, typename _KeyOfValue,
49967 typename _Compare, typename _Alloc>
49968 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
49969 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49970 find(const _Key& __k)
49971 {
49972 _Link_type __x = _M_begin();
49973 _Link_type __y = _M_end();
49974
49975 while (__x != 0)
49976 if (!_M_impl._M_key_compare(_S_key(__x), __k))
49977 __y = __x, __x = _S_left(__x);
49978 else
49979 __x = _S_right(__x);
49980
49981 iterator __j = iterator(__y);
49982 return (__j == end()
49983 || _M_impl._M_key_compare(__k,
49984 _S_key(__j._M_node))) ? end() : __j;
49985 }
49986
49987 template<typename _Key, typename _Val, typename _KeyOfValue,
49988 typename _Compare, typename _Alloc>
49989 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
49990 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
49991 find(const _Key& __k) const
49992 {
49993 _Const_Link_type __x = _M_begin();
49994 _Const_Link_type __y = _M_end();
49995
49996 while (__x != 0)
49997 {
49998 if (!_M_impl._M_key_compare(_S_key(__x), __k))
49999 __y = __x, __x = _S_left(__x);
50000 else
50001 __x = _S_right(__x);
50002 }
50003 const_iterator __j = const_iterator(__y);
50004 return (__j == end()
50005 || _M_impl._M_key_compare(__k,
50006 _S_key(__j._M_node))) ? end() : __j;
50007 }
50008
50009 template<typename _Key, typename _Val, typename _KeyOfValue,
50010 typename _Compare, typename _Alloc>
50011 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
50012 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
50013 count(const _Key& __k) const
50014 {
50015 pair<const_iterator, const_iterator> __p = equal_range(__k);
50016 const size_type __n = std::distance(__p.first, __p.second);
50017 return __n;
50018 }
50019
50020 template<typename _Key, typename _Val, typename _KeyOfValue,
50021 typename _Compare, typename _Alloc>
50022 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
50023 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
50024 lower_bound(const _Key& __k)
50025 {
50026 _Link_type __x = _M_begin();
50027 _Link_type __y = _M_end();
50028
50029 while (__x != 0)
50030 if (!_M_impl._M_key_compare(_S_key(__x), __k))
50031 __y = __x, __x = _S_left(__x);
50032 else
50033 __x = _S_right(__x);
50034
50035 return iterator(__y);
50036 }
50037
50038 template<typename _Key, typename _Val, typename _KeyOfValue,
50039 typename _Compare, typename _Alloc>
50040 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
50041 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
50042 lower_bound(const _Key& __k) const
50043 {
50044 _Const_Link_type __x = _M_begin();
50045 _Const_Link_type __y = _M_end();
50046
50047 while (__x != 0)
50048 if (!_M_impl._M_key_compare(_S_key(__x), __k))
50049 __y = __x, __x = _S_left(__x);
50050 else
50051 __x = _S_right(__x);
50052
50053 return const_iterator(__y);
50054 }
50055
50056 template<typename _Key, typename _Val, typename _KeyOfValue,
50057 typename _Compare, typename _Alloc>
50058 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
50059 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
50060 upper_bound(const _Key& __k)
50061 {
50062 _Link_type __x = _M_begin();
50063 _Link_type __y = _M_end();
50064
50065 while (__x != 0)
50066 if (_M_impl._M_key_compare(__k, _S_key(__x)))
50067 __y = __x, __x = _S_left(__x);
50068 else
50069 __x = _S_right(__x);
50070
50071 return iterator(__y);
50072 }
50073
50074 template<typename _Key, typename _Val, typename _KeyOfValue,
50075 typename _Compare, typename _Alloc>
50076 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
50077 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
50078 upper_bound(const _Key& __k) const
50079 {
50080 _Const_Link_type __x = _M_begin();
50081 _Const_Link_type __y = _M_end();
50082
50083 while (__x != 0)
50084 if (_M_impl._M_key_compare(__k, _S_key(__x)))
50085 __y = __x, __x = _S_left(__x);
50086 else
50087 __x = _S_right(__x);
50088
50089 return const_iterator(__y);
50090 }
50091
50092 template<typename _Key, typename _Val, typename _KeyOfValue,
50093 typename _Compare, typename _Alloc>
50094 inline
50095 pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
50096 _Compare, _Alloc>::iterator,
50097 typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator>
50098 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
50099 equal_range(const _Key& __k)
50100 { return pair<iterator, iterator>(lower_bound(__k), upper_bound(__k)); }
50101
50102 template<typename _Key, typename _Val, typename _KoV,
50103 typename _Compare, typename _Alloc>
50104 inline
50105 pair<typename _Rb_tree<_Key, _Val, _KoV,
50106 _Compare, _Alloc>::const_iterator,
50107 typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::const_iterator>
50108 _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
50109 equal_range(const _Key& __k) const
50110 { return pair<const_iterator, const_iterator>(lower_bound(__k),
50111 upper_bound(__k)); }
50112
50113 unsigned int
50114 _Rb_tree_black_count(const _Rb_tree_node_base* __node,
50115 const _Rb_tree_node_base* __root);
50116
50117 template<typename _Key, typename _Val, typename _KeyOfValue,
50118 typename _Compare, typename _Alloc>
50119 bool
50120 _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
50121 {
50122 if (_M_impl._M_node_count == 0 || begin() == end())
50123 return _M_impl._M_node_count == 0 && begin() == end()
50124 && this->_M_impl._M_header._M_left == _M_end()
50125 && this->_M_impl._M_header._M_right == _M_end();
50126
50127 unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());
50128 for (const_iterator __it = begin(); __it != end(); ++__it)
50129 {
50130 _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);
50131 _Const_Link_type __L = _S_left(__x);
50132 _Const_Link_type __R = _S_right(__x);
50133
50134 if (__x->_M_color == _S_red)
50135 if ((__L && __L->_M_color == _S_red)
50136 || (__R && __R->_M_color == _S_red))
50137 return false;
50138
50139 if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))
50140 return false;
50141 if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))
50142 return false;
50143
50144 if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)
50145 return false;
50146 }
50147
50148 if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
50149 return false;
50150 if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
50151 return false;
50152 return true;
50153 }
50154
50155}
50156# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/set" 2 3
50157# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 1 3
50158# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50159namespace std __attribute__ ((__visibility__ ("default"))) {
50160# 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50161 template<class _Key, class _Compare = std::less<_Key>,
50162 class _Alloc = std::allocator<_Key> >
50163 class set
50164 {
50165
50166 typedef typename _Alloc::value_type _Alloc_value_type;
50167
50168
50169
50170
50171
50172 public:
50173
50174
50175
50176 typedef _Key key_type;
50177 typedef _Key value_type;
50178 typedef _Compare key_compare;
50179 typedef _Compare value_compare;
50180 typedef _Alloc allocator_type;
50181
50182
50183 private:
50184 typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
50185
50186 typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
50187 key_compare, _Key_alloc_type> _Rep_type;
50188 _Rep_type _M_t;
50189
50190 public:
50191
50192
50193 typedef typename _Key_alloc_type::pointer pointer;
50194 typedef typename _Key_alloc_type::const_pointer const_pointer;
50195 typedef typename _Key_alloc_type::reference reference;
50196 typedef typename _Key_alloc_type::const_reference const_reference;
50197
50198
50199
50200 typedef typename _Rep_type::const_iterator iterator;
50201 typedef typename _Rep_type::const_iterator const_iterator;
50202 typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
50203 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
50204 typedef typename _Rep_type::size_type size_type;
50205 typedef typename _Rep_type::difference_type difference_type;
50206
50207
50208
50209
50210 set()
50211 : _M_t(_Compare(), allocator_type()) {}
50212
50213
50214
50215
50216
50217
50218
50219 explicit
50220 set(const _Compare& __comp,
50221 const allocator_type& __a = allocator_type())
50222 : _M_t(__comp, __a) {}
50223# 163 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50224 template<class _InputIterator>
50225 set(_InputIterator __first, _InputIterator __last)
50226 : _M_t(_Compare(), allocator_type())
50227 { _M_t._M_insert_unique(__first, __last); }
50228# 179 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50229 template<class _InputIterator>
50230 set(_InputIterator __first, _InputIterator __last,
50231 const _Compare& __comp,
50232 const allocator_type& __a = allocator_type())
50233 : _M_t(__comp, __a)
50234 { _M_t._M_insert_unique(__first, __last); }
50235# 193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50236 set(const set<_Key,_Compare,_Alloc>& __x)
50237 : _M_t(__x._M_t) { }
50238# 203 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50239 set<_Key,_Compare,_Alloc>&
50240 operator=(const set<_Key, _Compare, _Alloc>& __x)
50241 {
50242 _M_t = __x._M_t;
50243 return *this;
50244 }
50245
50246
50247
50248
50249 key_compare
50250 key_comp() const
50251 { return _M_t.key_comp(); }
50252
50253 value_compare
50254 value_comp() const
50255 { return _M_t.key_comp(); }
50256
50257 allocator_type
50258 get_allocator() const
50259 { return _M_t.get_allocator(); }
50260
50261
50262
50263
50264
50265 iterator
50266 begin() const
50267 { return _M_t.begin(); }
50268
50269
50270
50271
50272
50273 iterator
50274 end() const
50275 { return _M_t.end(); }
50276
50277
50278
50279
50280
50281
50282 reverse_iterator
50283 rbegin() const
50284 { return _M_t.rbegin(); }
50285
50286
50287
50288
50289
50290
50291 reverse_iterator
50292 rend() const
50293 { return _M_t.rend(); }
50294
50295
50296 bool
50297 empty() const
50298 { return _M_t.empty(); }
50299
50300
50301 size_type
50302 size() const
50303 { return _M_t.size(); }
50304
50305
50306 size_type
50307 max_size() const
50308 { return _M_t.max_size(); }
50309# 285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50310 void
50311 swap(set<_Key,_Compare,_Alloc>& __x)
50312 { _M_t.swap(__x._M_t); }
50313# 303 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50314 std::pair<iterator,bool>
50315 insert(const value_type& __x)
50316 {
50317 std::pair<typename _Rep_type::iterator, bool> __p =
50318 _M_t._M_insert_unique(__x);
50319 return std::pair<iterator, bool>(__p.first, __p.second);
50320 }
50321# 330 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50322 iterator
50323 insert(iterator __position, const value_type& __x)
50324 { return _M_t._M_insert_unique(__position, __x); }
50325# 342 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50326 template<class _InputIterator>
50327 void
50328 insert(_InputIterator __first, _InputIterator __last)
50329 { _M_t._M_insert_unique(__first, __last); }
50330# 356 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50331 void
50332 erase(iterator __position)
50333 { _M_t.erase(__position); }
50334# 371 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50335 size_type
50336 erase(const key_type& __x)
50337 { return _M_t.erase(__x); }
50338# 386 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50339 void
50340 erase(iterator __first, iterator __last)
50341 { _M_t.erase(__first, __last); }
50342
50343
50344
50345
50346
50347
50348
50349 void
50350 clear()
50351 { _M_t.clear(); }
50352# 410 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50353 size_type
50354 count(const key_type& __x) const
50355 { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
50356# 428 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50357 iterator
50358 find(const key_type& __x)
50359 { return _M_t.find(__x); }
50360
50361 const_iterator
50362 find(const key_type& __x) const
50363 { return _M_t.find(__x); }
50364# 449 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50365 iterator
50366 lower_bound(const key_type& __x)
50367 { return _M_t.lower_bound(__x); }
50368
50369 const_iterator
50370 lower_bound(const key_type& __x) const
50371 { return _M_t.lower_bound(__x); }
50372# 465 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50373 iterator
50374 upper_bound(const key_type& __x)
50375 { return _M_t.upper_bound(__x); }
50376
50377 const_iterator
50378 upper_bound(const key_type& __x) const
50379 { return _M_t.upper_bound(__x); }
50380# 490 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50381 std::pair<iterator, iterator>
50382 equal_range(const key_type& __x)
50383 { return _M_t.equal_range(__x); }
50384
50385 std::pair<const_iterator, const_iterator>
50386 equal_range(const key_type& __x) const
50387 { return _M_t.equal_range(__x); }
50388
50389
50390 template<class _K1, class _C1, class _A1>
50391 friend bool
50392 operator== (const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
50393
50394 template<class _K1, class _C1, class _A1>
50395 friend bool
50396 operator< (const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
50397 };
50398# 519 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50399 template<class _Key, class _Compare, class _Alloc>
50400 inline bool
50401 operator==(const set<_Key, _Compare, _Alloc>& __x,
50402 const set<_Key, _Compare, _Alloc>& __y)
50403 { return __x._M_t == __y._M_t; }
50404# 536 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
50405 template<class _Key, class _Compare, class _Alloc>
50406 inline bool
50407 operator<(const set<_Key, _Compare, _Alloc>& __x,
50408 const set<_Key, _Compare, _Alloc>& __y)
50409 { return __x._M_t < __y._M_t; }
50410
50411
50412 template<class _Key, class _Compare, class _Alloc>
50413 inline bool
50414 operator!=(const set<_Key, _Compare, _Alloc>& __x,
50415 const set<_Key, _Compare, _Alloc>& __y)
50416 { return !(__x == __y); }
50417
50418
50419 template<class _Key, class _Compare, class _Alloc>
50420 inline bool
50421 operator>(const set<_Key, _Compare, _Alloc>& __x,
50422 const set<_Key, _Compare, _Alloc>& __y)
50423 { return __y < __x; }
50424
50425
50426 template<class _Key, class _Compare, class _Alloc>
50427 inline bool
50428 operator<=(const set<_Key, _Compare, _Alloc>& __x,
50429 const set<_Key, _Compare, _Alloc>& __y)
50430 { return !(__y < __x); }
50431
50432
50433 template<class _Key, class _Compare, class _Alloc>
50434 inline bool
50435 operator>=(const set<_Key, _Compare, _Alloc>& __x,
50436 const set<_Key, _Compare, _Alloc>& __y)
50437 { return !(__x < __y); }
50438
50439
50440 template<class _Key, class _Compare, class _Alloc>
50441 inline void
50442 swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y)
50443 { __x.swap(__y); }
50444
50445}
50446# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/set" 2 3
50447# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 1 3
50448# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50449namespace std __attribute__ ((__visibility__ ("default"))) {
50450# 88 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50451 template <class _Key, class _Compare = std::less<_Key>,
50452 class _Alloc = std::allocator<_Key> >
50453 class multiset
50454 {
50455
50456 typedef typename _Alloc::value_type _Alloc_value_type;
50457
50458
50459
50460
50461
50462 public:
50463
50464 typedef _Key key_type;
50465 typedef _Key value_type;
50466 typedef _Compare key_compare;
50467 typedef _Compare value_compare;
50468 typedef _Alloc allocator_type;
50469
50470 private:
50471
50472 typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
50473
50474 typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
50475 key_compare, _Key_alloc_type> _Rep_type;
50476
50477 _Rep_type _M_t;
50478
50479 public:
50480 typedef typename _Key_alloc_type::pointer pointer;
50481 typedef typename _Key_alloc_type::const_pointer const_pointer;
50482 typedef typename _Key_alloc_type::reference reference;
50483 typedef typename _Key_alloc_type::const_reference const_reference;
50484
50485
50486
50487 typedef typename _Rep_type::const_iterator iterator;
50488 typedef typename _Rep_type::const_iterator const_iterator;
50489 typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
50490 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
50491 typedef typename _Rep_type::size_type size_type;
50492 typedef typename _Rep_type::difference_type difference_type;
50493
50494
50495
50496
50497
50498
50499 multiset()
50500 : _M_t(_Compare(), allocator_type()) { }
50501
50502 explicit
50503 multiset(const _Compare& __comp,
50504 const allocator_type& __a = allocator_type())
50505 : _M_t(__comp, __a) { }
50506# 153 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50507 template <class _InputIterator>
50508 multiset(_InputIterator __first, _InputIterator __last)
50509 : _M_t(_Compare(), allocator_type())
50510 { _M_t._M_insert_equal(__first, __last); }
50511# 169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50512 template <class _InputIterator>
50513 multiset(_InputIterator __first, _InputIterator __last,
50514 const _Compare& __comp,
50515 const allocator_type& __a = allocator_type())
50516 : _M_t(__comp, __a)
50517 { _M_t._M_insert_equal(__first, __last); }
50518# 183 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50519 multiset(const multiset<_Key,_Compare,_Alloc>& __x)
50520 : _M_t(__x._M_t) { }
50521# 193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50522 multiset<_Key,_Compare,_Alloc>&
50523 operator=(const multiset<_Key,_Compare,_Alloc>& __x)
50524 {
50525 _M_t = __x._M_t;
50526 return *this;
50527 }
50528
50529
50530
50531
50532 key_compare
50533 key_comp() const
50534 { return _M_t.key_comp(); }
50535
50536 value_compare
50537 value_comp() const
50538 { return _M_t.key_comp(); }
50539
50540 allocator_type
50541 get_allocator() const
50542 { return _M_t.get_allocator(); }
50543
50544
50545
50546
50547
50548
50549 iterator
50550 begin() const
50551 { return _M_t.begin(); }
50552
50553
50554
50555
50556
50557
50558 iterator
50559 end() const
50560 { return _M_t.end(); }
50561
50562
50563
50564
50565
50566
50567 reverse_iterator
50568 rbegin() const
50569 { return _M_t.rbegin(); }
50570
50571
50572
50573
50574
50575
50576 reverse_iterator
50577 rend() const
50578 { return _M_t.rend(); }
50579
50580
50581 bool
50582 empty() const
50583 { return _M_t.empty(); }
50584
50585
50586 size_type
50587 size() const
50588 { return _M_t.size(); }
50589
50590
50591 size_type
50592 max_size() const
50593 { return _M_t.max_size(); }
50594# 277 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50595 void
50596 swap(multiset<_Key, _Compare, _Alloc>& __x)
50597 { _M_t.swap(__x._M_t); }
50598# 293 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50599 iterator
50600 insert(const value_type& __x)
50601 { return _M_t._M_insert_equal(__x); }
50602# 317 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50603 iterator
50604 insert(iterator __position, const value_type& __x)
50605 { return _M_t._M_insert_equal(__position, __x); }
50606# 329 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50607 template <class _InputIterator>
50608 void
50609 insert(_InputIterator __first, _InputIterator __last)
50610 { _M_t._M_insert_equal(__first, __last); }
50611# 344 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50612 void
50613 erase(iterator __position)
50614 { _M_t.erase(__position); }
50615# 359 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50616 size_type
50617 erase(const key_type& __x)
50618 { return _M_t.erase(__x); }
50619# 374 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50620 void
50621 erase(iterator __first, iterator __last)
50622 { _M_t.erase(__first, __last); }
50623
50624
50625
50626
50627
50628
50629
50630 void
50631 clear()
50632 { _M_t.clear(); }
50633# 395 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50634 size_type
50635 count(const key_type& __x) const
50636 { return _M_t.count(__x); }
50637# 413 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50638 iterator
50639 find(const key_type& __x)
50640 { return _M_t.find(__x); }
50641
50642 const_iterator
50643 find(const key_type& __x) const
50644 { return _M_t.find(__x); }
50645# 434 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50646 iterator
50647 lower_bound(const key_type& __x)
50648 { return _M_t.lower_bound(__x); }
50649
50650 const_iterator
50651 lower_bound(const key_type& __x) const
50652 { return _M_t.lower_bound(__x); }
50653# 450 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50654 iterator
50655 upper_bound(const key_type& __x)
50656 { return _M_t.upper_bound(__x); }
50657
50658 const_iterator
50659 upper_bound(const key_type& __x) const
50660 { return _M_t.upper_bound(__x); }
50661# 475 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50662 std::pair<iterator, iterator>
50663 equal_range(const key_type& __x)
50664 { return _M_t.equal_range(__x); }
50665
50666 std::pair<const_iterator, const_iterator>
50667 equal_range(const key_type& __x) const
50668 { return _M_t.equal_range(__x); }
50669
50670 template <class _K1, class _C1, class _A1>
50671 friend bool
50672 operator== (const multiset<_K1, _C1, _A1>&,
50673 const multiset<_K1, _C1, _A1>&);
50674
50675 template <class _K1, class _C1, class _A1>
50676 friend bool
50677 operator< (const multiset<_K1, _C1, _A1>&,
50678 const multiset<_K1, _C1, _A1>&);
50679 };
50680# 505 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50681 template <class _Key, class _Compare, class _Alloc>
50682 inline bool
50683 operator==(const multiset<_Key, _Compare, _Alloc>& __x,
50684 const multiset<_Key, _Compare, _Alloc>& __y)
50685 { return __x._M_t == __y._M_t; }
50686# 522 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multiset.h" 3
50687 template <class _Key, class _Compare, class _Alloc>
50688 inline bool
50689 operator<(const multiset<_Key, _Compare, _Alloc>& __x,
50690 const multiset<_Key, _Compare, _Alloc>& __y)
50691 { return __x._M_t < __y._M_t; }
50692
50693
50694 template <class _Key, class _Compare, class _Alloc>
50695 inline bool
50696 operator!=(const multiset<_Key, _Compare, _Alloc>& __x,
50697 const multiset<_Key, _Compare, _Alloc>& __y)
50698 { return !(__x == __y); }
50699
50700
50701 template <class _Key, class _Compare, class _Alloc>
50702 inline bool
50703 operator>(const multiset<_Key,_Compare,_Alloc>& __x,
50704 const multiset<_Key,_Compare,_Alloc>& __y)
50705 { return __y < __x; }
50706
50707
50708 template <class _Key, class _Compare, class _Alloc>
50709 inline bool
50710 operator<=(const multiset<_Key, _Compare, _Alloc>& __x,
50711 const multiset<_Key, _Compare, _Alloc>& __y)
50712 { return !(__y < __x); }
50713
50714
50715 template <class _Key, class _Compare, class _Alloc>
50716 inline bool
50717 operator>=(const multiset<_Key, _Compare, _Alloc>& __x,
50718 const multiset<_Key, _Compare, _Alloc>& __y)
50719 { return !(__x < __y); }
50720
50721
50722 template <class _Key, class _Compare, class _Alloc>
50723 inline void
50724 swap(multiset<_Key, _Compare, _Alloc>& __x,
50725 multiset<_Key, _Compare, _Alloc>& __y)
50726 { __x.swap(__y); }
50727
50728}
50729# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/set" 2 3
50730# 23 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
50731# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/map" 1 3 4
50732# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/map" 3 4
50733
50734# 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/map" 3
50735
50736
50737# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 1 3
50738# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50739namespace std __attribute__ ((__visibility__ ("default"))) {
50740# 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50741 template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
50742 typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
50743 class map
50744 {
50745 public:
50746 typedef _Key key_type;
50747 typedef _Tp mapped_type;
50748 typedef std::pair<const _Key, _Tp> value_type;
50749 typedef _Compare key_compare;
50750 typedef _Alloc allocator_type;
50751
50752 private:
50753
50754 typedef typename _Alloc::value_type _Alloc_value_type;
50755
50756
50757
50758
50759
50760 public:
50761 class value_compare
50762 : public std::binary_function<value_type, value_type, bool>
50763 {
50764 friend class map<_Key, _Tp, _Compare, _Alloc>;
50765 protected:
50766 _Compare comp;
50767
50768 value_compare(_Compare __c)
50769 : comp(__c) { }
50770
50771 public:
50772 bool operator()(const value_type& __x, const value_type& __y) const
50773 { return comp(__x.first, __y.first); }
50774 };
50775
50776 private:
50777
50778 typedef typename _Alloc::template rebind<value_type>::other
50779 _Pair_alloc_type;
50780
50781 typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
50782 key_compare, _Pair_alloc_type> _Rep_type;
50783
50784
50785 _Rep_type _M_t;
50786
50787 public:
50788
50789
50790 typedef typename _Pair_alloc_type::pointer pointer;
50791 typedef typename _Pair_alloc_type::const_pointer const_pointer;
50792 typedef typename _Pair_alloc_type::reference reference;
50793 typedef typename _Pair_alloc_type::const_reference const_reference;
50794 typedef typename _Rep_type::iterator iterator;
50795 typedef typename _Rep_type::const_iterator const_iterator;
50796 typedef typename _Rep_type::size_type size_type;
50797 typedef typename _Rep_type::difference_type difference_type;
50798 typedef typename _Rep_type::reverse_iterator reverse_iterator;
50799 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
50800
50801
50802
50803
50804
50805
50806
50807 map()
50808 : _M_t(_Compare(), allocator_type()) { }
50809
50810
50811
50812
50813
50814 explicit
50815 map(const _Compare& __comp, const allocator_type& __a = allocator_type())
50816 : _M_t(__comp, __a) { }
50817# 175 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50818 map(const map& __x)
50819 : _M_t(__x._M_t) { }
50820# 187 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50821 template <typename _InputIterator>
50822 map(_InputIterator __first, _InputIterator __last)
50823 : _M_t(_Compare(), allocator_type())
50824 { _M_t._M_insert_unique(__first, __last); }
50825# 203 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50826 template <typename _InputIterator>
50827 map(_InputIterator __first, _InputIterator __last,
50828 const _Compare& __comp, const allocator_type& __a = allocator_type())
50829 : _M_t(__comp, __a)
50830 { _M_t._M_insert_unique(__first, __last); }
50831# 225 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50832 map&
50833 operator=(const map& __x)
50834 {
50835 _M_t = __x._M_t;
50836 return *this;
50837 }
50838
50839
50840 allocator_type
50841 get_allocator() const
50842 { return _M_t.get_allocator(); }
50843
50844
50845
50846
50847
50848
50849
50850 iterator
50851 begin()
50852 { return _M_t.begin(); }
50853
50854
50855
50856
50857
50858
50859 const_iterator
50860 begin() const
50861 { return _M_t.begin(); }
50862
50863
50864
50865
50866
50867
50868 iterator
50869 end()
50870 { return _M_t.end(); }
50871
50872
50873
50874
50875
50876
50877 const_iterator
50878 end() const
50879 { return _M_t.end(); }
50880
50881
50882
50883
50884
50885
50886 reverse_iterator
50887 rbegin()
50888 { return _M_t.rbegin(); }
50889
50890
50891
50892
50893
50894
50895 const_reverse_iterator
50896 rbegin() const
50897 { return _M_t.rbegin(); }
50898
50899
50900
50901
50902
50903
50904 reverse_iterator
50905 rend()
50906 { return _M_t.rend(); }
50907
50908
50909
50910
50911
50912
50913 const_reverse_iterator
50914 rend() const
50915 { return _M_t.rend(); }
50916
50917
50918
50919
50920
50921 bool
50922 empty() const
50923 { return _M_t.empty(); }
50924
50925
50926 size_type
50927 size() const
50928 { return _M_t.size(); }
50929
50930
50931 size_type
50932 max_size() const
50933 { return _M_t.max_size(); }
50934# 341 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50935 mapped_type&
50936 operator[](const key_type& __k)
50937 {
50938
50939
50940
50941 iterator __i = lower_bound(__k);
50942
50943 if (__i == end() || key_comp()(__k, (*__i).first))
50944 __i = insert(__i, value_type(__k, mapped_type()));
50945 return (*__i).second;
50946 }
50947# 363 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50948 mapped_type&
50949 at(const key_type& __k)
50950 {
50951 iterator __i = lower_bound(__k);
50952 if (__i == end() || key_comp()(__k, (*__i).first))
50953 __throw_out_of_range(("map::at"));
50954 return (*__i).second;
50955 }
50956
50957 const mapped_type&
50958 at(const key_type& __k) const
50959 {
50960 const_iterator __i = lower_bound(__k);
50961 if (__i == end() || key_comp()(__k, (*__i).first))
50962 __throw_out_of_range(("map::at"));
50963 return (*__i).second;
50964 }
50965# 398 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50966 std::pair<iterator, bool>
50967 insert(const value_type& __x)
50968 { return _M_t._M_insert_unique(__x); }
50969# 425 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50970 iterator
50971 insert(iterator __position, const value_type& __x)
50972 { return _M_t._M_insert_unique(__position, __x); }
50973# 437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50974 template <typename _InputIterator>
50975 void
50976 insert(_InputIterator __first, _InputIterator __last)
50977 { _M_t._M_insert_unique(__first, __last); }
50978# 452 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50979 void
50980 erase(iterator __position)
50981 { _M_t.erase(__position); }
50982# 467 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50983 size_type
50984 erase(const key_type& __x)
50985 { return _M_t.erase(__x); }
50986# 482 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50987 void
50988 erase(iterator __first, iterator __last)
50989 { _M_t.erase(__first, __last); }
50990# 497 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
50991 void
50992 swap(map& __x)
50993 { _M_t.swap(__x._M_t); }
50994
50995
50996
50997
50998
50999
51000
51001 void
51002 clear()
51003 { _M_t.clear(); }
51004
51005
51006
51007
51008
51009
51010 key_compare
51011 key_comp() const
51012 { return _M_t.key_comp(); }
51013
51014
51015
51016
51017
51018 value_compare
51019 value_comp() const
51020 { return value_compare(_M_t.key_comp()); }
51021# 540 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51022 iterator
51023 find(const key_type& __x)
51024 { return _M_t.find(__x); }
51025# 555 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51026 const_iterator
51027 find(const key_type& __x) const
51028 { return _M_t.find(__x); }
51029# 567 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51030 size_type
51031 count(const key_type& __x) const
51032 { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
51033# 582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51034 iterator
51035 lower_bound(const key_type& __x)
51036 { return _M_t.lower_bound(__x); }
51037# 597 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51038 const_iterator
51039 lower_bound(const key_type& __x) const
51040 { return _M_t.lower_bound(__x); }
51041
51042
51043
51044
51045
51046
51047
51048 iterator
51049 upper_bound(const key_type& __x)
51050 { return _M_t.upper_bound(__x); }
51051
51052
51053
51054
51055
51056
51057
51058 const_iterator
51059 upper_bound(const key_type& __x) const
51060 { return _M_t.upper_bound(__x); }
51061# 636 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51062 std::pair<iterator, iterator>
51063 equal_range(const key_type& __x)
51064 { return _M_t.equal_range(__x); }
51065# 655 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51066 std::pair<const_iterator, const_iterator>
51067 equal_range(const key_type& __x) const
51068 { return _M_t.equal_range(__x); }
51069
51070 template <typename _K1, typename _T1, typename _C1, typename _A1>
51071 friend bool
51072 operator== (const map<_K1, _T1, _C1, _A1>&,
51073 const map<_K1, _T1, _C1, _A1>&);
51074
51075 template <typename _K1, typename _T1, typename _C1, typename _A1>
51076 friend bool
51077 operator< (const map<_K1, _T1, _C1, _A1>&,
51078 const map<_K1, _T1, _C1, _A1>&);
51079 };
51080# 680 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51081 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51082 inline bool
51083 operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
51084 const map<_Key, _Tp, _Compare, _Alloc>& __y)
51085 { return __x._M_t == __y._M_t; }
51086# 697 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
51087 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51088 inline bool
51089 operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
51090 const map<_Key, _Tp, _Compare, _Alloc>& __y)
51091 { return __x._M_t < __y._M_t; }
51092
51093
51094 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51095 inline bool
51096 operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
51097 const map<_Key, _Tp, _Compare, _Alloc>& __y)
51098 { return !(__x == __y); }
51099
51100
51101 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51102 inline bool
51103 operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
51104 const map<_Key, _Tp, _Compare, _Alloc>& __y)
51105 { return __y < __x; }
51106
51107
51108 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51109 inline bool
51110 operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
51111 const map<_Key, _Tp, _Compare, _Alloc>& __y)
51112 { return !(__y < __x); }
51113
51114
51115 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51116 inline bool
51117 operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
51118 const map<_Key, _Tp, _Compare, _Alloc>& __y)
51119 { return !(__x < __y); }
51120
51121
51122 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51123 inline void
51124 swap(map<_Key, _Tp, _Compare, _Alloc>& __x,
51125 map<_Key, _Tp, _Compare, _Alloc>& __y)
51126 { __x.swap(__y); }
51127
51128}
51129# 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/map" 2 3
51130# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 1 3
51131# 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51132namespace std __attribute__ ((__visibility__ ("default"))) {
51133# 89 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51134 template <typename _Key, typename _Tp,
51135 typename _Compare = std::less<_Key>,
51136 typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
51137 class multimap
51138 {
51139 public:
51140 typedef _Key key_type;
51141 typedef _Tp mapped_type;
51142 typedef std::pair<const _Key, _Tp> value_type;
51143 typedef _Compare key_compare;
51144 typedef _Alloc allocator_type;
51145
51146 private:
51147
51148 typedef typename _Alloc::value_type _Alloc_value_type;
51149
51150
51151
51152
51153
51154 public:
51155 class value_compare
51156 : public std::binary_function<value_type, value_type, bool>
51157 {
51158 friend class multimap<_Key, _Tp, _Compare, _Alloc>;
51159 protected:
51160 _Compare comp;
51161
51162 value_compare(_Compare __c)
51163 : comp(__c) { }
51164
51165 public:
51166 bool operator()(const value_type& __x, const value_type& __y) const
51167 { return comp(__x.first, __y.first); }
51168 };
51169
51170 private:
51171
51172 typedef typename _Alloc::template rebind<value_type>::other
51173 _Pair_alloc_type;
51174
51175 typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
51176 key_compare, _Pair_alloc_type> _Rep_type;
51177
51178 _Rep_type _M_t;
51179
51180 public:
51181
51182
51183 typedef typename _Pair_alloc_type::pointer pointer;
51184 typedef typename _Pair_alloc_type::const_pointer const_pointer;
51185 typedef typename _Pair_alloc_type::reference reference;
51186 typedef typename _Pair_alloc_type::const_reference const_reference;
51187 typedef typename _Rep_type::iterator iterator;
51188 typedef typename _Rep_type::const_iterator const_iterator;
51189 typedef typename _Rep_type::size_type size_type;
51190 typedef typename _Rep_type::difference_type difference_type;
51191 typedef typename _Rep_type::reverse_iterator reverse_iterator;
51192 typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
51193
51194
51195
51196
51197
51198
51199 multimap()
51200 : _M_t(_Compare(), allocator_type()) { }
51201
51202
51203
51204
51205
51206 explicit
51207 multimap(const _Compare& __comp,
51208 const allocator_type& __a = allocator_type())
51209 : _M_t(__comp, __a) { }
51210# 173 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51211 multimap(const multimap& __x)
51212 : _M_t(__x._M_t) { }
51213# 185 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51214 template <typename _InputIterator>
51215 multimap(_InputIterator __first, _InputIterator __last)
51216 : _M_t(_Compare(), allocator_type())
51217 { _M_t._M_insert_equal(__first, __last); }
51218# 201 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51219 template <typename _InputIterator>
51220 multimap(_InputIterator __first, _InputIterator __last,
51221 const _Compare& __comp,
51222 const allocator_type& __a = allocator_type())
51223 : _M_t(__comp, __a)
51224 { _M_t._M_insert_equal(__first, __last); }
51225# 224 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51226 multimap&
51227 operator=(const multimap& __x)
51228 {
51229 _M_t = __x._M_t;
51230 return *this;
51231 }
51232
51233
51234 allocator_type
51235 get_allocator() const
51236 { return _M_t.get_allocator(); }
51237
51238
51239
51240
51241
51242
51243
51244 iterator
51245 begin()
51246 { return _M_t.begin(); }
51247
51248
51249
51250
51251
51252
51253 const_iterator
51254 begin() const
51255 { return _M_t.begin(); }
51256
51257
51258
51259
51260
51261
51262 iterator
51263 end()
51264 { return _M_t.end(); }
51265
51266
51267
51268
51269
51270
51271 const_iterator
51272 end() const
51273 { return _M_t.end(); }
51274
51275
51276
51277
51278
51279
51280 reverse_iterator
51281 rbegin()
51282 { return _M_t.rbegin(); }
51283
51284
51285
51286
51287
51288
51289 const_reverse_iterator
51290 rbegin() const
51291 { return _M_t.rbegin(); }
51292
51293
51294
51295
51296
51297
51298 reverse_iterator
51299 rend()
51300 { return _M_t.rend(); }
51301
51302
51303
51304
51305
51306
51307 const_reverse_iterator
51308 rend() const
51309 { return _M_t.rend(); }
51310
51311
51312
51313 bool
51314 empty() const
51315 { return _M_t.empty(); }
51316
51317
51318 size_type
51319 size() const
51320 { return _M_t.size(); }
51321
51322
51323 size_type
51324 max_size() const
51325 { return _M_t.max_size(); }
51326# 338 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51327 iterator
51328 insert(const value_type& __x)
51329 { return _M_t._M_insert_equal(__x); }
51330# 362 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51331 iterator
51332 insert(iterator __position, const value_type& __x)
51333 { return _M_t._M_insert_equal(__position, __x); }
51334# 374 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51335 template <typename _InputIterator>
51336 void
51337 insert(_InputIterator __first, _InputIterator __last)
51338 { _M_t._M_insert_equal(__first, __last); }
51339# 389 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51340 void
51341 erase(iterator __position)
51342 { _M_t.erase(__position); }
51343# 404 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51344 size_type
51345 erase(const key_type& __x)
51346 { return _M_t.erase(__x); }
51347# 419 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51348 void
51349 erase(iterator __first, iterator __last)
51350 { _M_t.erase(__first, __last); }
51351# 434 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51352 void
51353 swap(multimap& __x)
51354 { _M_t.swap(__x._M_t); }
51355
51356
51357
51358
51359
51360
51361
51362 void
51363 clear()
51364 { _M_t.clear(); }
51365
51366
51367
51368
51369
51370
51371 key_compare
51372 key_comp() const
51373 { return _M_t.key_comp(); }
51374
51375
51376
51377
51378
51379 value_compare
51380 value_comp() const
51381 { return value_compare(_M_t.key_comp()); }
51382# 477 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51383 iterator
51384 find(const key_type& __x)
51385 { return _M_t.find(__x); }
51386# 492 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51387 const_iterator
51388 find(const key_type& __x) const
51389 { return _M_t.find(__x); }
51390
51391
51392
51393
51394
51395
51396 size_type
51397 count(const key_type& __x) const
51398 { return _M_t.count(__x); }
51399# 516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51400 iterator
51401 lower_bound(const key_type& __x)
51402 { return _M_t.lower_bound(__x); }
51403# 531 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51404 const_iterator
51405 lower_bound(const key_type& __x) const
51406 { return _M_t.lower_bound(__x); }
51407
51408
51409
51410
51411
51412
51413
51414 iterator
51415 upper_bound(const key_type& __x)
51416 { return _M_t.upper_bound(__x); }
51417
51418
51419
51420
51421
51422
51423
51424 const_iterator
51425 upper_bound(const key_type& __x) const
51426 { return _M_t.upper_bound(__x); }
51427# 568 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51428 std::pair<iterator, iterator>
51429 equal_range(const key_type& __x)
51430 { return _M_t.equal_range(__x); }
51431# 585 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51432 std::pair<const_iterator, const_iterator>
51433 equal_range(const key_type& __x) const
51434 { return _M_t.equal_range(__x); }
51435
51436 template <typename _K1, typename _T1, typename _C1, typename _A1>
51437 friend bool
51438 operator== (const multimap<_K1, _T1, _C1, _A1>&,
51439 const multimap<_K1, _T1, _C1, _A1>&);
51440
51441 template <typename _K1, typename _T1, typename _C1, typename _A1>
51442 friend bool
51443 operator< (const multimap<_K1, _T1, _C1, _A1>&,
51444 const multimap<_K1, _T1, _C1, _A1>&);
51445 };
51446# 610 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51447 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51448 inline bool
51449 operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51450 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51451 { return __x._M_t == __y._M_t; }
51452# 627 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
51453 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51454 inline bool
51455 operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51456 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51457 { return __x._M_t < __y._M_t; }
51458
51459
51460 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51461 inline bool
51462 operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51463 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51464 { return !(__x == __y); }
51465
51466
51467 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51468 inline bool
51469 operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51470 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51471 { return __y < __x; }
51472
51473
51474 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51475 inline bool
51476 operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51477 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51478 { return !(__y < __x); }
51479
51480
51481 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51482 inline bool
51483 operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51484 const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51485 { return !(__x < __y); }
51486
51487
51488 template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
51489 inline void
51490 swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,
51491 multimap<_Key, _Tp, _Compare, _Alloc>& __y)
51492 { __x.swap(__y); }
51493
51494}
51495# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/map" 2 3
51496# 24 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
51497
51498
51499
51500
51501
51502namespace boost {
51503
51504namespace program_options {
51505# 41 "/usr/include/boost/program_options/options_description.hpp" 3 4
51506 class option_description {
51507 public:
51508
51509 option_description();
51510# 70 "/usr/include/boost/program_options/options_description.hpp" 3 4
51511 option_description(const char* name,
51512 const value_semantic* s);
51513
51514
51515
51516 option_description(const char* name,
51517 const value_semantic* s,
51518 const char* description);
51519
51520 virtual ~option_description();
51521
51522 enum match_result { no_match, full_match, approximate_match };
51523
51524
51525
51526
51527 match_result match(const std::string& option, bool approx) const;
51528# 96 "/usr/include/boost/program_options/options_description.hpp" 3 4
51529 const std::string& key(const std::string& option) const;
51530
51531 const std::string& long_name() const;
51532
51533
51534 const std::string& description() const;
51535
51536
51537 shared_ptr<const value_semantic> semantic() const;
51538
51539
51540 std::string format_name() const;
51541
51542
51543
51544 std::string format_parameter() const;
51545
51546 private:
51547
51548 option_description& set_name(const char* name);
51549
51550 std::string m_short_name, m_long_name, m_description;
51551
51552
51553 shared_ptr<const value_semantic> m_value_semantic;
51554 };
51555
51556 class options_description;
51557
51558
51559
51560 class options_description_easy_init {
51561 public:
51562 options_description_easy_init(options_description* owner);
51563
51564 options_description_easy_init&
51565 operator()(const char* name,
51566 const char* description);
51567
51568 options_description_easy_init&
51569 operator()(const char* name,
51570 const value_semantic* s);
51571
51572 options_description_easy_init&
51573 operator()(const char* name,
51574 const value_semantic* s,
51575 const char* description);
51576
51577 private:
51578 options_description* owner;
51579 };
51580# 156 "/usr/include/boost/program_options/options_description.hpp" 3 4
51581 class options_description {
51582 public:
51583 static const unsigned m_default_line_length = 80;
51584
51585
51586 options_description(unsigned line_length = m_default_line_length);
51587
51588
51589
51590 options_description(const std::string& caption,
51591 unsigned line_length = m_default_line_length);
51592
51593
51594
51595 void add(shared_ptr<option_description> desc);
51596
51597
51598
51599
51600
51601
51602 options_description& add(const options_description& desc);
51603
51604 public:
51605
51606
51607
51608
51609
51610
51611 options_description_easy_init add_options();
51612
51613 const option_description& find(const std::string& name, bool approx)
51614 const;
51615
51616 const option_description* find_nothrow(const std::string& name,
51617 bool approx) const;
51618
51619
51620 const std::vector< shared_ptr<option_description> >& options() const;
51621
51622
51623
51624
51625 friend std::ostream& operator<<(std::ostream& os,
51626 const options_description& desc);
51627
51628
51629
51630 void print(std::ostream& os) const;
51631
51632 private:
51633 typedef std::map<std::string, int>::const_iterator name2index_iterator;
51634 typedef std::pair<name2index_iterator, name2index_iterator>
51635 approximation_range;
51636
51637
51638
51639 std::string m_caption;
51640 const unsigned m_line_length;
51641
51642
51643
51644 std::vector< shared_ptr<option_description> > m_options;
51645
51646
51647
51648
51649
51650
51651
51652 std::vector<bool> belong_to_group;
51653
51654
51655 std::vector< shared_ptr<options_description> > groups;
51656
51657 };
51658
51659
51660 class duplicate_option_error : public error {
51661 public:
51662 duplicate_option_error(const std::string& what) : error(what) {}
51663 };
51664}}
51665# 14 "/usr/include/boost/program_options.hpp" 2 3 4
51666# 1 "/usr/include/boost/program_options/positional_options.hpp" 1 3 4
51667# 14 "/usr/include/boost/program_options/positional_options.hpp" 3 4
51668namespace boost { namespace program_options {
51669# 31 "/usr/include/boost/program_options/positional_options.hpp" 3 4
51670 class positional_options_description {
51671 public:
51672 positional_options_description();
51673
51674
51675
51676
51677
51678
51679 positional_options_description&
51680 add(const char* name, int max_count);
51681
51682
51683
51684
51685 unsigned max_total_count() const;
51686
51687
51688
51689
51690
51691 const std::string& name_for_position(unsigned position) const;
51692
51693 private:
51694
51695
51696
51697 std::vector<std::string> m_names;
51698 std::string m_trailing;
51699 };
51700
51701}}
51702# 15 "/usr/include/boost/program_options.hpp" 2 3 4
51703# 1 "/usr/include/boost/program_options/parsers.hpp" 1 3 4
51704# 11 "/usr/include/boost/program_options/parsers.hpp" 3 4
51705# 1 "/usr/include/boost/program_options/option.hpp" 1 3 4
51706# 14 "/usr/include/boost/program_options/option.hpp" 3 4
51707namespace boost { namespace program_options {
51708# 23 "/usr/include/boost/program_options/option.hpp" 3 4
51709 template<class charT>
51710 class basic_option {
51711 public:
51712 basic_option() : position_key(-1), unregistered(false) {}
51713 basic_option(const std::string& string_key,
51714 const std::vector< std::string> &value)
51715 : string_key(string_key), value(value), unregistered(false)
51716 {}
51717
51718
51719
51720 std::string string_key;
51721
51722
51723
51724
51725
51726
51727 int position_key;
51728
51729 std::vector< std::basic_string<charT> > value;
51730
51731
51732 std::vector< std::basic_string<charT> > original_tokens;
51733
51734
51735
51736
51737
51738 bool unregistered;
51739
51740 };
51741 typedef basic_option<char> option;
51742 typedef basic_option<wchar_t> woption;
51743
51744}}
51745# 12 "/usr/include/boost/program_options/parsers.hpp" 2 3 4
51746# 1 "/usr/include/boost/program_options/detail/cmdline.hpp" 1 3 4
51747# 12 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
51748# 1 "/usr/include/boost/program_options/cmdline.hpp" 1 3 4
51749# 9 "/usr/include/boost/program_options/cmdline.hpp" 3 4
51750namespace boost { namespace program_options { namespace command_line_style {
51751# 26 "/usr/include/boost/program_options/cmdline.hpp" 3 4
51752 enum style_t {
51753
51754 allow_long = 1,
51755
51756 allow_short = allow_long << 1,
51757
51758 allow_dash_for_short = allow_short << 1,
51759
51760 allow_slash_for_short = allow_dash_for_short << 1,
51761
51762
51763
51764
51765
51766
51767 long_allow_adjacent = allow_slash_for_short << 1,
51768
51769
51770 long_allow_next = long_allow_adjacent << 1,
51771
51772
51773 short_allow_adjacent = long_allow_next << 1,
51774
51775
51776 short_allow_next = short_allow_adjacent << 1,
51777
51778
51779
51780
51781
51782
51783
51784 allow_sticky = short_allow_next << 1,
51785
51786
51787
51788
51789
51790 allow_guessing = allow_sticky << 1,
51791
51792
51793
51794 case_insensitive = allow_guessing << 1,
51795
51796
51797
51798 allow_long_disguise = case_insensitive << 1,
51799
51800 unix_style = (allow_short | short_allow_adjacent | short_allow_next
51801 | allow_long | long_allow_adjacent | long_allow_next
51802 | allow_sticky | allow_guessing
51803 | allow_dash_for_short),
51804
51805 default_style = unix_style
51806 };
51807}}}
51808# 13 "/usr/include/boost/program_options/detail/cmdline.hpp" 2 3 4
51809
51810
51811
51812
51813
51814
51815
51816# 1 "/usr/include/boost/function.hpp" 1 3 4
51817# 62 "/usr/include/boost/function.hpp" 3 4
51818# 1 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 1 3 4
51819# 24 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
51820# 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 1 3 4
51821# 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
51822# 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
51823# 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 2 3 4
51824# 25 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51825
51826# 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 1 3 4
51827# 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
51828# 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
51829# 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 2 3 4
51830# 27 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51831# 47 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
51832# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51833# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51834# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51835# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51836# 48 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51837
51838
51839
51840
51841# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51842# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51843# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51844# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51845# 53 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51846
51847
51848
51849
51850# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51851# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51852# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51853# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51854# 58 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51855
51856
51857
51858
51859# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51860# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51861# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51862# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51863# 63 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51864
51865
51866
51867
51868# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51869# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51870# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51871# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51872# 68 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51873
51874
51875
51876
51877# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51878# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51879# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51880# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51881# 73 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51882
51883
51884
51885
51886# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51887# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51888# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51889# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51890# 78 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51891
51892
51893
51894
51895# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51896# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51897# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51898# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51899# 83 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51900
51901
51902
51903
51904# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51905# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51906# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51907# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51908# 88 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51909
51910
51911
51912
51913# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51914# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51915# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51916# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51917# 93 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51918
51919
51920
51921
51922# 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
51923# 14 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
51924# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
51925# 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
51926# 98 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
51927# 63 "/usr/include/boost/function.hpp" 2 3 4
51928# 21 "/usr/include/boost/program_options/detail/cmdline.hpp" 2 3 4
51929
51930
51931
51932
51933namespace boost { namespace program_options { namespace detail {
51934# 54 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
51935 class cmdline {
51936 public:
51937
51938 typedef ::boost::program_options::command_line_style::style_t style_t;
51939
51940 typedef function1<std::pair<std::string, std::string>,
51941 const std::string&>
51942 additional_parser;
51943
51944 typedef function1<std::vector<option>, std::vector<std::string>&>
51945 style_parser;
51946# 73 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
51947 cmdline(const std::vector<std::string>& args);
51948
51949
51950 cmdline(int argc, const char*const * argv);
51951
51952 void style(int style);
51953 void allow_unregistered();
51954
51955 void set_options_description(const options_description& desc);
51956 void set_positional_options(
51957 const positional_options_description& m_positional);
51958
51959 std::vector<option> run();
51960
51961 std::vector<option> parse_long_option(std::vector<std::string>& args);
51962 std::vector<option> parse_short_option(std::vector<std::string>& args);
51963 std::vector<option> parse_dos_option(std::vector<std::string>& args);
51964 std::vector<option> parse_disguised_long_option(
51965 std::vector<std::string>& args);
51966 std::vector<option> parse_terminator(
51967 std::vector<std::string>& args);
51968 std::vector<option> handle_additional_parser(
51969 std::vector<std::string>& args);
51970# 106 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
51971 void set_additional_parser(additional_parser p);
51972
51973 void extra_style_parser(style_parser s);
51974
51975 void check_style(int style) const;
51976
51977
51978 void init(const std::vector<std::string>& args);
51979
51980 void
51981 finish_option(option& opt,
51982 std::vector<std::string>& other_tokens);
51983
51984
51985 std::vector<std::string> args;
51986 style_t m_style;
51987 bool m_allow_unregistered;
51988
51989 const options_description* m_desc;
51990 const positional_options_description* m_positional;
51991
51992 additional_parser m_additional_parser;
51993 style_parser m_style_parser;
51994 };
51995
51996 void test_cmdline_detail();
51997
51998}}}
51999# 13 "/usr/include/boost/program_options/parsers.hpp" 2 3 4
52000
52001# 1 "/usr/include/boost/function/function1.hpp" 1 3 4
52002# 11 "/usr/include/boost/function/function1.hpp" 3 4
52003# 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
52004# 12 "/usr/include/boost/function/function1.hpp" 2 3 4
52005# 15 "/usr/include/boost/program_options/parsers.hpp" 2 3 4
52006
52007
52008
52009
52010
52011namespace boost { namespace program_options {
52012
52013 class options_description;
52014 class positional_options_description;
52015
52016
52017
52018
52019
52020
52021
52022 template<class charT>
52023 class basic_parsed_options {
52024 public:
52025 explicit basic_parsed_options(const options_description* description)
52026 : description(description) {}
52027
52028 std::vector< basic_option<charT> > options;
52029
52030
52031
52032
52033
52034 const options_description* description;
52035 };
52036
52037
52038
52039
52040
52041 template<>
52042 class basic_parsed_options<wchar_t> {
52043 public:
52044
52045 explicit basic_parsed_options(const basic_parsed_options<char>& po);
52046
52047 std::vector< basic_option<wchar_t> > options;
52048 const options_description* description;
52049
52050
52051
52052 basic_parsed_options<char> utf8_encoded_options;
52053 };
52054
52055 typedef basic_parsed_options<char> parsed_options;
52056 typedef basic_parsed_options<wchar_t> wparsed_options;
52057
52058
52059
52060
52061
52062 typedef function1<std::pair<std::string, std::string>, const std::string&> ext_parser;
52063# 87 "/usr/include/boost/program_options/parsers.hpp" 3 4
52064 template<class charT>
52065 class basic_command_line_parser : private detail::cmdline {
52066 public:
52067
52068
52069
52070 basic_command_line_parser(const std::vector<
52071 std::basic_string<charT> >& args);
52072
52073
52074
52075 basic_command_line_parser(int argc, charT* argv[]);
52076
52077
52078 basic_command_line_parser& options(const options_description& desc);
52079
52080 basic_command_line_parser& positional(
52081 const positional_options_description& desc);
52082
52083
52084 basic_command_line_parser& style(int);
52085
52086 basic_command_line_parser& extra_parser(ext_parser);
52087
52088
52089
52090
52091 basic_parsed_options<charT> run();
52092# 124 "/usr/include/boost/program_options/parsers.hpp" 3 4
52093 basic_command_line_parser& allow_unregistered();
52094
52095 using detail::cmdline::style_parser;
52096
52097 basic_command_line_parser& extra_style_parser(style_parser s);
52098
52099 private:
52100 const options_description* m_desc;
52101 };
52102
52103 typedef basic_command_line_parser<char> command_line_parser;
52104 typedef basic_command_line_parser<wchar_t> wcommand_line_parser;
52105
52106
52107
52108
52109 template<class charT>
52110 basic_parsed_options<charT>
52111 parse_command_line(int argc, charT* argv[],
52112 const options_description&,
52113 int style = 0,
52114 function1<std::pair<std::string, std::string>,
52115 const std::string&> ext
52116 = ext_parser());
52117
52118
52119
52120 template<class charT>
52121
52122
52123
52124 basic_parsed_options<charT>
52125 parse_config_file(std::basic_istream<charT>&, const options_description&);
52126
52127
52128
52129 enum collect_unrecognized_mode
52130 { include_positional, exclude_positional };
52131
52132
52133
52134
52135
52136
52137
52138 template<class charT>
52139 std::vector< std::basic_string<charT> >
52140 collect_unrecognized(const std::vector< basic_option<charT> >& options,
52141 enum collect_unrecognized_mode mode);
52142# 183 "/usr/include/boost/program_options/parsers.hpp" 3 4
52143 parsed_options
52144 parse_environment(const options_description&,
52145 const function1<std::string, std::string>& name_mapper);
52146
52147
52148
52149
52150
52151
52152
52153 parsed_options
52154 parse_environment(const options_description&, const std::string& prefix);
52155
52156
52157
52158
52159
52160
52161 parsed_options
52162 parse_environment(const options_description&, const char* prefix);
52163# 222 "/usr/include/boost/program_options/parsers.hpp" 3 4
52164}}
52165
52166
52167
52168# 1 "/usr/include/boost/program_options/detail/parsers.hpp" 1 3 4
52169# 9 "/usr/include/boost/program_options/detail/parsers.hpp" 3 4
52170# 1 "/usr/include/boost/program_options/detail/convert.hpp" 1 3 4
52171# 30 "/usr/include/boost/program_options/detail/convert.hpp" 3 4
52172namespace boost {
52173
52174
52175
52176 std::wstring
52177 from_8_bit(const std::string& s,
52178 const std::codecvt<wchar_t, char, std::mbstate_t>& cvt);
52179
52180
52181
52182 std::string
52183 to_8_bit(const std::wstring& s,
52184 const std::codecvt<wchar_t, char, std::mbstate_t>& cvt);
52185
52186
52187
52188
52189 std::wstring
52190 from_utf8(const std::string& s);
52191
52192
52193 std::string
52194 to_utf8(const std::wstring& s);
52195
52196
52197
52198 std::string
52199 to_local_8_bit(const std::wstring& s);
52200
52201
52202
52203 std::wstring
52204 from_local_8_bit(const std::string& s);
52205
52206 namespace program_options
52207 {
52208
52209
52210
52211
52212 std::string to_internal(const std::string&);
52213
52214 std::string to_internal(const std::wstring&);
52215
52216 template<class T>
52217 std::vector<std::string> to_internal(const std::vector<T>& s)
52218 {
52219 std::vector<std::string> result;
52220 for (unsigned i = 0; i < s.size(); ++i)
52221 result.push_back(to_internal(s[i]));
52222 return result;
52223 }
52224
52225 }
52226
52227
52228
52229}
52230# 10 "/usr/include/boost/program_options/detail/parsers.hpp" 2 3 4
52231
52232namespace boost { namespace program_options {
52233
52234 namespace detail {
52235 template<class charT, class Iterator>
52236 std::vector<std::basic_string<charT> >
52237 make_vector(Iterator i, Iterator e)
52238 {
52239 std::vector<std::basic_string<charT> > result;
52240
52241
52242 for(; i != e; ++i)
52243 result.push_back(*i);
52244 return result;
52245 }
52246 }
52247
52248 template<class charT>
52249 basic_command_line_parser<charT>::
52250 basic_command_line_parser(const std::vector<
52251 std::basic_string<charT> >& args)
52252 : detail::cmdline(to_internal(args))
52253 {}
52254
52255
52256 template<class charT>
52257 basic_command_line_parser<charT>::
52258 basic_command_line_parser(int argc, charT* argv[])
52259 : detail::cmdline(
52260
52261
52262 to_internal(detail::make_vector<charT, charT**>(argv+1, argv+argc)))
52263 {}
52264
52265
52266 template<class charT>
52267 basic_command_line_parser<charT>&
52268 basic_command_line_parser<charT>::options(const options_description& desc)
52269 {
52270 detail::cmdline::set_options_description(desc);
52271 m_desc = &desc;
52272 return *this;
52273 }
52274
52275 template<class charT>
52276 basic_command_line_parser<charT>&
52277 basic_command_line_parser<charT>::positional(
52278 const positional_options_description& desc)
52279 {
52280 detail::cmdline::set_positional_options(desc);
52281 return *this;
52282 }
52283
52284 template<class charT>
52285 basic_command_line_parser<charT>&
52286 basic_command_line_parser<charT>::style(int style)
52287 {
52288 detail::cmdline::style(style);
52289 return *this;
52290 }
52291
52292 template<class charT>
52293 basic_command_line_parser<charT>&
52294 basic_command_line_parser<charT>::extra_parser(ext_parser ext)
52295 {
52296 detail::cmdline::set_additional_parser(ext);
52297 return *this;
52298 }
52299
52300 template<class charT>
52301 basic_command_line_parser<charT>&
52302 basic_command_line_parser<charT>::allow_unregistered()
52303 {
52304 detail::cmdline::allow_unregistered();
52305 return *this;
52306 }
52307
52308 template<class charT>
52309 basic_command_line_parser<charT>&
52310 basic_command_line_parser<charT>::extra_style_parser(style_parser s)
52311 {
52312 detail::cmdline::extra_style_parser(s);
52313 return *this;
52314 }
52315
52316
52317
52318 template<class charT>
52319 basic_parsed_options<charT>
52320 basic_command_line_parser<charT>::run()
52321 {
52322 parsed_options result(m_desc);
52323 result.options = detail::cmdline::run();
52324
52325
52326
52327 return basic_parsed_options<charT>(result);
52328 }
52329
52330
52331 template<class charT>
52332 basic_parsed_options<charT>
52333 parse_command_line(int argc, charT* argv[],
52334 const options_description& desc,
52335 int style,
52336 function1<std::pair<std::string, std::string>,
52337 const std::string&> ext)
52338 {
52339 return basic_command_line_parser<charT>(argc, argv).options(desc).
52340 style(style).extra_parser(ext).run();
52341 }
52342
52343 template<class charT>
52344 std::vector< std::basic_string<charT> >
52345 collect_unrecognized(const std::vector< basic_option<charT> >& options,
52346 enum collect_unrecognized_mode mode)
52347 {
52348 std::vector< std::basic_string<charT> > result;
52349 for(unsigned i = 0; i < options.size(); ++i)
52350 {
52351 if (options[i].unregistered ||
52352 (mode == include_positional && options[i].position_key != -1))
52353 {
52354 copy(options[i].original_tokens.begin(),
52355 options[i].original_tokens.end(),
52356 back_inserter(result));
52357 }
52358 }
52359 return result;
52360 }
52361
52362
52363}}
52364# 227 "/usr/include/boost/program_options/parsers.hpp" 2 3 4
52365# 16 "/usr/include/boost/program_options.hpp" 2 3 4
52366# 1 "/usr/include/boost/program_options/variables_map.hpp" 1 3 4
52367# 19 "/usr/include/boost/program_options/variables_map.hpp" 3 4
52368namespace boost { namespace program_options {
52369
52370 template<class charT>
52371 class basic_parsed_options;
52372
52373 class value_semantic;
52374 class variables_map;
52375
52376
52377
52378
52379
52380
52381
52382 void store(const basic_parsed_options<char>& options, variables_map& m,
52383 bool utf8 = false);
52384
52385
52386
52387
52388
52389
52390 void store(const basic_parsed_options<wchar_t>& options,
52391 variables_map& m);
52392
52393
52394
52395 void notify(variables_map& m);
52396
52397
52398
52399
52400 class variable_value {
52401 public:
52402 variable_value() : m_defaulted(false) {}
52403 variable_value(const boost::any& v, bool defaulted)
52404 : v(v), m_defaulted(defaulted)
52405 {}
52406
52407
52408
52409 template<class T>
52410 const T& as() const {
52411 return boost::any_cast<const T&>(v);
52412 }
52413
52414 template<class T>
52415 T& as() {
52416 return boost::any_cast<T&>(v);
52417 }
52418
52419
52420 bool empty() const;
52421
52422
52423 bool defaulted() const;
52424
52425 const boost::any& value() const;
52426
52427
52428 boost::any& value();
52429 private:
52430 boost::any v;
52431 bool m_defaulted;
52432
52433
52434
52435
52436
52437 shared_ptr<const value_semantic> m_value_semantic;
52438
52439 friend void store(const basic_parsed_options<char>& options,
52440 variables_map& m, bool);
52441 friend void notify(variables_map& m);
52442 };
52443
52444
52445
52446 class abstract_variables_map {
52447 public:
52448 abstract_variables_map();
52449 abstract_variables_map(const abstract_variables_map* next);
52450
52451 virtual ~abstract_variables_map() {}
52452# 118 "/usr/include/boost/program_options/variables_map.hpp" 3 4
52453 const variable_value& operator[](const std::string& name) const;
52454
52455
52456
52457 void next(abstract_variables_map* next);
52458
52459 private:
52460
52461
52462 virtual const variable_value& get(const std::string& name) const = 0;
52463
52464 const abstract_variables_map* m_next;
52465 };
52466
52467
52468
52469
52470
52471
52472 class variables_map : public abstract_variables_map,
52473 public std::map<std::string, variable_value>
52474 {
52475 public:
52476 variables_map();
52477 variables_map(const abstract_variables_map* next);
52478
52479
52480 const variable_value& operator[](const std::string& name) const
52481 { return abstract_variables_map::operator[](name); }
52482
52483 private:
52484
52485
52486 const variable_value& get(const std::string& name) const;
52487
52488
52489
52490 std::set<std::string> m_final;
52491
52492 friend void store(const basic_parsed_options<char>& options,
52493 variables_map& xm,
52494 bool utf8);
52495 };
52496
52497
52498
52499
52500
52501
52502 inline bool
52503 variable_value::empty() const
52504 {
52505 return v.empty();
52506 }
52507
52508 inline bool
52509 variable_value::defaulted() const
52510 {
52511 return m_defaulted;
52512 }
52513
52514 inline
52515 const boost::any&
52516 variable_value::value() const
52517 {
52518 return v;
52519 }
52520
52521 inline
52522 boost::any&
52523 variable_value::value()
52524 {
52525 return v;
52526 }
52527
52528}}
52529# 17 "/usr/include/boost/program_options.hpp" 2 3 4
52530
52531
52532
52533
52534# 1 "/usr/include/boost/program_options/version.hpp" 1 3 4
52535# 22 "/usr/include/boost/program_options.hpp" 2 3 4
52536# 5 "genfield.cxx" 2
52537
52538# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iostream" 1 3
52539# 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iostream" 3
52540
52541# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iostream" 3
52542
52543
52544
52545
52546
52547namespace std __attribute__ ((__visibility__ ("default"))) {
52548# 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iostream" 3
52549 extern istream cin;
52550 extern ostream cout;
52551 extern ostream cerr;
52552 extern ostream clog;
52553
52554
52555 extern wistream wcin;
52556 extern wostream wcout;
52557 extern wostream wcerr;
52558 extern wostream wclog;
52559
52560
52561
52562
52563 static ios_base::Init __ioinit;
52564
52565}
52566# 7 "genfield.cxx" 2
52567# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 1 3
52568# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52569
52570# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52571
52572
52573
52574
52575
52576# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/basic_file.h" 1 3
52577# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/basic_file.h" 3
52578
52579# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/basic_file.h" 3
52580
52581
52582
52583
52584namespace std __attribute__ ((__visibility__ ("default"))) {
52585
52586
52587 template<typename _CharT>
52588 class __basic_file;
52589
52590
52591 template<>
52592 class __basic_file<char>
52593 {
52594
52595 __c_file* _M_cfile;
52596
52597
52598 bool _M_cfile_created;
52599
52600 public:
52601 __basic_file(__c_lock* __lock = 0);
52602
52603 __basic_file*
52604 open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
52605
52606 __basic_file*
52607 sys_open(__c_file* __file, ios_base::openmode);
52608
52609 __basic_file*
52610 sys_open(int __fd, ios_base::openmode __mode);
52611
52612 __basic_file*
52613 close();
52614
52615 bool
52616 is_open() const;
52617
52618 int
52619 fd();
52620
52621 __c_file*
52622 file();
52623
52624 ~__basic_file();
52625
52626 streamsize
52627 xsputn(const char* __s, streamsize __n);
52628
52629 streamsize
52630 xsputn_2(const char* __s1, streamsize __n1,
52631 const char* __s2, streamsize __n2);
52632
52633 streamsize
52634 xsgetn(char* __s, streamsize __n);
52635
52636 streamoff
52637 seekoff(streamoff __off, ios_base::seekdir __way);
52638
52639 int
52640 sync();
52641
52642 streamsize
52643 showmanyc();
52644 };
52645
52646}
52647# 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 2 3
52648
52649
52650namespace std __attribute__ ((__visibility__ ("default"))) {
52651# 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52652 template<typename _CharT, typename _Traits>
52653 class basic_filebuf : public basic_streambuf<_CharT, _Traits>
52654 {
52655 public:
52656
52657 typedef _CharT char_type;
52658 typedef _Traits traits_type;
52659 typedef typename traits_type::int_type int_type;
52660 typedef typename traits_type::pos_type pos_type;
52661 typedef typename traits_type::off_type off_type;
52662
52663 typedef basic_streambuf<char_type, traits_type> __streambuf_type;
52664 typedef basic_filebuf<char_type, traits_type> __filebuf_type;
52665 typedef __basic_file<char> __file_type;
52666 typedef typename traits_type::state_type __state_type;
52667 typedef codecvt<char_type, char, __state_type> __codecvt_type;
52668
52669 friend class ios_base;
52670
52671 protected:
52672
52673
52674 __c_lock _M_lock;
52675
52676
52677 __file_type _M_file;
52678
52679
52680
52681
52682
52683
52684 ios_base::openmode _M_mode;
52685
52686
52687 __state_type _M_state_beg;
52688
52689
52690
52691
52692 __state_type _M_state_cur;
52693
52694
52695
52696 __state_type _M_state_last;
52697
52698
52699
52700
52701
52702
52703 char_type* _M_buf;
52704# 128 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52705 size_t _M_buf_size;
52706
52707
52708 bool _M_buf_allocated;
52709# 142 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52710 bool _M_reading;
52711 bool _M_writing;
52712# 153 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52713 char_type _M_pback;
52714 char_type* _M_pback_cur_save;
52715 char_type* _M_pback_end_save;
52716 bool _M_pback_init;
52717
52718
52719
52720 const __codecvt_type* _M_codecvt;
52721# 169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52722 char* _M_ext_buf;
52723
52724
52725
52726
52727
52728
52729 streamsize _M_ext_buf_size;
52730# 185 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52731 const char* _M_ext_next;
52732 char* _M_ext_end;
52733# 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52734 void
52735 _M_create_pback()
52736 {
52737 if (!_M_pback_init)
52738 {
52739 _M_pback_cur_save = this->gptr();
52740 _M_pback_end_save = this->egptr();
52741 this->setg(&_M_pback, &_M_pback, &_M_pback + 1);
52742 _M_pback_init = true;
52743 }
52744 }
52745# 214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52746 void
52747 _M_destroy_pback() throw()
52748 {
52749 if (_M_pback_init)
52750 {
52751
52752 _M_pback_cur_save += this->gptr() != this->eback();
52753 this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save);
52754 _M_pback_init = false;
52755 }
52756 }
52757
52758 public:
52759
52760
52761
52762
52763
52764
52765
52766 basic_filebuf();
52767
52768
52769
52770
52771 virtual
52772 ~basic_filebuf()
52773 { this->close(); }
52774
52775
52776
52777
52778
52779 bool
52780 is_open() const throw()
52781 { return _M_file.is_open(); }
52782# 285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52783 __filebuf_type*
52784 open(const char* __s, ios_base::openmode __mode);
52785# 299 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52786 __filebuf_type*
52787 close() throw();
52788
52789 protected:
52790 void
52791 _M_allocate_internal_buffer();
52792
52793 void
52794 _M_destroy_internal_buffer() throw();
52795
52796
52797 virtual streamsize
52798 showmanyc();
52799
52800
52801
52802
52803
52804
52805 virtual int_type
52806 underflow();
52807
52808 virtual int_type
52809 pbackfail(int_type __c = _Traits::eof());
52810# 331 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52811 virtual int_type
52812 overflow(int_type __c = _Traits::eof());
52813
52814
52815
52816 bool
52817 _M_convert_to_external(char_type*, streamsize);
52818# 351 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52819 virtual __streambuf_type*
52820 setbuf(char_type* __s, streamsize __n);
52821
52822 virtual pos_type
52823 seekoff(off_type __off, ios_base::seekdir __way,
52824 ios_base::openmode __mode = ios_base::in | ios_base::out);
52825
52826 virtual pos_type
52827 seekpos(pos_type __pos,
52828 ios_base::openmode __mode = ios_base::in | ios_base::out);
52829
52830
52831 pos_type
52832 _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state);
52833
52834 virtual int
52835 sync();
52836
52837 virtual void
52838 imbue(const locale& __loc);
52839
52840 virtual streamsize
52841 xsgetn(char_type* __s, streamsize __n);
52842
52843 virtual streamsize
52844 xsputn(const char_type* __s, streamsize __n);
52845
52846
52847 bool
52848 _M_terminate_output();
52849# 396 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52850 void
52851 _M_set_buffer(streamsize __off)
52852 {
52853 const bool __testin = _M_mode & ios_base::in;
52854 const bool __testout = _M_mode & ios_base::out;
52855
52856 if (__testin && __off > 0)
52857 this->setg(_M_buf, _M_buf, _M_buf + __off);
52858 else
52859 this->setg(_M_buf, _M_buf, _M_buf);
52860
52861 if (__testout && __off == 0 && _M_buf_size > 1 )
52862 this->setp(_M_buf, _M_buf + _M_buf_size - 1);
52863 else
52864 this->setp(__null, __null);
52865 }
52866 };
52867# 423 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52868 template<typename _CharT, typename _Traits>
52869 class basic_ifstream : public basic_istream<_CharT, _Traits>
52870 {
52871 public:
52872
52873 typedef _CharT char_type;
52874 typedef _Traits traits_type;
52875 typedef typename traits_type::int_type int_type;
52876 typedef typename traits_type::pos_type pos_type;
52877 typedef typename traits_type::off_type off_type;
52878
52879
52880 typedef basic_filebuf<char_type, traits_type> __filebuf_type;
52881 typedef basic_istream<char_type, traits_type> __istream_type;
52882
52883 private:
52884 __filebuf_type _M_filebuf;
52885
52886 public:
52887# 450 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52888 basic_ifstream() : __istream_type(), _M_filebuf()
52889 { this->init(&_M_filebuf); }
52890# 463 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52891 explicit
52892 basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)
52893 : __istream_type(), _M_filebuf()
52894 {
52895 this->init(&_M_filebuf);
52896 this->open(__s, __mode);
52897 }
52898
52899
52900
52901
52902
52903
52904
52905 ~basic_ifstream()
52906 { }
52907# 487 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52908 __filebuf_type*
52909 rdbuf() const
52910 { return const_cast<__filebuf_type*>(&_M_filebuf); }
52911
52912
52913
52914
52915
52916 bool
52917 is_open()
52918 { return _M_filebuf.is_open(); }
52919
52920
52921
52922 bool
52923 is_open() const
52924 { return _M_filebuf.is_open(); }
52925# 516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52926 void
52927 open(const char* __s, ios_base::openmode __mode = ios_base::in)
52928 {
52929 if (!_M_filebuf.open(__s, __mode | ios_base::in))
52930 this->setstate(ios_base::failbit);
52931 else
52932
52933
52934 this->clear();
52935 }
52936
52937
52938
52939
52940
52941
52942
52943 void
52944 close()
52945 {
52946 if (!_M_filebuf.close())
52947 this->setstate(ios_base::failbit);
52948 }
52949 };
52950# 551 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52951 template<typename _CharT, typename _Traits>
52952 class basic_ofstream : public basic_ostream<_CharT,_Traits>
52953 {
52954 public:
52955
52956 typedef _CharT char_type;
52957 typedef _Traits traits_type;
52958 typedef typename traits_type::int_type int_type;
52959 typedef typename traits_type::pos_type pos_type;
52960 typedef typename traits_type::off_type off_type;
52961
52962
52963 typedef basic_filebuf<char_type, traits_type> __filebuf_type;
52964 typedef basic_ostream<char_type, traits_type> __ostream_type;
52965
52966 private:
52967 __filebuf_type _M_filebuf;
52968
52969 public:
52970# 578 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52971 basic_ofstream(): __ostream_type(), _M_filebuf()
52972 { this->init(&_M_filebuf); }
52973# 592 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52974 explicit
52975 basic_ofstream(const char* __s,
52976 ios_base::openmode __mode = ios_base::out|ios_base::trunc)
52977 : __ostream_type(), _M_filebuf()
52978 {
52979 this->init(&_M_filebuf);
52980 this->open(__s, __mode);
52981 }
52982
52983
52984
52985
52986
52987
52988
52989 ~basic_ofstream()
52990 { }
52991# 617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
52992 __filebuf_type*
52993 rdbuf() const
52994 { return const_cast<__filebuf_type*>(&_M_filebuf); }
52995
52996
52997
52998
52999
53000 bool
53001 is_open()
53002 { return _M_filebuf.is_open(); }
53003
53004
53005
53006 bool
53007 is_open() const
53008 { return _M_filebuf.is_open(); }
53009# 646 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
53010 void
53011 open(const char* __s,
53012 ios_base::openmode __mode = ios_base::out | ios_base::trunc)
53013 {
53014 if (!_M_filebuf.open(__s, __mode | ios_base::out))
53015 this->setstate(ios_base::failbit);
53016 else
53017
53018
53019 this->clear();
53020 }
53021
53022
53023
53024
53025
53026
53027
53028 void
53029 close()
53030 {
53031 if (!_M_filebuf.close())
53032 this->setstate(ios_base::failbit);
53033 }
53034 };
53035# 682 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
53036 template<typename _CharT, typename _Traits>
53037 class basic_fstream : public basic_iostream<_CharT, _Traits>
53038 {
53039 public:
53040
53041 typedef _CharT char_type;
53042 typedef _Traits traits_type;
53043 typedef typename traits_type::int_type int_type;
53044 typedef typename traits_type::pos_type pos_type;
53045 typedef typename traits_type::off_type off_type;
53046
53047
53048 typedef basic_filebuf<char_type, traits_type> __filebuf_type;
53049 typedef basic_ios<char_type, traits_type> __ios_type;
53050 typedef basic_iostream<char_type, traits_type> __iostream_type;
53051
53052 private:
53053 __filebuf_type _M_filebuf;
53054
53055 public:
53056# 710 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
53057 basic_fstream()
53058 : __iostream_type(), _M_filebuf()
53059 { this->init(&_M_filebuf); }
53060# 722 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
53061 explicit
53062 basic_fstream(const char* __s,
53063 ios_base::openmode __mode = ios_base::in | ios_base::out)
53064 : __iostream_type(__null), _M_filebuf()
53065 {
53066 this->init(&_M_filebuf);
53067 this->open(__s, __mode);
53068 }
53069
53070
53071
53072
53073
53074
53075
53076 ~basic_fstream()
53077 { }
53078# 747 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
53079 __filebuf_type*
53080 rdbuf() const
53081 { return const_cast<__filebuf_type*>(&_M_filebuf); }
53082
53083
53084
53085
53086
53087 bool
53088 is_open()
53089 { return _M_filebuf.is_open(); }
53090
53091
53092
53093 bool
53094 is_open() const
53095 { return _M_filebuf.is_open(); }
53096# 776 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
53097 void
53098 open(const char* __s,
53099 ios_base::openmode __mode = ios_base::in | ios_base::out)
53100 {
53101 if (!_M_filebuf.open(__s, __mode))
53102 this->setstate(ios_base::failbit);
53103 else
53104
53105
53106 this->clear();
53107 }
53108
53109
53110
53111
53112
53113
53114
53115 void
53116 close()
53117 {
53118 if (!_M_filebuf.close())
53119 this->setstate(ios_base::failbit);
53120 }
53121 };
53122
53123}
53124
53125
53126# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/fstream.tcc" 1 3
53127# 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/fstream.tcc" 3
53128
53129# 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/fstream.tcc" 3
53130
53131namespace std __attribute__ ((__visibility__ ("default"))) {
53132
53133 template<typename _CharT, typename _Traits>
53134 void
53135 basic_filebuf<_CharT, _Traits>::
53136 _M_allocate_internal_buffer()
53137 {
53138
53139
53140 if (!_M_buf_allocated && !_M_buf)
53141 {
53142 _M_buf = new char_type[_M_buf_size];
53143 _M_buf_allocated = true;
53144 }
53145 }
53146
53147 template<typename _CharT, typename _Traits>
53148 void
53149 basic_filebuf<_CharT, _Traits>::
53150 _M_destroy_internal_buffer() throw()
53151 {
53152 if (_M_buf_allocated)
53153 {
53154 delete [] _M_buf;
53155 _M_buf = __null;
53156 _M_buf_allocated = false;
53157 }
53158 delete [] _M_ext_buf;
53159 _M_ext_buf = __null;
53160 _M_ext_buf_size = 0;
53161 _M_ext_next = __null;
53162 _M_ext_end = __null;
53163 }
53164
53165 template<typename _CharT, typename _Traits>
53166 basic_filebuf<_CharT, _Traits>::
53167 basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock),
53168 _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(),
53169 _M_state_last(), _M_buf(__null), _M_buf_size(8192),
53170 _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(),
53171 _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false),
53172 _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0),
53173 _M_ext_end(0)
53174 {
53175 if (has_facet<__codecvt_type>(this->_M_buf_locale))
53176 _M_codecvt = &use_facet<__codecvt_type>(this->_M_buf_locale);
53177 }
53178
53179 template<typename _CharT, typename _Traits>
53180 typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
53181 basic_filebuf<_CharT, _Traits>::
53182 open(const char* __s, ios_base::openmode __mode)
53183 {
53184 __filebuf_type *__ret = __null;
53185 if (!this->is_open())
53186 {
53187 _M_file.open(__s, __mode);
53188 if (this->is_open())
53189 {
53190 _M_allocate_internal_buffer();
53191 _M_mode = __mode;
53192
53193
53194 _M_reading = false;
53195 _M_writing = false;
53196 _M_set_buffer(-1);
53197
53198
53199 _M_state_last = _M_state_cur = _M_state_beg;
53200
53201
53202 if ((__mode & ios_base::ate)
53203 && this->seekoff(0, ios_base::end, __mode)
53204 == pos_type(off_type(-1)))
53205 this->close();
53206 else
53207 __ret = this;
53208 }
53209 }
53210 return __ret;
53211 }
53212
53213 template<typename _CharT, typename _Traits>
53214 typename basic_filebuf<_CharT, _Traits>::__filebuf_type*
53215 basic_filebuf<_CharT, _Traits>::
53216 close() throw()
53217 {
53218 __filebuf_type* __ret = __null;
53219 if (this->is_open())
53220 {
53221 bool __testfail = false;
53222 try
53223 {
53224 if (!_M_terminate_output())
53225 __testfail = true;
53226 }
53227 catch(...)
53228 { __testfail = true; }
53229
53230
53231 _M_mode = ios_base::openmode(0);
53232 _M_pback_init = false;
53233 _M_destroy_internal_buffer();
53234 _M_reading = false;
53235 _M_writing = false;
53236 _M_set_buffer(-1);
53237 _M_state_last = _M_state_cur = _M_state_beg;
53238
53239 if (!_M_file.close())
53240 __testfail = true;
53241
53242 if (!__testfail)
53243 __ret = this;
53244 }
53245 return __ret;
53246 }
53247
53248 template<typename _CharT, typename _Traits>
53249 streamsize
53250 basic_filebuf<_CharT, _Traits>::
53251 showmanyc()
53252 {
53253 streamsize __ret = -1;
53254 const bool __testin = _M_mode & ios_base::in;
53255 if (__testin && this->is_open())
53256 {
53257
53258
53259 __ret = this->egptr() - this->gptr();
53260
53261
53262
53263
53264
53265
53266
53267 if (__check_facet(_M_codecvt).encoding() >= 0)
53268
53269 __ret += _M_file.showmanyc() / _M_codecvt->max_length();
53270 }
53271 return __ret;
53272 }
53273
53274 template<typename _CharT, typename _Traits>
53275 typename basic_filebuf<_CharT, _Traits>::int_type
53276 basic_filebuf<_CharT, _Traits>::
53277 underflow()
53278 {
53279 int_type __ret = traits_type::eof();
53280 const bool __testin = _M_mode & ios_base::in;
53281 if (__testin && !_M_writing)
53282 {
53283
53284
53285
53286 _M_destroy_pback();
53287
53288 if (this->gptr() < this->egptr())
53289 return traits_type::to_int_type(*this->gptr());
53290
53291
53292 const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;
53293
53294
53295 bool __got_eof = false;
53296
53297 streamsize __ilen = 0;
53298 codecvt_base::result __r = codecvt_base::ok;
53299 if (__check_facet(_M_codecvt).always_noconv())
53300 {
53301 __ilen = _M_file.xsgetn(reinterpret_cast<char*>(this->eback()),
53302 __buflen);
53303 if (__ilen == 0)
53304 __got_eof = true;
53305 }
53306 else
53307 {
53308
53309
53310 const int __enc = _M_codecvt->encoding();
53311 streamsize __blen;
53312 streamsize __rlen;
53313 if (__enc > 0)
53314 __blen = __rlen = __buflen * __enc;
53315 else
53316 {
53317 __blen = __buflen + _M_codecvt->max_length() - 1;
53318 __rlen = __buflen;
53319 }
53320 const streamsize __remainder = _M_ext_end - _M_ext_next;
53321 __rlen = __rlen > __remainder ? __rlen - __remainder : 0;
53322
53323
53324
53325 if (_M_reading && this->egptr() == this->eback() && __remainder)
53326 __rlen = 0;
53327
53328
53329
53330 if (_M_ext_buf_size < __blen)
53331 {
53332 char* __buf = new char[__blen];
53333 if (__remainder)
53334 std::memcpy(__buf, _M_ext_next, __remainder);
53335
53336 delete [] _M_ext_buf;
53337 _M_ext_buf = __buf;
53338 _M_ext_buf_size = __blen;
53339 }
53340 else if (__remainder)
53341 std::memmove(_M_ext_buf, _M_ext_next, __remainder);
53342
53343 _M_ext_next = _M_ext_buf;
53344 _M_ext_end = _M_ext_buf + __remainder;
53345 _M_state_last = _M_state_cur;
53346
53347 do
53348 {
53349 if (__rlen > 0)
53350 {
53351
53352
53353
53354 if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size)
53355 {
53356 __throw_ios_failure(("basic_filebuf::underflow " "codecvt::max_length() " "is not valid"));
53357
53358
53359 }
53360 streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen);
53361 if (__elen == 0)
53362 __got_eof = true;
53363 else if (__elen == -1)
53364 break;
53365 _M_ext_end += __elen;
53366 }
53367
53368 char_type* __iend;
53369 __r = _M_codecvt->in(_M_state_cur, _M_ext_next,
53370 _M_ext_end, _M_ext_next, this->eback(),
53371 this->eback() + __buflen, __iend);
53372 if (__r == codecvt_base::noconv)
53373 {
53374 size_t __avail = _M_ext_end - _M_ext_buf;
53375 __ilen = std::min(__avail, __buflen);
53376 traits_type::copy(this->eback(),
53377 reinterpret_cast<char_type*>(_M_ext_buf), __ilen);
53378 _M_ext_next = _M_ext_buf + __ilen;
53379 }
53380 else
53381 __ilen = __iend - this->eback();
53382
53383
53384
53385
53386 if (__r == codecvt_base::error)
53387 break;
53388
53389 __rlen = 1;
53390 }
53391 while (__ilen == 0 && !__got_eof);
53392 }
53393
53394 if (__ilen > 0)
53395 {
53396 _M_set_buffer(__ilen);
53397 _M_reading = true;
53398 __ret = traits_type::to_int_type(*this->gptr());
53399 }
53400 else if (__got_eof)
53401 {
53402
53403
53404
53405 _M_set_buffer(-1);
53406 _M_reading = false;
53407
53408
53409 if (__r == codecvt_base::partial)
53410 __throw_ios_failure(("basic_filebuf::underflow " "incomplete character in file"));
53411
53412 }
53413 else if (__r == codecvt_base::error)
53414 __throw_ios_failure(("basic_filebuf::underflow " "invalid byte sequence in file"));
53415
53416 else
53417 __throw_ios_failure(("basic_filebuf::underflow " "error reading the file"));
53418
53419 }
53420 return __ret;
53421 }
53422
53423 template<typename _CharT, typename _Traits>
53424 typename basic_filebuf<_CharT, _Traits>::int_type
53425 basic_filebuf<_CharT, _Traits>::
53426 pbackfail(int_type __i)
53427 {
53428 int_type __ret = traits_type::eof();
53429 const bool __testin = _M_mode & ios_base::in;
53430 if (__testin && !_M_writing)
53431 {
53432
53433
53434 const bool __testpb = _M_pback_init;
53435 const bool __testeof = traits_type::eq_int_type(__i, __ret);
53436 int_type __tmp;
53437 if (this->eback() < this->gptr())
53438 {
53439 this->gbump(-1);
53440 __tmp = traits_type::to_int_type(*this->gptr());
53441 }
53442 else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1)))
53443 {
53444 __tmp = this->underflow();
53445 if (traits_type::eq_int_type(__tmp, __ret))
53446 return __ret;
53447 }
53448 else
53449 {
53450
53451
53452
53453
53454
53455 return __ret;
53456 }
53457
53458
53459
53460 if (!__testeof && traits_type::eq_int_type(__i, __tmp))
53461 __ret = __i;
53462 else if (__testeof)
53463 __ret = traits_type::not_eof(__i);
53464 else if (!__testpb)
53465 {
53466 _M_create_pback();
53467 _M_reading = true;
53468 *this->gptr() = traits_type::to_char_type(__i);
53469 __ret = __i;
53470 }
53471 }
53472 return __ret;
53473 }
53474
53475 template<typename _CharT, typename _Traits>
53476 typename basic_filebuf<_CharT, _Traits>::int_type
53477 basic_filebuf<_CharT, _Traits>::
53478 overflow(int_type __c)
53479 {
53480 int_type __ret = traits_type::eof();
53481 const bool __testeof = traits_type::eq_int_type(__c, __ret);
53482 const bool __testout = _M_mode & ios_base::out;
53483 if (__testout && !_M_reading)
53484 {
53485 if (this->pbase() < this->pptr())
53486 {
53487
53488 if (!__testeof)
53489 {
53490 *this->pptr() = traits_type::to_char_type(__c);
53491 this->pbump(1);
53492 }
53493
53494
53495
53496 if (_M_convert_to_external(this->pbase(),
53497 this->pptr() - this->pbase()))
53498 {
53499 _M_set_buffer(0);
53500 __ret = traits_type::not_eof(__c);
53501 }
53502 }
53503 else if (_M_buf_size > 1)
53504 {
53505
53506
53507
53508 _M_set_buffer(0);
53509 _M_writing = true;
53510 if (!__testeof)
53511 {
53512 *this->pptr() = traits_type::to_char_type(__c);
53513 this->pbump(1);
53514 }
53515 __ret = traits_type::not_eof(__c);
53516 }
53517 else
53518 {
53519
53520 char_type __conv = traits_type::to_char_type(__c);
53521 if (__testeof || _M_convert_to_external(&__conv, 1))
53522 {
53523 _M_writing = true;
53524 __ret = traits_type::not_eof(__c);
53525 }
53526 }
53527 }
53528 return __ret;
53529 }
53530
53531 template<typename _CharT, typename _Traits>
53532 bool
53533 basic_filebuf<_CharT, _Traits>::
53534 _M_convert_to_external(_CharT* __ibuf, streamsize __ilen)
53535 {
53536
53537 streamsize __elen;
53538 streamsize __plen;
53539 if (__check_facet(_M_codecvt).always_noconv())
53540 {
53541 __elen = _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen);
53542 __plen = __ilen;
53543 }
53544 else
53545 {
53546
53547
53548 streamsize __blen = __ilen * _M_codecvt->max_length();
53549 char* __buf = static_cast<char*>(__builtin_alloca(__blen));
53550
53551 char* __bend;
53552 const char_type* __iend;
53553 codecvt_base::result __r;
53554 __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen,
53555 __iend, __buf, __buf + __blen, __bend);
53556
53557 if (__r == codecvt_base::ok || __r == codecvt_base::partial)
53558 __blen = __bend - __buf;
53559 else if (__r == codecvt_base::noconv)
53560 {
53561
53562 __buf = reinterpret_cast<char*>(__ibuf);
53563 __blen = __ilen;
53564 }
53565 else
53566 __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error"));
53567
53568
53569 __elen = _M_file.xsputn(__buf, __blen);
53570 __plen = __blen;
53571
53572
53573 if (__r == codecvt_base::partial && __elen == __plen)
53574 {
53575 const char_type* __iresume = __iend;
53576 streamsize __rlen = this->pptr() - __iend;
53577 __r = _M_codecvt->out(_M_state_cur, __iresume,
53578 __iresume + __rlen, __iend, __buf,
53579 __buf + __blen, __bend);
53580 if (__r != codecvt_base::error)
53581 {
53582 __rlen = __bend - __buf;
53583 __elen = _M_file.xsputn(__buf, __rlen);
53584 __plen = __rlen;
53585 }
53586 else
53587 __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error"));
53588
53589 }
53590 }
53591 return __elen == __plen;
53592 }
53593
53594 template<typename _CharT, typename _Traits>
53595 streamsize
53596 basic_filebuf<_CharT, _Traits>::
53597 xsgetn(_CharT* __s, streamsize __n)
53598 {
53599
53600 streamsize __ret = 0;
53601 if (_M_pback_init)
53602 {
53603 if (__n > 0 && this->gptr() == this->eback())
53604 {
53605 *__s++ = *this->gptr();
53606 this->gbump(1);
53607 __ret = 1;
53608 --__n;
53609 }
53610 _M_destroy_pback();
53611 }
53612
53613
53614
53615
53616 const bool __testin = _M_mode & ios_base::in;
53617 const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;
53618
53619 if (__n > __buflen && __check_facet(_M_codecvt).always_noconv()
53620 && __testin && !_M_writing)
53621 {
53622
53623 const streamsize __avail = this->egptr() - this->gptr();
53624 if (__avail != 0)
53625 {
53626 if (__avail == 1)
53627 *__s = *this->gptr();
53628 else
53629 traits_type::copy(__s, this->gptr(), __avail);
53630 __s += __avail;
53631 this->gbump(__avail);
53632 __ret += __avail;
53633 __n -= __avail;
53634 }
53635
53636
53637
53638 streamsize __len;
53639 for (;;)
53640 {
53641 __len = _M_file.xsgetn(reinterpret_cast<char*>(__s),
53642 __n);
53643 if (__len == -1)
53644 __throw_ios_failure(("basic_filebuf::xsgetn " "error reading the file"));
53645
53646 if (__len == 0)
53647 break;
53648
53649 __n -= __len;
53650 __ret += __len;
53651 if (__n == 0)
53652 break;
53653
53654 __s += __len;
53655 }
53656
53657 if (__n == 0)
53658 {
53659 _M_set_buffer(0);
53660 _M_reading = true;
53661 }
53662 else if (__len == 0)
53663 {
53664
53665
53666
53667 _M_set_buffer(-1);
53668 _M_reading = false;
53669 }
53670 }
53671 else
53672 __ret += __streambuf_type::xsgetn(__s, __n);
53673
53674 return __ret;
53675 }
53676
53677 template<typename _CharT, typename _Traits>
53678 streamsize
53679 basic_filebuf<_CharT, _Traits>::
53680 xsputn(const _CharT* __s, streamsize __n)
53681 {
53682
53683
53684
53685 streamsize __ret = 0;
53686 const bool __testout = _M_mode & ios_base::out;
53687 if (__check_facet(_M_codecvt).always_noconv()
53688 && __testout && !_M_reading)
53689 {
53690
53691 const streamsize __chunk = 1ul << 10;
53692 streamsize __bufavail = this->epptr() - this->pptr();
53693
53694
53695 if (!_M_writing && _M_buf_size > 1)
53696 __bufavail = _M_buf_size - 1;
53697
53698 const streamsize __limit = std::min(__chunk, __bufavail);
53699 if (__n >= __limit)
53700 {
53701 const streamsize __buffill = this->pptr() - this->pbase();
53702 const char* __buf = reinterpret_cast<const char*>(this->pbase());
53703 __ret = _M_file.xsputn_2(__buf, __buffill,
53704 reinterpret_cast<const char*>(__s),
53705 __n);
53706 if (__ret == __buffill + __n)
53707 {
53708 _M_set_buffer(0);
53709 _M_writing = true;
53710 }
53711 if (__ret > __buffill)
53712 __ret -= __buffill;
53713 else
53714 __ret = 0;
53715 }
53716 else
53717 __ret = __streambuf_type::xsputn(__s, __n);
53718 }
53719 else
53720 __ret = __streambuf_type::xsputn(__s, __n);
53721 return __ret;
53722 }
53723
53724 template<typename _CharT, typename _Traits>
53725 typename basic_filebuf<_CharT, _Traits>::__streambuf_type*
53726 basic_filebuf<_CharT, _Traits>::
53727 setbuf(char_type* __s, streamsize __n)
53728 {
53729 if (!this->is_open())
53730 if (__s == 0 && __n == 0)
53731 _M_buf_size = 1;
53732 else if (__s && __n > 0)
53733 {
53734# 656 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/fstream.tcc" 3
53735 _M_buf = __s;
53736 _M_buf_size = __n;
53737 }
53738 return this;
53739 }
53740
53741
53742
53743
53744 template<typename _CharT, typename _Traits>
53745 typename basic_filebuf<_CharT, _Traits>::pos_type
53746 basic_filebuf<_CharT, _Traits>::
53747 seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode)
53748 {
53749 int __width = 0;
53750 if (_M_codecvt)
53751 __width = _M_codecvt->encoding();
53752 if (__width < 0)
53753 __width = 0;
53754
53755 pos_type __ret = pos_type(off_type(-1));
53756 const bool __testfail = __off != 0 && __width <= 0;
53757 if (this->is_open() && !__testfail)
53758 {
53759
53760 _M_destroy_pback();
53761
53762
53763
53764
53765
53766
53767 __state_type __state = _M_state_beg;
53768 off_type __computed_off = __off * __width;
53769 if (_M_reading && __way == ios_base::cur)
53770 {
53771 if (_M_codecvt->always_noconv())
53772 __computed_off += this->gptr() - this->egptr();
53773 else
53774 {
53775
53776
53777
53778 const int __gptr_off =
53779 _M_codecvt->length(_M_state_last, _M_ext_buf, _M_ext_next,
53780 this->gptr() - this->eback());
53781 __computed_off += _M_ext_buf + __gptr_off - _M_ext_end;
53782
53783
53784
53785 __state = _M_state_last;
53786 }
53787 }
53788 __ret = _M_seek(__computed_off, __way, __state);
53789 }
53790 return __ret;
53791 }
53792
53793
53794
53795
53796
53797 template<typename _CharT, typename _Traits>
53798 typename basic_filebuf<_CharT, _Traits>::pos_type
53799 basic_filebuf<_CharT, _Traits>::
53800 seekpos(pos_type __pos, ios_base::openmode)
53801 {
53802 pos_type __ret = pos_type(off_type(-1));
53803 if (this->is_open())
53804 {
53805
53806 _M_destroy_pback();
53807 __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state());
53808 }
53809 return __ret;
53810 }
53811
53812 template<typename _CharT, typename _Traits>
53813 typename basic_filebuf<_CharT, _Traits>::pos_type
53814 basic_filebuf<_CharT, _Traits>::
53815 _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state)
53816 {
53817 pos_type __ret = pos_type(off_type(-1));
53818 if (_M_terminate_output())
53819 {
53820
53821 __ret = pos_type(_M_file.seekoff(__off, __way));
53822 if (__ret != pos_type(off_type(-1)))
53823 {
53824 _M_reading = false;
53825 _M_writing = false;
53826 _M_ext_next = _M_ext_end = _M_ext_buf;
53827 _M_set_buffer(-1);
53828 _M_state_cur = __state;
53829 __ret.state(_M_state_cur);
53830 }
53831 }
53832 return __ret;
53833 }
53834
53835 template<typename _CharT, typename _Traits>
53836 bool
53837 basic_filebuf<_CharT, _Traits>::
53838 _M_terminate_output()
53839 {
53840
53841 bool __testvalid = true;
53842 if (this->pbase() < this->pptr())
53843 {
53844 const int_type __tmp = this->overflow();
53845 if (traits_type::eq_int_type(__tmp, traits_type::eof()))
53846 __testvalid = false;
53847 }
53848
53849
53850 if (_M_writing && !__check_facet(_M_codecvt).always_noconv()
53851 && __testvalid)
53852 {
53853
53854
53855
53856 const size_t __blen = 128;
53857 char __buf[__blen];
53858 codecvt_base::result __r;
53859 streamsize __ilen = 0;
53860
53861 do
53862 {
53863 char* __next;
53864 __r = _M_codecvt->unshift(_M_state_cur, __buf,
53865 __buf + __blen, __next);
53866 if (__r == codecvt_base::error)
53867 __testvalid = false;
53868 else if (__r == codecvt_base::ok ||
53869 __r == codecvt_base::partial)
53870 {
53871 __ilen = __next - __buf;
53872 if (__ilen > 0)
53873 {
53874 const streamsize __elen = _M_file.xsputn(__buf, __ilen);
53875 if (__elen != __ilen)
53876 __testvalid = false;
53877 }
53878 }
53879 }
53880 while (__r == codecvt_base::partial && __ilen > 0 && __testvalid);
53881
53882 if (__testvalid)
53883 {
53884
53885
53886
53887
53888 const int_type __tmp = this->overflow();
53889 if (traits_type::eq_int_type(__tmp, traits_type::eof()))
53890 __testvalid = false;
53891 }
53892 }
53893 return __testvalid;
53894 }
53895
53896 template<typename _CharT, typename _Traits>
53897 int
53898 basic_filebuf<_CharT, _Traits>::
53899 sync()
53900 {
53901
53902
53903 int __ret = 0;
53904 if (this->pbase() < this->pptr())
53905 {
53906 const int_type __tmp = this->overflow();
53907 if (traits_type::eq_int_type(__tmp, traits_type::eof()))
53908 __ret = -1;
53909 }
53910 return __ret;
53911 }
53912
53913 template<typename _CharT, typename _Traits>
53914 void
53915 basic_filebuf<_CharT, _Traits>::
53916 imbue(const locale& __loc)
53917 {
53918 bool __testvalid = true;
53919
53920 const __codecvt_type* _M_codecvt_tmp = 0;
53921 if (__builtin_expect(has_facet<__codecvt_type>(__loc), true))
53922 _M_codecvt_tmp = &use_facet<__codecvt_type>(__loc);
53923
53924 if (this->is_open())
53925 {
53926
53927 if ((_M_reading || _M_writing)
53928 && __check_facet(_M_codecvt).encoding() == -1)
53929 __testvalid = false;
53930 else
53931 {
53932 if (_M_reading)
53933 {
53934 if (__check_facet(_M_codecvt).always_noconv())
53935 {
53936 if (_M_codecvt_tmp
53937 && !__check_facet(_M_codecvt_tmp).always_noconv())
53938 __testvalid = this->seekoff(0, ios_base::cur, _M_mode)
53939 != pos_type(off_type(-1));
53940 }
53941 else
53942 {
53943
53944 _M_ext_next = _M_ext_buf
53945 + _M_codecvt->length(_M_state_last, _M_ext_buf, _M_ext_next,
53946 this->gptr() - this->eback());
53947 const streamsize __remainder = _M_ext_end - _M_ext_next;
53948 if (__remainder)
53949 std::memmove(_M_ext_buf, _M_ext_next, __remainder);
53950
53951 _M_ext_next = _M_ext_buf;
53952 _M_ext_end = _M_ext_buf + __remainder;
53953 _M_set_buffer(-1);
53954 _M_state_last = _M_state_cur = _M_state_beg;
53955 }
53956 }
53957 else if (_M_writing && (__testvalid = _M_terminate_output()))
53958 _M_set_buffer(-1);
53959 }
53960 }
53961
53962 if (__testvalid)
53963 _M_codecvt = _M_codecvt_tmp;
53964 else
53965 _M_codecvt = 0;
53966 }
53967
53968
53969
53970
53971
53972 extern template class basic_filebuf<char>;
53973 extern template class basic_ifstream<char>;
53974 extern template class basic_ofstream<char>;
53975 extern template class basic_fstream<char>;
53976
53977
53978 extern template class basic_filebuf<wchar_t>;
53979 extern template class basic_ifstream<wchar_t>;
53980 extern template class basic_ofstream<wchar_t>;
53981 extern template class basic_fstream<wchar_t>;
53982
53983
53984
53985}
53986# 806 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 2 3
53987# 8 "genfield.cxx" 2
53988
53989# 1 "/usr/include/sys/stat.h" 1 3 4
53990
53991
53992
53993
53994
53995
53996
53997# 1 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 1 3 4
53998# 27 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
53999# 1 "/usr/include/features.h" 1 3 4
54000# 28 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 2 3 4
54001
54002# 1 "/usr/include/bits/types.h" 1 3 4
54003# 30 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 2 3 4
54004# 39 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54005# 1 "/usr/include/time.h" 1 3 4
54006# 40 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 2 3 4
54007# 105 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54008extern "C" {
54009
54010# 1 "/usr/include/bits/stat.h" 1 3 4
54011
54012
54013
54014
54015
54016
54017
54018# 1 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 1 3 4
54019# 43 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
54020struct stat
54021 {
54022 __dev_t st_dev;
54023
54024
54025
54026
54027 __ino_t st_ino;
54028
54029
54030
54031
54032
54033
54034
54035 __nlink_t st_nlink;
54036 __mode_t st_mode;
54037
54038 __uid_t st_uid;
54039 __gid_t st_gid;
54040
54041 int pad0;
54042
54043 __dev_t st_rdev;
54044
54045
54046
54047
54048 __off_t st_size;
54049
54050
54051
54052 __blksize_t st_blksize;
54053
54054 __blkcnt_t st_blocks;
54055# 88 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
54056 struct timespec st_atim;
54057 struct timespec st_mtim;
54058 struct timespec st_ctim;
54059# 103 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
54060 long int __unused[3];
54061# 112 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
54062 };
54063
54064
54065
54066struct stat64
54067 {
54068 __dev_t st_dev;
54069
54070 __ino64_t st_ino;
54071 __nlink_t st_nlink;
54072 __mode_t st_mode;
54073
54074
54075
54076
54077
54078
54079 __uid_t st_uid;
54080 __gid_t st_gid;
54081
54082 int pad0;
54083 __dev_t st_rdev;
54084 __off_t st_size;
54085
54086
54087
54088
54089
54090 __blksize_t st_blksize;
54091 __blkcnt64_t st_blocks;
54092
54093
54094
54095
54096
54097
54098
54099 struct timespec st_atim;
54100 struct timespec st_mtim;
54101 struct timespec st_ctim;
54102# 164 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
54103 long int __unused[3];
54104
54105
54106
54107 };
54108# 9 "/usr/include/bits/stat.h" 2 3 4
54109# 108 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 2 3 4
54110# 209 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54111extern int stat (__const char *__restrict __file,
54112 struct stat *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2)));
54113
54114
54115
54116extern int fstat (int __fd, struct stat *__buf) throw () __attribute__ ((__nonnull__ (2)));
54117# 228 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54118extern int stat64 (__const char *__restrict __file,
54119 struct stat64 *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2)));
54120extern int fstat64 (int __fd, struct stat64 *__buf) throw () __attribute__ ((__nonnull__ (2)));
54121
54122
54123
54124
54125
54126
54127
54128extern int fstatat (int __fd, __const char *__restrict __file,
54129 struct stat *__restrict __buf, int __flag)
54130 throw () __attribute__ ((__nonnull__ (2, 3)));
54131# 252 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54132extern int fstatat64 (int __fd, __const char *__restrict __file,
54133 struct stat64 *__restrict __buf, int __flag)
54134 throw () __attribute__ ((__nonnull__ (2, 3)));
54135
54136
54137
54138
54139
54140
54141extern int lstat (__const char *__restrict __file,
54142 struct stat *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2)));
54143# 274 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54144extern int lstat64 (__const char *__restrict __file,
54145 struct stat64 *__restrict __buf)
54146 throw () __attribute__ ((__nonnull__ (1, 2)));
54147
54148
54149
54150
54151
54152extern int chmod (__const char *__file, __mode_t __mode)
54153 throw () __attribute__ ((__nonnull__ (1)));
54154
54155
54156
54157
54158
54159extern int lchmod (__const char *__file, __mode_t __mode)
54160 throw () __attribute__ ((__nonnull__ (1)));
54161
54162
54163
54164
54165extern int fchmod (int __fd, __mode_t __mode) throw ();
54166
54167
54168
54169
54170
54171extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag)
54172 throw () __attribute__ ((__nonnull__ (2))) ;
54173
54174
54175
54176
54177
54178
54179extern __mode_t umask (__mode_t __mask) throw ();
54180
54181
54182
54183
54184extern __mode_t getumask (void) throw ();
54185
54186
54187
54188extern int mkdir (__const char *__path, __mode_t __mode)
54189 throw () __attribute__ ((__nonnull__ (1)));
54190
54191
54192
54193
54194
54195extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
54196 throw () __attribute__ ((__nonnull__ (2)));
54197
54198
54199
54200
54201
54202
54203extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
54204 throw () __attribute__ ((__nonnull__ (1)));
54205
54206
54207
54208
54209
54210
54211extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
54212 __dev_t __dev) throw () __attribute__ ((__nonnull__ (2)));
54213
54214
54215
54216
54217extern int mkfifo (__const char *__path, __mode_t __mode)
54218 throw () __attribute__ ((__nonnull__ (1)));
54219
54220
54221
54222
54223
54224extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
54225 throw () __attribute__ ((__nonnull__ (2)));
54226
54227
54228
54229
54230
54231extern int utimensat (int __fd, __const char *__path,
54232 __const struct timespec __times[2],
54233 int __flags)
54234 throw () __attribute__ ((__nonnull__ (2)));
54235
54236
54237
54238
54239
54240extern int futimens (int __fd, __const struct timespec __times[2]) throw ();
54241# 397 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54242extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
54243 throw () __attribute__ ((__nonnull__ (3)));
54244extern int __xstat (int __ver, __const char *__filename,
54245 struct stat *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54246extern int __lxstat (int __ver, __const char *__filename,
54247 struct stat *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54248extern int __fxstatat (int __ver, int __fildes, __const char *__filename,
54249 struct stat *__stat_buf, int __flag)
54250 throw () __attribute__ ((__nonnull__ (3, 4)));
54251# 430 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54252extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
54253 throw () __attribute__ ((__nonnull__ (3)));
54254extern int __xstat64 (int __ver, __const char *__filename,
54255 struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54256extern int __lxstat64 (int __ver, __const char *__filename,
54257 struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54258extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename,
54259 struct stat64 *__stat_buf, int __flag)
54260 throw () __attribute__ ((__nonnull__ (3, 4)));
54261
54262extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
54263 __dev_t *__dev) throw () __attribute__ ((__nonnull__ (2, 4)));
54264
54265extern int __xmknodat (int __ver, int __fd, __const char *__path,
54266 __mode_t __mode, __dev_t *__dev)
54267 throw () __attribute__ ((__nonnull__ (3, 5)));
54268
54269
54270
54271
54272extern __inline int
54273stat (__const char *__path, struct stat *__statbuf) throw ()
54274{
54275 return __xstat (1, __path, __statbuf);
54276}
54277
54278
54279extern __inline int
54280lstat (__const char *__path, struct stat *__statbuf) throw ()
54281{
54282 return __lxstat (1, __path, __statbuf);
54283}
54284
54285
54286extern __inline int
54287fstat (int __fd, struct stat *__statbuf) throw ()
54288{
54289 return __fxstat (1, __fd, __statbuf);
54290}
54291
54292
54293extern __inline int
54294fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag) throw ()
54295
54296{
54297 return __fxstatat (1, __fd, __filename, __statbuf, __flag);
54298}
54299
54300
54301
54302extern __inline int
54303mknod (__const char *__path, __mode_t __mode, __dev_t __dev) throw ()
54304{
54305 return __xmknod (0, __path, __mode, &__dev);
54306}
54307
54308
54309
54310extern __inline int
54311mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev) throw ()
54312
54313{
54314 return __xmknodat (0, __fd, __path, __mode, &__dev);
54315}
54316
54317
54318
54319
54320
54321extern __inline int
54322stat64 (__const char *__path, struct stat64 *__statbuf) throw ()
54323{
54324 return __xstat64 (1, __path, __statbuf);
54325}
54326
54327
54328extern __inline int
54329lstat64 (__const char *__path, struct stat64 *__statbuf) throw ()
54330{
54331 return __lxstat64 (1, __path, __statbuf);
54332}
54333
54334
54335extern __inline int
54336fstat64 (int __fd, struct stat64 *__statbuf) throw ()
54337{
54338 return __fxstat64 (1, __fd, __statbuf);
54339}
54340
54341
54342extern __inline int
54343fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag) throw ()
54344
54345{
54346 return __fxstatat64 (1, __fd, __filename, __statbuf, __flag);
54347}
54348
54349
54350
54351
54352
54353
54354}
54355# 9 "/usr/include/sys/stat.h" 2 3 4
54356# 10 "genfield.cxx" 2
54357# 1 "/usr/include/fcntl.h" 1 3 4
54358
54359
54360
54361
54362
54363
54364
54365# 1 "/usr/include/gentoo-multilib/amd64/fcntl.h" 1 3 4
54366# 27 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54367# 1 "/usr/include/features.h" 1 3 4
54368# 28 "/usr/include/gentoo-multilib/amd64/fcntl.h" 2 3 4
54369
54370
54371extern "C" {
54372
54373
54374
54375# 1 "/usr/include/bits/fcntl.h" 1 3 4
54376
54377
54378
54379
54380
54381
54382
54383# 1 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 1 3 4
54384# 24 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 3 4
54385# 1 "/usr/include/sys/types.h" 1 3 4
54386# 25 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 2 3 4
54387# 1 "/usr/include/bits/wordsize.h" 1 3 4
54388
54389
54390
54391
54392
54393
54394
54395# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
54396# 9 "/usr/include/bits/wordsize.h" 2 3 4
54397# 26 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 2 3 4
54398
54399# 1 "/usr/include/bits/uio.h" 1 3 4
54400
54401
54402
54403
54404
54405
54406
54407# 1 "/usr/include/gentoo-multilib/amd64/bits/uio.h" 1 3 4
54408# 26 "/usr/include/gentoo-multilib/amd64/bits/uio.h" 3 4
54409# 1 "/usr/include/sys/types.h" 1 3 4
54410# 27 "/usr/include/gentoo-multilib/amd64/bits/uio.h" 2 3 4
54411# 44 "/usr/include/gentoo-multilib/amd64/bits/uio.h" 3 4
54412struct iovec
54413 {
54414 void *iov_base;
54415 size_t iov_len;
54416 };
54417# 9 "/usr/include/bits/uio.h" 2 3 4
54418# 28 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 2 3 4
54419# 155 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 3 4
54420struct flock
54421 {
54422 short int l_type;
54423 short int l_whence;
54424
54425 __off_t l_start;
54426 __off_t l_len;
54427
54428
54429
54430
54431 __pid_t l_pid;
54432 };
54433
54434
54435struct flock64
54436 {
54437 short int l_type;
54438 short int l_whence;
54439 __off64_t l_start;
54440 __off64_t l_len;
54441 __pid_t l_pid;
54442 };
54443# 222 "/usr/include/gentoo-multilib/amd64/bits/fcntl.h" 3 4
54444extern "C" {
54445
54446
54447
54448
54449extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
54450 throw ();
54451
54452
54453
54454extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
54455 unsigned int __flags);
54456
54457
54458
54459extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
54460 unsigned int __flags);
54461
54462
54463extern int splice (int __fdin, __off64_t *__offin, int __fdout,
54464 __off64_t *__offout, size_t __len, unsigned int __flags)
54465 throw ();
54466
54467
54468extern int tee (int __fdin, int __fdout, size_t __len, unsigned int __flags)
54469 throw ();
54470
54471
54472
54473}
54474# 9 "/usr/include/bits/fcntl.h" 2 3 4
54475# 35 "/usr/include/gentoo-multilib/amd64/fcntl.h" 2 3 4
54476
54477
54478
54479# 1 "/usr/include/sys/stat.h" 1 3 4
54480# 39 "/usr/include/gentoo-multilib/amd64/fcntl.h" 2 3 4
54481# 76 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54482extern int fcntl (int __fd, int __cmd, ...);
54483# 85 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54484extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
54485# 95 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54486extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
54487# 109 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54488extern int openat (int __fd, __const char *__file, int __oflag, ...)
54489 __attribute__ ((__nonnull__ (2)));
54490# 120 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54491extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
54492 __attribute__ ((__nonnull__ (2)));
54493# 130 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54494extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
54495# 140 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54496extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
54497# 176 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54498extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
54499 int __advise) throw ();
54500# 188 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54501extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
54502 int __advise) throw ();
54503# 198 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54504extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
54505# 209 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54506extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
54507
54508
54509
54510}
54511# 9 "/usr/include/fcntl.h" 2 3 4
54512# 11 "genfield.cxx" 2
54513# 1 "/usr/include/math.h" 1 3 4
54514
54515
54516
54517
54518
54519
54520
54521# 1 "/usr/include/gentoo-multilib/amd64/math.h" 1 3 4
54522# 28 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
54523# 1 "/usr/include/features.h" 1 3 4
54524# 29 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54525
54526extern "C" {
54527
54528
54529
54530# 1 "/usr/include/bits/huge_val.h" 1 3 4
54531
54532
54533
54534
54535
54536
54537
54538# 1 "/usr/include/gentoo-multilib/amd64/bits/huge_val.h" 1 3 4
54539# 9 "/usr/include/bits/huge_val.h" 2 3 4
54540# 35 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54541
54542# 1 "/usr/include/bits/huge_valf.h" 1 3 4
54543
54544
54545
54546
54547
54548
54549
54550# 1 "/usr/include/gentoo-multilib/amd64/bits/huge_valf.h" 1 3 4
54551# 9 "/usr/include/bits/huge_valf.h" 2 3 4
54552# 37 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54553# 1 "/usr/include/bits/huge_vall.h" 1 3 4
54554
54555
54556
54557
54558
54559
54560
54561# 1 "/usr/include/gentoo-multilib/amd64/bits/huge_vall.h" 1 3 4
54562# 9 "/usr/include/bits/huge_vall.h" 2 3 4
54563# 38 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54564
54565
54566# 1 "/usr/include/bits/inf.h" 1 3 4
54567
54568
54569
54570
54571
54572
54573
54574# 1 "/usr/include/gentoo-multilib/amd64/bits/inf.h" 1 3 4
54575# 9 "/usr/include/bits/inf.h" 2 3 4
54576# 41 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54577
54578
54579# 1 "/usr/include/bits/nan.h" 1 3 4
54580
54581
54582
54583
54584
54585
54586
54587# 1 "/usr/include/gentoo-multilib/amd64/bits/nan.h" 1 3 4
54588# 9 "/usr/include/bits/nan.h" 2 3 4
54589# 44 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54590
54591
54592
54593# 1 "/usr/include/bits/mathdef.h" 1 3 4
54594
54595
54596
54597
54598
54599
54600
54601# 1 "/usr/include/gentoo-multilib/amd64/bits/mathdef.h" 1 3 4
54602# 26 "/usr/include/gentoo-multilib/amd64/bits/mathdef.h" 3 4
54603# 1 "/usr/include/bits/wordsize.h" 1 3 4
54604
54605
54606
54607
54608
54609
54610
54611# 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4
54612# 9 "/usr/include/bits/wordsize.h" 2 3 4
54613# 27 "/usr/include/gentoo-multilib/amd64/bits/mathdef.h" 2 3 4
54614
54615
54616
54617
54618typedef float float_t;
54619typedef double double_t;
54620# 9 "/usr/include/bits/mathdef.h" 2 3 4
54621# 48 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54622# 71 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
54623# 1 "/usr/include/bits/mathcalls.h" 1 3 4
54624
54625
54626
54627
54628
54629
54630
54631# 1 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 1 3 4
54632# 53 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 3 4
54633
54634
54635extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
54636
54637extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
54638
54639extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
54640
54641extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
54642
54643
54644extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
54645
54646extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
54647
54648extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
54649
54650
54651
54652
54653extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
54654
54655extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
54656
54657extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
54658
54659
54660
54661
54662extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw ();
54663
54664
54665
54666
54667
54668
54669extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
54670
54671extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
54672
54673extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
54674
54675
54676
54677
54678
54679
54680
54681extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
54682
54683
54684extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
54685
54686
54687extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
54688
54689
54690extern double log (double __x) throw (); extern double __log (double __x) throw ();
54691
54692
54693extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
54694
54695
54696extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ();
54697
54698
54699
54700
54701extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw ();
54702
54703extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw ();
54704
54705
54706
54707
54708
54709extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
54710
54711
54712extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
54713
54714
54715extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
54716
54717
54718
54719
54720
54721
54722extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
54723
54724
54725extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
54726
54727
54728
54729
54730
54731
54732
54733
54734extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
54735
54736
54737extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
54738
54739
54740
54741
54742
54743extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
54744
54745
54746
54747
54748
54749
54750extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
54751
54752
54753
54754
54755
54756
54757
54758
54759extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
54760
54761
54762extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
54763
54764
54765extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
54766
54767
54768extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
54769
54770
54771
54772
54773extern int __isinf (double __value) throw () __attribute__ ((__const__));
54774
54775
54776extern int __finite (double __value) throw () __attribute__ ((__const__));
54777
54778
54779
54780
54781
54782extern int isinf (double __value) throw () __attribute__ ((__const__));
54783
54784
54785extern int finite (double __value) throw () __attribute__ ((__const__));
54786
54787
54788extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
54789
54790
54791
54792extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
54793
54794
54795
54796
54797
54798extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));
54799
54800
54801
54802
54803
54804
54805extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));
54806
54807
54808
54809
54810
54811extern int __isnan (double __value) throw () __attribute__ ((__const__));
54812
54813
54814
54815extern int isnan (double __value) throw () __attribute__ ((__const__));
54816
54817
54818extern double j0 (double) throw (); extern double __j0 (double) throw ();
54819extern double j1 (double) throw (); extern double __j1 (double) throw ();
54820extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
54821extern double y0 (double) throw (); extern double __y0 (double) throw ();
54822extern double y1 (double) throw (); extern double __y1 (double) throw ();
54823extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
54824
54825
54826
54827
54828
54829
54830extern double erf (double) throw (); extern double __erf (double) throw ();
54831extern double erfc (double) throw (); extern double __erfc (double) throw ();
54832extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
54833
54834
54835
54836
54837
54838
54839extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
54840
54841
54842
54843
54844
54845extern double gamma (double) throw (); extern double __gamma (double) throw ();
54846
54847
54848
54849
54850
54851
54852extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
54853
54854
54855
54856
54857
54858
54859
54860extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
54861
54862
54863extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));
54864
54865extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));
54866
54867
54868
54869extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
54870
54871
54872
54873extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
54874
54875
54876
54877extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
54878
54879
54880
54881
54882extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
54883
54884
54885
54886extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
54887
54888
54889
54890extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
54891
54892
54893
54894extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
54895
54896
54897
54898
54899extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();
54900
54901
54902
54903
54904
54905
54906extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
54907extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
54908
54909
54910
54911extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
54912extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
54913
54914
54915
54916extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
54917
54918
54919extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();
54920
54921
54922extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();
54923
54924
54925
54926extern int __fpclassify (double __value) throw ()
54927 __attribute__ ((__const__));
54928
54929
54930extern int __signbit (double __value) throw ()
54931 __attribute__ ((__const__));
54932
54933
54934
54935extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();
54936
54937
54938
54939
54940
54941
54942
54943
54944extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw ();
54945# 9 "/usr/include/bits/mathcalls.h" 2 3 4
54946# 72 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
54947# 94 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
54948# 1 "/usr/include/bits/mathcalls.h" 1 3 4
54949
54950
54951
54952
54953
54954
54955
54956# 1 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 1 3 4
54957# 53 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 3 4
54958
54959
54960extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
54961
54962extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
54963
54964extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
54965
54966extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
54967
54968
54969extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
54970
54971extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
54972
54973extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
54974
54975
54976
54977
54978extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
54979
54980extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
54981
54982extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
54983
54984
54985
54986
54987extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw ();
54988
54989
54990
54991
54992
54993
54994extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
54995
54996extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
54997
54998extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
54999
55000
55001
55002
55003
55004
55005
55006extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
55007
55008
55009extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
55010
55011
55012extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
55013
55014
55015extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
55016
55017
55018extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
55019
55020
55021extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ();
55022
55023
55024
55025
55026extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw ();
55027
55028extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw ();
55029
55030
55031
55032
55033
55034extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
55035
55036
55037extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
55038
55039
55040extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
55041
55042
55043
55044
55045
55046
55047extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
55048
55049
55050extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
55051
55052
55053
55054
55055
55056
55057
55058
55059extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
55060
55061
55062extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
55063
55064
55065
55066
55067
55068extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
55069
55070
55071
55072
55073
55074
55075extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
55076
55077
55078
55079
55080
55081
55082
55083
55084extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
55085
55086
55087extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
55088
55089
55090extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
55091
55092
55093extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
55094
55095
55096
55097
55098extern int __isinff (float __value) throw () __attribute__ ((__const__));
55099
55100
55101extern int __finitef (float __value) throw () __attribute__ ((__const__));
55102
55103
55104
55105
55106
55107extern int isinff (float __value) throw () __attribute__ ((__const__));
55108
55109
55110extern int finitef (float __value) throw () __attribute__ ((__const__));
55111
55112
55113extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
55114
55115
55116
55117extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
55118
55119
55120
55121
55122
55123extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));
55124
55125
55126
55127
55128
55129
55130extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));
55131
55132
55133
55134
55135
55136extern int __isnanf (float __value) throw () __attribute__ ((__const__));
55137
55138
55139
55140extern int isnanf (float __value) throw () __attribute__ ((__const__));
55141
55142
55143extern float j0f (float) throw (); extern float __j0f (float) throw ();
55144extern float j1f (float) throw (); extern float __j1f (float) throw ();
55145extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
55146extern float y0f (float) throw (); extern float __y0f (float) throw ();
55147extern float y1f (float) throw (); extern float __y1f (float) throw ();
55148extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
55149
55150
55151
55152
55153
55154
55155extern float erff (float) throw (); extern float __erff (float) throw ();
55156extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
55157extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
55158
55159
55160
55161
55162
55163
55164extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
55165
55166
55167
55168
55169
55170extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
55171
55172
55173
55174
55175
55176
55177extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
55178
55179
55180
55181
55182
55183
55184
55185extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
55186
55187
55188extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));
55189
55190extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));
55191
55192
55193
55194extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
55195
55196
55197
55198extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
55199
55200
55201
55202extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
55203
55204
55205
55206
55207extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
55208
55209
55210
55211extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
55212
55213
55214
55215extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
55216
55217
55218
55219extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
55220
55221
55222
55223
55224extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();
55225
55226
55227
55228
55229
55230
55231extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
55232extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
55233
55234
55235
55236extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
55237extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
55238
55239
55240
55241extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
55242
55243
55244extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();
55245
55246
55247extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();
55248
55249
55250
55251extern int __fpclassifyf (float __value) throw ()
55252 __attribute__ ((__const__));
55253
55254
55255extern int __signbitf (float __value) throw ()
55256 __attribute__ ((__const__));
55257
55258
55259
55260extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();
55261
55262
55263
55264
55265
55266
55267
55268
55269extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw ();
55270# 9 "/usr/include/bits/mathcalls.h" 2 3 4
55271# 95 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
55272# 141 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55273# 1 "/usr/include/bits/mathcalls.h" 1 3 4
55274
55275
55276
55277
55278
55279
55280
55281# 1 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 1 3 4
55282# 53 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 3 4
55283
55284
55285extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw ();
55286
55287extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw ();
55288
55289extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw ();
55290
55291extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw ();
55292
55293
55294extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw ();
55295
55296extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw ();
55297
55298extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw ();
55299
55300
55301
55302
55303extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw ();
55304
55305extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw ();
55306
55307extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw ();
55308
55309
55310
55311
55312extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw ();
55313
55314
55315
55316
55317
55318
55319extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw ();
55320
55321extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw ();
55322
55323extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw ();
55324
55325
55326
55327
55328
55329
55330
55331extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw ();
55332
55333
55334extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw ();
55335
55336
55337extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw ();
55338
55339
55340extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw ();
55341
55342
55343extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw ();
55344
55345
55346extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw ();
55347
55348
55349
55350
55351extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw ();
55352
55353extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw ();
55354
55355
55356
55357
55358
55359extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw ();
55360
55361
55362extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw ();
55363
55364
55365extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw ();
55366
55367
55368
55369
55370
55371
55372extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw ();
55373
55374
55375extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw ();
55376
55377
55378
55379
55380
55381
55382
55383
55384extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw ();
55385
55386
55387extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw ();
55388
55389
55390
55391
55392
55393extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw ();
55394
55395
55396
55397
55398
55399
55400extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw ();
55401
55402
55403
55404
55405
55406
55407
55408
55409extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__));
55410
55411
55412extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__));
55413
55414
55415extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__));
55416
55417
55418extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw ();
55419
55420
55421
55422
55423extern int __isinfl (long double __value) throw () __attribute__ ((__const__));
55424
55425
55426extern int __finitel (long double __value) throw () __attribute__ ((__const__));
55427
55428
55429
55430
55431
55432extern int isinfl (long double __value) throw () __attribute__ ((__const__));
55433
55434
55435extern int finitel (long double __value) throw () __attribute__ ((__const__));
55436
55437
55438extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw ();
55439
55440
55441
55442extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw ();
55443
55444
55445
55446
55447
55448extern 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__));
55449
55450
55451
55452
55453
55454
55455extern long double nanl (__const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) throw () __attribute__ ((__const__));
55456
55457
55458
55459
55460
55461extern int __isnanl (long double __value) throw () __attribute__ ((__const__));
55462
55463
55464
55465extern int isnanl (long double __value) throw () __attribute__ ((__const__));
55466
55467
55468extern long double j0l (long double) throw (); extern long double __j0l (long double) throw ();
55469extern long double j1l (long double) throw (); extern long double __j1l (long double) throw ();
55470extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw ();
55471extern long double y0l (long double) throw (); extern long double __y0l (long double) throw ();
55472extern long double y1l (long double) throw (); extern long double __y1l (long double) throw ();
55473extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw ();
55474
55475
55476
55477
55478
55479
55480extern long double erfl (long double) throw (); extern long double __erfl (long double) throw ();
55481extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw ();
55482extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw ();
55483
55484
55485
55486
55487
55488
55489extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw ();
55490
55491
55492
55493
55494
55495extern long double gammal (long double) throw (); extern long double __gammal (long double) throw ();
55496
55497
55498
55499
55500
55501
55502extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw ();
55503
55504
55505
55506
55507
55508
55509
55510extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw ();
55511
55512
55513extern 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__));
55514
55515extern 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__));
55516
55517
55518
55519extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw ();
55520
55521
55522
55523extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw ();
55524
55525
55526
55527extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw ();
55528
55529
55530
55531
55532extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw ();
55533
55534
55535
55536extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw ();
55537
55538
55539
55540extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__));
55541
55542
55543
55544extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__));
55545
55546
55547
55548
55549extern 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 ();
55550
55551
55552
55553
55554
55555
55556extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw ();
55557extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw ();
55558
55559
55560
55561extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw ();
55562extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw ();
55563
55564
55565
55566extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw ();
55567
55568
55569extern long double fmaxl (long double __x, long double __y) throw (); extern long double __fmaxl (long double __x, long double __y) throw ();
55570
55571
55572extern long double fminl (long double __x, long double __y) throw (); extern long double __fminl (long double __x, long double __y) throw ();
55573
55574
55575
55576extern int __fpclassifyl (long double __value) throw ()
55577 __attribute__ ((__const__));
55578
55579
55580extern int __signbitl (long double __value) throw ()
55581 __attribute__ ((__const__));
55582
55583
55584
55585extern 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 ();
55586
55587
55588
55589
55590
55591
55592
55593
55594extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw ();
55595# 9 "/usr/include/bits/mathcalls.h" 2 3 4
55596# 142 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
55597# 157 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55598extern int signgam;
55599# 198 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55600enum
55601 {
55602 FP_NAN,
55603
55604 FP_INFINITE,
55605
55606 FP_ZERO,
55607
55608 FP_SUBNORMAL,
55609
55610 FP_NORMAL
55611
55612 };
55613# 284 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55614typedef enum
55615{
55616 _IEEE_ = -1,
55617 _SVID_,
55618 _XOPEN_,
55619 _POSIX_,
55620 _ISOC_
55621} _LIB_VERSION_TYPE;
55622
55623
55624
55625
55626extern _LIB_VERSION_TYPE _LIB_VERSION;
55627# 307 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55628struct __exception
55629
55630
55631
55632 {
55633 int type;
55634 char *name;
55635 double arg1;
55636 double arg2;
55637 double retval;
55638 };
55639
55640
55641extern int matherr (struct __exception *__exc) throw ();
55642# 409 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55643# 1 "/usr/include/bits/mathinline.h" 1 3 4
55644
55645
55646
55647
55648
55649
55650
55651# 1 "/usr/include/gentoo-multilib/amd64/bits/mathinline.h" 1 3 4
55652# 35 "/usr/include/gentoo-multilib/amd64/bits/mathinline.h" 3 4
55653__inline int
55654__signbitf (float __x) throw ()
55655{
55656 __extension__ union { float __f; int __i; } __u = { __f: __x };
55657 return __u.__i < 0;
55658}
55659__inline int
55660__signbit (double __x) throw ()
55661{
55662 __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
55663 return __u.__i[1] < 0;
55664}
55665__inline int
55666__signbitl (long double __x) throw ()
55667{
55668 __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
55669 return (__u.__i[2] & 0x8000) != 0;
55670}
55671# 9 "/usr/include/bits/mathinline.h" 2 3 4
55672# 410 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
55673# 465 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55674}
55675# 9 "/usr/include/math.h" 2 3 4
55676# 12 "genfield.cxx" 2
55677
55678
55679
55680
55681using namespace boost;
55682using namespace std;
55683namespace po = boost::program_options;
55684
55685
55686const float physical_extent = 3.14159265358979323846 * 2.;
55687const float comp_radius = 5.0;
55688const float h = comp_radius * 0.5;
55689
55690typedef array<int,3> node;
55691typedef array<float,3> particle;
55692typedef vector<particle> particle_array;
55693
55694const int computational_extent = 512;
55695
55696const float norm = 1.;
55697
55698
55699
55700
55701
55702void read_particles(const string &infile,particle_array &particles)
55703{
55704 ssize_t res, readsize;
55705
55706 printf("reading %s...\n", infile.c_str());
55707 FILE *pfd = fopen(infile.c_str(), "r");
55708 ((pfd) ? static_cast<void> (0) : __assert_fail ("pfd", "genfield.cxx", 43, __PRETTY_FUNCTION__));
55709
55710 bool binary_format = true;
55711
55712 particle p;
55713 readsize = 1;
55714
55715 char inbuf[80];
55716 res = fread(inbuf,80,1,pfd);
55717 if (res != -1) {
55718 if (sscanf(inbuf,"%f %f %f\n", &p[0], &p[1], &p[1]) == 3) {
55719 binary_format = false;
55720 readsize = 3;
55721 }
55722 }
55723
55724 particles.clear();
55725 fseek(pfd,0L,0);
55726
55727 while (!feof(pfd)) {
55728 if (binary_format) {
55729 res = fread(p.data(),sizeof(p),1,pfd);
55730 if (res == 0)
55731 break;
55732 }
55733 else
55734 res = fscanf(pfd,"%f %f %f\n", &p[0], &p[1], &p[2]);
55735
55736 if (res != readsize) {
55737 if (res == -1)
55738 perror("read");
55739 else
55740 printf("read error: res = %ld\n", res);
55741 exit(1);
55742 }
55743
55744 particles.push_back(p);
55745 }
55746
55747 fclose(pfd);
55748}
55749
55750inline float calc_level(const particle &comp_part,const node &n)
55751{
55752 float dist[3];
55753 for (int i=0; i<3; ++i)
55754 dist[i] = (float)n[i] - comp_part[i];
55755 float veclen = sqrt(dist[0]*dist[0]+dist[1]*dist[1]+dist[2]*dist[2]);
55756 ((veclen < comp_radius*1.8) ? static_cast<void> (0) : __assert_fail ("veclen < comp_radius*1.8", "genfield.cxx", 91, __PRETTY_FUNCTION__));
55757 float val;
55758 float q = veclen / h;
55759 if (q < 1.) {
55760 float q2 = q*q;
55761 float q3 = q2*q;
55762 val = 1. - 1.5*q2 + 0.75*q3;
55763 }
55764 else if (q < 2.) {
55765 float f = 2.-q;
55766 float f3 = f*f*f;
55767 val = 0.25*f3;
55768 }
55769 else
55770 val = 0;
55771
55772 val *= norm;
55773
55774 return val;
55775}
55776
55777void get_local_nodes(const particle &comp_part,
55778 vector<node> &nv,vector<node> &pnv)
55779{
55780 int bounds[2][3];
55781 for (int i=0; i<3; ++i) {
55782 bounds[0][i] = (int)ceilf(comp_part[i] - comp_radius);
55783 bounds[1][i] = (int)floorf(comp_part[i] + comp_radius);
55784 }
55785
55786 size_t ncnt = (bounds[1][0] - bounds[0][0] + 1) *
55787 (bounds[1][1] - bounds[0][1] + 1) *
55788 (bounds[1][2] - bounds[0][2] + 1);
55789 nv.resize(ncnt);
55790 pnv.resize(ncnt);
55791
55792 size_t nidx = 0;
55793 for (int i=bounds[0][0]; i<=bounds[1][0]; ++i) {
55794 int ii = i % 512;
55795 if (ii < 0) ii = 512 + ii;
55796 for (int j=bounds[0][1]; j<=bounds[1][1]; ++j) {
55797 int jj = j % 512;
55798 if (jj < 0) jj = 512 + jj;
55799 for (int k=bounds[0][2]; k<=bounds[1][2]; ++k) {
55800 int kk = k % 512;
55801 if (kk < 0) kk = 512 + kk;
55802 node n = {{ i, j, k }};
55803 nv[nidx] = n;
55804 n[0] = ii, n[1] = jj, n[2] = kk;
55805 pnv[nidx] = n;
55806 ++nidx;
55807 }
55808 }
55809 }
55810}
55811
55812void process_particle(const particle &part,
55813 vector<node> &nodes,vector<node> &pnodes,
55814 float field[][512][512])
55815{
55816 particle comp_part;
55817 for (int i=0; i<3; ++i)
55818 comp_part[i] = part[i] / physical_extent * computational_extent;
55819
55820 get_local_nodes(comp_part,nodes,pnodes);
55821 ((nodes.size() == pnodes.size()) ? static_cast<void> (0) : __assert_fail ("nodes.size() == pnodes.size()", "genfield.cxx", 156, __PRETTY_FUNCTION__));
55822 vector<node>::const_iterator nit = nodes.begin();
55823 vector<node>::const_iterator pit = pnodes.begin();
55824 while (nit!=nodes.end()) {
55825 const node &n = *nit++;
55826 const node &pn = *pit++;
55827 float fieldval = calc_level(comp_part,n);
55828 field[pn[2]][pn[1]][pn[0]] += fieldval;
55829 }
55830
55831}
55832
55833void write_field(unsigned ts,float field[][512][512])
55834{
55835 char filename[256];
55836 sprintf(filename, "r80.density.%04u.q", ts);
55837 printf("writing %s...\n", filename);
55838 int fd = open(filename, 01|0100|01000, 0666);
55839 ((fd>0) ? static_cast<void> (0) : __assert_fail ("fd>0", "genfield.cxx", 174, __PRETTY_FUNCTION__));
55840 ssize_t res;
55841 int nbx = 512, nby = 512, nbz = 512, snum = 1;
55842 res = write(fd,&nbx,4);
55843 ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 178, __PRETTY_FUNCTION__));
55844 res = write(fd,&nby,4);
55845 ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 180, __PRETTY_FUNCTION__));
55846 res = write(fd,&nbz,4);
55847 ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 182, __PRETTY_FUNCTION__));
55848 res = write(fd,&snum,4);
55849 ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 184, __PRETTY_FUNCTION__));
55850 long field_size = nbx * nby * nbz * 4;
55851 long bytesleft = field_size;
55852 while (bytesleft) {
55853 res = write(fd,field,bytesleft);
55854 if (res == -1) { perror("write"); break; }
55855 bytesleft -= res;
55856 }
55857 close(fd);
55858}
55859
55860void gen_field(particle_array &particles,float field[][512][512])
55861{
55862 int pn = (int)particles.size();
55863
55864 printf("generating density field - %d particles\n", pn);
55865 memset(field,0,512*512*512);
55866
55867 vector<node> nodes, pnodes;
55868 int p;
55869
55870 for (p=0; p<pn; ++p) {
55871
55872 if (!(p%10000)) {
55873 printf("%%%.2f completed\r", (float)p / particles.size()*100.);
55874 fflush(stdout);
55875 }
55876
55877 process_particle(particles[p],nodes,pnodes,field);
55878 }
55879
55880 printf("\n");
55881
55882}
55883
55884int main(int argc,char *argv[])
55885{
55886 vector<string> infiles;
55887 unsigned start_ts;
55888
55889 po::options_description desc("options");
55890 desc.add_options()
55891 ("help,h", "print usage")
55892 ("particles", po::value<vector<string> >(&infiles), "particle file")
55893 ("listfile", po::value<string>(), "listfile of particle files")
55894 ("timestep_origin,o", po::value<unsigned>(&start_ts)->default_value(0),
55895 "timestep origin")
55896 ;
55897
55898 po::positional_options_description p;
55899 p.add("particles", -1);
55900
55901 po::variables_map vm;
55902 try {
55903 po::store(po::command_line_parser(argc,argv)
55904 .options(desc).positional(p).run(),
55905 vm);
55906 po::notify(vm);
55907 } catch (exception &e) {
55908 cout << e.what() << endl;
55909 return 1;
55910 }
55911
55912 if (vm.count("help")) {
55913 cout << desc << endl;
55914 return 1;
55915 }
55916
55917 if (vm.count("listfile")) {
55918 ifstream f(vm["listfile"].as<string>().c_str());
55919 string fname;
55920 while (f >> fname)
55921 infiles.push_back(fname);
55922 }
55923
55924 int fidx = 0;
55925
55926 float field[512][512][512];
55927 particle_array particles;
55928
55929#pragma omp parallel private(field, particles)
55930 while (true) {
55931
55932
55933
55934
55935
55936 unsigned myidx = fidx++;
55937
55938 if (myidx >= infiles.size())
55939 break;
55940
55941 const string &file = infiles[myidx];
55942 string::size_type dotpos = file.find_last_of('.');
55943 unsigned ts;
55944 if (dotpos != string::npos)
55945 ts = lexical_cast<unsigned>(file.substr(dotpos+1));
55946 else
55947 ts = myidx + start_ts;
55948 read_particles(file,particles);
55949 gen_field(particles,field);
55950 write_field(ts,field);
55951 }
55952
55953 printf("done\n");
55954 exit(0);
55955}