]>
Commit | Line | Data |
---|---|---|
45516216 | 1 | // /usr/libexec/gcc/x86_64-pc-linux-gnu/4.2.2/cc1plus -quiet -D_GNU_SOURCE -D_REENTRANT genfield.cxx -quiet -dumpbase genfield.cxx -mtune=generic -auxbase-strip genfield.o -O3 -fopenmp -o - -frandom-seed=0 |
2 | # 1 "genfield.cxx" | |
3 | # 1 "<built-in>" | |
4 | # 1 "<command-line>" | |
5 | # 1 "genfield.cxx" | |
6 | ||
7 | # 1 "/usr/include/boost/array.hpp" 1 3 4 | |
8 | # 27 "/usr/include/boost/array.hpp" 3 4 | |
9 | # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 1 3 4 | |
10 | # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 3 4 | |
11 | ||
12 | # 49 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 3 | |
13 | ||
14 | # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 1 3 | |
15 | # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
16 | # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3 | |
17 | # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 3 | |
18 | # 1 "/usr/include/features.h" 1 3 4 | |
19 | ||
20 | ||
21 | ||
22 | ||
23 | ||
24 | ||
25 | ||
26 | # 1 "/usr/include/gentoo-multilib/amd64/features.h" 1 3 4 | |
27 | # 322 "/usr/include/gentoo-multilib/amd64/features.h" 3 4 | |
28 | # 1 "/usr/include/sys/cdefs.h" 1 3 4 | |
29 | ||
30 | ||
31 | ||
32 | ||
33 | ||
34 | ||
35 | ||
36 | # 1 "/usr/include/gentoo-multilib/amd64/sys/cdefs.h" 1 3 4 | |
37 | # 324 "/usr/include/gentoo-multilib/amd64/sys/cdefs.h" 3 4 | |
38 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
39 | ||
40 | ||
41 | ||
42 | ||
43 | ||
44 | ||
45 | ||
46 | # 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4 | |
47 | # 9 "/usr/include/bits/wordsize.h" 2 3 4 | |
48 | # 325 "/usr/include/gentoo-multilib/amd64/sys/cdefs.h" 2 3 4 | |
49 | # 9 "/usr/include/sys/cdefs.h" 2 3 4 | |
50 | # 323 "/usr/include/gentoo-multilib/amd64/features.h" 2 3 4 | |
51 | # 345 "/usr/include/gentoo-multilib/amd64/features.h" 3 4 | |
52 | # 1 "/usr/include/gnu/stubs.h" 1 3 4 | |
53 | ||
54 | ||
55 | ||
56 | ||
57 | ||
58 | ||
59 | ||
60 | # 1 "/usr/include/gentoo-multilib/amd64/gnu/stubs.h" 1 3 4 | |
61 | ||
62 | ||
63 | ||
64 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
65 | ||
66 | ||
67 | ||
68 | ||
69 | ||
70 | ||
71 | ||
72 | # 1 "/usr/include/gentoo-multilib/amd64/bits/wordsize.h" 1 3 4 | |
73 | # 9 "/usr/include/bits/wordsize.h" 2 3 4 | |
74 | # 5 "/usr/include/gentoo-multilib/amd64/gnu/stubs.h" 2 3 4 | |
75 | ||
76 | ||
77 | ||
78 | ||
79 | # 1 "/usr/include/gnu/stubs-64.h" 1 3 4 | |
80 | ||
81 | ||
82 | ||
83 | # 1 "/usr/include/gentoo-multilib/amd64/gnu/stubs-64.h" 1 3 4 | |
84 | # 5 "/usr/include/gnu/stubs-64.h" 2 3 4 | |
85 | # 10 "/usr/include/gentoo-multilib/amd64/gnu/stubs.h" 2 3 4 | |
86 | # 9 "/usr/include/gnu/stubs.h" 2 3 4 | |
87 | # 346 "/usr/include/gentoo-multilib/amd64/features.h" 2 3 4 | |
88 | # 9 "/usr/include/features.h" 2 3 4 | |
89 | # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/os_defines.h" 2 3 | |
90 | # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 | |
91 | ||
92 | ||
93 | # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3 | |
94 | # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 | |
95 | # 149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
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 | } |