]> git.wh0rd.org Git - ICEs.git/blob - 198528/ice.ii.0
initial import
[ICEs.git] / 198528 / ice.ii.0
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
96 namespace 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
102 typedef long int ptrdiff_t;
103 # 214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 3 4
104 typedef 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
107 namespace 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
125 extern "C++" {
126
127 namespace 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
179 namespace __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
202 namespace 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
251 extern "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
262 extern void *memcpy (void *__restrict __dest,
263        __const void *__restrict __src, size_t __n)
264      throw () __attribute__ ((__nonnull__ (1, 2)));
265
266
267 extern void *memmove (void *__dest, __const void *__src, size_t __n)
268      throw () __attribute__ ((__nonnull__ (1, 2)));
269
270
271
272
273
274
275 extern 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
283 extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
284
285
286 extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
287      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
288
289
290 extern void *memchr (__const void *__s, int __c, size_t __n)
291       throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
292
293
294
295
296
297 extern void *rawmemchr (__const void *__s, int __c)
298      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
299
300
301 extern void *memrchr (__const void *__s, int __c, size_t __n)
302       throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
303
304
305
306
307
308 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
309      throw () __attribute__ ((__nonnull__ (1, 2)));
310
311 extern char *strncpy (char *__restrict __dest,
312         __const char *__restrict __src, size_t __n)
313      throw () __attribute__ ((__nonnull__ (1, 2)));
314
315
316 extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
317      throw () __attribute__ ((__nonnull__ (1, 2)));
318
319 extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
320         size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
321
322
323 extern int strcmp (__const char *__s1, __const char *__s2)
324      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
325
326 extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
327      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
328
329
330 extern int strcoll (__const char *__s1, __const char *__s2)
331      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
332
333 extern 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
352 typedef 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
369 extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
370      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
371
372 extern 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
378 extern char *strdup (__const char *__s)
379      throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
380
381
382
383
384
385
386 extern 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
391 extern char *strchr (__const char *__s, int __c)
392      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
393
394 extern char *strrchr (__const char *__s, int __c)
395      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
396
397
398
399
400
401 extern char *strchrnul (__const char *__s, int __c)
402      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
403
404
405
406
407
408 extern size_t strcspn (__const char *__s, __const char *__reject)
409      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
410
411
412 extern size_t strspn (__const char *__s, __const char *__accept)
413      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
414
415 extern char *strpbrk (__const char *__s, __const char *__accept)
416      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
417
418 extern char *strstr (__const char *__haystack, __const char *__needle)
419      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
420
421
422
423 extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
424      throw () __attribute__ ((__nonnull__ (2)));
425
426
427
428
429 extern char *__strtok_r (char *__restrict __s,
430     __const char *__restrict __delim,
431     char **__restrict __save_ptr)
432      throw () __attribute__ ((__nonnull__ (2, 3)));
433
434 extern 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
441 extern char *strcasestr (__const char *__haystack, __const char *__needle)
442      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
443
444
445
446
447
448
449 extern 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
455 extern void *__mempcpy (void *__restrict __dest,
456    __const void *__restrict __src, size_t __n)
457      throw () __attribute__ ((__nonnull__ (1, 2)));
458 extern void *mempcpy (void *__restrict __dest,
459         __const void *__restrict __src, size_t __n)
460      throw () __attribute__ ((__nonnull__ (1, 2)));
461
462
463
464
465
466 extern size_t strlen (__const char *__s)
467      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
468
469
470
471
472
473 extern size_t strnlen (__const char *__string, size_t __maxlen)
474      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
475
476
477
478
479
480 extern char *strerror (int __errnum) throw ();
481
482 # 281 "/usr/include/gentoo-multilib/amd64/string.h" 3 4
483 extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
484      throw () __attribute__ ((__nonnull__ (2)));
485
486
487
488
489
490 extern char *strerror_l (int __errnum, __locale_t __l) throw ();
491
492
493
494
495
496 extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
497
498
499
500 extern void bcopy (__const void *__src, void *__dest, size_t __n)
501      throw () __attribute__ ((__nonnull__ (1, 2)));
502
503
504 extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
505
506
507 extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
508      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
509
510
511 extern char *index (__const char *__s, int __c)
512      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
513
514
515 extern char *rindex (__const char *__s, int __c)
516      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
517
518
519
520 extern int ffs (int __i) throw () __attribute__ ((__const__));
521
522
523
524
525 extern 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
533 extern int strcasecmp (__const char *__s1, __const char *__s2)
534      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
535
536
537 extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
538      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
539
540
541
542
543
544 extern int strcasecmp_l (__const char *__s1, __const char *__s2,
545     __locale_t __loc)
546      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
547
548 extern 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
556 extern char *strsep (char **__restrict __stringp,
557        __const char *__restrict __delim)
558      throw () __attribute__ ((__nonnull__ (1, 2)));
559
560
561
562
563 extern int strverscmp (__const char *__s1, __const char *__s2)
564      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
565
566
567 extern char *strsignal (int __sig) throw ();
568
569
570 extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
571      throw () __attribute__ ((__nonnull__ (1, 2)));
572 extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
573      throw () __attribute__ ((__nonnull__ (1, 2)));
574
575
576
577 extern char *__stpncpy (char *__restrict __dest,
578    __const char *__restrict __src, size_t __n)
579      throw () __attribute__ ((__nonnull__ (1, 2)));
580 extern char *stpncpy (char *__restrict __dest,
581         __const char *__restrict __src, size_t __n)
582      throw () __attribute__ ((__nonnull__ (1, 2)));
583
584
585 extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1)));
586
587
588 extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
589
590
591
592
593
594
595 extern 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
601 namespace 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
783 extern "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
838 union 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
875 typedef struct
876   {
877     int quot;
878     int rem;
879   } div_t;
880
881
882
883 typedef 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
903 extern size_t __ctype_get_mb_cur_max (void) throw () ;
904
905
906
907
908 extern double atof (__const char *__nptr)
909      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
910
911 extern int atoi (__const char *__nptr)
912      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
913
914 extern 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
928 extern double strtod (__const char *__restrict __nptr,
929         char **__restrict __endptr)
930      throw () __attribute__ ((__nonnull__ (1))) ;
931
932
933
934
935
936 extern float strtof (__const char *__restrict __nptr,
937        char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) ;
938
939 extern long double strtold (__const char *__restrict __nptr,
940        char **__restrict __endptr)
941      throw () __attribute__ ((__nonnull__ (1))) ;
942
943
944
945
946
947 extern long int strtol (__const char *__restrict __nptr,
948    char **__restrict __endptr, int __base)
949      throw () __attribute__ ((__nonnull__ (1))) ;
950
951 extern 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__
959 extern long long int strtoq (__const char *__restrict __nptr,
960         char **__restrict __endptr, int __base)
961      throw () __attribute__ ((__nonnull__ (1))) ;
962
963 __extension__
964 extern 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__
973 extern long long int strtoll (__const char *__restrict __nptr,
974          char **__restrict __endptr, int __base)
975      throw () __attribute__ ((__nonnull__ (1))) ;
976
977 __extension__
978 extern 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
988 extern long int strtol_l (__const char *__restrict __nptr,
989      char **__restrict __endptr, int __base,
990      __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))) ;
991
992 extern 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__
998 extern 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__
1004 extern 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
1009 extern double strtod_l (__const char *__restrict __nptr,
1010    char **__restrict __endptr, __locale_t __loc)
1011      throw () __attribute__ ((__nonnull__ (1, 3))) ;
1012
1013 extern float strtof_l (__const char *__restrict __nptr,
1014          char **__restrict __endptr, __locale_t __loc)
1015      throw () __attribute__ ((__nonnull__ (1, 3))) ;
1016
1017 extern 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
1027 extern double __strtod_internal (__const char *__restrict __nptr,
1028      char **__restrict __endptr, int __group)
1029      throw () __attribute__ ((__nonnull__ (1))) ;
1030 extern float __strtof_internal (__const char *__restrict __nptr,
1031     char **__restrict __endptr, int __group)
1032      throw () __attribute__ ((__nonnull__ (1))) ;
1033 extern long double __strtold_internal (__const char *__restrict __nptr,
1034            char **__restrict __endptr,
1035            int __group)
1036      throw () __attribute__ ((__nonnull__ (1))) ;
1037
1038 extern 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
1045 extern 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__
1054 extern 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__
1062 extern 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
1075 extern __inline double
1076 strtod (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
1077 {
1078   return __strtod_internal (__nptr, __endptr, 0);
1079 }
1080 extern __inline long int
1081 strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ()
1082
1083 {
1084   return __strtol_internal (__nptr, __endptr, __base, 0);
1085 }
1086 extern __inline unsigned long int
1087 strtoul (__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
1096 extern __inline float
1097 strtof (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
1098 {
1099   return __strtof_internal (__nptr, __endptr, 0);
1100 }
1101
1102 extern __inline long double
1103 strtold (__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
1113 strtoq (__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
1119 strtouq (__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
1129 strtoll (__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
1135 strtoull (__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
1144 extern __inline double
1145 atof (__const char *__nptr) throw ()
1146 {
1147   return strtod (__nptr, (char **) __null);
1148 }
1149 extern __inline int
1150 atoi (__const char *__nptr) throw ()
1151 {
1152   return (int) strtol (__nptr, (char **) __null, 10);
1153 }
1154 extern __inline long int
1155 atol (__const char *__nptr) throw ()
1156 {
1157   return strtol (__nptr, (char **) __null, 10);
1158 }
1159
1160
1161
1162
1163 __extension__ extern __inline long long int
1164 atoll (__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
1170 extern char *l64a (long int __n) throw () ;
1171
1172
1173 extern 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
1192 extern "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
1223 typedef unsigned char __u_char;
1224 typedef unsigned short int __u_short;
1225 typedef unsigned int __u_int;
1226 typedef unsigned long int __u_long;
1227
1228
1229 typedef signed char __int8_t;
1230 typedef unsigned char __uint8_t;
1231 typedef signed short int __int16_t;
1232 typedef unsigned short int __uint16_t;
1233 typedef signed int __int32_t;
1234 typedef unsigned int __uint32_t;
1235
1236 typedef signed long int __int64_t;
1237 typedef unsigned long int __uint64_t;
1238
1239
1240
1241
1242
1243
1244
1245 typedef long int __quad_t;
1246 typedef 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
1261 typedef unsigned long int __dev_t;
1262 typedef unsigned int __uid_t;
1263 typedef unsigned int __gid_t;
1264 typedef unsigned long int __ino_t;
1265 typedef unsigned long int __ino64_t;
1266 typedef unsigned int __mode_t;
1267 typedef unsigned long int __nlink_t;
1268 typedef long int __off_t;
1269 typedef long int __off64_t;
1270 typedef int __pid_t;
1271 typedef struct { int __val[2]; } __fsid_t;
1272 typedef long int __clock_t;
1273 typedef unsigned long int __rlim_t;
1274 typedef unsigned long int __rlim64_t;
1275 typedef unsigned int __id_t;
1276 typedef long int __time_t;
1277 typedef unsigned int __useconds_t;
1278 typedef long int __suseconds_t;
1279
1280 typedef int __daddr_t;
1281 typedef long int __swblk_t;
1282 typedef int __key_t;
1283
1284
1285 typedef int __clockid_t;
1286
1287
1288 typedef void * __timer_t;
1289
1290
1291 typedef long int __blksize_t;
1292
1293
1294
1295
1296 typedef long int __blkcnt_t;
1297 typedef long int __blkcnt64_t;
1298
1299
1300 typedef unsigned long int __fsblkcnt_t;
1301 typedef unsigned long int __fsblkcnt64_t;
1302
1303
1304 typedef unsigned long int __fsfilcnt_t;
1305 typedef unsigned long int __fsfilcnt64_t;
1306
1307 typedef long int __ssize_t;
1308
1309
1310
1311 typedef __off64_t __loff_t;
1312 typedef __quad_t *__qaddr_t;
1313 typedef char *__caddr_t;
1314
1315
1316 typedef long int __intptr_t;
1317
1318
1319 typedef 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
1325 typedef __u_char u_char;
1326 typedef __u_short u_short;
1327 typedef __u_int u_int;
1328 typedef __u_long u_long;
1329 typedef __quad_t quad_t;
1330 typedef __u_quad_t u_quad_t;
1331 typedef __fsid_t fsid_t;
1332
1333
1334
1335
1336 typedef __loff_t loff_t;
1337
1338
1339
1340 typedef __ino_t ino_t;
1341
1342
1343
1344
1345
1346
1347 typedef __ino64_t ino64_t;
1348
1349
1350
1351
1352 typedef __dev_t dev_t;
1353
1354
1355
1356
1357 typedef __gid_t gid_t;
1358
1359
1360
1361
1362 typedef __mode_t mode_t;
1363
1364
1365
1366
1367 typedef __nlink_t nlink_t;
1368
1369
1370
1371
1372 typedef __uid_t uid_t;
1373
1374
1375
1376
1377
1378 typedef __off_t off_t;
1379
1380
1381
1382
1383
1384
1385 typedef __off64_t off64_t;
1386
1387
1388
1389
1390 typedef __pid_t pid_t;
1391
1392
1393
1394
1395 typedef __id_t id_t;
1396
1397
1398
1399
1400 typedef __ssize_t ssize_t;
1401
1402
1403
1404
1405
1406 typedef __daddr_t daddr_t;
1407 typedef __caddr_t caddr_t;
1408
1409
1410
1411
1412
1413 typedef __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
1430 typedef __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
1440 typedef __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
1449 typedef __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
1455 typedef __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
1461 typedef __useconds_t useconds_t;
1462
1463
1464
1465 typedef __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
1476 typedef unsigned long int ulong;
1477 typedef unsigned short int ushort;
1478 typedef unsigned int uint;
1479 # 195 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1480 typedef int int8_t __attribute__ ((__mode__ (__QI__)));
1481 typedef int int16_t __attribute__ ((__mode__ (__HI__)));
1482 typedef int int32_t __attribute__ ((__mode__ (__SI__)));
1483 typedef int int64_t __attribute__ ((__mode__ (__DI__)));
1484
1485
1486 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
1487 typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
1488 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
1489 typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
1490
1491 typedef 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
1538 typedef int __sig_atomic_t;
1539
1540
1541
1542
1543 typedef 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
1552 typedef __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
1573 struct 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
1596 struct 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
1604 typedef long int __fd_mask;
1605 # 67 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1606 typedef 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
1624 typedef __fd_mask fd_mask;
1625 # 99 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1626 extern "C" {
1627 # 109 "/usr/include/gentoo-multilib/amd64/sys/select.h" 3 4
1628 extern 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
1633 extern 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__
1663 extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
1664      throw ();
1665 __extension__
1666 extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
1667      throw ();
1668 __extension__
1669 extern __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
1675 gnu_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
1681 gnu_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
1687 gnu_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
1699 typedef __blksize_t blksize_t;
1700
1701
1702
1703
1704
1705
1706 typedef __blkcnt_t blkcnt_t;
1707
1708
1709
1710 typedef __fsblkcnt_t fsblkcnt_t;
1711
1712
1713
1714 typedef __fsfilcnt_t fsfilcnt_t;
1715 # 262 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
1716 typedef __blkcnt64_t blkcnt64_t;
1717 typedef __fsblkcnt64_t fsblkcnt64_t;
1718 typedef __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
1746 typedef unsigned long int pthread_t;
1747
1748
1749 typedef union
1750 {
1751   char __size[56];
1752   long int __align;
1753 } pthread_attr_t;
1754
1755
1756
1757 typedef 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
1763 typedef 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
1785 typedef union
1786 {
1787   char __size[4];
1788   int __align;
1789 } pthread_mutexattr_t;
1790
1791
1792
1793
1794 typedef 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
1811 typedef union
1812 {
1813   char __size[4];
1814   int __align;
1815 } pthread_condattr_t;
1816
1817
1818
1819 typedef unsigned int pthread_key_t;
1820
1821
1822
1823 typedef int pthread_once_t;
1824
1825
1826
1827
1828
1829 typedef 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
1853 typedef union
1854 {
1855   char __size[8];
1856   long int __align;
1857 } pthread_rwlockattr_t;
1858
1859
1860
1861
1862
1863 typedef volatile int pthread_spinlock_t;
1864
1865
1866
1867
1868 typedef union
1869 {
1870   char __size[32];
1871   long int __align;
1872 } pthread_barrier_t;
1873
1874 typedef 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
1892 extern long int random (void) throw ();
1893
1894
1895 extern void srandom (unsigned int __seed) throw ();
1896
1897
1898
1899
1900
1901 extern char *initstate (unsigned int __seed, char *__statebuf,
1902    size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
1903
1904
1905
1906 extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
1907
1908
1909
1910
1911
1912
1913
1914 struct 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
1925 extern int random_r (struct random_data *__restrict __buf,
1926        int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
1927
1928 extern int srandom_r (unsigned int __seed, struct random_data *__buf)
1929      throw () __attribute__ ((__nonnull__ (2)));
1930
1931 extern 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
1936 extern int setstate_r (char *__restrict __statebuf,
1937          struct random_data *__restrict __buf)
1938      throw () __attribute__ ((__nonnull__ (1, 2)));
1939
1940
1941
1942
1943
1944
1945 extern int rand (void) throw ();
1946
1947 extern void srand (unsigned int __seed) throw ();
1948
1949
1950
1951
1952 extern int rand_r (unsigned int *__seed) throw ();
1953
1954
1955
1956
1957
1958
1959
1960 extern double drand48 (void) throw ();
1961 extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
1962
1963
1964 extern long int lrand48 (void) throw ();
1965 extern long int nrand48 (unsigned short int __xsubi[3])
1966      throw () __attribute__ ((__nonnull__ (1)));
1967
1968
1969 extern long int mrand48 (void) throw ();
1970 extern long int jrand48 (unsigned short int __xsubi[3])
1971      throw () __attribute__ ((__nonnull__ (1)));
1972
1973
1974 extern void srand48 (long int __seedval) throw ();
1975 extern unsigned short int *seed48 (unsigned short int __seed16v[3])
1976      throw () __attribute__ ((__nonnull__ (1)));
1977 extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
1978
1979
1980
1981
1982
1983 struct 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
1993 extern int drand48_r (struct drand48_data *__restrict __buffer,
1994         double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
1995 extern 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
2000 extern int lrand48_r (struct drand48_data *__restrict __buffer,
2001         long int *__restrict __result)
2002      throw () __attribute__ ((__nonnull__ (1, 2)));
2003 extern 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
2009 extern int mrand48_r (struct drand48_data *__restrict __buffer,
2010         long int *__restrict __result)
2011      throw () __attribute__ ((__nonnull__ (1, 2)));
2012 extern 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
2018 extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
2019      throw () __attribute__ ((__nonnull__ (2)));
2020
2021 extern int seed48_r (unsigned short int __seed16v[3],
2022        struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
2023
2024 extern 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
2036 extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
2037
2038 extern void *calloc (size_t __nmemb, size_t __size)
2039      throw () __attribute__ ((__malloc__)) ;
2040
2041
2042
2043
2044
2045
2046
2047 extern void *realloc (void *__ptr, size_t __size)
2048      throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
2049
2050 extern void free (void *__ptr) throw ();
2051
2052
2053
2054
2055 extern 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
2076 extern "C" {
2077
2078
2079
2080
2081
2082 extern 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
2095 extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
2096
2097
2098
2099
2100 extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
2101      throw () __attribute__ ((__nonnull__ (1))) ;
2102
2103
2104
2105
2106 extern void abort (void) throw () __attribute__ ((__noreturn__));
2107
2108
2109
2110 extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
2111
2112
2113
2114
2115
2116 extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
2117      throw () __attribute__ ((__nonnull__ (1)));
2118
2119
2120
2121
2122
2123
2124 extern void exit (int __status) throw () __attribute__ ((__noreturn__));
2125
2126
2127
2128
2129
2130
2131 extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
2132
2133
2134
2135
2136
2137
2138 extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) ;
2139
2140
2141
2142
2143 extern char *__secure_getenv (__const char *__name)
2144      throw () __attribute__ ((__nonnull__ (1))) ;
2145
2146
2147
2148
2149
2150 extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
2151
2152
2153
2154
2155
2156 extern int setenv (__const char *__name, __const char *__value, int __replace)
2157      throw () __attribute__ ((__nonnull__ (2)));
2158
2159
2160 extern int unsetenv (__const char *__name) throw ();
2161
2162
2163
2164
2165
2166
2167 extern int clearenv (void) throw ();
2168 # 698 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2169 extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
2170 # 709 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2171 extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
2172 # 719 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2173 extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
2174 # 729 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2175 extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
2176
2177
2178
2179
2180
2181
2182
2183
2184 extern int system (__const char *__command) ;
2185
2186
2187
2188
2189
2190
2191 extern char *canonicalize_file_name (__const char *__name)
2192      throw () __attribute__ ((__nonnull__ (1))) ;
2193 # 755 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2194 extern char *realpath (__const char *__restrict __name,
2195          char *__restrict __resolved) throw () ;
2196
2197
2198
2199
2200
2201
2202 typedef int (*__compar_fn_t) (__const void *, __const void *);
2203
2204
2205 typedef __compar_fn_t comparison_fn_t;
2206
2207
2208
2209
2210
2211
2212 extern 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
2218 extern void qsort (void *__base, size_t __nmemb, size_t __size,
2219      __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
2220
2221
2222
2223 extern int abs (int __x) throw () __attribute__ ((__const__)) ;
2224 extern 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
2237 extern div_t div (int __numer, int __denom)
2238      throw () __attribute__ ((__const__)) ;
2239 extern 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
2250 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
2251      int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ;
2252
2253
2254
2255
2256 extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
2257      int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ;
2258
2259
2260
2261
2262 extern char *gcvt (double __value, int __ndigit, char *__buf)
2263      throw () __attribute__ ((__nonnull__ (3))) ;
2264
2265
2266
2267
2268 extern char *qecvt (long double __value, int __ndigit,
2269       int *__restrict __decpt, int *__restrict __sign)
2270      throw () __attribute__ ((__nonnull__ (3, 4))) ;
2271 extern char *qfcvt (long double __value, int __ndigit,
2272       int *__restrict __decpt, int *__restrict __sign)
2273      throw () __attribute__ ((__nonnull__ (3, 4))) ;
2274 extern char *qgcvt (long double __value, int __ndigit, char *__buf)
2275      throw () __attribute__ ((__nonnull__ (3))) ;
2276
2277
2278
2279
2280 extern 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)));
2283 extern 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
2287 extern 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)));
2291 extern 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
2302 extern int mblen (__const char *__s, size_t __n) throw () ;
2303
2304
2305 extern int mbtowc (wchar_t *__restrict __pwc,
2306      __const char *__restrict __s, size_t __n) throw () ;
2307
2308
2309 extern int wctomb (char *__s, wchar_t __wchar) throw () ;
2310
2311
2312
2313 extern size_t mbstowcs (wchar_t *__restrict __pwcs,
2314    __const char *__restrict __s, size_t __n) throw ();
2315
2316 extern 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
2327 extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) ;
2328 # 908 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
2329 extern 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
2338 extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1)));
2339
2340
2341
2342
2343
2344
2345
2346 extern int posix_openpt (int __oflag) ;
2347
2348
2349
2350
2351
2352
2353
2354 extern int grantpt (int __fd) throw ();
2355
2356
2357
2358 extern int unlockpt (int __fd) throw ();
2359
2360
2361
2362
2363 extern char *ptsname (int __fd) throw () ;
2364
2365
2366
2367
2368
2369
2370 extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
2371      throw () __attribute__ ((__nonnull__ (2)));
2372
2373
2374 extern int getpt (void);
2375
2376
2377
2378
2379
2380
2381 extern 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
2388 namespace 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
2434 namespace __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
2467 namespace 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
2521 extern "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
2531 struct _IO_FILE;
2532
2533
2534
2535 typedef struct _IO_FILE FILE;
2536
2537
2538
2539
2540
2541 # 65 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
2542 typedef 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
2572 typedef 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
2600 typedef 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
2612 typedef struct
2613 {
2614   __off_t __pos;
2615   __mbstate_t __state;
2616 } _G_fpos_t;
2617 typedef 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
2662 enum
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
2680 enum
2681 {
2682   __GCONV_IS_LAST = 0x0001,
2683   __GCONV_IGNORE_ERRORS = 0x0002
2684 };
2685
2686
2687
2688 struct __gconv_step;
2689 struct __gconv_step_data;
2690 struct __gconv_loaded_object;
2691 struct __gconv_trans_data;
2692
2693
2694
2695 typedef 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
2700 typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
2701
2702
2703 typedef int (*__gconv_init_fct) (struct __gconv_step *);
2704 typedef void (*__gconv_end_fct) (struct __gconv_step *);
2705
2706
2707
2708 typedef 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
2716 typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
2717        __const unsigned char *,
2718        unsigned char *, unsigned char *);
2719
2720
2721 typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
2722      size_t *);
2723
2724
2725 typedef int (*__gconv_trans_init_fct) (void **, const char *);
2726 typedef void (*__gconv_trans_end_fct) (void *);
2727
2728 struct __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
2740 struct __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
2770 struct __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
2797 typedef 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
2805 typedef 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
2815 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
2816 typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
2817 typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
2818 typedef 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
2824 typedef __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
2827 struct _IO_jump_t; struct _IO_FILE;
2828 # 177 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2829 typedef void _IO_lock_t;
2830
2831
2832
2833
2834
2835 struct _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
2846 enum __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
2854 struct _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
2913 struct _IO_FILE_plus;
2914
2915 extern struct _IO_FILE_plus _IO_2_1_stdin_;
2916 extern struct _IO_FILE_plus _IO_2_1_stdout_;
2917 extern struct _IO_FILE_plus _IO_2_1_stderr_;
2918 # 361 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2919 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
2920
2921
2922
2923
2924
2925
2926
2927 typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
2928      size_t __n);
2929
2930
2931
2932
2933
2934
2935
2936 typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
2937
2938
2939 typedef int __io_close_fn (void *__cookie);
2940
2941
2942
2943
2944 typedef __io_read_fn cookie_read_function_t;
2945 typedef __io_write_fn cookie_write_function_t;
2946 typedef __io_seek_fn cookie_seek_function_t;
2947 typedef __io_close_fn cookie_close_function_t;
2948
2949
2950 typedef 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;
2957 typedef _IO_cookie_io_functions_t cookie_io_functions_t;
2958
2959 struct _IO_cookie_file;
2960
2961
2962 extern 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
2968 extern "C" {
2969
2970
2971 extern int __underflow (_IO_FILE *);
2972 extern int __uflow (_IO_FILE *);
2973 extern int __overflow (_IO_FILE *, int);
2974 extern wint_t __wunderflow (_IO_FILE *);
2975 extern wint_t __wuflow (_IO_FILE *);
2976 extern wint_t __woverflow (_IO_FILE *, wint_t);
2977 # 451 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2978 extern int _IO_getc (_IO_FILE *__fp);
2979 extern int _IO_putc (int __c, _IO_FILE *__fp);
2980 extern int _IO_feof (_IO_FILE *__fp) throw ();
2981 extern int _IO_ferror (_IO_FILE *__fp) throw ();
2982
2983 extern int _IO_peekc_locked (_IO_FILE *__fp);
2984
2985
2986
2987
2988
2989 extern void _IO_flockfile (_IO_FILE *) throw ();
2990 extern void _IO_funlockfile (_IO_FILE *) throw ();
2991 extern int _IO_ftrylockfile (_IO_FILE *) throw ();
2992 # 481 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
2993 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
2994    __gnuc_va_list, int *__restrict);
2995 extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
2996     __gnuc_va_list);
2997 extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
2998 extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
2999
3000 extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
3001 extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
3002
3003 extern 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
3012 typedef __gnuc_va_list va_list;
3013 # 89 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3014
3015
3016 typedef _G_fpos_t fpos_t;
3017
3018
3019
3020
3021
3022 typedef _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
3038 extern struct _IO_FILE *stdin;
3039 extern struct _IO_FILE *stdout;
3040 extern struct _IO_FILE *stderr;
3041
3042
3043
3044
3045
3046
3047
3048 extern int remove (__const char *__filename) throw ();
3049
3050 extern int rename (__const char *__old, __const char *__new) throw ();
3051
3052
3053
3054
3055 extern int renameat (int __oldfd, __const char *__old, int __newfd,
3056        __const char *__new) throw ();
3057
3058
3059
3060
3061
3062
3063
3064
3065 extern FILE *tmpfile (void) ;
3066 # 182 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3067 extern FILE *tmpfile64 (void) ;
3068
3069
3070
3071 extern char *tmpnam (char *__s) throw () ;
3072
3073
3074
3075
3076
3077 extern char *tmpnam_r (char *__s) throw () ;
3078 # 204 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3079 extern char *tempnam (__const char *__dir, __const char *__pfx)
3080      throw () __attribute__ ((__malloc__)) ;
3081
3082
3083
3084
3085
3086
3087
3088
3089 extern int fclose (FILE *__stream);
3090
3091
3092
3093
3094 extern int fflush (FILE *__stream);
3095
3096 # 229 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3097 extern int fflush_unlocked (FILE *__stream);
3098 # 239 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3099 extern int fcloseall (void);
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109 extern FILE *fopen (__const char *__restrict __filename,
3110       __const char *__restrict __modes) ;
3111
3112
3113
3114
3115 extern 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
3121 extern FILE *fopen64 (__const char *__restrict __filename,
3122         __const char *__restrict __modes) ;
3123 extern FILE *freopen64 (__const char *__restrict __filename,
3124    __const char *__restrict __modes,
3125    FILE *__restrict __stream) ;
3126
3127
3128
3129
3130 extern FILE *fdopen (int __fd, __const char *__modes) throw () ;
3131
3132
3133
3134
3135
3136 extern FILE *fopencookie (void *__restrict __magic_cookie,
3137      __const char *__restrict __modes,
3138      _IO_cookie_io_functions_t __io_funcs) throw () ;
3139
3140
3141 extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
3142   throw () ;
3143
3144
3145
3146
3147 extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ;
3148
3149
3150
3151
3152
3153
3154 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
3155
3156
3157
3158 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
3159       int __modes, size_t __n) throw ();
3160
3161
3162
3163
3164
3165 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
3166          size_t __size) throw ();
3167
3168
3169 extern void setlinebuf (FILE *__stream) throw ();
3170
3171
3172
3173
3174
3175
3176
3177
3178 extern int fprintf (FILE *__restrict __stream,
3179       __const char *__restrict __format, ...);
3180
3181
3182
3183
3184 extern int printf (__const char *__restrict __format, ...);
3185
3186 extern int sprintf (char *__restrict __s,
3187       __const char *__restrict __format, ...) throw ();
3188
3189
3190
3191
3192
3193 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
3194        __gnuc_va_list __arg);
3195
3196
3197
3198
3199 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
3200
3201 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
3202        __gnuc_va_list __arg) throw ();
3203
3204
3205
3206
3207
3208 extern int snprintf (char *__restrict __s, size_t __maxlen,
3209        __const char *__restrict __format, ...)
3210      throw () __attribute__ ((__format__ (__printf__, 3, 4)));
3211
3212 extern 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
3221 extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
3222         __gnuc_va_list __arg)
3223      throw () __attribute__ ((__format__ (__printf__, 2, 0))) ;
3224 extern int __asprintf (char **__restrict __ptr,
3225          __const char *__restrict __fmt, ...)
3226      throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
3227 extern int asprintf (char **__restrict __ptr,
3228        __const char *__restrict __fmt, ...)
3229      throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
3230
3231
3232
3233
3234
3235
3236
3237 extern int vdprintf (int __fd, __const char *__restrict __fmt,
3238        __gnuc_va_list __arg)
3239      __attribute__ ((__format__ (__printf__, 2, 0)));
3240 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
3241      __attribute__ ((__format__ (__printf__, 2, 3)));
3242
3243
3244
3245
3246
3247
3248
3249
3250 extern int fscanf (FILE *__restrict __stream,
3251      __const char *__restrict __format, ...) ;
3252
3253
3254
3255
3256 extern int scanf (__const char *__restrict __format, ...) ;
3257
3258 extern int sscanf (__const char *__restrict __s,
3259      __const char *__restrict __format, ...) throw ();
3260
3261
3262
3263
3264
3265
3266
3267
3268 extern 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
3276 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
3277      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
3278
3279
3280 extern 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
3292 extern int fgetc (FILE *__stream);
3293 extern int getc (FILE *__stream);
3294
3295
3296
3297
3298
3299 extern int getchar (void);
3300
3301 # 464 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3302 extern int getc_unlocked (FILE *__stream);
3303 extern int getchar_unlocked (void);
3304 # 475 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3305 extern int fgetc_unlocked (FILE *__stream);
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317 extern int fputc (int __c, FILE *__stream);
3318 extern int putc (int __c, FILE *__stream);
3319
3320
3321
3322
3323
3324 extern int putchar (int __c);
3325
3326 # 508 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3327 extern int fputc_unlocked (int __c, FILE *__stream);
3328
3329
3330
3331
3332
3333
3334
3335 extern int putc_unlocked (int __c, FILE *__stream);
3336 extern int putchar_unlocked (int __c);
3337
3338
3339
3340
3341
3342
3343 extern int getw (FILE *__stream);
3344
3345
3346 extern int putw (int __w, FILE *__stream);
3347
3348
3349
3350
3351
3352
3353
3354
3355 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
3356      ;
3357
3358
3359
3360
3361
3362
3363 extern char *gets (char *__s) ;
3364
3365 # 554 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3366 extern char *fgets_unlocked (char *__restrict __s, int __n,
3367         FILE *__restrict __stream) ;
3368 # 570 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3369 extern __ssize_t __getdelim (char **__restrict __lineptr,
3370           size_t *__restrict __n, int __delimiter,
3371           FILE *__restrict __stream) ;
3372 extern __ssize_t getdelim (char **__restrict __lineptr,
3373         size_t *__restrict __n, int __delimiter,
3374         FILE *__restrict __stream) ;
3375
3376
3377
3378
3379
3380
3381
3382 extern __ssize_t getline (char **__restrict __lineptr,
3383        size_t *__restrict __n,
3384        FILE *__restrict __stream) ;
3385
3386
3387
3388
3389
3390
3391
3392
3393 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
3394
3395
3396
3397
3398
3399 extern int puts (__const char *__s);
3400
3401
3402
3403
3404
3405
3406 extern int ungetc (int __c, FILE *__stream);
3407
3408
3409
3410
3411
3412
3413 extern size_t fread (void *__restrict __ptr, size_t __size,
3414        size_t __n, FILE *__restrict __stream) ;
3415
3416
3417
3418
3419 extern 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
3423 extern int fputs_unlocked (__const char *__restrict __s,
3424       FILE *__restrict __stream);
3425 # 642 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3426 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
3427          size_t __n, FILE *__restrict __stream) ;
3428 extern 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
3438 extern int fseek (FILE *__stream, long int __off, int __whence);
3439
3440
3441
3442
3443 extern long int ftell (FILE *__stream) ;
3444
3445
3446
3447
3448 extern void rewind (FILE *__stream);
3449
3450 # 678 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3451 extern int fseeko (FILE *__stream, __off_t __off, int __whence);
3452
3453
3454
3455
3456 extern __off_t ftello (FILE *__stream) ;
3457 # 697 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3458
3459
3460
3461
3462
3463
3464 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
3465
3466
3467
3468
3469 extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
3470 # 720 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3471
3472
3473
3474 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
3475 extern __off64_t ftello64 (FILE *__stream) ;
3476 extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
3477 extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
3478
3479
3480
3481
3482 extern void clearerr (FILE *__stream) throw ();
3483
3484 extern int feof (FILE *__stream) throw () ;
3485
3486 extern int ferror (FILE *__stream) throw () ;
3487
3488
3489
3490
3491 extern void clearerr_unlocked (FILE *__stream) throw ();
3492 extern int feof_unlocked (FILE *__stream) throw () ;
3493 extern int ferror_unlocked (FILE *__stream) throw () ;
3494
3495
3496
3497
3498
3499
3500
3501
3502 extern 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
3519 extern int sys_nerr;
3520 extern __const char *__const sys_errlist[];
3521
3522
3523 extern int _sys_nerr;
3524 extern __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
3531 extern int fileno (FILE *__stream) throw () ;
3532
3533
3534
3535
3536 extern int fileno_unlocked (FILE *__stream) throw () ;
3537 # 778 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
3538 extern FILE *popen (__const char *__command, __const char *__modes) ;
3539
3540
3541
3542
3543
3544 extern int pclose (FILE *__stream);
3545
3546
3547
3548
3549
3550 extern char *ctermid (char *__s) throw ();
3551
3552
3553
3554
3555
3556 extern char *cuserid (char *__s);
3557
3558
3559
3560
3561 struct obstack;
3562
3563
3564 extern int obstack_printf (struct obstack *__restrict __obstack,
3565       __const char *__restrict __format, ...)
3566      throw () __attribute__ ((__format__ (__printf__, 2, 3)));
3567 extern 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
3578 extern void flockfile (FILE *__stream) throw ();
3579
3580
3581
3582 extern int ftrylockfile (FILE *__stream) throw () ;
3583
3584
3585 extern 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
3597 inline int
3598 vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
3599 {
3600   return vfprintf (stdout, __fmt, __arg);
3601 }
3602
3603
3604 inline int
3605 getchar (void)
3606 {
3607   return _IO_getc (stdin);
3608 }
3609
3610
3611
3612
3613 inline int
3614 fgetc_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
3623 inline int
3624 getc_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
3630 inline int
3631 getchar_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
3639 inline int
3640 putchar (int __c)
3641 {
3642   return _IO_putc (__c, stdout);
3643 }
3644
3645
3646
3647
3648 inline int
3649 fputc_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
3658 inline int
3659 putc_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
3665 inline int
3666 putchar_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
3675 inline __ssize_t
3676 getline (char **__lineptr, size_t *__n, FILE *__stream)
3677 {
3678   return __getdelim (__lineptr, __n, '\n', __stream);
3679 }
3680
3681
3682
3683
3684
3685 inline int
3686 feof_unlocked (FILE *__stream) throw ()
3687 {
3688   return (((__stream)->_flags & 0x10) != 0);
3689 }
3690
3691
3692 inline int
3693 ferror_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
3704 namespace 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
3753 namespace __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
3764 namespace 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
3806 enum
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
3825 extern "C" {
3826 # 51 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
3827
3828
3829
3830 struct 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
3894 extern char *setlocale (int __category, __const char *__locale) throw ();
3895
3896
3897 extern 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
3904 typedef __locale_t locale_t;
3905
3906
3907
3908
3909
3910 extern __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
3913 extern __locale_t duplocale (__locale_t __dataset) throw ();
3914
3915
3916
3917 extern void freelocale (__locale_t __dataset) throw ();
3918
3919
3920
3921
3922
3923
3924 extern __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
3940 namespace 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
3971 extern "C" {
3972
3973
3974 typedef void *nl_catd;
3975
3976
3977 typedef int nl_item;
3978
3979
3980
3981
3982
3983 extern nl_catd catopen (__const char *__cat_name, int __flag) __attribute__ ((__nonnull__ (1)));
3984
3985
3986
3987 extern char *catgets (nl_catd __catalog, int __set, int __number,
3988         __const char *__string) throw () __attribute__ ((__nonnull__ (1)));
3989
3990
3991 extern 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
4010 extern "C" {
4011 # 42 "/usr/include/gentoo-multilib/amd64/langinfo.h" 3 4
4012 enum
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
4538 extern 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
4550 extern 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
4573 extern "C" {
4574
4575
4576 typedef void *iconv_t;
4577
4578
4579
4580
4581
4582
4583
4584 extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
4585
4586
4587
4588
4589 extern 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
4598 extern 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
4616 extern "C" {
4617
4618
4619
4620
4621 extern char *gettext (__const char *__msgid)
4622      throw () __attribute__ ((__format_arg__ (1)));
4623
4624
4625
4626 extern char *dgettext (__const char *__domainname, __const char *__msgid)
4627      throw () __attribute__ ((__format_arg__ (2)));
4628 extern char *__dgettext (__const char *__domainname, __const char *__msgid)
4629      throw () __attribute__ ((__format_arg__ (2)));
4630
4631
4632
4633 extern char *dcgettext (__const char *__domainname,
4634    __const char *__msgid, int __category)
4635      throw () __attribute__ ((__format_arg__ (2)));
4636 extern char *__dcgettext (__const char *__domainname,
4637      __const char *__msgid, int __category)
4638      throw () __attribute__ ((__format_arg__ (2)));
4639
4640
4641
4642
4643 extern 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
4649 extern 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
4655 extern 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
4664 extern char *textdomain (__const char *__domainname) throw ();
4665
4666
4667
4668 extern char *bindtextdomain (__const char *__domainname,
4669         __const char *__dirname) throw ();
4670
4671
4672
4673 extern 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
4693 namespace 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
4705 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
4706
4707   extern "C" __typeof(uselocale) __uselocale;
4708
4709 }
4710
4711
4712 namespace 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
4818 struct sched_param
4819   {
4820     int __sched_priority;
4821   };
4822
4823 extern "C" {
4824
4825
4826
4827 extern int clone (int (*__fn) (void *__arg), void *__child_stack,
4828     int __flags, void *__arg, ...) throw ();
4829
4830
4831 extern int unshare (int __flags) throw ();
4832
4833
4834 extern int sched_getcpu (void) throw ();
4835
4836
4837 }
4838
4839
4840
4841
4842
4843
4844
4845 struct __sched_param
4846   {
4847     int __sched_priority;
4848   };
4849 # 108 "/usr/include/gentoo-multilib/amd64/bits/sched.h" 3 4
4850 typedef unsigned long int __cpu_mask;
4851
4852
4853
4854
4855
4856
4857 typedef 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
4862 extern 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
4869 extern "C" {
4870
4871
4872 extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
4873      throw ();
4874
4875
4876 extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
4877
4878
4879 extern int sched_setscheduler (__pid_t __pid, int __policy,
4880           __const struct sched_param *__param) throw ();
4881
4882
4883 extern int sched_getscheduler (__pid_t __pid) throw ();
4884
4885
4886 extern int sched_yield (void) throw ();
4887
4888
4889 extern int sched_get_priority_max (int __algorithm) throw ();
4890
4891
4892 extern int sched_get_priority_min (int __algorithm) throw ();
4893
4894
4895 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
4896 # 77 "/usr/include/gentoo-multilib/amd64/sched.h" 3 4
4897 extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
4898          __const cpu_set_t *__cpuset) throw ();
4899
4900
4901 extern 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
4921 extern "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
4948 struct 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
4976 struct itimerspec
4977   {
4978     struct timespec it_interval;
4979     struct timespec it_value;
4980   };
4981
4982
4983 struct sigevent;
4984 # 181 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
4985
4986
4987
4988 extern clock_t clock (void) throw ();
4989
4990
4991 extern time_t time (time_t *__timer) throw ();
4992
4993
4994 extern double difftime (time_t __time1, time_t __time0)
4995      throw () __attribute__ ((__const__));
4996
4997
4998 extern time_t mktime (struct tm *__tp) throw ();
4999
5000
5001
5002
5003
5004 extern 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
5012 extern 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
5023 extern 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
5028 extern 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
5037 extern struct tm *gmtime (__const time_t *__timer) throw ();
5038
5039
5040
5041 extern struct tm *localtime (__const time_t *__timer) throw ();
5042
5043
5044
5045
5046
5047 extern struct tm *gmtime_r (__const time_t *__restrict __timer,
5048        struct tm *__restrict __tp) throw ();
5049
5050
5051
5052 extern struct tm *localtime_r (__const time_t *__restrict __timer,
5053           struct tm *__restrict __tp) throw ();
5054
5055
5056
5057
5058
5059 extern char *asctime (__const struct tm *__tp) throw ();
5060
5061
5062 extern char *ctime (__const time_t *__timer) throw ();
5063
5064
5065
5066
5067
5068
5069
5070 extern char *asctime_r (__const struct tm *__restrict __tp,
5071    char *__restrict __buf) throw ();
5072
5073
5074 extern char *ctime_r (__const time_t *__restrict __timer,
5075         char *__restrict __buf) throw ();
5076
5077
5078
5079
5080 extern char *__tzname[2];
5081 extern int __daylight;
5082 extern long int __timezone;
5083
5084
5085
5086
5087 extern char *tzname[2];
5088
5089
5090
5091 extern void tzset (void) throw ();
5092
5093
5094
5095 extern int daylight;
5096 extern long int timezone;
5097
5098
5099
5100
5101
5102 extern int stime (__const time_t *__when) throw ();
5103 # 312 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5104 extern time_t timegm (struct tm *__tp) throw ();
5105
5106
5107 extern time_t timelocal (struct tm *__tp) throw ();
5108
5109
5110 extern int dysize (int __year) throw () __attribute__ ((__const__));
5111 # 327 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5112 extern int nanosleep (__const struct timespec *__requested_time,
5113         struct timespec *__remaining);
5114
5115
5116
5117 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
5118
5119
5120 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
5121
5122
5123 extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
5124      throw ();
5125
5126
5127
5128
5129
5130
5131 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
5132        __const struct timespec *__req,
5133        struct timespec *__rem);
5134
5135
5136 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
5137
5138
5139
5140
5141 extern int timer_create (clockid_t __clock_id,
5142     struct sigevent *__restrict __evp,
5143     timer_t *__restrict __timerid) throw ();
5144
5145
5146 extern int timer_delete (timer_t __timerid) throw ();
5147
5148
5149 extern int timer_settime (timer_t __timerid, int __flags,
5150      __const struct itimerspec *__restrict __value,
5151      struct itimerspec *__restrict __ovalue) throw ();
5152
5153
5154 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
5155      throw ();
5156
5157
5158 extern int timer_getoverrun (timer_t __timerid) throw ();
5159 # 389 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5160 extern int getdate_err;
5161 # 398 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5162 extern struct tm *getdate (__const char *__string);
5163 # 412 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
5164 extern 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
5186 extern "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
5230 typedef 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
5247 enum
5248 {
5249   PTHREAD_CREATE_JOINABLE,
5250
5251   PTHREAD_CREATE_DETACHED
5252
5253 };
5254
5255
5256
5257 enum
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
5279 enum
5280 {
5281   PTHREAD_MUTEX_STALLED_NP,
5282   PTHREAD_MUTEX_ROBUST_NP
5283 };
5284
5285
5286
5287
5288
5289 enum
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
5296 enum
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
5304 enum
5305 {
5306   PTHREAD_INHERIT_SCHED,
5307
5308   PTHREAD_EXPLICIT_SCHED
5309
5310 };
5311
5312
5313
5314 enum
5315 {
5316   PTHREAD_SCOPE_SYSTEM,
5317
5318   PTHREAD_SCOPE_PROCESS
5319
5320 };
5321
5322
5323
5324 enum
5325 {
5326   PTHREAD_PROCESS_PRIVATE,
5327
5328   PTHREAD_PROCESS_SHARED
5329
5330 };
5331 # 179 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5332 struct _pthread_cleanup_buffer
5333 {
5334   void (*__routine) (void *);
5335   void *__arg;
5336   int __canceltype;
5337   struct _pthread_cleanup_buffer *__prev;
5338 };
5339
5340
5341 enum
5342 {
5343   PTHREAD_CANCEL_ENABLE,
5344
5345   PTHREAD_CANCEL_DISABLE
5346
5347 };
5348 enum
5349 {
5350   PTHREAD_CANCEL_DEFERRED,
5351
5352   PTHREAD_CANCEL_ASYNCHRONOUS
5353
5354 };
5355 # 217 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
5356 extern "C" {
5357
5358
5359
5360
5361 extern 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
5370 extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
5371
5372
5373
5374
5375
5376
5377
5378 extern int pthread_join (pthread_t __th, void **__thread_return);
5379
5380
5381
5382
5383 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();
5384
5385
5386
5387
5388
5389
5390
5391 extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
5392      __const struct timespec *__abstime);
5393
5394
5395
5396
5397
5398
5399 extern int pthread_detach (pthread_t __th) throw ();
5400
5401
5402
5403 extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));
5404
5405
5406 extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();
5407
5408
5409
5410
5411
5412
5413
5414 extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));
5415
5416
5417 extern int pthread_attr_destroy (pthread_attr_t *__attr)
5418      throw () __attribute__ ((__nonnull__ (1)));
5419
5420
5421 extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
5422      int *__detachstate)
5423      throw () __attribute__ ((__nonnull__ (1, 2)));
5424
5425
5426 extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
5427      int __detachstate)
5428      throw () __attribute__ ((__nonnull__ (1)));
5429
5430
5431
5432 extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
5433           size_t *__guardsize)
5434      throw () __attribute__ ((__nonnull__ (1, 2)));
5435
5436
5437 extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
5438           size_t __guardsize)
5439      throw () __attribute__ ((__nonnull__ (1)));
5440
5441
5442
5443 extern 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
5449 extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
5450            __const struct sched_param *__restrict
5451            __param) throw () __attribute__ ((__nonnull__ (1, 2)));
5452
5453
5454 extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
5455      __attr, int *__restrict __policy)
5456      throw () __attribute__ ((__nonnull__ (1, 2)));
5457
5458
5459 extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
5460      throw () __attribute__ ((__nonnull__ (1)));
5461
5462
5463 extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
5464       __attr, int *__restrict __inherit)
5465      throw () __attribute__ ((__nonnull__ (1, 2)));
5466
5467
5468 extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
5469       int __inherit)
5470      throw () __attribute__ ((__nonnull__ (1)));
5471
5472
5473
5474 extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
5475       int *__restrict __scope)
5476      throw () __attribute__ ((__nonnull__ (1, 2)));
5477
5478
5479 extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
5480      throw () __attribute__ ((__nonnull__ (1)));
5481
5482
5483 extern 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
5491 extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
5492           void *__stackaddr)
5493      throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
5494
5495
5496 extern 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
5503 extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
5504           size_t __stacksize)
5505      throw () __attribute__ ((__nonnull__ (1)));
5506
5507
5508
5509 extern 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
5517 extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
5518       size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));
5519
5520
5521
5522
5523
5524 extern 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
5531 extern 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
5540 extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
5541      throw () __attribute__ ((__nonnull__ (2)));
5542
5543
5544
5545
5546
5547
5548
5549 extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
5550       __const struct sched_param *__param)
5551      throw () __attribute__ ((__nonnull__ (3)));
5552
5553
5554 extern 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
5560 extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
5561      throw ();
5562
5563
5564
5565
5566 extern int pthread_getconcurrency (void) throw ();
5567
5568
5569 extern int pthread_setconcurrency (int __level) throw ();
5570
5571
5572
5573
5574
5575
5576
5577 extern int pthread_yield (void) throw ();
5578
5579
5580
5581
5582 extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
5583        __const cpu_set_t *__cpuset)
5584      throw () __attribute__ ((__nonnull__ (3)));
5585
5586
5587 extern 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
5591 extern 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
5594 extern int pthread_setcancelstate (int __state, int *__oldstate);
5595
5596
5597
5598 extern int pthread_setcanceltype (int __type, int *__oldtype);
5599
5600
5601 extern int pthread_cancel (pthread_t __th);
5602
5603
5604
5605
5606 extern void pthread_testcancel (void);
5607
5608
5609
5610
5611 typedef 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
5621 struct __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
5632 class __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
5649 struct __jmp_buf_tag;
5650 extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw ();
5651
5652
5653
5654
5655
5656 extern int pthread_mutex_init (pthread_mutex_t *__mutex,
5657           __const pthread_mutexattr_t *__mutexattr)
5658      throw () __attribute__ ((__nonnull__ (1)));
5659
5660
5661 extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
5662      throw () __attribute__ ((__nonnull__ (1)));
5663
5664
5665 extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
5666      throw () __attribute__ ((__nonnull__ (1)));
5667
5668
5669 extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
5670      throw () __attribute__ ((__nonnull__ (1)));
5671
5672
5673
5674 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
5675                                     __const struct timespec *__restrict
5676                                     __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
5677
5678
5679
5680 extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
5681      throw () __attribute__ ((__nonnull__ (1)));
5682
5683
5684
5685
5686 extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
5687       __restrict __mutex,
5688       int *__restrict __prioceiling)
5689      throw () __attribute__ ((__nonnull__ (1, 2)));
5690
5691
5692
5693 extern 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
5702 extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
5703      throw () __attribute__ ((__nonnull__ (1)));
5704
5705
5706
5707
5708
5709
5710
5711 extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
5712      throw () __attribute__ ((__nonnull__ (1)));
5713
5714
5715 extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
5716      throw () __attribute__ ((__nonnull__ (1)));
5717
5718
5719 extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
5720       __restrict __attr,
5721       int *__restrict __pshared)
5722      throw () __attribute__ ((__nonnull__ (1, 2)));
5723
5724
5725 extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
5726       int __pshared)
5727      throw () __attribute__ ((__nonnull__ (1)));
5728
5729
5730
5731 extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
5732           __attr, int *__restrict __kind)
5733      throw () __attribute__ ((__nonnull__ (1, 2)));
5734
5735
5736
5737
5738 extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
5739      throw () __attribute__ ((__nonnull__ (1)));
5740
5741
5742 extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
5743        __restrict __attr,
5744        int *__restrict __protocol)
5745      throw () __attribute__ ((__nonnull__ (1, 2)));
5746
5747
5748
5749 extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
5750        int __protocol)
5751      throw () __attribute__ ((__nonnull__ (1)));
5752
5753
5754 extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
5755           __restrict __attr,
5756           int *__restrict __prioceiling)
5757      throw () __attribute__ ((__nonnull__ (1, 2)));
5758
5759
5760 extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
5761           int __prioceiling)
5762      throw () __attribute__ ((__nonnull__ (1)));
5763
5764
5765
5766
5767 extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
5768         int *__robustness)
5769      throw () __attribute__ ((__nonnull__ (1, 2)));
5770
5771
5772 extern 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
5776 extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
5777     __const pthread_rwlockattr_t *__restrict
5778     __attr) throw () __attribute__ ((__nonnull__ (1)));
5779
5780
5781 extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
5782      throw () __attribute__ ((__nonnull__ (1)));
5783
5784
5785 extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
5786      throw () __attribute__ ((__nonnull__ (1)));
5787
5788
5789 extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
5790   throw () __attribute__ ((__nonnull__ (1)));
5791
5792
5793
5794 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
5795            __const struct timespec *__restrict
5796            __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
5797
5798
5799
5800 extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
5801      throw () __attribute__ ((__nonnull__ (1)));
5802
5803
5804 extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
5805      throw () __attribute__ ((__nonnull__ (1)));
5806
5807
5808
5809 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
5810            __const struct timespec *__restrict
5811            __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
5812
5813
5814
5815 extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
5816      throw () __attribute__ ((__nonnull__ (1)));
5817
5818
5819
5820
5821
5822 extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
5823      throw () __attribute__ ((__nonnull__ (1)));
5824
5825
5826 extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
5827      throw () __attribute__ ((__nonnull__ (1)));
5828
5829
5830 extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
5831        __restrict __attr,
5832        int *__restrict __pshared)
5833      throw () __attribute__ ((__nonnull__ (1, 2)));
5834
5835
5836 extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
5837        int __pshared)
5838      throw () __attribute__ ((__nonnull__ (1)));
5839
5840
5841 extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
5842        __restrict __attr,
5843        int *__restrict __pref)
5844      throw () __attribute__ ((__nonnull__ (1, 2)));
5845
5846
5847 extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
5848        int __pref) throw () __attribute__ ((__nonnull__ (1)));
5849
5850
5851
5852
5853
5854
5855
5856 extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
5857          __const pthread_condattr_t *__restrict
5858          __cond_attr) throw () __attribute__ ((__nonnull__ (1)));
5859
5860
5861 extern int pthread_cond_destroy (pthread_cond_t *__cond)
5862      throw () __attribute__ ((__nonnull__ (1)));
5863
5864
5865 extern int pthread_cond_signal (pthread_cond_t *__cond)
5866      throw () __attribute__ ((__nonnull__ (1)));
5867
5868
5869 extern int pthread_cond_broadcast (pthread_cond_t *__cond)
5870      throw () __attribute__ ((__nonnull__ (1)));
5871
5872
5873
5874
5875
5876
5877 extern 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
5881 extern 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
5889 extern int pthread_condattr_init (pthread_condattr_t *__attr)
5890      throw () __attribute__ ((__nonnull__ (1)));
5891
5892
5893 extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
5894      throw () __attribute__ ((__nonnull__ (1)));
5895
5896
5897 extern int pthread_condattr_getpshared (__const pthread_condattr_t *
5898                                         __restrict __attr,
5899                                         int *__restrict __pshared)
5900      throw () __attribute__ ((__nonnull__ (1, 2)));
5901
5902
5903 extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
5904                                         int __pshared) throw () __attribute__ ((__nonnull__ (1)));
5905
5906
5907
5908 extern 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
5914 extern 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
5918 extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
5919      throw () __attribute__ ((__nonnull__ (1)));
5920
5921
5922 extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
5923      throw () __attribute__ ((__nonnull__ (1)));
5924
5925
5926 extern int pthread_spin_lock (pthread_spinlock_t *__lock)
5927      throw () __attribute__ ((__nonnull__ (1)));
5928
5929
5930 extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
5931      throw () __attribute__ ((__nonnull__ (1)));
5932
5933
5934 extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
5935      throw () __attribute__ ((__nonnull__ (1)));
5936
5937
5938
5939
5940
5941
5942 extern 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
5948 extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
5949      throw () __attribute__ ((__nonnull__ (1)));
5950
5951
5952 extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
5953      throw () __attribute__ ((__nonnull__ (1)));
5954
5955
5956
5957 extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
5958      throw () __attribute__ ((__nonnull__ (1)));
5959
5960
5961 extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
5962      throw () __attribute__ ((__nonnull__ (1)));
5963
5964
5965 extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
5966         __restrict __attr,
5967         int *__restrict __pshared)
5968      throw () __attribute__ ((__nonnull__ (1, 2)));
5969
5970
5971 extern 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
5975 extern int pthread_key_create (pthread_key_t *__key,
5976           void (*__destr_function) (void *))
5977      throw () __attribute__ ((__nonnull__ (1)));
5978
5979
5980 extern int pthread_key_delete (pthread_key_t __key) throw ();
5981
5982
5983 extern void *pthread_getspecific (pthread_key_t __key) throw ();
5984
5985
5986 extern int pthread_setspecific (pthread_key_t __key,
5987     __const void *__pointer) throw () ;
5988
5989
5990
5991
5992 extern 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
5996 extern int pthread_atfork (void (*__prepare) (void),
5997       void (*__parent) (void),
5998       void (*__child) (void)) throw ();
5999
6000
6001
6002
6003 extern __inline int
6004 pthread_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
6026 extern "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
6072 typedef __intptr_t intptr_t;
6073
6074
6075
6076
6077
6078
6079 typedef __socklen_t socklen_t;
6080 # 258 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6081 extern int access (__const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1)));
6082
6083
6084
6085
6086 extern int euidaccess (__const char *__name, int __type)
6087      throw () __attribute__ ((__nonnull__ (1)));
6088
6089
6090 extern int eaccess (__const char *__name, int __type)
6091      throw () __attribute__ ((__nonnull__ (1)));
6092
6093
6094
6095
6096
6097
6098 extern 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
6101 extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw ();
6102 # 312 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6103 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
6104      throw ();
6105
6106
6107
6108
6109
6110
6111 extern int close (int __fd);
6112
6113
6114
6115
6116
6117
6118 extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
6119
6120
6121
6122
6123
6124 extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
6125 # 343 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6126 extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
6127         __off_t __offset) ;
6128
6129
6130
6131
6132
6133
6134 extern 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
6137 extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
6138    __off64_t __offset) ;
6139
6140
6141 extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
6142     __off64_t __offset) ;
6143
6144
6145
6146
6147
6148
6149
6150 extern int pipe (int __pipedes[2]) throw () ;
6151 # 393 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6152 extern unsigned int alarm (unsigned int __seconds) throw ();
6153 # 405 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6154 extern unsigned int sleep (unsigned int __seconds);
6155
6156
6157
6158
6159
6160
6161 extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
6162      throw ();
6163
6164
6165
6166
6167
6168
6169 extern int usleep (__useconds_t __useconds);
6170 # 429 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6171 extern int pause (void);
6172
6173
6174
6175 extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
6176      throw () __attribute__ ((__nonnull__ (1))) ;
6177
6178
6179
6180 extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () ;
6181
6182
6183
6184
6185 extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
6186      throw () __attribute__ ((__nonnull__ (1))) ;
6187
6188
6189
6190
6191
6192
6193 extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
6194        __gid_t __group, int __flag)
6195      throw () __attribute__ ((__nonnull__ (2))) ;
6196
6197
6198
6199 extern int chdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
6200
6201
6202
6203 extern int fchdir (int __fd) throw () ;
6204 # 471 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6205 extern char *getcwd (char *__buf, size_t __size) throw () ;
6206
6207
6208
6209
6210
6211 extern char *get_current_dir_name (void) throw ();
6212
6213
6214
6215
6216
6217
6218 extern char *getwd (char *__buf)
6219      throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
6220
6221
6222
6223
6224 extern int dup (int __fd) throw () ;
6225
6226
6227 extern int dup2 (int __fd, int __fd2) throw ();
6228
6229
6230 extern char **__environ;
6231
6232 extern char **environ;
6233
6234
6235
6236
6237
6238 extern int execve (__const char *__path, char *__const __argv[],
6239      char *__const __envp[]) throw () __attribute__ ((__nonnull__ (1)));
6240
6241
6242
6243
6244 extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
6245      throw ();
6246
6247
6248
6249
6250 extern int execv (__const char *__path, char *__const __argv[])
6251      throw () __attribute__ ((__nonnull__ (1)));
6252
6253
6254
6255 extern int execle (__const char *__path, __const char *__arg, ...)
6256      throw () __attribute__ ((__nonnull__ (1)));
6257
6258
6259
6260 extern int execl (__const char *__path, __const char *__arg, ...)
6261      throw () __attribute__ ((__nonnull__ (1)));
6262
6263
6264
6265 extern int execvp (__const char *__file, char *__const __argv[])
6266      throw () __attribute__ ((__nonnull__ (1)));
6267
6268
6269
6270
6271 extern int execlp (__const char *__file, __const char *__arg, ...)
6272      throw () __attribute__ ((__nonnull__ (1)));
6273
6274
6275
6276
6277 extern int nice (int __inc) throw () ;
6278
6279
6280
6281
6282 extern 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
6298 enum
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
6345 enum
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
6778 enum
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
6878 extern long int pathconf (__const char *__path, int __name)
6879      throw () __attribute__ ((__nonnull__ (1)));
6880
6881
6882 extern long int fpathconf (int __fd, int __name) throw ();
6883
6884
6885 extern long int sysconf (int __name) throw ();
6886
6887
6888
6889 extern size_t confstr (int __name, char *__buf, size_t __len) throw ();
6890
6891
6892
6893
6894 extern __pid_t getpid (void) throw ();
6895
6896
6897 extern __pid_t getppid (void) throw ();
6898
6899
6900
6901
6902 extern __pid_t getpgrp (void) throw ();
6903 # 591 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6904 extern __pid_t __getpgid (__pid_t __pid) throw ();
6905
6906 extern __pid_t getpgid (__pid_t __pid) throw ();
6907
6908
6909
6910
6911
6912
6913 extern int setpgid (__pid_t __pid, __pid_t __pgid) throw ();
6914 # 617 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6915 extern int setpgrp (void) throw ();
6916 # 634 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
6917 extern __pid_t setsid (void) throw ();
6918
6919
6920
6921 extern __pid_t getsid (__pid_t __pid) throw ();
6922
6923
6924
6925 extern __uid_t getuid (void) throw ();
6926
6927
6928 extern __uid_t geteuid (void) throw ();
6929
6930
6931 extern __gid_t getgid (void) throw ();
6932
6933
6934 extern __gid_t getegid (void) throw ();
6935
6936
6937
6938
6939 extern int getgroups (int __size, __gid_t __list[]) throw () ;
6940
6941
6942
6943 extern int group_member (__gid_t __gid) throw ();
6944
6945
6946
6947
6948
6949
6950 extern int setuid (__uid_t __uid) throw ();
6951
6952
6953
6954
6955 extern int setreuid (__uid_t __ruid, __uid_t __euid) throw ();
6956
6957
6958
6959
6960 extern int seteuid (__uid_t __uid) throw ();
6961
6962
6963
6964
6965
6966
6967 extern int setgid (__gid_t __gid) throw ();
6968
6969
6970
6971
6972 extern int setregid (__gid_t __rgid, __gid_t __egid) throw ();
6973
6974
6975
6976
6977 extern int setegid (__gid_t __gid) throw ();
6978
6979
6980
6981
6982
6983 extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
6984      throw ();
6985
6986
6987
6988 extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
6989      throw ();
6990
6991
6992
6993 extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
6994      throw ();
6995
6996
6997
6998 extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
6999      throw ();
7000
7001
7002
7003
7004
7005
7006 extern __pid_t fork (void) throw ();
7007
7008
7009
7010
7011
7012
7013 extern __pid_t vfork (void) throw ();
7014
7015
7016
7017
7018
7019 extern char *ttyname (int __fd) throw ();
7020
7021
7022
7023 extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
7024      throw () __attribute__ ((__nonnull__ (2))) ;
7025
7026
7027
7028 extern int isatty (int __fd) throw ();
7029
7030
7031
7032
7033
7034 extern int ttyslot (void) throw ();
7035
7036
7037
7038
7039 extern int link (__const char *__from, __const char *__to)
7040      throw () __attribute__ ((__nonnull__ (1, 2))) ;
7041
7042
7043
7044
7045 extern 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
7052 extern int symlink (__const char *__from, __const char *__to)
7053      throw () __attribute__ ((__nonnull__ (1, 2))) ;
7054
7055
7056
7057
7058 extern ssize_t readlink (__const char *__restrict __path,
7059     char *__restrict __buf, size_t __len)
7060      throw () __attribute__ ((__nonnull__ (1, 2))) ;
7061
7062
7063
7064
7065 extern int symlinkat (__const char *__from, int __tofd,
7066         __const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) ;
7067
7068
7069 extern 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
7075 extern int unlink (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
7076
7077
7078
7079 extern int unlinkat (int __fd, __const char *__name, int __flag)
7080      throw () __attribute__ ((__nonnull__ (2)));
7081
7082
7083
7084 extern int rmdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1)));
7085
7086
7087
7088 extern __pid_t tcgetpgrp (int __fd) throw ();
7089
7090
7091 extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw ();
7092
7093
7094
7095
7096
7097
7098 extern char *getlogin (void);
7099
7100
7101
7102
7103
7104
7105
7106 extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
7107
7108
7109
7110
7111 extern 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
7123 extern "C" {
7124 # 59 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7125 extern char *optarg;
7126 # 73 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7127 extern int optind;
7128
7129
7130
7131
7132 extern int opterr;
7133
7134
7135
7136 extern int optopt;
7137 # 152 "/usr/include/gentoo-multilib/amd64/getopt.h" 3 4
7138 extern 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
7151 extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
7152
7153
7154
7155
7156
7157
7158 extern int sethostname (__const char *__name, size_t __len)
7159      throw () __attribute__ ((__nonnull__ (1))) ;
7160
7161
7162
7163 extern int sethostid (long int __id) throw () ;
7164
7165
7166
7167
7168
7169 extern int getdomainname (char *__name, size_t __len)
7170      throw () __attribute__ ((__nonnull__ (1))) ;
7171 extern int setdomainname (__const char *__name, size_t __len)
7172      throw () __attribute__ ((__nonnull__ (1))) ;
7173
7174
7175
7176
7177
7178 extern int vhangup (void) throw ();
7179
7180
7181 extern int revoke (__const char *__file) throw () __attribute__ ((__nonnull__ (1))) ;
7182
7183
7184
7185
7186
7187
7188
7189 extern 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
7197 extern int acct (__const char *__name) throw ();
7198
7199
7200
7201 extern char *getusershell (void) throw ();
7202 extern void endusershell (void) throw ();
7203 extern void setusershell (void) throw ();
7204
7205
7206
7207
7208
7209 extern int daemon (int __nochdir, int __noclose) throw () ;
7210
7211
7212
7213
7214
7215
7216 extern int chroot (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
7217
7218
7219
7220 extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
7221 # 923 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7222 extern int fsync (int __fd);
7223
7224
7225
7226
7227
7228
7229 extern long int gethostid (void);
7230
7231
7232 extern void sync (void) throw ();
7233
7234
7235
7236
7237 extern int getpagesize (void) throw () __attribute__ ((__const__));
7238
7239
7240
7241
7242 extern int getdtablesize (void) throw ();
7243
7244
7245
7246
7247 extern int truncate (__const char *__file, __off_t __length)
7248      throw () __attribute__ ((__nonnull__ (1))) ;
7249 # 960 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7250 extern int truncate64 (__const char *__file, __off64_t __length)
7251      throw () __attribute__ ((__nonnull__ (1))) ;
7252 # 970 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7253 extern int ftruncate (int __fd, __off_t __length) throw () ;
7254 # 980 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7255 extern int ftruncate64 (int __fd, __off64_t __length) throw () ;
7256 # 990 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7257 extern int brk (void *__addr) throw () ;
7258
7259
7260
7261
7262
7263 extern void *sbrk (intptr_t __delta) throw ();
7264 # 1011 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7265 extern long int syscall (long int __sysno, ...) throw ();
7266 # 1034 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7267 extern int lockf (int __fd, int __cmd, __off_t __len) ;
7268 # 1044 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7269 extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
7270 # 1065 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
7271 extern int fdatasync (int __fildes);
7272
7273
7274
7275
7276
7277
7278
7279 extern char *crypt (__const char *__key, __const char *__salt)
7280      throw () __attribute__ ((__nonnull__ (1, 2)));
7281
7282
7283
7284 extern void encrypt (char *__block, int __edflag) throw () __attribute__ ((__nonnull__ (1)));
7285
7286
7287
7288
7289
7290
7291 extern 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
7300 extern 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
7306 typedef pthread_key_t __gthread_key_t;
7307 typedef pthread_once_t __gthread_once_t;
7308 typedef pthread_mutex_t __gthread_mutex_t;
7309 typedef 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
7311 static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
7312 static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
7313 static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
7314 static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
7315 static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
7316 static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
7317 static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
7318 static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
7319 static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
7320
7321
7322 static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
7323 static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
7324 static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
7325 static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
7326 static __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
7328 static 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
7336 static 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
7345 static inline int
7346 __gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
7347 {
7348   return __gthrw_pthread_key_create (key, dtor);
7349 }
7350
7351 static inline int
7352 __gthread_key_delete (__gthread_key_t key)
7353 {
7354   return __gthrw_pthread_key_delete (key);
7355 }
7356
7357 static inline void *
7358 __gthread_getspecific (__gthread_key_t key)
7359 {
7360   return __gthrw_pthread_getspecific (key);
7361 }
7362
7363 static inline int
7364 __gthread_setspecific (__gthread_key_t key, const void *ptr)
7365 {
7366   return __gthrw_pthread_setspecific (key, ptr);
7367 }
7368
7369 static 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
7378 static 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
7387 static 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
7396 static inline int
7397 __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
7398 {
7399   return __gthread_mutex_lock (mutex);
7400 }
7401
7402 static inline int
7403 __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex)
7404 {
7405   return __gthread_mutex_trylock (mutex);
7406 }
7407
7408 static 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
7424 namespace 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
7454 extern "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
7464 enum
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
7480 extern __const unsigned short int **__ctype_b_loc (void)
7481      __attribute__ ((__const));
7482 extern __const __int32_t **__ctype_tolower_loc (void)
7483      __attribute__ ((__const));
7484 extern __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
7493 extern int isalnum (int) throw ();
7494 extern int isalpha (int) throw ();
7495 extern int iscntrl (int) throw ();
7496 extern int isdigit (int) throw ();
7497 extern int islower (int) throw ();
7498 extern int isgraph (int) throw ();
7499 extern int isprint (int) throw ();
7500 extern int ispunct (int) throw ();
7501 extern int isspace (int) throw ();
7502 extern int isupper (int) throw ();
7503 extern int isxdigit (int) throw ();
7504
7505
7506
7507 extern int tolower (int __c) throw ();
7508
7509
7510 extern int toupper (int __c) throw ();
7511
7512
7513
7514
7515
7516
7517
7518
7519 extern int isblank (int) throw ();
7520
7521
7522
7523
7524
7525
7526 extern int isctype (int __c, int __mask) throw ();
7527
7528
7529
7530
7531
7532
7533 extern int isascii (int __c) throw ();
7534
7535
7536
7537 extern int toascii (int __c) throw ();
7538
7539
7540
7541 extern int _toupper (int) throw ();
7542 extern 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
7547 extern int isalnum_l (int, __locale_t) throw ();
7548 extern int isalpha_l (int, __locale_t) throw ();
7549 extern int iscntrl_l (int, __locale_t) throw ();
7550 extern int isdigit_l (int, __locale_t) throw ();
7551 extern int islower_l (int, __locale_t) throw ();
7552 extern int isgraph_l (int, __locale_t) throw ();
7553 extern int isprint_l (int, __locale_t) throw ();
7554 extern int ispunct_l (int, __locale_t) throw ();
7555 extern int isspace_l (int, __locale_t) throw ();
7556 extern int isupper_l (int, __locale_t) throw ();
7557 extern int isxdigit_l (int, __locale_t) throw ();
7558
7559 extern int isblank_l (int, __locale_t) throw ();
7560
7561
7562
7563 extern int __tolower_l (int __c, __locale_t __l) throw ();
7564 extern int tolower_l (int __c, __locale_t __l) throw ();
7565
7566
7567 extern int __toupper_l (int __c, __locale_t __l) throw ();
7568 extern 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
7574 namespace 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
7614 namespace 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
7658 typedef __mbstate_t mbstate_t;
7659
7660
7661
7662 # 118 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
7663 extern "C" {
7664
7665
7666
7667
7668 struct tm;
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678 extern wchar_t *wcscpy (wchar_t *__restrict __dest,
7679    __const wchar_t *__restrict __src) throw ();
7680
7681 extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
7682     __const wchar_t *__restrict __src, size_t __n)
7683      throw ();
7684
7685
7686 extern wchar_t *wcscat (wchar_t *__restrict __dest,
7687    __const wchar_t *__restrict __src) throw ();
7688
7689 extern wchar_t *wcsncat (wchar_t *__restrict __dest,
7690     __const wchar_t *__restrict __src, size_t __n)
7691      throw ();
7692
7693
7694 extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
7695      throw () __attribute__ ((__pure__));
7696
7697 extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
7698      throw () __attribute__ ((__pure__));
7699
7700
7701
7702
7703 extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
7704
7705
7706 extern 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
7714 extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
7715     __locale_t __loc) throw ();
7716
7717 extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
7718      size_t __n, __locale_t __loc) throw ();
7719
7720
7721
7722
7723
7724 extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
7725
7726
7727
7728 extern 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
7738 extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
7739         __locale_t __loc) throw ();
7740
7741
7742
7743
7744 extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
7745     size_t __n, __locale_t __loc) throw ();
7746
7747
7748 extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__));
7749
7750
7751
7752
7753 extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
7754      throw () __attribute__ ((__pure__));
7755
7756 extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
7757      throw () __attribute__ ((__pure__));
7758
7759
7760
7761
7762
7763 extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
7764      throw () __attribute__ ((__pure__));
7765
7766
7767
7768
7769
7770 extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
7771      throw () __attribute__ ((__pure__));
7772
7773
7774 extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
7775      throw () __attribute__ ((__pure__));
7776
7777 extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
7778      throw () __attribute__ ((__pure__));
7779
7780 extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
7781      throw () __attribute__ ((__pure__));
7782
7783
7784 extern wchar_t *wcstok (wchar_t *__restrict __s,
7785    __const wchar_t *__restrict __delim,
7786    wchar_t **__restrict __ptr) throw ();
7787
7788
7789 extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__));
7790
7791
7792
7793
7794 extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
7795      throw () __attribute__ ((__pure__));
7796
7797
7798
7799
7800 extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
7801      throw () __attribute__ ((__pure__));
7802
7803
7804
7805
7806
7807 extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
7808      throw () __attribute__ ((__pure__));
7809
7810
7811 extern int wmemcmp (__const wchar_t *__restrict __s1,
7812       __const wchar_t *__restrict __s2, size_t __n)
7813      throw () __attribute__ ((__pure__));
7814
7815
7816 extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
7817     __const wchar_t *__restrict __s2, size_t __n) throw ();
7818
7819
7820
7821 extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
7822      throw ();
7823
7824
7825 extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();
7826
7827
7828
7829
7830
7831 extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
7832      __const wchar_t *__restrict __s2, size_t __n)
7833      throw ();
7834
7835
7836
7837
7838
7839
7840 extern wint_t btowc (int __c) throw ();
7841
7842
7843
7844 extern int wctob (wint_t __c) throw ();
7845
7846
7847
7848 extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__));
7849
7850
7851
7852 extern size_t mbrtowc (wchar_t *__restrict __pwc,
7853          __const char *__restrict __s, size_t __n,
7854          mbstate_t *__p) throw ();
7855
7856
7857 extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
7858          mbstate_t *__restrict __ps) throw ();
7859
7860
7861 extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
7862    mbstate_t *__restrict __ps) throw ();
7863 extern 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
7867 extern __inline size_t
7868 mbrlen (__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
7877 extern size_t mbsrtowcs (wchar_t *__restrict __dst,
7878     __const char **__restrict __src, size_t __len,
7879     mbstate_t *__restrict __ps) throw ();
7880
7881
7882
7883 extern 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
7892 extern 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
7898 extern 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
7908 extern int wcwidth (wchar_t __c) throw ();
7909
7910
7911
7912 extern int wcswidth (__const wchar_t *__s, size_t __n) throw ();
7913
7914
7915
7916
7917
7918
7919 extern double wcstod (__const wchar_t *__restrict __nptr,
7920         wchar_t **__restrict __endptr) throw ();
7921
7922
7923
7924 extern float wcstof (__const wchar_t *__restrict __nptr,
7925        wchar_t **__restrict __endptr) throw ();
7926 extern long double wcstold (__const wchar_t *__restrict __nptr,
7927        wchar_t **__restrict __endptr) throw ();
7928
7929
7930
7931
7932
7933 extern long int wcstol (__const wchar_t *__restrict __nptr,
7934    wchar_t **__restrict __endptr, int __base) throw ();
7935
7936
7937
7938 extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
7939       wchar_t **__restrict __endptr, int __base)
7940      throw ();
7941
7942
7943
7944
7945 __extension__
7946 extern long long int wcstoll (__const wchar_t *__restrict __nptr,
7947          wchar_t **__restrict __endptr, int __base)
7948      throw ();
7949
7950
7951
7952 __extension__
7953 extern 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__
7963 extern long long int wcstoq (__const wchar_t *__restrict __nptr,
7964         wchar_t **__restrict __endptr, int __base)
7965      throw ();
7966
7967
7968
7969 __extension__
7970 extern 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
7979 extern long int wcstol_l (__const wchar_t *__restrict __nptr,
7980      wchar_t **__restrict __endptr, int __base,
7981      __locale_t __loc) throw ();
7982
7983 extern 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__
7988 extern 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__
7993 extern 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
7998 extern double wcstod_l (__const wchar_t *__restrict __nptr,
7999    wchar_t **__restrict __endptr, __locale_t __loc)
8000      throw ();
8001
8002 extern float wcstof_l (__const wchar_t *__restrict __nptr,
8003          wchar_t **__restrict __endptr, __locale_t __loc)
8004      throw ();
8005
8006 extern long double wcstold_l (__const wchar_t *__restrict __nptr,
8007          wchar_t **__restrict __endptr,
8008          __locale_t __loc) throw ();
8009
8010
8011
8012
8013
8014 extern double __wcstod_internal (__const wchar_t *__restrict __nptr,
8015      wchar_t **__restrict __endptr, int __group)
8016      throw ();
8017 extern float __wcstof_internal (__const wchar_t *__restrict __nptr,
8018     wchar_t **__restrict __endptr, int __group)
8019      throw ();
8020 extern long double __wcstold_internal (__const wchar_t *__restrict __nptr,
8021            wchar_t **__restrict __endptr,
8022            int __group) throw ();
8023
8024
8025
8026 extern long int __wcstol_internal (__const wchar_t *__restrict __nptr,
8027        wchar_t **__restrict __endptr,
8028        int __base, int __group) throw ();
8029
8030
8031
8032
8033 extern 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__
8041 extern 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__
8049 extern 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
8063 extern __inline double
8064 wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ()
8065
8066 { return __wcstod_internal (__nptr, __endptr, 0); }
8067 extern __inline long int
8068 wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8069
8070 { return __wcstol_internal (__nptr, __endptr, __base, 0); }
8071 extern __inline unsigned long int
8072 wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8073
8074 { return __wcstoul_internal (__nptr, __endptr, __base, 0); }
8075
8076
8077
8078 extern __inline float
8079 wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ()
8080
8081 { return __wcstof_internal (__nptr, __endptr, 0); }
8082
8083 extern __inline long double
8084 wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ()
8085
8086 { return __wcstold_internal (__nptr, __endptr, 0); }
8087
8088 __extension__
8089 extern __inline long long int
8090 wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ()
8091
8092 { return __wcstoll_internal (__nptr, __endptr, __base, 0); }
8093 __extension__
8094 extern __inline unsigned long long int
8095 wcstouq (__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
8105 extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) throw ();
8106
8107
8108
8109 extern 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
8112 extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw ();
8113
8114
8115
8116
8117
8118
8119 extern int fwide (__FILE *__fp, int __mode) throw ();
8120
8121
8122
8123
8124
8125
8126 extern int fwprintf (__FILE *__restrict __stream,
8127        __const wchar_t *__restrict __format, ...)
8128                                                            ;
8129
8130
8131
8132
8133 extern int wprintf (__const wchar_t *__restrict __format, ...)
8134                                                            ;
8135
8136 extern int swprintf (wchar_t *__restrict __s, size_t __n,
8137        __const wchar_t *__restrict __format, ...)
8138      throw () ;
8139
8140
8141
8142
8143
8144 extern int vfwprintf (__FILE *__restrict __s,
8145         __const wchar_t *__restrict __format,
8146         __gnuc_va_list __arg)
8147                                                            ;
8148
8149
8150
8151
8152 extern int vwprintf (__const wchar_t *__restrict __format,
8153        __gnuc_va_list __arg)
8154                                                            ;
8155
8156
8157 extern 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
8167 extern int fwscanf (__FILE *__restrict __stream,
8168       __const wchar_t *__restrict __format, ...)
8169                                                           ;
8170
8171
8172
8173
8174 extern int wscanf (__const wchar_t *__restrict __format, ...)
8175                                                           ;
8176
8177 extern 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
8191 extern int vfwscanf (__FILE *__restrict __s,
8192        __const wchar_t *__restrict __format,
8193        __gnuc_va_list __arg)
8194                                                           ;
8195
8196
8197
8198
8199 extern int vwscanf (__const wchar_t *__restrict __format,
8200       __gnuc_va_list __arg)
8201                                                           ;
8202
8203 extern 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
8217 extern wint_t fgetwc (__FILE *__stream);
8218 extern wint_t getwc (__FILE *__stream);
8219
8220
8221
8222
8223
8224 extern wint_t getwchar (void);
8225
8226
8227
8228
8229
8230
8231 extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
8232 extern wint_t putwc (wchar_t __wc, __FILE *__stream);
8233
8234
8235
8236
8237
8238 extern wint_t putwchar (wchar_t __wc);
8239
8240
8241
8242
8243
8244
8245
8246 extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
8247    __FILE *__restrict __stream);
8248
8249
8250
8251
8252
8253 extern int fputws (__const wchar_t *__restrict __ws,
8254      __FILE *__restrict __stream);
8255
8256
8257
8258
8259
8260
8261 extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
8262
8263 # 768 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8264 extern wint_t getwc_unlocked (__FILE *__stream);
8265 extern wint_t getwchar_unlocked (void);
8266
8267
8268
8269
8270
8271
8272
8273 extern wint_t fgetwc_unlocked (__FILE *__stream);
8274
8275
8276
8277
8278
8279
8280
8281 extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
8282 # 794 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8283 extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
8284 extern wint_t putwchar_unlocked (wchar_t __wc);
8285 # 804 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
8286 extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
8287      __FILE *__restrict __stream);
8288
8289
8290
8291
8292
8293
8294
8295 extern int fputws_unlocked (__const wchar_t *__restrict __ws,
8296        __FILE *__restrict __stream);
8297
8298
8299
8300
8301
8302
8303
8304 extern 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
8315 extern 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
8324 namespace 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
8330 namespace 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
8434 namespace __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
8449 namespace 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
8485 typedef unsigned char uint8_t;
8486 typedef unsigned short int uint16_t;
8487
8488 typedef unsigned int uint32_t;
8489
8490
8491
8492 typedef unsigned long int uint64_t;
8493 # 66 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8494 typedef signed char int_least8_t;
8495 typedef short int int_least16_t;
8496 typedef int int_least32_t;
8497
8498 typedef long int int_least64_t;
8499
8500
8501
8502
8503
8504
8505 typedef unsigned char uint_least8_t;
8506 typedef unsigned short int uint_least16_t;
8507 typedef unsigned int uint_least32_t;
8508
8509 typedef unsigned long int uint_least64_t;
8510 # 91 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8511 typedef signed char int_fast8_t;
8512
8513 typedef long int int_fast16_t;
8514 typedef long int int_fast32_t;
8515 typedef long int int_fast64_t;
8516 # 104 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8517 typedef unsigned char uint_fast8_t;
8518
8519 typedef unsigned long int uint_fast16_t;
8520 typedef unsigned long int uint_fast32_t;
8521 typedef unsigned long int uint_fast64_t;
8522 # 123 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8523 typedef unsigned long int uintptr_t;
8524 # 135 "/usr/include/gentoo-multilib/amd64/stdint.h" 3 4
8525 typedef long int intmax_t;
8526 typedef 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
8531 namespace 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
8665 namespace 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
8717 namespace 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
8807 namespace 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
8885 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
8886
8887   template<typename _Iterator, typename _Container>
8888     class __normal_iterator;
8889
8890 }
8891
8892 namespace std __attribute__ ((__visibility__ ("default"))) {
8893
8894 namespace __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
9228 namespace 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
9260 namespace __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
9374 namespace 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
9463 namespace 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
9552 namespace 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
9961 namespace __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
10151 namespace std
10152 {
10153   namespace __debug { }
10154 }
10155
10156 namespace __gnu_cxx
10157 {
10158   namespace __debug { };
10159 }
10160
10161 namespace __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
10168 namespace 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
10836 namespace __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
10971 namespace 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
11131 extern "C++" {
11132
11133 namespace 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
11166 void* operator new(std::size_t) throw (std::bad_alloc);
11167 void* operator new[](std::size_t) throw (std::bad_alloc);
11168 void operator delete(void*) throw();
11169 void operator delete[](void*) throw();
11170 void* operator new(std::size_t, const std::nothrow_t&) throw();
11171 void* operator new[](std::size_t, const std::nothrow_t&) throw();
11172 void operator delete(void*, const std::nothrow_t&) throw();
11173 void operator delete[](void*, const std::nothrow_t&) throw();
11174
11175
11176 inline void* operator new(std::size_t, void* __p) throw() { return __p; }
11177 inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
11178
11179
11180 inline void operator delete (void*, void*) throw() { }
11181 inline 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
11189 namespace __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
11271 namespace 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
11369 namespace 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
11461 namespace 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
11751 namespace 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
11803 namespace 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
12785 namespace 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
12941 namespace 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
13028 namespace 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
13567 typedef 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
13570 namespace __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
13629 namespace 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
15005 namespace 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
15329 namespace 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
15430 namespace 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
19563 namespace 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
20505 namespace 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
20622 extern "C" {
20623
20624
20625 extern void __assert_fail (__const char *__assertion, __const char *__file,
20626       unsigned int __line, __const char *__function)
20627      throw () __attribute__ ((__noreturn__));
20628
20629
20630 extern 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
20638 extern 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
20701 namespace 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
20746 namespace 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
20910 namespace 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
21267 namespace 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
21974 namespace 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
22324 namespace 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
22472 namespace 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
22873 typedef 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
22884 enum
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
22915 extern "C" {
22916
22917
22918
22919
22920
22921
22922
22923
22924 extern int iswalnum (wint_t __wc) throw ();
22925
22926
22927
22928
22929
22930 extern int iswalpha (wint_t __wc) throw ();
22931
22932
22933 extern int iswcntrl (wint_t __wc) throw ();
22934
22935
22936
22937 extern int iswdigit (wint_t __wc) throw ();
22938
22939
22940
22941 extern int iswgraph (wint_t __wc) throw ();
22942
22943
22944
22945
22946 extern int iswlower (wint_t __wc) throw ();
22947
22948
22949 extern int iswprint (wint_t __wc) throw ();
22950
22951
22952
22953
22954 extern int iswpunct (wint_t __wc) throw ();
22955
22956
22957
22958
22959 extern int iswspace (wint_t __wc) throw ();
22960
22961
22962
22963
22964 extern int iswupper (wint_t __wc) throw ();
22965
22966
22967
22968
22969 extern int iswxdigit (wint_t __wc) throw ();
22970
22971
22972
22973
22974
22975 extern int iswblank (wint_t __wc) throw ();
22976 # 185 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
22977 extern wctype_t wctype (__const char *__property) throw ();
22978
22979
22980
22981 extern int iswctype (wint_t __wc, wctype_t __desc) throw ();
22982
22983
22984
22985
22986
22987
22988
22989
22990
22991
22992 typedef __const __int32_t *wctrans_t;
22993
22994
22995
22996
22997
22998
22999
23000 extern wint_t towlower (wint_t __wc) throw ();
23001
23002
23003 extern wint_t towupper (wint_t __wc) throw ();
23004
23005
23006 }
23007 # 227 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
23008 extern "C" {
23009
23010
23011
23012
23013 extern wctrans_t wctrans (__const char *__property) throw ();
23014
23015
23016 extern 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
23026 extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw ();
23027
23028
23029
23030
23031
23032 extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw ();
23033
23034
23035 extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw ();
23036
23037
23038
23039 extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw ();
23040
23041
23042
23043 extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw ();
23044
23045
23046
23047
23048 extern int iswlower_l (wint_t __wc, __locale_t __locale) throw ();
23049
23050
23051 extern int iswprint_l (wint_t __wc, __locale_t __locale) throw ();
23052
23053
23054
23055
23056 extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw ();
23057
23058
23059
23060
23061 extern int iswspace_l (wint_t __wc, __locale_t __locale) throw ();
23062
23063
23064
23065
23066 extern int iswupper_l (wint_t __wc, __locale_t __locale) throw ();
23067
23068
23069
23070
23071 extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw ();
23072
23073
23074
23075
23076 extern int iswblank_l (wint_t __wc, __locale_t __locale) throw ();
23077
23078
23079
23080 extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
23081      throw ();
23082
23083
23084
23085 extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
23086      throw ();
23087
23088
23089
23090
23091
23092
23093
23094 extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw ();
23095
23096
23097 extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw ();
23098
23099
23100
23101 extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
23102      throw ();
23103
23104
23105 extern 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
23114 namespace 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
23146 namespace 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
23177 namespace 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
23734 namespace 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
23779 namespace 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
24089 namespace 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
25046 namespace 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
25092 namespace 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
25777 namespace 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
25855 namespace 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
25943 namespace 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
26189 namespace 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
26342 namespace 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
26657 extern "C++" {
26658
26659 namespace __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
26664 namespace 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
26765 namespace 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
29478 namespace 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
29813 namespace 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
30164 namespace 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
31163 namespace 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
31318 namespace boost { namespace detail {
31319
31320
31321 template <class Iterator>
31322 struct iterator_traits
31323     : std::iterator_traits<Iterator>
31324 {};
31325 using 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
31331 namespace boost
31332 {
31333
31334
31335
31336
31337
31338
31339
31340 template<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
31355 namespace 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
31635 namespace boost {
31636 namespace type_traits {
31637
31638 template <typename T>
31639 struct is_mem_fun_pointer_impl
31640 {
31641     static const bool value = false;
31642 };
31643
31644
31645
31646
31647
31648 template <class R, class T >
31649 struct is_mem_fun_pointer_impl<R (T::*)() > { static const bool value = true; };
31650
31651 template <class R, class T >
31652 struct is_mem_fun_pointer_impl<R (T::*)( ...) > { static const bool value = true; };
31653
31654
31655
31656 template <class R, class T >
31657 struct is_mem_fun_pointer_impl<R (T::*)() const > { static const bool value = true; };
31658
31659 template <class R, class T >
31660 struct is_mem_fun_pointer_impl<R (T::*)() volatile > { static const bool value = true; };
31661
31662 template <class R, class T >
31663 struct is_mem_fun_pointer_impl<R (T::*)() const volatile > { static const bool value = true; };
31664
31665
31666 template <class R, class T >
31667 struct is_mem_fun_pointer_impl<R (T::*)( ...) const > { static const bool value = true; };
31668
31669 template <class R, class T >
31670 struct is_mem_fun_pointer_impl<R (T::*)( ...) volatile > { static const bool value = true; };
31671
31672 template <class R, class T >
31673 struct is_mem_fun_pointer_impl<R (T::*)( ...) const volatile > { static const bool value = true; };
31674
31675
31676 template <class R, class T , class T0>
31677 struct is_mem_fun_pointer_impl<R (T::*)( T0) > { static const bool value = true; };
31678
31679 template <class R, class T , class T0>
31680 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) > { static const bool value = true; };
31681
31682
31683
31684 template <class R, class T , class T0>
31685 struct is_mem_fun_pointer_impl<R (T::*)( T0) const > { static const bool value = true; };
31686
31687 template <class R, class T , class T0>
31688 struct is_mem_fun_pointer_impl<R (T::*)( T0) volatile > { static const bool value = true; };
31689
31690 template <class R, class T , class T0>
31691 struct is_mem_fun_pointer_impl<R (T::*)( T0) const volatile > { static const bool value = true; };
31692
31693
31694 template <class R, class T , class T0>
31695 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const > { static const bool value = true; };
31696
31697 template <class R, class T , class T0>
31698 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) volatile > { static const bool value = true; };
31699
31700 template <class R, class T , class T0>
31701 struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const volatile > { static const bool value = true; };
31702
31703
31704 template <class R, class T , class T0 , class T1>
31705 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) > { static const bool value = true; };
31706
31707 template <class R, class T , class T0 , class T1>
31708 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) > { static const bool value = true; };
31709
31710
31711
31712 template <class R, class T , class T0 , class T1>
31713 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const > { static const bool value = true; };
31714
31715 template <class R, class T , class T0 , class T1>
31716 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) volatile > { static const bool value = true; };
31717
31718 template <class R, class T , class T0 , class T1>
31719 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const volatile > { static const bool value = true; };
31720
31721
31722 template <class R, class T , class T0 , class T1>
31723 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const > { static const bool value = true; };
31724
31725 template <class R, class T , class T0 , class T1>
31726 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) volatile > { static const bool value = true; };
31727
31728 template <class R, class T , class T0 , class T1>
31729 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const volatile > { static const bool value = true; };
31730
31731
31732 template <class R, class T , class T0 , class T1 , class T2>
31733 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) > { static const bool value = true; };
31734
31735 template <class R, class T , class T0 , class T1 , class T2>
31736 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) > { static const bool value = true; };
31737
31738
31739
31740 template <class R, class T , class T0 , class T1 , class T2>
31741 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const > { static const bool value = true; };
31742
31743 template <class R, class T , class T0 , class T1 , class T2>
31744 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) volatile > { static const bool value = true; };
31745
31746 template <class R, class T , class T0 , class T1 , class T2>
31747 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const volatile > { static const bool value = true; };
31748
31749
31750 template <class R, class T , class T0 , class T1 , class T2>
31751 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const > { static const bool value = true; };
31752
31753 template <class R, class T , class T0 , class T1 , class T2>
31754 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) volatile > { static const bool value = true; };
31755
31756 template <class R, class T , class T0 , class T1 , class T2>
31757 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const volatile > { static const bool value = true; };
31758
31759
31760 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31761 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) > { static const bool value = true; };
31762
31763 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31764 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) > { static const bool value = true; };
31765
31766
31767
31768 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31769 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const > { static const bool value = true; };
31770
31771 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31772 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) volatile > { static const bool value = true; };
31773
31774 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31775 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const volatile > { static const bool value = true; };
31776
31777
31778 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31779 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const > { static const bool value = true; };
31780
31781 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31782 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) volatile > { static const bool value = true; };
31783
31784 template <class R, class T , class T0 , class T1 , class T2 , class T3>
31785 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const volatile > { static const bool value = true; };
31786
31787
31788 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31789 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) > { static const bool value = true; };
31790
31791 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31792 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) > { static const bool value = true; };
31793
31794
31795
31796 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31797 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const > { static const bool value = true; };
31798
31799 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31800 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) volatile > { static const bool value = true; };
31801
31802 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31803 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const volatile > { static const bool value = true; };
31804
31805
31806 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31807 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const > { static const bool value = true; };
31808
31809 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31810 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) volatile > { static const bool value = true; };
31811
31812 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
31813 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const volatile > { static const bool value = true; };
31814
31815
31816 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31817 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) > { static const bool value = true; };
31818
31819 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31820 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) > { static const bool value = true; };
31821
31822
31823
31824 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31825 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const > { static const bool value = true; };
31826
31827 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31828 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) volatile > { static const bool value = true; };
31829
31830 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31831 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile > { static const bool value = true; };
31832
31833
31834 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31835 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const > { static const bool value = true; };
31836
31837 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31838 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile > { static const bool value = true; };
31839
31840 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
31841 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile > { static const bool value = true; };
31842
31843
31844 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31845 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) > { static const bool value = true; };
31846
31847 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31848 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) > { static const bool value = true; };
31849
31850
31851
31852 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31853 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const > { static const bool value = true; };
31854
31855 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31856 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile > { static const bool value = true; };
31857
31858 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31859 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile > { static const bool value = true; };
31860
31861
31862 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31863 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const > { static const bool value = true; };
31864
31865 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31866 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile > { static const bool value = true; };
31867
31868 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
31869 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile > { static const bool value = true; };
31870
31871
31872 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31873 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) > { static const bool value = true; };
31874
31875 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31876 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) > { static const bool value = true; };
31877
31878
31879
31880 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31881 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const > { static const bool value = true; };
31882
31883 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31884 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile > { static const bool value = true; };
31885
31886 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31887 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile > { static const bool value = true; };
31888
31889
31890 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31891 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const > { static const bool value = true; };
31892
31893 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31894 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile > { static const bool value = true; };
31895
31896 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
31897 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile > { static const bool value = true; };
31898
31899
31900 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31901 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) > { static const bool value = true; };
31902
31903 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31904 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) > { static const bool value = true; };
31905
31906
31907
31908 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31909 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const > { static const bool value = true; };
31910
31911 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31912 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile > { static const bool value = true; };
31913
31914 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31915 struct 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
31918 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31919 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const > { static const bool value = true; };
31920
31921 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31922 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile > { static const bool value = true; };
31923
31924 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
31925 struct 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
31928 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31929 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) > { static const bool value = true; };
31930
31931 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31932 struct 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
31936 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31937 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const > { static const bool value = true; };
31938
31939 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31940 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile > { static const bool value = true; };
31941
31942 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31943 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile > { static const bool value = true; };
31944
31945
31946 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31947 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const > { static const bool value = true; };
31948
31949 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31950 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile > { static const bool value = true; };
31951
31952 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
31953 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile > { static const bool value = true; };
31954
31955
31956 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31957 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) > { static const bool value = true; };
31958
31959 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31960 struct 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
31964 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31965 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const > { static const bool value = true; };
31966
31967 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31968 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile > { static const bool value = true; };
31969
31970 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31971 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile > { static const bool value = true; };
31972
31973
31974 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31975 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const > { static const bool value = true; };
31976
31977 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31978 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile > { static const bool value = true; };
31979
31980 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
31981 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile > { static const bool value = true; };
31982
31983
31984 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
31985 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) > { static const bool value = true; };
31986
31987 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
31988 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) > { static const bool value = true; };
31989
31990
31991
31992 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
31993 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const > { static const bool value = true; };
31994
31995 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
31996 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile > { static const bool value = true; };
31997
31998 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
31999 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile > { static const bool value = true; };
32000
32001
32002 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
32003 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const > { static const bool value = true; };
32004
32005 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
32006 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile > { static const bool value = true; };
32007
32008 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
32009 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile > { static const bool value = true; };
32010
32011
32012 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32013 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) > { static const bool value = true; };
32014
32015 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32016 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) > { static const bool value = true; };
32017
32018
32019
32020 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32021 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const > { static const bool value = true; };
32022
32023 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32024 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile > { static const bool value = true; };
32025
32026 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32027 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile > { static const bool value = true; };
32028
32029
32030 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32031 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const > { static const bool value = true; };
32032
32033 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32034 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile > { static const bool value = true; };
32035
32036 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
32037 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile > { static const bool value = true; };
32038
32039
32040 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32041 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) > { static const bool value = true; };
32042
32043 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32044 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) > { static const bool value = true; };
32045
32046
32047
32048 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32049 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const > { static const bool value = true; };
32050
32051 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32052 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile > { static const bool value = true; };
32053
32054 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32055 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile > { static const bool value = true; };
32056
32057
32058 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32059 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const > { static const bool value = true; };
32060
32061 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32062 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile > { static const bool value = true; };
32063
32064 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
32065 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile > { static const bool value = true; };
32066
32067
32068 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32069 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) > { static const bool value = true; };
32070
32071 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32072 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) > { static const bool value = true; };
32073
32074
32075
32076 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32077 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const > { static const bool value = true; };
32078
32079 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32080 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile > { static const bool value = true; };
32081
32082 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32083 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile > { static const bool value = true; };
32084
32085
32086 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32087 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const > { static const bool value = true; };
32088
32089 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32090 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile > { static const bool value = true; };
32091
32092 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
32093 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile > { static const bool value = true; };
32094
32095
32096 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32097 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) > { static const bool value = true; };
32098
32099 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32100 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) > { static const bool value = true; };
32101
32102
32103
32104 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32105 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const > { static const bool value = true; };
32106
32107 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32108 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile > { static const bool value = true; };
32109
32110 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32111 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile > { static const bool value = true; };
32112
32113
32114 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32115 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const > { static const bool value = true; };
32116
32117 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32118 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile > { static const bool value = true; };
32119
32120 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
32121 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile > { static const bool value = true; };
32122
32123
32124 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32125 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) > { static const bool value = true; };
32126
32127 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32128 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) > { static const bool value = true; };
32129
32130
32131
32132 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32133 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const > { static const bool value = true; };
32134
32135 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32136 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile > { static const bool value = true; };
32137
32138 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32139 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile > { static const bool value = true; };
32140
32141
32142 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32143 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const > { static const bool value = true; };
32144
32145 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32146 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile > { static const bool value = true; };
32147
32148 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
32149 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile > { static const bool value = true; };
32150
32151
32152 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32153 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) > { static const bool value = true; };
32154
32155 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32156 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) > { static const bool value = true; };
32157
32158
32159
32160 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32161 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const > { static const bool value = true; };
32162
32163 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32164 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile > { static const bool value = true; };
32165
32166 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32167 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile > { static const bool value = true; };
32168
32169
32170 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32171 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const > { static const bool value = true; };
32172
32173 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32174 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile > { static const bool value = true; };
32175
32176 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
32177 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile > { static const bool value = true; };
32178
32179
32180 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32181 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) > { static const bool value = true; };
32182
32183 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32184 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) > { static const bool value = true; };
32185
32186
32187
32188 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32189 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const > { static const bool value = true; };
32190
32191 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32192 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile > { static const bool value = true; };
32193
32194 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32195 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile > { static const bool value = true; };
32196
32197
32198 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32199 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const > { static const bool value = true; };
32200
32201 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32202 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile > { static const bool value = true; };
32203
32204 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
32205 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile > { static const bool value = true; };
32206
32207
32208 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32209 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) > { static const bool value = true; };
32210
32211 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32212 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) > { static const bool value = true; };
32213
32214
32215
32216 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32217 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const > { static const bool value = true; };
32218
32219 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32220 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile > { static const bool value = true; };
32221
32222 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32223 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile > { static const bool value = true; };
32224
32225
32226 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32227 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const > { static const bool value = true; };
32228
32229 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32230 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile > { static const bool value = true; };
32231
32232 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
32233 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile > { static const bool value = true; };
32234
32235
32236 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32237 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) > { static const bool value = true; };
32238
32239 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32240 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) > { static const bool value = true; };
32241
32242
32243
32244 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32245 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const > { static const bool value = true; };
32246
32247 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32248 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile > { static const bool value = true; };
32249
32250 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32251 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile > { static const bool value = true; };
32252
32253
32254 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32255 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const > { static const bool value = true; };
32256
32257 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32258 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile > { static const bool value = true; };
32259
32260 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
32261 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile > { static const bool value = true; };
32262
32263
32264 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32265 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) > { static const bool value = true; };
32266
32267 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32268 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) > { static const bool value = true; };
32269
32270
32271
32272 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32273 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const > { static const bool value = true; };
32274
32275 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32276 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile > { static const bool value = true; };
32277
32278 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32279 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile > { static const bool value = true; };
32280
32281
32282 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32283 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const > { static const bool value = true; };
32284
32285 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32286 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile > { static const bool value = true; };
32287
32288 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
32289 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile > { static const bool value = true; };
32290
32291
32292 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32293 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) > { static const bool value = true; };
32294
32295 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32296 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) > { static const bool value = true; };
32297
32298
32299
32300 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32301 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const > { static const bool value = true; };
32302
32303 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32304 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile > { static const bool value = true; };
32305
32306 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32307 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile > { static const bool value = true; };
32308
32309
32310 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32311 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const > { static const bool value = true; };
32312
32313 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32314 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile > { static const bool value = true; };
32315
32316 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
32317 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile > { static const bool value = true; };
32318
32319
32320 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32321 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) > { static const bool value = true; };
32322
32323 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32324 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) > { static const bool value = true; };
32325
32326
32327
32328 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32329 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const > { static const bool value = true; };
32330
32331 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32332 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile > { static const bool value = true; };
32333
32334 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32335 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile > { static const bool value = true; };
32336
32337
32338 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32339 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const > { static const bool value = true; };
32340
32341 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32342 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile > { static const bool value = true; };
32343
32344 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
32345 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile > { static const bool value = true; };
32346
32347
32348 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32349 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) > { static const bool value = true; };
32350
32351 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32352 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) > { static const bool value = true; };
32353
32354
32355
32356 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32357 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const > { static const bool value = true; };
32358
32359 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32360 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile > { static const bool value = true; };
32361
32362 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32363 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile > { static const bool value = true; };
32364
32365
32366 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32367 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const > { static const bool value = true; };
32368
32369 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32370 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile > { static const bool value = true; };
32371
32372 template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
32373 struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile > { static const bool value = true; };
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
32401 namespace mpl_ { namespace aux {} }
32402 namespace boost { namespace mpl { using namespace mpl_;
32403 namespace 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
32412 namespace mpl_ {
32413
32414 template< int N > struct int_;
32415
32416 }
32417 namespace 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
32428 namespace mpl_ {
32429 struct integral_c_tag { static const int value = 0; };
32430 }
32431 namespace 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
32445 namespace mpl_ {
32446
32447 template< int N >
32448 struct 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
32473 template< int N >
32474 int 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
32482 namespace boost { namespace mpl { namespace aux {
32483
32484 template< 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
32544 namespace mpl_ {
32545
32546 template< bool C_ > struct bool_;
32547
32548
32549 typedef bool_<true> true_;
32550 typedef bool_<false> false_;
32551
32552 }
32553
32554 namespace boost { namespace mpl { using ::mpl_::bool_; } }
32555 namespace boost { namespace mpl { using ::mpl_::true_; } }
32556 namespace boost { namespace mpl { using ::mpl_::false_; } }
32557 # 18 "/usr/include/boost/mpl/bool.hpp" 2 3 4
32558
32559
32560
32561 namespace mpl_ {
32562
32563 template< 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
32573 template< bool C_ >
32574 bool 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
32583 namespace mpl_ {
32584
32585
32586
32587
32588
32589 template< typename T, T N > struct integral_c;
32590
32591
32592 }
32593 namespace 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
32598 namespace mpl_ {
32599
32600 template< typename T, T N >
32601 struct 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
32626 template< typename T, T N >
32627 T 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
32636 namespace mpl_ {
32637
32638 template< bool C >
32639 struct 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
32650 namespace boost{
32651
32652
32653
32654
32655 template <class T, T val>
32656
32657 struct integral_constant : public mpl::integral_c<T, val>
32658 {
32659    typedef integral_constant<T,val> type;
32660 };
32661
32662 template<> struct integral_constant<bool,true> : public mpl::true_
32663 {
32664
32665
32666
32667
32668
32669
32670
32671    typedef integral_constant<bool,true> type;
32672 };
32673 template<> 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
32685 typedef integral_constant<bool,true> true_type;
32686 typedef 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
32695 namespace boost {
32696
32697
32698
32699 template< 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
32713 namespace boost {
32714
32715
32716
32717
32718
32719
32720 template< typename T > struct is_member_pointer : ::boost::integral_constant<bool,::boost::is_member_function_pointer<T>::value> { };
32721 template< 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
32730 namespace boost {
32731 namespace type_traits {
32732
32733 template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
32734 struct ice_and;
32735
32736 template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
32737 struct ice_and
32738 {
32739     static const bool value = false;
32740 };
32741
32742 template <>
32743 struct 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
32753 namespace boost {
32754 namespace type_traits {
32755
32756 template <bool b>
32757 struct ice_not
32758 {
32759     static const bool value = true;
32760 };
32761
32762 template <>
32763 struct 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
32778 namespace boost {
32779
32780
32781
32782 namespace detail {
32783
32784 template< 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
32789 template< typename T > struct is_pointer_helper<T*> { static const bool value = true; };
32790 template< typename T > struct is_pointer_helper<T* const> { static const bool value = true; };
32791 template< typename T > struct is_pointer_helper<T* volatile> { static const bool value = true; };
32792 template< typename T > struct is_pointer_helper<T* const volatile> { static const bool value = true; };
32793
32794
32795
32796 template< typename T >
32797 struct 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
32811 template< 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
32830 namespace 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
33191 namespace 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
33417 namespace 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
33635 namespace 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
34278 namespace 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
34648 namespace 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
34650 template<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
35210 namespace 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
35646 namespace 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
35804 namespace boost {
35805
35806
35807
35808 template< typename T > struct remove_reference { typedef T type; };
35809 template< 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
35824 namespace boost {
35825
35826
35827
35828 template< typename T > struct is_reference : ::boost::integral_constant<bool,false> { };
35829 template< 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
35839 namespace boost{
35840
35841
35842 template <bool x> struct STATIC_ASSERTION_FAILURE;
35843
35844 template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
35845
35846
35847 template<int x> struct static_assert_test{};
35848
35849 }
35850 # 21 "/usr/include/boost/any.hpp" 2 3 4
35851
35852 namespace 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
36078 extern "C" {
36079
36080
36081 extern void __assert_fail (__const char *__assertion, __const char *__file,
36082       unsigned int __line, __const char *__function)
36083      throw () __attribute__ ((__noreturn__));
36084
36085
36086 extern 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
36094 extern 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
36122 extern "C" {
36123
36124
36125 extern void __assert_fail (__const char *__assertion, __const char *__file,
36126       unsigned int __line, __const char *__function)
36127      throw () __attribute__ ((__noreturn__));
36128
36129
36130 extern 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
36138 extern 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
36154 namespace boost {
36155
36156
36157
36158
36159 template< typename T > struct is_integral : ::boost::integral_constant<bool,false> { };
36160
36161 template<> 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> { };
36162 template<> 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> { };
36163 template<> 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> { };
36164 template<> 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
36166 template<> 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> { };
36167 template<> 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> { };
36168 template<> 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> { };
36169 template<> 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
36171 template<> 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> { };
36172 template<> 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
36178 template<> 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
36180 template<> 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> { };
36181 template<> 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
36202 namespace boost {
36203
36204
36205
36206 template< typename T > struct is_array : ::boost::integral_constant<bool,false> { };
36207
36208 template< typename T, std::size_t N > struct is_array< T[N] > : ::boost::integral_constant<bool,true> { };
36209 template< typename T, std::size_t N > struct is_array< T const[N] > : ::boost::integral_constant<bool,true> { };
36210 template< typename T, std::size_t N > struct is_array< T volatile[N] > : ::boost::integral_constant<bool,true> { };
36211 template< typename T, std::size_t N > struct is_array< T const volatile[N] > : ::boost::integral_constant<bool,true> { };
36212
36213 template< typename T > struct is_array< T[] > : ::boost::integral_constant<bool,true> { };
36214 template< typename T > struct is_array< T const[] > : ::boost::integral_constant<bool,true> { };
36215 template< typename T > struct is_array< T volatile[] > : ::boost::integral_constant<bool,true> { };
36216 template< 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
36233 namespace boost {
36234
36235 namespace detail {
36236 # 55 "/usr/include/boost/type_traits/add_reference.hpp" 3 4
36237 template <typename T>
36238 struct add_reference_impl
36239 {
36240     typedef T& type;
36241 };
36242
36243
36244 template< typename T > struct add_reference_impl<T&> { typedef T& type; };
36245
36246
36247
36248
36249
36250 template<> struct add_reference_impl<void> { typedef void type; };
36251
36252 template<> struct add_reference_impl<void const> { typedef void const type; };
36253 template<> struct add_reference_impl<void volatile> { typedef void volatile type; };
36254 template<> struct add_reference_impl<void const volatile> { typedef void const volatile type; };
36255
36256
36257 }
36258
36259 template< 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
36282 namespace boost {
36283
36284
36285 template< typename T > struct is_float : ::boost::integral_constant<bool,false> { };
36286 template<> 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> { };
36287 template<> 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> { };
36288 template<> 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
36297 namespace boost {
36298 namespace type_traits {
36299
36300 template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
36301 struct ice_or;
36302
36303 template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
36304 struct ice_or
36305 {
36306     static const bool value = true;
36307 };
36308
36309 template <>
36310 struct 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
36327 namespace boost {
36328
36329 namespace detail {
36330
36331 template< typename T >
36332 struct 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
36344 template< 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
36356 namespace boost {
36357 namespace type_traits {
36358
36359 typedef char yes_type;
36360 struct 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
36375 namespace boost {
36376 namespace type_traits {
36377
36378 template <int b1, int b2>
36379 struct ice_eq
36380 {
36381     static const bool value = (b1 == b2);
36382 };
36383
36384 template <int b1, int b2>
36385 struct ice_ne
36386 {
36387     static const bool value = (b1 != b2);
36388 };
36389
36390
36391 template <int b1, int b2> bool const ice_eq<b1,b2>::value;
36392 template <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
36408 namespace boost {
36409
36410
36411 template< typename T > struct is_void : ::boost::integral_constant<bool,false> { };
36412 template<> struct is_void< void > : ::boost::integral_constant<bool,true> { };
36413
36414
36415 template<> struct is_void< void const > : ::boost::integral_constant<bool,true> { };
36416 template<> struct is_void< void volatile > : ::boost::integral_constant<bool,true> { };
36417 template<> 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
36436 namespace boost {
36437 namespace detail {
36438
36439
36440
36441
36442
36443
36444
36445 template <typename T> struct cv_traits_imp {};
36446
36447 template <typename T>
36448 struct 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
36455 template <typename T>
36456 struct 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
36463 template <typename T>
36464 struct 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
36471 template <typename T>
36472 struct 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
36489 namespace boost {
36490
36491
36492
36493
36494 template< typename T > struct remove_cv { typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type; };
36495 template< typename T > struct remove_cv<T&> { typedef T& type; };
36496
36497 template< typename T, std::size_t N > struct remove_cv<T const[N]> { typedef T type[N]; };
36498 template< typename T, std::size_t N > struct remove_cv<T volatile[N]> { typedef T type[N]; };
36499 template< 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
36517 namespace boost {
36518
36519 namespace detail {
36520 # 36 "/usr/include/boost/type_traits/is_union.hpp" 3 4
36521 template <typename T> struct is_union_impl
36522 {
36523    static const bool value = false;
36524 };
36525
36526 }
36527
36528 template< 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
36542 namespace boost {
36543
36544 namespace detail {
36545 # 53 "/usr/include/boost/type_traits/is_class.hpp" 3 4
36546 template <class U> ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
36547 template <class U> ::boost::type_traits::no_type is_class_tester(...);
36548
36549 template <typename T>
36550 struct 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
36567 template< 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
36587 namespace boost {
36588 namespace detail{
36589
36590
36591 template<class T>
36592 struct 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
36620 template <bool v>
36621 struct is_abstract_select
36622 {
36623    template <class T>
36624    struct rebind
36625    {
36626       typedef is_abstract_imp2<T> type;
36627    };
36628 };
36629 template <>
36630 struct is_abstract_select<false>
36631 {
36632    template <class T>
36633    struct rebind
36634    {
36635       typedef false_type type;
36636    };
36637 };
36638
36639 template <class T>
36640 struct 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
36653 template< 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
36670 namespace boost {
36671 # 46 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36672 namespace detail {
36673 # 113 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
36674 struct any_conversion
36675 {
36676     template <typename T> any_conversion(const volatile T&);
36677     template <typename T> any_conversion(T&);
36678 };
36679
36680 template <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
36686 template <typename From, typename To>
36687 struct 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
36694 template <typename From, typename To>
36695 struct 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
36703 template <bool trivial1, bool trivial2, bool abstract_target>
36704 struct 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
36713 template <>
36714 struct 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
36723 template <>
36724 struct 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
36733 template <>
36734 struct 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
36743 template <typename From, typename To>
36744 struct 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
36763 template <typename From, typename To>
36764 struct 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
36770 template< typename To > struct is_convertible_impl< void,To > { static const bool value = (false); };
36771 template< typename From > struct is_convertible_impl< From,void > { static const bool value = (true); };
36772
36773 template< typename To > struct is_convertible_impl< void const,To > { static const bool value = (false); };
36774 template< typename To > struct is_convertible_impl< void volatile,To > { static const bool value = (false); };
36775 template< typename To > struct is_convertible_impl< void const volatile,To > { static const bool value = (false); };
36776 template< typename From > struct is_convertible_impl< From,void const > { static const bool value = (true); };
36777 template< typename From > struct is_convertible_impl< From,void volatile > { static const bool value = (true); };
36778 template< typename From > struct is_convertible_impl< From,void const volatile > { static const bool value = (true); };
36779
36780
36781
36782 }
36783
36784 template< 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
36797 namespace boost {
36798 namespace type_traits {
36799
36800
36801 struct 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
36816 namespace boost {
36817 namespace type_traits {
36818
36819 template <class R>
36820 struct is_function_ptr_helper
36821 {
36822     static const bool value = false;
36823 };
36824
36825
36826
36827
36828 template <class R >
36829 struct is_function_ptr_helper<R (*)()> { static const bool value = true; };
36830
36831 template <class R >
36832 struct is_function_ptr_helper<R (*)( ...)> { static const bool value = true; };
36833
36834 template <class R , class T0>
36835 struct is_function_ptr_helper<R (*)( T0)> { static const bool value = true; };
36836
36837 template <class R , class T0>
36838 struct is_function_ptr_helper<R (*)( T0 ...)> { static const bool value = true; };
36839
36840 template <class R , class T0 , class T1>
36841 struct is_function_ptr_helper<R (*)( T0 , T1)> { static const bool value = true; };
36842
36843 template <class R , class T0 , class T1>
36844 struct is_function_ptr_helper<R (*)( T0 , T1 ...)> { static const bool value = true; };
36845
36846 template <class R , class T0 , class T1 , class T2>
36847 struct is_function_ptr_helper<R (*)( T0 , T1 , T2)> { static const bool value = true; };
36848
36849 template <class R , class T0 , class T1 , class T2>
36850 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 ...)> { static const bool value = true; };
36851
36852 template <class R , class T0 , class T1 , class T2 , class T3>
36853 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3)> { static const bool value = true; };
36854
36855 template <class R , class T0 , class T1 , class T2 , class T3>
36856 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 ...)> { static const bool value = true; };
36857
36858 template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
36859 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4)> { static const bool value = true; };
36860
36861 template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
36862 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 ...)> { static const bool value = true; };
36863
36864 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
36865 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5)> { static const bool value = true; };
36866
36867 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
36868 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)> { static const bool value = true; };
36869
36870 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
36871 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { static const bool value = true; };
36872
36873 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
36874 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)> { static const bool value = true; };
36875
36876 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
36877 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { static const bool value = true; };
36878
36879 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
36880 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)> { static const bool value = true; };
36881
36882 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
36883 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { static const bool value = true; };
36884
36885 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
36886 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)> { static const bool value = true; };
36887
36888 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
36889 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { static const bool value = true; };
36890
36891 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
36892 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)> { static const bool value = true; };
36893
36894 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
36895 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { static const bool value = true; };
36896
36897 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
36898 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)> { static const bool value = true; };
36899
36900 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
36901 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { static const bool value = true; };
36902
36903 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
36904 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)> { static const bool value = true; };
36905
36906 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
36907 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { static const bool value = true; };
36908
36909 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
36910 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)> { static const bool value = true; };
36911
36912 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
36913 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { static const bool value = true; };
36914
36915 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
36916 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)> { static const bool value = true; };
36917
36918 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
36919 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)> { static const bool value = true; };
36920
36921 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
36922 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)> { static const bool value = true; };
36923
36924 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
36925 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)> { static const bool value = true; };
36926
36927 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
36928 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)> { static const bool value = true; };
36929
36930 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
36931 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)> { static const bool value = true; };
36932
36933 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
36934 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)> { static const bool value = true; };
36935
36936 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
36937 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)> { static const bool value = true; };
36938
36939 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
36940 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)> { static const bool value = true; };
36941
36942 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
36943 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)> { static const bool value = true; };
36944
36945 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
36946 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)> { static const bool value = true; };
36947
36948 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
36949 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)> { static const bool value = true; };
36950
36951 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
36952 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)> { static const bool value = true; };
36953
36954 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
36955 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)> { static const bool value = true; };
36956
36957 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
36958 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)> { static const bool value = true; };
36959
36960 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
36961 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)> { static const bool value = true; };
36962
36963 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
36964 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)> { static const bool value = true; };
36965
36966 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
36967 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)> { static const bool value = true; };
36968
36969 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
36970 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)> { static const bool value = true; };
36971
36972 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
36973 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)> { static const bool value = true; };
36974
36975 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
36976 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)> { static const bool value = true; };
36977
36978 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
36979 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)> { static const bool value = true; };
36980
36981 template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
36982 struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)> { static const bool value = true; };
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
37005 namespace boost {
37006 namespace detail {
37007
37008
37009 template<bool is_ref = true>
37010 struct is_function_chooser
37011     : ::boost::type_traits::false_result
37012 {
37013 };
37014
37015 template <>
37016 struct is_function_chooser<false>
37017 {
37018     template< typename T > struct result_
37019         : ::boost::type_traits::is_function_ptr_helper<T*>
37020     {
37021     };
37022 };
37023
37024 template <typename T>
37025 struct 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
37033 template< 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
37047 namespace boost {
37048
37049
37050
37051 namespace detail {
37052
37053
37054
37055 template <typename T>
37056 struct 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
37065 struct int_convertible
37066 {
37067     int_convertible(int);
37068 };
37069
37070
37071
37072 template <bool is_typename_arithmetic_or_reference = true>
37073 struct is_enum_helper
37074 {
37075     template <typename T> struct type
37076     {
37077         static const bool value = false;
37078     };
37079 };
37080
37081 template <>
37082 struct 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
37090 template <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
37103 template<> struct is_enum_impl< void > { static const bool value = (false); };
37104
37105 template<> struct is_enum_impl< void const > { static const bool value = (false); };
37106 template<> struct is_enum_impl< void volatile > { static const bool value = (false); };
37107 template<> struct is_enum_impl< void const volatile > { static const bool value = (false); };
37108
37109
37110 }
37111
37112 template< 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
37124 namespace boost {
37125 # 32 "/usr/include/boost/utility/addressof.hpp" 3 4
37126 template <typename T> T*
37127
37128 addressof(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
37137 namespace boost
37138 {
37139
37140 template<class T> class reference_wrapper
37141 {
37142 public:
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
37161 private:
37162
37163     T* t_;
37164 };
37165
37166
37167
37168
37169
37170
37171
37172 template<class T> inline reference_wrapper<T> const ref(T & t)
37173 {
37174     return reference_wrapper<T>(t);
37175 }
37176
37177 template<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
37186 template<typename T>
37187 class is_reference_wrapper
37188     : public mpl::false_
37189 {
37190 };
37191
37192 template<typename T>
37193 class unwrap_reference
37194 {
37195  public:
37196     typedef T type;
37197 };
37198 # 106 "/usr/include/boost/ref.hpp" 3 4
37199 template<typename T> class is_reference_wrapper< reference_wrapper<T> > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> > { public: typedef T type; };
37200
37201 template<typename T> class is_reference_wrapper< reference_wrapper<T> const > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> const > { public: typedef T type; };
37202 template<typename T> class is_reference_wrapper< reference_wrapper<T> volatile > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> volatile > { public: typedef T type; };
37203 template<typename T> class is_reference_wrapper< reference_wrapper<T> const volatile > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> const volatile > { public: typedef T type; };
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
37216 namespace boost { namespace mpl { namespace aux {
37217
37218 template< 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
37232 namespace mpl_ {
37233
37234 struct void_;
37235
37236 }
37237 namespace 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
37243 namespace mpl_ {
37244
37245
37246 struct na
37247 {
37248     typedef na type;
37249     enum { value = 0 };
37250 };
37251
37252 }
37253 namespace boost { namespace mpl { using ::mpl_::na; } }
37254 # 19 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4
37255
37256
37257
37258 namespace boost { namespace mpl {
37259
37260 template< typename T >
37261 struct is_na
37262     : false_
37263 {
37264
37265
37266
37267 };
37268
37269 template<>
37270 struct is_na<na>
37271     : true_
37272 {
37273
37274
37275
37276 };
37277
37278 template< typename T >
37279 struct is_not_na
37280     : true_
37281 {
37282
37283
37284
37285 };
37286
37287 template<>
37288 struct is_not_na<na>
37289     : false_
37290 {
37291
37292
37293
37294 };
37295
37296
37297 template< typename T, typename U > struct if_na
37298 {
37299     typedef T type;
37300 };
37301
37302 template< 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
37318 namespace boost { namespace mpl {
37319
37320 template<
37321       typename T = na
37322     , typename Tag = void_
37323     , typename Arity = int_< aux::template_arity<T>::value >
37324
37325
37326     >
37327 struct 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
37428 namespace boost { namespace mpl {
37429
37430
37431
37432 template<
37433       bool C
37434     , typename T1
37435     , typename T2
37436     >
37437 struct if_c
37438 {
37439     typedef T1 type;
37440 };
37441
37442 template<
37443       typename T1
37444     , typename T2
37445     >
37446 struct if_c<false,T1,T2>
37447 {
37448     typedef T2 type;
37449 };
37450
37451
37452
37453 template<
37454       typename T1 = na
37455     , typename T2 = na
37456     , typename T3 = na
37457     >
37458 struct 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
37478 template<> struct if_< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : if_< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< if_< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef if_< na , na , na > result_; typedef if_< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< if_< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< if_< na , na , na > > : int_<-1> { }; }
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
37495 namespace mpl_ {
37496
37497 template< std::size_t N > struct size_t;
37498
37499 }
37500 namespace 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
37509 namespace mpl_ {
37510
37511 template< std::size_t N >
37512 struct 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
37537 template< std::size_t N >
37538 std::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
37546 namespace boost {
37547
37548 template <typename T> struct alignment_of;
37549
37550
37551 namespace detail {
37552
37553 template <typename T>
37554 struct alignment_of_hack
37555 {
37556     char c;
37557     T t;
37558     alignment_of_hack();
37559 };
37560
37561
37562 template <unsigned A, unsigned S>
37563 struct alignment_logic
37564 {
37565     static const std::size_t value = A < S ? A : S;
37566 };
37567
37568
37569 template< typename T >
37570 struct 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
37581 template< typename T > struct alignment_of : ::boost::integral_constant<std::size_t,::boost::detail::alignment_of_impl<T>::value> { };
37582
37583
37584
37585
37586 template <typename T>
37587 struct alignment_of<T&>
37588     : alignment_of<T*>
37589 {
37590 };
37591 # 81 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
37592 template<> struct alignment_of<void> : ::boost::integral_constant<std::size_t,0> { };
37593
37594 template<> struct alignment_of<void const> : ::boost::integral_constant<std::size_t,0> { };
37595 template<> struct alignment_of<void volatile> : ::boost::integral_constant<std::size_t,0> { };
37596 template<> 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
37607 namespace 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
37662 namespace boost {
37663
37664 template<typename F, typename G>
37665   bool function_equal_impl(const F& f, const G& g, long)
37666   { return f == g; }
37667
37668
37669
37670
37671 template<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
37678 namespace boost {
37679 # 91 "/usr/include/boost/function/function_base.hpp" 3 4
37680 template<typename Signature, typename Allocator = std::allocator<void> >
37681 class function;
37682
37683
37684 template<typename Signature, typename Allocator>
37685 inline void swap(function<Signature, Allocator>& f1,
37686                  function<Signature, Allocator>& f2)
37687 {
37688   f1.swap(f2);
37689 }
37690
37691 }
37692
37693
37694 namespace 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
37999 class function_base
38000 {
38001 public:
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
38063 public:
38064   detail::function::vtable_base* vtable;
38065   mutable detail::function::function_buffer functor;
38066 };
38067
38068
38069
38070
38071
38072 class bad_function_call : public std::runtime_error
38073 {
38074 public:
38075   bad_function_call() : std::runtime_error("call to empty boost::function") {}
38076 };
38077
38078
38079 inline bool operator==(const function_base& f,
38080                        detail::function::useless_clear_type*)
38081 {
38082   return f.empty();
38083 }
38084
38085 inline bool operator!=(const function_base& f,
38086                        detail::function::useless_clear_type*)
38087 {
38088   return !f.empty();
38089 }
38090
38091 inline bool operator==(detail::function::useless_clear_type*,
38092                        const function_base& f)
38093 {
38094   return f.empty();
38095 }
38096
38097 inline 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
38103 template<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
38112 template<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
38121 template<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
38130 template<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
38140 template<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
38149 template<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
38158 template<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
38167 template<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
38178 namespace 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
38204 namespace boost {
38205
38206
38207
38208 template<class T> T * get_pointer(T * p)
38209 {
38210     return p;
38211 }
38212
38213
38214
38215 template<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
38225 namespace boost
38226 {
38227 # 207 "/usr/include/boost/mem_fn.hpp" 3 4
38228 namespace _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
38238 template<class R, class T > class mf0
38239 {
38240 public:
38241
38242     typedef R result_type;
38243     typedef T * argument_type;
38244
38245 private:
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
38260 public:
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
38301 template<class R, class T > class cmf0
38302 {
38303 public:
38304
38305     typedef R result_type;
38306     typedef T const * argument_type;
38307
38308 private:
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
38323 public:
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
38350 template<class R, class T, class A1 > class mf1
38351 {
38352 public:
38353
38354     typedef R result_type;
38355     typedef T * first_argument_type;
38356     typedef A1 second_argument_type;
38357
38358 private:
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
38373 public:
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
38414 template<class R, class T, class A1 > class cmf1
38415 {
38416 public:
38417
38418     typedef R result_type;
38419     typedef T const * first_argument_type;
38420     typedef A1 second_argument_type;
38421
38422 private:
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
38437 public:
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
38464 template<class R, class T, class A1, class A2 > class mf2
38465 {
38466 public:
38467
38468     typedef R result_type;
38469
38470 private:
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
38485 public:
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
38526 template<class R, class T, class A1, class A2 > class cmf2
38527 {
38528 public:
38529
38530     typedef R result_type;
38531
38532 private:
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
38547 public:
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
38574 template<class R, class T, class A1, class A2, class A3 > class mf3
38575 {
38576 public:
38577
38578     typedef R result_type;
38579
38580 private:
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
38595 public:
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
38636 template<class R, class T, class A1, class A2, class A3 > class cmf3
38637 {
38638 public:
38639
38640     typedef R result_type;
38641
38642 private:
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
38657 public:
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
38684 template<class R, class T, class A1, class A2, class A3, class A4 > class mf4
38685 {
38686 public:
38687
38688     typedef R result_type;
38689
38690 private:
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
38705 public:
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
38746 template<class R, class T, class A1, class A2, class A3, class A4 > class cmf4
38747 {
38748 public:
38749
38750     typedef R result_type;
38751
38752 private:
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
38767 public:
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
38794 template<class R, class T, class A1, class A2, class A3, class A4, class A5 > class mf5
38795 {
38796 public:
38797
38798     typedef R result_type;
38799
38800 private:
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
38815 public:
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
38856 template<class R, class T, class A1, class A2, class A3, class A4, class A5 > class cmf5
38857 {
38858 public:
38859
38860     typedef R result_type;
38861
38862 private:
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
38877 public:
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
38904 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 > class mf6
38905 {
38906 public:
38907
38908     typedef R result_type;
38909
38910 private:
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
38925 public:
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
38966 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 > class cmf6
38967 {
38968 public:
38969
38970     typedef R result_type;
38971
38972 private:
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
38987 public:
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
39014 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class mf7
39015 {
39016 public:
39017
39018     typedef R result_type;
39019
39020 private:
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
39035 public:
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
39076 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class cmf7
39077 {
39078 public:
39079
39080     typedef R result_type;
39081
39082 private:
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
39097 public:
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
39124 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class mf8
39125 {
39126 public:
39127
39128     typedef R result_type;
39129
39130 private:
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
39145 public:
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
39186 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class cmf8
39187 {
39188 public:
39189
39190     typedef R result_type;
39191
39192 private:
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
39207 public:
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
39242 template<class R, class T> _mfi::mf0<R, T> mem_fn(R ( T::*f) ())
39243 {
39244     return _mfi::mf0<R, T>(f);
39245 }
39246
39247 template<class R, class T> _mfi::cmf0<R, T> mem_fn(R ( T::*f) () const)
39248 {
39249     return _mfi::cmf0<R, T>(f);
39250 }
39251
39252 template<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
39257 template<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
39262 template<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
39267 template<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
39272 template<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
39277 template<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
39282 template<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
39287 template<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
39292 template<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
39297 template<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
39302 template<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
39307 template<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
39312 template<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
39317 template<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
39322 template<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
39327 template<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
39333 namespace _mfi
39334 {
39335
39336 template<class R, class T> class dm
39337 {
39338 public:
39339
39340     typedef R const & result_type;
39341     typedef T const * argument_type;
39342
39343 private:
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
39358 public:
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
39404 template<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
39432 namespace 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
40025 template<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>&);
40035 template<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
40046 template<typename R ,
40047          typename T0,
40048          typename Allocator>
40049 class 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
40059 public:
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
40132 namespace 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
40445 namespace 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
40656 namespace 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
41215 template<typename R ,
41216          typename Allocator>
41217   void operator==(const function0<
41218                           R
41219                           ,
41220                           Allocator>&,
41221                   const function0<
41222                           R
41223                           ,
41224                   Allocator>&);
41225 template<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
41236 template<typename R
41237          ,
41238          typename Allocator>
41239 class 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
41249 public:
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
41334 namespace 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
41927 template<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>&);
41937 template<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
41948 template<typename R ,
41949          typename T0 , typename T1,
41950          typename Allocator>
41951 class 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
41961 public:
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
42037 namespace 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
42623 template<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>&);
42633 template<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
42644 template<typename R ,
42645          typename T0 , typename T1 , typename T2,
42646          typename Allocator>
42647 class 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
42657 public:
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
42733 namespace 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
43319 template<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>&);
43329 template<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
43340 template<typename R ,
43341          typename T0 , typename T1 , typename T2 , typename T3,
43342          typename Allocator>
43343 class 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
43353 public:
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
43429 namespace 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
44015 template<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>&);
44025 template<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
44036 template<typename R ,
44037          typename T0 , typename T1 , typename T2 , typename T3 , typename T4,
44038          typename Allocator>
44039 class 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
44049 public:
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
44125 namespace 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
44711 template<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>&);
44721 template<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
44732 template<typename R ,
44733          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5,
44734          typename Allocator>
44735 class 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
44745 public:
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
44821 namespace 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
45407 template<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>&);
45417 template<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
45428 template<typename R ,
45429          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6,
45430          typename Allocator>
45431 class 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
45441 public:
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
45517 namespace 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
46103 template<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>&);
46113 template<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
46124 template<typename R ,
46125          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,
46126          typename Allocator>
46127 class 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
46137 public:
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
46213 namespace 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
46799 template<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>&);
46809 template<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
46820 template<typename R ,
46821          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,
46822          typename Allocator>
46823 class 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
46833 public:
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
46909 namespace 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
47495 template<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>&);
47505 template<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
47516 template<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>
47519 class 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
47529 public:
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
47614 extern "C" {
47615
47616
47617 extern void __assert_fail (__const char *__assertion, __const char *__file,
47618       unsigned int __line, __const char *__function)
47619      throw () __attribute__ ((__noreturn__));
47620
47621
47622 extern 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
47630 extern 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
47640 namespace boost
47641 {
47642
47643
47644
47645 template<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
47653 template<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
47660 template<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
47672 template<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
47690 namespace boost
47691 {
47692 # 39 "/usr/include/boost/detail/bad_weak_ptr.hpp" 3 4
47693 class bad_weak_ptr: public std::exception
47694 {
47695 public:
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
47713 namespace boost
47714 {
47715
47716 namespace detail
47717 {
47718
47719 inline 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
47739 inline 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
47753 inline 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
47781 class sp_counted_base
47782 {
47783 private:
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
47791 public:
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
47860 namespace boost
47861 {
47862 # 51 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
47863 namespace detail
47864 {
47865
47866 template<class X> class sp_counted_impl_p: public sp_counted_base
47867 {
47868 private:
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
47877 public:
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
47901 template<class P, class D> class sp_counted_impl_pd: public sp_counted_base
47902 {
47903 private:
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
47913 public:
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
47933 template<class P, class D, class A> class sp_counted_impl_pda: public sp_counted_base
47934 {
47935 private:
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
47946 public:
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
47993 namespace boost
47994 {
47995
47996 namespace detail
47997 {
47998 # 50 "/usr/include/boost/detail/shared_count.hpp" 3 4
47999 class weak_count;
48000
48001 class shared_count
48002 {
48003 private:
48004
48005     sp_counted_base * pi_;
48006
48007
48008
48009
48010
48011     friend class weak_count;
48012
48013 public:
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
48173 class weak_count
48174 {
48175 private:
48176
48177     sp_counted_base * pi_;
48178
48179
48180
48181
48182
48183     friend class shared_count;
48184
48185 public:
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
48261 inline 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
48277 namespace boost
48278 {
48279
48280 template<class T> class weak_ptr;
48281 template<class T> class enable_shared_from_this;
48282
48283 namespace detail
48284 {
48285
48286 struct static_cast_tag {};
48287 struct const_cast_tag {};
48288 struct dynamic_cast_tag {};
48289 struct polymorphic_cast_tag {};
48290
48291 template<class T> struct shared_ptr_traits
48292 {
48293     typedef T & reference;
48294 };
48295
48296 template<> struct shared_ptr_traits<void>
48297 {
48298     typedef void reference;
48299 };
48300
48301
48302
48303 template<> struct shared_ptr_traits<void const>
48304 {
48305     typedef void reference;
48306 };
48307
48308 template<> struct shared_ptr_traits<void volatile>
48309 {
48310     typedef void reference;
48311 };
48312
48313 template<> struct shared_ptr_traits<void const volatile>
48314 {
48315     typedef void reference;
48316 };
48317
48318
48319
48320
48321
48322 template<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
48332 inline void sp_enable_shared_from_this( shared_count const & , ... )
48333 {
48334 }
48335 # 108 "/usr/include/boost/shared_ptr.hpp" 3 4
48336 template< class T, class R > struct sp_enable_if_auto_ptr
48337 {
48338 };
48339
48340 template< 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
48349 template<class T> class shared_ptr
48350 {
48351 private:
48352
48353
48354     typedef shared_ptr<T> this_type;
48355
48356 public:
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
48583 private:
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
48596 template<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
48601 template<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
48606 template<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
48611 template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b)
48612 {
48613     a.swap(b);
48614 }
48615
48616 template<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
48621 template<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
48626 template<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
48633 template<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
48638 template<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
48643 template<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
48648 template<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
48656 template<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
48661 template<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
48668 template<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
48689 namespace 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
50159 namespace 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
50449 namespace 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
50739 namespace 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
51132 namespace 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
51502 namespace boost {
51503
51504 namespace 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
51668 namespace 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
51707 namespace 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
51750 namespace 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
51933 namespace 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
52011 namespace 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
52172 namespace 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
52232 namespace 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
52368 namespace 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
52547 namespace 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
52584 namespace 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
52650 namespace 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
53131 namespace 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
54008 extern "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
54020 struct 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
54066 struct 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
54111 extern int stat (__const char *__restrict __file,
54112    struct stat *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2)));
54113
54114
54115
54116 extern int fstat (int __fd, struct stat *__buf) throw () __attribute__ ((__nonnull__ (2)));
54117 # 228 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54118 extern int stat64 (__const char *__restrict __file,
54119      struct stat64 *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2)));
54120 extern int fstat64 (int __fd, struct stat64 *__buf) throw () __attribute__ ((__nonnull__ (2)));
54121
54122
54123
54124
54125
54126
54127
54128 extern 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
54132 extern 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
54141 extern 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
54144 extern int lstat64 (__const char *__restrict __file,
54145       struct stat64 *__restrict __buf)
54146      throw () __attribute__ ((__nonnull__ (1, 2)));
54147
54148
54149
54150
54151
54152 extern int chmod (__const char *__file, __mode_t __mode)
54153      throw () __attribute__ ((__nonnull__ (1)));
54154
54155
54156
54157
54158
54159 extern int lchmod (__const char *__file, __mode_t __mode)
54160      throw () __attribute__ ((__nonnull__ (1)));
54161
54162
54163
54164
54165 extern int fchmod (int __fd, __mode_t __mode) throw ();
54166
54167
54168
54169
54170
54171 extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag)
54172      throw () __attribute__ ((__nonnull__ (2))) ;
54173
54174
54175
54176
54177
54178
54179 extern __mode_t umask (__mode_t __mask) throw ();
54180
54181
54182
54183
54184 extern __mode_t getumask (void) throw ();
54185
54186
54187
54188 extern int mkdir (__const char *__path, __mode_t __mode)
54189      throw () __attribute__ ((__nonnull__ (1)));
54190
54191
54192
54193
54194
54195 extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
54196      throw () __attribute__ ((__nonnull__ (2)));
54197
54198
54199
54200
54201
54202
54203 extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
54204      throw () __attribute__ ((__nonnull__ (1)));
54205
54206
54207
54208
54209
54210
54211 extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
54212       __dev_t __dev) throw () __attribute__ ((__nonnull__ (2)));
54213
54214
54215
54216
54217 extern int mkfifo (__const char *__path, __mode_t __mode)
54218      throw () __attribute__ ((__nonnull__ (1)));
54219
54220
54221
54222
54223
54224 extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
54225      throw () __attribute__ ((__nonnull__ (2)));
54226
54227
54228
54229
54230
54231 extern 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
54240 extern int futimens (int __fd, __const struct timespec __times[2]) throw ();
54241 # 397 "/usr/include/gentoo-multilib/amd64/sys/stat.h" 3 4
54242 extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
54243      throw () __attribute__ ((__nonnull__ (3)));
54244 extern int __xstat (int __ver, __const char *__filename,
54245       struct stat *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54246 extern int __lxstat (int __ver, __const char *__filename,
54247        struct stat *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54248 extern 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
54252 extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
54253      throw () __attribute__ ((__nonnull__ (3)));
54254 extern int __xstat64 (int __ver, __const char *__filename,
54255         struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54256 extern int __lxstat64 (int __ver, __const char *__filename,
54257          struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3)));
54258 extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename,
54259     struct stat64 *__stat_buf, int __flag)
54260      throw () __attribute__ ((__nonnull__ (3, 4)));
54261
54262 extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
54263        __dev_t *__dev) throw () __attribute__ ((__nonnull__ (2, 4)));
54264
54265 extern 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
54272 extern __inline int
54273 stat (__const char *__path, struct stat *__statbuf) throw ()
54274 {
54275   return __xstat (1, __path, __statbuf);
54276 }
54277
54278
54279 extern __inline int
54280 lstat (__const char *__path, struct stat *__statbuf) throw ()
54281 {
54282   return __lxstat (1, __path, __statbuf);
54283 }
54284
54285
54286 extern __inline int
54287 fstat (int __fd, struct stat *__statbuf) throw ()
54288 {
54289   return __fxstat (1, __fd, __statbuf);
54290 }
54291
54292
54293 extern __inline int
54294 fstatat (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
54302 extern __inline int
54303 mknod (__const char *__path, __mode_t __mode, __dev_t __dev) throw ()
54304 {
54305   return __xmknod (0, __path, __mode, &__dev);
54306 }
54307
54308
54309
54310 extern __inline int
54311 mknodat (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
54321 extern __inline int
54322 stat64 (__const char *__path, struct stat64 *__statbuf) throw ()
54323 {
54324   return __xstat64 (1, __path, __statbuf);
54325 }
54326
54327
54328 extern __inline int
54329 lstat64 (__const char *__path, struct stat64 *__statbuf) throw ()
54330 {
54331   return __lxstat64 (1, __path, __statbuf);
54332 }
54333
54334
54335 extern __inline int
54336 fstat64 (int __fd, struct stat64 *__statbuf) throw ()
54337 {
54338   return __fxstat64 (1, __fd, __statbuf);
54339 }
54340
54341
54342 extern __inline int
54343 fstatat64 (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
54371 extern "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
54412 struct 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
54420 struct 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
54435 struct 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
54444 extern "C" {
54445
54446
54447
54448
54449 extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
54450     throw ();
54451
54452
54453
54454 extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
54455        unsigned int __flags);
54456
54457
54458
54459 extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
54460        unsigned int __flags);
54461
54462
54463 extern int splice (int __fdin, __off64_t *__offin, int __fdout,
54464      __off64_t *__offout, size_t __len, unsigned int __flags)
54465     throw ();
54466
54467
54468 extern 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
54482 extern int fcntl (int __fd, int __cmd, ...);
54483 # 85 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54484 extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
54485 # 95 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54486 extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
54487 # 109 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54488 extern int openat (int __fd, __const char *__file, int __oflag, ...)
54489      __attribute__ ((__nonnull__ (2)));
54490 # 120 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54491 extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
54492      __attribute__ ((__nonnull__ (2)));
54493 # 130 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54494 extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
54495 # 140 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54496 extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
54497 # 176 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54498 extern 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
54501 extern 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
54504 extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
54505 # 209 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
54506 extern 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
54526 extern "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
54618 typedef float float_t;
54619 typedef 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
54635 extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
54636
54637 extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
54638
54639 extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
54640
54641 extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
54642
54643
54644 extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
54645
54646 extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
54647
54648 extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
54649
54650
54651
54652
54653 extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
54654
54655 extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
54656
54657 extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
54658
54659
54660
54661
54662 extern 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
54669 extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
54670
54671 extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
54672
54673 extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
54674
54675
54676
54677
54678
54679
54680
54681 extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
54682
54683
54684 extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
54685
54686
54687 extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
54688
54689
54690 extern double log (double __x) throw (); extern double __log (double __x) throw ();
54691
54692
54693 extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
54694
54695
54696 extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ();
54697
54698
54699
54700
54701 extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw ();
54702
54703 extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw ();
54704
54705
54706
54707
54708
54709 extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
54710
54711
54712 extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
54713
54714
54715 extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
54716
54717
54718
54719
54720
54721
54722 extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
54723
54724
54725 extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
54726
54727
54728
54729
54730
54731
54732
54733
54734 extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
54735
54736
54737 extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
54738
54739
54740
54741
54742
54743 extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
54744
54745
54746
54747
54748
54749
54750 extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
54751
54752
54753
54754
54755
54756
54757
54758
54759 extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
54760
54761
54762 extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
54763
54764
54765 extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
54766
54767
54768 extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
54769
54770
54771
54772
54773 extern int __isinf (double __value) throw () __attribute__ ((__const__));
54774
54775
54776 extern int __finite (double __value) throw () __attribute__ ((__const__));
54777
54778
54779
54780
54781
54782 extern int isinf (double __value) throw () __attribute__ ((__const__));
54783
54784
54785 extern int finite (double __value) throw () __attribute__ ((__const__));
54786
54787
54788 extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
54789
54790
54791
54792 extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
54793
54794
54795
54796
54797
54798 extern 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
54805 extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));
54806
54807
54808
54809
54810
54811 extern int __isnan (double __value) throw () __attribute__ ((__const__));
54812
54813
54814
54815 extern int isnan (double __value) throw () __attribute__ ((__const__));
54816
54817
54818 extern double j0 (double) throw (); extern double __j0 (double) throw ();
54819 extern double j1 (double) throw (); extern double __j1 (double) throw ();
54820 extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
54821 extern double y0 (double) throw (); extern double __y0 (double) throw ();
54822 extern double y1 (double) throw (); extern double __y1 (double) throw ();
54823 extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
54824
54825
54826
54827
54828
54829
54830 extern double erf (double) throw (); extern double __erf (double) throw ();
54831 extern double erfc (double) throw (); extern double __erfc (double) throw ();
54832 extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
54833
54834
54835
54836
54837
54838
54839 extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
54840
54841
54842
54843
54844
54845 extern double gamma (double) throw (); extern double __gamma (double) throw ();
54846
54847
54848
54849
54850
54851
54852 extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
54853
54854
54855
54856
54857
54858
54859
54860 extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
54861
54862
54863 extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));
54864
54865 extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));
54866
54867
54868
54869 extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
54870
54871
54872
54873 extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
54874
54875
54876
54877 extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
54878
54879
54880
54881
54882 extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
54883
54884
54885
54886 extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
54887
54888
54889
54890 extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
54891
54892
54893
54894 extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
54895
54896
54897
54898
54899 extern 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
54906 extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
54907 extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
54908
54909
54910
54911 extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
54912 extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
54913
54914
54915
54916 extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
54917
54918
54919 extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();
54920
54921
54922 extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();
54923
54924
54925
54926 extern int __fpclassify (double __value) throw ()
54927      __attribute__ ((__const__));
54928
54929
54930 extern int __signbit (double __value) throw ()
54931      __attribute__ ((__const__));
54932
54933
54934
54935 extern 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
54944 extern 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
54960 extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
54961
54962 extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
54963
54964 extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
54965
54966 extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
54967
54968
54969 extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
54970
54971 extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
54972
54973 extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
54974
54975
54976
54977
54978 extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
54979
54980 extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
54981
54982 extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
54983
54984
54985
54986
54987 extern 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
54994 extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
54995
54996 extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
54997
54998 extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
54999
55000
55001
55002
55003
55004
55005
55006 extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
55007
55008
55009 extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
55010
55011
55012 extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
55013
55014
55015 extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
55016
55017
55018 extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
55019
55020
55021 extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ();
55022
55023
55024
55025
55026 extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw ();
55027
55028 extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw ();
55029
55030
55031
55032
55033
55034 extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
55035
55036
55037 extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
55038
55039
55040 extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
55041
55042
55043
55044
55045
55046
55047 extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
55048
55049
55050 extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
55051
55052
55053
55054
55055
55056
55057
55058
55059 extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
55060
55061
55062 extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
55063
55064
55065
55066
55067
55068 extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
55069
55070
55071
55072
55073
55074
55075 extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
55076
55077
55078
55079
55080
55081
55082
55083
55084 extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
55085
55086
55087 extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
55088
55089
55090 extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
55091
55092
55093 extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
55094
55095
55096
55097
55098 extern int __isinff (float __value) throw () __attribute__ ((__const__));
55099
55100
55101 extern int __finitef (float __value) throw () __attribute__ ((__const__));
55102
55103
55104
55105
55106
55107 extern int isinff (float __value) throw () __attribute__ ((__const__));
55108
55109
55110 extern int finitef (float __value) throw () __attribute__ ((__const__));
55111
55112
55113 extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
55114
55115
55116
55117 extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
55118
55119
55120
55121
55122
55123 extern 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
55130 extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));
55131
55132
55133
55134
55135
55136 extern int __isnanf (float __value) throw () __attribute__ ((__const__));
55137
55138
55139
55140 extern int isnanf (float __value) throw () __attribute__ ((__const__));
55141
55142
55143 extern float j0f (float) throw (); extern float __j0f (float) throw ();
55144 extern float j1f (float) throw (); extern float __j1f (float) throw ();
55145 extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
55146 extern float y0f (float) throw (); extern float __y0f (float) throw ();
55147 extern float y1f (float) throw (); extern float __y1f (float) throw ();
55148 extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
55149
55150
55151
55152
55153
55154
55155 extern float erff (float) throw (); extern float __erff (float) throw ();
55156 extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
55157 extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
55158
55159
55160
55161
55162
55163
55164 extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
55165
55166
55167
55168
55169
55170 extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
55171
55172
55173
55174
55175
55176
55177 extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
55178
55179
55180
55181
55182
55183
55184
55185 extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
55186
55187
55188 extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));
55189
55190 extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));
55191
55192
55193
55194 extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
55195
55196
55197
55198 extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
55199
55200
55201
55202 extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
55203
55204
55205
55206
55207 extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
55208
55209
55210
55211 extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
55212
55213
55214
55215 extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
55216
55217
55218
55219 extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
55220
55221
55222
55223
55224 extern 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
55231 extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
55232 extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
55233
55234
55235
55236 extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
55237 extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
55238
55239
55240
55241 extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
55242
55243
55244 extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();
55245
55246
55247 extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();
55248
55249
55250
55251 extern int __fpclassifyf (float __value) throw ()
55252      __attribute__ ((__const__));
55253
55254
55255 extern int __signbitf (float __value) throw ()
55256      __attribute__ ((__const__));
55257
55258
55259
55260 extern 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
55269 extern 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
55285 extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw ();
55286
55287 extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw ();
55288
55289 extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw ();
55290
55291 extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw ();
55292
55293
55294 extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw ();
55295
55296 extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw ();
55297
55298 extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw ();
55299
55300
55301
55302
55303 extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw ();
55304
55305 extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw ();
55306
55307 extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw ();
55308
55309
55310
55311
55312 extern 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
55319 extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw ();
55320
55321 extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw ();
55322
55323 extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw ();
55324
55325
55326
55327
55328
55329
55330
55331 extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw ();
55332
55333
55334 extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw ();
55335
55336
55337 extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw ();
55338
55339
55340 extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw ();
55341
55342
55343 extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw ();
55344
55345
55346 extern 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
55351 extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw ();
55352
55353 extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw ();
55354
55355
55356
55357
55358
55359 extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw ();
55360
55361
55362 extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw ();
55363
55364
55365 extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw ();
55366
55367
55368
55369
55370
55371
55372 extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw ();
55373
55374
55375 extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw ();
55376
55377
55378
55379
55380
55381
55382
55383
55384 extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw ();
55385
55386
55387 extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw ();
55388
55389
55390
55391
55392
55393 extern 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
55400 extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw ();
55401
55402
55403
55404
55405
55406
55407
55408
55409 extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__));
55410
55411
55412 extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__));
55413
55414
55415 extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__));
55416
55417
55418 extern 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
55423 extern int __isinfl (long double __value) throw () __attribute__ ((__const__));
55424
55425
55426 extern int __finitel (long double __value) throw () __attribute__ ((__const__));
55427
55428
55429
55430
55431
55432 extern int isinfl (long double __value) throw () __attribute__ ((__const__));
55433
55434
55435 extern int finitel (long double __value) throw () __attribute__ ((__const__));
55436
55437
55438 extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw ();
55439
55440
55441
55442 extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw ();
55443
55444
55445
55446
55447
55448 extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__));
55449
55450
55451
55452
55453
55454
55455 extern long double nanl (__const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) throw () __attribute__ ((__const__));
55456
55457
55458
55459
55460
55461 extern int __isnanl (long double __value) throw () __attribute__ ((__const__));
55462
55463
55464
55465 extern int isnanl (long double __value) throw () __attribute__ ((__const__));
55466
55467
55468 extern long double j0l (long double) throw (); extern long double __j0l (long double) throw ();
55469 extern long double j1l (long double) throw (); extern long double __j1l (long double) throw ();
55470 extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw ();
55471 extern long double y0l (long double) throw (); extern long double __y0l (long double) throw ();
55472 extern long double y1l (long double) throw (); extern long double __y1l (long double) throw ();
55473 extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw ();
55474
55475
55476
55477
55478
55479
55480 extern long double erfl (long double) throw (); extern long double __erfl (long double) throw ();
55481 extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw ();
55482 extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw ();
55483
55484
55485
55486
55487
55488
55489 extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw ();
55490
55491
55492
55493
55494
55495 extern long double gammal (long double) throw (); extern long double __gammal (long double) throw ();
55496
55497
55498
55499
55500
55501
55502 extern 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
55510 extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw ();
55511
55512
55513 extern long double nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__));
55514
55515 extern long double nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__));
55516
55517
55518
55519 extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw ();
55520
55521
55522
55523 extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw ();
55524
55525
55526
55527 extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw ();
55528
55529
55530
55531
55532 extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw ();
55533
55534
55535
55536 extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw ();
55537
55538
55539
55540 extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__));
55541
55542
55543
55544 extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__));
55545
55546
55547
55548
55549 extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw ();
55550
55551
55552
55553
55554
55555
55556 extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw ();
55557 extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw ();
55558
55559
55560
55561 extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw ();
55562 extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw ();
55563
55564
55565
55566 extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw ();
55567
55568
55569 extern long double fmaxl (long double __x, long double __y) throw (); extern long double __fmaxl (long double __x, long double __y) throw ();
55570
55571
55572 extern long double fminl (long double __x, long double __y) throw (); extern long double __fminl (long double __x, long double __y) throw ();
55573
55574
55575
55576 extern int __fpclassifyl (long double __value) throw ()
55577      __attribute__ ((__const__));
55578
55579
55580 extern int __signbitl (long double __value) throw ()
55581      __attribute__ ((__const__));
55582
55583
55584
55585 extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw ();
55586
55587
55588
55589
55590
55591
55592
55593
55594 extern 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
55598 extern int signgam;
55599 # 198 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55600 enum
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
55614 typedef enum
55615 {
55616   _IEEE_ = -1,
55617   _SVID_,
55618   _XOPEN_,
55619   _POSIX_,
55620   _ISOC_
55621 } _LIB_VERSION_TYPE;
55622
55623
55624
55625
55626 extern _LIB_VERSION_TYPE _LIB_VERSION;
55627 # 307 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
55628 struct __exception
55629
55630
55631
55632   {
55633     int type;
55634     char *name;
55635     double arg1;
55636     double arg2;
55637     double retval;
55638   };
55639
55640
55641 extern 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
55681 using namespace boost;
55682 using namespace std;
55683 namespace po = boost::program_options;
55684
55685
55686 const float physical_extent = 3.14159265358979323846 * 2.;
55687 const float comp_radius = 5.0;
55688 const float h = comp_radius * 0.5;
55689
55690 typedef array<int,3> node;
55691 typedef array<float,3> particle;
55692 typedef vector<particle> particle_array;
55693
55694 const int computational_extent = 512;
55695
55696 const float norm = 1.;
55697
55698
55699
55700
55701
55702 void 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
55750 inline 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
55777 void 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
55812 void 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
55833 void 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
55860 void 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
55884 int 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 }