Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 39115 Details for
Bug 63100
ICE on Wesnoth 0.8.2 with gcc 3.4.1
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Preprocessed source.
ccSRqHKu.out (text/plain), 1.14 MB, created by
Ernst Sjöstrand
on 2004-09-07 01:13:05 UTC
(
hide
)
Description:
Preprocessed source.
Filename:
MIME Type:
Creator:
Ernst Sjöstrand
Created:
2004-09-07 01:13:05 UTC
Size:
1.14 MB
patch
obsolete
>// /usr/libexec/gcc/i686-pc-linux-gnu/3.4.1/cc1plus -quiet -I. -I. -I.. -I/usr/X11R6/include -I/usr/include/SDL -I/usr/X11R6/include -D_GNU_SOURCE -DHAVE_CONFIG_H -D_REENTRANT -DWESNOTH_PATH="/usr/share/games/wesnoth" -D_X11 display.cpp -quiet -dumpbase display.cpp -mtune=pentiumpro -auxbase-strip display.o -O3 -ftracer -fno-omit-frame-pointer -o - -frandom-seed=0 ># 1 "display.cpp" ># 1 "<built-in>" ># 1 "<command line>" ># 1 "display.cpp" ># 14 "display.cpp" ># 1 "actions.hpp" 1 ># 17 "actions.hpp" ># 1 "display.hpp" 1 ># 16 "display.hpp" ># 1 "config.hpp" 1 ># 21 "config.hpp" ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 1 "/usr/include/assert.h" 1 3 4 ># 36 "/usr/include/assert.h" 3 4 ># 1 "/usr/include/features.h" 1 3 4 ># 296 "/usr/include/features.h" 3 4 ># 1 "/usr/include/sys/cdefs.h" 1 3 4 ># 297 "/usr/include/features.h" 2 3 4 ># 319 "/usr/include/features.h" 3 4 ># 1 "/usr/include/gnu/stubs.h" 1 3 4 ># 320 "/usr/include/features.h" 2 3 4 ># 37 "/usr/include/assert.h" 2 3 4 ># 65 "/usr/include/assert.h" 3 4 >extern "C" { > > >extern void __assert_fail (__const char *__assertion, __const char *__file, > unsigned int __line, __const char *__function) > throw () __attribute__ ((__noreturn__)); > > >extern void __assert_perror_fail (int __errnum, __const char *__file, > unsigned int __line, > __const char *__function) > throw () __attribute__ ((__noreturn__)); > > > > >extern void __assert (const char *__assertion, const char *__file, int __line) > throw () __attribute__ ((__noreturn__)); > > >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 2 3 ># 22 "config.hpp" 2 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/map" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/map" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/map" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++config.h" 1 3 ># 35 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++config.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/os_defines.h" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++config.h" 2 3 ># 57 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++config.h" 3 >namespace __gnu_debug_def { } > >namespace __gnu_debug >{ > using namespace __gnu_debug_def; >} ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstring" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstring" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstring" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstddef" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstddef" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstddef" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 151 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 3 4 >typedef int ptrdiff_t; ># 213 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 3 4 >typedef unsigned int size_t; ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstddef" 2 3 > >namespace std >{ > using ::ptrdiff_t; > using ::size_t; >} ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstring" 2 3 > ># 1 "/usr/include/string.h" 1 3 4 ># 28 "/usr/include/string.h" 3 4 >extern "C" { > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 34 "/usr/include/string.h" 2 3 4 > > > > >extern void *memcpy (void *__restrict __dest, > __const void *__restrict __src, size_t __n) throw (); > > >extern void *memmove (void *__dest, __const void *__src, size_t __n) > throw (); > > > > > > >extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, > int __c, size_t __n) > throw (); > > > > > >extern void *memset (void *__s, int __c, size_t __n) throw (); > > >extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern void *memchr (__const void *__s, int __c, size_t __n) > throw () __attribute__ ((__pure__)); > > > > > >extern void *rawmemchr (__const void *__s, int __c) throw () __attribute__ ((__pure__)); > > >extern void *memrchr (__const void *__s, int __c, size_t __n) > throw () __attribute__ ((__pure__)); > > > > > >extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) > throw (); > >extern char *strncpy (char *__restrict __dest, > __const char *__restrict __src, size_t __n) throw (); > > >extern char *strcat (char *__restrict __dest, __const char *__restrict __src) > throw (); > >extern char *strncat (char *__restrict __dest, __const char *__restrict __src, > size_t __n) throw (); > > >extern int strcmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)); > >extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern int strcoll (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)); > >extern size_t strxfrm (char *__restrict __dest, > __const char *__restrict __src, size_t __n) throw (); > > > > > > ># 1 "/usr/include/xlocale.h" 1 3 4 ># 28 "/usr/include/xlocale.h" 3 4 >typedef struct __locale_struct >{ > > struct locale_data *__locales[13]; > > > const unsigned short int *__ctype_b; > const int *__ctype_tolower; > const int *__ctype_toupper; > > > const char *__names[13]; >} *__locale_t; ># 115 "/usr/include/string.h" 2 3 4 > > >extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) > throw () __attribute__ ((__pure__)); > >extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, > __locale_t __l) throw (); > > > > >extern char *strdup (__const char *__s) throw () __attribute__ ((__malloc__)); > > > > > > >extern char *strndup (__const char *__string, size_t __n) > throw () __attribute__ ((__malloc__)); ># 160 "/usr/include/string.h" 3 4 > > >extern char *strchr (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > >extern char *strrchr (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > > > > > >extern char *strchrnul (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > > > > > >extern size_t strcspn (__const char *__s, __const char *__reject) > throw () __attribute__ ((__pure__)); > > >extern size_t strspn (__const char *__s, __const char *__accept) > throw () __attribute__ ((__pure__)); > >extern char *strpbrk (__const char *__s, __const char *__accept) > throw () __attribute__ ((__pure__)); > >extern char *strstr (__const char *__haystack, __const char *__needle) > throw () __attribute__ ((__pure__)); > > > >extern char *strtok (char *__restrict __s, __const char *__restrict __delim) > throw (); > > > > >extern char *__strtok_r (char *__restrict __s, > __const char *__restrict __delim, > char **__restrict __save_ptr) throw (); > >extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, > char **__restrict __save_ptr) throw (); > > > > >extern char *strcasestr (__const char *__haystack, __const char *__needle) > throw () __attribute__ ((__pure__)); > > > > > > >extern void *memmem (__const void *__haystack, size_t __haystacklen, > __const void *__needle, size_t __needlelen) > throw () __attribute__ ((__pure__)); > > > >extern void *__mempcpy (void *__restrict __dest, > __const void *__restrict __src, size_t __n) throw (); >extern void *mempcpy (void *__restrict __dest, > __const void *__restrict __src, size_t __n) throw (); > > > > > >extern size_t strlen (__const char *__s) throw () __attribute__ ((__pure__)); > > > > > >extern size_t strnlen (__const char *__string, size_t __maxlen) > throw () __attribute__ ((__pure__)); > > > > > >extern char *strerror (int __errnum) throw (); > ># 268 "/usr/include/string.h" 3 4 >extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) throw (); > > > > > >extern void __bzero (void *__s, size_t __n) throw (); > > > >extern void bcopy (__const void *__src, void *__dest, size_t __n) throw (); > > >extern void bzero (void *__s, size_t __n) throw (); > > >extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern char *index (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > > >extern char *rindex (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > > > >extern int ffs (int __i) throw () __attribute__ ((__const__)); > > > > >extern int ffsl (long int __l) throw () __attribute__ ((__const__)); > >__extension__ extern int ffsll (long long int __ll) > throw () __attribute__ ((__const__)); > > > > >extern int strcasecmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)); > > >extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > > > > >extern int strcasecmp_l (__const char *__s1, __const char *__s2, > __locale_t __loc) throw () __attribute__ ((__pure__)); > >extern int strncasecmp_l (__const char *__s1, __const char *__s2, > size_t __n, __locale_t __loc) > throw () __attribute__ ((__pure__)); > > > > > >extern char *strsep (char **__restrict __stringp, > __const char *__restrict __delim) throw (); > > > > >extern int strverscmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)); > > >extern char *strsignal (int __sig) throw (); > > >extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) > throw (); >extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) > throw (); > > > >extern char *__stpncpy (char *__restrict __dest, > __const char *__restrict __src, size_t __n) throw (); >extern char *stpncpy (char *__restrict __dest, > __const char *__restrict __src, size_t __n) throw (); > > >extern char *strfry (char *__string) throw (); > > >extern void *memfrob (void *__s, size_t __n) throw (); > > > > > > >extern char *basename (__const char *__filename) throw (); ># 400 "/usr/include/string.h" 3 4 >} ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstring" 2 3 ># 77 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstring" 3 >namespace std >{ > using ::memcpy; > using ::memmove; > using ::strcpy; > using ::strncpy; > using ::strcat; > using ::strncat; > using ::memcmp; > using ::strcmp; > using ::strcoll; > using ::strncmp; > using ::strxfrm; > using ::strcspn; > using ::strspn; > using ::strtok; > using ::memset; > using ::strerror; > using ::strlen; > > using ::memchr; > > inline void* > memchr(void* __p, int __c, size_t __n) > { return memchr(const_cast<const void*>(__p), __c, __n); } > > using ::strchr; > > inline char* > strchr(char* __s1, int __n) > { return __builtin_strchr(const_cast<const char*>(__s1), __n); } > > using ::strpbrk; > > inline char* > strpbrk(char* __s1, const char* __s2) > { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); } > > using ::strrchr; > > inline char* > strrchr(char* __s1, int __n) > { return __builtin_strrchr(const_cast<const char*>(__s1), __n); } > > using ::strstr; > > inline char* > strstr(char* __s1, const char* __s2) > { return __builtin_strstr(const_cast<const char*>(__s1), __s2); } >} ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/climits" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/climits" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/climits" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 ># 11 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/syslimits.h" 1 3 4 > > > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 ># 122 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 3 4 ># 1 "/usr/include/limits.h" 1 3 4 ># 144 "/usr/include/limits.h" 3 4 ># 1 "/usr/include/bits/posix1_lim.h" 1 3 4 ># 145 "/usr/include/bits/posix1_lim.h" 3 4 ># 1 "/usr/include/bits/local_lim.h" 1 3 4 ># 36 "/usr/include/bits/local_lim.h" 3 4 ># 1 "/usr/include/linux/limits.h" 1 3 4 ># 37 "/usr/include/bits/local_lim.h" 2 3 4 ># 146 "/usr/include/bits/posix1_lim.h" 2 3 4 ># 145 "/usr/include/limits.h" 2 3 4 > > > ># 1 "/usr/include/bits/posix2_lim.h" 1 3 4 ># 149 "/usr/include/limits.h" 2 3 4 > > > ># 1 "/usr/include/bits/xopen_lim.h" 1 3 4 ># 34 "/usr/include/bits/xopen_lim.h" 3 4 ># 1 "/usr/include/bits/stdio_lim.h" 1 3 4 ># 35 "/usr/include/bits/xopen_lim.h" 2 3 4 ># 153 "/usr/include/limits.h" 2 3 4 ># 123 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 2 3 4 ># 8 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/syslimits.h" 2 3 4 ># 12 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 2 3 4 ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/climits" 2 3 ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 3 > > > > ># 1 "/usr/include/stdlib.h" 1 3 4 ># 33 "/usr/include/stdlib.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 34 "/usr/include/stdlib.h" 2 3 4 > >extern "C" { > > > > > > ># 1 "/usr/include/bits/waitflags.h" 1 3 4 ># 43 "/usr/include/stdlib.h" 2 3 4 ># 1 "/usr/include/bits/waitstatus.h" 1 3 4 ># 63 "/usr/include/bits/waitstatus.h" 3 4 ># 1 "/usr/include/endian.h" 1 3 4 ># 37 "/usr/include/endian.h" 3 4 ># 1 "/usr/include/bits/endian.h" 1 3 4 ># 38 "/usr/include/endian.h" 2 3 4 ># 64 "/usr/include/bits/waitstatus.h" 2 3 4 > >union wait > { > int w_status; > struct > { > > unsigned int __w_termsig:7; > unsigned int __w_coredump:1; > unsigned int __w_retcode:8; > unsigned int:16; > > > > > > > > } __wait_terminated; > struct > { > > unsigned int __w_stopval:8; > unsigned int __w_stopsig:8; > unsigned int:16; > > > > > > > } __wait_stopped; > }; ># 44 "/usr/include/stdlib.h" 2 3 4 ># 93 "/usr/include/stdlib.h" 3 4 > > >typedef struct > { > int quot; > int rem; > } div_t; > > > >typedef struct > { > long int quot; > long int rem; > } ldiv_t; > > > > > > > >__extension__ typedef struct > { > long long int quot; > long long int rem; > } lldiv_t; > > ># 137 "/usr/include/stdlib.h" 3 4 >extern size_t __ctype_get_mb_cur_max (void) throw (); > > > > >extern double atof (__const char *__nptr) throw () __attribute__ ((__pure__)); > >extern int atoi (__const char *__nptr) throw () __attribute__ ((__pure__)); > >extern long int atol (__const char *__nptr) throw () __attribute__ ((__pure__)); > > > > > >__extension__ extern long long int atoll (__const char *__nptr) > throw () __attribute__ ((__pure__)); > > > > > >extern double strtod (__const char *__restrict __nptr, > char **__restrict __endptr) throw (); > > > > > >extern float strtof (__const char *__restrict __nptr, > char **__restrict __endptr) throw (); > >extern long double strtold (__const char *__restrict __nptr, > char **__restrict __endptr) throw (); > > > > > >extern long int strtol (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) throw (); > >extern unsigned long int strtoul (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw (); > > > > >__extension__ >extern long long int strtoq (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) throw (); > >__extension__ >extern unsigned long long int strtouq (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw (); > > > > > >__extension__ >extern long long int strtoll (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) throw (); > >__extension__ >extern unsigned long long int strtoull (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw (); > ># 229 "/usr/include/stdlib.h" 3 4 >extern long int strtol_l (__const char *__restrict __nptr, > char **__restrict __endptr, int __base, > __locale_t __loc) throw (); > >extern unsigned long int strtoul_l (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern long long int strtoll_l (__const char *__restrict __nptr, > char **__restrict __endptr, int __base, > __locale_t __loc) throw (); > >__extension__ >extern unsigned long long int strtoull_l (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, __locale_t __loc) > throw (); > >extern double strtod_l (__const char *__restrict __nptr, > char **__restrict __endptr, __locale_t __loc) > throw (); > >extern float strtof_l (__const char *__restrict __nptr, > char **__restrict __endptr, __locale_t __loc) throw (); > >extern long double strtold_l (__const char *__restrict __nptr, > char **__restrict __endptr, > __locale_t __loc) throw (); > > > > > > >extern double __strtod_internal (__const char *__restrict __nptr, > char **__restrict __endptr, int __group) > throw (); >extern float __strtof_internal (__const char *__restrict __nptr, > char **__restrict __endptr, int __group) > throw (); >extern long double __strtold_internal (__const char *__restrict __nptr, > char **__restrict __endptr, > int __group) throw (); > >extern long int __strtol_internal (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, int __group) throw (); > > > >extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, int __group) throw (); > > > > >__extension__ >extern long long int __strtoll_internal (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, int __group) throw (); > > > >__extension__ >extern unsigned long long int __strtoull_internal (__const char * > __restrict __nptr, > char **__restrict __endptr, > int __base, int __group) > throw (); > > > > > > > > >extern __inline double >strtod (__const char *__restrict __nptr, char **__restrict __endptr) throw () >{ > return __strtod_internal (__nptr, __endptr, 0); >} >extern __inline long int >strtol (__const char *__restrict __nptr, char **__restrict __endptr, > int __base) throw () >{ > return __strtol_internal (__nptr, __endptr, __base, 0); >} >extern __inline unsigned long int >strtoul (__const char *__restrict __nptr, char **__restrict __endptr, > int __base) throw () >{ > return __strtoul_internal (__nptr, __endptr, __base, 0); >} > > > > >extern __inline float >strtof (__const char *__restrict __nptr, char **__restrict __endptr) throw () >{ > return __strtof_internal (__nptr, __endptr, 0); >} >extern __inline long double >strtold (__const char *__restrict __nptr, char **__restrict __endptr) throw () >{ > return __strtold_internal (__nptr, __endptr, 0); >} > > > > >__extension__ extern __inline long long int >strtoq (__const char *__restrict __nptr, char **__restrict __endptr, > int __base) throw () >{ > return __strtoll_internal (__nptr, __endptr, __base, 0); >} >__extension__ extern __inline unsigned long long int >strtouq (__const char *__restrict __nptr, char **__restrict __endptr, > int __base) throw () >{ > return __strtoull_internal (__nptr, __endptr, __base, 0); >} > > > > >__extension__ extern __inline long long int >strtoll (__const char *__restrict __nptr, char **__restrict __endptr, > int __base) throw () >{ > return __strtoll_internal (__nptr, __endptr, __base, 0); >} >__extension__ extern __inline unsigned long long int >strtoull (__const char * __restrict __nptr, char **__restrict __endptr, > int __base) throw () >{ > return __strtoull_internal (__nptr, __endptr, __base, 0); >} > > > > >extern __inline double >atof (__const char *__nptr) throw () >{ > return strtod (__nptr, (char **) __null); >} >extern __inline int >atoi (__const char *__nptr) throw () >{ > return (int) strtol (__nptr, (char **) __null, 10); >} >extern __inline long int >atol (__const char *__nptr) throw () >{ > return strtol (__nptr, (char **) __null, 10); >} > > > > >__extension__ extern __inline long long int >atoll (__const char *__nptr) throw () >{ > return strtoll (__nptr, (char **) __null, 10); >} > ># 408 "/usr/include/stdlib.h" 3 4 >extern char *l64a (long int __n) throw (); > > >extern long int a64l (__const char *__s) throw () __attribute__ ((__pure__)); > > > > ># 1 "/usr/include/sys/types.h" 1 3 4 ># 29 "/usr/include/sys/types.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/types.h" 1 3 4 ># 28 "/usr/include/bits/types.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 29 "/usr/include/bits/types.h" 2 3 4 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 32 "/usr/include/bits/types.h" 2 3 4 > > >typedef unsigned char __u_char; >typedef unsigned short int __u_short; >typedef unsigned int __u_int; >typedef unsigned long int __u_long; > > >typedef signed char __int8_t; >typedef unsigned char __uint8_t; >typedef signed short int __int16_t; >typedef unsigned short int __uint16_t; >typedef signed int __int32_t; >typedef unsigned int __uint32_t; > > > > >__extension__ typedef signed long long int __int64_t; >__extension__ typedef unsigned long long int __uint64_t; > > > > > > > >__extension__ typedef long long int __quad_t; >__extension__ typedef unsigned long long int __u_quad_t; ># 129 "/usr/include/bits/types.h" 3 4 ># 1 "/usr/include/bits/typesizes.h" 1 3 4 ># 130 "/usr/include/bits/types.h" 2 3 4 > > > > > > >__extension__ typedef unsigned long long int __dev_t; >__extension__ typedef unsigned int __uid_t; >__extension__ typedef unsigned int __gid_t; >__extension__ typedef unsigned long int __ino_t; >__extension__ typedef unsigned long long int __ino64_t; >__extension__ typedef unsigned int __mode_t; >__extension__ typedef unsigned int __nlink_t; >__extension__ typedef long int __off_t; >__extension__ typedef long long int __off64_t; >__extension__ typedef int __pid_t; >__extension__ typedef struct { int __val[2]; } __fsid_t; >__extension__ typedef long int __clock_t; >__extension__ typedef unsigned long int __rlim_t; >__extension__ typedef unsigned long long int __rlim64_t; >__extension__ typedef unsigned int __id_t; >__extension__ typedef long int __time_t; >__extension__ typedef unsigned int __useconds_t; >__extension__ typedef long int __suseconds_t; > >__extension__ typedef int __daddr_t; >__extension__ typedef long int __swblk_t; >__extension__ typedef int __key_t; > > >__extension__ typedef int __clockid_t; > > >__extension__ typedef void * __timer_t; > > >__extension__ typedef long int __blksize_t; > > > > >__extension__ typedef long int __blkcnt_t; >__extension__ typedef long long int __blkcnt64_t; > > >__extension__ typedef unsigned long int __fsblkcnt_t; >__extension__ typedef unsigned long long int __fsblkcnt64_t; > > >__extension__ typedef unsigned long int __fsfilcnt_t; >__extension__ typedef unsigned long long int __fsfilcnt64_t; > >__extension__ typedef int __ssize_t; > > > >typedef __off64_t __loff_t; >typedef __quad_t *__qaddr_t; >typedef char *__caddr_t; > > >__extension__ typedef int __intptr_t; > > >__extension__ typedef unsigned int __socklen_t; ># 32 "/usr/include/sys/types.h" 2 3 4 > > > >typedef __u_char u_char; >typedef __u_short u_short; >typedef __u_int u_int; >typedef __u_long u_long; >typedef __quad_t quad_t; >typedef __u_quad_t u_quad_t; >typedef __fsid_t fsid_t; > > > > >typedef __loff_t loff_t; > > > >typedef __ino_t ino_t; > > > > > > >typedef __ino64_t ino64_t; > > > > >typedef __dev_t dev_t; > > > > >typedef __gid_t gid_t; > > > > >typedef __mode_t mode_t; > > > > >typedef __nlink_t nlink_t; > > > > >typedef __uid_t uid_t; > > > > > >typedef __off_t off_t; > > > > > > >typedef __off64_t off64_t; > > > > >typedef __pid_t pid_t; > > > > >typedef __id_t id_t; > > > > >typedef __ssize_t ssize_t; > > > > > >typedef __daddr_t daddr_t; >typedef __caddr_t caddr_t; > > > > > >typedef __key_t key_t; ># 133 "/usr/include/sys/types.h" 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 58 "/usr/include/time.h" 3 4 > > >typedef __clock_t clock_t; > > > ># 74 "/usr/include/time.h" 3 4 > > >typedef __time_t time_t; > > > ># 92 "/usr/include/time.h" 3 4 >typedef __clockid_t clockid_t; ># 104 "/usr/include/time.h" 3 4 >typedef __timer_t timer_t; ># 134 "/usr/include/sys/types.h" 2 3 4 > > > >typedef __useconds_t useconds_t; > > > >typedef __suseconds_t suseconds_t; > > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 148 "/usr/include/sys/types.h" 2 3 4 > > > >typedef unsigned long int ulong; >typedef unsigned short int ushort; >typedef unsigned int uint; ># 191 "/usr/include/sys/types.h" 3 4 >typedef int int8_t __attribute__ ((__mode__ (__QI__))); >typedef int int16_t __attribute__ ((__mode__ (__HI__))); >typedef int int32_t __attribute__ ((__mode__ (__SI__))); >typedef int int64_t __attribute__ ((__mode__ (__DI__))); > > >typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); >typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); >typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); >typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); > >typedef int register_t __attribute__ ((__mode__ (__word__))); ># 216 "/usr/include/sys/types.h" 3 4 ># 1 "/usr/include/sys/select.h" 1 3 4 ># 31 "/usr/include/sys/select.h" 3 4 ># 1 "/usr/include/bits/select.h" 1 3 4 ># 32 "/usr/include/sys/select.h" 2 3 4 > > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 23 "/usr/include/bits/sigset.h" 3 4 >typedef int __sig_atomic_t; > > > > >typedef struct > { > unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; > } __sigset_t; ># 35 "/usr/include/sys/select.h" 2 3 4 > > > >typedef __sigset_t sigset_t; > > > > > ># 1 "/usr/include/time.h" 1 3 4 ># 118 "/usr/include/time.h" 3 4 >struct timespec > { > __time_t tv_sec; > long int tv_nsec; > }; ># 45 "/usr/include/sys/select.h" 2 3 4 > ># 1 "/usr/include/bits/time.h" 1 3 4 ># 69 "/usr/include/bits/time.h" 3 4 >struct timeval > { > __time_t tv_sec; > __suseconds_t tv_usec; > }; ># 47 "/usr/include/sys/select.h" 2 3 4 ># 55 "/usr/include/sys/select.h" 3 4 >typedef long int __fd_mask; ># 67 "/usr/include/sys/select.h" 3 4 >typedef struct > { > > > > __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; > > > > > > } fd_set; > > > > > > >typedef __fd_mask fd_mask; ># 99 "/usr/include/sys/select.h" 3 4 >extern "C" { ># 109 "/usr/include/sys/select.h" 3 4 >extern int select (int __nfds, fd_set *__restrict __readfds, > fd_set *__restrict __writefds, > fd_set *__restrict __exceptfds, > struct timeval *__restrict __timeout); ># 121 "/usr/include/sys/select.h" 3 4 >extern int pselect (int __nfds, fd_set *__restrict __readfds, > fd_set *__restrict __writefds, > fd_set *__restrict __exceptfds, > const struct timespec *__restrict __timeout, > const __sigset_t *__restrict __sigmask); > > >} ># 217 "/usr/include/sys/types.h" 2 3 4 > > ># 1 "/usr/include/sys/sysmacros.h" 1 3 4 ># 29 "/usr/include/sys/sysmacros.h" 3 4 >__extension__ >extern __inline unsigned int gnu_dev_major (unsigned long long int __dev) > throw (); >__extension__ >extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev) > throw (); >__extension__ >extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major, > unsigned int __minor) > throw (); > > >__extension__ extern __inline unsigned int >gnu_dev_major (unsigned long long int __dev) throw () >{ > return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); >} > >__extension__ extern __inline unsigned int >gnu_dev_minor (unsigned long long int __dev) throw () >{ > return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); >} > >__extension__ extern __inline unsigned long long int >gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw () >{ > return ((__minor & 0xff) | ((__major & 0xfff) << 8) > | (((unsigned long long int) (__minor & ~0xff)) << 12) > | (((unsigned long long int) (__major & ~0xfff)) << 32)); >} ># 220 "/usr/include/sys/types.h" 2 3 4 > > > > >typedef __blksize_t blksize_t; > > > > > > >typedef __blkcnt_t blkcnt_t; > > > >typedef __fsblkcnt_t fsblkcnt_t; > > > >typedef __fsfilcnt_t fsfilcnt_t; ># 258 "/usr/include/sys/types.h" 3 4 >typedef __blkcnt64_t blkcnt64_t; >typedef __fsblkcnt64_t fsblkcnt64_t; >typedef __fsfilcnt64_t fsfilcnt64_t; > > > > > ># 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 ># 36 "/usr/include/bits/pthreadtypes.h" 3 4 >typedef unsigned long int pthread_t; > > >typedef union >{ > char __size[36]; > long int __align; >} pthread_attr_t; > > > > >typedef union >{ > struct > { > int __lock; > unsigned int __count; > int __owner; > > > int __kind; > unsigned int __nusers; > int __spins; > } __data; > char __size[24]; > long int __align; >} pthread_mutex_t; > >typedef union >{ > char __size[4]; > long int __align; >} pthread_mutexattr_t; > > > > >typedef union >{ > struct > { > int __lock; > unsigned int __futex; > unsigned long long int __total_seq; > unsigned long long int __wakeup_seq; > unsigned long long int __woken_seq; > void *__mutex; > int __clock; > unsigned int __broadcast_seq; > } __data; > char __size[48]; > long long int __align; >} pthread_cond_t; > >typedef union >{ > char __size[4]; > long int __align; >} pthread_condattr_t; > > > >typedef unsigned int pthread_key_t; > > > >typedef int pthread_once_t; > > > > > >typedef union >{ > struct > { > int __lock; > unsigned int __nr_readers; > unsigned int __readers_wakeup; > unsigned int __writer_wakeup; > unsigned int __nr_readers_queued; > unsigned int __nr_writers_queued; > > > unsigned int __flags; > int __writer; > } __data; > char __size[32]; > long int __align; >} pthread_rwlock_t; > >typedef union >{ > char __size[8]; > long int __align; >} pthread_rwlockattr_t; > > > > > >typedef volatile int pthread_spinlock_t; > > > > >typedef union >{ > char __size[20]; > long int __align; >} pthread_barrier_t; > >typedef union >{ > char __size[4]; > int __align; >} pthread_barrierattr_t; ># 267 "/usr/include/sys/types.h" 2 3 4 > > >} ># 417 "/usr/include/stdlib.h" 2 3 4 > > > > > > >extern long int random (void) throw (); > > >extern void srandom (unsigned int __seed) throw (); > > > > > >extern char *initstate (unsigned int __seed, char *__statebuf, > size_t __statelen) throw (); > > > >extern char *setstate (char *__statebuf) throw (); > > > > > > > >struct random_data > { > int32_t *fptr; > int32_t *rptr; > int32_t *state; > int rand_type; > int rand_deg; > int rand_sep; > int32_t *end_ptr; > }; > >extern int random_r (struct random_data *__restrict __buf, > int32_t *__restrict __result) throw (); > >extern int srandom_r (unsigned int __seed, struct random_data *__buf) throw (); > >extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, > size_t __statelen, > struct random_data *__restrict __buf) throw (); > >extern int setstate_r (char *__restrict __statebuf, > struct random_data *__restrict __buf) throw (); > > > > > > >extern int rand (void) throw (); > >extern void srand (unsigned int __seed) throw (); > > > > >extern int rand_r (unsigned int *__seed) throw (); > > > > > > > >extern double drand48 (void) throw (); >extern double erand48 (unsigned short int __xsubi[3]) throw (); > > >extern long int lrand48 (void) throw (); >extern long int nrand48 (unsigned short int __xsubi[3]) throw (); > > >extern long int mrand48 (void) throw (); >extern long int jrand48 (unsigned short int __xsubi[3]) throw (); > > >extern void srand48 (long int __seedval) throw (); >extern unsigned short int *seed48 (unsigned short int __seed16v[3]) throw (); >extern void lcong48 (unsigned short int __param[7]) throw (); > > > > > >struct drand48_data > { > unsigned short int __x[3]; > unsigned short int __old_x[3]; > unsigned short int __c; > unsigned short int __init; > unsigned long long int __a; > }; > > >extern int drand48_r (struct drand48_data *__restrict __buffer, > double *__restrict __result) throw (); >extern int erand48_r (unsigned short int __xsubi[3], > struct drand48_data *__restrict __buffer, > double *__restrict __result) throw (); > > >extern int lrand48_r (struct drand48_data *__restrict __buffer, > long int *__restrict __result) throw (); >extern int nrand48_r (unsigned short int __xsubi[3], > struct drand48_data *__restrict __buffer, > long int *__restrict __result) throw (); > > >extern int mrand48_r (struct drand48_data *__restrict __buffer, > long int *__restrict __result) throw (); >extern int jrand48_r (unsigned short int __xsubi[3], > struct drand48_data *__restrict __buffer, > long int *__restrict __result) throw (); > > >extern int srand48_r (long int __seedval, struct drand48_data *__buffer) > throw (); > >extern int seed48_r (unsigned short int __seed16v[3], > struct drand48_data *__buffer) throw (); > >extern int lcong48_r (unsigned short int __param[7], > struct drand48_data *__buffer) throw (); > > > > > > > > > >extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)); > >extern void *calloc (size_t __nmemb, size_t __size) > throw () __attribute__ ((__malloc__)); > > > > > > > >extern void *realloc (void *__ptr, size_t __size) throw () __attribute__ ((__malloc__)); > >extern void free (void *__ptr) throw (); > > > > >extern void cfree (void *__ptr) throw (); > > > ># 1 "/usr/include/alloca.h" 1 3 4 ># 25 "/usr/include/alloca.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 26 "/usr/include/alloca.h" 2 3 4 > >extern "C" { > > > > > >extern void *alloca (size_t __size) throw (); > > > > > >} ># 579 "/usr/include/stdlib.h" 2 3 4 > > > > >extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)); > > > > >extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) > throw () __attribute__ ((__malloc__)); > > > > >extern void abort (void) throw () __attribute__ ((__noreturn__)); > > > >extern int atexit (void (*__func) (void)) throw (); > > > > > >extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) > throw (); > > > > > > >extern void exit (int __status) throw () __attribute__ ((__noreturn__)); > > > > > > >extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); > > > > > > >extern char *getenv (__const char *__name) throw (); > > > > >extern char *__secure_getenv (__const char *__name) throw (); > > > > > >extern int putenv (char *__string) throw (); > > > > > >extern int setenv (__const char *__name, __const char *__value, int __replace) > throw (); > > >extern int unsetenv (__const char *__name) throw (); > > > > > > >extern int clearenv (void) throw (); ># 663 "/usr/include/stdlib.h" 3 4 >extern char *mktemp (char *__template) throw (); ># 674 "/usr/include/stdlib.h" 3 4 >extern int mkstemp (char *__template); ># 683 "/usr/include/stdlib.h" 3 4 >extern int mkstemp64 (char *__template); ># 693 "/usr/include/stdlib.h" 3 4 >extern char *mkdtemp (char *__template) throw (); > > > > > > > > >extern int system (__const char *__command); > > > > > > > >extern char *canonicalize_file_name (__const char *__name) throw (); ># 720 "/usr/include/stdlib.h" 3 4 >extern char *realpath (__const char *__restrict __name, > char *__restrict __resolved) throw (); > > > > > > >typedef int (*__compar_fn_t) (__const void *, __const void *); > > >typedef __compar_fn_t comparison_fn_t; > > > > > > >extern void *bsearch (__const void *__key, __const void *__base, > size_t __nmemb, size_t __size, __compar_fn_t __compar); > > > >extern void qsort (void *__base, size_t __nmemb, size_t __size, > __compar_fn_t __compar); > > > >extern int abs (int __x) throw () __attribute__ ((__const__)); >extern long int labs (long int __x) throw () __attribute__ ((__const__)); > > > >__extension__ extern long long int llabs (long long int __x) > throw () __attribute__ ((__const__)); > > > > > > > >extern div_t div (int __numer, int __denom) > throw () __attribute__ ((__const__)); >extern ldiv_t ldiv (long int __numer, long int __denom) > throw () __attribute__ ((__const__)); > > > > >__extension__ extern lldiv_t lldiv (long long int __numer, > long long int __denom) > throw () __attribute__ ((__const__)); > ># 784 "/usr/include/stdlib.h" 3 4 >extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign) throw (); > > > > >extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign) throw (); > > > > >extern char *gcvt (double __value, int __ndigit, char *__buf) throw (); > > > > >extern char *qecvt (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign) throw (); >extern char *qfcvt (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign) throw (); >extern char *qgcvt (long double __value, int __ndigit, char *__buf) throw (); > > > > >extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign, char *__restrict __buf, > size_t __len) throw (); >extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign, char *__restrict __buf, > size_t __len) throw (); > >extern int qecvt_r (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign, > char *__restrict __buf, size_t __len) throw (); >extern int qfcvt_r (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign, > char *__restrict __buf, size_t __len) throw (); > > > > > > > >extern int mblen (__const char *__s, size_t __n) throw (); > > >extern int mbtowc (wchar_t *__restrict __pwc, > __const char *__restrict __s, size_t __n) throw (); > > >extern int wctomb (char *__s, wchar_t __wchar) throw (); > > > >extern size_t mbstowcs (wchar_t *__restrict __pwcs, > __const char *__restrict __s, size_t __n) throw (); > >extern size_t wcstombs (char *__restrict __s, > __const wchar_t *__restrict __pwcs, size_t __n) > throw (); > > > > > > > > >extern int rpmatch (__const char *__response) throw (); ># 866 "/usr/include/stdlib.h" 3 4 >extern int getsubopt (char **__restrict __optionp, > char *__const *__restrict __tokens, > char **__restrict __valuep) throw (); > > > > > >extern void setkey (__const char *__key) throw (); > > > > > > > >extern int posix_openpt (int __oflag); > > > > > > > >extern int grantpt (int __fd) throw (); > > > >extern int unlockpt (int __fd) throw (); > > > > >extern char *ptsname (int __fd) throw (); > > > > > > >extern int ptsname_r (int __fd, char *__buf, size_t __buflen) throw (); > > >extern int getpt (void); > > > > > > >extern int getloadavg (double __loadavg[], int __nelem) throw (); > > > > > >} ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 2 3 ># 84 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 3 >namespace std >{ > using ::div_t; > using ::ldiv_t; > > using ::abort; > using ::abs; > using ::atexit; > using ::atof; > using ::atoi; > using ::atol; > using ::bsearch; > using ::calloc; > using ::div; > using ::exit; > using ::free; > using ::getenv; > using ::labs; > using ::ldiv; > using ::malloc; > > using ::mblen; > using ::mbstowcs; > using ::mbtowc; > > using ::qsort; > using ::rand; > using ::realloc; > using ::srand; > using ::strtod; > using ::strtol; > using ::strtoul; > using ::system; > > using ::wcstombs; > using ::wctomb; > > > inline long > abs(long __i) { return labs(__i); } > > inline ldiv_t > div(long __i, long __j) { return ldiv(__i, __j); } >} ># 140 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 3 >namespace __gnu_cxx >{ > > using ::lldiv_t; > > > > > > using ::_Exit; > > > inline long long > abs(long long __x) { return __x >= 0 ? __x : -__x; } > > inline long long > llabs(long long __x) { return __x >= 0 ? __x : -__x; } > > > inline lldiv_t > div(long long __n, long long __d) > { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } > > inline lldiv_t > lldiv(long long __n, long long __d) > { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } ># 176 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdlib" 3 > using ::atoll; > using ::strtoll; > using ::strtoull; > > using ::strtof; > using ::strtold; >} > >namespace std >{ > > using __gnu_cxx::lldiv_t; > > using __gnu_cxx::_Exit; > using __gnu_cxx::abs; > using __gnu_cxx::llabs; > > using __gnu_cxx::div; > using __gnu_cxx::lldiv; > > using __gnu_cxx::atoll; > using __gnu_cxx::strtof; > using __gnu_cxx::strtoll; > using __gnu_cxx::strtoull; > using __gnu_cxx::strtold; >} ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/new" 1 3 ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/new" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/exception" 1 3 ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/exception" 3 >extern "C++" { > >namespace std >{ ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/exception" 3 > class exception > { > public: > exception() throw() { } > virtual ~exception() throw(); > > > virtual const char* what() const throw(); > }; > > > > class bad_exception : public exception > { > public: > bad_exception() throw() { } > > > virtual ~bad_exception() throw(); > }; > > > typedef void (*terminate_handler) (); > > typedef void (*unexpected_handler) (); > > > terminate_handler set_terminate(terminate_handler) throw(); > > > void terminate() __attribute__ ((__noreturn__)); > > > unexpected_handler set_unexpected(unexpected_handler) throw(); > > > void unexpected() __attribute__ ((__noreturn__)); ># 100 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/exception" 3 > bool uncaught_exception() throw(); >} > >namespace __gnu_cxx >{ ># 115 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/exception" 3 > void __verbose_terminate_handler (); >} > >} ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/new" 2 3 > >extern "C++" { > >namespace std >{ > > > > > > class bad_alloc : public exception > { > public: > bad_alloc() throw() { } > > > virtual ~bad_alloc() throw(); > }; > > struct nothrow_t { }; > extern const nothrow_t nothrow; > > > typedef void (*new_handler)(); > > new_handler set_new_handler(new_handler) throw(); >} ># 82 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/new" 3 >void* operator new(std::size_t) throw (std::bad_alloc); >void* operator new[](std::size_t) throw (std::bad_alloc); >void operator delete(void*) throw(); >void operator delete[](void*) throw(); >void* operator new(std::size_t, const std::nothrow_t&) throw(); >void* operator new[](std::size_t, const std::nothrow_t&) throw(); >void operator delete(void*, const std::nothrow_t&) throw(); >void operator delete[](void*, const std::nothrow_t&) throw(); > > >inline void* operator new(std::size_t, void* __p) throw() { return __p; } >inline void* operator new[](std::size_t, void* __p) throw() { return __p; } > > >inline void operator delete (void*, void*) throw() { } >inline void operator delete[](void*, void*) throw() { } > >} ># 70 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 1 3 ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 3 > ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 3 > > > > ># 1 "/usr/include/stdio.h" 1 3 4 ># 30 "/usr/include/stdio.h" 3 4 >extern "C" { > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 35 "/usr/include/stdio.h" 2 3 4 ># 44 "/usr/include/stdio.h" 3 4 > > >typedef struct _IO_FILE FILE; > > > > > ># 62 "/usr/include/stdio.h" 3 4 >typedef struct _IO_FILE __FILE; ># 72 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/libio.h" 1 3 4 ># 32 "/usr/include/libio.h" 3 4 ># 1 "/usr/include/_G_config.h" 1 3 4 ># 14 "/usr/include/_G_config.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 354 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 3 4 >typedef unsigned int wint_t; ># 15 "/usr/include/_G_config.h" 2 3 4 ># 24 "/usr/include/_G_config.h" 3 4 ># 1 "/usr/include/wchar.h" 1 3 4 ># 48 "/usr/include/wchar.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 49 "/usr/include/wchar.h" 2 3 4 > ># 1 "/usr/include/bits/wchar.h" 1 3 4 ># 51 "/usr/include/wchar.h" 2 3 4 ># 76 "/usr/include/wchar.h" 3 4 >typedef struct >{ > int __count; > union > { > wint_t __wch; > char __wchb[4]; > } __value; >} __mbstate_t; ># 25 "/usr/include/_G_config.h" 2 3 4 > >typedef struct >{ > __off_t __pos; > __mbstate_t __state; >} _G_fpos_t; >typedef struct >{ > __off64_t __pos; > __mbstate_t __state; >} _G_fpos64_t; ># 44 "/usr/include/_G_config.h" 3 4 ># 1 "/usr/include/gconv.h" 1 3 4 ># 28 "/usr/include/gconv.h" 3 4 ># 1 "/usr/include/wchar.h" 1 3 4 ># 48 "/usr/include/wchar.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 49 "/usr/include/wchar.h" 2 3 4 ># 29 "/usr/include/gconv.h" 2 3 4 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 32 "/usr/include/gconv.h" 2 3 4 > > > > > >enum >{ > __GCONV_OK = 0, > __GCONV_NOCONV, > __GCONV_NODB, > __GCONV_NOMEM, > > __GCONV_EMPTY_INPUT, > __GCONV_FULL_OUTPUT, > __GCONV_ILLEGAL_INPUT, > __GCONV_INCOMPLETE_INPUT, > > __GCONV_ILLEGAL_DESCRIPTOR, > __GCONV_INTERNAL_ERROR >}; > > > >enum >{ > __GCONV_IS_LAST = 0x0001, > __GCONV_IGNORE_ERRORS = 0x0002 >}; > > > >struct __gconv_step; >struct __gconv_step_data; >struct __gconv_loaded_object; >struct __gconv_trans_data; > > > >typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, > __const unsigned char **, __const unsigned char *, > unsigned char **, size_t *, int, int); > > >typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char); > > >typedef int (*__gconv_init_fct) (struct __gconv_step *); >typedef void (*__gconv_end_fct) (struct __gconv_step *); > > > >typedef int (*__gconv_trans_fct) (struct __gconv_step *, > struct __gconv_step_data *, void *, > __const unsigned char *, > __const unsigned char **, > __const unsigned char *, unsigned char **, > size_t *); > > >typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, > __const unsigned char *, > unsigned char *, unsigned char *); > > >typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, > size_t *); > > >typedef int (*__gconv_trans_init_fct) (void **, const char *); >typedef void (*__gconv_trans_end_fct) (void *); > >struct __gconv_trans_data >{ > > __gconv_trans_fct __trans_fct; > __gconv_trans_context_fct __trans_context_fct; > __gconv_trans_end_fct __trans_end_fct; > void *__data; > struct __gconv_trans_data *__next; >}; > > > >struct __gconv_step >{ > struct __gconv_loaded_object *__shlib_handle; > __const char *__modname; > > int __counter; > > char *__from_name; > char *__to_name; > > __gconv_fct __fct; > __gconv_btowc_fct __btowc_fct; > __gconv_init_fct __init_fct; > __gconv_end_fct __end_fct; > > > > int __min_needed_from; > int __max_needed_from; > int __min_needed_to; > int __max_needed_to; > > > int __stateful; > > void *__data; >}; > > > >struct __gconv_step_data >{ > unsigned char *__outbuf; > unsigned char *__outbufend; > > > > int __flags; > > > > int __invocation_counter; > > > > int __internal_use; > > __mbstate_t *__statep; > __mbstate_t __state; > > > > struct __gconv_trans_data *__trans; >}; > > > >typedef struct __gconv_info >{ > size_t __nsteps; > struct __gconv_step *__steps; > __extension__ struct __gconv_step_data __data []; >} *__gconv_t; ># 45 "/usr/include/_G_config.h" 2 3 4 >typedef union >{ > struct __gconv_info __cd; > struct > { > struct __gconv_info __cd; > struct __gconv_step_data __data; > } __combined; >} _G_iconv_t; > >typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); >typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); >typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); >typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); ># 33 "/usr/include/libio.h" 2 3 4 ># 53 "/usr/include/libio.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stdarg.h" 1 3 4 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stdarg.h" 3 4 >typedef __builtin_va_list __gnuc_va_list; ># 54 "/usr/include/libio.h" 2 3 4 ># 163 "/usr/include/libio.h" 3 4 >struct _IO_jump_t; struct _IO_FILE; ># 173 "/usr/include/libio.h" 3 4 >typedef void _IO_lock_t; > > > > > >struct _IO_marker { > struct _IO_marker *_next; > struct _IO_FILE *_sbuf; > > > > int _pos; ># 196 "/usr/include/libio.h" 3 4 >}; > > >enum __codecvt_result >{ > __codecvt_ok, > __codecvt_partial, > __codecvt_error, > __codecvt_noconv >}; ># 264 "/usr/include/libio.h" 3 4 >struct _IO_FILE { > int _flags; > > > > > char* _IO_read_ptr; > char* _IO_read_end; > char* _IO_read_base; > char* _IO_write_base; > char* _IO_write_ptr; > char* _IO_write_end; > char* _IO_buf_base; > char* _IO_buf_end; > > char *_IO_save_base; > char *_IO_backup_base; > char *_IO_save_end; > > struct _IO_marker *_markers; > > struct _IO_FILE *_chain; > > int _fileno; > > > > int _flags2; > > __off_t _old_offset; > > > > unsigned short _cur_column; > signed char _vtable_offset; > char _shortbuf[1]; > > > > _IO_lock_t *_lock; ># 312 "/usr/include/libio.h" 3 4 > __off64_t _offset; > > > > > > void *__pad1; > void *__pad2; > > int _mode; > > char _unused2[15 * sizeof (int) - 2 * sizeof (void *)]; > >}; > > > > > >struct _IO_FILE_plus; > >extern struct _IO_FILE_plus _IO_2_1_stdin_; >extern struct _IO_FILE_plus _IO_2_1_stdout_; >extern struct _IO_FILE_plus _IO_2_1_stderr_; ># 351 "/usr/include/libio.h" 3 4 >typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); > > > > > > > >typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, > size_t __n); > > > > > > > >typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); > > >typedef int __io_close_fn (void *__cookie); > > > > >typedef __io_read_fn cookie_read_function_t; >typedef __io_write_fn cookie_write_function_t; >typedef __io_seek_fn cookie_seek_function_t; >typedef __io_close_fn cookie_close_function_t; > > >typedef struct >{ > __io_read_fn *read; > __io_write_fn *write; > __io_seek_fn *seek; > __io_close_fn *close; >} _IO_cookie_io_functions_t; >typedef _IO_cookie_io_functions_t cookie_io_functions_t; > >struct _IO_cookie_file; > > >extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, > void *__cookie, _IO_cookie_io_functions_t __fns); > > > > >extern "C" { > > >extern int __underflow (_IO_FILE *) throw (); >extern int __uflow (_IO_FILE *) throw (); >extern int __overflow (_IO_FILE *, int) throw (); >extern wint_t __wunderflow (_IO_FILE *) throw (); >extern wint_t __wuflow (_IO_FILE *) throw (); >extern wint_t __woverflow (_IO_FILE *, wint_t) throw (); ># 441 "/usr/include/libio.h" 3 4 >extern int _IO_getc (_IO_FILE *__fp) throw (); >extern int _IO_putc (int __c, _IO_FILE *__fp) throw (); >extern int _IO_feof (_IO_FILE *__fp) throw (); >extern int _IO_ferror (_IO_FILE *__fp) throw (); > >extern int _IO_peekc_locked (_IO_FILE *__fp) throw (); > > > > > >extern void _IO_flockfile (_IO_FILE *) throw (); >extern void _IO_funlockfile (_IO_FILE *) throw (); >extern int _IO_ftrylockfile (_IO_FILE *) throw (); ># 471 "/usr/include/libio.h" 3 4 >extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, > __gnuc_va_list, int *__restrict) throw (); >extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, > __gnuc_va_list) throw (); >extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) throw (); >extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) throw (); > >extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) throw (); >extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) throw (); > >extern void _IO_free_backup_area (_IO_FILE *) throw (); ># 529 "/usr/include/libio.h" 3 4 >} ># 73 "/usr/include/stdio.h" 2 3 4 > > > > >typedef __gnuc_va_list va_list; ># 86 "/usr/include/stdio.h" 3 4 > > >typedef _G_fpos_t fpos_t; > > > > > >typedef _G_fpos64_t fpos64_t; ># 138 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/bits/stdio_lim.h" 1 3 4 ># 139 "/usr/include/stdio.h" 2 3 4 > > > >extern struct _IO_FILE *stdin; >extern struct _IO_FILE *stdout; >extern struct _IO_FILE *stderr; > > > > > > > >extern int remove (__const char *__filename) throw (); > >extern int rename (__const char *__old, __const char *__new) throw (); > > > > > > > > > >extern FILE *tmpfile (void); ># 174 "/usr/include/stdio.h" 3 4 >extern FILE *tmpfile64 (void); > > > >extern char *tmpnam (char *__s) throw (); > > > > > >extern char *tmpnam_r (char *__s) throw (); ># 196 "/usr/include/stdio.h" 3 4 >extern char *tempnam (__const char *__dir, __const char *__pfx) > throw () __attribute__ ((__malloc__)); > > > > > > > > >extern int fclose (FILE *__stream); > > > > >extern int fflush (FILE *__stream); > ># 221 "/usr/include/stdio.h" 3 4 >extern int fflush_unlocked (FILE *__stream); ># 231 "/usr/include/stdio.h" 3 4 >extern int fcloseall (void); > > > > > > > > > >extern FILE *fopen (__const char *__restrict __filename, > __const char *__restrict __modes); > > > > >extern FILE *freopen (__const char *__restrict __filename, > __const char *__restrict __modes, > FILE *__restrict __stream); ># 262 "/usr/include/stdio.h" 3 4 > > >extern FILE *fopen64 (__const char *__restrict __filename, > __const char *__restrict __modes); >extern FILE *freopen64 (__const char *__restrict __filename, > __const char *__restrict __modes, > FILE *__restrict __stream); > > > > >extern FILE *fdopen (int __fd, __const char *__modes) throw (); > > > > > >extern FILE *fopencookie (void *__restrict __magic_cookie, > __const char *__restrict __modes, > _IO_cookie_io_functions_t __io_funcs) throw (); > > >extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) throw (); > > > > >extern FILE *open_memstream (char **__restrict __bufloc, > size_t *__restrict __sizeloc) throw (); > > > > > > >extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); > > > >extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, > int __modes, size_t __n) throw (); > > > > > >extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, > size_t __size) throw (); > > >extern void setlinebuf (FILE *__stream) throw (); > > > > > > > > >extern int fprintf (FILE *__restrict __stream, > __const char *__restrict __format, ...); > > > > >extern int printf (__const char *__restrict __format, ...); > >extern int sprintf (char *__restrict __s, > __const char *__restrict __format, ...) throw (); > > > > > >extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, > __gnuc_va_list __arg); > > > > >extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); > >extern int vsprintf (char *__restrict __s, __const char *__restrict __format, > __gnuc_va_list __arg) throw (); > > > > > >extern int snprintf (char *__restrict __s, size_t __maxlen, > __const char *__restrict __format, ...) > throw () __attribute__ ((__format__ (__printf__, 3, 4))); > >extern int vsnprintf (char *__restrict __s, size_t __maxlen, > __const char *__restrict __format, __gnuc_va_list __arg) > throw () __attribute__ ((__format__ (__printf__, 3, 0))); > > > > > > >extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, > __gnuc_va_list __arg) > throw () __attribute__ ((__format__ (__printf__, 2, 0))); >extern int __asprintf (char **__restrict __ptr, > __const char *__restrict __fmt, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))); >extern int asprintf (char **__restrict __ptr, > __const char *__restrict __fmt, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))); > > > > > > > >extern int vdprintf (int __fd, __const char *__restrict __fmt, > __gnuc_va_list __arg) > __attribute__ ((__format__ (__printf__, 2, 0))); >extern int dprintf (int __fd, __const char *__restrict __fmt, ...) > __attribute__ ((__format__ (__printf__, 2, 3))); > > > > > > > > >extern int fscanf (FILE *__restrict __stream, > __const char *__restrict __format, ...); > > > > >extern int scanf (__const char *__restrict __format, ...); > >extern int sscanf (__const char *__restrict __s, > __const char *__restrict __format, ...) throw (); > > > > > > > > >extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, > __gnuc_va_list __arg) > __attribute__ ((__format__ (__scanf__, 2, 0))); > > > > > >extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) > __attribute__ ((__format__ (__scanf__, 1, 0))); > > >extern int vsscanf (__const char *__restrict __s, > __const char *__restrict __format, __gnuc_va_list __arg) > throw () __attribute__ ((__format__ (__scanf__, 2, 0))); > > > > > > > > > >extern int fgetc (FILE *__stream); >extern int getc (FILE *__stream); > > > > > >extern int getchar (void); > ># 454 "/usr/include/stdio.h" 3 4 >extern int getc_unlocked (FILE *__stream); >extern int getchar_unlocked (void); ># 465 "/usr/include/stdio.h" 3 4 >extern int fgetc_unlocked (FILE *__stream); > > > > > > > > > > > >extern int fputc (int __c, FILE *__stream); >extern int putc (int __c, FILE *__stream); > > > > > >extern int putchar (int __c); > ># 498 "/usr/include/stdio.h" 3 4 >extern int fputc_unlocked (int __c, FILE *__stream); > > > > > > > >extern int putc_unlocked (int __c, FILE *__stream); >extern int putchar_unlocked (int __c); > > > > > > >extern int getw (FILE *__stream); > > >extern int putw (int __w, FILE *__stream); > > > > > > > > >extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream); > > > > > > >extern char *gets (char *__s); > ># 543 "/usr/include/stdio.h" 3 4 >extern char *fgets_unlocked (char *__restrict __s, int __n, > FILE *__restrict __stream); ># 559 "/usr/include/stdio.h" 3 4 >extern __ssize_t __getdelim (char **__restrict __lineptr, > size_t *__restrict __n, int __delimiter, > FILE *__restrict __stream); >extern __ssize_t getdelim (char **__restrict __lineptr, > size_t *__restrict __n, int __delimiter, > FILE *__restrict __stream); > > > > > > > >extern __ssize_t getline (char **__restrict __lineptr, > size_t *__restrict __n, > FILE *__restrict __stream); > > > > > > > > >extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); > > > > > >extern int puts (__const char *__s); > > > > > > >extern int ungetc (int __c, FILE *__stream); > > > > > > >extern size_t fread (void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __stream); > > > > >extern size_t fwrite (__const void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __s); > ># 620 "/usr/include/stdio.h" 3 4 >extern int fputs_unlocked (__const char *__restrict __s, > FILE *__restrict __stream); ># 631 "/usr/include/stdio.h" 3 4 >extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __stream); >extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __stream); > > > > > > > > >extern int fseek (FILE *__stream, long int __off, int __whence); > > > > >extern long int ftell (FILE *__stream); > > > > >extern void rewind (FILE *__stream); > ># 667 "/usr/include/stdio.h" 3 4 >extern int fseeko (FILE *__stream, __off_t __off, int __whence); > > > > >extern __off_t ftello (FILE *__stream); ># 686 "/usr/include/stdio.h" 3 4 > > > > > > >extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); > > > > >extern int fsetpos (FILE *__stream, __const fpos_t *__pos); ># 709 "/usr/include/stdio.h" 3 4 > > > >extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); >extern __off64_t ftello64 (FILE *__stream); >extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); >extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); > > > > >extern void clearerr (FILE *__stream) throw (); > >extern int feof (FILE *__stream) throw (); > >extern int ferror (FILE *__stream) throw (); > > > > >extern void clearerr_unlocked (FILE *__stream) throw (); >extern int feof_unlocked (FILE *__stream) throw (); >extern int ferror_unlocked (FILE *__stream) throw (); > > > > > > > > >extern void perror (__const char *__s); > > > > > > ># 1 "/usr/include/bits/sys_errlist.h" 1 3 4 ># 27 "/usr/include/bits/sys_errlist.h" 3 4 >extern int sys_nerr; >extern __const char *__const sys_errlist[]; > > >extern int _sys_nerr; >extern __const char *__const _sys_errlist[]; ># 748 "/usr/include/stdio.h" 2 3 4 > > > > >extern int fileno (FILE *__stream) throw (); > > > > >extern int fileno_unlocked (FILE *__stream) throw (); ># 767 "/usr/include/stdio.h" 3 4 >extern FILE *popen (__const char *__command, __const char *__modes); > > > > > >extern int pclose (FILE *__stream); > > > > > >extern char *ctermid (char *__s) throw (); > > > > > >extern char *cuserid (char *__s); > > > > >struct obstack; > > >extern int obstack_printf (struct obstack *__restrict __obstack, > __const char *__restrict __format, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))); >extern int obstack_vprintf (struct obstack *__restrict __obstack, > __const char *__restrict __format, > __gnuc_va_list __args) > throw () __attribute__ ((__format__ (__printf__, 2, 0))); > > > > > > > >extern void flockfile (FILE *__stream) throw (); > > > >extern int ftrylockfile (FILE *__stream) throw (); > > >extern void funlockfile (FILE *__stream) throw (); ># 828 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/bits/stdio.h" 1 3 4 ># 33 "/usr/include/bits/stdio.h" 3 4 >inline int >vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) >{ > return vfprintf (stdout, __fmt, __arg); >} > > >inline int >getchar (void) >{ > return _IO_getc (stdin); >} > > > > >inline int >getc_unlocked (FILE *__fp) >{ > return (__builtin_expect ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end, 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); >} > > >inline int >getchar_unlocked (void) >{ > return (__builtin_expect ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end, 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); >} > > > > >inline int >putchar (int __c) >{ > return _IO_putc (__c, stdout); >} > > > > >inline int >fputc_unlocked (int __c, FILE *__stream) >{ > return (__builtin_expect ((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end, 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); >} > > > > > >inline int >putc_unlocked (int __c, FILE *__stream) >{ > return (__builtin_expect ((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end, 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); >} > > >inline int >putchar_unlocked (int __c) >{ > return (__builtin_expect ((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end, 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); >} > > > > > >inline __ssize_t >getline (char **__lineptr, size_t *__n, FILE *__stream) >{ > return __getdelim (__lineptr, __n, '\n', __stream); >} > > > > > >inline int >feof_unlocked (FILE *__stream) throw () >{ > return (((__stream)->_flags & 0x10) != 0); >} > > >inline int >ferror_unlocked (FILE *__stream) throw () >{ > return (((__stream)->_flags & 0x20) != 0); >} ># 829 "/usr/include/stdio.h" 2 3 4 > > >} ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 2 3 ># 97 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 3 >namespace std >{ > using ::FILE; > using ::fpos_t; > > using ::clearerr; > using ::fclose; > using ::feof; > using ::ferror; > using ::fflush; > using ::fgetc; > using ::fgetpos; > using ::fgets; > using ::fopen; > using ::fprintf; > using ::fputc; > using ::fputs; > using ::fread; > using ::freopen; > using ::fscanf; > using ::fseek; > using ::fsetpos; > using ::ftell; > using ::fwrite; > using ::getc; > using ::getchar; > using ::gets; > using ::perror; > using ::printf; > using ::putc; > using ::putchar; > using ::puts; > using ::remove; > using ::rename; > using ::rewind; > using ::scanf; > using ::setbuf; > using ::setvbuf; > using ::sprintf; > using ::sscanf; > using ::tmpfile; > using ::tmpnam; > using ::ungetc; > using ::vfprintf; > using ::vprintf; > using ::vsprintf; >} ># 153 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 3 >namespace __gnu_cxx >{ ># 167 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cstdio" 3 > using ::snprintf; > using ::vfscanf; > using ::vscanf; > using ::vsnprintf; > using ::vsscanf; > >} > >namespace std >{ > using __gnu_cxx::snprintf; > using __gnu_cxx::vfscanf; > using __gnu_cxx::vscanf; > using __gnu_cxx::vsnprintf; > using __gnu_cxx::vsscanf; >} ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/clocale" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/clocale" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/clocale" 3 > ># 1 "/usr/include/locale.h" 1 3 4 ># 29 "/usr/include/locale.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 30 "/usr/include/locale.h" 2 3 4 ># 1 "/usr/include/bits/locale.h" 1 3 4 ># 27 "/usr/include/bits/locale.h" 3 4 >enum >{ > __LC_CTYPE = 0, > __LC_NUMERIC = 1, > __LC_TIME = 2, > __LC_COLLATE = 3, > __LC_MONETARY = 4, > __LC_MESSAGES = 5, > __LC_ALL = 6, > __LC_PAPER = 7, > __LC_NAME = 8, > __LC_ADDRESS = 9, > __LC_TELEPHONE = 10, > __LC_MEASUREMENT = 11, > __LC_IDENTIFICATION = 12 >}; ># 31 "/usr/include/locale.h" 2 3 4 > >extern "C" { ># 52 "/usr/include/locale.h" 3 4 >struct lconv >{ > > > char *decimal_point; > char *thousands_sep; > > > > > > char *grouping; > > > > > > char *int_curr_symbol; > char *currency_symbol; > char *mon_decimal_point; > char *mon_thousands_sep; > char *mon_grouping; > char *positive_sign; > char *negative_sign; > char int_frac_digits; > char frac_digits; > > char p_cs_precedes; > > char p_sep_by_space; > > char n_cs_precedes; > > char n_sep_by_space; > > > > > > > char p_sign_posn; > char n_sign_posn; > > > char int_p_cs_precedes; > > char int_p_sep_by_space; > > char int_n_cs_precedes; > > char int_n_sep_by_space; > > > > > > > char int_p_sign_posn; > char int_n_sign_posn; ># 119 "/usr/include/locale.h" 3 4 >}; > > > > > >extern char *setlocale (int __category, __const char *__locale) throw (); > > >extern struct lconv *localeconv (void) throw (); > > ># 148 "/usr/include/locale.h" 3 4 >typedef __locale_t locale_t; > > > > > >extern __locale_t newlocale (int __category_mask, __const char *__locale, > __locale_t __base) throw (); ># 189 "/usr/include/locale.h" 3 4 >extern __locale_t duplocale (__locale_t __dataset) throw (); > > > >extern void freelocale (__locale_t __dataset) throw (); > > > > > > >extern __locale_t uselocale (__locale_t __dataset) throw (); > > > > > > > >} ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/clocale" 2 3 > > > > > >namespace std >{ > using ::lconv; > using ::setlocale; > using ::localeconv; >} ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 2 3 ># 1 "/usr/include/langinfo.h" 1 3 4 ># 24 "/usr/include/langinfo.h" 3 4 ># 1 "/usr/include/nl_types.h" 1 3 4 ># 31 "/usr/include/nl_types.h" 3 4 >extern "C" { > > >typedef void *nl_catd; > > >typedef int nl_item; > > > > > >extern nl_catd catopen (__const char *__cat_name, int __flag); > > > >extern char *catgets (nl_catd __catalog, int __set, int __number, > __const char *__string) throw (); > > >extern int catclose (nl_catd __catalog) throw (); > >} ># 25 "/usr/include/langinfo.h" 2 3 4 > ># 1 "/usr/include/bits/locale.h" 1 3 4 ># 27 "/usr/include/langinfo.h" 2 3 4 > > >extern "C" { ># 43 "/usr/include/langinfo.h" 3 4 >enum >{ > > > > ABDAY_1 = (((__LC_TIME) << 16) | (0)), > > ABDAY_2, > > ABDAY_3, > > ABDAY_4, > > ABDAY_5, > > ABDAY_6, > > ABDAY_7, > > > > DAY_1, > > DAY_2, > > DAY_3, > > DAY_4, > > DAY_5, > > DAY_6, > > DAY_7, > > > > ABMON_1, > > ABMON_2, > > ABMON_3, > > ABMON_4, > > ABMON_5, > > ABMON_6, > > ABMON_7, > > ABMON_8, > > ABMON_9, > > ABMON_10, > > ABMON_11, > > ABMON_12, > > > > MON_1, > > MON_2, > > MON_3, > > MON_4, > > MON_5, > > MON_6, > > MON_7, > > MON_8, > > MON_9, > > MON_10, > > MON_11, > > MON_12, > > > AM_STR, > > PM_STR, > > > D_T_FMT, > > D_FMT, > > T_FMT, > > T_FMT_AMPM, > > > ERA, > > __ERA_YEAR, > > > > ERA_D_FMT, > > ALT_DIGITS, > > ERA_D_T_FMT, > > ERA_T_FMT, > > > _NL_TIME_ERA_NUM_ENTRIES, > _NL_TIME_ERA_ENTRIES, > > _NL_WABDAY_1, > _NL_WABDAY_2, > _NL_WABDAY_3, > _NL_WABDAY_4, > _NL_WABDAY_5, > _NL_WABDAY_6, > _NL_WABDAY_7, > > > _NL_WDAY_1, > _NL_WDAY_2, > _NL_WDAY_3, > _NL_WDAY_4, > _NL_WDAY_5, > _NL_WDAY_6, > _NL_WDAY_7, > > > _NL_WABMON_1, > _NL_WABMON_2, > _NL_WABMON_3, > _NL_WABMON_4, > _NL_WABMON_5, > _NL_WABMON_6, > _NL_WABMON_7, > _NL_WABMON_8, > _NL_WABMON_9, > _NL_WABMON_10, > _NL_WABMON_11, > _NL_WABMON_12, > > > _NL_WMON_1, > _NL_WMON_2, > _NL_WMON_3, > _NL_WMON_4, > _NL_WMON_5, > _NL_WMON_6, > _NL_WMON_7, > _NL_WMON_8, > _NL_WMON_9, > _NL_WMON_10, > _NL_WMON_11, > _NL_WMON_12, > > _NL_WAM_STR, > _NL_WPM_STR, > > _NL_WD_T_FMT, > _NL_WD_FMT, > _NL_WT_FMT, > _NL_WT_FMT_AMPM, > > _NL_WERA_YEAR, > _NL_WERA_D_FMT, > _NL_WALT_DIGITS, > _NL_WERA_D_T_FMT, > _NL_WERA_T_FMT, > > _NL_TIME_WEEK_NDAYS, > _NL_TIME_WEEK_1STDAY, > _NL_TIME_WEEK_1STWEEK, > _NL_TIME_FIRST_WEEKDAY, > _NL_TIME_FIRST_WORKDAY, > _NL_TIME_CAL_DIRECTION, > _NL_TIME_TIMEZONE, > > _DATE_FMT, > > _NL_W_DATE_FMT, > > _NL_TIME_CODESET, > > _NL_NUM_LC_TIME, > > > > > _NL_COLLATE_NRULES = (((__LC_COLLATE) << 16) | (0)), > _NL_COLLATE_RULESETS, > _NL_COLLATE_TABLEMB, > _NL_COLLATE_WEIGHTMB, > _NL_COLLATE_EXTRAMB, > _NL_COLLATE_INDIRECTMB, > _NL_COLLATE_GAP1, > _NL_COLLATE_GAP2, > _NL_COLLATE_GAP3, > _NL_COLLATE_TABLEWC, > _NL_COLLATE_WEIGHTWC, > _NL_COLLATE_EXTRAWC, > _NL_COLLATE_INDIRECTWC, > _NL_COLLATE_SYMB_HASH_SIZEMB, > _NL_COLLATE_SYMB_TABLEMB, > _NL_COLLATE_SYMB_EXTRAMB, > _NL_COLLATE_COLLSEQMB, > _NL_COLLATE_COLLSEQWC, > _NL_COLLATE_CODESET, > _NL_NUM_LC_COLLATE, > > > > > _NL_CTYPE_CLASS = (((__LC_CTYPE) << 16) | (0)), > _NL_CTYPE_TOUPPER, > _NL_CTYPE_GAP1, > _NL_CTYPE_TOLOWER, > _NL_CTYPE_GAP2, > _NL_CTYPE_CLASS32, > _NL_CTYPE_GAP3, > _NL_CTYPE_GAP4, > _NL_CTYPE_GAP5, > _NL_CTYPE_GAP6, > _NL_CTYPE_CLASS_NAMES, > _NL_CTYPE_MAP_NAMES, > _NL_CTYPE_WIDTH, > _NL_CTYPE_MB_CUR_MAX, > _NL_CTYPE_CODESET_NAME, > CODESET = _NL_CTYPE_CODESET_NAME, > > _NL_CTYPE_TOUPPER32, > _NL_CTYPE_TOLOWER32, > _NL_CTYPE_CLASS_OFFSET, > _NL_CTYPE_MAP_OFFSET, > _NL_CTYPE_INDIGITS_MB_LEN, > _NL_CTYPE_INDIGITS0_MB, > _NL_CTYPE_INDIGITS1_MB, > _NL_CTYPE_INDIGITS2_MB, > _NL_CTYPE_INDIGITS3_MB, > _NL_CTYPE_INDIGITS4_MB, > _NL_CTYPE_INDIGITS5_MB, > _NL_CTYPE_INDIGITS6_MB, > _NL_CTYPE_INDIGITS7_MB, > _NL_CTYPE_INDIGITS8_MB, > _NL_CTYPE_INDIGITS9_MB, > _NL_CTYPE_INDIGITS_WC_LEN, > _NL_CTYPE_INDIGITS0_WC, > _NL_CTYPE_INDIGITS1_WC, > _NL_CTYPE_INDIGITS2_WC, > _NL_CTYPE_INDIGITS3_WC, > _NL_CTYPE_INDIGITS4_WC, > _NL_CTYPE_INDIGITS5_WC, > _NL_CTYPE_INDIGITS6_WC, > _NL_CTYPE_INDIGITS7_WC, > _NL_CTYPE_INDIGITS8_WC, > _NL_CTYPE_INDIGITS9_WC, > _NL_CTYPE_OUTDIGIT0_MB, > _NL_CTYPE_OUTDIGIT1_MB, > _NL_CTYPE_OUTDIGIT2_MB, > _NL_CTYPE_OUTDIGIT3_MB, > _NL_CTYPE_OUTDIGIT4_MB, > _NL_CTYPE_OUTDIGIT5_MB, > _NL_CTYPE_OUTDIGIT6_MB, > _NL_CTYPE_OUTDIGIT7_MB, > _NL_CTYPE_OUTDIGIT8_MB, > _NL_CTYPE_OUTDIGIT9_MB, > _NL_CTYPE_OUTDIGIT0_WC, > _NL_CTYPE_OUTDIGIT1_WC, > _NL_CTYPE_OUTDIGIT2_WC, > _NL_CTYPE_OUTDIGIT3_WC, > _NL_CTYPE_OUTDIGIT4_WC, > _NL_CTYPE_OUTDIGIT5_WC, > _NL_CTYPE_OUTDIGIT6_WC, > _NL_CTYPE_OUTDIGIT7_WC, > _NL_CTYPE_OUTDIGIT8_WC, > _NL_CTYPE_OUTDIGIT9_WC, > _NL_CTYPE_TRANSLIT_TAB_SIZE, > _NL_CTYPE_TRANSLIT_FROM_IDX, > _NL_CTYPE_TRANSLIT_FROM_TBL, > _NL_CTYPE_TRANSLIT_TO_IDX, > _NL_CTYPE_TRANSLIT_TO_TBL, > _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN, > _NL_CTYPE_TRANSLIT_DEFAULT_MISSING, > _NL_CTYPE_TRANSLIT_IGNORE_LEN, > _NL_CTYPE_TRANSLIT_IGNORE, > _NL_CTYPE_MAP_TO_NONASCII, > _NL_CTYPE_EXTRA_MAP_1, > _NL_CTYPE_EXTRA_MAP_2, > _NL_CTYPE_EXTRA_MAP_3, > _NL_CTYPE_EXTRA_MAP_4, > _NL_CTYPE_EXTRA_MAP_5, > _NL_CTYPE_EXTRA_MAP_6, > _NL_CTYPE_EXTRA_MAP_7, > _NL_CTYPE_EXTRA_MAP_8, > _NL_CTYPE_EXTRA_MAP_9, > _NL_CTYPE_EXTRA_MAP_10, > _NL_CTYPE_EXTRA_MAP_11, > _NL_CTYPE_EXTRA_MAP_12, > _NL_CTYPE_EXTRA_MAP_13, > _NL_CTYPE_EXTRA_MAP_14, > _NL_NUM_LC_CTYPE, > > > > > __INT_CURR_SYMBOL = (((__LC_MONETARY) << 16) | (0)), > > > > __CURRENCY_SYMBOL, > > > > __MON_DECIMAL_POINT, > > > > __MON_THOUSANDS_SEP, > > > > __MON_GROUPING, > > > > __POSITIVE_SIGN, > > > > __NEGATIVE_SIGN, > > > > __INT_FRAC_DIGITS, > > > > __FRAC_DIGITS, > > > > __P_CS_PRECEDES, > > > > __P_SEP_BY_SPACE, > > > > __N_CS_PRECEDES, > > > > __N_SEP_BY_SPACE, > > > > __P_SIGN_POSN, > > > > __N_SIGN_POSN, > > > > _NL_MONETARY_CRNCYSTR, > > __INT_P_CS_PRECEDES, > > > > __INT_P_SEP_BY_SPACE, > > > > __INT_N_CS_PRECEDES, > > > > __INT_N_SEP_BY_SPACE, > > > > __INT_P_SIGN_POSN, > > > > __INT_N_SIGN_POSN, > > > > _NL_MONETARY_DUO_INT_CURR_SYMBOL, > _NL_MONETARY_DUO_CURRENCY_SYMBOL, > _NL_MONETARY_DUO_INT_FRAC_DIGITS, > _NL_MONETARY_DUO_FRAC_DIGITS, > _NL_MONETARY_DUO_P_CS_PRECEDES, > _NL_MONETARY_DUO_P_SEP_BY_SPACE, > _NL_MONETARY_DUO_N_CS_PRECEDES, > _NL_MONETARY_DUO_N_SEP_BY_SPACE, > _NL_MONETARY_DUO_INT_P_CS_PRECEDES, > _NL_MONETARY_DUO_INT_P_SEP_BY_SPACE, > _NL_MONETARY_DUO_INT_N_CS_PRECEDES, > _NL_MONETARY_DUO_INT_N_SEP_BY_SPACE, > _NL_MONETARY_DUO_P_SIGN_POSN, > _NL_MONETARY_DUO_N_SIGN_POSN, > _NL_MONETARY_DUO_INT_P_SIGN_POSN, > _NL_MONETARY_DUO_INT_N_SIGN_POSN, > _NL_MONETARY_UNO_VALID_FROM, > _NL_MONETARY_UNO_VALID_TO, > _NL_MONETARY_DUO_VALID_FROM, > _NL_MONETARY_DUO_VALID_TO, > _NL_MONETARY_CONVERSION_RATE, > _NL_MONETARY_DECIMAL_POINT_WC, > _NL_MONETARY_THOUSANDS_SEP_WC, > _NL_MONETARY_CODESET, > _NL_NUM_LC_MONETARY, > > > > __DECIMAL_POINT = (((__LC_NUMERIC) << 16) | (0)), > > > > RADIXCHAR = __DECIMAL_POINT, > > __THOUSANDS_SEP, > > > > THOUSEP = __THOUSANDS_SEP, > > __GROUPING, > > > > _NL_NUMERIC_DECIMAL_POINT_WC, > _NL_NUMERIC_THOUSANDS_SEP_WC, > _NL_NUMERIC_CODESET, > _NL_NUM_LC_NUMERIC, > > __YESEXPR = (((__LC_MESSAGES) << 16) | (0)), > > __NOEXPR, > > __YESSTR, > > > > __NOSTR, > > > > _NL_MESSAGES_CODESET, > _NL_NUM_LC_MESSAGES, > > _NL_PAPER_HEIGHT = (((__LC_PAPER) << 16) | (0)), > _NL_PAPER_WIDTH, > _NL_PAPER_CODESET, > _NL_NUM_LC_PAPER, > > _NL_NAME_NAME_FMT = (((__LC_NAME) << 16) | (0)), > _NL_NAME_NAME_GEN, > _NL_NAME_NAME_MR, > _NL_NAME_NAME_MRS, > _NL_NAME_NAME_MISS, > _NL_NAME_NAME_MS, > _NL_NAME_CODESET, > _NL_NUM_LC_NAME, > > _NL_ADDRESS_POSTAL_FMT = (((__LC_ADDRESS) << 16) | (0)), > _NL_ADDRESS_COUNTRY_NAME, > _NL_ADDRESS_COUNTRY_POST, > _NL_ADDRESS_COUNTRY_AB2, > _NL_ADDRESS_COUNTRY_AB3, > _NL_ADDRESS_COUNTRY_CAR, > _NL_ADDRESS_COUNTRY_NUM, > _NL_ADDRESS_COUNTRY_ISBN, > _NL_ADDRESS_LANG_NAME, > _NL_ADDRESS_LANG_AB, > _NL_ADDRESS_LANG_TERM, > _NL_ADDRESS_LANG_LIB, > _NL_ADDRESS_CODESET, > _NL_NUM_LC_ADDRESS, > > _NL_TELEPHONE_TEL_INT_FMT = (((__LC_TELEPHONE) << 16) | (0)), > _NL_TELEPHONE_TEL_DOM_FMT, > _NL_TELEPHONE_INT_SELECT, > _NL_TELEPHONE_INT_PREFIX, > _NL_TELEPHONE_CODESET, > _NL_NUM_LC_TELEPHONE, > > _NL_MEASUREMENT_MEASUREMENT = (((__LC_MEASUREMENT) << 16) | (0)), > _NL_MEASUREMENT_CODESET, > _NL_NUM_LC_MEASUREMENT, > > _NL_IDENTIFICATION_TITLE = (((__LC_IDENTIFICATION) << 16) | (0)), > _NL_IDENTIFICATION_SOURCE, > _NL_IDENTIFICATION_ADDRESS, > _NL_IDENTIFICATION_CONTACT, > _NL_IDENTIFICATION_EMAIL, > _NL_IDENTIFICATION_TEL, > _NL_IDENTIFICATION_FAX, > _NL_IDENTIFICATION_LANGUAGE, > _NL_IDENTIFICATION_TERRITORY, > _NL_IDENTIFICATION_AUDIENCE, > _NL_IDENTIFICATION_APPLICATION, > _NL_IDENTIFICATION_ABBREVIATION, > _NL_IDENTIFICATION_REVISION, > _NL_IDENTIFICATION_DATE, > _NL_IDENTIFICATION_CATEGORY, > _NL_IDENTIFICATION_CODESET, > _NL_NUM_LC_IDENTIFICATION, > > > _NL_NUM >}; ># 576 "/usr/include/langinfo.h" 3 4 >extern char *nl_langinfo (nl_item __item) throw (); ># 587 "/usr/include/langinfo.h" 3 4 >extern char *nl_langinfo_l (nl_item __item, __locale_t l); > > >} ># 45 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 2 3 ># 1 "/usr/include/iconv.h" 1 3 4 ># 24 "/usr/include/iconv.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 25 "/usr/include/iconv.h" 2 3 4 > > >extern "C" { > > >typedef void *iconv_t; > > > > > > > >extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode); > > > > >extern size_t iconv (iconv_t __cd, char **__restrict __inbuf, > size_t *__restrict __inbytesleft, > char **__restrict __outbuf, > size_t *__restrict __outbytesleft); > > > > > >extern int iconv_close (iconv_t __cd); > >} ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 2 3 ># 1 "/usr/include/libintl.h" 1 3 4 ># 35 "/usr/include/libintl.h" 3 4 >extern "C" { > > > > >extern char *gettext (__const char *__msgid) throw (); > > > >extern char *dgettext (__const char *__domainname, __const char *__msgid) > throw (); >extern char *__dgettext (__const char *__domainname, __const char *__msgid) > throw () __attribute__ ((__format_arg__ (2))); > > > >extern char *dcgettext (__const char *__domainname, > __const char *__msgid, int __category) throw (); >extern char *__dcgettext (__const char *__domainname, > __const char *__msgid, int __category) > throw () __attribute__ ((__format_arg__ (2))); > > > > >extern char *ngettext (__const char *__msgid1, __const char *__msgid2, > unsigned long int __n) > throw () __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2))); > > > >extern char *dngettext (__const char *__domainname, __const char *__msgid1, > __const char *__msgid2, unsigned long int __n) > throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); > > > >extern char *dcngettext (__const char *__domainname, __const char *__msgid1, > __const char *__msgid2, unsigned long int __n, > int __category) > throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3))); > > > > > >extern char *textdomain (__const char *__domainname) throw (); > > > >extern char *bindtextdomain (__const char *__domainname, > __const char *__dirname) throw (); > > > >extern char *bind_textdomain_codeset (__const char *__domainname, > __const char *__codeset) throw (); ># 120 "/usr/include/libintl.h" 3 4 >} ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 2 3 > > > > > > >namespace __gnu_cxx >{ > extern "C" __typeof(uselocale) __uselocale; >} > > >namespace std >{ > typedef __locale_t __c_locale; > > > > > > template<typename _Tv> > int > __convert_from_v(char* __out, const int __size, const char* __fmt, > > _Tv __v, const __c_locale& __cloc, int __prec = -1) > { > __c_locale __old = __gnu_cxx::__uselocale(__cloc); ># 83 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 3 > int __ret; > > if (__prec >= 0) > __ret = std::snprintf(__out, __size, __fmt, __prec, __v); > else > __ret = std::snprintf(__out, __size, __fmt, __v); ># 97 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++locale.h" 3 > __gnu_cxx::__uselocale(__old); > > > > > return __ret; > } >} ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++io.h" 1 3 ># 37 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++io.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr.h" 1 3 ># 96 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr-default.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr-default.h" 3 ># 1 "/usr/include/pthread.h" 1 3 4 ># 23 "/usr/include/pthread.h" 3 4 ># 1 "/usr/include/sched.h" 1 3 4 ># 29 "/usr/include/sched.h" 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 30 "/usr/include/sched.h" 2 3 4 > > ># 1 "/usr/include/bits/sched.h" 1 3 4 ># 62 "/usr/include/bits/sched.h" 3 4 >struct sched_param > { > int __sched_priority; > }; > >extern "C" { > > > >extern int clone (int (*__fn) (void *__arg), void *__child_stack, > int __flags, void *__arg) throw (); > > >} > > > > > > > >struct __sched_param > { > int __sched_priority; > }; ># 98 "/usr/include/bits/sched.h" 3 4 >typedef unsigned long int __cpu_mask; > > > > > > >typedef struct >{ > __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; >} cpu_set_t; ># 33 "/usr/include/sched.h" 2 3 4 > > > > >extern "C" { > > >extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) > throw (); > > >extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); > > >extern int sched_setscheduler (__pid_t __pid, int __policy, > __const struct sched_param *__param) throw (); > > >extern int sched_getscheduler (__pid_t __pid) throw (); > > >extern int sched_yield (void) throw (); > > >extern int sched_get_priority_max (int __algorithm) throw (); > > >extern int sched_get_priority_min (int __algorithm) throw (); > > >extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); ># 76 "/usr/include/sched.h" 3 4 >extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, > __const cpu_set_t *__cpuset) throw (); > > >extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, > cpu_set_t *__cpuset) throw (); > > >} ># 24 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 30 "/usr/include/time.h" 3 4 >extern "C" { > > > > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 39 "/usr/include/time.h" 2 3 4 > > > ># 1 "/usr/include/bits/time.h" 1 3 4 ># 43 "/usr/include/time.h" 2 3 4 ># 129 "/usr/include/time.h" 3 4 > > >struct tm >{ > int tm_sec; > int tm_min; > int tm_hour; > int tm_mday; > int tm_mon; > int tm_year; > int tm_wday; > int tm_yday; > int tm_isdst; > > > long int tm_gmtoff; > __const char *tm_zone; > > > > >}; > > > > > > > > >struct itimerspec > { > struct timespec it_interval; > struct timespec it_value; > }; > > >struct sigevent; ># 178 "/usr/include/time.h" 3 4 > > > >extern clock_t clock (void) throw (); > > >extern time_t time (time_t *__timer) throw (); > > >extern double difftime (time_t __time1, time_t __time0) > throw () __attribute__ ((__const__)); > > >extern time_t mktime (struct tm *__tp) throw (); > > > > > >extern size_t strftime (char *__restrict __s, size_t __maxsize, > __const char *__restrict __format, > __const struct tm *__restrict __tp) throw (); > > > > > >extern char *strptime (__const char *__restrict __s, > __const char *__restrict __fmt, struct tm *__tp) > throw (); > > > > > > > >extern size_t strftime_l (char *__restrict __s, size_t __maxsize, > __const char *__restrict __format, > __const struct tm *__restrict __tp, > __locale_t __loc) throw (); > >extern char *strptime_l (__const char *__restrict __s, > __const char *__restrict __fmt, struct tm *__tp, > __locale_t __loc) throw (); > > > > > > >extern struct tm *gmtime (__const time_t *__timer) throw (); > > > >extern struct tm *localtime (__const time_t *__timer) throw (); > > > > > >extern struct tm *gmtime_r (__const time_t *__restrict __timer, > struct tm *__restrict __tp) throw (); > > > >extern struct tm *localtime_r (__const time_t *__restrict __timer, > struct tm *__restrict __tp) throw (); > > > > > >extern char *asctime (__const struct tm *__tp) throw (); > > >extern char *ctime (__const time_t *__timer) throw (); > > > > > > > >extern char *asctime_r (__const struct tm *__restrict __tp, > char *__restrict __buf) throw (); > > >extern char *ctime_r (__const time_t *__restrict __timer, > char *__restrict __buf) throw (); > > > > >extern char *__tzname[2]; >extern int __daylight; >extern long int __timezone; > > > > >extern char *tzname[2]; > > > >extern void tzset (void) throw (); > > > >extern int daylight; >extern long int timezone; > > > > > >extern int stime (__const time_t *__when) throw (); ># 309 "/usr/include/time.h" 3 4 >extern time_t timegm (struct tm *__tp) throw (); > > >extern time_t timelocal (struct tm *__tp) throw (); > > >extern int dysize (int __year) throw () __attribute__ ((__const__)); ># 324 "/usr/include/time.h" 3 4 >extern int nanosleep (__const struct timespec *__requested_time, > struct timespec *__remaining); > > > >extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); > > >extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); > > >extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) > throw (); > > > > > > >extern int clock_nanosleep (clockid_t __clock_id, int __flags, > __const struct timespec *__req, > struct timespec *__rem); > > >extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); > > > > >extern int timer_create (clockid_t __clock_id, > struct sigevent *__restrict __evp, > timer_t *__restrict __timerid) throw (); > > >extern int timer_delete (timer_t __timerid) throw (); > > >extern int timer_settime (timer_t __timerid, int __flags, > __const struct itimerspec *__restrict __value, > struct itimerspec *__restrict __ovalue) throw (); > > >extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) > throw (); > > >extern int timer_getoverrun (timer_t __timerid) throw (); ># 386 "/usr/include/time.h" 3 4 >extern int getdate_err; ># 395 "/usr/include/time.h" 3 4 >extern struct tm *getdate (__const char *__string); ># 409 "/usr/include/time.h" 3 4 >extern int getdate_r (__const char *__restrict __string, > struct tm *__restrict __resbufp); > > >} ># 25 "/usr/include/pthread.h" 2 3 4 > > ># 1 "/usr/include/signal.h" 1 3 4 ># 31 "/usr/include/signal.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 34 "/usr/include/signal.h" 2 3 4 ># 395 "/usr/include/signal.h" 3 4 >} ># 28 "/usr/include/pthread.h" 2 3 4 > ># 1 "/usr/include/bits/setjmp.h" 1 3 4 ># 38 "/usr/include/bits/setjmp.h" 3 4 >typedef int __jmp_buf[6]; ># 30 "/usr/include/pthread.h" 2 3 4 > > > >enum >{ > PTHREAD_CREATE_JOINABLE, > > PTHREAD_CREATE_DETACHED > >}; > > > >enum >{ > PTHREAD_MUTEX_TIMED_NP, > PTHREAD_MUTEX_RECURSIVE_NP, > PTHREAD_MUTEX_ERRORCHECK_NP, > PTHREAD_MUTEX_ADAPTIVE_NP > > , > PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, > PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, > PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, > PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL > > > > , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP > >}; ># 77 "/usr/include/pthread.h" 3 4 >enum >{ > PTHREAD_RWLOCK_PREFER_READER_NP, > PTHREAD_RWLOCK_PREFER_WRITER_NP, > PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, > PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP >}; ># 96 "/usr/include/pthread.h" 3 4 >enum >{ > PTHREAD_INHERIT_SCHED, > > PTHREAD_EXPLICIT_SCHED > >}; > > > >enum >{ > PTHREAD_SCOPE_SYSTEM, > > PTHREAD_SCOPE_PROCESS > >}; > > > >enum >{ > PTHREAD_PROCESS_PRIVATE, > > PTHREAD_PROCESS_SHARED > >}; ># 131 "/usr/include/pthread.h" 3 4 >struct _pthread_cleanup_buffer >{ > void (*__routine) (void *); > void *__arg; > int __canceltype; > struct _pthread_cleanup_buffer *__prev; >}; > > >enum >{ > PTHREAD_CANCEL_ENABLE, > > PTHREAD_CANCEL_DISABLE > >}; >enum >{ > PTHREAD_CANCEL_DEFERRED, > > PTHREAD_CANCEL_ASYNCHRONOUS > >}; ># 169 "/usr/include/pthread.h" 3 4 >extern "C" { > > > > >extern int pthread_create (pthread_t *__restrict __newthread, > __const pthread_attr_t *__restrict __attr, > void *(*__start_routine) (void *), > void *__restrict __arg) throw (); > > > > > >extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); > > > > > > > >extern int pthread_join (pthread_t __th, void **__thread_return); > > > > >extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); > > > > > > > >extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, > __const struct timespec *__abstime); > > > > > > >extern int pthread_detach (pthread_t __th) throw (); > > > >extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); > > >extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw (); > > > > > > > >extern int pthread_attr_init (pthread_attr_t *__attr) throw (); > > >extern int pthread_attr_destroy (pthread_attr_t *__attr) throw (); > > >extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, > int *__detachstate) throw (); > > >extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, > int __detachstate) throw (); > > > >extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr, > size_t *__guardsize) throw (); > > >extern int pthread_attr_setguardsize (pthread_attr_t *__attr, > size_t __guardsize) throw (); > > > >extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict > __attr, > struct sched_param *__restrict __param) > throw (); > > >extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, > __const struct sched_param *__restrict > __param) throw (); > > >extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict > __attr, int *__restrict __policy) > throw (); > > >extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) > throw (); > > >extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict > __attr, int *__restrict __inherit) > throw (); > > >extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, > int __inherit) throw (); > > > >extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr, > int *__restrict __scope) throw (); > > >extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) > throw (); > > >extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict > __attr, void **__restrict __stackaddr) > throw () __attribute__ ((__deprecated__)); > > > > > >extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, > void *__stackaddr) > throw () __attribute__ ((__deprecated__)); > > >extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict > __attr, size_t *__restrict __stacksize) > throw (); > > > > >extern int pthread_attr_setstacksize (pthread_attr_t *__attr, > size_t __stacksize) throw (); > > > >extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr, > void **__restrict __stackaddr, > size_t *__restrict __stacksize) throw (); > > > > >extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, > size_t __stacksize) throw (); > > > > > >extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, > size_t __cpusetsize, > __const cpu_set_t *__cpuset) throw (); > > > >extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr, > size_t __cpusetsize, > cpu_set_t *__cpuset) throw (); > > > > > >extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) throw (); > > > > > > > >extern int pthread_setschedparam (pthread_t __target_thread, int __policy, > __const struct sched_param *__param) > throw (); > > >extern int pthread_getschedparam (pthread_t __target_thread, > int *__restrict __policy, > struct sched_param *__restrict __param) > throw (); > > > > >extern int pthread_getconcurrency (void) throw (); > > >extern int pthread_setconcurrency (int __level) throw (); > > > > > > > >extern int pthread_yield (void) throw (); > > > > >extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, > __const cpu_set_t *__cpuset) throw (); > > >extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, > cpu_set_t *__cpuset) throw (); ># 394 "/usr/include/pthread.h" 3 4 >extern int pthread_once (pthread_once_t *__once_control, > void (*__init_routine) (void)) throw (); ># 406 "/usr/include/pthread.h" 3 4 >extern int pthread_setcancelstate (int __state, int *__oldstate); > > > >extern int pthread_setcanceltype (int __type, int *__oldtype); > > >extern int pthread_cancel (pthread_t __th); > > > > >extern void pthread_testcancel (void); > > > > >typedef struct >{ > struct > { > __jmp_buf __cancel_jmp_buf; > int __mask_was_saved; > } __cancel_jmp_buf[1]; > void *__pad[4]; >} __pthread_unwind_buf_t __attribute__ ((__aligned__)); ># 440 "/usr/include/pthread.h" 3 4 >struct __pthread_cleanup_frame >{ > void (*__cancel_routine) (void *); > void *__cancel_arg; > int __do_it; > int __cancel_type; >}; > > > > >class __pthread_cleanup_class >{ > void (*__cancel_routine) (void *); > void *__cancel_arg; > int __do_it; > int __cancel_type; > > public: > __pthread_cleanup_class (void (*__fct) (void *), void *__arg) > : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } > ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } > void __setdoit (int __newval) { __do_it = __newval; } > void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, > &__cancel_type); } > void __restore () const { pthread_setcanceltype (__cancel_type, 0); } >}; ># 640 "/usr/include/pthread.h" 3 4 >struct __jmp_buf_tag; >extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) throw (); > > > > > >extern int pthread_mutex_init (pthread_mutex_t *__mutex, > __const pthread_mutexattr_t *__mutexattr) > throw (); > > >extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) throw (); > > >extern int pthread_mutex_trylock (pthread_mutex_t *_mutex) throw (); > > >extern int pthread_mutex_lock (pthread_mutex_t *__mutex) throw (); > > > >extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, > __const struct timespec *__restrict > __abstime) throw (); > > > >extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) throw (); > > > > > > >extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw (); > > >extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw (); > > >extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __pshared) throw (); > > >extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, > int __pshared) throw (); > > > >extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict > __attr, int *__restrict __kind) throw (); > > > > >extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) > throw (); ># 707 "/usr/include/pthread.h" 3 4 >extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, > __const pthread_rwlockattr_t *__restrict > __attr) throw (); > > >extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) throw (); > > >extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) throw (); > > >extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) throw (); > > > >extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, > __const struct timespec *__restrict > __abstime) throw (); > > > >extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) throw (); > > >extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) throw (); > > > >extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, > __const struct timespec *__restrict > __abstime) throw (); > > > >extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) throw (); > > > > > >extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) throw (); > > >extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) throw (); > > >extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t * > __restrict __attr, > int *__restrict __pshared) throw (); > > >extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, > int __pshared) throw (); > > >extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t * > __restrict __attr, > int *__restrict __pref) throw (); > > >extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, > int __pref) throw (); > > > > > > > >extern int pthread_cond_init (pthread_cond_t *__restrict __cond, > __const pthread_condattr_t *__restrict > __cond_attr) throw (); > > >extern int pthread_cond_destroy (pthread_cond_t *__cond) throw (); > > >extern int pthread_cond_signal (pthread_cond_t *__cond) throw (); > > >extern int pthread_cond_broadcast (pthread_cond_t *__cond) throw (); > > > > > > >extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, > pthread_mutex_t *__restrict __mutex); ># 804 "/usr/include/pthread.h" 3 4 >extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, > pthread_mutex_t *__restrict __mutex, > __const struct timespec *__restrict > __abstime); > > > > >extern int pthread_condattr_init (pthread_condattr_t *__attr) throw (); > > >extern int pthread_condattr_destroy (pthread_condattr_t *__attr) throw (); > > >extern int pthread_condattr_getpshared (__const pthread_condattr_t * > __restrict __attr, > int *__restrict __pshared) throw (); > > >extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, > int __pshared) throw (); > > > >extern int pthread_condattr_getclock (__const pthread_condattr_t * > __restrict __attr, > __clockid_t *__restrict __clock_id) > throw (); > > >extern int pthread_condattr_setclock (pthread_condattr_t *__attr, > __clockid_t __clock_id) throw (); ># 845 "/usr/include/pthread.h" 3 4 >extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) > throw (); > > >extern int pthread_spin_destroy (pthread_spinlock_t *__lock) throw (); > > >extern int pthread_spin_lock (pthread_spinlock_t *__lock) throw (); > > >extern int pthread_spin_trylock (pthread_spinlock_t *__lock) throw (); > > >extern int pthread_spin_unlock (pthread_spinlock_t *__lock) throw (); > > > > > > >extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, > __const pthread_barrierattr_t *__restrict > __attr, unsigned int __count) throw (); > > >extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) throw (); > > >extern int pthread_barrier_wait (pthread_barrier_t *__barrier) throw (); > > > >extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) throw (); > > >extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) throw (); > > >extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t * > __restrict __attr, > int *__restrict __pshared) throw (); > > >extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, > int __pshared) throw (); ># 901 "/usr/include/pthread.h" 3 4 >extern int pthread_key_create (pthread_key_t *__key, > void (*__destr_function) (void *)) throw (); > > >extern int pthread_key_delete (pthread_key_t __key) throw (); > > >extern void *pthread_getspecific (pthread_key_t __key) throw (); > > >extern int pthread_setspecific (pthread_key_t __key, > __const void *__pointer) throw (); > > > > >extern int pthread_getcpuclockid (pthread_t __thread_id, > __clockid_t *__clock_id) throw (); ># 933 "/usr/include/pthread.h" 3 4 >extern int pthread_atfork (void (*__prepare) (void), > void (*__parent) (void), > void (*__child) (void)) throw (); > >} ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr-default.h" 2 3 ># 1 "/usr/include/unistd.h" 1 3 4 ># 28 "/usr/include/unistd.h" 3 4 >extern "C" { ># 171 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/bits/posix_opt.h" 1 3 4 ># 172 "/usr/include/unistd.h" 2 3 4 > > > ># 1 "/usr/include/bits/environments.h" 1 3 4 ># 23 "/usr/include/bits/environments.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 24 "/usr/include/bits/environments.h" 2 3 4 ># 176 "/usr/include/unistd.h" 2 3 4 ># 195 "/usr/include/unistd.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 196 "/usr/include/unistd.h" 2 3 4 ># 236 "/usr/include/unistd.h" 3 4 >typedef __intptr_t intptr_t; > > > > > > >typedef __socklen_t socklen_t; ># 256 "/usr/include/unistd.h" 3 4 >extern int access (__const char *__name, int __type) throw (); > > > > >extern int euidaccess (__const char *__name, int __type) throw (); ># 286 "/usr/include/unistd.h" 3 4 >extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw (); ># 298 "/usr/include/unistd.h" 3 4 >extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) throw (); > > > > > > >extern int close (int __fd); > > > > > > >extern ssize_t read (int __fd, void *__buf, size_t __nbytes); > > > > > >extern ssize_t write (int __fd, __const void *__buf, size_t __n); ># 328 "/usr/include/unistd.h" 3 4 >extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, > __off_t __offset); > > > > > > >extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n, > __off_t __offset); ># 356 "/usr/include/unistd.h" 3 4 >extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, > __off64_t __offset); > > >extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, > __off64_t __offset); > > > > > > > >extern int pipe (int __pipedes[2]) throw (); ># 378 "/usr/include/unistd.h" 3 4 >extern unsigned int alarm (unsigned int __seconds) throw (); ># 390 "/usr/include/unistd.h" 3 4 >extern unsigned int sleep (unsigned int __seconds); > > > > > > >extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) > throw (); > > > > > > >extern int usleep (__useconds_t __useconds); ># 414 "/usr/include/unistd.h" 3 4 >extern int pause (void); > > > >extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) > throw (); > > > >extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw (); > > > > >extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) > throw (); > > > > >extern int chdir (__const char *__path) throw (); > > > >extern int fchdir (int __fd) throw (); ># 448 "/usr/include/unistd.h" 3 4 >extern char *getcwd (char *__buf, size_t __size) throw (); > > > > > >extern char *get_current_dir_name (void) throw (); > > > > > > >extern char *getwd (char *__buf) throw (); > > > > >extern int dup (int __fd) throw (); > > >extern int dup2 (int __fd, int __fd2) throw (); > > >extern char **__environ; > >extern char **environ; > > > > > >extern int execve (__const char *__path, char *__const __argv[], > char *__const __envp[]) throw (); > > > > >extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) > throw (); > > > > >extern int execv (__const char *__path, char *__const __argv[]) throw (); > > > >extern int execle (__const char *__path, __const char *__arg, ...) throw (); > > > >extern int execl (__const char *__path, __const char *__arg, ...) throw (); > > > >extern int execvp (__const char *__file, char *__const __argv[]) throw (); > > > > >extern int execlp (__const char *__file, __const char *__arg, ...) throw (); > > > > >extern int nice (int __inc) throw (); > > > > >extern void _exit (int __status) __attribute__ ((__noreturn__)); > > > > > ># 1 "/usr/include/bits/confname.h" 1 3 4 ># 26 "/usr/include/bits/confname.h" 3 4 >enum > { > _PC_LINK_MAX, > > _PC_MAX_CANON, > > _PC_MAX_INPUT, > > _PC_NAME_MAX, > > _PC_PATH_MAX, > > _PC_PIPE_BUF, > > _PC_CHOWN_RESTRICTED, > > _PC_NO_TRUNC, > > _PC_VDISABLE, > > _PC_SYNC_IO, > > _PC_ASYNC_IO, > > _PC_PRIO_IO, > > _PC_SOCK_MAXBUF, > > _PC_FILESIZEBITS, > > _PC_REC_INCR_XFER_SIZE, > > _PC_REC_MAX_XFER_SIZE, > > _PC_REC_MIN_XFER_SIZE, > > _PC_REC_XFER_ALIGN, > > _PC_ALLOC_SIZE_MIN, > > _PC_SYMLINK_MAX, > > _PC_2_SYMLINKS > > }; > > >enum > { > _SC_ARG_MAX, > > _SC_CHILD_MAX, > > _SC_CLK_TCK, > > _SC_NGROUPS_MAX, > > _SC_OPEN_MAX, > > _SC_STREAM_MAX, > > _SC_TZNAME_MAX, > > _SC_JOB_CONTROL, > > _SC_SAVED_IDS, > > _SC_REALTIME_SIGNALS, > > _SC_PRIORITY_SCHEDULING, > > _SC_TIMERS, > > _SC_ASYNCHRONOUS_IO, > > _SC_PRIORITIZED_IO, > > _SC_SYNCHRONIZED_IO, > > _SC_FSYNC, > > _SC_MAPPED_FILES, > > _SC_MEMLOCK, > > _SC_MEMLOCK_RANGE, > > _SC_MEMORY_PROTECTION, > > _SC_MESSAGE_PASSING, > > _SC_SEMAPHORES, > > _SC_SHARED_MEMORY_OBJECTS, > > _SC_AIO_LISTIO_MAX, > > _SC_AIO_MAX, > > _SC_AIO_PRIO_DELTA_MAX, > > _SC_DELAYTIMER_MAX, > > _SC_MQ_OPEN_MAX, > > _SC_MQ_PRIO_MAX, > > _SC_VERSION, > > _SC_PAGESIZE, > > > _SC_RTSIG_MAX, > > _SC_SEM_NSEMS_MAX, > > _SC_SEM_VALUE_MAX, > > _SC_SIGQUEUE_MAX, > > _SC_TIMER_MAX, > > > > > _SC_BC_BASE_MAX, > > _SC_BC_DIM_MAX, > > _SC_BC_SCALE_MAX, > > _SC_BC_STRING_MAX, > > _SC_COLL_WEIGHTS_MAX, > > _SC_EQUIV_CLASS_MAX, > > _SC_EXPR_NEST_MAX, > > _SC_LINE_MAX, > > _SC_RE_DUP_MAX, > > _SC_CHARCLASS_NAME_MAX, > > > _SC_2_VERSION, > > _SC_2_C_BIND, > > _SC_2_C_DEV, > > _SC_2_FORT_DEV, > > _SC_2_FORT_RUN, > > _SC_2_SW_DEV, > > _SC_2_LOCALEDEF, > > > _SC_PII, > > _SC_PII_XTI, > > _SC_PII_SOCKET, > > _SC_PII_INTERNET, > > _SC_PII_OSI, > > _SC_POLL, > > _SC_SELECT, > > _SC_UIO_MAXIOV, > > _SC_IOV_MAX = _SC_UIO_MAXIOV, > > _SC_PII_INTERNET_STREAM, > > _SC_PII_INTERNET_DGRAM, > > _SC_PII_OSI_COTS, > > _SC_PII_OSI_CLTS, > > _SC_PII_OSI_M, > > _SC_T_IOV_MAX, > > > > _SC_THREADS, > > _SC_THREAD_SAFE_FUNCTIONS, > > _SC_GETGR_R_SIZE_MAX, > > _SC_GETPW_R_SIZE_MAX, > > _SC_LOGIN_NAME_MAX, > > _SC_TTY_NAME_MAX, > > _SC_THREAD_DESTRUCTOR_ITERATIONS, > > _SC_THREAD_KEYS_MAX, > > _SC_THREAD_STACK_MIN, > > _SC_THREAD_THREADS_MAX, > > _SC_THREAD_ATTR_STACKADDR, > > _SC_THREAD_ATTR_STACKSIZE, > > _SC_THREAD_PRIORITY_SCHEDULING, > > _SC_THREAD_PRIO_INHERIT, > > _SC_THREAD_PRIO_PROTECT, > > _SC_THREAD_PROCESS_SHARED, > > > _SC_NPROCESSORS_CONF, > > _SC_NPROCESSORS_ONLN, > > _SC_PHYS_PAGES, > > _SC_AVPHYS_PAGES, > > _SC_ATEXIT_MAX, > > _SC_PASS_MAX, > > > _SC_XOPEN_VERSION, > > _SC_XOPEN_XCU_VERSION, > > _SC_XOPEN_UNIX, > > _SC_XOPEN_CRYPT, > > _SC_XOPEN_ENH_I18N, > > _SC_XOPEN_SHM, > > > _SC_2_CHAR_TERM, > > _SC_2_C_VERSION, > > _SC_2_UPE, > > > _SC_XOPEN_XPG2, > > _SC_XOPEN_XPG3, > > _SC_XOPEN_XPG4, > > > _SC_CHAR_BIT, > > _SC_CHAR_MAX, > > _SC_CHAR_MIN, > > _SC_INT_MAX, > > _SC_INT_MIN, > > _SC_LONG_BIT, > > _SC_WORD_BIT, > > _SC_MB_LEN_MAX, > > _SC_NZERO, > > _SC_SSIZE_MAX, > > _SC_SCHAR_MAX, > > _SC_SCHAR_MIN, > > _SC_SHRT_MAX, > > _SC_SHRT_MIN, > > _SC_UCHAR_MAX, > > _SC_UINT_MAX, > > _SC_ULONG_MAX, > > _SC_USHRT_MAX, > > > _SC_NL_ARGMAX, > > _SC_NL_LANGMAX, > > _SC_NL_MSGMAX, > > _SC_NL_NMAX, > > _SC_NL_SETMAX, > > _SC_NL_TEXTMAX, > > > _SC_XBS5_ILP32_OFF32, > > _SC_XBS5_ILP32_OFFBIG, > > _SC_XBS5_LP64_OFF64, > > _SC_XBS5_LPBIG_OFFBIG, > > > _SC_XOPEN_LEGACY, > > _SC_XOPEN_REALTIME, > > _SC_XOPEN_REALTIME_THREADS, > > > _SC_ADVISORY_INFO, > > _SC_BARRIERS, > > _SC_BASE, > > _SC_C_LANG_SUPPORT, > > _SC_C_LANG_SUPPORT_R, > > _SC_CLOCK_SELECTION, > > _SC_CPUTIME, > > _SC_THREAD_CPUTIME, > > _SC_DEVICE_IO, > > _SC_DEVICE_SPECIFIC, > > _SC_DEVICE_SPECIFIC_R, > > _SC_FD_MGMT, > > _SC_FIFO, > > _SC_PIPE, > > _SC_FILE_ATTRIBUTES, > > _SC_FILE_LOCKING, > > _SC_FILE_SYSTEM, > > _SC_MONOTONIC_CLOCK, > > _SC_MULTI_PROCESS, > > _SC_SINGLE_PROCESS, > > _SC_NETWORKING, > > _SC_READER_WRITER_LOCKS, > > _SC_SPIN_LOCKS, > > _SC_REGEXP, > > _SC_REGEX_VERSION, > > _SC_SHELL, > > _SC_SIGNALS, > > _SC_SPAWN, > > _SC_SPORADIC_SERVER, > > _SC_THREAD_SPORADIC_SERVER, > > _SC_SYSTEM_DATABASE, > > _SC_SYSTEM_DATABASE_R, > > _SC_TIMEOUTS, > > _SC_TYPED_MEMORY_OBJECTS, > > _SC_USER_GROUPS, > > _SC_USER_GROUPS_R, > > _SC_2_PBS, > > _SC_2_PBS_ACCOUNTING, > > _SC_2_PBS_LOCATE, > > _SC_2_PBS_MESSAGE, > > _SC_2_PBS_TRACK, > > _SC_SYMLOOP_MAX, > > _SC_STREAMS, > > _SC_2_PBS_CHECKPOINT, > > > _SC_V6_ILP32_OFF32, > > _SC_V6_ILP32_OFFBIG, > > _SC_V6_LP64_OFF64, > > _SC_V6_LPBIG_OFFBIG, > > > _SC_HOST_NAME_MAX, > > _SC_TRACE, > > _SC_TRACE_EVENT_FILTER, > > _SC_TRACE_INHERIT, > > _SC_TRACE_LOG, > > > _SC_LEVEL1_ICACHE_SIZE, > > _SC_LEVEL1_ICACHE_ASSOC, > > _SC_LEVEL1_ICACHE_LINESIZE, > > _SC_LEVEL1_DCACHE_SIZE, > > _SC_LEVEL1_DCACHE_ASSOC, > > _SC_LEVEL1_DCACHE_LINESIZE, > > _SC_LEVEL2_CACHE_SIZE, > > _SC_LEVEL2_CACHE_ASSOC, > > _SC_LEVEL2_CACHE_LINESIZE, > > _SC_LEVEL3_CACHE_SIZE, > > _SC_LEVEL3_CACHE_ASSOC, > > _SC_LEVEL3_CACHE_LINESIZE, > > _SC_LEVEL4_CACHE_SIZE, > > _SC_LEVEL4_CACHE_ASSOC, > > _SC_LEVEL4_CACHE_LINESIZE > > > }; > > >enum > { > _CS_PATH, > > > _CS_V6_WIDTH_RESTRICTED_ENVS, > > > _CS_GNU_LIBC_VERSION, > > _CS_GNU_LIBPTHREAD_VERSION, > > > _CS_LFS_CFLAGS = 1000, > > _CS_LFS_LDFLAGS, > > _CS_LFS_LIBS, > > _CS_LFS_LINTFLAGS, > > _CS_LFS64_CFLAGS, > > _CS_LFS64_LDFLAGS, > > _CS_LFS64_LIBS, > > _CS_LFS64_LINTFLAGS, > > > _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, > > _CS_XBS5_ILP32_OFF32_LDFLAGS, > > _CS_XBS5_ILP32_OFF32_LIBS, > > _CS_XBS5_ILP32_OFF32_LINTFLAGS, > > _CS_XBS5_ILP32_OFFBIG_CFLAGS, > > _CS_XBS5_ILP32_OFFBIG_LDFLAGS, > > _CS_XBS5_ILP32_OFFBIG_LIBS, > > _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, > > _CS_XBS5_LP64_OFF64_CFLAGS, > > _CS_XBS5_LP64_OFF64_LDFLAGS, > > _CS_XBS5_LP64_OFF64_LIBS, > > _CS_XBS5_LP64_OFF64_LINTFLAGS, > > _CS_XBS5_LPBIG_OFFBIG_CFLAGS, > > _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, > > _CS_XBS5_LPBIG_OFFBIG_LIBS, > > _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, > > > _CS_POSIX_V6_ILP32_OFF32_CFLAGS, > > _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, > > _CS_POSIX_V6_ILP32_OFF32_LIBS, > > _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, > > _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, > > _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, > > _CS_POSIX_V6_ILP32_OFFBIG_LIBS, > > _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, > > _CS_POSIX_V6_LP64_OFF64_CFLAGS, > > _CS_POSIX_V6_LP64_OFF64_LDFLAGS, > > _CS_POSIX_V6_LP64_OFF64_LIBS, > > _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, > > _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, > > _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, > > _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, > > _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS > > }; ># 526 "/usr/include/unistd.h" 2 3 4 > > >extern long int pathconf (__const char *__path, int __name) throw (); > > >extern long int fpathconf (int __fd, int __name) throw (); > > >extern long int sysconf (int __name) throw () __attribute__ ((__const__)); > > > >extern size_t confstr (int __name, char *__buf, size_t __len) throw (); > > > > >extern __pid_t getpid (void) throw (); > > >extern __pid_t getppid (void) throw (); > > > > >extern __pid_t getpgrp (void) throw (); ># 561 "/usr/include/unistd.h" 3 4 >extern __pid_t __getpgid (__pid_t __pid) throw (); > >extern __pid_t getpgid (__pid_t __pid) throw (); > > > > > > >extern int setpgid (__pid_t __pid, __pid_t __pgid) throw (); ># 587 "/usr/include/unistd.h" 3 4 >extern int setpgrp (void) throw (); ># 605 "/usr/include/unistd.h" 3 4 >extern __pid_t setsid (void) throw (); > > > >extern __pid_t getsid (__pid_t __pid) throw (); > > > >extern __uid_t getuid (void) throw (); > > >extern __uid_t geteuid (void) throw (); > > >extern __gid_t getgid (void) throw (); > > >extern __gid_t getegid (void) throw (); > > > > >extern int getgroups (int __size, __gid_t __list[]) throw (); > > > >extern int group_member (__gid_t __gid) throw (); > > > > > > >extern int setuid (__uid_t __uid) throw (); > > > > >extern int setreuid (__uid_t __ruid, __uid_t __euid) throw (); > > > > >extern int seteuid (__uid_t __uid) throw (); > > > > > > >extern int setgid (__gid_t __gid) throw (); > > > > >extern int setregid (__gid_t __rgid, __gid_t __egid) throw (); > > > > >extern int setegid (__gid_t __gid) throw (); > > > > > >extern int getresuid (__uid_t *__euid, __uid_t *__ruid, __uid_t *__suid); > > > >extern int getresgid (__gid_t *__egid, __gid_t *__rgid, __gid_t *__sgid); > > > >extern int setresuid (__uid_t __euid, __uid_t __ruid, __uid_t __suid); > > > >extern int setresgid (__gid_t __egid, __gid_t __rgid, __gid_t __sgid); > > > > > > >extern __pid_t fork (void) throw (); > > > > > > >extern __pid_t vfork (void) throw (); > > > > > >extern char *ttyname (int __fd) throw (); > > > >extern int ttyname_r (int __fd, char *__buf, size_t __buflen) throw (); > > > >extern int isatty (int __fd) throw (); > > > > > >extern int ttyslot (void) throw (); > > > > >extern int link (__const char *__from, __const char *__to) throw (); > > > >extern int symlink (__const char *__from, __const char *__to) throw (); > > > > >extern int readlink (__const char *__restrict __path, char *__restrict __buf, > size_t __len) throw (); > > > >extern int unlink (__const char *__name) throw (); > > >extern int rmdir (__const char *__path) throw (); > > > >extern __pid_t tcgetpgrp (int __fd) throw (); > > >extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw (); > > > > > > >extern char *getlogin (void); > > > > > > > >extern int getlogin_r (char *__name, size_t __name_len); > > > > >extern int setlogin (__const char *__name) throw (); ># 775 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/getopt.h" 1 3 4 ># 50 "/usr/include/getopt.h" 3 4 >extern "C" { ># 59 "/usr/include/getopt.h" 3 4 >extern char *optarg; ># 73 "/usr/include/getopt.h" 3 4 >extern int optind; > > > > >extern int opterr; > > > >extern int optopt; ># 152 "/usr/include/getopt.h" 3 4 >extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) > throw (); ># 171 "/usr/include/getopt.h" 3 4 >} ># 776 "/usr/include/unistd.h" 2 3 4 > > > > > > > >extern int gethostname (char *__name, size_t __len) throw (); > > > > > > >extern int sethostname (__const char *__name, size_t __len) throw (); > > > >extern int sethostid (long int __id) throw (); > > > > > >extern int getdomainname (char *__name, size_t __len) throw (); >extern int setdomainname (__const char *__name, size_t __len) throw (); > > > > > >extern int vhangup (void) throw (); > > >extern int revoke (__const char *__file) throw (); > > > > > > > >extern int profil (unsigned short int *__sample_buffer, size_t __size, > size_t __offset, unsigned int __scale) throw (); > > > > > >extern int acct (__const char *__name) throw (); > > > >extern char *getusershell (void) throw (); >extern void endusershell (void) throw (); >extern void setusershell (void) throw (); > > > > > >extern int daemon (int __nochdir, int __noclose) throw (); > > > > > > >extern int chroot (__const char *__path) throw (); > > > >extern char *getpass (__const char *__prompt); ># 857 "/usr/include/unistd.h" 3 4 >extern int fsync (int __fd); > > > > > > >extern long int gethostid (void); > > >extern void sync (void) throw (); > > > > >extern int getpagesize (void) throw () __attribute__ ((__const__)); > > > > >extern int truncate (__const char *__file, __off_t __length) throw (); ># 888 "/usr/include/unistd.h" 3 4 >extern int truncate64 (__const char *__file, __off64_t __length) throw (); > > > > >extern int ftruncate (int __fd, __off_t __length) throw (); ># 903 "/usr/include/unistd.h" 3 4 >extern int ftruncate64 (int __fd, __off64_t __length) throw (); > > > > > >extern int getdtablesize (void) throw (); ># 918 "/usr/include/unistd.h" 3 4 >extern int brk (void *__addr) throw (); > > > > > >extern void *sbrk (intptr_t __delta) throw (); ># 939 "/usr/include/unistd.h" 3 4 >extern long int syscall (long int __sysno, ...) throw (); ># 962 "/usr/include/unistd.h" 3 4 >extern int lockf (int __fd, int __cmd, __off_t __len); ># 972 "/usr/include/unistd.h" 3 4 >extern int lockf64 (int __fd, int __cmd, __off64_t __len); ># 993 "/usr/include/unistd.h" 3 4 >extern int fdatasync (int __fildes) throw (); > > > > > > > >extern char *crypt (__const char *__key, __const char *__salt) throw (); > > > >extern void encrypt (char *__block, int __edflag) throw (); > > > > > > >extern void swab (__const void *__restrict __from, void *__restrict __to, > ssize_t __n) throw (); > > > > > > > >extern char *ctermid (char *__s) throw (); > > >} ># 45 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr-default.h" 2 3 > >typedef pthread_key_t __gthread_key_t; >typedef pthread_once_t __gthread_once_t; >typedef pthread_mutex_t __gthread_mutex_t; > > > > > > >#pragma weak pthread_once >#pragma weak pthread_key_create >#pragma weak pthread_key_delete >#pragma weak pthread_getspecific >#pragma weak pthread_setspecific >#pragma weak pthread_create > >#pragma weak pthread_mutex_lock >#pragma weak pthread_mutex_trylock >#pragma weak pthread_mutex_unlock ># 93 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr-default.h" 3 >static inline int >__gthread_active_p (void) >{ > static void *const __gthread_active_ptr = (void *) &pthread_create; > return __gthread_active_ptr != 0; >} ># 455 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr-default.h" 3 >static inline int >__gthread_once (__gthread_once_t *once, void (*func) (void)) >{ > if (__gthread_active_p ()) > return pthread_once (once, func); > else > return -1; >} > >static inline int >__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *)) >{ > return pthread_key_create (key, dtor); >} > >static inline int >__gthread_key_delete (__gthread_key_t key) >{ > return pthread_key_delete (key); >} > >static inline void * >__gthread_getspecific (__gthread_key_t key) >{ > return pthread_getspecific (key); >} > >static inline int >__gthread_setspecific (__gthread_key_t key, const void *ptr) >{ > return pthread_setspecific (key, ptr); >} > >static inline int >__gthread_mutex_lock (__gthread_mutex_t *mutex) >{ > if (__gthread_active_p ()) > return pthread_mutex_lock (mutex); > else > return 0; >} > >static inline int >__gthread_mutex_trylock (__gthread_mutex_t *mutex) >{ > if (__gthread_active_p ()) > return pthread_mutex_trylock (mutex); > else > return 0; >} > >static inline int >__gthread_mutex_unlock (__gthread_mutex_t *mutex) >{ > if (__gthread_active_p ()) > return pthread_mutex_unlock (mutex); > else > return 0; >} ># 97 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/gthr.h" 2 3 ># 38 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++io.h" 2 3 > >namespace std >{ > typedef __gthread_mutex_t __c_lock; > > > typedef FILE __c_file; > > > struct __ios_flags > { > typedef short __int_type; > > static const __int_type _S_boolalpha = 0x0001; > static const __int_type _S_dec = 0x0002; > static const __int_type _S_fixed = 0x0004; > static const __int_type _S_hex = 0x0008; > static const __int_type _S_internal = 0x0010; > static const __int_type _S_left = 0x0020; > static const __int_type _S_oct = 0x0040; > static const __int_type _S_right = 0x0080; > static const __int_type _S_scientific = 0x0100; > static const __int_type _S_showbase = 0x0200; > static const __int_type _S_showpoint = 0x0400; > static const __int_type _S_showpos = 0x0800; > static const __int_type _S_skipws = 0x1000; > static const __int_type _S_unitbuf = 0x2000; > static const __int_type _S_uppercase = 0x4000; > static const __int_type _S_adjustfield = 0x0020 | 0x0080 | 0x0010; > static const __int_type _S_basefield = 0x0002 | 0x0040 | 0x0008; > static const __int_type _S_floatfield = 0x0100 | 0x0004; > > > static const __int_type _S_badbit = 0x01; > static const __int_type _S_eofbit = 0x02; > static const __int_type _S_failbit = 0x04; > > > static const __int_type _S_app = 0x01; > static const __int_type _S_ate = 0x02; > static const __int_type _S_bin = 0x04; > static const __int_type _S_in = 0x08; > static const __int_type _S_out = 0x10; > static const __int_type _S_trunc = 0x20; > }; >} ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cctype" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cctype" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cctype" 3 > > ># 1 "/usr/include/ctype.h" 1 3 4 ># 30 "/usr/include/ctype.h" 3 4 >extern "C" { ># 48 "/usr/include/ctype.h" 3 4 >enum >{ > _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), > _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), > _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), > _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), > _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), > _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), > _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), > _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), > _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), > _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), > _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), > _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) >}; ># 81 "/usr/include/ctype.h" 3 4 >extern __const unsigned short int **__ctype_b_loc (void) > __attribute__ ((__const)); >extern __const __int32_t **__ctype_tolower_loc (void) > __attribute__ ((__const)); >extern __const __int32_t **__ctype_toupper_loc (void) > __attribute__ ((__const)); ># 96 "/usr/include/ctype.h" 3 4 > > > > > > >extern int isalnum (int) throw (); >extern int isalpha (int) throw (); >extern int iscntrl (int) throw (); >extern int isdigit (int) throw (); >extern int islower (int) throw (); >extern int isgraph (int) throw (); >extern int isprint (int) throw (); >extern int ispunct (int) throw (); >extern int isspace (int) throw (); >extern int isupper (int) throw (); >extern int isxdigit (int) throw (); > > > >extern int tolower (int __c) throw (); > > >extern int toupper (int __c) throw (); > > > > > > > > >extern int isblank (int) throw (); > > > > > > >extern int isctype (int __c, int __mask) throw (); > > > > > > >extern int isascii (int __c) throw (); > > > >extern int toascii (int __c) throw (); > > > >extern int _toupper (int) throw (); >extern int _tolower (int) throw (); ># 247 "/usr/include/ctype.h" 3 4 >extern int isalnum_l (int, __locale_t) throw (); >extern int isalpha_l (int, __locale_t) throw (); >extern int iscntrl_l (int, __locale_t) throw (); >extern int isdigit_l (int, __locale_t) throw (); >extern int islower_l (int, __locale_t) throw (); >extern int isgraph_l (int, __locale_t) throw (); >extern int isprint_l (int, __locale_t) throw (); >extern int ispunct_l (int, __locale_t) throw (); >extern int isspace_l (int, __locale_t) throw (); >extern int isupper_l (int, __locale_t) throw (); >extern int isxdigit_l (int, __locale_t) throw (); > >extern int isblank_l (int, __locale_t) throw (); > > > >extern int __tolower_l (int __c, __locale_t __l) throw (); >extern int tolower_l (int __c, __locale_t __l) throw (); > > >extern int __toupper_l (int __c, __locale_t __l) throw (); >extern int toupper_l (int __c, __locale_t __l) throw (); ># 323 "/usr/include/ctype.h" 3 4 >} ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cctype" 2 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cctype" 3 >namespace std >{ > using ::isalnum; > using ::isalpha; > using ::iscntrl; > using ::isdigit; > using ::isgraph; > using ::islower; > using ::isprint; > using ::ispunct; > using ::isspace; > using ::isupper; > using ::isxdigit; > using ::tolower; > using ::toupper; >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stringfwd.h" 1 3 ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stringfwd.h" 3 > ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stringfwd.h" 3 > > > >namespace std >{ > template<typename _Alloc> > class allocator; > > template<class _CharT> > struct char_traits; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_string; > > template<> struct char_traits<char>; > > typedef basic_string<char> string; > > > template<> struct char_traits<wchar_t>; > > typedef basic_string<wchar_t> wstring; > >} ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 1 3 ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 3 > ># 45 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 3 > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ctime" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ctime" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ctime" 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ctime" 3 >namespace std >{ > using ::clock_t; > using ::time_t; > using ::tm; > > using ::clock; > using ::difftime; > using ::mktime; > using ::time; > using ::asctime; > using ::ctime; > using ::gmtime; > using ::localtime; > using ::strftime; >} ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 2 3 > > ># 1 "/usr/include/wchar.h" 1 3 4 ># 40 "/usr/include/wchar.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stdarg.h" 1 3 4 ># 41 "/usr/include/wchar.h" 2 3 4 > > > > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 49 "/usr/include/wchar.h" 2 3 4 ># 93 "/usr/include/wchar.h" 3 4 > > >typedef __mbstate_t mbstate_t; > > > ># 118 "/usr/include/wchar.h" 3 4 >extern "C" { > > > > >struct tm; > > > > > > > > > >extern wchar_t *wcscpy (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src) throw (); > >extern wchar_t *wcsncpy (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src, size_t __n) > throw (); > > >extern wchar_t *wcscat (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src) throw (); > >extern wchar_t *wcsncat (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src, size_t __n) > throw (); > > >extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) > throw () __attribute__ ((__pure__)); > >extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > > > >extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw (); > > >extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, > size_t __n) throw (); > > > > > >extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, > __locale_t __loc) throw (); > >extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, > size_t __n, __locale_t __loc) throw (); > > > > > >extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw (); > > > >extern size_t wcsxfrm (wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) throw (); > > > > > > > > >extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, > __locale_t __loc) throw (); > > > > >extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, > size_t __n, __locale_t __loc) throw (); > > >extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__)); > > > > >extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) > throw () __attribute__ ((__pure__)); > >extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) > throw () __attribute__ ((__pure__)); > > > > > >extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) > throw () __attribute__ ((__pure__)); > > > > > >extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) > throw () __attribute__ ((__pure__)); > > >extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) > throw () __attribute__ ((__pure__)); > >extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) > throw () __attribute__ ((__pure__)); > >extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) > throw () __attribute__ ((__pure__)); > > >extern wchar_t *wcstok (wchar_t *__restrict __s, > __const wchar_t *__restrict __delim, > wchar_t **__restrict __ptr) throw (); > > >extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__)); > > > > >extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle) > throw () __attribute__ ((__pure__)); > > > > >extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) > throw () __attribute__ ((__pure__)); > > > > > >extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern int wmemcmp (__const wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern wchar_t *wmemcpy (wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) throw (); > > > >extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) > throw (); > > >extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); > > > > > >extern wchar_t *wmempcpy (wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) > throw (); > > > > > > >extern wint_t btowc (int __c) throw (); > > > >extern int wctob (wint_t __c) throw (); > > > >extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__)); > > > >extern size_t mbrtowc (wchar_t *__restrict __pwc, > __const char *__restrict __s, size_t __n, > mbstate_t *__p) throw (); > > >extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, > mbstate_t *__restrict __ps) throw (); > > >extern size_t __mbrlen (__const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw (); >extern size_t mbrlen (__const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw (); > > > > >extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw () >{ return (__ps != __null > ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } > > > > > >extern size_t mbsrtowcs (wchar_t *__restrict __dst, > __const char **__restrict __src, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > >extern size_t wcsrtombs (char *__restrict __dst, > __const wchar_t **__restrict __src, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > > > > >extern size_t mbsnrtowcs (wchar_t *__restrict __dst, > __const char **__restrict __src, size_t __nmc, > size_t __len, mbstate_t *__restrict __ps) throw (); > > > >extern size_t wcsnrtombs (char *__restrict __dst, > __const wchar_t **__restrict __src, > size_t __nwc, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > > > > >extern int wcwidth (wchar_t __c) throw (); > > > >extern int wcswidth (__const wchar_t *__s, size_t __n) throw (); > > > > > > >extern double wcstod (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); > > > >extern float wcstof (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); >extern long double wcstold (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); > > > > > >extern long int wcstol (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) throw (); > > > >extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > > >__extension__ >extern long long int wcstoll (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > >__extension__ >extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw (); > > > > > > >__extension__ >extern long long int wcstoq (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > >__extension__ >extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw (); ># 448 "/usr/include/wchar.h" 3 4 >extern long int wcstol_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base, > __locale_t __loc) throw (); > >extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern long long int wcstoll_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) > throw (); > >extern double wcstod_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, __locale_t __loc) > throw (); > >extern float wcstof_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, __locale_t __loc) > throw (); > >extern long double wcstold_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > __locale_t __loc) throw (); > > > > > >extern double __wcstod_internal (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __group) > throw (); >extern float __wcstof_internal (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __group) > throw (); >extern long double __wcstold_internal (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __group) throw (); > > >extern long int __wcstol_internal (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, int __group) throw (); > > > >extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt, > wchar_t **__restrict __endptr, > int __base, int __group) throw (); > > > >__extension__ >extern long long int __wcstoll_internal (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, int __group) throw (); > > > >__extension__ >extern unsigned long long int __wcstoull_internal (__const wchar_t * > __restrict __nptr, > wchar_t ** > __restrict __endptr, > int __base, > int __group) throw (); > > > > > > > > >extern __inline double wcstod (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw () >{ return __wcstod_internal (__nptr, __endptr, 0); } >extern __inline long int wcstol (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw () >{ return __wcstol_internal (__nptr, __endptr, __base, 0); } >extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw () >{ return __wcstoul_internal (__nptr, __endptr, __base, 0); } > > > >extern __inline float wcstof (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw () >{ return __wcstof_internal (__nptr, __endptr, 0); } >extern __inline long double wcstold (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw () >{ return __wcstold_internal (__nptr, __endptr, 0); } > > >__extension__ >extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw () >{ return __wcstoll_internal (__nptr, __endptr, __base, 0); } >__extension__ >extern __inline unsigned long long int wcstouq (__const wchar_t * > __restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw () >{ return __wcstoull_internal (__nptr, __endptr, __base, 0); } > > > > > > > >extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) throw (); > > > >extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) > throw (); > > > > > > > > >extern int fwide (__FILE *__fp, int __mode) throw (); > > > > > > >extern int fwprintf (__FILE *__restrict __stream, > __const wchar_t *__restrict __format, ...) > ; > > > > >extern int wprintf (__const wchar_t *__restrict __format, ...) > ; > >extern int swprintf (wchar_t *__restrict __s, size_t __n, > __const wchar_t *__restrict __format, ...) > throw () ; > > > > > >extern int vfwprintf (__FILE *__restrict __s, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > > > >extern int vwprintf (__const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > >extern int vswprintf (wchar_t *__restrict __s, size_t __n, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; > > > > > > >extern int fwscanf (__FILE *__restrict __stream, > __const wchar_t *__restrict __format, ...) > ; > > > > >extern int wscanf (__const wchar_t *__restrict __format, ...) > ; > >extern int swscanf (__const wchar_t *__restrict __s, > __const wchar_t *__restrict __format, ...) > throw () ; > > > > > > > > > > > >extern int vfwscanf (__FILE *__restrict __s, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > > > >extern int vwscanf (__const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > >extern int vswscanf (__const wchar_t *__restrict __s, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; > > > > > > > > > > >extern wint_t fgetwc (__FILE *__stream); >extern wint_t getwc (__FILE *__stream); > > > > > >extern wint_t getwchar (void); > > > > > > >extern wint_t fputwc (wchar_t __wc, __FILE *__stream); >extern wint_t putwc (wchar_t __wc, __FILE *__stream); > > > > > >extern wint_t putwchar (wchar_t __wc); > > > > > > > >extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, > __FILE *__restrict __stream); > > > > > >extern int fputws (__const wchar_t *__restrict __ws, > __FILE *__restrict __stream); > > > > > > >extern wint_t ungetwc (wint_t __wc, __FILE *__stream); > ># 736 "/usr/include/wchar.h" 3 4 >extern wint_t getwc_unlocked (__FILE *__stream); >extern wint_t getwchar_unlocked (void); > > > > > > > >extern wint_t fgetwc_unlocked (__FILE *__stream); > > > > > > > >extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); ># 762 "/usr/include/wchar.h" 3 4 >extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); >extern wint_t putwchar_unlocked (wchar_t __wc); ># 772 "/usr/include/wchar.h" 3 4 >extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, > __FILE *__restrict __stream); > > > > > > > >extern int fputws_unlocked (__const wchar_t *__restrict __ws, > __FILE *__restrict __stream); > > > > > > > >extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, > __const wchar_t *__restrict __format, > __const struct tm *__restrict __tp) throw (); > > > > > > > >extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, > __const wchar_t *__restrict __format, > __const struct tm *__restrict __tp, > __locale_t __loc) throw (); ># 817 "/usr/include/wchar.h" 3 4 >} ># 55 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 2 3 ># 69 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 3 >namespace std >{ > using ::mbstate_t; >} ># 141 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 3 >namespace std >{ > using ::wint_t; > > using ::btowc; > using ::fgetwc; > using ::fgetws; > using ::fputwc; > using ::fputws; > using ::fwide; > using ::fwprintf; > using ::fwscanf; > using ::getwc; > using ::getwchar; > using ::mbrlen; > using ::mbrtowc; > using ::mbsinit; > using ::mbsrtowcs; > using ::putwc; > using ::putwchar; > using ::swprintf; > using ::swscanf; > using ::ungetwc; > using ::vfwprintf; > > using ::vfwscanf; > > using ::vswprintf; > > using ::vswscanf; > > using ::vwprintf; > > using ::vwscanf; > > using ::wcrtomb; > using ::wcscat; > using ::wcscmp; > using ::wcscoll; > using ::wcscpy; > using ::wcscspn; > > > > using ::wcslen; > using ::wcsncat; > using ::wcsncmp; > using ::wcsncpy; > using ::wcsrtombs; > using ::wcsspn; > using ::wcstod; > > using ::wcstof; > > using ::wcstok; > using ::wcstol; > using ::wcstoul; > using ::wcsxfrm; > using ::wctob; > using ::wmemcmp; > using ::wmemcpy; > using ::wmemmove; > using ::wmemset; > using ::wprintf; > using ::wscanf; > > using ::wcschr; > > inline wchar_t* > wcschr(wchar_t* __p, wchar_t __c) > { return wcschr(const_cast<const wchar_t*>(__p), __c); } > > using ::wcspbrk; > > inline wchar_t* > wcspbrk(wchar_t* __s1, wchar_t* __s2) > { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); } > > using ::wcsrchr; > > inline wchar_t* > wcsrchr(wchar_t* __p, wchar_t __c) > { return wcsrchr(const_cast<const wchar_t*>(__p), __c); } > > using ::wcsstr; > > inline wchar_t* > wcsstr(wchar_t* __s1, const wchar_t* __s2) > { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); } > > using ::wmemchr; > > inline wchar_t* > wmemchr(wchar_t* __p, wchar_t __c, size_t __n) > { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); } >} > > > > > > > >namespace __gnu_cxx >{ > > > > > > using ::wcstold; ># 260 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwchar" 3 > using ::wcstoll; > using ::wcstoull; > >} > >namespace std >{ > using __gnu_cxx::wcstold; > using __gnu_cxx::wcstoll; > using __gnu_cxx::wcstoull; >} ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 2 3 > > ># 1 "/usr/include/stdint.h" 1 3 4 ># 28 "/usr/include/stdint.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 29 "/usr/include/stdint.h" 2 3 4 ># 49 "/usr/include/stdint.h" 3 4 >typedef unsigned char uint8_t; >typedef unsigned short int uint16_t; > >typedef unsigned int uint32_t; > > > > > >__extension__ >typedef unsigned long long int uint64_t; > > > > > > >typedef signed char int_least8_t; >typedef short int int_least16_t; >typedef int int_least32_t; > > > >__extension__ >typedef long long int int_least64_t; > > > >typedef unsigned char uint_least8_t; >typedef unsigned short int uint_least16_t; >typedef unsigned int uint_least32_t; > > > >__extension__ >typedef unsigned long long int uint_least64_t; > > > > > > >typedef signed char int_fast8_t; > > > > > >typedef int int_fast16_t; >typedef int int_fast32_t; >__extension__ >typedef long long int int_fast64_t; > > > >typedef unsigned char uint_fast8_t; > > > > > >typedef unsigned int uint_fast16_t; >typedef unsigned int uint_fast32_t; >__extension__ >typedef unsigned long long int uint_fast64_t; ># 129 "/usr/include/stdint.h" 3 4 >typedef unsigned int uintptr_t; ># 138 "/usr/include/stdint.h" 3 4 >__extension__ >typedef long long int intmax_t; >__extension__ >typedef unsigned long long int uintmax_t; ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 2 3 > > >namespace std >{ ># 72 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 3 > typedef int64_t streamoff; > > > > > > typedef ptrdiff_t streamsize; > > template<typename _StateT> > class fpos; ># 94 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 3 > template<typename _StateT> > class fpos > { > private: > streamoff _M_off; > _StateT _M_state; > > public: > > > > > fpos() > : _M_off(0), _M_state() { } ># 116 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/postypes.h" 3 > fpos(streamoff __off) > : _M_off(__off), _M_state() { } > > > operator streamoff() const { return _M_off; } > > > void > state(_StateT __st) > { _M_state = __st; } > > > _StateT > state() const > { return _M_state; } > > > > > > > bool > operator==(const fpos& __other) const > { return _M_off == __other._M_off; } > > > bool > operator!=(const fpos& __other) const > { return _M_off != __other._M_off; } > > > > > > fpos& > operator+=(streamoff __off) > { > _M_off += __off; > return *this; > } > > > > > > fpos& > operator-=(streamoff __off) > { > _M_off -= __off; > return *this; > } > > > > > > > > fpos > operator+(streamoff __off) const > { > fpos __pos(*this); > __pos += __off; > return __pos; > } > > > > > > > > fpos > operator-(streamoff __off) const > { > fpos __pos(*this); > __pos -= __off; > return __pos; > } > > > > > > > streamoff > operator-(const fpos& __other) const > { return _M_off - __other._M_off; } > }; > > > > > > typedef fpos<mbstate_t> streampos; > > typedef fpos<mbstate_t> wstreampos; >} ># 51 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 1 3 ># 34 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/exception_defines.h" 1 3 ># 35 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 2 3 > >namespace std >{ > > void > __throw_bad_exception(void); > > > void > __throw_bad_alloc(void); > > > void > __throw_bad_cast(void); > > void > __throw_bad_typeid(void); > > > void > __throw_logic_error(const char* __s); > > void > __throw_domain_error(const char* __s); > > void > __throw_invalid_argument(const char* __s); > > void > __throw_length_error(const char* __s); > > void > __throw_out_of_range(const char* __s); > > void > __throw_runtime_error(const char* __s); > > void > __throw_range_error(const char* __s); > > void > __throw_overflow_error(const char* __s); > > void > __throw_underflow_error(const char* __s); > > > void > __throw_ios_failure(const char* __s); >} ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 2 3 > >namespace std >{ > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ios; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_streambuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_istream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ostream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_iostream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_stringbuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_istringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_ostringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_stringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_filebuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ifstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ofstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_fstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class istreambuf_iterator; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class ostreambuf_iterator; > > > > class ios_base; ># 136 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iosfwd" 3 > typedef basic_ios<char> ios; > typedef basic_streambuf<char> streambuf; > typedef basic_istream<char> istream; > typedef basic_ostream<char> ostream; > typedef basic_iostream<char> iostream; > typedef basic_stringbuf<char> stringbuf; > typedef basic_istringstream<char> istringstream; > typedef basic_ostringstream<char> ostringstream; > typedef basic_stringstream<char> stringstream; > typedef basic_filebuf<char> filebuf; > typedef basic_ifstream<char> ifstream; > typedef basic_ofstream<char> ofstream; > typedef basic_fstream<char> fstream; > > > typedef basic_ios<wchar_t> wios; > typedef basic_streambuf<wchar_t> wstreambuf; > typedef basic_istream<wchar_t> wistream; > typedef basic_ostream<wchar_t> wostream; > typedef basic_iostream<wchar_t> wiostream; > typedef basic_stringbuf<wchar_t> wstringbuf; > typedef basic_istringstream<wchar_t> wistringstream; > typedef basic_ostringstream<wchar_t> wostringstream; > typedef basic_stringstream<wchar_t> wstringstream; > typedef basic_filebuf<wchar_t> wfilebuf; > typedef basic_ifstream<wchar_t> wifstream; > typedef basic_ofstream<wchar_t> wofstream; > typedef basic_fstream<wchar_t> wfstream; > > >} ># 71 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_pair.h" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_pair.h" 3 >namespace std >{ > > template<class _T1, class _T2> > struct pair > { > typedef _T1 first_type; > typedef _T2 second_type; > > _T1 first; > _T2 second; > > > > > > pair() > : first(), second() { } > > > pair(const _T1& __a, const _T2& __b) > : first(__a), second(__b) { } > > > template<class _U1, class _U2> > pair(const pair<_U1, _U2>& __p) > : first(__p.first), second(__p.second) { } > }; > > > template<class _T1, class _T2> > inline bool > operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __x.first == __y.first && __x.second == __y.second; } > > > template<class _T1, class _T2> > inline bool > operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __x.first < __y.first > || (!(__y.first < __x.first) && __x.second < __y.second); } > > > template<class _T1, class _T2> > inline bool > operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__x == __y); } > > > template<class _T1, class _T2> > inline bool > operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __y < __x; } > > > template<class _T1, class _T2> > inline bool > operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__y < __x); } > > > template<class _T1, class _T2> > inline bool > operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__x < __y); } ># 142 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_pair.h" 3 > template<class _T1, class _T2> > inline pair<_T1, _T2> > make_pair(_T1 __x, _T2 __y) { return pair<_T1, _T2>(__x, __y); } >} ># 72 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/type_traits.h" 1 3 ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/type_traits.h" 3 > ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/type_traits.h" 3 ># 90 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/type_traits.h" 3 >struct __true_type {}; >struct __false_type {}; > >template <class _Tp> > struct __type_traits > { > typedef __true_type this_dummy_member_must_be_first; ># 114 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/type_traits.h" 3 > typedef __false_type has_trivial_default_constructor; > typedef __false_type has_trivial_copy_constructor; > typedef __false_type has_trivial_assignment_operator; > typedef __false_type has_trivial_destructor; > typedef __false_type is_POD_type; > }; > > > > >template<> > struct __type_traits<bool> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<char> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<signed char> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<unsigned char> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<wchar_t> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<short> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<unsigned short> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<int> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<unsigned int> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<long> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<unsigned long> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<long long> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<unsigned long long> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<float> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<double> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template<> > struct __type_traits<long double> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > >template <class _Tp> > struct __type_traits<_Tp*> > { > typedef __true_type has_trivial_default_constructor; > typedef __true_type has_trivial_copy_constructor; > typedef __true_type has_trivial_assignment_operator; > typedef __true_type has_trivial_destructor; > typedef __true_type is_POD_type; > }; > > > > >template <class _Tp> > struct _Is_integer > { > typedef __false_type _Integral; > }; > >template<> > struct _Is_integer<bool> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<char> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<signed char> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<unsigned char> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<wchar_t> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<short> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<unsigned short> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<int> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<unsigned int> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<long> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<unsigned long> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<long long> > { > typedef __true_type _Integral; > }; > >template<> > struct _Is_integer<unsigned long long> > { > typedef __true_type _Integral; > }; > >template<typename _Tp> > struct _Is_normal_iterator > { > typedef __false_type _Normal; > }; > > >namespace __gnu_cxx >{ > template<typename _Iterator, typename _Container> > class __normal_iterator; >} > >template<typename _Iterator, typename _Container> > struct _Is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator, > _Container> > > { > typedef __true_type _Normal; > }; ># 73 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_types.h" 1 3 ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_types.h" 3 > ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_types.h" 3 > >namespace std >{ ># 80 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_types.h" 3 > struct input_iterator_tag {}; > > struct output_iterator_tag {}; > > struct forward_iterator_tag : public input_iterator_tag {}; > > > struct bidirectional_iterator_tag : public forward_iterator_tag {}; > > > struct random_access_iterator_tag : public bidirectional_iterator_tag {}; ># 104 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_types.h" 3 > template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, > typename _Pointer = _Tp*, typename _Reference = _Tp&> > struct iterator > { > > typedef _Category iterator_category; > > typedef _Tp value_type; > > typedef _Distance difference_type; > > typedef _Pointer pointer; > > typedef _Reference reference; > }; > > > > > > > > template<typename _Iterator> > struct iterator_traits > { > typedef typename _Iterator::iterator_category iterator_category; > typedef typename _Iterator::value_type value_type; > typedef typename _Iterator::difference_type difference_type; > typedef typename _Iterator::pointer pointer; > typedef typename _Iterator::reference reference; > }; > > template<typename _Tp> > struct iterator_traits<_Tp*> > { > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef _Tp& reference; > }; > > template<typename _Tp> > struct iterator_traits<const _Tp*> > { > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef ptrdiff_t difference_type; > typedef const _Tp* pointer; > typedef const _Tp& reference; > }; > > > > > > > > template<typename _Iter> > inline typename iterator_traits<_Iter>::iterator_category > __iterator_category(const _Iter&) > { return typename iterator_traits<_Iter>::iterator_category(); } > >} ># 74 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 1 3 ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 > ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/concept_check.h" 1 3 ># 38 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/concept_check.h" 3 > ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/concept_check.h" 3 ># 69 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 2 3 > >namespace std >{ > template<typename _InputIterator> > inline typename iterator_traits<_InputIterator>::difference_type > __distance(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > > > > typename iterator_traits<_InputIterator>::difference_type __n = 0; > while (__first != __last) > { > ++__first; > ++__n; > } > return __n; > } > > template<typename _RandomAccessIterator> > inline typename iterator_traits<_RandomAccessIterator>::difference_type > __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, > random_access_iterator_tag) > { > > > > return __last - __first; > } ># 112 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 > template<typename _InputIterator> > inline typename iterator_traits<_InputIterator>::difference_type > distance(_InputIterator __first, _InputIterator __last) > { > > return std::__distance(__first, __last, > std::__iterator_category(__first)); > } > > template<typename _InputIterator, typename _Distance> > inline void > __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) > { > > > while (__n--) > ++__i; > } > > template<typename _BidirectionalIterator, typename _Distance> > inline void > __advance(_BidirectionalIterator& __i, _Distance __n, > bidirectional_iterator_tag) > { > > > > if (__n > 0) > while (__n--) > ++__i; > else > while (__n++) > --__i; > } > > template<typename _RandomAccessIterator, typename _Distance> > inline void > __advance(_RandomAccessIterator& __i, _Distance __n, > random_access_iterator_tag) > { > > > > __i += __n; > } ># 170 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 > template<typename _InputIterator, typename _Distance> > inline void > advance(_InputIterator& __i, _Distance __n) > { > > std::__advance(__i, __n, std::__iterator_category(__i)); > } >} ># 75 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 1 3 ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 >namespace std >{ ># 89 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Iterator> > class reverse_iterator > : public iterator<typename iterator_traits<_Iterator>::iterator_category, > typename iterator_traits<_Iterator>::value_type, > typename iterator_traits<_Iterator>::difference_type, > typename iterator_traits<_Iterator>::pointer, > typename iterator_traits<_Iterator>::reference> > { > protected: > _Iterator current; > > public: > typedef _Iterator iterator_type; > typedef typename iterator_traits<_Iterator>::difference_type > difference_type; > typedef typename iterator_traits<_Iterator>::reference reference; > typedef typename iterator_traits<_Iterator>::pointer pointer; > > public: > > > > > > > reverse_iterator() : current() { } > > > > > explicit > reverse_iterator(iterator_type __x) : current(__x) { } > > > > > reverse_iterator(const reverse_iterator& __x) > : current(__x.current) { } > > > > > > template<typename _Iter> > reverse_iterator(const reverse_iterator<_Iter>& __x) > : current(__x.base()) { } > > > > > iterator_type > base() const > { return current; } > > > > > > > reference > operator*() const > { > _Iterator __tmp = current; > return *--__tmp; > } > > > > > > > pointer > operator->() const > { return &(operator*()); } > > > > > > > reverse_iterator& > operator++() > { > --current; > return *this; > } > > > > > > > reverse_iterator > operator++(int) > { > reverse_iterator __tmp = *this; > --current; > return __tmp; > } > > > > > > > reverse_iterator& > operator--() > { > ++current; > return *this; > } > > > > > > > reverse_iterator operator--(int) > { > reverse_iterator __tmp = *this; > ++current; > return __tmp; > } > > > > > > > reverse_iterator > operator+(difference_type __n) const > { return reverse_iterator(current - __n); } > > > > > > > reverse_iterator& > operator+=(difference_type __n) > { > current -= __n; > return *this; > } > > > > > > > reverse_iterator > operator-(difference_type __n) const > { return reverse_iterator(current + __n); } > > > > > > > reverse_iterator& > operator-=(difference_type __n) > { > current += __n; > return *this; > } > > > > > > > reference > operator[](difference_type __n) const > { return *(*this + __n); } > }; ># 275 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Iterator> > inline bool > operator==(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __x.base() == __y.base(); } > > template<typename _Iterator> > inline bool > operator<(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y.base() < __x.base(); } > > template<typename _Iterator> > inline bool > operator!=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__x == __y); } > > template<typename _Iterator> > inline bool > operator>(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y < __x; } > > template<typename _Iterator> > inline bool > operator<=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__y < __x); } > > template<typename _Iterator> > inline bool > operator>=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__x < __y); } > > template<typename _Iterator> > inline typename reverse_iterator<_Iterator>::difference_type > operator-(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y.base() - __x.base(); } > > template<typename _Iterator> > inline reverse_iterator<_Iterator> > operator+(typename reverse_iterator<_Iterator>::difference_type __n, > const reverse_iterator<_Iterator>& __x) > { return reverse_iterator<_Iterator>(__x.base() - __n); } ># 335 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Container> > class back_insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > > public: > > typedef _Container container_type; > > > explicit > back_insert_iterator(_Container& __x) : container(&__x) { } ># 361 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > back_insert_iterator& > operator=(typename _Container::const_reference __value) > { > container->push_back(__value); > return *this; > } > > > back_insert_iterator& > operator*() > { return *this; } > > > back_insert_iterator& > operator++() > { return *this; } > > > back_insert_iterator > operator++(int) > { return *this; } > }; ># 395 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Container> > inline back_insert_iterator<_Container> > back_inserter(_Container& __x) > { return back_insert_iterator<_Container>(__x); } ># 410 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Container> > class front_insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > > public: > > typedef _Container container_type; > > > explicit front_insert_iterator(_Container& __x) : container(&__x) { } ># 435 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > front_insert_iterator& > operator=(typename _Container::const_reference __value) > { > container->push_front(__value); > return *this; > } > > > front_insert_iterator& > operator*() > { return *this; } > > > front_insert_iterator& > operator++() > { return *this; } > > > front_insert_iterator > operator++(int) > { return *this; } > }; ># 469 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Container> > inline front_insert_iterator<_Container> > front_inserter(_Container& __x) > { return front_insert_iterator<_Container>(__x); } ># 488 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Container> > class insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > typename _Container::iterator iter; > > public: > > typedef _Container container_type; > > > > > > insert_iterator(_Container& __x, typename _Container::iterator __i) > : container(&__x), iter(__i) {} ># 530 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > insert_iterator& > operator=(const typename _Container::const_reference __value) > { > iter = container->insert(iter, __value); > ++iter; > return *this; > } > > > insert_iterator& > operator*() > { return *this; } > > > insert_iterator& > operator++() > { return *this; } > > > insert_iterator& > operator++(int) > { return *this; } > }; ># 565 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _Container, typename _Iterator> > inline insert_iterator<_Container> > inserter(_Container& __x, _Iterator __i) > { > return insert_iterator<_Container>(__x, > typename _Container::iterator(__i)); > } >} > >namespace __gnu_cxx >{ > > > > > > > > using std::iterator_traits; > using std::iterator; > template<typename _Iterator, typename _Container> > class __normal_iterator > { > protected: > _Iterator _M_current; > > public: > typedef typename iterator_traits<_Iterator>::iterator_category > iterator_category; > typedef typename iterator_traits<_Iterator>::value_type value_type; > typedef typename iterator_traits<_Iterator>::difference_type > difference_type; > typedef typename iterator_traits<_Iterator>::reference reference; > typedef typename iterator_traits<_Iterator>::pointer pointer; > > __normal_iterator() : _M_current(_Iterator()) { } > > explicit > __normal_iterator(const _Iterator& __i) : _M_current(__i) { } > > > template<typename _Iter> > inline __normal_iterator(const __normal_iterator<_Iter, > _Container>& __i) > : _M_current(__i.base()) { } > > > reference > operator*() const > { return *_M_current; } > > pointer > operator->() const > { return _M_current; } > > __normal_iterator& > operator++() > { > ++_M_current; > return *this; > } > > __normal_iterator > operator++(int) > { return __normal_iterator(_M_current++); } > > > __normal_iterator& > operator--() > { > --_M_current; > return *this; > } > > __normal_iterator > operator--(int) > { return __normal_iterator(_M_current--); } > > > reference > operator[](const difference_type& __n) const > { return _M_current[__n]; } > > __normal_iterator& > operator+=(const difference_type& __n) > { _M_current += __n; return *this; } > > __normal_iterator > operator+(const difference_type& __n) const > { return __normal_iterator(_M_current + __n); } > > __normal_iterator& > operator-=(const difference_type& __n) > { _M_current -= __n; return *this; } > > __normal_iterator > operator-(const difference_type& __n) const > { return __normal_iterator(_M_current - __n); } > > const _Iterator& > base() const > { return _M_current; } > }; ># 678 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_iterator.h" 3 > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() == __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator==(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() == __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() != __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() != __rhs.base(); } > > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() < __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator<(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() < __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() > __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator>(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() > __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() <= __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() <= __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() >= __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() >= __rhs.base(); } > > > > > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline typename __normal_iterator<_IteratorL, _Container>::difference_type > operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() - __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline __normal_iterator<_Iterator, _Container> > operator+(typename __normal_iterator<_Iterator, _Container>::difference_type > __n, const __normal_iterator<_Iterator, _Container>& __i) > { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } >} ># 76 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/debug/debug.h" 1 3 ># 272 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/debug/debug.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 1 "/usr/include/assert.h" 1 3 4 ># 65 "/usr/include/assert.h" 3 4 >extern "C" { > > >extern void __assert_fail (__const char *__assertion, __const char *__file, > unsigned int __line, __const char *__function) > throw () __attribute__ ((__noreturn__)); > > >extern void __assert_perror_fail (int __errnum, __const char *__file, > unsigned int __line, > __const char *__function) > throw () __attribute__ ((__noreturn__)); > > > > >extern void __assert (const char *__assertion, const char *__file, int __line) > throw () __attribute__ ((__noreturn__)); > > >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 2 3 ># 273 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/debug/debug.h" 2 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 275 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/debug/debug.h" 2 3 > > > >namespace __gnu_debug >{ > template<typename _Iterator, typename _Sequence> > class _Safe_iterator; > > > inline bool > __check_singular_aux(const void*) { return false; } > > > > template<typename _Iterator> > inline bool > __check_singular(_Iterator& __x) > { return __gnu_debug::__check_singular_aux(&__x); } > > > template<typename _Tp> > inline bool > __check_singular(const _Tp* __ptr) > { return __ptr == 0; } > > > template<typename _Iterator, typename _Sequence> > inline bool > __check_singular(const _Safe_iterator<_Iterator, _Sequence>& __x) > { return __x._M_singular(); } > > > > template<typename _Iterator> > inline bool > __check_dereferenceable(_Iterator&) > { return true; } > > > template<typename _Tp> > inline bool > __check_dereferenceable(const _Tp* __ptr) > { return __ptr; } > > > template<typename _Iterator, typename _Sequence> > inline bool > __check_dereferenceable(const _Safe_iterator<_Iterator, _Sequence>& __x) > { return __x._M_dereferenceable(); } > > > > > template<typename _RandomAccessIterator> > inline bool > __valid_range_aux2(const _RandomAccessIterator& __first, > const _RandomAccessIterator& __last, > std::random_access_iterator_tag) > { return __last - __first >= 0; } > > > > > > template<typename _InputIterator> > inline bool > __valid_range_aux2(const _InputIterator&, const _InputIterator&, > std::input_iterator_tag) > { return true; } > > > > > > template<typename _Integral> > inline bool > __valid_range_aux(const _Integral&, const _Integral&, __true_type) > { return true; } > > > > > template<typename _InputIterator> > inline bool > __valid_range_aux(const _InputIterator& __first, > const _InputIterator& __last, __false_type) > { > typedef typename std::iterator_traits<_InputIterator>::iterator_category > _Category; > return __gnu_debug::__valid_range_aux2(__first, __last, _Category()); > } > > > > > > > template<typename _InputIterator> > inline bool > __valid_range(const _InputIterator& __first, const _InputIterator& __last) > { > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > return __gnu_debug::__valid_range_aux(__first, __last, _Integral()); > } > > > template<typename _Iterator, typename _Sequence> > inline bool > __valid_range(const _Safe_iterator<_Iterator, _Sequence>& __first, > const _Safe_iterator<_Iterator, _Sequence>& __last) > { return __first._M_valid_range(__last); } > > > > > > template<typename _InputIterator> > inline _InputIterator > __check_valid_range(const _InputIterator& __first, > const _InputIterator& __last) > { > ; > return __first; > } > > > template<typename _CharT, typename _Integer> > inline const _CharT* > __check_string(const _CharT* __s, const _Integer& __n) > { > > > > return __s; > } > > > template<typename _CharT> > inline const _CharT* > __check_string(const _CharT* __s) > { > > > > return __s; > } > > > > template<typename _InputIterator> > inline bool > __check_sorted_aux(const _InputIterator&, const _InputIterator&, > std::input_iterator_tag) > { return true; } > > > > template<typename _ForwardIterator> > inline bool > __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > if (__first == __last) > return true; > > _ForwardIterator __next = __first; > for (++__next; __next != __last; __first = __next, ++__next) { > if (*__next < *__first) > return false; > } > > return true; > } > > > > template<typename _InputIterator, typename _Predicate> > inline bool > __check_sorted_aux(const _InputIterator&, const _InputIterator&, > _Predicate, std::input_iterator_tag) > { return true; } > > > > template<typename _ForwardIterator, typename _Predicate> > inline bool > __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred, std::forward_iterator_tag) > { > if (__first == __last) > return true; > > _ForwardIterator __next = __first; > for (++__next; __next != __last; __first = __next, ++__next) { > if (__pred(*__next, *__first)) > return false; > } > > return true; > } > > > template<typename _InputIterator> > inline bool > __check_sorted(const _InputIterator& __first, const _InputIterator& __last) > { > typedef typename std::iterator_traits<_InputIterator>::iterator_category > _Category; > return __gnu_debug::__check_sorted_aux(__first, __last, _Category()); > } > > template<typename _InputIterator, typename _Predicate> > inline bool > __check_sorted(const _InputIterator& __first, const _InputIterator& __last, > _Predicate __pred) > { > typedef typename std::iterator_traits<_InputIterator>::iterator_category > _Category; > return __gnu_debug::__check_sorted_aux(__first, __last, __pred, > _Category()); > } > > > > > template<typename _ForwardIterator, typename _Tp> > inline bool > __check_partitioned(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > while (__first != __last && *__first < __value) > ++__first; > while (__first != __last && !(*__first < __value)) > ++__first; > return __first == __last; > } > > > template<typename _ForwardIterator, typename _Tp, typename _Pred> > inline bool > __check_partitioned(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value, _Pred __pred) > { > while (__first != __last && __pred(*__first, __value)) > ++__first; > while (__first != __last && !__pred(*__first, __value)) > ++__first; > return __first == __last; > } >} ># 78 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 2 3 > >namespace std >{ ># 90 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > inline void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > typedef typename iterator_traits<_ForwardIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_ForwardIterator2>::value_type > _ValueType2; > > > > > > > > > > > > const _ValueType1 __tmp = *__a; > *__a = *__b; > *__b = __tmp; > } ># 123 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _Tp> > inline void > swap(_Tp& __a, _Tp& __b) > { > > > > const _Tp __tmp = __a; > __a = __b; > __b = __tmp; > } ># 148 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _Tp> > inline const _Tp& > min(const _Tp& __a, const _Tp& __b) > { > > > > if (__b < __a) > return __b; > return __a; > } ># 170 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _Tp> > inline const _Tp& > max(const _Tp& __a, const _Tp& __b) > { > > > > if (__a < __b) > return __b; > return __a; > } ># 192 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > min(const _Tp& __a, const _Tp& __b, _Compare __comp) > { > > if (__comp(__b, __a)) > return __b; > return __a; > } ># 212 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > max(const _Tp& __a, const _Tp& __b, _Compare __comp) > { > > if (__comp(__a, __b)) > return __b; > return __a; > } > > > > > > > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, input_iterator_tag) > { > for (; __first != __last; ++__result, ++__first) > *__result = *__first; > return __result; > } > > template<typename _RandomAccessIterator, typename _OutputIterator> > inline _OutputIterator > __copy(_RandomAccessIterator __first, _RandomAccessIterator __last, > _OutputIterator __result, random_access_iterator_tag) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > for (_Distance __n = __last - __first; __n > 0; --__n) > { > *__result = *__first; > ++__first; > ++__result; > } > return __result; > } > > template<typename _Tp> > inline _Tp* > __copy_trivial(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > std::memmove(__result, __first, sizeof(_Tp) * (__last - __first)); > return __result + (__last - __first); > } > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy_aux2(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, __false_type) > { return std::__copy(__first, __last, __result, > std::__iterator_category(__first)); } > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy_aux2(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, __true_type) > { return std::__copy(__first, __last, __result, > std::__iterator_category(__first)); } > > template<typename _Tp> > inline _Tp* > __copy_aux2(_Tp* __first, _Tp* __last, _Tp* __result, __true_type) > { return std::__copy_trivial(__first, __last, __result); } > > template<typename _Tp> > inline _Tp* > __copy_aux2(const _Tp* __first, const _Tp* __last, _Tp* __result, > __true_type) > { return std::__copy_trivial(__first, __last, __result); } > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy_ni2(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, __true_type) > { > typedef typename iterator_traits<_InputIterator>::value_type > _ValueType; > typedef typename __type_traits< > _ValueType>::has_trivial_assignment_operator _Trivial; > return _OutputIterator(std::__copy_aux2(__first, __last, __result.base(), > _Trivial())); > } > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy_ni2(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, __false_type) > { > typedef typename iterator_traits<_InputIterator>::value_type _ValueType; > typedef typename __type_traits< > _ValueType>::has_trivial_assignment_operator _Trivial; > return std::__copy_aux2(__first, __last, __result, _Trivial()); > } > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy_ni1(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, __true_type) > { > typedef typename _Is_normal_iterator<_OutputIterator>::_Normal __Normal; > return std::__copy_ni2(__first.base(), __last.base(), > __result, __Normal()); > } > > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > __copy_ni1(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, __false_type) > { > typedef typename _Is_normal_iterator<_OutputIterator>::_Normal __Normal; > return std::__copy_ni2(__first, __last, __result, __Normal()); > } ># 346 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result) > { > > > > > ; > > typedef typename _Is_normal_iterator<_InputIterator>::_Normal __Normal; > return std::__copy_ni1(__first, __last, __result, __Normal()); > } > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2> > inline _BidirectionalIterator2 > __copy_backward(_BidirectionalIterator1 __first, > _BidirectionalIterator1 __last, > _BidirectionalIterator2 __result, > bidirectional_iterator_tag) > { > while (__first != __last) > *--__result = *--__last; > return __result; > } > > template<typename _RandomAccessIterator, typename _BidirectionalIterator> > inline _BidirectionalIterator > __copy_backward(_RandomAccessIterator __first, _RandomAccessIterator __last, > _BidirectionalIterator __result, random_access_iterator_tag) > { > typename iterator_traits<_RandomAccessIterator>::difference_type __n; > for (__n = __last - __first; __n > 0; --__n) > *--__result = *--__last; > return __result; > } > > > > > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BoolType> > struct __copy_backward_dispatch > { > static _BidirectionalIterator2 > copy(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, > _BidirectionalIterator2 __result) > { return std::__copy_backward(__first, __last, __result, > std::__iterator_category(__first)); } > }; > > template<typename _Tp> > struct __copy_backward_dispatch<_Tp*, _Tp*, __true_type> > { > static _Tp* > copy(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > const ptrdiff_t _Num = __last - __first; > std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num); > return __result - _Num; > } > }; > > template<typename _Tp> > struct __copy_backward_dispatch<const _Tp*, _Tp*, __true_type> > { > static _Tp* > copy(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > return std::__copy_backward_dispatch<_Tp*, _Tp*, __true_type> > ::copy(__first, __last, __result); > } > }; > > template<typename _BI1, typename _BI2> > inline _BI2 > __copy_backward_aux(_BI1 __first, _BI1 __last, _BI2 __result) > { > typedef typename __type_traits<typename iterator_traits<_BI2>::value_type> > ::has_trivial_assignment_operator _Trivial; > return > std::__copy_backward_dispatch<_BI1, _BI2, _Trivial>::copy(__first, > __last, > __result); > } > > template <typename _BI1, typename _BI2> > inline _BI2 > __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last, > _BI2 __result, __true_type) > { return _BI2(std::__copy_backward_aux(__first, __last, __result.base())); } > > template <typename _BI1, typename _BI2> > inline _BI2 > __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last, > _BI2 __result, __false_type) > { return std::__copy_backward_aux(__first, __last, __result); } > > template <typename _BI1, typename _BI2> > inline _BI2 > __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last, > _BI2 __result, __true_type) > { > typedef typename _Is_normal_iterator<_BI2>::_Normal __Normal; > return std::__copy_backward_output_normal_iterator(__first.base(), > __last.base(), > __result, __Normal()); > } > > template <typename _BI1, typename _BI2> > inline _BI2 > __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last, > _BI2 __result, __false_type) > { > typedef typename _Is_normal_iterator<_BI2>::_Normal __Normal; > return std::__copy_backward_output_normal_iterator(__first, __last, > __result, __Normal()); > } ># 485 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template <typename _BI1, typename _BI2> > inline _BI2 > copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) > { > > > > > > > ; > > typedef typename _Is_normal_iterator<_BI1>::_Normal __Normal; > return std::__copy_backward_input_normal_iterator(__first, __last, > __result, __Normal()); > } ># 514 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _ForwardIterator, typename _Tp> > void > fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) > { > > > > ; > > for ( ; __first != __last; ++__first) > *__first = __value; > } ># 538 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _OutputIterator, typename _Size, typename _Tp> > _OutputIterator > fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) > { > > > > for ( ; __n > 0; --__n, ++__first) > *__first = __value; > return __first; > } > > > inline void > fill(unsigned char* __first, unsigned char* __last, const unsigned char& __c) > { > ; > const unsigned char __tmp = __c; > std::memset(__first, __tmp, __last - __first); > } > > inline void > fill(signed char* __first, signed char* __last, const signed char& __c) > { > ; > const signed char __tmp = __c; > std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first); > } > > inline void > fill(char* __first, char* __last, const char& __c) > { > ; > const char __tmp = __c; > std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first); > } > > template<typename _Size> > inline unsigned char* > fill_n(unsigned char* __first, _Size __n, const unsigned char& __c) > { > std::fill(__first, __first + __n, __c); > return __first + __n; > } > > template<typename _Size> > inline signed char* > fill_n(char* __first, _Size __n, const signed char& __c) > { > std::fill(__first, __first + __n, __c); > return __first + __n; > } > > template<typename _Size> > inline char* > fill_n(char* __first, _Size __n, const char& __c) > { > std::fill(__first, __first + __n, __c); > return __first + __n; > } ># 612 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > pair<_InputIterator1, _InputIterator2> > mismatch(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2) > { > > > > > > > > ; > > while (__first1 != __last1 && *__first1 == *__first2) > { > ++__first1; > ++__first2; > } > return pair<_InputIterator1, _InputIterator2>(__first1, __first2); > } ># 648 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _BinaryPredicate> > pair<_InputIterator1, _InputIterator2> > mismatch(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _BinaryPredicate __binary_pred) > { > > > > ; > > while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) > { > ++__first1; > ++__first2; > } > return pair<_InputIterator1, _InputIterator2>(__first1, __first2); > } ># 678 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > inline bool > equal(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2) > { > > > > > > > ; > > for ( ; __first1 != __last1; ++__first1, ++__first2) > if (!(*__first1 == *__first2)) > return false; > return true; > } ># 710 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _BinaryPredicate> > inline bool > equal(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, > _BinaryPredicate __binary_pred) > { > > > > ; > > for ( ; __first1 != __last1; ++__first1, ++__first2) > if (!__binary_pred(*__first1, *__first2)) > return false; > return true; > } ># 742 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > bool > lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2) > { > > > > > > > > ; > ; > > for (;__first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) > { > if (*__first1 < *__first2) > return true; > if (*__first2 < *__first1) > return false; > } > return __first1 == __last1 && __first2 != __last2; > } ># 779 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _Compare> > bool > lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _Compare __comp) > { > > > > ; > ; > > for ( ; __first1 != __last1 && __first2 != __last2 > ; ++__first1, ++__first2) > { > if (__comp(*__first1, *__first2)) > return true; > if (__comp(*__first2, *__first1)) > return false; > } > return __first1 == __last1 && __first2 != __last2; > } > > inline bool > lexicographical_compare(const unsigned char* __first1, > const unsigned char* __last1, > const unsigned char* __first2, > const unsigned char* __last2) > { > ; > ; > > const size_t __len1 = __last1 - __first1; > const size_t __len2 = __last2 - __first2; > const int __result = std::memcmp(__first1, __first2, > std::min(__len1, __len2)); > return __result != 0 ? __result < 0 : __len1 < __len2; > } > > inline bool > lexicographical_compare(const char* __first1, const char* __last1, > const char* __first2, const char* __last2) > { > ; > ; > > > return std::lexicographical_compare((const signed char*) __first1, > (const signed char*) __last1, > (const signed char*) __first2, > (const signed char*) __last2); > > > > > > > } > >} ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/allocator.h" 1 3 ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/allocator.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++allocator.h" 1 3 ># 34 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++allocator.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ext/new_allocator.h" 1 3 ># 35 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ext/new_allocator.h" 3 >namespace __gnu_cxx >{ ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ext/new_allocator.h" 3 > template<typename _Tp> > class new_allocator > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef const _Tp* const_pointer; > typedef _Tp& reference; > typedef const _Tp& const_reference; > typedef _Tp value_type; > > template<typename _Tp1> > struct rebind > { typedef new_allocator<_Tp1> other; }; > > new_allocator() throw() { } > > new_allocator(const new_allocator&) throw() { } > > template<typename _Tp1> > new_allocator(const new_allocator<_Tp1>&) throw() { } > > ~new_allocator() throw() { } > > pointer > address(reference __x) const { return &__x; } > > const_pointer > address(const_reference __x) const { return &__x; } > > > > pointer > allocate(size_type __n, const void* = 0) > { return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); } > > > void > deallocate(pointer __p, size_type) > { ::operator delete(__p); } > > size_type > max_size() const throw() > { return size_t(-1) / sizeof(_Tp); } > > > > void > construct(pointer __p, const _Tp& __val) > { ::new(__p) _Tp(__val); } > > void > destroy(pointer __p) { __p->~_Tp(); } > }; > > template<typename _Tp> > inline bool > operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) > { return true; } > > template<typename _Tp> > inline bool > operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) > { return false; } >} ># 35 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/c++allocator.h" 2 3 ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/allocator.h" 2 3 > >namespace std >{ > template<typename _Tp> > class allocator; > > template<> > class allocator<void> > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef void* pointer; > typedef const void* const_pointer; > typedef void value_type; > > template<typename _Tp1> > struct rebind > { typedef allocator<_Tp1> other; }; > }; > > > > > > > template<typename _Tp> > class allocator: public __gnu_cxx::new_allocator<_Tp> > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef const _Tp* const_pointer; > typedef _Tp& reference; > typedef const _Tp& const_reference; > typedef _Tp value_type; > > template<typename _Tp1> > struct rebind > { typedef allocator<_Tp1> other; }; > > allocator() throw() { } > > allocator(const allocator& a) throw() > : __gnu_cxx::new_allocator<_Tp>(a) { } > > template<typename _Tp1> > allocator(const allocator<_Tp1>&) throw() { } > > ~allocator() throw() { } > > > }; > > template<typename _T1, typename _T2> > inline bool > operator==(const allocator<_T1>&, const allocator<_T2>&) > { return true; } > > template<typename _T1, typename _T2> > inline bool > operator!=(const allocator<_T1>&, const allocator<_T2>&) > { return false; } > > > > > > extern template class allocator<char>; > extern template class allocator<wchar_t>; > > > > >} ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_construct.h" 1 3 ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_construct.h" 3 >namespace std >{ > > > > > > > template<typename _T1, typename _T2> > inline void > _Construct(_T1* __p, const _T2& __value) > { > > > ::new(static_cast<void*>(__p)) _T1(__value); > } > > > > > > > > template<typename _T1> > inline void > _Construct(_T1* __p) > { > > > ::new(static_cast<void*>(__p)) _T1(); > } > > > > > > > template<typename _Tp> > inline void > _Destroy(_Tp* __pointer) > { __pointer->~_Tp(); } ># 116 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_construct.h" 3 > template<typename _ForwardIterator> > inline void > __destroy_aux(_ForwardIterator __first, _ForwardIterator __last, > __false_type) > { for ( ; __first != __last; ++__first) std::_Destroy(&*__first); } ># 131 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_construct.h" 3 > template<typename _ForwardIterator> > inline void > __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type) > { } ># 143 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_construct.h" 3 > template<typename _ForwardIterator> > inline void > _Destroy(_ForwardIterator __first, _ForwardIterator __last) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _Value_type; > typedef typename __type_traits<_Value_type>::has_trivial_destructor > _Has_trivial_destructor; > > std::__destroy_aux(__first, __last, _Has_trivial_destructor()); > } >} ># 69 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 >namespace std >{ ># 101 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Arg, class _Result> > struct unary_function > { > typedef _Arg argument_type; > > > typedef _Result result_type; > }; > > > > > template <class _Arg1, class _Arg2, class _Result> > struct binary_function > { > typedef _Arg1 first_argument_type; > > > typedef _Arg2 second_argument_type; > typedef _Result result_type; > }; ># 133 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Tp> > struct plus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x + __y; } > }; > > > template <class _Tp> > struct minus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x - __y; } > }; > > > template <class _Tp> > struct multiplies : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x * __y; } > }; > > > template <class _Tp> > struct divides : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x / __y; } > }; > > > template <class _Tp> > struct modulus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x % __y; } > }; > > > template <class _Tp> > struct negate : public unary_function<_Tp, _Tp> > { > _Tp > operator()(const _Tp& __x) const > { return -__x; } > }; ># 195 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Tp> > struct equal_to : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x == __y; } > }; > > > template <class _Tp> > struct not_equal_to : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x != __y; } > }; > > > template <class _Tp> > struct greater : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x > __y; } > }; > > > template <class _Tp> > struct less : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x < __y; } > }; > > > template <class _Tp> > struct greater_equal : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x >= __y; } > }; > > > template <class _Tp> > struct less_equal : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x <= __y; } > }; ># 256 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Tp> > struct logical_and : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x && __y; } > }; > > > template <class _Tp> > struct logical_or : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x || __y; } > }; > > > template <class _Tp> > struct logical_not : public unary_function<_Tp, bool> > { > bool > operator()(const _Tp& __x) const > { return !__x; } > }; ># 311 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Predicate> > class unary_negate > : public unary_function<typename _Predicate::argument_type, bool> > { > protected: > _Predicate _M_pred; > public: > explicit > unary_negate(const _Predicate& __x) : _M_pred(__x) {} > > bool > operator()(const typename _Predicate::argument_type& __x) const > { return !_M_pred(__x); } > }; > > > template <class _Predicate> > inline unary_negate<_Predicate> > not1(const _Predicate& __pred) > { return unary_negate<_Predicate>(__pred); } > > > template <class _Predicate> > class binary_negate > : public binary_function<typename _Predicate::first_argument_type, > typename _Predicate::second_argument_type, > bool> > { > protected: > _Predicate _M_pred; > public: > explicit > binary_negate(const _Predicate& __x) > : _M_pred(__x) { } > > bool > operator()(const typename _Predicate::first_argument_type& __x, > const typename _Predicate::second_argument_type& __y) const > { return !_M_pred(__x, __y); } > }; > > > template <class _Predicate> > inline binary_negate<_Predicate> > not2(const _Predicate& __pred) > { return binary_negate<_Predicate>(__pred); } ># 391 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Operation> > class binder1st > : public unary_function<typename _Operation::second_argument_type, > typename _Operation::result_type> > { > protected: > _Operation op; > typename _Operation::first_argument_type value; > public: > binder1st(const _Operation& __x, > const typename _Operation::first_argument_type& __y) > : op(__x), value(__y) {} > > typename _Operation::result_type > operator()(const typename _Operation::second_argument_type& __x) const > { return op(value, __x); } > > > > typename _Operation::result_type > operator()(typename _Operation::second_argument_type& __x) const > { return op(value, __x); } > }; > > > template <class _Operation, class _Tp> > inline binder1st<_Operation> > bind1st(const _Operation& __fn, const _Tp& __x) > { > typedef typename _Operation::first_argument_type _Arg1_type; > return binder1st<_Operation>(__fn, _Arg1_type(__x)); > } > > > template <class _Operation> > class binder2nd > : public unary_function<typename _Operation::first_argument_type, > typename _Operation::result_type> > { > protected: > _Operation op; > typename _Operation::second_argument_type value; > public: > binder2nd(const _Operation& __x, > const typename _Operation::second_argument_type& __y) > : op(__x), value(__y) {} > > typename _Operation::result_type > operator()(const typename _Operation::first_argument_type& __x) const > { return op(__x, value); } > > > > typename _Operation::result_type > operator()(typename _Operation::first_argument_type& __x) const > { return op(__x, value); } > }; > > > template <class _Operation, class _Tp> > inline binder2nd<_Operation> > bind2nd(const _Operation& __fn, const _Tp& __x) > { > typedef typename _Operation::second_argument_type _Arg2_type; > return binder2nd<_Operation>(__fn, _Arg2_type(__x)); > } ># 480 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Arg, class _Result> > class pointer_to_unary_function : public unary_function<_Arg, _Result> > { > protected: > _Result (*_M_ptr)(_Arg); > public: > pointer_to_unary_function() {} > > explicit > pointer_to_unary_function(_Result (*__x)(_Arg)) > : _M_ptr(__x) {} > > _Result > operator()(_Arg __x) const > { return _M_ptr(__x); } > }; > > > template <class _Arg, class _Result> > inline pointer_to_unary_function<_Arg, _Result> > ptr_fun(_Result (*__x)(_Arg)) > { return pointer_to_unary_function<_Arg, _Result>(__x); } > > > template <class _Arg1, class _Arg2, class _Result> > class pointer_to_binary_function > : public binary_function<_Arg1, _Arg2, _Result> > { > protected: > _Result (*_M_ptr)(_Arg1, _Arg2); > public: > pointer_to_binary_function() {} > > explicit > pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) > : _M_ptr(__x) {} > > _Result > operator()(_Arg1 __x, _Arg2 __y) const > { return _M_ptr(__x, __y); } > }; > > > template <class _Arg1, class _Arg2, class _Result> > inline pointer_to_binary_function<_Arg1, _Arg2, _Result> > ptr_fun(_Result (*__x)(_Arg1, _Arg2)) > { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } > > > template <class _Tp> > struct _Identity : public unary_function<_Tp,_Tp> > { > _Tp& > operator()(_Tp& __x) const > { return __x; } > > const _Tp& > operator()(const _Tp& __x) const > { return __x; } > }; > > template <class _Pair> > struct _Select1st : public unary_function<_Pair, > typename _Pair::first_type> > { > typename _Pair::first_type& > operator()(_Pair& __x) const > { return __x.first; } > > const typename _Pair::first_type& > operator()(const _Pair& __x) const > { return __x.first; } > }; > > template <class _Pair> > struct _Select2nd : public unary_function<_Pair, > typename _Pair::second_type> > { > typename _Pair::second_type& > operator()(_Pair& __x) const > { return __x.second; } > > const typename _Pair::second_type& > operator()(const _Pair& __x) const > { return __x.second; } > }; ># 590 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_function.h" 3 > template <class _Ret, class _Tp> > class mem_fun_t : public unary_function<_Tp*, _Ret> > { > public: > explicit > mem_fun_t(_Ret (_Tp::*__pf)()) > : _M_f(__pf) {} > > _Ret > operator()(_Tp* __p) const > { return (__p->*_M_f)(); } > private: > _Ret (_Tp::*_M_f)(); > }; > > > template <class _Ret, class _Tp> > class const_mem_fun_t : public unary_function<const _Tp*, _Ret> > { > public: > explicit > const_mem_fun_t(_Ret (_Tp::*__pf)() const) > : _M_f(__pf) {} > > _Ret > operator()(const _Tp* __p) const > { return (__p->*_M_f)(); } > private: > _Ret (_Tp::*_M_f)() const; > }; > > > template <class _Ret, class _Tp> > class mem_fun_ref_t : public unary_function<_Tp, _Ret> > { > public: > explicit > mem_fun_ref_t(_Ret (_Tp::*__pf)()) > : _M_f(__pf) {} > > _Ret > operator()(_Tp& __r) const > { return (__r.*_M_f)(); } > private: > _Ret (_Tp::*_M_f)(); > }; > > > template <class _Ret, class _Tp> > class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> > { > public: > explicit > const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) > : _M_f(__pf) {} > > _Ret > operator()(const _Tp& __r) const > { return (__r.*_M_f)(); } > private: > _Ret (_Tp::*_M_f)() const; > }; > > > template <class _Ret, class _Tp, class _Arg> > class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> > { > public: > explicit > mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) > : _M_f(__pf) {} > > _Ret > operator()(_Tp* __p, _Arg __x) const > { return (__p->*_M_f)(__x); } > private: > _Ret (_Tp::*_M_f)(_Arg); > }; > > > template <class _Ret, class _Tp, class _Arg> > class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret> > { > public: > explicit > const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) {} > > _Ret > operator()(const _Tp* __p, _Arg __x) const > { return (__p->*_M_f)(__x); } > private: > _Ret (_Tp::*_M_f)(_Arg) const; > }; > > > template <class _Ret, class _Tp, class _Arg> > class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> > { > public: > explicit > mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) > : _M_f(__pf) {} > > _Ret > operator()(_Tp& __r, _Arg __x) const > { return (__r.*_M_f)(__x); } > private: > _Ret (_Tp::*_M_f)(_Arg); > }; > > > template <class _Ret, class _Tp, class _Arg> > class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> > { > public: > explicit > const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) {} > > _Ret > operator()(const _Tp& __r, _Arg __x) const > { return (__r.*_M_f)(__x); } > private: > _Ret (_Tp::*_M_f)(_Arg) const; > }; > > > template <class _Tp> > class mem_fun_t<void, _Tp> : public unary_function<_Tp*, void> > { > public: > explicit > mem_fun_t(void (_Tp::*__pf)()) > : _M_f(__pf) {} > > void > operator()(_Tp* __p) const > { (__p->*_M_f)(); } > private: > void (_Tp::*_M_f)(); > }; > > > template <class _Tp> > class const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*, void> > { > public: > explicit > const_mem_fun_t(void (_Tp::*__pf)() const) > : _M_f(__pf) {} > > void > operator()(const _Tp* __p) const > { (__p->*_M_f)(); } > private: > void (_Tp::*_M_f)() const; > }; > > > template <class _Tp> > class mem_fun_ref_t<void, _Tp> : public unary_function<_Tp, void> > { > public: > explicit > mem_fun_ref_t(void (_Tp::*__pf)()) > : _M_f(__pf) {} > > void > operator()(_Tp& __r) const > { (__r.*_M_f)(); } > private: > void (_Tp::*_M_f)(); > }; > > > template <class _Tp> > class const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp, void> > { > public: > explicit > const_mem_fun_ref_t(void (_Tp::*__pf)() const) > : _M_f(__pf) {} > > void > operator()(const _Tp& __r) const > { (__r.*_M_f)(); } > private: > void (_Tp::*_M_f)() const; > }; > > > template <class _Tp, class _Arg> > class mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*, _Arg, void> > { > public: > explicit > mem_fun1_t(void (_Tp::*__pf)(_Arg)) > : _M_f(__pf) {} > > void > operator()(_Tp* __p, _Arg __x) const > { (__p->*_M_f)(__x); } > private: > void (_Tp::*_M_f)(_Arg); > }; > > > template <class _Tp, class _Arg> > class const_mem_fun1_t<void, _Tp, _Arg> > : public binary_function<const _Tp*, _Arg, void> > { > public: > explicit > const_mem_fun1_t(void (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) {} > > void > operator()(const _Tp* __p, _Arg __x) const > { (__p->*_M_f)(__x); } > private: > void (_Tp::*_M_f)(_Arg) const; > }; > > > template <class _Tp, class _Arg> > class mem_fun1_ref_t<void, _Tp, _Arg> > : public binary_function<_Tp, _Arg, void> > { > public: > explicit > mem_fun1_ref_t(void (_Tp::*__pf)(_Arg)) > : _M_f(__pf) {} > > void > operator()(_Tp& __r, _Arg __x) const > { (__r.*_M_f)(__x); } > private: > void (_Tp::*_M_f)(_Arg); > }; > > > template <class _Tp, class _Arg> > class const_mem_fun1_ref_t<void, _Tp, _Arg> > : public binary_function<_Tp, _Arg, void> > { > public: > explicit > const_mem_fun1_ref_t(void (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) {} > > void > operator()(const _Tp& __r, _Arg __x) const > { (__r.*_M_f)(__x); } > private: > void (_Tp::*_M_f)(_Arg) const; > }; > > > > template <class _Ret, class _Tp> > inline mem_fun_t<_Ret, _Tp> > mem_fun(_Ret (_Tp::*__f)()) > { return mem_fun_t<_Ret, _Tp>(__f); } > > template <class _Ret, class _Tp> > inline const_mem_fun_t<_Ret, _Tp> > mem_fun(_Ret (_Tp::*__f)() const) > { return const_mem_fun_t<_Ret, _Tp>(__f); } > > template <class _Ret, class _Tp> > inline mem_fun_ref_t<_Ret, _Tp> > mem_fun_ref(_Ret (_Tp::*__f)()) > { return mem_fun_ref_t<_Ret, _Tp>(__f); } > > template <class _Ret, class _Tp> > inline const_mem_fun_ref_t<_Ret, _Tp> > mem_fun_ref(_Ret (_Tp::*__f)() const) > { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } > > template <class _Ret, class _Tp, class _Arg> > inline mem_fun1_t<_Ret, _Tp, _Arg> > mem_fun(_Ret (_Tp::*__f)(_Arg)) > { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } > > template <class _Ret, class _Tp, class _Arg> > inline const_mem_fun1_t<_Ret, _Tp, _Arg> > mem_fun(_Ret (_Tp::*__f)(_Arg) const) > { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } > > template <class _Ret, class _Tp, class _Arg> > inline mem_fun1_ref_t<_Ret, _Tp, _Arg> > mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) > { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } > > template <class _Ret, class _Tp, class _Arg> > inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> > mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) > { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } > > > >} ># 70 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/cpp_type_traits.h" 1 3 ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/cpp_type_traits.h" 3 > ># 41 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/cpp_type_traits.h" 3 ># 69 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/cpp_type_traits.h" 3 >namespace __gnu_internal >{ > typedef char __one; > typedef char __two[2]; > > template <typename _Tp> > __one __test_type (int _Tp::*); > template <typename _Tp> > __two& __test_type (...); >} > >namespace std >{ > > template<typename, typename> > struct __are_same > { > enum > { > _M_type = 0 > }; > }; > > template<typename _Tp> > struct __are_same<_Tp, _Tp> > { > enum > { > _M_type = 1 > }; > }; > > > template<typename, bool> > struct __enable_if > { > }; > > template<typename _Tp> > struct __enable_if<_Tp, true> > { > typedef _Tp _M_type; > }; > > > template<typename _Tp> > struct __is_void > { > enum > { > _M_type = 0 > }; > }; > > template<> > struct __is_void<void> > { > enum > { > _M_type = 1 > }; > }; > > > > > template<typename _Tp> > struct __is_integer > { > enum > { > _M_type = 0 > }; > }; > > > > > template<> > struct __is_integer<bool> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<char> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<signed char> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<unsigned char> > { > enum > { > _M_type = 1 > }; > }; > > > template<> > struct __is_integer<wchar_t> > { > enum > { > _M_type = 1 > }; > }; > > > template<> > struct __is_integer<short> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<unsigned short> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<int> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<unsigned int> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<long> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<unsigned long> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<long long> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_integer<unsigned long long> > { > enum > { > _M_type = 1 > }; > }; > > > > > template<typename _Tp> > struct __is_floating > { > enum > { > _M_type = 0 > }; > }; > > > template<> > struct __is_floating<float> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_floating<double> > { > enum > { > _M_type = 1 > }; > }; > > template<> > struct __is_floating<long double> > { > enum > { > _M_type = 1 > }; > }; > > > > > template<typename _Tp> > struct __is_arithmetic > { > enum > { > _M_type = __is_integer<_Tp>::_M_type || __is_floating<_Tp>::_M_type > }; > }; > > > > > template<typename _Tp> > struct __is_fundamental > { > enum > { > _M_type = __is_void<_Tp>::_M_type || __is_arithmetic<_Tp>::_M_type > }; > }; > > > > > template<typename _Tp> > struct __is_pod > { > enum > { > _M_type = (sizeof(__gnu_internal::__test_type<_Tp>(0)) > != sizeof(__gnu_internal::__one)) > }; > }; > >} ># 71 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 2 3 > >namespace std >{ ># 90 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tree.h" 3 > enum _Rb_tree_color { _S_red = false, _S_black = true }; > > struct _Rb_tree_node_base > { > typedef _Rb_tree_node_base* _Base_ptr; > typedef const _Rb_tree_node_base* _Const_Base_ptr; > > _Rb_tree_color _M_color; > _Base_ptr _M_parent; > _Base_ptr _M_left; > _Base_ptr _M_right; > > static _Base_ptr > _S_minimum(_Base_ptr __x) > { > while (__x->_M_left != 0) __x = __x->_M_left; > return __x; > } > > static _Const_Base_ptr > _S_minimum(_Const_Base_ptr __x) > { > while (__x->_M_left != 0) __x = __x->_M_left; > return __x; > } > > static _Base_ptr > _S_maximum(_Base_ptr __x) > { > while (__x->_M_right != 0) __x = __x->_M_right; > return __x; > } > > static _Const_Base_ptr > _S_maximum(_Const_Base_ptr __x) > { > while (__x->_M_right != 0) __x = __x->_M_right; > return __x; > } > }; > > template<typename _Val> > struct _Rb_tree_node : public _Rb_tree_node_base > { > typedef _Rb_tree_node<_Val>* _Link_type; > _Val _M_value_field; > }; > > _Rb_tree_node_base* > _Rb_tree_increment(_Rb_tree_node_base* __x); > > const _Rb_tree_node_base* > _Rb_tree_increment(const _Rb_tree_node_base* __x); > > _Rb_tree_node_base* > _Rb_tree_decrement(_Rb_tree_node_base* __x); > > const _Rb_tree_node_base* > _Rb_tree_decrement(const _Rb_tree_node_base* __x); > > template<typename _Tp> > struct _Rb_tree_iterator > { > typedef _Tp value_type; > typedef _Tp& reference; > typedef _Tp* pointer; > > typedef bidirectional_iterator_tag iterator_category; > typedef ptrdiff_t difference_type; > > typedef _Rb_tree_iterator<_Tp> _Self; > typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; > typedef _Rb_tree_node<_Tp>* _Link_type; > > _Rb_tree_iterator() { } > > _Rb_tree_iterator(_Link_type __x) > : _M_node(__x) { } > > reference > operator*() const > { return static_cast<_Link_type>(_M_node)->_M_value_field; } > > pointer > operator->() const > { return &static_cast<_Link_type>(_M_node)->_M_value_field; } > > _Self& > operator++() > { > _M_node = _Rb_tree_increment(_M_node); > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_increment(_M_node); > return __tmp; > } > > _Self& > operator--() > { > _M_node = _Rb_tree_decrement(_M_node); > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_decrement(_M_node); > return __tmp; > } > > bool > operator==(const _Self& __x) const > { return _M_node == __x._M_node; } > > bool > operator!=(const _Self& __x) const > { return _M_node != __x._M_node; } > > _Base_ptr _M_node; > }; > > template<typename _Tp> > struct _Rb_tree_const_iterator > { > typedef _Tp value_type; > typedef const _Tp& reference; > typedef const _Tp* pointer; > > typedef _Rb_tree_iterator<_Tp> iterator; > > typedef bidirectional_iterator_tag iterator_category; > typedef ptrdiff_t difference_type; > > typedef _Rb_tree_const_iterator<_Tp> _Self; > typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; > typedef const _Rb_tree_node<_Tp>* _Link_type; > > _Rb_tree_const_iterator() { } > > _Rb_tree_const_iterator(_Link_type __x) > : _M_node(__x) { } > > _Rb_tree_const_iterator(const iterator& __it) > : _M_node(__it._M_node) { } > > reference > operator*() const > { return static_cast<_Link_type>(_M_node)->_M_value_field; } > > pointer > operator->() const > { return &static_cast<_Link_type>(_M_node)->_M_value_field; } > > _Self& > operator++() > { > _M_node = _Rb_tree_increment(_M_node); > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_increment(_M_node); > return __tmp; > } > > _Self& > operator--() > { > _M_node = _Rb_tree_decrement(_M_node); > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_decrement(_M_node); > return __tmp; > } > > bool > operator==(const _Self& __x) const > { return _M_node == __x._M_node; } > > bool > operator!=(const _Self& __x) const > { return _M_node != __x._M_node; } > > _Base_ptr _M_node; > }; > > template<typename _Val> > inline bool > operator==(const _Rb_tree_iterator<_Val>& __x, > const _Rb_tree_const_iterator<_Val>& __y) > { return __x._M_node == __y._M_node; } > > template<typename _Val> > inline bool > operator!=(const _Rb_tree_iterator<_Val>& __x, > const _Rb_tree_const_iterator<_Val>& __y) > { return __x._M_node != __y._M_node; } > > void > _Rb_tree_rotate_left(_Rb_tree_node_base* const __x, > _Rb_tree_node_base*& __root); > > void > _Rb_tree_rotate_right(_Rb_tree_node_base* const __x, > _Rb_tree_node_base*& __root); > > void > _Rb_tree_insert_and_rebalance(const bool __insert_left, > _Rb_tree_node_base* __x, > _Rb_tree_node_base* __p, > _Rb_tree_node_base& __header); > > _Rb_tree_node_base* > _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, > _Rb_tree_node_base& __header); > > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc = allocator<_Val> > > class _Rb_tree > { > typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other > _Node_allocator; > > protected: > typedef _Rb_tree_node_base* _Base_ptr; > typedef const _Rb_tree_node_base* _Const_Base_ptr; > typedef _Rb_tree_node<_Val> _Rb_tree_node; > > public: > typedef _Key key_type; > typedef _Val value_type; > typedef value_type* pointer; > typedef const value_type* const_pointer; > typedef value_type& reference; > typedef const value_type& const_reference; > typedef _Rb_tree_node* _Link_type; > typedef const _Rb_tree_node* _Const_Link_type; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Alloc allocator_type; > > allocator_type > get_allocator() const > { return *static_cast<const _Node_allocator*>(&this->_M_impl); } > > protected: > _Rb_tree_node* > _M_get_node() > { return _M_impl._Node_allocator::allocate(1); } > > void > _M_put_node(_Rb_tree_node* __p) > { _M_impl._Node_allocator::deallocate(__p, 1); } > > _Link_type > _M_create_node(const value_type& __x) > { > _Link_type __tmp = _M_get_node(); > try > { std::_Construct(&__tmp->_M_value_field, __x); } > catch(...) > { > _M_put_node(__tmp); > throw; > } > return __tmp; > } > > _Link_type > _M_clone_node(_Const_Link_type __x) > { > _Link_type __tmp = _M_create_node(__x->_M_value_field); > __tmp->_M_color = __x->_M_color; > __tmp->_M_left = 0; > __tmp->_M_right = 0; > return __tmp; > } > > void > destroy_node(_Link_type __p) > { > std::_Destroy(&__p->_M_value_field); > _M_put_node(__p); > } > > protected: > template<typename _Key_compare, > bool _Is_pod_comparator = std::__is_pod<_Key_compare>::_M_type> > struct _Rb_tree_impl : public _Node_allocator > { > _Key_compare _M_key_compare; > _Rb_tree_node_base _M_header; > size_type _M_node_count; > > _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(), > const _Key_compare& __comp = _Key_compare()) > : _Node_allocator(__a), _M_key_compare(__comp), _M_node_count(0) > { > this->_M_header._M_color = _S_red; > this->_M_header._M_parent = 0; > this->_M_header._M_left = &this->_M_header; > this->_M_header._M_right = &this->_M_header; > } > }; > > > > template<typename _Key_compare> > struct _Rb_tree_impl<_Key_compare, true> : public _Node_allocator > { > _Key_compare _M_key_compare; > _Rb_tree_node_base _M_header; > size_type _M_node_count; > > _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(), > const _Key_compare& __comp = _Key_compare()) > : _Node_allocator(__a), _M_key_compare(__comp), _M_node_count(0) > { > this->_M_header._M_color = _S_red; > this->_M_header._M_parent = 0; > this->_M_header._M_left = &this->_M_header; > this->_M_header._M_right = &this->_M_header; > } > }; > > _Rb_tree_impl<_Compare> _M_impl; > > protected: > _Base_ptr& > _M_root() > { return this->_M_impl._M_header._M_parent; } > > _Const_Base_ptr > _M_root() const > { return this->_M_impl._M_header._M_parent; } > > _Base_ptr& > _M_leftmost() > { return this->_M_impl._M_header._M_left; } > > _Const_Base_ptr > _M_leftmost() const > { return this->_M_impl._M_header._M_left; } > > _Base_ptr& > _M_rightmost() > { return this->_M_impl._M_header._M_right; } > > _Const_Base_ptr > _M_rightmost() const > { return this->_M_impl._M_header._M_right; } > > _Link_type > _M_begin() > { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } > > _Const_Link_type > _M_begin() const > { return static_cast<_Const_Link_type>(this->_M_impl._M_header._M_parent); } > > _Link_type > _M_end() > { return static_cast<_Link_type>(&this->_M_impl._M_header); } > > _Const_Link_type > _M_end() const > { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); } > > static const_reference > _S_value(_Const_Link_type __x) > { return __x->_M_value_field; } > > static const _Key& > _S_key(_Const_Link_type __x) > { return _KeyOfValue()(_S_value(__x)); } > > static _Link_type > _S_left(_Base_ptr __x) > { return static_cast<_Link_type>(__x->_M_left); } > > static _Const_Link_type > _S_left(_Const_Base_ptr __x) > { return static_cast<_Const_Link_type>(__x->_M_left); } > > static _Link_type > _S_right(_Base_ptr __x) > { return static_cast<_Link_type>(__x->_M_right); } > > static _Const_Link_type > _S_right(_Const_Base_ptr __x) > { return static_cast<_Const_Link_type>(__x->_M_right); } > > static const_reference > _S_value(_Const_Base_ptr __x) > { return static_cast<_Const_Link_type>(__x)->_M_value_field; } > > static const _Key& > _S_key(_Const_Base_ptr __x) > { return _KeyOfValue()(_S_value(__x)); } > > static _Base_ptr > _S_minimum(_Base_ptr __x) > { return _Rb_tree_node_base::_S_minimum(__x); } > > static _Const_Base_ptr > _S_minimum(_Const_Base_ptr __x) > { return _Rb_tree_node_base::_S_minimum(__x); } > > static _Base_ptr > _S_maximum(_Base_ptr __x) > { return _Rb_tree_node_base::_S_maximum(__x); } > > static _Const_Base_ptr > _S_maximum(_Const_Base_ptr __x) > { return _Rb_tree_node_base::_S_maximum(__x); } > > public: > typedef _Rb_tree_iterator<value_type> iterator; > typedef _Rb_tree_const_iterator<value_type> const_iterator; > > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > > private: > iterator > _M_insert(_Base_ptr __x, _Base_ptr __y, const value_type& __v); > > _Link_type > _M_copy(_Const_Link_type __x, _Link_type __p); > > void > _M_erase(_Link_type __x); > > public: > > _Rb_tree() > { } > > _Rb_tree(const _Compare& __comp) > : _M_impl(allocator_type(), __comp) > { } > > _Rb_tree(const _Compare& __comp, const allocator_type& __a) > : _M_impl(__a, __comp) > { } > > _Rb_tree(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x) > : _M_impl(__x.get_allocator(), __x._M_impl._M_key_compare) > { > if (__x._M_root() != 0) > { > _M_root() = _M_copy(__x._M_begin(), _M_end()); > _M_leftmost() = _S_minimum(_M_root()); > _M_rightmost() = _S_maximum(_M_root()); > _M_impl._M_node_count = __x._M_impl._M_node_count; > } > } > > ~_Rb_tree() > { _M_erase(_M_begin()); } > > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& > operator=(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x); > > > _Compare > key_comp() const > { return _M_impl._M_key_compare; } > > iterator > begin() > { return static_cast<_Link_type>(this->_M_impl._M_header._M_left); } > > const_iterator > begin() const > { return static_cast<_Const_Link_type>(this->_M_impl._M_header._M_left); } > > iterator > end() > { return static_cast<_Link_type>(&this->_M_impl._M_header); } > > const_iterator > end() const > { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); } > > reverse_iterator > rbegin() > { return reverse_iterator(end()); } > > const_reverse_iterator > rbegin() const > { return const_reverse_iterator(end()); } > > reverse_iterator > rend() > { return reverse_iterator(begin()); } > > const_reverse_iterator > rend() const > { return const_reverse_iterator(begin()); } > > bool > empty() const > { return _M_impl._M_node_count == 0; } > > size_type > size() const > { return _M_impl._M_node_count; } > > size_type > max_size() const > { return size_type(-1); } > > void > swap(_Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __t); > > > pair<iterator,bool> > insert_unique(const value_type& __x); > > iterator > insert_equal(const value_type& __x); > > iterator > insert_unique(iterator __position, const value_type& __x); > > iterator > insert_equal(iterator __position, const value_type& __x); > > template<typename _InputIterator> > void > insert_unique(_InputIterator __first, _InputIterator __last); > > template<typename _InputIterator> > void > insert_equal(_InputIterator __first, _InputIterator __last); > > void > erase(iterator __position); > > size_type > erase(const key_type& __x); > > void > erase(iterator __first, iterator __last); > > void > erase(const key_type* __first, const key_type* __last); > > void > clear() > { > _M_erase(_M_begin()); > _M_leftmost() = _M_end(); > _M_root() = 0; > _M_rightmost() = _M_end(); > _M_impl._M_node_count = 0; > } > > > iterator > find(const key_type& __x); > > const_iterator > find(const key_type& __x) const; > > size_type > count(const key_type& __x) const; > > iterator > lower_bound(const key_type& __x); > > const_iterator > lower_bound(const key_type& __x) const; > > iterator > upper_bound(const key_type& __x); > > const_iterator > upper_bound(const key_type& __x) const; > > pair<iterator,iterator> > equal_range(const key_type& __x); > > pair<const_iterator, const_iterator> > equal_range(const key_type& __x) const; > > > bool > __rb_verify() const; > }; > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator==(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { > return __x.size() == __y.size() > && equal(__x.begin(), __x.end(), __y.begin()); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator<(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { > return lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator!=(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { return !(__x == __y); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator>(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { return __y < __x; } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator<=(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { return !(__y < __x); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator>=(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { return !(__x < __y); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline void > swap(_Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x, > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __y) > { __x.swap(__y); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > operator=(const _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __x) > { > if (this != &__x) > { > > clear(); > _M_impl._M_key_compare = __x._M_impl._M_key_compare; > if (__x._M_root() != 0) > { > _M_root() = _M_copy(__x._M_begin(), _M_end()); > _M_leftmost() = _S_minimum(_M_root()); > _M_rightmost() = _S_maximum(_M_root()); > _M_impl._M_node_count = __x._M_impl._M_node_count; > } > } > return *this; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > _M_insert(_Base_ptr __x, _Base_ptr __p, const _Val& __v) > { > _Link_type __z = _M_create_node(__v); > bool __insert_left; > > __insert_left = __x != 0 || __p == _M_end() > || _M_impl._M_key_compare(_KeyOfValue()(__v), > _S_key(__p)); > > _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, > this->_M_impl._M_header); > ++_M_impl._M_node_count; > return iterator(__z); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > insert_equal(const _Val& __v) > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > while (__x != 0) > { > __y = __x; > __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ? > _S_left(__x) : _S_right(__x); > } > return _M_insert(__x, __y, __v); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > swap(_Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>& __t) > { > if (_M_root() == 0) > { > if (__t._M_root() != 0) > { > _M_root() = __t._M_root(); > _M_leftmost() = __t._M_leftmost(); > _M_rightmost() = __t._M_rightmost(); > _M_root()->_M_parent = _M_end(); > > __t._M_root() = 0; > __t._M_leftmost() = __t._M_end(); > __t._M_rightmost() = __t._M_end(); > } > } > else if (__t._M_root() == 0) > { > __t._M_root() = _M_root(); > __t._M_leftmost() = _M_leftmost(); > __t._M_rightmost() = _M_rightmost(); > __t._M_root()->_M_parent = __t._M_end(); > > _M_root() = 0; > _M_leftmost() = _M_end(); > _M_rightmost() = _M_end(); > } > else > { > std::swap(_M_root(),__t._M_root()); > std::swap(_M_leftmost(),__t._M_leftmost()); > std::swap(_M_rightmost(),__t._M_rightmost()); > > _M_root()->_M_parent = _M_end(); > __t._M_root()->_M_parent = __t._M_end(); > } > > std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); > std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator, > bool> > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > insert_unique(const _Val& __v) > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > bool __comp = true; > while (__x != 0) > { > __y = __x; > __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)); > __x = __comp ? _S_left(__x) : _S_right(__x); > } > iterator __j = iterator(__y); > if (__comp) > if (__j == begin()) > return pair<iterator,bool>(_M_insert(__x, __y, __v), true); > else > --__j; > if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v))) > return pair<iterator,bool>(_M_insert(__x, __y, __v), true); > return pair<iterator,bool>(__j, false); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > insert_unique(iterator __position, const _Val& __v) > { > if (__position._M_node == _M_leftmost()) > { > > if (size() > 0 > && _M_impl._M_key_compare(_KeyOfValue()(__v), > _S_key(__position._M_node))) > return _M_insert(__position._M_node, __position._M_node, __v); > > else > return insert_unique(__v).first; > } > else if (__position._M_node == _M_end()) > { > > if (_M_impl._M_key_compare(_S_key(_M_rightmost()), > _KeyOfValue()(__v))) > return _M_insert(0, _M_rightmost(), __v); > else > return insert_unique(__v).first; > } > else > { > iterator __before = __position; > --__before; > if (_M_impl._M_key_compare(_S_key(__before._M_node), > _KeyOfValue()(__v)) > && _M_impl._M_key_compare(_KeyOfValue()(__v), > _S_key(__position._M_node))) > { > if (_S_right(__before._M_node) == 0) > return _M_insert(0, __before._M_node, __v); > else > return _M_insert(__position._M_node, __position._M_node, __v); > > } > else > return insert_unique(__v).first; > } > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > insert_equal(iterator __position, const _Val& __v) > { > if (__position._M_node == _M_leftmost()) > { > > if (size() > 0 > && !_M_impl._M_key_compare(_S_key(__position._M_node), > _KeyOfValue()(__v))) > return _M_insert(__position._M_node, __position._M_node, __v); > > else > return insert_equal(__v); > } > else if (__position._M_node == _M_end()) > { > > if (!_M_impl._M_key_compare(_KeyOfValue()(__v), > _S_key(_M_rightmost()))) > return _M_insert(0, _M_rightmost(), __v); > else > return insert_equal(__v); > } > else > { > iterator __before = __position; > --__before; > if (!_M_impl._M_key_compare(_KeyOfValue()(__v), > _S_key(__before._M_node)) > && !_M_impl._M_key_compare(_S_key(__position._M_node), > _KeyOfValue()(__v))) > { > if (_S_right(__before._M_node) == 0) > return _M_insert(0, __before._M_node, __v); > else > return _M_insert(__position._M_node, __position._M_node, __v); > > } > else > return insert_equal(__v); > } > } > > template<typename _Key, typename _Val, typename _KoV, > typename _Cmp, typename _Alloc> > template<class _II> > void > _Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>:: > insert_equal(_II __first, _II __last) > { > for ( ; __first != __last; ++__first) > insert_equal(*__first); > } > > template<typename _Key, typename _Val, typename _KoV, > typename _Cmp, typename _Alloc> > template<class _II> > void > _Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>:: > insert_unique(_II __first, _II __last) > { > for ( ; __first != __last; ++__first) > insert_unique(*__first); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline void > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::erase(iterator __position) > { > _Link_type __y = > static_cast<_Link_type>(_Rb_tree_rebalance_for_erase(__position._M_node, > this->_M_impl._M_header)); > destroy_node(__y); > --_M_impl._M_node_count; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::size_type > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::erase(const _Key& __x) > { > pair<iterator,iterator> __p = equal_range(__x); > size_type __n = std::distance(__p.first, __p.second); > erase(__p.first, __p.second); > return __n; > } > > template<typename _Key, typename _Val, typename _KoV, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type > _Rb_tree<_Key,_Val,_KoV,_Compare,_Alloc>:: > _M_copy(_Const_Link_type __x, _Link_type __p) > { > > _Link_type __top = _M_clone_node(__x); > __top->_M_parent = __p; > > try > { > if (__x->_M_right) > __top->_M_right = _M_copy(_S_right(__x), __top); > __p = __top; > __x = _S_left(__x); > > while (__x != 0) > { > _Link_type __y = _M_clone_node(__x); > __p->_M_left = __y; > __y->_M_parent = __p; > if (__x->_M_right) > __y->_M_right = _M_copy(_S_right(__x), __y); > __p = __y; > __x = _S_left(__x); > } > } > catch(...) > { > _M_erase(__top); > throw; > } > return __top; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::_M_erase(_Link_type __x) > { > > while (__x != 0) > { > _M_erase(_S_right(__x)); > _Link_type __y = _S_left(__x); > destroy_node(__x); > __x = __y; > } > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > erase(iterator __first, iterator __last) > { > if (__first == begin() && __last == end()) > clear(); > else > while (__first != __last) erase(__first++); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > erase(const _Key* __first, const _Key* __last) > { > while (__first != __last) > erase(*__first++); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::find(const _Key& __k) > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > > while (__x != 0) > if (!_M_impl._M_key_compare(_S_key(__x), __k)) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > > iterator __j = iterator(__y); > return (__j == end() > || _M_impl._M_key_compare(__k, _S_key(__j._M_node))) ? end() : __j; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::const_iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > find(const _Key& __k) const > { > _Const_Link_type __x = _M_begin(); > _Const_Link_type __y = _M_end(); > > while (__x != 0) > { > if (!_M_impl._M_key_compare(_S_key(__x), __k)) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > } > const_iterator __j = const_iterator(__y); > return (__j == end() > || _M_impl._M_key_compare(__k, _S_key(__j._M_node))) ? end() : __j; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::size_type > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > count(const _Key& __k) const > { > pair<const_iterator, const_iterator> __p = equal_range(__k); > const size_type __n = std::distance(__p.first, __p.second); > return __n; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > lower_bound(const _Key& __k) > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > > while (__x != 0) > if (!_M_impl._M_key_compare(_S_key(__x), __k)) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > > return iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::const_iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > lower_bound(const _Key& __k) const > { > _Const_Link_type __x = _M_begin(); > _Const_Link_type __y = _M_end(); > > while (__x != 0) > if (!_M_impl._M_key_compare(_S_key(__x), __k)) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > > return const_iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > upper_bound(const _Key& __k) > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > > while (__x != 0) > if (_M_impl._M_key_compare(__k, _S_key(__x))) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > > return iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::const_iterator > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > upper_bound(const _Key& __k) const > { > _Const_Link_type __x = _M_begin(); > _Const_Link_type __y = _M_end(); > > while (__x != 0) > if (_M_impl._M_key_compare(__k, _S_key(__x))) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > > return const_iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline > pair<typename _Rb_tree<_Key,_Val,_KeyOfValue, > _Compare,_Alloc>::iterator, > typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator> > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>:: > equal_range(const _Key& __k) > { return pair<iterator, iterator>(lower_bound(__k), upper_bound(__k)); } > > template<typename _Key, typename _Val, typename _KoV, > typename _Compare, typename _Alloc> > inline > pair<typename _Rb_tree<_Key, _Val, _KoV, > _Compare, _Alloc>::const_iterator, > typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::const_iterator> > _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: > equal_range(const _Key& __k) const > { return pair<const_iterator, const_iterator>(lower_bound(__k), > upper_bound(__k)); } > > unsigned int > _Rb_tree_black_count(const _Rb_tree_node_base* __node, > const _Rb_tree_node_base* __root); > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > bool > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const > { > if (_M_impl._M_node_count == 0 || begin() == end()) > return _M_impl._M_node_count == 0 && begin() == end() > && this->_M_impl._M_header._M_left == _M_end() > && this->_M_impl._M_header._M_right == _M_end(); > > unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); > for (const_iterator __it = begin(); __it != end(); ++__it) > { > _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); > _Const_Link_type __L = _S_left(__x); > _Const_Link_type __R = _S_right(__x); > > if (__x->_M_color == _S_red) > if ((__L && __L->_M_color == _S_red) > || (__R && __R->_M_color == _S_red)) > return false; > > if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) > return false; > if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) > return false; > > if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) > return false; > } > > if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) > return false; > if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) > return false; > return true; > } >} ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/map" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 >namespace std >{ ># 89 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > template <typename _Key, typename _Tp, typename _Compare = less<_Key>, > typename _Alloc = allocator<pair<const _Key, _Tp> > > > class map > { > > > > > > public: > typedef _Key key_type; > typedef _Tp mapped_type; > typedef pair<const _Key, _Tp> value_type; > typedef _Compare key_compare; > > class value_compare > : public binary_function<value_type, value_type, bool> > { > friend class map<_Key,_Tp,_Compare,_Alloc>; > protected: > _Compare comp; > > value_compare(_Compare __c) > : comp(__c) { } > > public: > bool operator()(const value_type& __x, const value_type& __y) const > { return comp(__x.first, __y.first); } > }; > > private: > > typedef _Rb_tree<key_type, value_type, > _Select1st<value_type>, key_compare, _Alloc> _Rep_type; > > _Rep_type _M_t; > > public: > > > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef typename _Rep_type::allocator_type allocator_type; > typedef typename _Rep_type::iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > typedef typename _Rep_type::reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > > > > > > > > map() > : _M_t(_Compare(), allocator_type()) { } > > > > > > explicit > map(const _Compare& __comp, const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) { } ># 165 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > map(const map& __x) > : _M_t(__x._M_t) { } ># 177 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > template <typename _InputIterator> > map(_InputIterator __first, _InputIterator __last) > : _M_t(_Compare(), allocator_type()) > { _M_t.insert_unique(__first, __last); } ># 193 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > template <typename _InputIterator> > map(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) > { _M_t.insert_unique(__first, __last); } ># 215 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > map& > operator=(const map& __x) > { > _M_t = __x._M_t; > return *this; > } > > > allocator_type > get_allocator() const > { return _M_t.get_allocator(); } > > > > > > > > iterator > begin() > { return _M_t.begin(); } > > > > > > > const_iterator > begin() const > { return _M_t.begin(); } > > > > > > iterator > end() > { return _M_t.end(); } > > > > > > > const_iterator > end() const > { return _M_t.end(); } > > > > > > > reverse_iterator > rbegin() > { return _M_t.rbegin(); } > > > > > > > const_reverse_iterator > rbegin() const > { return _M_t.rbegin(); } > > > > > > > reverse_iterator > rend() > { return _M_t.rend(); } > > > > > > > const_reverse_iterator > rend() const > { return _M_t.rend(); } > > > > > > bool > empty() const > { return _M_t.empty(); } > > > size_type > size() const > { return _M_t.size(); } > > > size_type > max_size() const > { return _M_t.max_size(); } ># 330 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > mapped_type& > operator[](const key_type& __k) > { > > > > iterator __i = lower_bound(__k); > > if (__i == end() || key_comp()(__k, (*__i).first)) > __i = insert(__i, value_type(__k, mapped_type())); > return (*__i).second; > } ># 358 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > pair<iterator,bool> > insert(const value_type& __x) > { return _M_t.insert_unique(__x); } ># 382 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > iterator > insert(iterator position, const value_type& __x) > { return _M_t.insert_unique(position, __x); } ># 394 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > template <typename _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t.insert_unique(__first, __last); } ># 408 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > void > erase(iterator __position) > { _M_t.erase(__position); } ># 423 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 438 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > void > erase(iterator __first, iterator __last) > { _M_t.erase(__first, __last); } ># 453 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > void > swap(map& __x) > { _M_t.swap(__x._M_t); } > > > > > > > > void > clear() > { _M_t.clear(); } > > > > > > > key_compare > key_comp() const > { return _M_t.key_comp(); } > > > > > > value_compare > value_comp() const > { return value_compare(_M_t.key_comp()); } ># 496 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } ># 511 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } ># 523 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > size_type > count(const key_type& __x) const > { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } ># 538 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } ># 553 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > const_iterator > lower_bound(const key_type& __x) const > { return _M_t.lower_bound(__x); } > > > > > > > > iterator > upper_bound(const key_type& __x) > { return _M_t.upper_bound(__x); } > > > > > > > > const_iterator > upper_bound(const key_type& __x) const > { return _M_t.upper_bound(__x); } ># 592 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > pair<iterator,iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } ># 611 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > pair<const_iterator,const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > template <typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator== (const map<_K1,_T1,_C1,_A1>&, > const map<_K1,_T1,_C1,_A1>&); > > template <typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator< (const map<_K1,_T1,_C1,_A1>&, > const map<_K1,_T1,_C1,_A1>&); > }; ># 636 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator==(const map<_Key,_Tp,_Compare,_Alloc>& __x, > const map<_Key,_Tp,_Compare,_Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 653 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_map.h" 3 > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<(const map<_Key,_Tp,_Compare,_Alloc>& __x, > const map<_Key,_Tp,_Compare,_Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator!=(const map<_Key,_Tp,_Compare,_Alloc>& __x, > const map<_Key,_Tp,_Compare,_Alloc>& __y) > { return !(__x == __y); } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>(const map<_Key,_Tp,_Compare,_Alloc>& __x, > const map<_Key,_Tp,_Compare,_Alloc>& __y) > { return __y < __x; } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<=(const map<_Key,_Tp,_Compare,_Alloc>& __x, > const map<_Key,_Tp,_Compare,_Alloc>& __y) > { return !(__y < __x); } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>=(const map<_Key,_Tp,_Compare,_Alloc>& __x, > const map<_Key,_Tp,_Compare,_Alloc>& __y) > { return !(__x < __y); } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline void > swap(map<_Key,_Tp,_Compare,_Alloc>& __x, map<_Key,_Tp,_Compare,_Alloc>& __y) > { __x.swap(__y); } >} ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/map" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 >namespace std >{ > > > template <typename _Key, typename _Tp, > typename _Compare = less<_Key>, > typename _Alloc = allocator<pair<const _Key, _Tp> > > > class multimap; > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator==(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y); > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y); ># 106 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > class multimap > { > > > > > > public: > typedef _Key key_type; > typedef _Tp mapped_type; > typedef pair<const _Key, _Tp> value_type; > typedef _Compare key_compare; > > class value_compare > : public binary_function<value_type, value_type, bool> > { > friend class multimap<_Key,_Tp,_Compare,_Alloc>; > protected: > _Compare comp; > > value_compare(_Compare __c) > : comp(__c) { } > > public: > bool operator()(const value_type& __x, const value_type& __y) const > { return comp(__x.first, __y.first); } > }; > > private: > > typedef _Rb_tree<key_type, value_type, > _Select1st<value_type>, key_compare, _Alloc> _Rep_type; > > _Rep_type _M_t; > > public: > > > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef typename _Rep_type::allocator_type allocator_type; > typedef typename _Rep_type::iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > typedef typename _Rep_type::reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > > > > > > > multimap() > : _M_t(_Compare(), allocator_type()) { } > > > > > > explicit > multimap(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) { } ># 181 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > multimap(const multimap& __x) > : _M_t(__x._M_t) { } ># 193 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > template <typename _InputIterator> > multimap(_InputIterator __first, _InputIterator __last) > : _M_t(_Compare(), allocator_type()) > { _M_t.insert_equal(__first, __last); } ># 209 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > template <typename _InputIterator> > multimap(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) > { _M_t.insert_equal(__first, __last); } ># 232 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > multimap& > operator=(const multimap& __x) > { > _M_t = __x._M_t; > return *this; > } > > > allocator_type > get_allocator() const > { return _M_t.get_allocator(); } > > > > > > > > iterator > begin() > { return _M_t.begin(); } > > > > > > > const_iterator > begin() const > { return _M_t.begin(); } > > > > > > > iterator > end() > { return _M_t.end(); } > > > > > > > const_iterator > end() const > { return _M_t.end(); } > > > > > > > reverse_iterator > rbegin() > { return _M_t.rbegin(); } > > > > > > > const_reverse_iterator > rbegin() const > { return _M_t.rbegin(); } > > > > > > > reverse_iterator > rend() > { return _M_t.rend(); } > > > > > > > const_reverse_iterator > rend() const > { return _M_t.rend(); } > > > > bool > empty() const > { return _M_t.empty(); } > > > size_type > size() const > { return _M_t.size(); } > > > size_type > max_size() const > { return _M_t.max_size(); } ># 346 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > iterator > insert(const value_type& __x) > { return _M_t.insert_equal(__x); } ># 370 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > iterator > insert(iterator __position, const value_type& __x) > { return _M_t.insert_equal(__position, __x); } ># 382 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > template <typename _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t.insert_equal(__first, __last); } ># 397 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > void > erase(iterator __position) > { _M_t.erase(__position); } ># 412 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 427 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > void > erase(iterator __first, iterator __last) > { _M_t.erase(__first, __last); } ># 442 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > void > swap(multimap& __x) > { _M_t.swap(__x._M_t); } > > > > > > > > void > clear() > { _M_t.clear(); } > > > > > > > key_compare > key_comp() const > { return _M_t.key_comp(); } > > > > > > value_compare > value_comp() const > { return value_compare(_M_t.key_comp()); } ># 485 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } ># 500 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } > > > > > > > size_type > count(const key_type& __x) const > { return _M_t.count(__x); } ># 524 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } ># 539 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > const_iterator > lower_bound(const key_type& __x) const > { return _M_t.lower_bound(__x); } > > > > > > > > iterator > upper_bound(const key_type& __x) > { return _M_t.upper_bound(__x); } > > > > > > > > const_iterator > upper_bound(const key_type& __x) const > { return _M_t.upper_bound(__x); } ># 576 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > pair<iterator,iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } ># 593 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > pair<const_iterator,const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > template <typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator== (const multimap<_K1,_T1,_C1,_A1>&, > const multimap<_K1,_T1,_C1,_A1>&); > > template <typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator< (const multimap<_K1,_T1,_C1,_A1>&, > const multimap<_K1,_T1,_C1,_A1>&); > }; ># 618 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator==(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 635 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multimap.h" 3 > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator!=(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { return !(__x == __y); } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { return __y < __x; } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<=(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { return !(__y < __x); } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>=(const multimap<_Key,_Tp,_Compare,_Alloc>& __x, > const multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { return !(__x < __y); } > > > template <typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline void > swap(multimap<_Key,_Tp,_Compare,_Alloc>& __x, > multimap<_Key,_Tp,_Compare,_Alloc>& __y) > { __x.swap(__y); } >} ># 69 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/map" 2 3 ># 23 "config.hpp" 2 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 1 3 ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 3 > ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 3 > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/char_traits.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/char_traits.h" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/char_traits.h" 3 > > > > > >namespace __gnu_cxx >{ ># 62 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/char_traits.h" 3 > template <class _CharT> > struct _Char_types > { > typedef unsigned long int_type; > typedef std::streampos pos_type; > typedef std::streamoff off_type; > typedef std::mbstate_t state_type; > }; ># 86 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/char_traits.h" 3 > template<typename _CharT> > struct char_traits > { > typedef _CharT char_type; > typedef typename _Char_types<_CharT>::int_type int_type; > typedef typename _Char_types<_CharT>::pos_type pos_type; > typedef typename _Char_types<_CharT>::off_type off_type; > typedef typename _Char_types<_CharT>::state_type state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, std::size_t __n); > > static std::size_t > length(const char_type* __s); > > static const char_type* > find(const char_type* __s, std::size_t __n, const char_type& __a); > > static char_type* > move(char_type* __s1, const char_type* __s2, std::size_t __n); > > static char_type* > copy(char_type* __s1, const char_type* __s2, std::size_t __n); > > static char_type* > assign(char_type* __s, std::size_t __n, char_type __a); > > static char_type > to_char_type(const int_type& __c) > { return static_cast<char_type>(__c); } > > static int_type > to_int_type(const char_type& __c) > { return static_cast<int_type>(__c); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() > { return static_cast<int_type>((-1)); } > > static int_type > not_eof(const int_type& __c) > { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } > }; > > template<typename _CharT> > int > char_traits<_CharT>:: > compare(const char_type* __s1, const char_type* __s2, std::size_t __n) > { > for (size_t __i = 0; __i < __n; ++__i) > if (lt(__s1[__i], __s2[__i])) > return -1; > else if (lt(__s2[__i], __s1[__i])) > return 1; > return 0; > } > > template<typename _CharT> > std::size_t > char_traits<_CharT>:: > length(const char_type* __p) > { > std::size_t __i = 0; > while (!eq(__p[__i], char_type())) > ++__i; > return __i; > } > > template<typename _CharT> > const typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > find(const char_type* __s, std::size_t __n, const char_type& __a) > { > for (std::size_t __i = 0; __i < __n; ++__i) > if (eq(__s[__i], __a)) > return __s + __i; > return 0; > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > move(char_type* __s1, const char_type* __s2, std::size_t __n) > { > return static_cast<_CharT*>(std::memmove(__s1, __s2, > __n * sizeof(char_type))); > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > copy(char_type* __s1, const char_type* __s2, std::size_t __n) > { > std::copy(__s2, __s2 + __n, __s1); > return __s1; > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > assign(char_type* __s, std::size_t __n, char_type __a) > { > std::fill_n(__s, __n, __a); > return __s; > } >} > >namespace std >{ ># 224 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/char_traits.h" 3 > template<class _CharT> > struct char_traits > : public __gnu_cxx::char_traits<_CharT> > { }; > > > > template<> > struct char_traits<char> > { > typedef char char_type; > typedef int int_type; > typedef streampos pos_type; > typedef streamoff off_type; > typedef mbstate_t state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, size_t __n) > { return memcmp(__s1, __s2, __n); } > > static size_t > length(const char_type* __s) > { return strlen(__s); } > > static const char_type* > find(const char_type* __s, size_t __n, const char_type& __a) > { return static_cast<const char_type*>(memchr(__s, __a, __n)); } > > static char_type* > move(char_type* __s1, const char_type* __s2, size_t __n) > { return static_cast<char_type*>(memmove(__s1, __s2, __n)); } > > static char_type* > copy(char_type* __s1, const char_type* __s2, size_t __n) > { return static_cast<char_type*>(memcpy(__s1, __s2, __n)); } > > static char_type* > assign(char_type* __s, size_t __n, char_type __a) > { return static_cast<char_type*>(memset(__s, __a, __n)); } > > static char_type > to_char_type(const int_type& __c) > { return static_cast<char_type>(__c); } > > > > static int_type > to_int_type(const char_type& __c) > { return static_cast<int_type>(static_cast<unsigned char>(__c)); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() { return static_cast<int_type>((-1)); } > > static int_type > not_eof(const int_type& __c) > { return (__c == eof()) ? 0 : __c; } > }; > > > > > template<> > struct char_traits<wchar_t> > { > typedef wchar_t char_type; > typedef wint_t int_type; > typedef streamoff off_type; > typedef wstreampos pos_type; > typedef mbstate_t state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, size_t __n) > { return wmemcmp(__s1, __s2, __n); } > > static size_t > length(const char_type* __s) > { return wcslen(__s); } > > static const char_type* > find(const char_type* __s, size_t __n, const char_type& __a) > { return wmemchr(__s, __a, __n); } > > static char_type* > move(char_type* __s1, const char_type* __s2, size_t __n) > { return wmemmove(__s1, __s2, __n); } > > static char_type* > copy(char_type* __s1, const char_type* __s2, size_t __n) > { return wmemcpy(__s1, __s2, __n); } > > static char_type* > assign(char_type* __s, size_t __n, char_type __a) > { return wmemset(__s, __a, __n); } > > static char_type > to_char_type(const int_type& __c) { return char_type(__c); } > > static int_type > to_int_type(const char_type& __c) { return int_type(__c); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() { return static_cast<int_type>((0xffffffffu)); } > > static int_type > not_eof(const int_type& __c) > { return eq_int_type(__c, eof()) ? 0 : __c; } > }; > > > template<typename _CharT, typename _Traits> > struct _Char_traits_match > { > _CharT _M_c; > _Char_traits_match(_CharT const& __c) : _M_c(__c) { } > > bool > operator()(_CharT const& __a) { return _Traits::eq(_M_c, __a); } > }; >} ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 2 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/localefwd.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/localefwd.h" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/localefwd.h" 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 3 >namespace std >{ > > void > __throw_bad_exception(void); > > > void > __throw_bad_alloc(void); > > > void > __throw_bad_cast(void); > > void > __throw_bad_typeid(void); > > > void > __throw_logic_error(const char* __s); > > void > __throw_domain_error(const char* __s); > > void > __throw_invalid_argument(const char* __s); > > void > __throw_length_error(const char* __s); > > void > __throw_out_of_range(const char* __s); > > void > __throw_runtime_error(const char* __s); > > void > __throw_range_error(const char* __s); > > void > __throw_overflow_error(const char* __s); > > void > __throw_underflow_error(const char* __s); > > > void > __throw_ios_failure(const char* __s); >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/localefwd.h" 2 3 > >namespace std >{ > > class locale; > > > template<typename _CharT> > inline bool > isspace(_CharT, const locale&); > > template<typename _CharT> > inline bool > isprint(_CharT, const locale&); > > template<typename _CharT> > inline bool > iscntrl(_CharT, const locale&); > > template<typename _CharT> > inline bool > isupper(_CharT, const locale&); > > template<typename _CharT> > inline bool > islower(_CharT, const locale&); > > template<typename _CharT> > inline bool > isalpha(_CharT, const locale&); > > template<typename _CharT> > inline bool > isdigit(_CharT, const locale&); > > template<typename _CharT> > inline bool > ispunct(_CharT, const locale&); > > template<typename _CharT> > inline bool > isxdigit(_CharT, const locale&); > > template<typename _CharT> > inline bool > isalnum(_CharT, const locale&); > > template<typename _CharT> > inline bool > isgraph(_CharT, const locale&); > > template<typename _CharT> > inline _CharT > toupper(_CharT, const locale&); > > template<typename _CharT> > inline _CharT > tolower(_CharT, const locale&); > > > class ctype_base; > template<typename _CharT> > class ctype; > template<> class ctype<char>; > > template<> class ctype<wchar_t>; > > template<typename _CharT> > class ctype_byname; > > > class codecvt_base; > class __enc_traits; > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt; > template<> class codecvt<char, char, mbstate_t>; > > template<> class codecvt<wchar_t, char, mbstate_t>; > > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt_byname; > > > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class num_get; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class num_put; > template<typename _CharT> class numpunct; > template<typename _CharT> class numpunct_byname; > > > template<typename _CharT> > class collate; > template<typename _CharT> class > collate_byname; > > > class time_base; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class time_get; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class time_get_byname; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class time_put; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class time_put_byname; > > > class money_base; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class money_get; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class money_put; > template<typename _CharT, bool _Intl = false> > class moneypunct; > template<typename _CharT, bool _Intl = false> > class moneypunct_byname; > > > class messages_base; > template<typename _CharT> > class messages; > template<typename _CharT> > class messages_byname; > > template<typename _Facet> > bool > has_facet(const locale& __loc) throw(); > > template<typename _Facet> > const _Facet& > use_facet(const locale& __loc); > > template<typename _Facet> > inline const _Facet& > __check_facet(const _Facet* __f) > { > if (!__f) > __throw_bad_cast(); > return *__f; > } >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/atomicity.h" 1 3 ># 33 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/atomicity.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/atomic_word.h" 1 3 ># 33 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/atomic_word.h" 3 >typedef int _Atomic_word; ># 34 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/atomicity.h" 2 3 > >namespace __gnu_cxx >{ > _Atomic_word > __attribute__ ((__unused__)) > __exchange_and_add(volatile _Atomic_word* __mem, int __val); > > void > __attribute__ ((__unused__)) > __atomic_add(volatile _Atomic_word* __mem, int __val); >} ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 2 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 1 3 ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_uninitialized.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_uninitialized.h" 3 >namespace std >{ > > template<typename _InputIterator, typename _ForwardIterator> > inline _ForwardIterator > __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, > __true_type) > { return std::copy(__first, __last, __result); } > > template<typename _InputIterator, typename _ForwardIterator> > inline _ForwardIterator > __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, > __false_type) > { > _ForwardIterator __cur = __result; > try > { > for ( ; __first != __last; ++__first, ++__cur) > std::_Construct(&*__cur, *__first); > return __cur; > } > catch(...) > { > std::_Destroy(__result, __cur); > throw; > } > } ># 105 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_uninitialized.h" 3 > template<typename _InputIterator, typename _ForwardIterator> > inline _ForwardIterator > uninitialized_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result) > { > typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; > typedef typename __type_traits<_ValueType>::is_POD_type _Is_POD; > return std::__uninitialized_copy_aux(__first, __last, __result, > _Is_POD()); > } > > inline char* > uninitialized_copy(const char* __first, const char* __last, char* __result) > { > std::memmove(__result, __first, __last - __first); > return __result + (__last - __first); > } > > inline wchar_t* > uninitialized_copy(const wchar_t* __first, const wchar_t* __last, > wchar_t* __result) > { > std::memmove(__result, __first, sizeof(wchar_t) * (__last - __first)); > return __result + (__last - __first); > } > > > > template<typename _ForwardIterator, typename _Tp> > inline void > __uninitialized_fill_aux(_ForwardIterator __first, > _ForwardIterator __last, > const _Tp& __x, __true_type) > { std::fill(__first, __last, __x); } > > template<typename _ForwardIterator, typename _Tp> > void > __uninitialized_fill_aux(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x, __false_type) > { > _ForwardIterator __cur = __first; > try > { > for ( ; __cur != __last; ++__cur) > std::_Construct(&*__cur, __x); > } > catch(...) > { > std::_Destroy(__first, __cur); > throw; > } > } ># 167 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_uninitialized.h" 3 > template<typename _ForwardIterator, typename _Tp> > inline void > uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x) > { > typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; > typedef typename __type_traits<_ValueType>::is_POD_type _Is_POD; > std::__uninitialized_fill_aux(__first, __last, __x, _Is_POD()); > } > > > > template<typename _ForwardIterator, typename _Size, typename _Tp> > inline _ForwardIterator > __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n, > const _Tp& __x, __true_type) > { return std::fill_n(__first, __n, __x); } > > template<typename _ForwardIterator, typename _Size, typename _Tp> > _ForwardIterator > __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n, > const _Tp& __x, __false_type) > { > _ForwardIterator __cur = __first; > try > { > for ( ; __n > 0; --__n, ++__cur) > std::_Construct(&*__cur, __x); > return __cur; > } > catch(...) > { > std::_Destroy(__first, __cur); > throw; > } > } ># 213 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_uninitialized.h" 3 > template<typename _ForwardIterator, typename _Size, typename _Tp> > inline _ForwardIterator > uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) > { > typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; > typedef typename __type_traits<_ValueType>::is_POD_type _Is_POD; > return std::__uninitialized_fill_n_aux(__first, __n, __x, _Is_POD()); > } ># 230 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_uninitialized.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _ForwardIterator> > inline _ForwardIterator > __uninitialized_copy_copy(_InputIterator1 __first1, > _InputIterator1 __last1, > _InputIterator2 __first2, > _InputIterator2 __last2, > _ForwardIterator __result) > { > _ForwardIterator __mid = std::uninitialized_copy(__first1, __last1, > __result); > try > { > return std::uninitialized_copy(__first2, __last2, __mid); > } > catch(...) > { > std::_Destroy(__result, __mid); > throw; > } > } > > > > > template<typename _ForwardIterator, typename _Tp, typename _InputIterator> > inline _ForwardIterator > __uninitialized_fill_copy(_ForwardIterator __result, _ForwardIterator __mid, > const _Tp& __x, _InputIterator __first, > _InputIterator __last) > { > std::uninitialized_fill(__result, __mid, __x); > try > { > return std::uninitialized_copy(__first, __last, __mid); > } > catch(...) > { > std::_Destroy(__result, __mid); > throw; > } > } > > > > > template<typename _InputIterator, typename _ForwardIterator, typename _Tp> > inline void > __uninitialized_copy_fill(_InputIterator __first1, _InputIterator __last1, > _ForwardIterator __first2, > _ForwardIterator __last2, const _Tp& __x) > { > _ForwardIterator __mid2 = std::uninitialized_copy(__first1, __last1, > __first2); > try > { > std::uninitialized_fill(__mid2, __last2, __x); > } > catch(...) > { > std::_Destroy(__first2, __mid2); > throw; > } > } > >} ># 59 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_raw_storage_iter.h" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_raw_storage_iter.h" 3 >namespace std >{ > > > > > template <class _ForwardIterator, class _Tp> > class raw_storage_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _ForwardIterator _M_iter; > > public: > explicit > raw_storage_iterator(_ForwardIterator __x) > : _M_iter(__x) {} > > raw_storage_iterator& > operator*() { return *this; } > > raw_storage_iterator& > operator=(const _Tp& __element) > { > std::_Construct(&*_M_iter, __element); > return *this; > } > > raw_storage_iterator<_ForwardIterator, _Tp>& > operator++() > { > ++_M_iter; > return *this; > } > > raw_storage_iterator<_ForwardIterator, _Tp> > operator++(int) > { > raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this; > ++_M_iter; > return __tmp; > } > }; >} ># 60 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 2 3 > > >namespace std >{ ># 72 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp> > pair<_Tp*, ptrdiff_t> > __get_temporary_buffer(ptrdiff_t __len, _Tp*) > { > if (__len > ptrdiff_t(2147483647 / sizeof(_Tp))) > __len = 2147483647 / sizeof(_Tp); > > while (__len > 0) > { > _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), > nothrow)); > if (__tmp != 0) > return pair<_Tp*, ptrdiff_t>(__tmp, __len); > __len /= 2; > } > return pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); > } ># 107 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp> > inline pair<_Tp*,ptrdiff_t> > get_temporary_buffer(ptrdiff_t __len) > { return std::__get_temporary_buffer(__len, static_cast<_Tp*>(0)); } ># 119 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp> > void > return_temporary_buffer(_Tp* __p) > { ::operator delete(__p, nothrow); } ># 131 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp1> > struct auto_ptr_ref > { > _Tp1* _M_ptr; > > explicit > auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } > }; ># 172 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp> > class auto_ptr > { > private: > _Tp* _M_ptr; > > public: > > typedef _Tp element_type; > > > > > > > > explicit > auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } ># 198 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } ># 210 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp1> > auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } ># 221 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > auto_ptr& > operator=(auto_ptr& __a) throw() > { > reset(__a.release()); > return *this; > } ># 238 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > template<typename _Tp1> > auto_ptr& > operator=(auto_ptr<_Tp1>& __a) throw() > { > reset(__a.release()); > return *this; > } ># 258 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > ~auto_ptr() { delete _M_ptr; } ># 268 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > element_type& > operator*() const throw() > { > ; > return *_M_ptr; > } > > > > > > > > element_type* > operator->() const throw() > { > ; > return _M_ptr; > } ># 298 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > element_type* > get() const throw() { return _M_ptr; } ># 312 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > element_type* > release() throw() > { > element_type* __tmp = _M_ptr; > _M_ptr = 0; > return __tmp; > } ># 327 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > void > reset(element_type* __p = 0) throw() > { > if (__p != _M_ptr) > { > delete _M_ptr; > _M_ptr = __p; > } > } ># 348 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/memory" 3 > auto_ptr(auto_ptr_ref<element_type> __ref) throw() > : _M_ptr(__ref._M_ptr) { } > > auto_ptr& > operator=(auto_ptr_ref<element_type> __ref) throw() > { > if (__ref._M_ptr != this->get()) > { > delete _M_ptr; > _M_ptr = __ref._M_ptr; > } > return *this; > } > > template<typename _Tp1> > operator auto_ptr_ref<_Tp1>() throw() > { return auto_ptr_ref<_Tp1>(this->release()); } > > template<typename _Tp1> > operator auto_ptr<_Tp1>() throw() > { return auto_ptr<_Tp1>(this->release()); } > > }; >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 2 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > > > > >namespace std >{ ># 109 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_string > { > > public: > typedef _Traits traits_type; > typedef typename _Traits::char_type value_type; > typedef _Alloc allocator_type; > typedef typename _Alloc::size_type size_type; > typedef typename _Alloc::difference_type difference_type; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; > typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string> > const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > > private: ># 144 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > struct _Rep_base > { > size_type _M_length; > size_type _M_capacity; > _Atomic_word _M_refcount; > }; > > struct _Rep : _Rep_base > { > > typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc; ># 169 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > static const size_type _S_max_size; > static const _CharT _S_terminal; > > > > static size_type _S_empty_rep_storage[]; > > static _Rep& > _S_empty_rep() > { return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); } > > bool > _M_is_leaked() const > { return this->_M_refcount < 0; } > > bool > _M_is_shared() const > { return this->_M_refcount > 0; } > > void > _M_set_leaked() > { this->_M_refcount = -1; } > > void > _M_set_sharable() > { this->_M_refcount = 0; } > > _CharT* > _M_refdata() throw() > { return reinterpret_cast<_CharT*>(this + 1); } > > _CharT* > _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) > { > return (!_M_is_leaked() && __alloc1 == __alloc2) > ? _M_refcopy() : _M_clone(__alloc1); > } > > > static _Rep* > _S_create(size_type, size_type, const _Alloc&); > > void > _M_dispose(const _Alloc& __a) > { > if (__builtin_expect(this != &_S_empty_rep(), false)) > if (__gnu_cxx::__exchange_and_add(&this->_M_refcount, -1) <= 0) > _M_destroy(__a); > } > > void > _M_destroy(const _Alloc&) throw(); > > _CharT* > _M_refcopy() throw() > { > if (__builtin_expect(this != &_S_empty_rep(), false)) > __gnu_cxx::__atomic_add(&this->_M_refcount, 1); > return _M_refdata(); > } > > _CharT* > _M_clone(const _Alloc&, size_type __res = 0); > }; > > > struct _Alloc_hider : _Alloc > { > _Alloc_hider(_CharT* __dat, const _Alloc& __a) > : _Alloc(__a), _M_p(__dat) { } > > _CharT* _M_p; > }; > > public: > > > > > > static const size_type npos = static_cast<size_type>(-1); > > private: > > mutable _Alloc_hider _M_dataplus; > > _CharT* > _M_data() const > { return _M_dataplus._M_p; } > > _CharT* > _M_data(_CharT* __p) > { return (_M_dataplus._M_p = __p); } > > _Rep* > _M_rep() const > { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } > > > > iterator > _M_ibegin() const { return iterator(_M_data()); } > > iterator > _M_iend() const { return iterator(_M_data() + this->size()); } > > void > _M_leak() > { > if (!_M_rep()->_M_is_leaked()) > _M_leak_hard(); > } > > size_type > _M_check(size_type __pos, const char* __s) const > { > if (__pos > this->size()) > __throw_out_of_range((__s)); > return __pos; > } > > > size_type > _M_limit(size_type __pos, size_type __off) const > { > const bool __testoff = __off < this->size() - __pos; > return __testoff ? __off : this->size() - __pos; > } > > > > template<class _Iterator> > static void > _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) > { > for (; __k1 != __k2; ++__k1, ++__p) > traits_type::assign(*__p, *__k1); > } > > static void > _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) > { _S_copy_chars(__p, __k1.base(), __k2.base()); } > > static void > _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) > { _S_copy_chars(__p, __k1.base(), __k2.base()); } > > static void > _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) > { traits_type::copy(__p, __k1, __k2 - __k1); } > > static void > _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) > { traits_type::copy(__p, __k1, __k2 - __k1); } > > void > _M_mutate(size_type __pos, size_type __len1, size_type __len2); > > void > _M_leak_hard(); > > static _Rep& > _S_empty_rep() > { return _Rep::_S_empty_rep(); } > > public: > > > > > > > > inline > basic_string(); > > > > > explicit > basic_string(const _Alloc& __a); > > > > > > > basic_string(const basic_string& __str); > > > > > > > basic_string(const basic_string& __str, size_type __pos, > size_type __n = npos); > > > > > > > > basic_string(const basic_string& __str, size_type __pos, > size_type __n, const _Alloc& __a); ># 384 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string(const _CharT* __s, size_type __n, > const _Alloc& __a = _Alloc()); > > > > > > basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); > > > > > > > basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); > > > > > > > > template<class _InputIterator> > basic_string(_InputIterator __beg, _InputIterator __end, > const _Alloc& __a = _Alloc()); > > > > > ~basic_string() > { _M_rep()->_M_dispose(this->get_allocator()); } > > > > > > basic_string& > operator=(const basic_string& __str) > { > this->assign(__str); > return *this; > } > > > > > > basic_string& > operator=(const _CharT* __s) > { > this->assign(__s); > return *this; > } ># 445 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > operator=(_CharT __c) > { > this->assign(1, __c); > return *this; > } > > > > > > > iterator > begin() > { > _M_leak(); > return iterator(_M_data()); > } > > > > > > const_iterator > begin() const > { return const_iterator(_M_data()); } > > > > > > iterator > end() > { > _M_leak(); > return iterator(_M_data() + this->size()); > } > > > > > > const_iterator > end() const > { return const_iterator(_M_data() + this->size()); } > > > > > > > reverse_iterator > rbegin() > { return reverse_iterator(this->end()); } > > > > > > > const_reverse_iterator > rbegin() const > { return const_reverse_iterator(this->end()); } > > > > > > > reverse_iterator > rend() > { return reverse_iterator(this->begin()); } > > > > > > > const_reverse_iterator > rend() const > { return const_reverse_iterator(this->begin()); } > > public: > > > > size_type > size() const { return _M_rep()->_M_length; } > > > > size_type > length() const { return _M_rep()->_M_length; } > > > size_type > max_size() const { return _Rep::_S_max_size; } ># 553 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > void > resize(size_type __n, _CharT __c); ># 566 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > void > resize(size_type __n) { this->resize(__n, _CharT()); } > > > > > > size_type > capacity() const { return _M_rep()->_M_capacity; } ># 593 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > void > reserve(size_type __res_arg = 0); > > > > > void > clear() { _M_mutate(0, this->size(), 0); } > > > > > bool > empty() const { return this->size() == 0; } ># 619 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > const_reference > operator[] (size_type __pos) const > { > ; > return _M_data()[__pos]; > } ># 636 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > reference > operator[](size_type __pos) > { > ; > _M_leak(); > return _M_data()[__pos]; > } ># 654 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > const_reference > at(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("basic_string::at")); > return _M_data()[__n]; > } ># 673 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > reference > at(size_type __n) > { > if (__n >= size()) > __throw_out_of_range(("basic_string::at")); > _M_leak(); > return _M_data()[__n]; > } > > > > > > > > basic_string& > operator+=(const basic_string& __str) { return this->append(__str); } > > > > > > > basic_string& > operator+=(const _CharT* __s) { return this->append(__s); } > > > > > > > basic_string& > operator+=(_CharT __c) { return this->append(size_type(1), __c); } > > > > > > > basic_string& > append(const basic_string& __str); ># 727 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > append(const basic_string& __str, size_type __pos, size_type __n); > > > > > > > > basic_string& > append(const _CharT* __s, size_type __n); > > > > > > > basic_string& > append(const _CharT* __s) > { > ; > return this->append(__s, traits_type::length(__s)); > } ># 759 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > append(size_type __n, _CharT __c) > { return _M_replace_aux(this->size(), size_type(0), __n, __c); } ># 771 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > append(_InputIterator __first, _InputIterator __last) > { return this->replace(_M_iend(), _M_iend(), __first, __last); } > > > > > > void > push_back(_CharT __c) > { _M_replace_aux(this->size(), size_type(0), size_type(1), __c); } > > > > > > > basic_string& > assign(const basic_string& __str); ># 804 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > assign(const basic_string& __str, size_type __pos, size_type __n) > { return this->assign(__str._M_data() > + __str._M_check(__pos, "basic_string::assign"), > __str._M_limit(__pos, __n)); } ># 820 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > assign(const _CharT* __s, size_type __n); ># 832 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > assign(const _CharT* __s) > { > ; > return this->assign(__s, traits_type::length(__s)); > } ># 848 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > assign(size_type __n, _CharT __c) > { return _M_replace_aux(size_type(0), this->size(), __n, __c); } ># 860 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > assign(_InputIterator __first, _InputIterator __last) > { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } ># 877 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > void > insert(iterator __p, size_type __n, _CharT __c) > { this->replace(__p, __p, __n, __c); } ># 892 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<class _InputIterator> > void insert(iterator __p, _InputIterator __beg, _InputIterator __end) > { this->replace(__p, __p, __beg, __end); } ># 907 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos1, const basic_string& __str) > { return this->insert(__pos1, __str, size_type(0), __str.size()); } ># 929 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos1, const basic_string& __str, > size_type __pos2, size_type __n) > { return this->insert(__pos1, __str._M_data() > + __str._M_check(__pos2, "basic_string::insert"), > __str._M_limit(__pos2, __n)); } ># 952 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, const _CharT* __s, size_type __n); ># 970 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, const _CharT* __s) > { > ; > return this->insert(__pos, __s, traits_type::length(__s)); > } ># 993 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, size_type __n, _CharT __c) > { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), > size_type(0), __n, __c); } ># 1010 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > iterator > insert(iterator __p, _CharT __c) > { > ; > const size_type __pos = __p - _M_ibegin(); > _M_replace_aux(__pos, size_type(0), size_type(1), __c); > _M_rep()->_M_set_leaked(); > return this->_M_ibegin() + __pos; > } ># 1034 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > erase(size_type __pos = 0, size_type __n = npos) > { return _M_replace_safe(_M_check(__pos, "basic_string::erase"), > _M_limit(__pos, __n), __null, size_type(0)); } ># 1047 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > iterator > erase(iterator __position) > { > ; > > const size_type __pos = __position - _M_ibegin(); > _M_replace_safe(__pos, size_type(1), __null, size_type(0)); > _M_rep()->_M_set_leaked(); > return _M_ibegin() + __pos; > } ># 1067 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > iterator > erase(iterator __first, iterator __last) > { > ; > > const size_type __pos = __first - _M_ibegin(); > _M_replace_safe(__pos, __last - __first, __null, size_type(0)); > _M_rep()->_M_set_leaked(); > return _M_ibegin() + __pos; > } ># 1094 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n, const basic_string& __str) > { return this->replace(__pos, __n, __str._M_data(), __str.size()); } ># 1116 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) > { return this->replace(__pos1, __n1, __str._M_data() > + __str._M_check(__pos2, "basic_string::replace"), > __str._M_limit(__pos2, __n2)); } ># 1140 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2); ># 1159 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, const _CharT* __s) > { > ; > return this->replace(__pos, __n1, __s, traits_type::length(__s)); > } ># 1182 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) > { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), > _M_limit(__pos, __n1), __n2, __c); } ># 1200 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, const basic_string& __str) > { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } ># 1218 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) > { > ; > > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); > } ># 1239 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, const _CharT* __s) > { > ; > return this->replace(__i1, __i2, __s, traits_type::length(__s)); > } ># 1260 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) > { > ; > > return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c); > } ># 1282 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > replace(iterator __i1, iterator __i2, > _InputIterator __k1, _InputIterator __k2) > { > ; > > ; > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); > } > > > > basic_string& > replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1, __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, > const _CharT* __k1, const _CharT* __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1, __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1.base(), __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, > const_iterator __k1, const_iterator __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1.base(), __k2 - __k1); > } > > private: > template<class _Integer> > basic_string& > _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n, > _Integer __val, __true_type) > { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); } > > template<class _InputIterator> > basic_string& > _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, > _InputIterator __k2, __false_type); > > basic_string& > _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, > _CharT __c) > { > if (this->max_size() - (this->size() - __n1) < __n2) > __throw_length_error(("basic_string::_M_replace_aux")); > _M_mutate(__pos1, __n1, __n2); > if (__n2 == 1) > _M_data()[__pos1] = __c; > else if (__n2) > traits_type::assign(_M_data() + __pos1, __n2, __c); > return *this; > } > > basic_string& > _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, > size_type __n2) > { > _M_mutate(__pos1, __n1, __n2); > if (__n2 == 1) > _M_data()[__pos1] = *__s; > else if (__n2) > traits_type::copy(_M_data() + __pos1, __s, __n2); > return *this; > } > > > > template<class _InIterator> > static _CharT* > _S_construct_aux(_InIterator __beg, _InIterator __end, > const _Alloc& __a, __false_type) > { > typedef typename iterator_traits<_InIterator>::iterator_category _Tag; > return _S_construct(__beg, __end, __a, _Tag()); > } > > template<class _InIterator> > static _CharT* > _S_construct_aux(_InIterator __beg, _InIterator __end, > const _Alloc& __a, __true_type) > { return _S_construct(static_cast<size_type>(__beg), > static_cast<value_type>(__end), __a); } > > template<class _InIterator> > static _CharT* > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a) > { > typedef typename _Is_integer<_InIterator>::_Integral _Integral; > return _S_construct_aux(__beg, __end, __a, _Integral()); > } > > > template<class _InIterator> > static _CharT* > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > input_iterator_tag); > > > > template<class _FwdIterator> > static _CharT* > _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, > forward_iterator_tag); > > static _CharT* > _S_construct(size_type __req, _CharT __c, const _Alloc& __a); > > public: ># 1431 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > copy(_CharT* __s, size_type __n, size_type __pos = 0) const; ># 1441 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > void > swap(basic_string& __s); ># 1451 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > const _CharT* > c_str() const { return _M_data(); } > > > > > > > > const _CharT* > data() const { return _M_data(); } > > > > > allocator_type > get_allocator() const { return _M_dataplus; } ># 1480 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find(const _CharT* __s, size_type __pos, size_type __n) const; ># 1493 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find(const basic_string& __str, size_type __pos = 0) const > { return this->find(__str.data(), __pos, __str.size()); } ># 1507 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find(const _CharT* __s, size_type __pos = 0) const > { > ; > return this->find(__s, __pos, traits_type::length(__s)); > } ># 1524 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find(_CharT __c, size_type __pos = 0) const; ># 1537 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > rfind(const basic_string& __str, size_type __pos = npos) const > { return this->rfind(__str.data(), __pos, __str.size()); } ># 1552 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > rfind(const _CharT* __s, size_type __pos, size_type __n) const; ># 1565 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > rfind(const _CharT* __s, size_type __pos = npos) const > { > ; > return this->rfind(__s, __pos, traits_type::length(__s)); > } ># 1582 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > rfind(_CharT __c, size_type __pos = npos) const; ># 1595 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_of(const basic_string& __str, size_type __pos = 0) const > { return this->find_first_of(__str.data(), __pos, __str.size()); } ># 1610 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; ># 1623 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_of(const _CharT* __s, size_type __pos = 0) const > { > ; > return this->find_first_of(__s, __pos, traits_type::length(__s)); > } ># 1642 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_of(_CharT __c, size_type __pos = 0) const > { return this->find(__c, __pos); } ># 1656 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_of(const basic_string& __str, size_type __pos = npos) const > { return this->find_last_of(__str.data(), __pos, __str.size()); } ># 1671 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; ># 1684 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_of(const _CharT* __s, size_type __pos = npos) const > { > ; > return this->find_last_of(__s, __pos, traits_type::length(__s)); > } ># 1703 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_of(_CharT __c, size_type __pos = npos) const > { return this->rfind(__c, __pos); } ># 1717 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_not_of(const basic_string& __str, size_type __pos = 0) const > { return this->find_first_not_of(__str.data(), __pos, __str.size()); } ># 1732 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_not_of(const _CharT* __s, size_type __pos, > size_type __n) const; ># 1746 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_not_of(const _CharT* __s, size_type __pos = 0) const > { > ; > return this->find_first_not_of(__s, __pos, traits_type::length(__s)); > } ># 1763 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_first_not_of(_CharT __c, size_type __pos = 0) const; ># 1776 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_not_of(const basic_string& __str, size_type __pos = npos) const > { return this->find_last_not_of(__str.data(), __pos, __str.size()); } ># 1792 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_not_of(const _CharT* __s, size_type __pos, > size_type __n) const; ># 1805 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_not_of(const _CharT* __s, size_type __pos = npos) const > { > ; > return this->find_last_not_of(__s, __pos, traits_type::length(__s)); > } ># 1822 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > size_type > find_last_not_of(_CharT __c, size_type __pos = npos) const; ># 1837 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > basic_string > substr(size_type __pos = 0, size_type __n = npos) const > { return basic_string(*this, > _M_check(__pos, "basic_string::substr"), __n); } ># 1853 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > int > compare(const basic_string& __str) const > { > const size_type __size = this->size(); > const size_type __osize = __str.size(); > const size_type __len = std::min(__size, __osize); > > int __r = traits_type::compare(_M_data(), __str.data(), __len); > if (!__r) > __r = __size - __osize; > return __r; > } ># 1881 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n, const basic_string& __str) const; ># 1903 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > int > compare(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) const; ># 1918 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > int > compare(const _CharT* __s) const; ># 1938 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n1, const _CharT* __s) const; ># 1961 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) const; > }; > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc>:: > basic_string() > : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } ># 1979 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > basic_string<_CharT, _Traits, _Alloc> __str(__lhs); > __str.append(__rhs); > return __str; > } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT,_Traits,_Alloc> > operator+(const _CharT* __lhs, > const basic_string<_CharT,_Traits,_Alloc>& __rhs); > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT,_Traits,_Alloc> > operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { > basic_string<_CharT, _Traits, _Alloc> __str(__lhs); > __str.append(__rhs); > return __str; > } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > __string_type __str(__lhs); > __str.append(__size_type(1), __rhs); > return __str; > } ># 2050 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) == 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) == 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) == 0; } ># 2087 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) != 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) != 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) != 0; } ># 2124 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) < 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) < 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) > 0; } ># 2161 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) > 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) > 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) < 0; } ># 2198 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) <= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) <= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) >= 0; } ># 2235 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) >= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) >= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) <= 0; } ># 2272 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline void > swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, > basic_string<_CharT, _Traits, _Alloc>& __rhs) > { __lhs.swap(__rhs); } ># 2289 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str); ># 2303 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __os, > const basic_string<_CharT, _Traits, _Alloc>& __str); ># 2321 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT,_Traits>& > getline(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); ># 2338 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_istream<_CharT,_Traits>& > getline(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str); >} ># 54 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 2 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/algorithm" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/algorithm" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/algorithm" 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 1 3 ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 >namespace std >{ > > > > template<typename _RandomAccessIterator, typename _Distance> > bool > __is_heap(_RandomAccessIterator __first, _Distance __n) > { > _Distance __parent = 0; > for (_Distance __child = 1; __child < __n; ++__child) > { > if (__first[__parent] < __first[__child]) > return false; > if ((__child & 1) == 0) > ++__parent; > } > return true; > } > > template<typename _RandomAccessIterator, typename _Distance, > typename _StrictWeakOrdering> > bool > __is_heap(_RandomAccessIterator __first, _StrictWeakOrdering __comp, > _Distance __n) > { > _Distance __parent = 0; > for (_Distance __child = 1; __child < __n; ++__child) > { > if (__comp(__first[__parent], __first[__child])) > return false; > if ((__child & 1) == 0) > ++__parent; > } > return true; > } > > template<typename _RandomAccessIterator> > bool > __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { return std::__is_heap(__first, std::distance(__first, __last)); } > > template<typename _RandomAccessIterator, typename _StrictWeakOrdering> > bool > __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _StrictWeakOrdering __comp) > { return std::__is_heap(__first, __comp, std::distance(__first, __last)); } > > > > template<typename _RandomAccessIterator, typename _Distance, typename _Tp> > void > __push_heap(_RandomAccessIterator __first, > _Distance __holeIndex, _Distance __topIndex, _Tp __value) > { > _Distance __parent = (__holeIndex - 1) / 2; > while (__holeIndex > __topIndex && *(__first + __parent) < __value) > { > *(__first + __holeIndex) = *(__first + __parent); > __holeIndex = __parent; > __parent = (__holeIndex - 1) / 2; > } > *(__first + __holeIndex) = __value; > } ># 139 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > inline void > push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > ; > > > std::__push_heap(__first, _DistanceType((__last - __first) - 1), > _DistanceType(0), _ValueType(*(__last - 1))); > } > > template<typename _RandomAccessIterator, typename _Distance, typename _Tp, > typename _Compare> > void > __push_heap(_RandomAccessIterator __first, _Distance __holeIndex, > _Distance __topIndex, _Tp __value, _Compare __comp) > { > _Distance __parent = (__holeIndex - 1) / 2; > while (__holeIndex > __topIndex > && __comp(*(__first + __parent), __value)) > { > *(__first + __holeIndex) = *(__first + __parent); > __holeIndex = __parent; > __parent = (__holeIndex - 1) / 2; > } > *(__first + __holeIndex) = __value; > } ># 187 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > ; > ; > > std::__push_heap(__first, _DistanceType((__last - __first) - 1), > _DistanceType(0), _ValueType(*(__last - 1)), __comp); > } > > template<typename _RandomAccessIterator, typename _Distance, typename _Tp> > void > __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, > _Distance __len, _Tp __value) > { > const _Distance __topIndex = __holeIndex; > _Distance __secondChild = 2 * __holeIndex + 2; > while (__secondChild < __len) > { > if (*(__first + __secondChild) < *(__first + (__secondChild - 1))) > __secondChild--; > *(__first + __holeIndex) = *(__first + __secondChild); > __holeIndex = __secondChild; > __secondChild = 2 * (__secondChild + 1); > } > if (__secondChild == __len) > { > *(__first + __holeIndex) = *(__first + (__secondChild - 1)); > __holeIndex = __secondChild - 1; > } > std::__push_heap(__first, __holeIndex, __topIndex, __value); > } > > template<typename _RandomAccessIterator, typename _Tp> > inline void > __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _RandomAccessIterator __result, _Tp __value) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > *__result = *__first; > std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first), > __value); > } ># 251 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > inline void > pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > ; > > std::__pop_heap(__first, __last - 1, __last - 1, > _ValueType(*(__last - 1))); > } > > template<typename _RandomAccessIterator, typename _Distance, > typename _Tp, typename _Compare> > void > __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, > _Distance __len, _Tp __value, _Compare __comp) > { > const _Distance __topIndex = __holeIndex; > _Distance __secondChild = 2 * __holeIndex + 2; > while (__secondChild < __len) > { > if (__comp(*(__first + __secondChild), > *(__first + (__secondChild - 1)))) > __secondChild--; > *(__first + __holeIndex) = *(__first + __secondChild); > __holeIndex = __secondChild; > __secondChild = 2 * (__secondChild + 1); > } > if (__secondChild == __len) > { > *(__first + __holeIndex) = *(__first + (__secondChild - 1)); > __holeIndex = __secondChild - 1; > } > std::__push_heap(__first, __holeIndex, __topIndex, __value, __comp); > } > > template<typename _RandomAccessIterator, typename _Tp, typename _Compare> > inline void > __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _RandomAccessIterator __result, _Tp __value, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > *__result = *__first; > std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first), > __value, __comp); > } ># 317 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > pop_heap(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > > > > ; > ; > > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > std::__pop_heap(__first, __last - 1, __last - 1, > _ValueType(*(__last - 1)), __comp); > } ># 342 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > void > make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > ; > > if (__last - __first < 2) > return; > > const _DistanceType __len = __last - __first; > _DistanceType __parent = (__len - 2) / 2; > while (true) > { > std::__adjust_heap(__first, __parent, __len, > _ValueType(*(__first + __parent))); > if (__parent == 0) > return; > __parent--; > } > } ># 382 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > ; > > if (__last - __first < 2) > return; > > const _DistanceType __len = __last - __first; > _DistanceType __parent = (__len - 2) / 2; > while (true) > { > std::__adjust_heap(__first, __parent, __len, > _ValueType(*(__first + __parent)), __comp); > if (__parent == 0) > return; > __parent--; > } > } ># 420 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > void > sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > > > > > > ; > > > while (__last - __first > 1) > std::pop_heap(__first, __last--); > } ># 446 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > void > sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > > > > ; > ; > > while (__last - __first > 1) > std::pop_heap(__first, __last--, __comp); > } > >} ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tempbuf.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_tempbuf.h" 3 >namespace std >{ > > > > > > > > template<typename _ForwardIterator, typename _Tp> > class _Temporary_buffer > { > > > > public: > typedef _Tp value_type; > typedef value_type* pointer; > typedef pointer iterator; > typedef ptrdiff_t size_type; > > protected: > size_type _M_original_len; > size_type _M_len; > pointer _M_buffer; > > void > _M_initialize_buffer(const _Tp&, __true_type) { } > > void > _M_initialize_buffer(const _Tp& val, __false_type) > { std::uninitialized_fill_n(_M_buffer, _M_len, val); } > > public: > > size_type > size() const > { return _M_len; } > > > size_type > requested_size() const > { return _M_original_len; } > > > iterator > begin() > { return _M_buffer; } > > > iterator > end() > { return _M_buffer + _M_len; } > > > > > > _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); > > ~_Temporary_buffer() > { > std::_Destroy(_M_buffer, _M_buffer + _M_len); > std::return_temporary_buffer(_M_buffer); > } > > private: > > _Temporary_buffer(const _Temporary_buffer&); > > void > operator=(const _Temporary_buffer&); > }; > > > template<typename _ForwardIterator, typename _Tp> > _Temporary_buffer<_ForwardIterator, _Tp>:: > _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) > : _M_original_len(std::distance(__first, __last)), > _M_len(0), _M_buffer(0) > { > > typedef typename __type_traits<_Tp>::has_trivial_default_constructor > _Trivial; > > try > { > pair<pointer, size_type> __p(get_temporary_buffer< > value_type>(_M_original_len)); > _M_buffer = __p.first; > _M_len = __p.second; > if (_M_len > 0) > _M_initialize_buffer(*__first, _Trivial()); > } > catch(...) > { > std::return_temporary_buffer(_M_buffer); > _M_buffer = 0; > _M_len = 0; > throw; > } > } >} ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 2 3 > > > > >namespace std >{ ># 84 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _Tp> > inline const _Tp& > __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) > { > > > if (__a < __b) > if (__b < __c) > return __b; > else if (__a < __c) > return __c; > else > return __a; > else if (__a < __c) > return __a; > else if (__b < __c) > return __c; > else > return __b; > } ># 118 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) > { > > > if (__comp(__a, __b)) > if (__comp(__b, __c)) > return __b; > else if (__comp(__a, __c)) > return __c; > else > return __a; > else if (__comp(__a, __c)) > return __a; > else if (__comp(__b, __c)) > return __c; > else > return __b; > } ># 150 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Function> > _Function > for_each(_InputIterator __first, _InputIterator __last, _Function __f) > { > > > ; > for ( ; __first != __last; ++__first) > __f(*__first); > return __f; > } > > > > > > > template<typename _InputIterator, typename _Tp> > inline _InputIterator > find(_InputIterator __first, _InputIterator __last, > const _Tp& __val, input_iterator_tag) > { > while (__first != __last && !(*__first == __val)) > ++__first; > return __first; > } > > > > > > > template<typename _InputIterator, typename _Predicate> > inline _InputIterator > find_if(_InputIterator __first, _InputIterator __last, > _Predicate __pred, input_iterator_tag) > { > while (__first != __last && !__pred(*__first)) > ++__first; > return __first; > } > > > > > > > template<typename _RandomAccessIterator, typename _Tp> > _RandomAccessIterator > find(_RandomAccessIterator __first, _RandomAccessIterator __last, > const _Tp& __val, random_access_iterator_tag) > { > typename iterator_traits<_RandomAccessIterator>::difference_type > __trip_count = (__last - __first) >> 2; > > for ( ; __trip_count > 0 ; --__trip_count) > { > if (*__first == __val) > return __first; > ++__first; > > if (*__first == __val) > return __first; > ++__first; > > if (*__first == __val) > return __first; > ++__first; > > if (*__first == __val) > return __first; > ++__first; > } > > switch (__last - __first) > { > case 3: > if (*__first == __val) > return __first; > ++__first; > case 2: > if (*__first == __val) > return __first; > ++__first; > case 1: > if (*__first == __val) > return __first; > ++__first; > case 0: > default: > return __last; > } > } > > > > > > > template<typename _RandomAccessIterator, typename _Predicate> > _RandomAccessIterator > find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Predicate __pred, random_access_iterator_tag) > { > typename iterator_traits<_RandomAccessIterator>::difference_type > __trip_count = (__last - __first) >> 2; > > for ( ; __trip_count > 0 ; --__trip_count) > { > if (__pred(*__first)) > return __first; > ++__first; > > if (__pred(*__first)) > return __first; > ++__first; > > if (__pred(*__first)) > return __first; > ++__first; > > if (__pred(*__first)) > return __first; > ++__first; > } > > switch (__last - __first) > { > case 3: > if (__pred(*__first)) > return __first; > ++__first; > case 2: > if (__pred(*__first)) > return __first; > ++__first; > case 1: > if (__pred(*__first)) > return __first; > ++__first; > case 0: > default: > return __last; > } > } ># 304 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Tp> > inline _InputIterator > find(_InputIterator __first, _InputIterator __last, > const _Tp& __val) > { > > > > > ; > return std::find(__first, __last, __val, > std::__iterator_category(__first)); > } ># 326 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Predicate> > inline _InputIterator > find_if(_InputIterator __first, _InputIterator __last, > _Predicate __pred) > { > > > > > ; > return std::find_if(__first, __last, __pred, > std::__iterator_category(__first)); > } ># 348 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > adjacent_find(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > ; > if (__first == __last) > return __last; > _ForwardIterator __next = __first; > while(++__next != __last) > { > if (*__first == *__next) > return __first; > __first = __next; > } > return __last; > } ># 379 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _BinaryPredicate> > _ForwardIterator > adjacent_find(_ForwardIterator __first, _ForwardIterator __last, > _BinaryPredicate __binary_pred) > { > > > > > > ; > if (__first == __last) > return __last; > _ForwardIterator __next = __first; > while(++__next != __last) > { > if (__binary_pred(*__first, *__next)) > return __first; > __first = __next; > } > return __last; > } ># 410 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Tp> > typename iterator_traits<_InputIterator>::difference_type > count(_InputIterator __first, _InputIterator __last, const _Tp& __value) > { > > > > > > ; > typename iterator_traits<_InputIterator>::difference_type __n = 0; > for ( ; __first != __last; ++__first) > if (*__first == __value) > ++__n; > return __n; > } ># 435 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Predicate> > typename iterator_traits<_InputIterator>::difference_type > count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) > { > > > > > ; > typename iterator_traits<_InputIterator>::difference_type __n = 0; > for ( ; __first != __last; ++__first) > if (__pred(*__first)) > ++__n; > return __n; > } ># 474 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator1 > search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2) > { > > > > > > > ; > ; > > if (__first1 == __last1 || __first2 == __last2) > return __first1; > > > _ForwardIterator2 __tmp(__first2); > ++__tmp; > if (__tmp == __last2) > return std::find(__first1, __last1, *__first2); > > > _ForwardIterator2 __p1, __p; > __p1 = __first2; ++__p1; > _ForwardIterator1 __current = __first1; > > while (__first1 != __last1) > { > __first1 = std::find(__first1, __last1, *__first2); > if (__first1 == __last1) > return __last1; > > __p = __p1; > __current = __first1; > if (++__current == __last1) > return __last1; > > while (*__current == *__p) > { > if (++__p == __last2) > return __first1; > if (++__current == __last1) > return __last1; > } > ++__first1; > } > return __first1; > } ># 545 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2, > typename _BinaryPredicate> > _ForwardIterator1 > search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > _BinaryPredicate __predicate) > { > > > > > > > ; > ; > > > if (__first1 == __last1 || __first2 == __last2) > return __first1; > > > _ForwardIterator2 __tmp(__first2); > ++__tmp; > if (__tmp == __last2) > { > while (__first1 != __last1 && !__predicate(*__first1, *__first2)) > ++__first1; > return __first1; > } > > > _ForwardIterator2 __p1, __p; > __p1 = __first2; ++__p1; > _ForwardIterator1 __current = __first1; > > while (__first1 != __last1) > { > while (__first1 != __last1) > { > if (__predicate(*__first1, *__first2)) > break; > ++__first1; > } > while (__first1 != __last1 && !__predicate(*__first1, *__first2)) > ++__first1; > if (__first1 == __last1) > return __last1; > > __p = __p1; > __current = __first1; > if (++__current == __last1) > return __last1; > > while (__predicate(*__current, *__p)) > { > if (++__p == __last2) > return __first1; > if (++__current == __last1) > return __last1; > } > ++__first1; > } > return __first1; > } ># 623 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Integer, typename _Tp> > _ForwardIterator > search_n(_ForwardIterator __first, _ForwardIterator __last, > _Integer __count, const _Tp& __val) > { > > > > > > ; > > if (__count <= 0) > return __first; > else > { > __first = std::find(__first, __last, __val); > while (__first != __last) > { > typename iterator_traits<_ForwardIterator>::difference_type > __n = __count; > _ForwardIterator __i = __first; > ++__i; > while (__i != __last && __n != 1 && *__i == __val) > { > ++__i; > --__n; > } > if (__n == 1) > return __first; > else > __first = std::find(__i, __last, __val); > } > return __last; > } > } ># 675 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Integer, typename _Tp, > typename _BinaryPredicate> > _ForwardIterator > search_n(_ForwardIterator __first, _ForwardIterator __last, > _Integer __count, const _Tp& __val, > _BinaryPredicate __binary_pred) > { > > > > > ; > > if (__count <= 0) > return __first; > else > { > while (__first != __last) > { > if (__binary_pred(*__first, __val)) > break; > ++__first; > } > while (__first != __last) > { > typename iterator_traits<_ForwardIterator>::difference_type > __n = __count; > _ForwardIterator __i = __first; > ++__i; > while (__i != __last && __n != 1 && __binary_pred(*__i, __val)) > { > ++__i; > --__n; > } > if (__n == 1) > return __first; > else > { > while (__i != __last) > { > if (__binary_pred(*__i, __val)) > break; > ++__i; > } > __first = __i; > } > } > return __last; > } > } ># 737 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator2 > swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2) > { > > > > > > > > > > > > ; > > for ( ; __first1 != __last1; ++__first1, ++__first2) > std::iter_swap(__first1, __first2); > return __first2; > } ># 775 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _UnaryOperation> > _OutputIterator > transform(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, _UnaryOperation __unary_op) > { > > > > > > ; > > for ( ; __first != __last; ++__first, ++__result) > *__result = __unary_op(*__first); > return __result; > } ># 810 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _BinaryOperation> > _OutputIterator > transform(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _OutputIterator __result, > _BinaryOperation __binary_op) > { > > > > > > > ; > > for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result) > *__result = __binary_op(*__first1, *__first2); > return __result; > } ># 842 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > void > replace(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __old_value, const _Tp& __new_value) > { > > > > > > > > ; > > for ( ; __first != __last; ++__first) > if (*__first == __old_value) > *__first = __new_value; > } ># 873 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate, typename _Tp> > void > replace_if(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred, const _Tp& __new_value) > { > > > > > > > > ; > > for ( ; __first != __last; ++__first) > if (__pred(*__first)) > *__first = __new_value; > } ># 906 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, typename _Tp> > _OutputIterator > replace_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > const _Tp& __old_value, const _Tp& __new_value) > { > > > > > > > ; > > for ( ; __first != __last; ++__first, ++__result) > *__result = *__first == __old_value ? __new_value : *__first; > return __result; > } ># 939 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _Predicate, typename _Tp> > _OutputIterator > replace_copy_if(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > _Predicate __pred, const _Tp& __new_value) > { > > > > > > > ; > > for ( ; __first != __last; ++__first, ++__result) > *__result = __pred(*__first) ? __new_value : *__first; > return __result; > } ># 970 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Generator> > void > generate(_ForwardIterator __first, _ForwardIterator __last, > _Generator __gen) > { > > > > > ; > > for ( ; __first != __last; ++__first) > *__first = __gen(); > } ># 996 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _OutputIterator, typename _Size, typename _Generator> > _OutputIterator > generate_n(_OutputIterator __first, _Size __n, _Generator __gen) > { > > > > > > for ( ; __n > 0; --__n, ++__first) > *__first = __gen(); > return __first; > } ># 1023 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, typename _Tp> > _OutputIterator > remove_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, const _Tp& __value) > { > > > > > > > ; > > for ( ; __first != __last; ++__first) > if (!(*__first == __value)) > { > *__result = *__first; > ++__result; > } > return __result; > } ># 1059 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _Predicate> > _OutputIterator > remove_copy_if(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, _Predicate __pred) > { > > > > > > > ; > > for ( ; __first != __last; ++__first) > if (!__pred(*__first)) > { > *__result = *__first; > ++__result; > } > return __result; > } ># 1098 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > _ForwardIterator > remove(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > > > > > > > > ; > > __first = std::find(__first, __last, __value); > _ForwardIterator __i = __first; > return __first == __last ? __first > : std::remove_copy(++__i, __last, > __first, __value); > } ># 1135 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate> > _ForwardIterator > remove_if(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred) > { > > > > > > ; > > __first = std::find_if(__first, __last, __pred); > _ForwardIterator __i = __first; > return __first == __last ? __first > : std::remove_copy_if(++__i, __last, > __first, __pred); > } ># 1161 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator> > _OutputIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > output_iterator_tag) > { > > typename iterator_traits<_InputIterator>::value_type __value = *__first; > *__result = __value; > while (++__first != __last) > if (!(__value == *__first)) > { > __value = *__first; > *++__result = __value; > } > return ++__result; > } ># 1186 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _ForwardIterator> > _ForwardIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, > forward_iterator_tag) > { > > *__result = *__first; > while (++__first != __last) > if (!(*__result == *__first)) > *++__result = *__first; > return ++__result; > } ># 1208 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _BinaryPredicate> > _OutputIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > _BinaryPredicate __binary_pred, > output_iterator_tag) > { > > > > > > typename iterator_traits<_InputIterator>::value_type __value = *__first; > *__result = __value; > while (++__first != __last) > if (!__binary_pred(__value, *__first)) > { > __value = *__first; > *++__result = __value; > } > return ++__result; > } ># 1240 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _ForwardIterator, > typename _BinaryPredicate> > _ForwardIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, > _BinaryPredicate __binary_pred, > forward_iterator_tag) > { > > > > > > *__result = *__first; > while (++__first != __last) > if (!__binary_pred(*__result, *__first)) *++__result = *__first; > return ++__result; > } ># 1272 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result) > { > > > > > > > ; > > typedef typename iterator_traits<_OutputIterator>::iterator_category > _IterType; > > if (__first == __last) return __result; > return std::__unique_copy(__first, __last, __result, _IterType()); > } ># 1307 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _BinaryPredicate> > inline _OutputIterator > unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > _BinaryPredicate __binary_pred) > { > > > > > ; > > typedef typename iterator_traits<_OutputIterator>::iterator_category > _IterType; > > if (__first == __last) return __result; > return std::__unique_copy(__first, __last, __result, > __binary_pred, _IterType()); > } ># 1341 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > unique(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > > ; > > > __first = std::adjacent_find(__first, __last); > if (__first == __last) > return __last; > > > _ForwardIterator __dest = __first; > ++__first; > while (++__first != __last) > if (!(*__dest == *__first)) > *++__dest = *__first; > return ++__dest; > } ># 1380 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _BinaryPredicate> > _ForwardIterator > unique(_ForwardIterator __first, _ForwardIterator __last, > _BinaryPredicate __binary_pred) > { > > > > > > > ; > > > __first = std::adjacent_find(__first, __last, __binary_pred); > if (__first == __last) > return __last; > > > _ForwardIterator __dest = __first; > ++__first; > while (++__first != __last) > if (!__binary_pred(*__dest, *__first)) > *++__dest = *__first; > return ++__dest; > } ># 1414 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > void > __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, > bidirectional_iterator_tag) > { > while (true) > if (__first == __last || __first == --__last) > return; > else > std::iter_swap(__first++, __last); > } ># 1433 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > void > __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, > random_access_iterator_tag) > { > while (__first < __last) > std::iter_swap(__first++, --__last); > } ># 1453 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > inline void > reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) > { > > > > ; > std::__reverse(__first, __last, std::__iterator_category(__first)); > } ># 1479 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _OutputIterator> > _OutputIterator > reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, > _OutputIterator __result) > { > > > > > > ; > > while (__first != __last) > { > --__last; > *__result = *__last; > ++__result; > } > return __result; > } ># 1507 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _EuclideanRingElement> > _EuclideanRingElement > __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) > { > while (__n != 0) > { > _EuclideanRingElement __t = __m % __n; > __m = __n; > __n = __t; > } > return __m; > } > > > > > > > template<typename _ForwardIterator> > void > __rotate(_ForwardIterator __first, > _ForwardIterator __middle, > _ForwardIterator __last, > forward_iterator_tag) > { > if ((__first == __middle) || (__last == __middle)) > return; > > _ForwardIterator __first2 = __middle; > do > { > swap(*__first++, *__first2++); > if (__first == __middle) > __middle = __first2; > } > while (__first2 != __last); > > __first2 = __middle; > > while (__first2 != __last) > { > swap(*__first++, *__first2++); > if (__first == __middle) > __middle = __first2; > else if (__first2 == __last) > __first2 = __middle; > } > } > > > > > > > template<typename _BidirectionalIterator> > void > __rotate(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > bidirectional_iterator_tag) > { > > > > > if ((__first == __middle) || (__last == __middle)) > return; > > std::__reverse(__first, __middle, bidirectional_iterator_tag()); > std::__reverse(__middle, __last, bidirectional_iterator_tag()); > > while (__first != __middle && __middle != __last) > swap(*__first++, *--__last); > > if (__first == __middle) > std::__reverse(__middle, __last, bidirectional_iterator_tag()); > else > std::__reverse(__first, __middle, bidirectional_iterator_tag()); > } > > > > > > > template<typename _RandomAccessIterator> > void > __rotate(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last, > random_access_iterator_tag) > { > > > > > if ((__first == __middle) || (__last == __middle)) > return; > > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > const _Distance __n = __last - __first; > const _Distance __k = __middle - __first; > const _Distance __l = __n - __k; > > if (__k == __l) > { > std::swap_ranges(__first, __middle, __middle); > return; > } > > const _Distance __d = __gcd(__n, __k); > > for (_Distance __i = 0; __i < __d; __i++) > { > const _ValueType __tmp = *__first; > _RandomAccessIterator __p = __first; > > if (__k < __l) > { > for (_Distance __j = 0; __j < __l / __d; __j++) > { > if (__p > __first + __l) > { > *__p = *(__p - __l); > __p -= __l; > } > > *__p = *(__p + __k); > __p += __k; > } > } > else > { > for (_Distance __j = 0; __j < __k / __d - 1; __j ++) > { > if (__p < __last - __k) > { > *__p = *(__p + __k); > __p += __k; > } > *__p = * (__p - __l); > __p -= __l; > } > } > > *__p = __tmp; > ++__first; > } > } ># 1679 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > inline void > rotate(_ForwardIterator __first, _ForwardIterator __middle, > _ForwardIterator __last) > { > > > > ; > ; > > typedef typename iterator_traits<_ForwardIterator>::iterator_category > _IterType; > std::__rotate(__first, __middle, __last, _IterType()); > } ># 1712 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _OutputIterator> > _OutputIterator > rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, > _ForwardIterator __last, _OutputIterator __result) > { > > > > > ; > ; > > return std::copy(__first, __middle, copy(__middle, __last, __result)); > } ># 1737 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > > > > ; > > if (__first != __last) > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1))); > } ># 1764 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _RandomNumberGenerator> > void > random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, > _RandomNumberGenerator& __rand) > { > > > > ; > > if (__first == __last) > return; > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > std::iter_swap(__i, __first + __rand((__i - __first) + 1)); > } > > > > > > > > template<typename _ForwardIterator, typename _Predicate> > _ForwardIterator > __partition(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred, > forward_iterator_tag) > { > if (__first == __last) > return __first; > > while (__pred(*__first)) > if (++__first == __last) > return __first; > > _ForwardIterator __next = __first; > > while (++__next != __last) > if (__pred(*__next)) > { > swap(*__first, *__next); > ++__first; > } > > return __first; > } > > > > > > > template<typename _BidirectionalIterator, typename _Predicate> > _BidirectionalIterator > __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, > _Predicate __pred, > bidirectional_iterator_tag) > { > while (true) > { > while (true) > if (__first == __last) > return __first; > else if (__pred(*__first)) > ++__first; > else > break; > --__last; > while (true) > if (__first == __last) > return __first; > else if (!__pred(*__last)) > --__last; > else > break; > std::iter_swap(__first, __last); > ++__first; > } > } ># 1858 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate> > inline _ForwardIterator > partition(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred) > { > > > > > > ; > > return std::__partition(__first, __last, __pred, > std::__iterator_category(__first)); > } > > > > > > > > template<typename _ForwardIterator, typename _Predicate, typename _Distance> > _ForwardIterator > __inplace_stable_partition(_ForwardIterator __first, > _ForwardIterator __last, > _Predicate __pred, _Distance __len) > { > if (__len == 1) > return __pred(*__first) ? __last : __first; > _ForwardIterator __middle = __first; > std::advance(__middle, __len / 2); > _ForwardIterator __begin = std::__inplace_stable_partition(__first, > __middle, > __pred, > __len / 2); > _ForwardIterator __end = std::__inplace_stable_partition(__middle, __last, > __pred, > __len > - __len / 2); > std::rotate(__begin, __middle, __end); > std::advance(__begin, std::distance(__middle, __end)); > return __begin; > } > > > > > > > template<typename _ForwardIterator, typename _Pointer, typename _Predicate, > typename _Distance> > _ForwardIterator > __stable_partition_adaptive(_ForwardIterator __first, > _ForwardIterator __last, > _Predicate __pred, _Distance __len, > _Pointer __buffer, > _Distance __buffer_size) > { > if (__len <= __buffer_size) > { > _ForwardIterator __result1 = __first; > _Pointer __result2 = __buffer; > for ( ; __first != __last ; ++__first) > if (__pred(*__first)) > { > *__result1 = *__first; > ++__result1; > } > else > { > *__result2 = *__first; > ++__result2; > } > std::copy(__buffer, __result2, __result1); > return __result1; > } > else > { > _ForwardIterator __middle = __first; > std::advance(__middle, __len / 2); > _ForwardIterator __begin = > std::__stable_partition_adaptive(__first, __middle, __pred, > __len / 2, __buffer, > __buffer_size); > _ForwardIterator __end = > std::__stable_partition_adaptive(__middle, __last, __pred, > __len - __len / 2, > __buffer, __buffer_size); > std::rotate(__begin, __middle, __end); > std::advance(__begin, std::distance(__middle, __end)); > return __begin; > } > } ># 1969 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate> > _ForwardIterator > stable_partition(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred) > { > > > > > > ; > > if (__first == __last) > return __first; > else > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, > __last); > if (__buf.size() > 0) > return > std::__stable_partition_adaptive(__first, __last, __pred, > _DistanceType(__buf.requested_size()), > __buf.begin(), __buf.size()); > else > return > std::__inplace_stable_partition(__first, __last, __pred, > _DistanceType(__buf.requested_size())); > } > } > > > > > > > template<typename _RandomAccessIterator, typename _Tp> > _RandomAccessIterator > __unguarded_partition(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Tp __pivot) > { > while (true) > { > while (*__first < __pivot) > ++__first; > --__last; > while (__pivot < *__last) > --__last; > if (!(__first < __last)) > return __first; > std::iter_swap(__first, __last); > ++__first; > } > } > > > > > > > template<typename _RandomAccessIterator, typename _Tp, typename _Compare> > _RandomAccessIterator > __unguarded_partition(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Tp __pivot, _Compare __comp) > { > while (true) > { > while (__comp(*__first, __pivot)) > ++__first; > --__last; > while (__comp(__pivot, *__last)) > --__last; > if (!(__first < __last)) > return __first; > std::iter_swap(__first, __last); > ++__first; > } > } > > > > > > > > enum { _S_threshold = 16 }; > > > > > > > template<typename _RandomAccessIterator, typename _Tp> > void > __unguarded_linear_insert(_RandomAccessIterator __last, _Tp __val) > { > _RandomAccessIterator __next = __last; > --__next; > while (__val < *__next) > { > *__last = *__next; > __last = __next; > --__next; > } > *__last = __val; > } > > > > > > > template<typename _RandomAccessIterator, typename _Tp, typename _Compare> > void > __unguarded_linear_insert(_RandomAccessIterator __last, _Tp __val, > _Compare __comp) > { > _RandomAccessIterator __next = __last; > --__next; > while (__comp(__val, *__next)) > { > *__last = *__next; > __last = __next; > --__next; > } > *__last = __val; > } > > > > > > > template<typename _RandomAccessIterator> > void > __insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > if (__first == __last) > return; > > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > { > typename iterator_traits<_RandomAccessIterator>::value_type > __val = *__i; > if (__val < *__first) > { > std::copy_backward(__first, __i, __i + 1); > *__first = __val; > } > else > std::__unguarded_linear_insert(__i, __val); > } > } > > > > > > > template<typename _RandomAccessIterator, typename _Compare> > void > __insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > if (__first == __last) return; > > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > { > typename iterator_traits<_RandomAccessIterator>::value_type > __val = *__i; > if (__comp(__val, *__first)) > { > std::copy_backward(__first, __i, __i + 1); > *__first = __val; > } > else > std::__unguarded_linear_insert(__i, __val, __comp); > } > } > > > > > > > template<typename _RandomAccessIterator> > inline void > __unguarded_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > for (_RandomAccessIterator __i = __first; __i != __last; ++__i) > std::__unguarded_linear_insert(__i, _ValueType(*__i)); > } > > > > > > > template<typename _RandomAccessIterator, typename _Compare> > inline void > __unguarded_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > for (_RandomAccessIterator __i = __first; __i != __last; ++__i) > std::__unguarded_linear_insert(__i, _ValueType(*__i), __comp); > } > > > > > > > template<typename _RandomAccessIterator> > void > __final_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > if (__last - __first > _S_threshold) > { > std::__insertion_sort(__first, __first + _S_threshold); > std::__unguarded_insertion_sort(__first + _S_threshold, __last); > } > else > std::__insertion_sort(__first, __last); > } > > > > > > > template<typename _RandomAccessIterator, typename _Compare> > void > __final_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > if (__last - __first > _S_threshold) > { > std::__insertion_sort(__first, __first + _S_threshold, __comp); > std::__unguarded_insertion_sort(__first + _S_threshold, __last, > __comp); > } > else > std::__insertion_sort(__first, __last, __comp); > } > > > > > > > template<typename _Size> > inline _Size > __lg(_Size __n) > { > _Size __k; > for (__k = 0; __n != 1; __n >>= 1) > ++__k; > return __k; > } ># 2258 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > void > partial_sort(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > ; > > std::make_heap(__first, __middle); > for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) > if (*__i < *__first) > std::__pop_heap(__first, __middle, __i, _ValueType(*__i)); > std::sort_heap(__first, __middle); > } ># 2299 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > void > partial_sort(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > > ; > ; > > std::make_heap(__first, __middle, __comp); > for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) > if (__comp(*__i, *__first)) > std::__pop_heap(__first, __middle, __i, _ValueType(*__i), __comp); > std::sort_heap(__first, __middle, __comp); > } ># 2341 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _RandomAccessIterator> > _RandomAccessIterator > partial_sort_copy(_InputIterator __first, _InputIterator __last, > _RandomAccessIterator __result_first, > _RandomAccessIterator __result_last) > { > typedef typename iterator_traits<_InputIterator>::value_type > _InputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _OutputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > > > ; > ; > > if (__result_first == __result_last) > return __result_last; > _RandomAccessIterator __result_real_last = __result_first; > while(__first != __last && __result_real_last != __result_last) > { > *__result_real_last = *__first; > ++__result_real_last; > ++__first; > } > std::make_heap(__result_first, __result_real_last); > while (__first != __last) > { > if (*__first < *__result_first) > std::__adjust_heap(__result_first, _DistanceType(0), > _DistanceType(__result_real_last > - __result_first), > _InputValueType(*__first)); > ++__first; > } > std::sort_heap(__result_first, __result_real_last); > return __result_real_last; > } ># 2405 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _RandomAccessIterator, typename _Compare> > _RandomAccessIterator > partial_sort_copy(_InputIterator __first, _InputIterator __last, > _RandomAccessIterator __result_first, > _RandomAccessIterator __result_last, > _Compare __comp) > { > typedef typename iterator_traits<_InputIterator>::value_type > _InputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _OutputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > > > > > ; > ; > > if (__result_first == __result_last) > return __result_last; > _RandomAccessIterator __result_real_last = __result_first; > while(__first != __last && __result_real_last != __result_last) > { > *__result_real_last = *__first; > ++__result_real_last; > ++__first; > } > std::make_heap(__result_first, __result_real_last, __comp); > while (__first != __last) > { > if (__comp(*__first, *__result_first)) > std::__adjust_heap(__result_first, _DistanceType(0), > _DistanceType(__result_real_last > - __result_first), > _InputValueType(*__first), > __comp); > ++__first; > } > std::sort_heap(__result_first, __result_real_last, __comp); > return __result_real_last; > } > > > > > > > template<typename _RandomAccessIterator, typename _Size> > void > __introsort_loop(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Size __depth_limit) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > while (__last - __first > _S_threshold) > { > if (__depth_limit == 0) > { > std::partial_sort(__first, __last, __last); > return; > } > --__depth_limit; > _RandomAccessIterator __cut = > std::__unguarded_partition(__first, __last, > _ValueType(std::__median(*__first, > *(__first > + (__last > - __first) > / 2), > *(__last > - 1)))); > std::__introsort_loop(__cut, __last, __depth_limit); > __last = __cut; > } > } > > > > > > > template<typename _RandomAccessIterator, typename _Size, typename _Compare> > void > __introsort_loop(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Size __depth_limit, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > while (__last - __first > _S_threshold) > { > if (__depth_limit == 0) > { > std::partial_sort(__first, __last, __last, __comp); > return; > } > --__depth_limit; > _RandomAccessIterator __cut = > std::__unguarded_partition(__first, __last, > _ValueType(std::__median(*__first, > *(__first > + (__last > - __first) > / 2), > *(__last - 1), > __comp)), > __comp); > std::__introsort_loop(__cut, __last, __depth_limit, __comp); > __last = __cut; > } > } ># 2540 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > sort(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > > if (__first != __last) > { > std::__introsort_loop(__first, __last, __lg(__last - __first) * 2); > std::__final_insertion_sort(__first, __last); > } > } ># 2574 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > sort(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > > ; > > if (__first != __last) > { > std::__introsort_loop(__first, __last, __lg(__last - __first) * 2, > __comp); > std::__final_insertion_sort(__first, __last, __comp); > } > } ># 2607 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > _ForwardIterator > lower_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > _DistanceType __half; > _ForwardIterator __middle; > > while (__len > 0) > { > __half = __len >> 1; > __middle = __first; > std::advance(__middle, __half); > if (*__middle < __val) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else > __len = __half; > } > return __first; > } ># 2662 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > _ForwardIterator > lower_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > _DistanceType __half; > _ForwardIterator __middle; > > while (__len > 0) > { > __half = __len >> 1; > __middle = __first; > std::advance(__middle, __half); > if (__comp(*__middle, __val)) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else > __len = __half; > } > return __first; > } ># 2709 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > _ForwardIterator > upper_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > _DistanceType __half; > _ForwardIterator __middle; > > while (__len > 0) > { > __half = __len >> 1; > __middle = __first; > std::advance(__middle, __half); > if (__val < *__middle) > __len = __half; > else > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > } > return __first; > } ># 2761 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > _ForwardIterator > upper_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > _DistanceType __half; > _ForwardIterator __middle; > > while (__len > 0) > { > __half = __len >> 1; > __middle = __first; > std::advance(__middle, __half); > if (__comp(__val, *__middle)) > __len = __half; > else > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > } > return __first; > } > > > > > > > template<typename _BidirectionalIterator, typename _Distance> > void > __merge_without_buffer(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2) > { > if (__len1 == 0 || __len2 == 0) > return; > if (__len1 + __len2 == 2) > { > if (*__middle < *__first) > std::iter_swap(__first, __middle); > return; > } > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, *__first_cut); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, *__second_cut); > __len11 = std::distance(__first, __first_cut); > } > std::rotate(__first_cut, __middle, __second_cut); > _BidirectionalIterator __new_middle = __first_cut; > std::advance(__new_middle, std::distance(__middle, __second_cut)); > std::__merge_without_buffer(__first, __first_cut, __new_middle, > __len11, __len22); > std::__merge_without_buffer(__new_middle, __second_cut, __last, > __len1 - __len11, __len2 - __len22); > } > > > > > > > template<typename _BidirectionalIterator, typename _Distance, > typename _Compare> > void > __merge_without_buffer(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2, > _Compare __comp) > { > if (__len1 == 0 || __len2 == 0) > return; > if (__len1 + __len2 == 2) > { > if (__comp(*__middle, *__first)) > std::iter_swap(__first, __middle); > return; > } > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, *__first_cut, > __comp); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, *__second_cut, > __comp); > __len11 = std::distance(__first, __first_cut); > } > std::rotate(__first_cut, __middle, __second_cut); > _BidirectionalIterator __new_middle = __first_cut; > std::advance(__new_middle, std::distance(__middle, __second_cut)); > std::__merge_without_buffer(__first, __first_cut, __new_middle, > __len11, __len22, __comp); > std::__merge_without_buffer(__new_middle, __second_cut, __last, > __len1 - __len11, __len2 - __len22, __comp); > } > > > > > > > template<typename _RandomAccessIterator> > void > __inplace_stable_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > if (__last - __first < 15) > { > std::__insertion_sort(__first, __last); > return; > } > _RandomAccessIterator __middle = __first + (__last - __first) / 2; > std::__inplace_stable_sort(__first, __middle); > std::__inplace_stable_sort(__middle, __last); > std::__merge_without_buffer(__first, __middle, __last, > __middle - __first, > __last - __middle); > } > > > > > > > template<typename _RandomAccessIterator, typename _Compare> > void > __inplace_stable_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > if (__last - __first < 15) > { > std::__insertion_sort(__first, __last, __comp); > return; > } > _RandomAccessIterator __middle = __first + (__last - __first) / 2; > std::__inplace_stable_sort(__first, __middle, __comp); > std::__inplace_stable_sort(__middle, __last, __comp); > std::__merge_without_buffer(__first, __middle, __last, > __middle - __first, > __last - __middle, > __comp); > } ># 2959 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > merge(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (*__first2 < *__first1) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 3017 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > merge(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (__comp(*__first2, *__first1)) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } > > template<typename _RandomAccessIterator1, typename _RandomAccessIterator2, > typename _Distance> > void > __merge_sort_loop(_RandomAccessIterator1 __first, > _RandomAccessIterator1 __last, > _RandomAccessIterator2 __result, > _Distance __step_size) > { > const _Distance __two_step = 2 * __step_size; > > while (__last - __first >= __two_step) > { > __result = std::merge(__first, __first + __step_size, > __first + __step_size, __first + __two_step, > __result); > __first += __two_step; > } > > __step_size = std::min(_Distance(__last - __first), __step_size); > std::merge(__first, __first + __step_size, __first + __step_size, __last, > __result); > } > > template<typename _RandomAccessIterator1, typename _RandomAccessIterator2, > typename _Distance, typename _Compare> > void > __merge_sort_loop(_RandomAccessIterator1 __first, > _RandomAccessIterator1 __last, > _RandomAccessIterator2 __result, _Distance __step_size, > _Compare __comp) > { > const _Distance __two_step = 2 * __step_size; > > while (__last - __first >= __two_step) > { > __result = std::merge(__first, __first + __step_size, > __first + __step_size, __first + __two_step, > __result, > __comp); > __first += __two_step; > } > __step_size = std::min(_Distance(__last - __first), __step_size); > > std::merge(__first, __first + __step_size, > __first + __step_size, __last, > __result, > __comp); > } > > enum { _S_chunk_size = 7 }; > > template<typename _RandomAccessIterator, typename _Distance> > void > __chunk_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Distance __chunk_size) > { > while (__last - __first >= __chunk_size) > { > std::__insertion_sort(__first, __first + __chunk_size); > __first += __chunk_size; > } > std::__insertion_sort(__first, __last); > } > > template<typename _RandomAccessIterator, typename _Distance, typename _Compare> > void > __chunk_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Distance __chunk_size, _Compare __comp) > { > while (__last - __first >= __chunk_size) > { > std::__insertion_sort(__first, __first + __chunk_size, __comp); > __first += __chunk_size; > } > std::__insertion_sort(__first, __last, __comp); > } > > template<typename _RandomAccessIterator, typename _Pointer> > void > __merge_sort_with_buffer(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > > const _Distance __len = __last - __first; > const _Pointer __buffer_last = __buffer + __len; > > _Distance __step_size = _S_chunk_size; > std::__chunk_insertion_sort(__first, __last, __step_size); > > while (__step_size < __len) > { > std::__merge_sort_loop(__first, __last, __buffer, __step_size); > __step_size *= 2; > std::__merge_sort_loop(__buffer, __buffer_last, __first, __step_size); > __step_size *= 2; > } > } > > template<typename _RandomAccessIterator, typename _Pointer, typename _Compare> > void > __merge_sort_with_buffer(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > > const _Distance __len = __last - __first; > const _Pointer __buffer_last = __buffer + __len; > > _Distance __step_size = _S_chunk_size; > std::__chunk_insertion_sort(__first, __last, __step_size, __comp); > > while (__step_size < __len) > { > std::__merge_sort_loop(__first, __last, __buffer, > __step_size, __comp); > __step_size *= 2; > std::__merge_sort_loop(__buffer, __buffer_last, __first, > __step_size, __comp); > __step_size *= 2; > } > } > > > > > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BidirectionalIterator3> > _BidirectionalIterator3 > __merge_backward(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > _BidirectionalIterator3 __result) > { > if (__first1 == __last1) > return std::copy_backward(__first2, __last2, __result); > if (__first2 == __last2) > return std::copy_backward(__first1, __last1, __result); > --__last1; > --__last2; > while (true) > { > if (*__last2 < *__last1) > { > *--__result = *__last1; > if (__first1 == __last1) > return std::copy_backward(__first2, ++__last2, __result); > --__last1; > } > else > { > *--__result = *__last2; > if (__first2 == __last2) > return std::copy_backward(__first1, ++__last1, __result); > --__last2; > } > } > } > > > > > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BidirectionalIterator3, typename _Compare> > _BidirectionalIterator3 > __merge_backward(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > _BidirectionalIterator3 __result, > _Compare __comp) > { > if (__first1 == __last1) > return std::copy_backward(__first2, __last2, __result); > if (__first2 == __last2) > return std::copy_backward(__first1, __last1, __result); > --__last1; > --__last2; > while (true) > { > if (__comp(*__last2, *__last1)) > { > *--__result = *__last1; > if (__first1 == __last1) > return std::copy_backward(__first2, ++__last2, __result); > --__last1; > } > else > { > *--__result = *__last2; > if (__first2 == __last2) > return std::copy_backward(__first1, ++__last1, __result); > --__last2; > } > } > } > > > > > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _Distance> > _BidirectionalIterator1 > __rotate_adaptive(_BidirectionalIterator1 __first, > _BidirectionalIterator1 __middle, > _BidirectionalIterator1 __last, > _Distance __len1, _Distance __len2, > _BidirectionalIterator2 __buffer, > _Distance __buffer_size) > { > _BidirectionalIterator2 __buffer_end; > if (__len1 > __len2 && __len2 <= __buffer_size) > { > __buffer_end = std::copy(__middle, __last, __buffer); > std::copy_backward(__first, __middle, __last); > return std::copy(__buffer, __buffer_end, __first); > } > else if (__len1 <= __buffer_size) > { > __buffer_end = std::copy(__first, __middle, __buffer); > std::copy(__middle, __last, __first); > return std::copy_backward(__buffer, __buffer_end, __last); > } > else > { > std::rotate(__first, __middle, __last); > std::advance(__first, std::distance(__middle, __last)); > return __first; > } > } > > > > > > > template<typename _BidirectionalIterator, typename _Distance, > typename _Pointer> > void > __merge_adaptive(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2, > _Pointer __buffer, _Distance __buffer_size) > { > if (__len1 <= __len2 && __len1 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__first, __middle, __buffer); > std::merge(__buffer, __buffer_end, __middle, __last, __first); > } > else if (__len2 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__middle, __last, __buffer); > std::__merge_backward(__first, __middle, __buffer, > __buffer_end, __last); > } > else > { > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, > *__first_cut); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, > *__second_cut); > __len11 = std::distance(__first, __first_cut); > } > _BidirectionalIterator __new_middle = > std::__rotate_adaptive(__first_cut, __middle, __second_cut, > __len1 - __len11, __len22, __buffer, > __buffer_size); > std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, > __len22, __buffer, __buffer_size); > std::__merge_adaptive(__new_middle, __second_cut, __last, > __len1 - __len11, > __len2 - __len22, __buffer, __buffer_size); > } > } > > > > > > > template<typename _BidirectionalIterator, typename _Distance, typename _Pointer, > typename _Compare> > void > __merge_adaptive(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2, > _Pointer __buffer, _Distance __buffer_size, > _Compare __comp) > { > if (__len1 <= __len2 && __len1 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__first, __middle, __buffer); > std::merge(__buffer, __buffer_end, __middle, __last, __first, __comp); > } > else if (__len2 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__middle, __last, __buffer); > std::__merge_backward(__first, __middle, __buffer, __buffer_end, > __last, __comp); > } > else > { > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, *__first_cut, > __comp); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, *__second_cut, > __comp); > __len11 = std::distance(__first, __first_cut); > } > _BidirectionalIterator __new_middle = > std::__rotate_adaptive(__first_cut, __middle, __second_cut, > __len1 - __len11, __len22, __buffer, > __buffer_size); > std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, > __len22, __buffer, __buffer_size, __comp); > std::__merge_adaptive(__new_middle, __second_cut, __last, > __len1 - __len11, > __len2 - __len22, __buffer, > __buffer_size, __comp); > } > } ># 3437 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > void > inplace_merge(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last) > { > typedef typename iterator_traits<_BidirectionalIterator>::value_type > _ValueType; > typedef typename iterator_traits<_BidirectionalIterator>::difference_type > _DistanceType; > > > > > > ; > ; > > if (__first == __middle || __middle == __last) > return; > > _DistanceType __len1 = std::distance(__first, __middle); > _DistanceType __len2 = std::distance(__middle, __last); > > _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first, > __last); > if (__buf.begin() == 0) > std::__merge_without_buffer(__first, __middle, __last, __len1, __len2); > else > std::__merge_adaptive(__first, __middle, __last, __len1, __len2, > __buf.begin(), _DistanceType(__buf.size())); > } ># 3491 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _Compare> > void > inplace_merge(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_BidirectionalIterator>::value_type > _ValueType; > typedef typename iterator_traits<_BidirectionalIterator>::difference_type > _DistanceType; > > > > > > > ; > ; > > if (__first == __middle || __middle == __last) > return; > > const _DistanceType __len1 = std::distance(__first, __middle); > const _DistanceType __len2 = std::distance(__middle, __last); > > _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first, > __last); > if (__buf.begin() == 0) > std::__merge_without_buffer(__first, __middle, __last, __len1, > __len2, __comp); > else > std::__merge_adaptive(__first, __middle, __last, __len1, __len2, > __buf.begin(), _DistanceType(__buf.size()), > __comp); > } > > template<typename _RandomAccessIterator, typename _Pointer, > typename _Distance> > void > __stable_sort_adaptive(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer, _Distance __buffer_size) > { > const _Distance __len = (__last - __first + 1) / 2; > const _RandomAccessIterator __middle = __first + __len; > if (__len > __buffer_size) > { > std::__stable_sort_adaptive(__first, __middle, > __buffer, __buffer_size); > std::__stable_sort_adaptive(__middle, __last, > __buffer, __buffer_size); > } > else > { > std::__merge_sort_with_buffer(__first, __middle, __buffer); > std::__merge_sort_with_buffer(__middle, __last, __buffer); > } > std::__merge_adaptive(__first, __middle, __last, > _Distance(__middle - __first), > _Distance(__last - __middle), > __buffer, __buffer_size); > } > > template<typename _RandomAccessIterator, typename _Pointer, > typename _Distance, typename _Compare> > void > __stable_sort_adaptive(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer, _Distance __buffer_size, > _Compare __comp) > { > const _Distance __len = (__last - __first + 1) / 2; > const _RandomAccessIterator __middle = __first + __len; > if (__len > __buffer_size) > { > std::__stable_sort_adaptive(__first, __middle, __buffer, > __buffer_size, __comp); > std::__stable_sort_adaptive(__middle, __last, __buffer, > __buffer_size, __comp); > } > else > { > std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); > std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); > } > std::__merge_adaptive(__first, __middle, __last, > _Distance(__middle - __first), > _Distance(__last - __middle), > __buffer, __buffer_size, > __comp); > } ># 3600 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > ; > > _Temporary_buffer<_RandomAccessIterator, _ValueType> > buf(__first, __last); > if (buf.begin() == 0) > std::__inplace_stable_sort(__first, __last); > else > std::__stable_sort_adaptive(__first, __last, buf.begin(), > _DistanceType(buf.size())); > } ># 3641 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > > > ; > > _Temporary_buffer<_RandomAccessIterator, _ValueType> buf(__first, __last); > if (buf.begin() == 0) > std::__inplace_stable_sort(__first, __last, __comp); > else > std::__stable_sort_adaptive(__first, __last, buf.begin(), > _DistanceType(buf.size()), __comp); > } ># 3682 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > void > nth_element(_RandomAccessIterator __first, > _RandomAccessIterator __nth, > _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > ; > > while (__last - __first > 3) > { > _RandomAccessIterator __cut = > std::__unguarded_partition(__first, __last, > _ValueType(std::__median(*__first, > *(__first > + (__last > - __first) > / 2), > *(__last > - 1)))); > if (__cut <= __nth) > __first = __cut; > else > __last = __cut; > } > std::__insertion_sort(__first, __last); > } ># 3733 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > void > nth_element(_RandomAccessIterator __first, > _RandomAccessIterator __nth, > _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > > ; > ; > > while (__last - __first > 3) > { > _RandomAccessIterator __cut = > std::__unguarded_partition(__first, __last, > _ValueType(std::__median(*__first, > *(__first > + (__last > - __first) > / 2), > *(__last - 1), > __comp)), __comp); > if (__cut <= __nth) > __first = __cut; > else > __last = __cut; > } > std::__insertion_sort(__first, __last, __comp); > } ># 3786 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > pair<_ForwardIterator, _ForwardIterator> > equal_range(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > _DistanceType __half; > _ForwardIterator __middle, __left, __right; > > while (__len > 0) > { > __half = __len >> 1; > __middle = __first; > std::advance(__middle, __half); > if (*__middle < __val) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else if (__val < *__middle) > __len = __half; > else > { > __left = std::lower_bound(__first, __middle, __val); > std::advance(__first, __len); > __right = std::upper_bound(++__middle, __first, __val); > return pair<_ForwardIterator, _ForwardIterator>(__left, __right); > } > } > return pair<_ForwardIterator, _ForwardIterator>(__first, __first); > } ># 3848 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > pair<_ForwardIterator, _ForwardIterator> > equal_range(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, > _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > _DistanceType __half; > _ForwardIterator __middle, __left, __right; > > while (__len > 0) > { > __half = __len >> 1; > __middle = __first; > std::advance(__middle, __half); > if (__comp(*__middle, __val)) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else if (__comp(__val, *__middle)) > __len = __half; > else > { > __left = std::lower_bound(__first, __middle, __val, __comp); > std::advance(__first, __len); > __right = std::upper_bound(++__middle, __first, __val, __comp); > return pair<_ForwardIterator, _ForwardIterator>(__left, __right); > } > } > return pair<_ForwardIterator, _ForwardIterator>(__first, __first); > } ># 3906 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > bool > binary_search(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > > > > > > > ; > > _ForwardIterator __i = std::lower_bound(__first, __last, __val); > return __i != __last && !(__val < *__i); > } ># 3938 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > bool > binary_search(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > > > > > > > ; > > _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp); > return __i != __last && !__comp(__val, *__i); > } ># 3976 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > bool > includes(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2) > { > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first2 < *__first1) > return false; > else if(*__first1 < *__first2) > ++__first1; > else > ++__first1, ++__first2; > > return __first2 == __last2; > } ># 4022 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _Compare> > bool > includes(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) > { > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first2, *__first1)) > return false; > else if(__comp(*__first1, *__first2)) > ++__first1; > else > ++__first1, ++__first2; > > return __first2 == __last2; > } ># 4068 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_union(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (*__first1 < *__first2) > { > *__result = *__first1; > ++__first1; > } > else if (*__first2 < *__first1) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > ++__first2; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 4130 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_union(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (__comp(*__first1, *__first2)) > { > *__result = *__first1; > ++__first1; > } > else if (__comp(*__first2, *__first1)) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > ++__first2; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 4191 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first1 < *__first2) > ++__first1; > else if (*__first2 < *__first1) > ++__first2; > else > { > *__result = *__first1; > ++__first1; > ++__first2; > ++__result; > } > return __result; > } ># 4245 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first1, *__first2)) > ++__first1; > else if (__comp(*__first2, *__first1)) > ++__first2; > else > { > *__result = *__first1; > ++__first1; > ++__first2; > ++__result; > } > return __result; > } ># 4299 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first1 < *__first2) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (*__first2 < *__first1) > ++__first2; > else > { > ++__first1; > ++__first2; > } > return std::copy(__first1, __last1, __result); > } ># 4357 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first1, *__first2)) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (__comp(*__first2, *__first1)) > ++__first2; > else > { > ++__first1; > ++__first2; > } > return std::copy(__first1, __last1, __result); > } ># 4411 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first1 < *__first2) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (*__first2 < *__first1) > { > *__result = *__first2; > ++__first2; > ++__result; > } > else > { > ++__first1; > ++__first2; > } > return std::copy(__first2, __last2, std::copy(__first1, > __last1, __result)); > } ># 4472 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, > _Compare __comp) > { > > > > > > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first1, *__first2)) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (__comp(*__first2, *__first1)) > { > *__result = *__first2; > ++__first2; > ++__result; > } > else > { > ++__first1; > ++__first2; > } > return std::copy(__first2, __last2, std::copy(__first1, > __last1, __result)); > } ># 4525 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > max_element(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > ; > > if (__first == __last) > return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (*__result < *__first) > __result = __first; > return __result; > } ># 4552 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Compare> > _ForwardIterator > max_element(_ForwardIterator __first, _ForwardIterator __last, > _Compare __comp) > { > > > > > > ; > > if (__first == __last) return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (__comp(*__result, *__first)) __result = __first; > return __result; > } > > > > > > > > template<typename _ForwardIterator> > _ForwardIterator > min_element(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > ; > > if (__first == __last) > return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (*__first < *__result) > __result = __first; > return __result; > } ># 4604 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Compare> > _ForwardIterator > min_element(_ForwardIterator __first, _ForwardIterator __last, > _Compare __comp) > { > > > > > > ; > > if (__first == __last) > return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (__comp(*__first, *__result)) > __result = __first; > return __result; > } ># 4639 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > bool > next_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last) > { > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (*__i < *__ii) > { > _BidirectionalIterator __j = __last; > while (!(*__i < *--__j)) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 4695 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _Compare> > bool > next_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last, _Compare __comp) > { > > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (__comp(*__i, *__ii)) > { > _BidirectionalIterator __j = __last; > while (!__comp(*__i, *--__j)) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 4750 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > bool > prev_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last) > { > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (*__ii < *__i) > { > _BidirectionalIterator __j = __last; > while (!(*--__j < *__i)) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 4806 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _Compare> > bool > prev_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last, _Compare __comp) > { > > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (__comp(*__ii, *__i)) > { > _BidirectionalIterator __j = __last; > while (!__comp(*--__j, *__i)) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 4865 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _ForwardIterator> > _InputIterator > find_first_of(_InputIterator __first1, _InputIterator __last1, > _ForwardIterator __first2, _ForwardIterator __last2) > { > > > > > > > ; > ; > > for ( ; __first1 != __last1; ++__first1) > for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) > if (*__first1 == *__iter) > return __first1; > return __last1; > } ># 4901 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _ForwardIterator, > typename _BinaryPredicate> > _InputIterator > find_first_of(_InputIterator __first1, _InputIterator __last1, > _ForwardIterator __first2, _ForwardIterator __last2, > _BinaryPredicate __comp) > { > > > > > > > > > > ; > ; > > for ( ; __first1 != __last1; ++__first1) > for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) > if (__comp(*__first1, *__iter)) > return __first1; > return __last1; > } ># 4934 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator1 > __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > forward_iterator_tag, forward_iterator_tag) > { > if (__first2 == __last2) > return __last1; > else > { > _ForwardIterator1 __result = __last1; > while (1) > { > _ForwardIterator1 __new_result > = std::search(__first1, __last1, __first2, __last2); > if (__new_result == __last1) > return __result; > else > { > __result = __new_result; > __first1 = __new_result; > ++__first1; > } > } > } > } > > template<typename _ForwardIterator1, typename _ForwardIterator2, > typename _BinaryPredicate> > _ForwardIterator1 > __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > forward_iterator_tag, forward_iterator_tag, > _BinaryPredicate __comp) > { > if (__first2 == __last2) > return __last1; > else > { > _ForwardIterator1 __result = __last1; > while (1) > { > _ForwardIterator1 __new_result > = std::search(__first1, __last1, __first2, __last2, __comp); > if (__new_result == __last1) > return __result; > else > { > __result = __new_result; > __first1 = __new_result; > ++__first1; > } > } > } > } > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2> > _BidirectionalIterator1 > __find_end(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > bidirectional_iterator_tag, bidirectional_iterator_tag) > { > > > > > > > typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; > typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; > > _RevIterator1 __rlast1(__first1); > _RevIterator2 __rlast2(__first2); > _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1, > _RevIterator2(__last2), __rlast2); > > if (__rresult == __rlast1) > return __last1; > else > { > _BidirectionalIterator1 __result = __rresult.base(); > std::advance(__result, -std::distance(__first2, __last2)); > return __result; > } > } > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BinaryPredicate> > _BidirectionalIterator1 > __find_end(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > bidirectional_iterator_tag, bidirectional_iterator_tag, > _BinaryPredicate __comp) > { > > > > > > > typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; > typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; > > _RevIterator1 __rlast1(__first1); > _RevIterator2 __rlast2(__first2); > _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1, > _RevIterator2(__last2), __rlast2, > __comp); > > if (__rresult == __rlast1) > return __last1; > else > { > _BidirectionalIterator1 __result = __rresult.base(); > std::advance(__result, -std::distance(__first2, __last2)); > return __result; > } > } ># 5084 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > inline _ForwardIterator1 > find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2) > { > > > > > > > ; > ; > > return std::__find_end(__first1, __last1, __first2, __last2, > std::__iterator_category(__first1), > std::__iterator_category(__first2)); > } ># 5129 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2, > typename _BinaryPredicate> > inline _ForwardIterator1 > find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > _BinaryPredicate __comp) > { > > > > > > > ; > ; > > return std::__find_end(__first1, __last1, __first2, __last2, > std::__iterator_category(__first1), > std::__iterator_category(__first2), > __comp); > } > >} ># 70 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/algorithm" 2 3 ># 57 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.tcc" 1 3 ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.tcc" 3 > ># 45 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.tcc" 3 > >namespace std >{ > template<typename _Type> > inline bool > __is_null_pointer(_Type* __ptr) > { return __ptr == 0; } > > template<typename _Type> > inline bool > __is_null_pointer(_Type) > { return false; } > > template<typename _CharT, typename _Traits, typename _Alloc> > const typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; > > template<typename _CharT, typename _Traits, typename _Alloc> > const _CharT > basic_string<_CharT, _Traits, _Alloc>:: > _Rep::_S_terminal = _CharT(); > > template<typename _CharT, typename _Traits, typename _Alloc> > const typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>::npos; > > > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[ > (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) / > sizeof(size_type)]; > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InIterator> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > input_iterator_tag) > { > if (__beg == __end && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > _CharT __buf[128]; > size_type __len = 0; > while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT)) > { > __buf[__len++] = *__beg; > ++__beg; > } > _Rep* __r = _Rep::_S_create(__len, size_type(0), __a); > traits_type::copy(__r->_M_refdata(), __buf, __len); > try > { > while (__beg != __end) > { > if (__len == __r->_M_capacity) > { > > _Rep* __another = _Rep::_S_create(__len + 1, __len, __a); > traits_type::copy(__another->_M_refdata(), > __r->_M_refdata(), __len); > __r->_M_destroy(__a); > __r = __another; > } > __r->_M_refdata()[__len++] = *__beg; > ++__beg; > } > } > catch(...) > { > __r->_M_destroy(__a); > throw; > } > __r->_M_length = __len; > __r->_M_refdata()[__len] = _Rep::_S_terminal; > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > template <typename _InIterator> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > forward_iterator_tag) > { > if (__beg == __end && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > if (__builtin_expect(__is_null_pointer(__beg), 0)) > __throw_logic_error(("basic_string::_S_construct NULL not valid")); > > const size_type __dnew = static_cast<size_type>(std::distance(__beg, > __end)); > > _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); > try > { _S_copy_chars(__r->_M_refdata(), __beg, __end); } > catch(...) > { > __r->_M_destroy(__a); > throw; > } > __r->_M_length = __dnew; > __r->_M_refdata()[__dnew] = _Rep::_S_terminal; > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(size_type __n, _CharT __c, const _Alloc& __a) > { > if (__n == 0 && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > _Rep* __r = _Rep::_S_create(__n, size_type(0), __a); > if (__n) > traits_type::assign(__r->_M_refdata(), __n, __c); > > __r->_M_length = __n; > __r->_M_refdata()[__n] = _Rep::_S_terminal; > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str) > : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()), > __str.get_allocator()), > __str.get_allocator()) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _Alloc& __a) > : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str, size_type __pos, size_type __n) > : _M_dataplus(_S_construct(__str._M_data() > + __str._M_check(__pos, > "basic_string::basic_string"), > __str._M_data() + __str._M_limit(__pos, __n) > + __pos, _Alloc()), _Alloc()) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str, size_type __pos, > size_type __n, const _Alloc& __a) > : _M_dataplus(_S_construct(__str._M_data() > + __str._M_check(__pos, > "basic_string::basic_string"), > __str._M_data() + __str._M_limit(__pos, __n) > + __pos, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) > : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _CharT* __s, const _Alloc& __a) > : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : > __s + npos, __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(size_type __n, _CharT __c, const _Alloc& __a) > : _M_dataplus(_S_construct(__n, __c, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InputIterator> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) > : _M_dataplus(_S_construct(__beg, __end, __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > assign(const basic_string& __str) > { > if (_M_rep() != __str._M_rep()) > { > > const allocator_type __a = this->get_allocator(); > _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); > _M_rep()->_M_dispose(__a); > _M_data(__tmp); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > assign(const _CharT* __s, size_type __n) > { > ; > if (__n > this->max_size()) > __throw_length_error(("basic_string::assign")); > if (_M_rep()->_M_is_shared() || less<const _CharT*>()(__s, _M_data()) > || less<const _CharT*>()(_M_data() + this->size(), __s)) > return _M_replace_safe(size_type(0), this->size(), __s, __n); > else > { > > const size_type __pos = __s - _M_data(); > if (__pos >= __n) > traits_type::copy(_M_data(), __s, __n); > else if (__pos) > traits_type::move(_M_data(), __s, __n); > _M_rep()->_M_set_sharable(); > _M_rep()->_M_length = __n; > _M_data()[__n] = _Rep::_S_terminal; > return *this; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > insert(size_type __pos, const _CharT* __s, size_type __n) > { > ; > _M_check(__pos, "basic_string::insert"); > if (this->max_size() - this->size() < __n) > __throw_length_error(("basic_string::insert")); > if (_M_rep()->_M_is_shared() || less<const _CharT*>()(__s, _M_data()) > || less<const _CharT*>()(_M_data() + this->size(), __s)) > return _M_replace_safe(__pos, size_type(0), __s, __n); > else > { > > > > const size_type __off = __s - _M_data(); > _M_mutate(__pos, 0, __n); > __s = _M_data() + __off; > _CharT* __p = _M_data() + __pos; > if (__s + __n <= __p) > traits_type::copy(__p, __s, __n); > else if (__s >= __p) > traits_type::copy(__p, __s + __n, __n); > else > { > const size_type __nleft = __p - __s; > traits_type::copy(__p, __s, __nleft); > traits_type::copy(__p + __nleft, __p + __n, __n - __nleft); > } > return *this; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > replace(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) > { > ; > _M_check(__pos, "basic_string::replace"); > __n1 = _M_limit(__pos, __n1); > if (this->max_size() - (this->size() - __n1) < __n2) > __throw_length_error(("basic_string::replace")); > bool __left; > if (_M_rep()->_M_is_shared() || less<const _CharT*>()(__s, _M_data()) > || less<const _CharT*>()(_M_data() + this->size(), __s)) > return _M_replace_safe(__pos, __n1, __s, __n2); > else if ((__left = __s + __n2 <= _M_data() + __pos) > || _M_data() + __pos + __n1 <= __s) > { > > const size_type __off = __s - _M_data(); > _M_mutate(__pos, __n1, __n2); > if (__left) > traits_type::copy(_M_data() + __pos, > _M_data() + __off, __n2); > else > traits_type::copy(_M_data() + __pos, > _M_data() + __off + __n2 - __n1, __n2); > return *this; > } > else > { > > const basic_string __tmp(__s, __n2); > return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2); > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _M_destroy(const _Alloc& __a) throw () > { > if (this == &_S_empty_rep()) > return; > const size_type __size = sizeof(_Rep_base) + > (this->_M_capacity + 1) * sizeof(_CharT); > _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>::_M_leak_hard() > { > if (_M_rep() == &_S_empty_rep()) > return; > if (_M_rep()->_M_is_shared()) > _M_mutate(0, 0, 0); > _M_rep()->_M_set_leaked(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > _M_mutate(size_type __pos, size_type __len1, size_type __len2) > { > const size_type __old_size = this->size(); > const size_type __new_size = __old_size + __len2 - __len1; > const size_type __how_much = __old_size - __pos - __len1; > > if (_M_rep() == &_S_empty_rep() > || _M_rep()->_M_is_shared() || __new_size > capacity()) > { > > const allocator_type __a = get_allocator(); > _Rep* __r = _Rep::_S_create(__new_size, capacity(), __a); > > if (__pos) > traits_type::copy(__r->_M_refdata(), _M_data(), __pos); > if (__how_much) > traits_type::copy(__r->_M_refdata() + __pos + __len2, > _M_data() + __pos + __len1, __how_much); > > _M_rep()->_M_dispose(__a); > _M_data(__r->_M_refdata()); > } > else if (__how_much && __len1 != __len2) > { > > traits_type::move(_M_data() + __pos + __len2, > _M_data() + __pos + __len1, __how_much); > } > _M_rep()->_M_set_sharable(); > _M_rep()->_M_length = __new_size; > _M_data()[__new_size] = _Rep::_S_terminal; > > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>::reserve(size_type __res) > { > if (__res != this->capacity() || _M_rep()->_M_is_shared()) > { > if (__res > this->max_size()) > __throw_length_error(("basic_string::reserve")); > > if (__res < this->size()) > __res = this->size(); > const allocator_type __a = get_allocator(); > _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); > _M_rep()->_M_dispose(__a); > _M_data(__tmp); > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void basic_string<_CharT, _Traits, _Alloc>::swap(basic_string& __s) > { > if (_M_rep()->_M_is_leaked()) > _M_rep()->_M_set_sharable(); > if (__s._M_rep()->_M_is_leaked()) > __s._M_rep()->_M_set_sharable(); > if (this->get_allocator() == __s.get_allocator()) > { > _CharT* __tmp = _M_data(); > _M_data(__s._M_data()); > __s._M_data(__tmp); > } > > else > { > const basic_string __tmp1(_M_ibegin(), _M_iend(), > __s.get_allocator()); > const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), > this->get_allocator()); > *this = __tmp2; > __s = __tmp1; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::_Rep* > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _S_create(size_type __capacity, size_type __old_capacity, > const _Alloc& __alloc) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > > > if (__capacity > _S_max_size) > __throw_length_error(("basic_string::_S_create")); ># 494 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.tcc" 3 > const size_type __pagesize = 4096; > const size_type __subpagesize = 128; > const size_type __malloc_header_size = 4 * sizeof (void*); ># 506 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_string.tcc" 3 > const size_type __page_capacity = ((__pagesize - __malloc_header_size > - sizeof(_Rep) - sizeof(_CharT)) > / sizeof(_CharT)); > > if (__capacity > __old_capacity && __capacity < 2 * __old_capacity > && __capacity > __page_capacity) > __capacity = 2 * __old_capacity; > > > > > size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > > const size_type __adj_size = __size + __malloc_header_size; > if (__adj_size > __pagesize) > { > const size_type __extra = __pagesize - __adj_size % __pagesize; > __capacity += __extra / sizeof(_CharT); > > if (__capacity > _S_max_size) > __capacity = _S_max_size; > __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > } > else if (__size > __subpagesize) > { > const size_type __extra = __subpagesize - __adj_size % __subpagesize; > __capacity += __extra / sizeof(_CharT); > __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > } > > > > void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); > _Rep *__p = new (__place) _Rep; > __p->_M_capacity = __capacity; > __p->_M_set_sharable(); > __p->_M_length = 0; > return __p; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > _CharT* > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _M_clone(const _Alloc& __alloc, size_type __res) > { > > const size_type __requested_cap = this->_M_length + __res; > _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity, > __alloc); > if (this->_M_length) > traits_type::copy(__r->_M_refdata(), _M_refdata(), > this->_M_length); > > __r->_M_length = this->_M_length; > __r->_M_refdata()[this->_M_length] = _Rep::_S_terminal; > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>::resize(size_type __n, _CharT __c) > { > if (__n > max_size()) > __throw_length_error(("basic_string::resize")); > const size_type __size = this->size(); > if (__size < __n) > this->append(__n - __size, __c); > else if (__n < __size) > this->erase(__n); > > } > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InputIterator> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, > _InputIterator __k2, __false_type) > { > const basic_string __s(__k1, __k2); > const size_type __n1 = __i2 - __i1; > if (this->max_size() - (this->size() - __n1) < __s.size()) > __throw_length_error(("basic_string::_M_replace_dispatch")); > return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(), > __s.size()); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const basic_string& __str) > { > > > > const size_type __size = __str.size(); > const size_type __len = __size + this->size(); > if (__len > this->capacity()) > this->reserve(__len); > return _M_replace_safe(this->size(), size_type(0), __str._M_data(), > __str.size()); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const basic_string& __str, size_type __pos, size_type __n) > { > > > > __str._M_check(__pos, "basic_string::append"); > __n = __str._M_limit(__pos, __n); > const size_type __len = __n + this->size(); > if (__len > this->capacity()) > this->reserve(__len); > return _M_replace_safe(this->size(), size_type(0), __str._M_data() > + __pos, __n); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const _CharT* __s, size_type __n) > { > ; > const size_type __len = __n + this->size(); > if (__len > this->capacity()) > this->reserve(__len); > return _M_replace_safe(this->size(), size_type(0), __s, __n); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > ; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > const __size_type __len = _Traits::length(__lhs); > __string_type __str; > __str.reserve(__len + __rhs.size()); > __str.append(__lhs, __len); > __str.append(__rhs); > return __str; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > __string_type __str; > const __size_type __len = __rhs.size(); > __str.reserve(__len + 1); > __str.append(__size_type(1), __lhs); > __str.append(__rhs); > return __str; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > copy(_CharT* __s, size_type __n, size_type __pos) const > { > _M_check(__pos, "basic_string::copy"); > __n = _M_limit(__pos, __n); > ; > if (__n) > traits_type::copy(__s, _M_data() + __pos, __n); > > return __n; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > const size_type __size = this->size(); > const _CharT* __data = _M_data(); > for (; __pos + __n <= __size; ++__pos) > if (traits_type::compare(__data + __pos, __s, __n) == 0) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find(_CharT __c, size_type __pos) const > { > const size_type __size = this->size(); > size_type __ret = npos; > if (__pos < __size) > { > const _CharT* __data = _M_data(); > const size_type __n = __size - __pos; > const _CharT* __p = traits_type::find(__data + __pos, __n, __c); > if (__p) > __ret = __p - __data; > } > return __ret; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > rfind(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > const size_type __size = this->size(); > if (__n <= __size) > { > __pos = std::min(size_type(__size - __n), __pos); > const _CharT* __data = _M_data(); > do > { > if (traits_type::compare(__data + __pos, __s, __n) == 0) > return __pos; > } > while (__pos-- > 0); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > rfind(_CharT __c, size_type __pos) const > { > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > for (++__size; __size-- > 0; ) > if (traits_type::eq(_M_data()[__size], __c)) > return __size; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > for (; __n && __pos < this->size(); ++__pos) > { > const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); > if (__p) > return __pos; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > size_type __size = this->size(); > if (__size && __n) > { > if (--__size > __pos) > __size = __pos; > do > { > if (traits_type::find(__s, __n, _M_data()[__size])) > return __size; > } > while (__size-- != 0); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > for (; __pos < this->size(); ++__pos) > if (!traits_type::find(__s, __n, _M_data()[__pos])) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_not_of(_CharT __c, size_type __pos) const > { > for (; __pos < this->size(); ++__pos) > if (!traits_type::eq(_M_data()[__pos], __c)) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > do > { > if (!traits_type::find(__s, __n, _M_data()[__size])) > return __size; > } > while (__size--); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_not_of(_CharT __c, size_type __pos) const > { > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > do > { > if (!traits_type::eq(_M_data()[__size], __c)) > return __size; > } > while (__size--); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n, const basic_string& __str) const > { > _M_check(__pos, "basic_string::compare"); > __n = _M_limit(__pos, __n); > const size_type __osize = __str.size(); > const size_type __len = std::min(__n, __osize); > int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); > if (!__r) > __r = __n - __osize; > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) const > { > _M_check(__pos1, "basic_string::compare"); > __str._M_check(__pos2, "basic_string::compare"); > __n1 = _M_limit(__pos1, __n1); > __n2 = __str._M_limit(__pos2, __n2); > const size_type __len = std::min(__n1, __n2); > int __r = traits_type::compare(_M_data() + __pos1, > __str.data() + __pos2, __len); > if (!__r) > __r = __n1 - __n2; > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(const _CharT* __s) const > { > ; > const size_type __size = this->size(); > const size_type __osize = traits_type::length(__s); > const size_type __len = std::min(__size, __osize); > int __r = traits_type::compare(_M_data(), __s, __len); > if (!__r) > __r = __size - __osize; > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string <_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n1, const _CharT* __s) const > { > ; > _M_check(__pos, "basic_string::compare"); > __n1 = _M_limit(__pos, __n1); > const size_type __osize = traits_type::length(__s); > const size_type __len = std::min(__n1, __osize); > int __r = traits_type::compare(_M_data() + __pos, __s, __len); > if (!__r) > __r = __n1 - __osize; > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string <_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) const > { > ; > _M_check(__pos, "basic_string::compare"); > __n1 = _M_limit(__pos, __n1); > const size_type __len = std::min(__n1, __n2); > int __r = traits_type::compare(_M_data() + __pos, __s, __len); > if (!__r) > __r = __n1 - __n2; > return __r; > } > > > > > > extern template class basic_string<char>; > extern template > basic_istream<char>& > operator>>(basic_istream<char>&, string&); > extern template > basic_ostream<char>& > operator<<(basic_ostream<char>&, const string&); > extern template > basic_istream<char>& > getline(basic_istream<char>&, string&, char); > extern template > basic_istream<char>& > getline(basic_istream<char>&, string&); > > > extern template class basic_string<wchar_t>; > extern template > basic_istream<wchar_t>& > operator>>(basic_istream<wchar_t>&, wstring&); > extern template > basic_ostream<wchar_t>& > operator<<(basic_ostream<wchar_t>&, const wstring&); > extern template > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>&, wstring&, wchar_t); > extern template > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>&, wstring&); > > >} ># 58 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/string" 2 3 ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 2 3 > > > >namespace std >{ ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > class locale > { > public: > > > typedef int category; > > > class facet; > class id; > class _Impl; > > friend class facet; > friend class _Impl; > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Cache> > friend struct __use_cache; ># 105 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > static const category none = 0; > static const category ctype = 1L << 0; > static const category numeric = 1L << 1; > static const category collate = 1L << 2; > static const category time = 1L << 3; > static const category monetary = 1L << 4; > static const category messages = 1L << 5; > static const category all = (ctype | numeric | collate | > time | monetary | messages); ># 124 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > locale() throw(); ># 133 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > locale(const locale& __other) throw(); ># 143 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > explicit > locale(const char* __s); ># 158 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > locale(const locale& __base, const char* __s, category __cat); ># 171 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > locale(const locale& __base, const locale& __add, category __cat); ># 183 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > template<typename _Facet> > locale(const locale& __other, _Facet* __f); > > > ~locale() throw(); ># 197 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > const locale& > operator=(const locale& __other) throw(); ># 212 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > template<typename _Facet> > locale > combine(const locale& __other) const; > > > > > > > string > name() const; ># 231 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > bool > operator==(const locale& __other) const throw (); > > > > > > > > inline bool > operator!=(const locale& __other) const throw () > { return !(this->operator==(__other)); } ># 259 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > template<typename _Char, typename _Traits, typename _Alloc> > bool > operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, > const basic_string<_Char, _Traits, _Alloc>& __s2) const; ># 275 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > static locale > global(const locale&); > > > > > static const locale& > classic(); > > private: > > _Impl* _M_impl; > > > static _Impl* _S_classic; > > > static _Impl* _S_global; > > > > > > static const char* const* const _S_categories; ># 310 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > static const size_t _S_categories_size = 6 + 6; > > > static __gthread_once_t _S_once; > > > explicit > locale(_Impl*) throw(); > > static void > _S_initialize(); > > static void > _S_initialize_once(); > > static category > _S_normalize_category(category); > > void > _M_coalesce(const locale& __base, const locale& __add, category __cat); > }; ># 343 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > class locale::facet > { > private: > friend class locale; > friend class locale::_Impl; > > mutable _Atomic_word _M_refcount; > > > static __c_locale _S_c_locale; > > > static const char _S_c_name[2]; > > > static __gthread_once_t _S_once; > > > static void > _S_initialize_once(); > > protected: ># 374 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > explicit > facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) > { } > > > virtual > ~facet(); > > static void > _S_create_c_locale(__c_locale& __cloc, const char* __s, > __c_locale __old = 0); > > static __c_locale > _S_clone_c_locale(__c_locale& __cloc); > > static void > _S_destroy_c_locale(__c_locale& __cloc); > > > > static __c_locale > _S_get_c_locale(); > > static const char* > _S_get_c_name(); > > private: > inline void > _M_add_reference() const throw() > { __gnu_cxx::__atomic_add(&_M_refcount, 1); } > > inline void > _M_remove_reference() const throw() > { > if (__gnu_cxx::__exchange_and_add(&_M_refcount, -1) == 1) > { > try > { delete this; } > catch (...) > { } > } > } > > facet(const facet&); > > facet& > operator=(const facet&); > }; ># 434 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_classes.h" 3 > class locale::id > { > private: > friend class locale; > friend class locale::_Impl; > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Facet> > friend bool > has_facet(const locale&) throw (); > > > > > mutable size_t _M_index; > > > static _Atomic_word _S_refcount; > > void > operator=(const id&); > > id(const id&); > > public: > > > > id() { } > > size_t > _M_id() const; > }; > > > > class locale::_Impl > { > public: > > friend class locale; > friend class locale::facet; > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Cache> > friend struct __use_cache; > > private: > > _Atomic_word _M_refcount; > const facet** _M_facets; > size_t _M_facets_size; > const facet** _M_caches; > char** _M_names; > static const locale::id* const _S_id_ctype[]; > static const locale::id* const _S_id_numeric[]; > static const locale::id* const _S_id_collate[]; > static const locale::id* const _S_id_time[]; > static const locale::id* const _S_id_monetary[]; > static const locale::id* const _S_id_messages[]; > static const locale::id* const* const _S_facet_categories[]; > > inline void > _M_add_reference() throw() > { __gnu_cxx::__atomic_add(&_M_refcount, 1); } > > inline void > _M_remove_reference() throw() > { > if (__gnu_cxx::__exchange_and_add(&_M_refcount, -1) == 1) > { > try > { delete this; } > catch(...) > { } > } > } > > _Impl(const _Impl&, size_t); > _Impl(const char*, size_t); > _Impl(size_t) throw(); > > ~_Impl() throw(); > > _Impl(const _Impl&); > > void > operator=(const _Impl&); > > inline bool > _M_check_same_name() > { > bool __ret = true; > for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) > __ret = std::strcmp(_M_names[__i], _M_names[__i + 1]) == 0; > return __ret; > } > > void > _M_replace_categories(const _Impl*, category); > > void > _M_replace_category(const _Impl*, const locale::id* const*); > > void > _M_replace_facet(const _Impl*, const locale::id*); > > void > _M_install_facet(const locale::id*, const facet*); > > template<typename _Facet> > inline void > _M_init_facet(_Facet* __facet) > { _M_install_facet(&_Facet::id, __facet); } > > void > _M_install_cache(const facet* __cache, size_t __index) throw() > { > __cache->_M_add_reference(); > _M_caches[__index] = __cache; > } > }; > > template<typename _Facet> > locale::locale(const locale& __other, _Facet* __f) > { > _M_impl = new _Impl(*__other._M_impl, 1); > > char* _M_tmp_names[_S_categories_size]; > size_t __i = 0; > try > { > for (; __i < _S_categories_size; ++__i) > { > _M_tmp_names[__i] = new char[2]; > std::strcpy(_M_tmp_names[__i], "*"); > } > _M_impl->_M_install_facet(&_Facet::id, __f); > } > catch(...) > { > _M_impl->_M_remove_reference(); > for (size_t __j = 0; __j < __i; ++__j) > delete [] _M_tmp_names[__j]; > throw; > } > > for (size_t __k = 0; __k < _S_categories_size; ++__k) > { > delete [] _M_impl->_M_names[__k]; > _M_impl->_M_names[__k] = _M_tmp_names[__k]; > } > } >} ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 2 3 > >namespace std >{ > > > > > enum _Ios_Fmtflags { _S_ios_fmtflags_end = 1L << 16 }; > > inline _Ios_Fmtflags > operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a | __b; } > > inline _Ios_Fmtflags > operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a & __b; } > > inline _Ios_Fmtflags > operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a ^ __b; } > > inline _Ios_Fmtflags > operator~(_Ios_Fmtflags __a) > { return _Ios_Fmtflags(~static_cast<int>(__a)); } > > > enum _Ios_Openmode { _S_ios_openmode_end = 1L << 16 }; > > inline _Ios_Openmode > operator&(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Openmode > operator|(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Openmode > operator^(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Openmode > operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a | __b; } > > inline _Ios_Openmode > operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a & __b; } > > inline _Ios_Openmode > operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a ^ __b; } > > inline _Ios_Openmode > operator~(_Ios_Openmode __a) > { return _Ios_Openmode(~static_cast<int>(__a)); } > > > enum _Ios_Iostate { _S_ios_iostate_end = 1L << 16 }; > > inline _Ios_Iostate > operator&(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Iostate > operator|(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Iostate > operator^(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Iostate > operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a | __b; } > > inline _Ios_Iostate > operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a & __b; } > > inline _Ios_Iostate > operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a ^ __b; } > > inline _Ios_Iostate > operator~(_Ios_Iostate __a) > { return _Ios_Iostate(~static_cast<int>(__a)); } > > enum _Ios_Seekdir { _S_ios_seekdir_end = 1L << 16 }; ># 158 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > class ios_base > { > public: > > > > class failure : public exception > { > public: > > > explicit > failure(const string& __str) throw(); > > > > virtual > ~failure() throw(); > > virtual const char* > what() const throw(); > > private: > string _M_msg; > }; ># 210 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > typedef _Ios_Fmtflags fmtflags; > > > static const fmtflags boolalpha = fmtflags(__ios_flags::_S_boolalpha); > > > static const fmtflags dec = fmtflags(__ios_flags::_S_dec); > > > static const fmtflags fixed = fmtflags(__ios_flags::_S_fixed); > > > static const fmtflags hex = fmtflags(__ios_flags::_S_hex); > > > > > static const fmtflags internal = fmtflags(__ios_flags::_S_internal); > > > > static const fmtflags left = fmtflags(__ios_flags::_S_left); > > > static const fmtflags oct = fmtflags(__ios_flags::_S_oct); > > > > static const fmtflags right = fmtflags(__ios_flags::_S_right); > > > static const fmtflags scientific = fmtflags(__ios_flags::_S_scientific); > > > > static const fmtflags showbase = fmtflags(__ios_flags::_S_showbase); > > > > static const fmtflags showpoint = fmtflags(__ios_flags::_S_showpoint); > > > static const fmtflags showpos = fmtflags(__ios_flags::_S_showpos); > > > static const fmtflags skipws = fmtflags(__ios_flags::_S_skipws); > > > static const fmtflags unitbuf = fmtflags(__ios_flags::_S_unitbuf); > > > > static const fmtflags uppercase = fmtflags(__ios_flags::_S_uppercase); > > > static const fmtflags adjustfield = fmtflags(__ios_flags::_S_adjustfield); > > > static const fmtflags basefield = fmtflags(__ios_flags::_S_basefield); > > > static const fmtflags floatfield = fmtflags(__ios_flags::_S_floatfield); ># 285 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > typedef _Ios_Iostate iostate; > > > > static const iostate badbit = iostate(__ios_flags::_S_badbit); > > > static const iostate eofbit = iostate(__ios_flags::_S_eofbit); > > > > > static const iostate failbit = iostate(__ios_flags::_S_failbit); > > > static const iostate goodbit = iostate(0); ># 316 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > typedef _Ios_Openmode openmode; > > > static const openmode app = openmode(__ios_flags::_S_app); > > > static const openmode ate = openmode(__ios_flags::_S_ate); > > > > > > static const openmode binary = openmode(__ios_flags::_S_bin); > > > static const openmode in = openmode(__ios_flags::_S_in); > > > static const openmode out = openmode(__ios_flags::_S_out); > > > static const openmode trunc = openmode(__ios_flags::_S_trunc); ># 349 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > typedef _Ios_Seekdir seekdir; > > > static const seekdir beg = seekdir(0); > > > static const seekdir cur = seekdir(1); > > > static const seekdir end = seekdir(2); ># 377 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > enum event > { > erase_event, > imbue_event, > copyfmt_event > }; ># 394 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > typedef void (*event_callback) (event, ios_base&, int); ># 406 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > void > register_callback(event_callback __fn, int __index); > > protected: > > > > > > > streamsize _M_precision; > streamsize _M_width; > fmtflags _M_flags; > iostate _M_exception; > iostate _M_streambuf_state; > > > > > struct _Callback_list > { > > _Callback_list* _M_next; > ios_base::event_callback _M_fn; > int _M_index; > _Atomic_word _M_refcount; > > _Callback_list(ios_base::event_callback __fn, int __index, > _Callback_list* __cb) > : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } > > void > _M_add_reference() { __gnu_cxx::__atomic_add(&_M_refcount, 1); } > > > int > _M_remove_reference() > { return __gnu_cxx::__exchange_and_add(&_M_refcount, -1); } > }; > > _Callback_list* _M_callbacks; > > void > _M_call_callbacks(event __ev) throw(); > > void > _M_dispose_callbacks(void); > > > struct _Words > { > void* _M_pword; > long _M_iword; > _Words() : _M_pword(0), _M_iword(0) { } > }; > > > _Words _M_word_zero; > > > > static const int _S_local_word_size = 8; > _Words _M_local_word[_S_local_word_size]; > > > int _M_word_size; > _Words* _M_word; > > _Words& > _M_grow_words(int __index, bool __iword); > > > locale _M_ios_locale; > > void > _M_init(); > > public: > > > > > > class Init > { > friend class ios_base; > public: > Init(); > ~Init(); > > private: > static _Atomic_word _S_refcount; > static bool _S_synced_with_stdio; > }; > > > > > > > inline fmtflags > flags() const { return _M_flags; } ># 516 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline fmtflags > flags(fmtflags __fmtfl) > { > fmtflags __old = _M_flags; > _M_flags = __fmtfl; > return __old; > } ># 532 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline fmtflags > setf(fmtflags __fmtfl) > { > fmtflags __old = _M_flags; > _M_flags |= __fmtfl; > return __old; > } ># 549 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline fmtflags > setf(fmtflags __fmtfl, fmtflags __mask) > { > fmtflags __old = _M_flags; > _M_flags &= ~__mask; > _M_flags |= (__fmtfl & __mask); > return __old; > } > > > > > > > > inline void > unsetf(fmtflags __mask) { _M_flags &= ~__mask; } ># 576 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline streamsize > precision() const { return _M_precision; } > > > > > > > inline streamsize > precision(streamsize __prec) > { > streamsize __old = _M_precision; > _M_precision = __prec; > return __old; > } > > > > > > > > inline streamsize > width() const { return _M_width; } > > > > > > > inline streamsize > width(streamsize __wide) > { > streamsize __old = _M_width; > _M_width = __wide; > return __old; > } ># 625 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > static bool > sync_with_stdio(bool __sync = true); ># 637 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > locale > imbue(const locale& __loc); ># 648 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline locale > getloc() const { return _M_ios_locale; } ># 658 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline const locale& > _M_getloc() const { return _M_ios_locale; } ># 676 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > static int > xalloc() throw(); ># 692 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline long& > iword(int __ix) > { > _Words& __word = (__ix < _M_word_size) > ? _M_word[__ix] : _M_grow_words(__ix, true); > return __word._M_iword; > } ># 713 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > inline void*& > pword(int __ix) > { > _Words& __word = (__ix < _M_word_size) > ? _M_word[__ix] : _M_grow_words(__ix, false); > return __word._M_pword; > } ># 730 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ios_base.h" 3 > virtual ~ios_base(); > > protected: > ios_base(); > > > > private: > ios_base(const ios_base&); > > ios_base& > operator=(const ios_base&); > }; > > > > inline ios_base& > boolalpha(ios_base& __base) > { > __base.setf(ios_base::boolalpha); > return __base; > } > > > inline ios_base& > noboolalpha(ios_base& __base) > { > __base.unsetf(ios_base::boolalpha); > return __base; > } > > > inline ios_base& > showbase(ios_base& __base) > { > __base.setf(ios_base::showbase); > return __base; > } > > > inline ios_base& > noshowbase(ios_base& __base) > { > __base.unsetf(ios_base::showbase); > return __base; > } > > > inline ios_base& > showpoint(ios_base& __base) > { > __base.setf(ios_base::showpoint); > return __base; > } > > > inline ios_base& > noshowpoint(ios_base& __base) > { > __base.unsetf(ios_base::showpoint); > return __base; > } > > > inline ios_base& > showpos(ios_base& __base) > { > __base.setf(ios_base::showpos); > return __base; > } > > > inline ios_base& > noshowpos(ios_base& __base) > { > __base.unsetf(ios_base::showpos); > return __base; > } > > > inline ios_base& > skipws(ios_base& __base) > { > __base.setf(ios_base::skipws); > return __base; > } > > > inline ios_base& > noskipws(ios_base& __base) > { > __base.unsetf(ios_base::skipws); > return __base; > } > > > inline ios_base& > uppercase(ios_base& __base) > { > __base.setf(ios_base::uppercase); > return __base; > } > > > inline ios_base& > nouppercase(ios_base& __base) > { > __base.unsetf(ios_base::uppercase); > return __base; > } > > > inline ios_base& > unitbuf(ios_base& __base) > { > __base.setf(ios_base::unitbuf); > return __base; > } > > > inline ios_base& > nounitbuf(ios_base& __base) > { > __base.unsetf(ios_base::unitbuf); > return __base; > } > > > > inline ios_base& > internal(ios_base& __base) > { > __base.setf(ios_base::internal, ios_base::adjustfield); > return __base; > } > > > inline ios_base& > left(ios_base& __base) > { > __base.setf(ios_base::left, ios_base::adjustfield); > return __base; > } > > > inline ios_base& > right(ios_base& __base) > { > __base.setf(ios_base::right, ios_base::adjustfield); > return __base; > } > > > > inline ios_base& > dec(ios_base& __base) > { > __base.setf(ios_base::dec, ios_base::basefield); > return __base; > } > > > inline ios_base& > hex(ios_base& __base) > { > __base.setf(ios_base::hex, ios_base::basefield); > return __base; > } > > > inline ios_base& > oct(ios_base& __base) > { > __base.setf(ios_base::oct, ios_base::basefield); > return __base; > } > > > > inline ios_base& > fixed(ios_base& __base) > { > __base.setf(ios_base::fixed, ios_base::floatfield); > return __base; > } > > > inline ios_base& > scientific(ios_base& __base) > { > __base.setf(ios_base::scientific, ios_base::floatfield); > return __base; > } >} ># 50 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > > > > > > >namespace std >{ > > > > > > template<typename _CharT, typename _Traits> > streamsize > __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, > basic_streambuf<_CharT, _Traits>* __sbout); ># 122 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > template<typename _CharT, typename _Traits> > class basic_streambuf > { > public: > > > > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; ># 145 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > typedef basic_streambuf<char_type, traits_type> __streambuf_type; > > > friend class basic_ios<char_type, traits_type>; > friend class basic_istream<char_type, traits_type>; > friend class basic_ostream<char_type, traits_type>; > friend class istreambuf_iterator<char_type, traits_type>; > friend class ostreambuf_iterator<char_type, traits_type>; > > friend streamsize > __copy_streambufs<>(__streambuf_type* __sbin, > __streambuf_type* __sbout); > > protected: ># 169 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > char_type* _M_in_beg; > char_type* _M_in_cur; > char_type* _M_in_end; > char_type* _M_out_beg; > char_type* _M_out_cur; > char_type* _M_out_end; > > > > > > > locale _M_buf_locale; > > public: > > virtual > ~basic_streambuf() > { } ># 197 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > locale > pubimbue(const locale &__loc) > { > locale __tmp(this->getloc()); > this->imbue(__loc); > _M_buf_locale = __loc; > return __tmp; > } ># 214 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > locale > getloc() const > { return _M_buf_locale; } ># 227 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > __streambuf_type* > pubsetbuf(char_type* __s, streamsize __n) > { return this->setbuf(__s, __n); } > > pos_type > pubseekoff(off_type __off, ios_base::seekdir __way, > ios_base::openmode __mode = ios_base::in | ios_base::out) > { return this->seekoff(__off, __way, __mode); } > > pos_type > pubseekpos(pos_type __sp, > ios_base::openmode __mode = ios_base::in | ios_base::out) > { return this->seekpos(__sp, __mode); } > > int > pubsync() { return this->sync(); } ># 254 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > streamsize > in_avail() > { > const streamsize __ret = this->egptr() - this->gptr(); > return __ret ? __ret : this->showmanyc(); > } ># 268 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > int_type > snextc() > { > int_type __ret = traits_type::eof(); > if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), > __ret), true)) > __ret = this->sgetc(); > return __ret; > } ># 286 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > int_type > sbumpc() > { > int_type __ret; > if (__builtin_expect(this->gptr() < this->egptr(), true)) > { > __ret = traits_type::to_int_type(*this->gptr()); > this->gbump(1); > } > else > __ret = this->uflow(); > return __ret; > } ># 308 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > int_type > sgetc() > { > int_type __ret; > if (__builtin_expect(this->gptr() < this->egptr(), true)) > __ret = traits_type::to_int_type(*this->gptr()); > else > __ret = this->underflow(); > return __ret; > } ># 327 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > streamsize > sgetn(char_type* __s, streamsize __n) > { return this->xsgetn(__s, __n); } ># 341 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > int_type > sputbackc(char_type __c) > { > int_type __ret; > const bool __testpos = this->eback() < this->gptr(); > if (__builtin_expect(!__testpos || > !traits_type::eq(__c, this->gptr()[-1]), false)) > __ret = this->pbackfail(traits_type::to_int_type(__c)); > else > { > this->gbump(-1); > __ret = traits_type::to_int_type(*this->gptr()); > } > return __ret; > } ># 366 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > int_type > sungetc() > { > int_type __ret; > if (__builtin_expect(this->eback() < this->gptr(), true)) > { > this->gbump(-1); > __ret = traits_type::to_int_type(*this->gptr()); > } > else > __ret = this->pbackfail(); > return __ret; > } ># 393 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > int_type > sputc(char_type __c) > { > int_type __ret; > if (__builtin_expect(this->pptr() < this->epptr(), true)) > { > *this->pptr() = __c; > this->pbump(1); > __ret = traits_type::to_int_type(__c); > } > else > __ret = this->overflow(traits_type::to_int_type(__c)); > return __ret; > } ># 419 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > streamsize > sputn(const char_type* __s, streamsize __n) > { return this->xsputn(__s, __n); } > > protected: ># 433 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > basic_streambuf() > : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), > _M_out_beg(0), _M_out_cur(0), _M_out_end(0), > _M_buf_locale(locale()) > { } ># 451 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > char_type* > eback() const { return _M_in_beg; } > > char_type* > gptr() const { return _M_in_cur; } > > char_type* > egptr() const { return _M_in_end; } ># 467 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > void > gbump(int __n) { _M_in_cur += __n; } ># 478 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > void > setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) > { > _M_in_beg = __gbeg; > _M_in_cur = __gnext; > _M_in_end = __gend; > } ># 498 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > char_type* > pbase() const { return _M_out_beg; } > > char_type* > pptr() const { return _M_out_cur; } > > char_type* > epptr() const { return _M_out_end; } ># 514 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > void > pbump(int __n) { _M_out_cur += __n; } ># 524 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > void > setp(char_type* __pbeg, char_type* __pend) > { > _M_out_beg = _M_out_cur = __pbeg; > _M_out_end = __pend; > } ># 545 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual void > imbue(const locale&) > { } ># 560 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual basic_streambuf<char_type,_Traits>* > setbuf(char_type*, streamsize) > { return this; } ># 571 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual pos_type > seekoff(off_type, ios_base::seekdir, > ios_base::openmode = ios_base::in | ios_base::out) > { return pos_type(off_type(-1)); } ># 583 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual pos_type > seekpos(pos_type, > ios_base::openmode = ios_base::in | ios_base::out) > { return pos_type(off_type(-1)); } ># 596 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual int > sync() { return 0; } ># 618 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual streamsize > showmanyc() { return 0; } ># 634 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual streamsize > xsgetn(char_type* __s, streamsize __n); ># 656 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual int_type > underflow() > { return traits_type::eof(); } ># 669 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual int_type > uflow() > { > int_type __ret = traits_type::eof(); > const bool __testeof = traits_type::eq_int_type(this->underflow(), > __ret); > if (!__testeof) > { > __ret = traits_type::to_int_type(*this->gptr()); > this->gbump(1); > } > return __ret; > } ># 693 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual int_type > pbackfail(int_type = traits_type::eof()) > { return traits_type::eof(); } ># 711 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual streamsize > xsputn(const char_type* __s, streamsize __n); ># 736 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > virtual int_type > overflow(int_type = traits_type::eof()) > { return traits_type::eof(); } ># 765 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 3 > private: > > > basic_streambuf(const __streambuf_type& __sb) > : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur), > _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg), > _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur), > _M_buf_locale(__sb._M_buf_locale) > { } > > __streambuf_type& > operator=(const __streambuf_type&) { return *this; }; > }; >} > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/streambuf.tcc" 1 3 ># 38 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/streambuf.tcc" 3 > ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/streambuf.tcc" 3 > >namespace std >{ > template<typename _CharT, typename _Traits> > streamsize > basic_streambuf<_CharT, _Traits>:: > xsgetn(char_type* __s, streamsize __n) > { > streamsize __ret = 0; > while (__ret < __n) > { > const size_t __buf_len = this->egptr() - this->gptr(); > if (__buf_len) > { > const size_t __remaining = __n - __ret; > const size_t __len = std::min(__buf_len, __remaining); > traits_type::copy(__s, this->gptr(), __len); > __ret += __len; > __s += __len; > this->gbump(__len); > } > > if (__ret < __n) > { > const int_type __c = this->uflow(); > if (!traits_type::eq_int_type(__c, traits_type::eof())) > { > traits_type::assign(*__s++, traits_type::to_char_type(__c)); > ++__ret; > } > else > break; > } > } > return __ret; > } > > template<typename _CharT, typename _Traits> > streamsize > basic_streambuf<_CharT, _Traits>:: > xsputn(const char_type* __s, streamsize __n) > { > streamsize __ret = 0; > while (__ret < __n) > { > const size_t __buf_len = this->epptr() - this->pptr(); > if (__buf_len) > { > const size_t __remaining = __n - __ret; > const size_t __len = std::min(__buf_len, __remaining); > traits_type::copy(this->pptr(), __s, __len); > __ret += __len; > __s += __len; > this->pbump(__len); > } > > if (__ret < __n) > { > int_type __c = this->overflow(traits_type::to_int_type(*__s)); > if (!traits_type::eq_int_type(__c, traits_type::eof())) > { > ++__ret; > ++__s; > } > else > break; > } > } > return __ret; > } > > > > > > template<typename _CharT, typename _Traits> > streamsize > __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, > basic_streambuf<_CharT, _Traits>* __sbout) > { > streamsize __ret = 0; > typename _Traits::int_type __c = __sbin->sgetc(); > while (!_Traits::eq_int_type(__c, _Traits::eof())) > { > const size_t __n = __sbin->egptr() - __sbin->gptr(); > if (__n > 1) > { > const size_t __wrote = __sbout->sputn(__sbin->gptr(), __n); > __sbin->gbump(__wrote); > __ret += __wrote; > if (__wrote < __n) > break; > __c = __sbin->underflow(); > } > else > { > __c = __sbout->sputc(_Traits::to_char_type(__c)); > if (_Traits::eq_int_type(__c, _Traits::eof())) > break; > ++__ret; > __c = __sbin->snextc(); > } > } > return __ret; > } > > > > > > extern template class basic_streambuf<char>; > extern template > streamsize > __copy_streambufs(basic_streambuf<char>*, basic_streambuf<char>*); > > > extern template class basic_streambuf<wchar_t>; > extern template > streamsize > __copy_streambufs(basic_streambuf<wchar_t>*, basic_streambuf<wchar_t>*); > > >} ># 782 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/streambuf" 2 3 ># 51 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 1 3 ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/streambuf_iterator.h" 1 3 ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/streambuf_iterator.h" 3 > ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/streambuf_iterator.h" 3 > > > > > > >namespace std >{ > > > template<typename _CharT, typename _Traits> > class istreambuf_iterator > : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type, > _CharT*, _CharT&> > { > public: > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef typename _Traits::int_type int_type; > typedef basic_streambuf<_CharT, _Traits> streambuf_type; > typedef basic_istream<_CharT, _Traits> istream_type; > > > private: > > > > > > > > mutable streambuf_type* _M_sbuf; > int_type _M_c; > > public: > > istreambuf_iterator() throw() > : _M_sbuf(0), _M_c(traits_type::eof()) { } > > > istreambuf_iterator(istream_type& __s) throw() > : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } > > > istreambuf_iterator(streambuf_type* __s) throw() > : _M_sbuf(__s), _M_c(traits_type::eof()) { } > > > > > char_type > operator*() const > { > > > > > > > > return traits_type::to_char_type(_M_get()); > } > > > istreambuf_iterator& > operator++() > { > ; > > > const int_type __eof = traits_type::eof(); > if (_M_sbuf && traits_type::eq_int_type(_M_sbuf->sbumpc(), __eof)) > _M_sbuf = 0; > else > _M_c = __eof; > return *this; > } > > > istreambuf_iterator > operator++(int) > { > ; > > > > const int_type __eof = traits_type::eof(); > istreambuf_iterator __old = *this; > if (_M_sbuf > && traits_type::eq_int_type((__old._M_c = _M_sbuf->sbumpc()), > __eof)) > _M_sbuf = 0; > else > _M_c = __eof; > return __old; > } > > > > > > bool > equal(const istreambuf_iterator& __b) const > { > const bool __thiseof = _M_at_eof(); > const bool __beof = __b._M_at_eof(); > return (__thiseof && __beof || (!__thiseof && !__beof)); > } > > private: > int_type > _M_get() const > { > const int_type __eof = traits_type::eof(); > int_type __ret = __eof; > if (_M_sbuf) > { > if (!traits_type::eq_int_type(_M_c, __eof)) > __ret = _M_c; > else if (traits_type::eq_int_type((__ret = _M_sbuf->sgetc()), > __eof)) > _M_sbuf = 0; > } > return __ret; > } > > bool > _M_at_eof() const > { > const int_type __eof = traits_type::eof(); > return traits_type::eq_int_type(_M_get(), __eof); > } > }; > > template<typename _CharT, typename _Traits> > inline bool > operator==(const istreambuf_iterator<_CharT, _Traits>& __a, > const istreambuf_iterator<_CharT, _Traits>& __b) > { return __a.equal(__b); } > > template<typename _CharT, typename _Traits> > inline bool > operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, > const istreambuf_iterator<_CharT, _Traits>& __b) > { return !__a.equal(__b); } > > > template<typename _CharT, typename _Traits> > class ostreambuf_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > public: > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef basic_streambuf<_CharT, _Traits> streambuf_type; > typedef basic_ostream<_CharT, _Traits> ostream_type; > > > private: > streambuf_type* _M_sbuf; > bool _M_failed; > > public: > > ostreambuf_iterator(ostream_type& __s) throw () > : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } > > > ostreambuf_iterator(streambuf_type* __s) throw () > : _M_sbuf(__s), _M_failed(!_M_sbuf) { } > > > ostreambuf_iterator& > operator=(_CharT __c) > { > if (!_M_failed && > _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) > _M_failed = true; > return *this; > } > > > ostreambuf_iterator& > operator*() > { return *this; } > > > ostreambuf_iterator& > operator++(int) > { return *this; } > > > ostreambuf_iterator& > operator++() > { return *this; } > > > bool > failed() const throw() > { return _M_failed; } > > ostreambuf_iterator& > _M_put(const _CharT* __ws, streamsize __len) > { > if (__builtin_expect(!_M_failed, true) > && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, > false)) > _M_failed = true; > return *this; > } > }; >} ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 2 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwctype" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwctype" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwctype" 3 > > > > ># 1 "/usr/include/wctype.h" 1 3 4 ># 35 "/usr/include/wctype.h" 3 4 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 ># 36 "/usr/include/wctype.h" 2 3 4 ># 45 "/usr/include/wctype.h" 3 4 > > > ># 64 "/usr/include/wctype.h" 3 4 > > > >typedef unsigned long int wctype_t; > ># 86 "/usr/include/wctype.h" 3 4 >enum >{ > __ISwupper = 0, > __ISwlower = 1, > __ISwalpha = 2, > __ISwdigit = 3, > __ISwxdigit = 4, > __ISwspace = 5, > __ISwprint = 6, > __ISwgraph = 7, > __ISwblank = 8, > __ISwcntrl = 9, > __ISwpunct = 10, > __ISwalnum = 11, > > _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), > _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), > _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), > _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), > _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), > _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), > _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), > _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), > _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), > _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), > _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), > _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) >}; > > > >extern "C" { > > > > > > > > >extern int iswalnum (wint_t __wc) throw (); > > > > > >extern int iswalpha (wint_t __wc) throw (); > > >extern int iswcntrl (wint_t __wc) throw (); > > > >extern int iswdigit (wint_t __wc) throw (); > > > >extern int iswgraph (wint_t __wc) throw (); > > > > >extern int iswlower (wint_t __wc) throw (); > > >extern int iswprint (wint_t __wc) throw (); > > > > >extern int iswpunct (wint_t __wc) throw (); > > > > >extern int iswspace (wint_t __wc) throw (); > > > > >extern int iswupper (wint_t __wc) throw (); > > > > >extern int iswxdigit (wint_t __wc) throw (); > > > > > >extern int iswblank (wint_t __wc) throw (); ># 186 "/usr/include/wctype.h" 3 4 >extern wctype_t wctype (__const char *__property) throw (); > > > >extern int iswctype (wint_t __wc, wctype_t __desc) throw (); > > > > > > > > > > >typedef __const __int32_t *wctrans_t; > > > > > > > >extern wint_t towlower (wint_t __wc) throw (); > > >extern wint_t towupper (wint_t __wc) throw (); > > >} ># 228 "/usr/include/wctype.h" 3 4 >extern "C" { > > > > >extern wctrans_t wctrans (__const char *__property) throw (); > > >extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); > > > > > > > > >extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw (); > > > > > >extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw (); > > >extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswlower_l (wint_t __wc, __locale_t __locale) throw (); > > >extern int iswprint_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswspace_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswupper_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswblank_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern wctype_t wctype_l (__const char *__property, __locale_t __locale) > throw (); > > > >extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale) > throw (); > > > > > > > >extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw (); > > >extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale) > throw (); > > >extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, > __locale_t __locale) throw (); > > > >} ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwctype" 2 3 ># 79 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cwctype" 3 >namespace std >{ > using ::wint_t; > > using ::wctype_t; > using ::wctrans_t; > > using ::iswalnum; > using ::iswalpha; > > using ::iswblank; > > using ::iswcntrl; > using ::iswdigit; > using ::iswgraph; > using ::iswlower; > using ::iswprint; > using ::iswprint; > using ::iswpunct; > using ::iswspace; > using ::iswupper; > using ::iswxdigit; > using ::iswctype; > using ::towlower; > using ::towupper; > using ::towctrans; > using ::wctrans; > using ::wctype; >} ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 2 3 > > > > >namespace std >{ ># 63 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _Tv> > void > __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err, > const __c_locale& __cloc); > > > template<> > void > __convert_to_v(const char*, float&, ios_base::iostate&, > const __c_locale&); > > template<> > void > __convert_to_v(const char*, double&, ios_base::iostate&, > const __c_locale&); > > template<> > void > __convert_to_v(const char*, long double&, ios_base::iostate&, > const __c_locale&); > > > > template<typename _CharT, typename _Traits> > struct __pad > { > static void > _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, > const _CharT* __olds, const streamsize __newlen, > const streamsize __oldlen, const bool __num); > }; > > > > > > > template<typename _CharT> > _CharT* > __add_grouping(_CharT* __s, _CharT __sep, > const char* __gbeg, size_t __gsize, > const _CharT* __first, const _CharT* __last); > > > > > template<typename _CharT> > inline > ostreambuf_iterator<_CharT> > __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) > { > __s._M_put(__ws, __len); > return __s; > } > > > template<typename _CharT, typename _OutIter> > inline > _OutIter > __write(_OutIter __s, const _CharT* __ws, int __len) > { > for (int __j = 0; __j < __len; __j++, ++__s) > *__s = __ws[__j]; > return __s; > } > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/ctype_base.h" 1 3 ># 37 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/ctype_base.h" 3 > struct ctype_base > { > > typedef const int* __to_type; > > > > typedef unsigned short mask; > static const mask upper = _ISupper; > static const mask lower = _ISlower; > static const mask alpha = _ISalpha; > static const mask digit = _ISdigit; > static const mask xdigit = _ISxdigit; > static const mask space = _ISspace; > static const mask print = _ISprint; > static const mask graph = _ISalpha | _ISdigit | _ISpunct; > static const mask cntrl = _IScntrl; > static const mask punct = _ISpunct; > static const mask alnum = _ISalpha | _ISdigit; > }; ># 133 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 2 3 ># 144 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT> > class __ctype_abstract_base : public locale::facet, public ctype_base > { > public: > > > typedef _CharT char_type; ># 162 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > bool > is(mask __m, char_type __c) const > { return this->do_is(__m, __c); } ># 179 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > is(const char_type *__lo, const char_type *__hi, mask *__vec) const > { return this->do_is(__lo, __hi, __vec); } ># 195 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > scan_is(mask __m, const char_type* __lo, const char_type* __hi) const > { return this->do_scan_is(__m, __lo, __hi); } ># 211 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > scan_not(mask __m, const char_type* __lo, const char_type* __hi) const > { return this->do_scan_not(__m, __lo, __hi); } ># 225 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > toupper(char_type __c) const > { return this->do_toupper(__c); } ># 240 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > toupper(char_type *__lo, const char_type* __hi) const > { return this->do_toupper(__lo, __hi); } ># 254 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > tolower(char_type __c) const > { return this->do_tolower(__c); } ># 269 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > tolower(char_type* __lo, const char_type* __hi) const > { return this->do_tolower(__lo, __hi); } ># 286 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > widen(char __c) const > { return this->do_widen(__c); } ># 305 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char* > widen(const char* __lo, const char* __hi, char_type* __to) const > { return this->do_widen(__lo, __hi, __to); } ># 324 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char > narrow(char_type __c, char __dfault) const > { return this->do_narrow(__c, __dfault); } ># 346 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char *__to) const > { return this->do_narrow(__lo, __hi, __dfault, __to); } > > protected: > explicit > __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } > > virtual > ~__ctype_abstract_base() { } ># 371 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual bool > do_is(mask __m, char_type __c) const = 0; ># 390 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, > mask* __vec) const = 0; ># 409 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, > const char_type* __hi) const = 0; ># 428 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const = 0; ># 446 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type) const = 0; ># 463 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const = 0; ># 479 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type) const = 0; ># 496 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const = 0; ># 515 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_widen(char) const = 0; ># 536 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, > char_type* __dest) const = 0; ># 558 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type, char __dfault) const = 0; ># 582 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __dest) const = 0; > }; ># 605 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT> > class ctype : public __ctype_abstract_base<_CharT> > { > public: > > typedef _CharT char_type; > typedef typename __ctype_abstract_base<_CharT>::mask mask; > > > static locale::id id; > > explicit > ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } > > protected: > virtual > ~ctype(); > > virtual bool > do_is(mask __m, char_type __c) const; > > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; > > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; > > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const; > > virtual char_type > do_toupper(char_type __c) const; > > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; > > virtual char_type > do_tolower(char_type __c) const; > > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; > > virtual char_type > do_widen(char __c) const; > > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const; > > virtual char > do_narrow(char_type, char __dfault) const; > > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __dest) const; > }; > > template<typename _CharT> > locale::id ctype<_CharT>::id; ># 674 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<> > class ctype<char> : public locale::facet, public ctype_base > { > public: > > > typedef char char_type; > > protected: > > __c_locale _M_c_locale_ctype; > bool _M_del; > __to_type _M_toupper; > __to_type _M_tolower; > const mask* _M_table; > mutable char _M_widen_ok; > mutable char _M_widen[1 + static_cast<unsigned char>(-1)]; > mutable char _M_narrow[1 + static_cast<unsigned char>(-1)]; > mutable char _M_narrow_ok; > > > public: > > static locale::id id; > > static const size_t table_size = 1 + static_cast<unsigned char>(-1); ># 711 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); ># 724 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, > size_t __refs = 0); ># 737 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > inline bool > is(mask __m, char __c) const; ># 752 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > inline const char* > is(const char* __lo, const char* __hi, mask* __vec) const; ># 766 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > inline const char* > scan_is(mask __m, const char* __lo, const char* __hi) const; ># 780 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > inline const char* > scan_not(mask __m, const char* __lo, const char* __hi) const; ># 795 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > toupper(char_type __c) const > { return this->do_toupper(__c); } ># 812 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > toupper(char_type *__lo, const char_type* __hi) const > { return this->do_toupper(__lo, __hi); } ># 828 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > tolower(char_type __c) const > { return this->do_tolower(__c); } ># 845 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > tolower(char_type* __lo, const char_type* __hi) const > { return this->do_tolower(__lo, __hi); } ># 865 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > widen(char __c) const > { > if (_M_widen_ok) return _M_widen[static_cast<unsigned char>(__c)]; > this->_M_widen_init(); > return this->do_widen(__c); > } ># 891 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char* > widen(const char* __lo, const char* __hi, char_type* __to) const > { > if (_M_widen_ok == 1) > { > memcpy(__to, __lo, __hi - __lo); > return __hi; > } > if (!_M_widen_ok) _M_widen_init(); > return this->do_widen(__lo, __hi, __to); > } ># 921 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char > narrow(char_type __c, char __dfault) const > { > if (_M_narrow[static_cast<unsigned char>(__c)]) > return _M_narrow[static_cast<unsigned char>(__c)]; > const char __t = do_narrow(__c, __dfault); > if (__t != __dfault) _M_narrow[static_cast<unsigned char>(__c)] = __t; > return __t; > } ># 953 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > const char_type* > narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char *__to) const > { > if (__builtin_expect(_M_narrow_ok == 1,true)) > { > memcpy(__to, __lo, __hi - __lo); > return __hi; > } > if (!_M_narrow_ok) > _M_narrow_init(); > return this->do_narrow(__lo, __hi, __dfault, __to); > } > > protected: > > > const mask* > table() const throw() > { return _M_table; } > > > static const mask* > classic_table() throw(); > > > > > > > > virtual > ~ctype(); ># 1000 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type) const; ># 1017 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; ># 1033 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type) const; ># 1050 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; ># 1070 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_widen(char __c) const > { return __c; } ># 1093 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const > { > memcpy(__dest, __lo, __hi - __lo); > return __hi; > } ># 1119 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type __c, char) const > { return __c; } ># 1145 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char, char* __dest) const > { > memcpy(__dest, __lo, __hi - __lo); > return __hi; > } > > private: > > void _M_widen_init() const > { > char __tmp[sizeof(_M_widen)]; > for (size_t __i = 0; __i < sizeof(_M_widen); ++__i) > __tmp[__i] = __i; > do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen); > > _M_widen_ok = 1; > > for (size_t __j = 0; __j < sizeof(_M_widen); ++__j) > if (__tmp[__j] != _M_widen[__j]) > { > _M_widen_ok = 2; > break; > } > } > > > > > void _M_narrow_init() const > { > char __tmp[sizeof(_M_narrow)]; > for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i) > __tmp[__i] = __i; > do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow); > > > > bool __consecutive = true; > for (size_t __j = 0; __j < sizeof(_M_narrow); ++__j) > if (!_M_narrow[__j]) > { > char __c; > do_narrow(__tmp + __j, __tmp + __j + 1, 1, &__c); > if (__c == 1) > { > __consecutive = false; > break; > } > } > _M_narrow_ok = __consecutive ? 1 : 2; > } > }; > > template<> > const ctype<char>& > use_facet<ctype<char> >(const locale& __loc); ># 1216 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<> > class ctype<wchar_t> : public __ctype_abstract_base<wchar_t> > { > public: > > > typedef wchar_t char_type; > typedef wctype_t __wmask_type; > > protected: > __c_locale _M_c_locale_ctype; > > > bool _M_narrow_ok; > char _M_narrow[128]; > wint_t _M_widen[1 + static_cast<unsigned char>(-1)]; > > > mask _M_bit[16]; > __wmask_type _M_wmask[16]; > > public: > > > static locale::id id; ># 1249 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > ctype(size_t __refs = 0); ># 1260 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > ctype(__c_locale __cloc, size_t __refs = 0); > > protected: > __wmask_type > _M_convert_to_wmask(const mask __m) const; > > > virtual > ~ctype(); ># 1284 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual bool > do_is(mask __m, char_type __c) const; ># 1303 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; ># 1321 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; ># 1339 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const; ># 1356 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type) const; ># 1373 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; ># 1389 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type) const; ># 1406 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; ># 1426 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_widen(char) const; ># 1448 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const; ># 1471 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type, char __dfault) const; ># 1497 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __dest) const; > > > void > _M_initialize_ctype(); > }; > > template<> > const ctype<wchar_t>& > use_facet<ctype<wchar_t> >(const locale& __loc); > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/ctype_inline.h" 1 3 ># 37 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/ctype_inline.h" 3 > bool > ctype<char>:: > is(mask __m, char __c) const > { return _M_table[static_cast<unsigned char>(__c)] & __m; } > > const char* > ctype<char>:: > is(const char* __low, const char* __high, mask* __vec) const > { > while (__low < __high) > *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; > return __high; > } > > const char* > ctype<char>:: > scan_is(mask __m, const char* __low, const char* __high) const > { > while (__low < __high > && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) > ++__low; > return __low; > } > > const char* > ctype<char>:: > scan_not(mask __m, const char* __low, const char* __high) const > { > while (__low < __high > && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) > ++__low; > return __low; > } ># 1513 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 2 3 > > > template<typename _CharT> > class ctype_byname : public ctype<_CharT> > { > public: > typedef _CharT char_type; > > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname() { }; > }; > > > template<> > ctype_byname<char>::ctype_byname(const char*, size_t refs); > > template<> > ctype_byname<wchar_t>::ctype_byname(const char*, size_t refs); > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 1 3 ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > ># 45 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > > > > class codecvt_base > { > public: > enum result > { > ok, > partial, > error, > noconv > }; > }; ># 73 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > template<typename _InternT, typename _ExternT, typename _StateT> > class __codecvt_abstract_base > : public locale::facet, public codecvt_base > { > public: > > typedef codecvt_base::result result; > typedef _InternT intern_type; > typedef _ExternT extern_type; > typedef _StateT state_type; ># 120 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > result > out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const > { > return this->do_out(__state, __from, __from_end, __from_next, > __to, __to_end, __to_next); > } ># 159 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > result > unshift(state_type& __state, extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const > { return this->do_unshift(__state, __to,__to_end,__to_next); } ># 199 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > result > in(state_type& __state, const extern_type* __from, > const extern_type* __from_end, const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const > { > return this->do_in(__state, __from, __from_end, __from_next, > __to, __to_end, __to_next); > } > > int > encoding() const throw() > { return this->do_encoding(); } > > bool > always_noconv() const throw() > { return this->do_always_noconv(); } > > int > length(state_type& __state, const extern_type* __from, > const extern_type* __end, size_t __max) const > { return this->do_length(__state, __from, __end, __max); } > > int > max_length() const throw() > { return this->do_max_length(); } > > protected: > explicit > __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } > > virtual > ~__codecvt_abstract_base() { } ># 240 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 3 > virtual result > do_out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const = 0; > > virtual result > do_unshift(state_type& __state, extern_type* __to, > extern_type* __to_end, extern_type*& __to_next) const = 0; > > virtual result > do_in(state_type& __state, const extern_type* __from, > const extern_type* __from_end, const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const = 0; > > virtual int > do_encoding() const throw() = 0; > > virtual bool > do_always_noconv() const throw() = 0; > > virtual int > do_length(state_type&, const extern_type* __from, > const extern_type* __end, size_t __max) const = 0; > > virtual int > do_max_length() const throw() = 0; > }; > > > > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt > : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> > { > public: > > typedef codecvt_base::result result; > typedef _InternT intern_type; > typedef _ExternT extern_type; > typedef _StateT state_type; > > protected: > __c_locale _M_c_locale_codecvt; > > public: > static locale::id id; > > explicit > codecvt(size_t __refs = 0) > : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs) { } > > explicit > codecvt(__c_locale __cloc, size_t __refs = 0); > > protected: > virtual > ~codecvt() { } > > virtual result > do_out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const; > > virtual result > do_unshift(state_type& __state, extern_type* __to, > extern_type* __to_end, extern_type*& __to_next) const; > > virtual result > do_in(state_type& __state, const extern_type* __from, > const extern_type* __from_end, const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const; > > virtual int > do_encoding() const throw(); > > virtual bool > do_always_noconv() const throw(); > > virtual int > do_length(state_type&, const extern_type* __from, > const extern_type* __end, size_t __max) const; > > virtual int > do_max_length() const throw(); > }; > > template<typename _InternT, typename _ExternT, typename _StateT> > locale::id codecvt<_InternT, _ExternT, _StateT>::id; > > > template<> > class codecvt<char, char, mbstate_t> > : public __codecvt_abstract_base<char, char, mbstate_t> > { > public: > > typedef char intern_type; > typedef char extern_type; > typedef mbstate_t state_type; > > protected: > __c_locale _M_c_locale_codecvt; > > public: > static locale::id id; > > explicit > codecvt(size_t __refs = 0); > > explicit > codecvt(__c_locale __cloc, size_t __refs = 0); > > protected: > virtual > ~codecvt(); > > virtual result > do_out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const; > > virtual result > do_unshift(state_type& __state, extern_type* __to, > extern_type* __to_end, extern_type*& __to_next) const; > > virtual result > do_in(state_type& __state, const extern_type* __from, > const extern_type* __from_end, const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const; > > virtual int > do_encoding() const throw(); > > virtual bool > do_always_noconv() const throw(); > > virtual int > do_length(state_type&, const extern_type* __from, > const extern_type* __end, size_t __max) const; > > virtual int > do_max_length() const throw(); > }; > > > > template<> > class codecvt<wchar_t, char, mbstate_t> > : public __codecvt_abstract_base<wchar_t, char, mbstate_t> > { > public: > > typedef wchar_t intern_type; > typedef char extern_type; > typedef mbstate_t state_type; > > protected: > __c_locale _M_c_locale_codecvt; > > public: > static locale::id id; > > explicit > codecvt(size_t __refs = 0); > > explicit > codecvt(__c_locale __cloc, size_t __refs = 0); > > protected: > virtual > ~codecvt(); > > virtual result > do_out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const; > > virtual result > do_unshift(state_type& __state, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const; > > virtual result > do_in(state_type& __state, > const extern_type* __from, const extern_type* __from_end, > const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const; > > virtual > int do_encoding() const throw(); > > virtual > bool do_always_noconv() const throw(); > > virtual > int do_length(state_type&, const extern_type* __from, > const extern_type* __end, size_t __max) const; > > virtual int > do_max_length() const throw(); > }; > > > > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> > { > public: > explicit > codecvt_byname(const char* __s, size_t __refs = 0) > : codecvt<_InternT, _ExternT, _StateT>(__refs) > { > if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) > { > this->_S_destroy_c_locale(this->_M_c_locale_codecvt); > this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); > } > } > > protected: > virtual > ~codecvt_byname() { } > }; > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/codecvt_specializations.h" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/codecvt_specializations.h" 3 > class __enc_traits > { > public: > > > > typedef iconv_t __desc_type; > > protected: > > > static const int _S_max_size = 32; > > char _M_int_enc[_S_max_size]; > > char _M_ext_enc[_S_max_size]; > > > __desc_type _M_in_desc; > > __desc_type _M_out_desc; > > > int _M_ext_bom; > > > int _M_int_bom; > > public: > explicit __enc_traits() > : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0) > { > memset(_M_int_enc, 0, _S_max_size); > memset(_M_ext_enc, 0, _S_max_size); > } > > explicit __enc_traits(const char* __int, const char* __ext, > int __ibom = 0, int __ebom = 0) > : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(__ebom), _M_int_bom(__ibom) > { > strncpy(_M_int_enc, __int, _S_max_size); > strncpy(_M_ext_enc, __ext, _S_max_size); > _M_init(); > } ># 99 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/codecvt_specializations.h" 3 > __enc_traits(const __enc_traits& __obj): _M_in_desc(0), _M_out_desc(0) > { > strncpy(_M_int_enc, __obj._M_int_enc, _S_max_size); > strncpy(_M_ext_enc, __obj._M_ext_enc, _S_max_size); > _M_ext_bom = __obj._M_ext_bom; > _M_int_bom = __obj._M_int_bom; > _M_destroy(); > _M_init(); > } > > > __enc_traits& > operator=(const __enc_traits& __obj) > { > strncpy(_M_int_enc, __obj._M_int_enc, _S_max_size); > strncpy(_M_ext_enc, __obj._M_ext_enc, _S_max_size); > _M_ext_bom = __obj._M_ext_bom; > _M_int_bom = __obj._M_int_bom; > _M_destroy(); > _M_init(); > return *this; > } > > ~__enc_traits() > { _M_destroy(); } > > void > _M_init() > { > const __desc_type __err = reinterpret_cast<iconv_t>(-1); > if (!_M_in_desc) > { > _M_in_desc = iconv_open(_M_int_enc, _M_ext_enc); > if (_M_in_desc == __err) > __throw_runtime_error(("__enc_traits::_M_init " "creating iconv input descriptor failed")); > > } > if (!_M_out_desc) > { > _M_out_desc = iconv_open(_M_ext_enc, _M_int_enc); > if (_M_out_desc == __err) > __throw_runtime_error(("__enc_traits::_M_init " "creating iconv output descriptor failed")); > > } > } > > void > _M_destroy() > { > const __desc_type __err = reinterpret_cast<iconv_t>(-1); > if (_M_in_desc && _M_in_desc != __err) > { > iconv_close(_M_in_desc); > _M_in_desc = 0; > } > if (_M_out_desc && _M_out_desc != __err) > { > iconv_close(_M_out_desc); > _M_out_desc = 0; > } > } > > bool > _M_good() > { > const __desc_type __err = reinterpret_cast<iconv_t>(-1); > bool __test = _M_in_desc && _M_in_desc != __err; > __test &= _M_out_desc && _M_out_desc != __err; > return __test; > } > > const __desc_type* > _M_get_in_descriptor() > { return &_M_in_desc; } > > const __desc_type* > _M_get_out_descriptor() > { return &_M_out_desc; } > > int > _M_get_external_bom() > { return _M_ext_bom; } > > int > _M_get_internal_bom() > { return _M_int_bom; } > > const char* > _M_get_internal_enc() > { return _M_int_enc; } > > const char* > _M_get_external_enc() > { return _M_ext_enc; } > }; > > > > > template<typename _InternT, typename _ExternT> > class codecvt<_InternT, _ExternT, __enc_traits> > : public __codecvt_abstract_base<_InternT, _ExternT, __enc_traits> > { > public: > > typedef codecvt_base::result result; > typedef _InternT intern_type; > typedef _ExternT extern_type; > typedef __enc_traits state_type; > typedef __enc_traits::__desc_type __desc_type; > typedef __enc_traits __enc_type; > > > static locale::id id; > > explicit > codecvt(size_t __refs = 0) > : __codecvt_abstract_base<intern_type, extern_type, state_type>(__refs) > { } > > explicit > codecvt(__enc_type* __enc, size_t __refs = 0) > : __codecvt_abstract_base<intern_type, extern_type, state_type>(__refs) > { } > > protected: > virtual > ~codecvt() { } > > virtual result > do_out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const; > > virtual result > do_unshift(state_type& __state, extern_type* __to, > extern_type* __to_end, extern_type*& __to_next) const; > > virtual result > do_in(state_type& __state, const extern_type* __from, > const extern_type* __from_end, const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const; > > virtual int > do_encoding() const throw(); > > virtual bool > do_always_noconv() const throw(); > > virtual int > do_length(state_type&, const extern_type* __from, > const extern_type* __end, size_t __max) const; > > virtual int > do_max_length() const throw(); > }; > > template<typename _InternT, typename _ExternT> > locale::id > codecvt<_InternT, _ExternT, __enc_traits>::id; > > > > > > template<typename _T> > inline size_t > __iconv_adaptor(size_t(*__func)(iconv_t, _T, size_t*, char**, size_t*), > iconv_t __cd, char** __inbuf, size_t* __inbytes, > char** __outbuf, size_t* __outbytes) > { return __func(__cd, (_T)__inbuf, __inbytes, __outbuf, __outbytes); } > > template<typename _InternT, typename _ExternT> > codecvt_base::result > codecvt<_InternT, _ExternT, __enc_traits>:: > do_out(state_type& __state, const intern_type* __from, > const intern_type* __from_end, const intern_type*& __from_next, > extern_type* __to, extern_type* __to_end, > extern_type*& __to_next) const > { > result __ret = codecvt_base::error; > if (__state._M_good()) > { > typedef state_type::__desc_type __desc_type; > const __desc_type* __desc = __state._M_get_out_descriptor(); > const size_t __fmultiple = sizeof(intern_type); > size_t __fbytes = __fmultiple * (__from_end - __from); > const size_t __tmultiple = sizeof(extern_type); > size_t __tbytes = __tmultiple * (__to_end - __to); > > > > char* __cto = reinterpret_cast<char*>(__to); > char* __cfrom; > size_t __conv; > > > > > > > int __int_bom = __state._M_get_internal_bom(); > if (__int_bom) > { > size_t __size = __from_end - __from; > intern_type* __cfixed = static_cast<intern_type*>(__builtin_alloca(sizeof(intern_type) * (__size + 1))); > __cfixed[0] = static_cast<intern_type>(__int_bom); > char_traits<intern_type>::copy(__cfixed + 1, __from, __size); > __cfrom = reinterpret_cast<char*>(__cfixed); > __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, > &__fbytes, &__cto, &__tbytes); > } > else > { > intern_type* __cfixed = const_cast<intern_type*>(__from); > __cfrom = reinterpret_cast<char*>(__cfixed); > __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, &__fbytes, > &__cto, &__tbytes); > } > > if (__conv != size_t(-1)) > { > __from_next = reinterpret_cast<const intern_type*>(__cfrom); > __to_next = reinterpret_cast<extern_type*>(__cto); > __ret = codecvt_base::ok; > } > else > { > if (__fbytes < __fmultiple * (__from_end - __from)) > { > __from_next = reinterpret_cast<const intern_type*>(__cfrom); > __to_next = reinterpret_cast<extern_type*>(__cto); > __ret = codecvt_base::partial; > } > else > __ret = codecvt_base::error; > } > } > return __ret; > } > > template<typename _InternT, typename _ExternT> > codecvt_base::result > codecvt<_InternT, _ExternT, __enc_traits>:: > do_unshift(state_type& __state, extern_type* __to, > extern_type* __to_end, extern_type*& __to_next) const > { > result __ret = codecvt_base::error; > if (__state._M_good()) > { > typedef state_type::__desc_type __desc_type; > const __desc_type* __desc = __state._M_get_in_descriptor(); > const size_t __tmultiple = sizeof(intern_type); > size_t __tlen = __tmultiple * (__to_end - __to); > > > > char* __cto = reinterpret_cast<char*>(__to); > size_t __conv = __iconv_adaptor(iconv,*__desc, __null, __null, > &__cto, &__tlen); > > if (__conv != size_t(-1)) > { > __to_next = reinterpret_cast<extern_type*>(__cto); > if (__tlen == __tmultiple * (__to_end - __to)) > __ret = codecvt_base::noconv; > else if (__tlen == 0) > __ret = codecvt_base::ok; > else > __ret = codecvt_base::partial; > } > else > __ret = codecvt_base::error; > } > return __ret; > } > > template<typename _InternT, typename _ExternT> > codecvt_base::result > codecvt<_InternT, _ExternT, __enc_traits>:: > do_in(state_type& __state, const extern_type* __from, > const extern_type* __from_end, const extern_type*& __from_next, > intern_type* __to, intern_type* __to_end, > intern_type*& __to_next) const > { > result __ret = codecvt_base::error; > if (__state._M_good()) > { > typedef state_type::__desc_type __desc_type; > const __desc_type* __desc = __state._M_get_in_descriptor(); > const size_t __fmultiple = sizeof(extern_type); > size_t __flen = __fmultiple * (__from_end - __from); > const size_t __tmultiple = sizeof(intern_type); > size_t __tlen = __tmultiple * (__to_end - __to); > > > > char* __cto = reinterpret_cast<char*>(__to); > char* __cfrom; > size_t __conv; > > > > > > > int __ext_bom = __state._M_get_external_bom(); > if (__ext_bom) > { > size_t __size = __from_end - __from; > extern_type* __cfixed = static_cast<extern_type*>(__builtin_alloca(sizeof(extern_type) * (__size + 1))); > __cfixed[0] = static_cast<extern_type>(__ext_bom); > char_traits<extern_type>::copy(__cfixed + 1, __from, __size); > __cfrom = reinterpret_cast<char*>(__cfixed); > __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, > &__flen, &__cto, &__tlen); > } > else > { > extern_type* __cfixed = const_cast<extern_type*>(__from); > __cfrom = reinterpret_cast<char*>(__cfixed); > __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, > &__flen, &__cto, &__tlen); > } > > > if (__conv != size_t(-1)) > { > __from_next = reinterpret_cast<const extern_type*>(__cfrom); > __to_next = reinterpret_cast<intern_type*>(__cto); > __ret = codecvt_base::ok; > } > else > { > if (__flen < static_cast<size_t>(__from_end - __from)) > { > __from_next = reinterpret_cast<const extern_type*>(__cfrom); > __to_next = reinterpret_cast<intern_type*>(__cto); > __ret = codecvt_base::partial; > } > else > __ret = codecvt_base::error; > } > } > return __ret; > } > > template<typename _InternT, typename _ExternT> > int > codecvt<_InternT, _ExternT, __enc_traits>:: > do_encoding() const throw() > { > int __ret = 0; > if (sizeof(_ExternT) <= sizeof(_InternT)) > __ret = sizeof(_InternT)/sizeof(_ExternT); > return __ret; > } > > template<typename _InternT, typename _ExternT> > bool > codecvt<_InternT, _ExternT, __enc_traits>:: > do_always_noconv() const throw() > { return false; } > > template<typename _InternT, typename _ExternT> > int > codecvt<_InternT, _ExternT, __enc_traits>:: > do_length(state_type&, const extern_type* __from, > const extern_type* __end, size_t __max) const > { return std::min(__max, static_cast<size_t>(__end - __from)); } > > > > template<typename _InternT, typename _ExternT> > int > codecvt<_InternT, _ExternT, __enc_traits>:: > do_max_length() const throw() > { return 1; } ># 476 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/codecvt.h" 2 3 ># 1538 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 2 3 > > > class __num_base > { > public: > > > enum > { > _S_ominus, > _S_oplus, > _S_ox, > _S_oX, > _S_odigits, > _S_odigits_end = _S_odigits + 16, > _S_oudigits = _S_odigits_end, > _S_oudigits_end = _S_oudigits + 16, > _S_oe = _S_odigits + 14, > _S_oE = _S_oudigits + 14, > _S_oend = _S_oudigits_end > }; > > > > > > > static const char* _S_atoms_out; > > > > static const char* _S_atoms_in; > > enum > { > _S_iminus, > _S_iplus, > _S_ix, > _S_iX, > _S_izero, > _S_ie = _S_izero + 14, > _S_iE = _S_izero + 20, > _S_iend = 26 > }; > > > > static void > _S_format_float(const ios_base& __io, char* __fptr, char __mod); > }; > > template<typename _CharT> > struct __numpunct_cache : public locale::facet > { > const char* _M_grouping; > size_t _M_grouping_size; > bool _M_use_grouping; > const _CharT* _M_truename; > size_t _M_truename_size; > const _CharT* _M_falsename; > size_t _M_falsename_size; > _CharT _M_decimal_point; > _CharT _M_thousands_sep; > > > > > > _CharT _M_atoms_out[__num_base::_S_oend]; > > > > > > _CharT _M_atoms_in[__num_base::_S_iend]; > > bool _M_allocated; > > __numpunct_cache(size_t __refs = 0) : facet(__refs), > _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false), > _M_truename(__null), _M_truename_size(0), _M_falsename(__null), > _M_falsename_size(0), _M_decimal_point(_CharT()), > _M_thousands_sep(_CharT()), _M_allocated(false) > { } > > ~__numpunct_cache(); > > void > _M_cache(const locale& __loc); > > private: > __numpunct_cache& > operator=(const __numpunct_cache&); > > explicit > __numpunct_cache(const __numpunct_cache&); > }; > > template<typename _CharT> > __numpunct_cache<_CharT>::~__numpunct_cache() > { > if (_M_allocated) > { > delete [] _M_grouping; > delete [] _M_truename; > delete [] _M_falsename; > } > } ># 1660 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT> > class numpunct : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > typedef __numpunct_cache<_CharT> __cache_type; > > protected: > __cache_type* _M_data; > > public: > > static locale::id id; > > > > > > > explicit > numpunct(size_t __refs = 0) : facet(__refs), _M_data(__null) > { _M_initialize_numpunct(); } ># 1697 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > numpunct(__cache_type* __cache, size_t __refs = 0) > : facet(__refs), _M_data(__cache) > { _M_initialize_numpunct(); } ># 1711 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > numpunct(__c_locale __cloc, size_t __refs = 0) > : facet(__refs), _M_data(__null) > { _M_initialize_numpunct(__cloc); } ># 1725 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > decimal_point() const > { return this->do_decimal_point(); } ># 1738 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > thousands_sep() const > { return this->do_thousands_sep(); } ># 1769 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string > grouping() const > { return this->do_grouping(); } ># 1782 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > truename() const > { return this->do_truename(); } ># 1795 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > falsename() const > { return this->do_falsename(); } > > protected: > > virtual > ~numpunct(); ># 1812 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_decimal_point() const > { return _M_data->_M_decimal_point; } ># 1824 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_thousands_sep() const > { return _M_data->_M_thousands_sep; } ># 1837 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string > do_grouping() const > { return _M_data->_M_grouping; } ># 1850 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_truename() const > { return _M_data->_M_truename; } ># 1863 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_falsename() const > { return _M_data->_M_falsename; } > > > void > _M_initialize_numpunct(__c_locale __cloc = __null); > }; > > template<typename _CharT> > locale::id numpunct<_CharT>::id; > > template<> > numpunct<char>::~numpunct(); > > template<> > void > numpunct<char>::_M_initialize_numpunct(__c_locale __cloc); > > > template<> > numpunct<wchar_t>::~numpunct(); > > template<> > void > numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc); > > > template<typename _CharT> > class numpunct_byname : public numpunct<_CharT> > { > public: > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > explicit > numpunct_byname(const char* __s, size_t __refs = 0) > : numpunct<_CharT>(__refs) > { > if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) > { > __c_locale __tmp; > this->_S_create_c_locale(__tmp, __s); > this->_M_initialize_numpunct(__tmp); > this->_S_destroy_c_locale(__tmp); > } > } > > protected: > virtual > ~numpunct_byname() { } > }; ># 1928 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT, typename _InIter> > class num_get : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _InIter iter_type; > > > > static locale::id id; ># 1949 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > num_get(size_t __refs = 0) : facet(__refs) { } ># 1975 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, bool& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } ># 2011 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned short& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned int& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } ># 2070 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, float& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, double& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long double& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } ># 2112 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, void*& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > protected: > > virtual ~num_get() { } > > iter_type > _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, > string& __xtrc) const; > > template<typename _ValueT> > iter_type > _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, > _ValueT& __v) const; ># 2145 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned short&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned int&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned long&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > long long&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned long long&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > float&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > double&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > long double&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > void*&) const; > > }; > > template<typename _CharT, typename _InIter> > locale::id num_get<_CharT, _InIter>::id; ># 2207 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT, typename _OutIter> > class num_put : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _OutIter iter_type; > > > > static locale::id id; ># 2228 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > num_put(size_t __refs = 0) : facet(__refs) { } ># 2246 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const > { return this->do_put(__s, __f, __fill, __v); } ># 2288 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, long __v) const > { return this->do_put(__s, __f, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > unsigned long __v) const > { return this->do_put(__s, __f, __fill, __v); } > > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const > { return this->do_put(__s, __f, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > unsigned long long __v) const > { return this->do_put(__s, __f, __fill, __v); } ># 2351 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, double __v) const > { return this->do_put(__s, __f, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > long double __v) const > { return this->do_put(__s, __f, __fill, __v); } ># 2376 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > const void* __v) const > { return this->do_put(__s, __f, __fill, __v); } > > protected: > template<typename _ValueT> > iter_type > _M_insert_float(iter_type, ios_base& __io, char_type __fill, > char __mod, _ValueT __v) const; > > void > _M_group_float(const char* __grouping, size_t __grouping_size, > char_type __sep, const char_type* __p, char_type* __new, > char_type* __cs, int& __len) const; > > template<typename _ValueT> > iter_type > _M_insert_int(iter_type, ios_base& __io, char_type __fill, > _ValueT __v) const; > > void > _M_group_int(const char* __grouping, size_t __grouping_size, > char_type __sep, ios_base& __io, char_type* __new, > char_type* __cs, int& __len) const; > > void > _M_pad(char_type __fill, streamsize __w, ios_base& __io, > char_type* __new, const char_type* __cs, int& __len) const; > > > virtual > ~num_put() { }; ># 2424 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, bool __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, long __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, unsigned long) const; > > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, long long __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const; > > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, double __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, long double __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, const void* __v) const; > > }; > > template <typename _CharT, typename _OutIter> > locale::id num_put<_CharT, _OutIter>::id; ># 2468 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT> > class collate : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > protected: > > > __c_locale _M_c_locale_collate; > > public: > > static locale::id id; ># 2495 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > collate(size_t __refs = 0) > : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) > { } ># 2509 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > collate(__c_locale __cloc, size_t __refs = 0) > : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) > { } ># 2526 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > int > compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const > { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } ># 2545 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > transform(const _CharT* __lo, const _CharT* __hi) const > { return this->do_transform(__lo, __hi); } ># 2559 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > long > hash(const _CharT* __lo, const _CharT* __hi) const > { return this->do_hash(__lo, __hi); } > > > int > _M_compare(const _CharT*, const _CharT*) const; > > size_t > _M_transform(_CharT*, const _CharT*, size_t) const; > > protected: > > virtual > ~collate() > { _S_destroy_c_locale(_M_c_locale_collate); } ># 2588 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual int > do_compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const; ># 2604 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_transform(const _CharT* __lo, const _CharT* __hi) const; ># 2617 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual long > do_hash(const _CharT* __lo, const _CharT* __hi) const; > }; > > template<typename _CharT> > locale::id collate<_CharT>::id; > > > template<> > int > collate<char>::_M_compare(const char*, const char*) const; > > template<> > size_t > collate<char>::_M_transform(char*, const char*, size_t) const; > > > template<> > int > collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const; > > template<> > size_t > collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const; > > > template<typename _CharT> > class collate_byname : public collate<_CharT> > { > public: > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > explicit > collate_byname(const char* __s, size_t __refs = 0) > : collate<_CharT>(__refs) > { > if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) > { > this->_S_destroy_c_locale(this->_M_c_locale_collate); > this->_S_create_c_locale(this->_M_c_locale_collate, __s); > } > } > > protected: > virtual > ~collate_byname() { } > }; ># 2676 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > class time_base > { > public: > enum dateorder { no_order, dmy, mdy, ymd, ydm }; > }; > > template<typename _CharT> > struct __timepunct_cache : public locale::facet > { > > static const _CharT* _S_timezones[14]; > > const _CharT* _M_date_format; > const _CharT* _M_date_era_format; > const _CharT* _M_time_format; > const _CharT* _M_time_era_format; > const _CharT* _M_date_time_format; > const _CharT* _M_date_time_era_format; > const _CharT* _M_am; > const _CharT* _M_pm; > const _CharT* _M_am_pm_format; > > > const _CharT* _M_day1; > const _CharT* _M_day2; > const _CharT* _M_day3; > const _CharT* _M_day4; > const _CharT* _M_day5; > const _CharT* _M_day6; > const _CharT* _M_day7; > > > const _CharT* _M_aday1; > const _CharT* _M_aday2; > const _CharT* _M_aday3; > const _CharT* _M_aday4; > const _CharT* _M_aday5; > const _CharT* _M_aday6; > const _CharT* _M_aday7; > > > const _CharT* _M_month01; > const _CharT* _M_month02; > const _CharT* _M_month03; > const _CharT* _M_month04; > const _CharT* _M_month05; > const _CharT* _M_month06; > const _CharT* _M_month07; > const _CharT* _M_month08; > const _CharT* _M_month09; > const _CharT* _M_month10; > const _CharT* _M_month11; > const _CharT* _M_month12; > > > const _CharT* _M_amonth01; > const _CharT* _M_amonth02; > const _CharT* _M_amonth03; > const _CharT* _M_amonth04; > const _CharT* _M_amonth05; > const _CharT* _M_amonth06; > const _CharT* _M_amonth07; > const _CharT* _M_amonth08; > const _CharT* _M_amonth09; > const _CharT* _M_amonth10; > const _CharT* _M_amonth11; > const _CharT* _M_amonth12; > > bool _M_allocated; > > __timepunct_cache(size_t __refs = 0) : facet(__refs), > _M_date_format(__null), _M_date_era_format(__null), _M_time_format(__null), > _M_time_era_format(__null), _M_date_time_format(__null), > _M_date_time_era_format(__null), _M_am(__null), _M_pm(__null), > _M_am_pm_format(__null), _M_day1(__null), _M_day2(__null), _M_day3(__null), > _M_day4(__null), _M_day5(__null), _M_day6(__null), _M_day7(__null), > _M_aday1(__null), _M_aday2(__null), _M_aday3(__null), _M_aday4(__null), > _M_aday5(__null), _M_aday6(__null), _M_aday7(__null), _M_month01(__null), > _M_month02(__null), _M_month03(__null), _M_month04(__null), _M_month05(__null), > _M_month06(__null), _M_month07(__null), _M_month08(__null), _M_month09(__null), > _M_month10(__null), _M_month11(__null), _M_month12(__null), _M_amonth01(__null), > _M_amonth02(__null), _M_amonth03(__null), _M_amonth04(__null), > _M_amonth05(__null), _M_amonth06(__null), _M_amonth07(__null), > _M_amonth08(__null), _M_amonth09(__null), _M_amonth10(__null), > _M_amonth11(__null), _M_amonth12(__null), _M_allocated(false) > { } > > ~__timepunct_cache(); > > void > _M_cache(const locale& __loc); > > private: > __timepunct_cache& > operator=(const __timepunct_cache&); > > explicit > __timepunct_cache(const __timepunct_cache&); > }; > > template<typename _CharT> > __timepunct_cache<_CharT>::~__timepunct_cache() > { > if (_M_allocated) > { > > } > } > > > template<> > const char* > __timepunct_cache<char>::_S_timezones[14]; > > > template<> > const wchar_t* > __timepunct_cache<wchar_t>::_S_timezones[14]; > > > > template<typename _CharT> > const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; > > template<typename _CharT> > class __timepunct : public locale::facet > { > public: > > typedef _CharT __char_type; > typedef basic_string<_CharT> __string_type; > typedef __timepunct_cache<_CharT> __cache_type; > > protected: > __cache_type* _M_data; > __c_locale _M_c_locale_timepunct; > const char* _M_name_timepunct; > > public: > > static locale::id id; > > explicit > __timepunct(size_t __refs = 0); > > explicit > __timepunct(__cache_type* __cache, size_t __refs = 0); ># 2834 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0); > > void > _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format, > const tm* __tm) const; > > void > _M_date_formats(const _CharT** __date) const > { > > __date[0] = _M_data->_M_date_format; > __date[1] = _M_data->_M_date_era_format; > } > > void > _M_time_formats(const _CharT** __time) const > { > > __time[0] = _M_data->_M_time_format; > __time[1] = _M_data->_M_time_era_format; > } > > void > _M_date_time_formats(const _CharT** __dt) const > { > > __dt[0] = _M_data->_M_date_time_format; > __dt[1] = _M_data->_M_date_time_era_format; > } > > void > _M_am_pm_format(const _CharT* __ampm) const > { __ampm = _M_data->_M_am_pm_format; } > > void > _M_am_pm(const _CharT** __ampm) const > { > __ampm[0] = _M_data->_M_am; > __ampm[1] = _M_data->_M_pm; > } > > void > _M_days(const _CharT** __days) const > { > __days[0] = _M_data->_M_day1; > __days[1] = _M_data->_M_day2; > __days[2] = _M_data->_M_day3; > __days[3] = _M_data->_M_day4; > __days[4] = _M_data->_M_day5; > __days[5] = _M_data->_M_day6; > __days[6] = _M_data->_M_day7; > } > > void > _M_days_abbreviated(const _CharT** __days) const > { > __days[0] = _M_data->_M_aday1; > __days[1] = _M_data->_M_aday2; > __days[2] = _M_data->_M_aday3; > __days[3] = _M_data->_M_aday4; > __days[4] = _M_data->_M_aday5; > __days[5] = _M_data->_M_aday6; > __days[6] = _M_data->_M_aday7; > } > > void > _M_months(const _CharT** __months) const > { > __months[0] = _M_data->_M_month01; > __months[1] = _M_data->_M_month02; > __months[2] = _M_data->_M_month03; > __months[3] = _M_data->_M_month04; > __months[4] = _M_data->_M_month05; > __months[5] = _M_data->_M_month06; > __months[6] = _M_data->_M_month07; > __months[7] = _M_data->_M_month08; > __months[8] = _M_data->_M_month09; > __months[9] = _M_data->_M_month10; > __months[10] = _M_data->_M_month11; > __months[11] = _M_data->_M_month12; > } > > void > _M_months_abbreviated(const _CharT** __months) const > { > __months[0] = _M_data->_M_amonth01; > __months[1] = _M_data->_M_amonth02; > __months[2] = _M_data->_M_amonth03; > __months[3] = _M_data->_M_amonth04; > __months[4] = _M_data->_M_amonth05; > __months[5] = _M_data->_M_amonth06; > __months[6] = _M_data->_M_amonth07; > __months[7] = _M_data->_M_amonth08; > __months[8] = _M_data->_M_amonth09; > __months[9] = _M_data->_M_amonth10; > __months[10] = _M_data->_M_amonth11; > __months[11] = _M_data->_M_amonth12; > } > > protected: > virtual > ~__timepunct(); > > > void > _M_initialize_timepunct(__c_locale __cloc = __null); > }; > > template<typename _CharT> > locale::id __timepunct<_CharT>::id; > > > template<> > void > __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc); > > template<> > void > __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const; > > > template<> > void > __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc); > > template<> > void > __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*, > const tm*) const; > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/time_members.h" 1 3 ># 37 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/time_members.h" 3 > template<typename _CharT> > __timepunct<_CharT>::__timepunct(size_t __refs) > : facet(__refs), _M_data(__null), _M_c_locale_timepunct(__null), > _M_name_timepunct(_S_get_c_name()) > { _M_initialize_timepunct(); } > > template<typename _CharT> > __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) > : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(__null), > _M_name_timepunct(_S_get_c_name()) > { _M_initialize_timepunct(); } > > template<typename _CharT> > __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, > size_t __refs) > : facet(__refs), _M_data(__null), _M_c_locale_timepunct(__null), > _M_name_timepunct(__s) > { > char* __tmp = new char[std::strlen(__s) + 1]; > std::strcpy(__tmp, __s); > _M_name_timepunct = __tmp; > _M_initialize_timepunct(__cloc); > } > > template<typename _CharT> > __timepunct<_CharT>::~__timepunct() > { > if (_M_name_timepunct != _S_get_c_name()) > delete [] _M_name_timepunct; > delete _M_data; > _S_destroy_c_locale(_M_c_locale_timepunct); > } ># 2968 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 2 3 ># 2981 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT, typename _InIter> > class time_get : public locale::facet, public time_base > { > public: > > > > typedef _CharT char_type; > typedef _InIter iter_type; > > typedef basic_string<_CharT> __string_type; > > > static locale::id id; ># 3003 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > time_get(size_t __refs = 0) > : facet (__refs) { } ># 3020 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > dateorder > date_order() const > { return this->do_date_order(); } ># 3044 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get_time(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { return this->do_get_time(__beg, __end, __io, __err, __tm); } ># 3069 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get_date(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { return this->do_get_date(__beg, __end, __io, __err, __tm); } ># 3097 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get_weekday(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } ># 3126 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get_monthname(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } ># 3152 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get_year(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { return this->do_get_year(__beg, __end, __io, __err, __tm); } > > protected: > > virtual > ~time_get() { } ># 3172 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual dateorder > do_date_order() const; ># 3190 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get_time(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const; ># 3209 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get_date(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const; ># 3228 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get_weekday(iter_type __beg, iter_type __end, ios_base&, > ios_base::iostate& __err, tm* __tm) const; ># 3247 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get_monthname(iter_type __beg, iter_type __end, ios_base&, > ios_base::iostate& __err, tm* __tm) const; ># 3266 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get_year(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const; > > > iter_type > _M_extract_num(iter_type __beg, iter_type __end, int& __member, > int __min, int __max, size_t __len, > ios_base& __io, ios_base::iostate& __err) const; > > > > iter_type > _M_extract_name(iter_type __beg, iter_type __end, int& __member, > const _CharT** __names, size_t __indexlen, > ios_base& __io, ios_base::iostate& __err) const; > > > iter_type > _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm, > const _CharT* __format) const; > }; > > template<typename _CharT, typename _InIter> > locale::id time_get<_CharT, _InIter>::id; > > template<typename _CharT, typename _InIter> > class time_get_byname : public time_get<_CharT, _InIter> > { > public: > > typedef _CharT char_type; > typedef _InIter iter_type; > > explicit > time_get_byname(const char*, size_t __refs = 0) > : time_get<_CharT, _InIter>(__refs) { } > > protected: > virtual > ~time_get_byname() { } > }; ># 3321 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT, typename _OutIter> > class time_put : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _OutIter iter_type; > > > > static locale::id id; ># 3342 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > time_put(size_t __refs = 0) > : facet(__refs) { } ># 3361 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, > const _CharT* __beg, const _CharT* __end) const; ># 3381 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, > const tm* __tm, char __format, char __mod = 0) const > { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } > > protected: > > virtual > ~time_put() > { } ># 3408 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, > char __format, char __mod) const; > }; > > template<typename _CharT, typename _OutIter> > locale::id time_put<_CharT, _OutIter>::id; > > template<typename _CharT, typename _OutIter> > class time_put_byname : public time_put<_CharT, _OutIter> > { > public: > > typedef _CharT char_type; > typedef _OutIter iter_type; > > explicit > time_put_byname(const char*, size_t __refs = 0) > : time_put<_CharT, _OutIter>(__refs) > { }; > > protected: > virtual > ~time_put_byname() { } > }; ># 3445 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > class money_base > { > public: > enum part { none, space, symbol, sign, value }; > struct pattern { char field[4]; }; > > static const pattern _S_default_pattern; > > enum > { > _S_minus, > _S_zero, > _S_end = 11 > }; > > > > static const char* _S_atoms; > > > > static pattern > _S_construct_pattern(char __precedes, char __space, char __posn); > }; > > template<typename _CharT, bool _Intl> > struct __moneypunct_cache : public locale::facet > { > const char* _M_grouping; > size_t _M_grouping_size; > bool _M_use_grouping; > _CharT _M_decimal_point; > _CharT _M_thousands_sep; > const _CharT* _M_curr_symbol; > size_t _M_curr_symbol_size; > const _CharT* _M_positive_sign; > size_t _M_positive_sign_size; > const _CharT* _M_negative_sign; > size_t _M_negative_sign_size; > int _M_frac_digits; > money_base::pattern _M_pos_format; > money_base::pattern _M_neg_format; > > > > > _CharT _M_atoms[money_base::_S_end]; > > bool _M_allocated; > > __moneypunct_cache(size_t __refs = 0) : facet(__refs), > _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false), > _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), > _M_curr_symbol(__null), _M_curr_symbol_size(0), > _M_positive_sign(__null), _M_positive_sign_size(0), > _M_negative_sign(__null), _M_negative_sign_size(0), > _M_frac_digits(0), > _M_pos_format(money_base::pattern()), > _M_neg_format(money_base::pattern()), _M_allocated(false) > { } > > ~__moneypunct_cache(); > > void > _M_cache(const locale& __loc); > > private: > __moneypunct_cache& > operator=(const __moneypunct_cache&); > > explicit > __moneypunct_cache(const __moneypunct_cache&); > }; > > template<typename _CharT, bool _Intl> > __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache() > { > if (_M_allocated) > { > delete [] _M_grouping; > delete [] _M_curr_symbol; > delete [] _M_positive_sign; > delete [] _M_negative_sign; > } > } > > > > > > > > template<typename _CharT, bool _Intl> > class moneypunct : public locale::facet, public money_base > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > typedef __moneypunct_cache<_CharT, _Intl> __cache_type; > > private: > __cache_type* _M_data; > > public: > > > static const bool intl = _Intl; > > static locale::id id; ># 3566 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > moneypunct(size_t __refs = 0) : facet(__refs), _M_data(__null) > { _M_initialize_moneypunct(); } ># 3578 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > moneypunct(__cache_type* __cache, size_t __refs = 0) > : facet(__refs), _M_data(__cache) > { _M_initialize_moneypunct(); } ># 3593 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0) > : facet(__refs), _M_data(__null) > { _M_initialize_moneypunct(__cloc, __s); } ># 3607 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > decimal_point() const > { return this->do_decimal_point(); } ># 3620 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > char_type > thousands_sep() const > { return this->do_thousands_sep(); } ># 3649 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string > grouping() const > { return this->do_grouping(); } ># 3662 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > curr_symbol() const > { return this->do_curr_symbol(); } ># 3679 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > positive_sign() const > { return this->do_positive_sign(); } ># 3696 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > negative_sign() const > { return this->do_negative_sign(); } ># 3712 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > int > frac_digits() const > { return this->do_frac_digits(); } ># 3747 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > pattern > pos_format() const > { return this->do_pos_format(); } > > pattern > neg_format() const > { return this->do_neg_format(); } > > > protected: > > virtual > ~moneypunct(); ># 3769 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_decimal_point() const > { return _M_data->_M_decimal_point; } ># 3781 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual char_type > do_thousands_sep() const > { return _M_data->_M_thousands_sep; } ># 3794 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string > do_grouping() const > { return _M_data->_M_grouping; } ># 3807 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_curr_symbol() const > { return _M_data->_M_curr_symbol; } ># 3820 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_positive_sign() const > { return _M_data->_M_positive_sign; } ># 3833 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_negative_sign() const > { return _M_data->_M_negative_sign; } ># 3847 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual int > do_frac_digits() const > { return _M_data->_M_frac_digits; } ># 3861 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual pattern > do_pos_format() const > { return _M_data->_M_pos_format; } ># 3875 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual pattern > do_neg_format() const > { return _M_data->_M_neg_format; } > > > void > _M_initialize_moneypunct(__c_locale __cloc = __null, > const char* __name = __null); > }; > > template<typename _CharT, bool _Intl> > locale::id moneypunct<_CharT, _Intl>::id; > > template<typename _CharT, bool _Intl> > const bool moneypunct<_CharT, _Intl>::intl; > > template<> > moneypunct<char, true>::~moneypunct(); > > template<> > moneypunct<char, false>::~moneypunct(); > > template<> > void > moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*); > > template<> > void > moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*); > > > template<> > moneypunct<wchar_t, true>::~moneypunct(); > > template<> > moneypunct<wchar_t, false>::~moneypunct(); > > template<> > void > moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale, > const char*); > > template<> > void > moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale, > const char*); > > > template<typename _CharT, bool _Intl> > class moneypunct_byname : public moneypunct<_CharT, _Intl> > { > public: > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > static const bool intl = _Intl; > > explicit > moneypunct_byname(const char* __s, size_t __refs = 0) > : moneypunct<_CharT, _Intl>(__refs) > { > if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) > { > __c_locale __tmp; > this->_S_create_c_locale(__tmp, __s); > this->_M_initialize_moneypunct(__tmp); > this->_S_destroy_c_locale(__tmp); > } > } > > protected: > virtual > ~moneypunct_byname() { } > }; > > template<typename _CharT, bool _Intl> > const bool moneypunct_byname<_CharT, _Intl>::intl; ># 3965 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT, typename _InIter> > class money_get : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _InIter iter_type; > typedef basic_string<_CharT> string_type; > > > > static locale::id id; ># 3987 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > money_get(size_t __refs = 0) : facet(__refs) { } ># 4017 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, > ios_base::iostate& __err, long double& __units) const > { return this->do_get(__s, __end, __intl, __io, __err, __units); } ># 4047 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, > ios_base::iostate& __err, string_type& __digits) const > { return this->do_get(__s, __end, __intl, __io, __err, __digits); } > > protected: > > virtual > ~money_get() { } ># 4064 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, > ios_base::iostate& __err, long double& __units) const; ># 4075 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, > ios_base::iostate& __err, string_type& __digits) const; > > template<bool _Intl> > iter_type > _M_extract(iter_type __s, iter_type __end, ios_base& __io, > ios_base::iostate& __err, string& __digits) const; > }; > > template<typename _CharT, typename _InIter> > locale::id money_get<_CharT, _InIter>::id; ># 4100 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT, typename _OutIter> > class money_put : public locale::facet > { > public: > > > typedef _CharT char_type; > typedef _OutIter iter_type; > typedef basic_string<_CharT> string_type; > > > > static locale::id id; ># 4121 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > money_put(size_t __refs = 0) : facet(__refs) { } ># 4141 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, bool __intl, ios_base& __io, > char_type __fill, long double __units) const > { return this->do_put(__s, __intl, __io, __fill, __units); } ># 4163 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, bool __intl, ios_base& __io, > char_type __fill, const string_type& __digits) const > { return this->do_put(__s, __intl, __io, __fill, __digits); } > > protected: > > virtual > ~money_put() { } ># 4191 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, > long double __units) const; ># 4213 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual iter_type > do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, > const string_type& __digits) const; > > template<bool _Intl> > iter_type > _M_insert(iter_type __s, ios_base& __io, char_type __fill, > const string_type& __digits) const; > }; > > template<typename _CharT, typename _OutIter> > locale::id money_put<_CharT, _OutIter>::id; > > > > > struct messages_base > { > typedef int catalog; > }; ># 4254 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT> > class messages : public locale::facet, public messages_base > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > protected: > > > __c_locale _M_c_locale_messages; > const char* _M_name_messages; > > public: > > static locale::id id; ># 4282 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > messages(size_t __refs = 0); ># 4296 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > explicit > messages(__c_locale __cloc, const char* __s, size_t __refs = 0); ># 4309 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > catalog > open(const basic_string<char>& __s, const locale& __loc) const > { return this->do_open(__s, __loc); } ># 4327 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > catalog > open(const basic_string<char>&, const locale&, const char*) const; ># 4345 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > string_type > get(catalog __c, int __set, int __msgid, const string_type& __s) const > { return this->do_get(__c, __set, __msgid, __s); } ># 4356 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > void > close(catalog __c) const > { return this->do_close(__c); } > > protected: > > virtual > ~messages(); ># 4376 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual catalog > do_open(const basic_string<char>&, const locale&) const; ># 4395 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > virtual string_type > do_get(catalog, int, int, const string_type& __dfault) const; > > > > > > > virtual void > do_close(catalog) const; > > > char* > _M_convert_to_char(const string_type& __msg) const > { > > return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str())); > } > > > string_type > _M_convert_from_char(char*) const > { ># 4452 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > return string_type(); > } > }; > > template<typename _CharT> > locale::id messages<_CharT>::id; > > > template<> > string > messages<char>::do_get(catalog, int, int, const string&) const; > > > template<> > wstring > messages<wchar_t>::do_get(catalog, int, int, const wstring&) const; > > > template<typename _CharT> > class messages_byname : public messages<_CharT> > { > public: > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > explicit > messages_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~messages_byname() > { } > }; > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/messages_members.h" 1 3 ># 37 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/i686-pc-linux-gnu/bits/messages_members.h" 3 > template<typename _CharT> > messages<_CharT>::messages(size_t __refs) > : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), > _M_name_messages(_S_get_c_name()) > { } > > template<typename _CharT> > messages<_CharT>::messages(__c_locale __cloc, const char* __s, > size_t __refs) > : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), > _M_name_messages(__s) > { > char* __tmp = new char[std::strlen(__s) + 1]; > std::strcpy(__tmp, __s); > _M_name_messages = __tmp; > } > > template<typename _CharT> > typename messages<_CharT>::catalog > messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, > const char* __dir) const > { > bindtextdomain(__s.c_str(), __dir); > return this->do_open(__s, __loc); > } > > > template<typename _CharT> > messages<_CharT>::~messages() > { > if (_M_name_messages != _S_get_c_name()) > delete [] _M_name_messages; > _S_destroy_c_locale(_M_c_locale_messages); > } > > template<typename _CharT> > typename messages<_CharT>::catalog > messages<_CharT>::do_open(const basic_string<char>& __s, > const locale&) const > { > > > textdomain(__s.c_str()); > return 0; > } > > template<typename _CharT> > void > messages<_CharT>::do_close(catalog) const > { } > > > template<typename _CharT> > messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) > : messages<_CharT>(__refs) > { > if (this->_M_name_messages != locale::facet::_S_get_c_name()) > delete [] this->_M_name_messages; > char* __tmp = new char[std::strlen(__s) + 1]; > std::strcpy(__tmp, __s); > this->_M_name_messages = __tmp; > > if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) > { > this->_S_destroy_c_locale(this->_M_c_locale_messages); > this->_S_create_c_locale(this->_M_c_locale_messages, __s); > } > } ># 4488 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 2 3 ># 4496 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.h" 3 > template<typename _CharT> > inline bool > isspace(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); } > > template<typename _CharT> > inline bool > isprint(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); } > > template<typename _CharT> > inline bool > iscntrl(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); } > > template<typename _CharT> > inline bool > isupper(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); } > > template<typename _CharT> > inline bool islower(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); } > > template<typename _CharT> > inline bool > isalpha(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); } > > template<typename _CharT> > inline bool > isdigit(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); } > > template<typename _CharT> > inline bool > ispunct(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); } > > template<typename _CharT> > inline bool > isxdigit(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); } > > template<typename _CharT> > inline bool > isalnum(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); } > > template<typename _CharT> > inline bool > isgraph(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); } > > template<typename _CharT> > inline _CharT > toupper(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).toupper(__c); } > > template<typename _CharT> > inline _CharT > tolower(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).tolower(__c); } > >} ># 45 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 2 3 > >namespace std >{ > > > > > > > > template<typename _CharT, typename _Traits> > class basic_ios : public ios_base > { > public: > > > > > > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; ># 78 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > typedef ctype<_CharT> __ctype_type; > typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > > __num_put_type; > typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > > __num_get_type; > > > > protected: > basic_ostream<_CharT, _Traits>* _M_tie; > mutable char_type _M_fill; > mutable bool _M_fill_init; > basic_streambuf<_CharT, _Traits>* _M_streambuf; > > > const __ctype_type* _M_ctype; > > const __num_put_type* _M_num_put; > > const __num_get_type* _M_num_get; > > public: > > > > > > > > operator void*() const > { return this->fail() ? 0 : const_cast<basic_ios*>(this); } > > bool > operator!() const > { return this->fail(); } ># 122 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > iostate > rdstate() const > { return _M_streambuf_state; } ># 133 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > void > clear(iostate __state = goodbit); > > > > > > > > void > setstate(iostate __state) > { this->clear(this->rdstate() | __state); } > > > > > void > _M_setstate(iostate __state) > { > > > _M_streambuf_state |= __state; > if (this->exceptions() & __state) > throw; > } > > > > > > > > bool > good() const > { return this->rdstate() == 0; } > > > > > > > > bool > eof() const > { return (this->rdstate() & eofbit) != 0; } ># 186 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > bool > fail() const > { return (this->rdstate() & (badbit | failbit)) != 0; } > > > > > > > > bool > bad() const > { return (this->rdstate() & badbit) != 0; } ># 207 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > iostate > exceptions() const > { return _M_exception; } ># 242 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > void > exceptions(iostate __except) > { > _M_exception = __except; > this->clear(_M_streambuf_state); > } > > > > > > > > explicit > basic_ios(basic_streambuf<_CharT, _Traits>* __sb) > : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), > _M_ctype(0), _M_num_put(0), _M_num_get(0) > { this->init(__sb); } > > > > > > > > virtual > ~basic_ios() { } ># 280 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > basic_ostream<_CharT, _Traits>* > tie() const > { return _M_tie; } ># 292 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > basic_ostream<_CharT, _Traits>* > tie(basic_ostream<_CharT, _Traits>* __tiestr) > { > basic_ostream<_CharT, _Traits>* __old = _M_tie; > _M_tie = __tiestr; > return __old; > } > > > > > > > > basic_streambuf<_CharT, _Traits>* > rdbuf() const > { return _M_streambuf; } ># 332 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > basic_streambuf<_CharT, _Traits>* > rdbuf(basic_streambuf<_CharT, _Traits>* __sb); ># 346 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > basic_ios& > copyfmt(const basic_ios& __rhs); > > > > > > > > char_type > fill() const > { > if (!_M_fill_init) > { > _M_fill = this->widen(' '); > _M_fill_init = true; > } > return _M_fill; > } ># 375 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > char_type > fill(char_type __ch) > { > char_type __old = this->fill(); > _M_fill = __ch; > return __old; > } ># 395 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > locale > imbue(const locale& __loc); ># 415 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > char > narrow(char_type __c, char __dfault) const; ># 433 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 3 > char_type > widen(char __c) const; > > protected: > > > > > > > > basic_ios() > : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), > _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) > { } > > > > > > > > void > init(basic_streambuf<_CharT, _Traits>* __sb); > > void > _M_cache_locale(const locale& __loc); > }; >} > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.tcc" 1 3 ># 33 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.tcc" 3 > ># 34 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.tcc" 3 > >namespace std >{ > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::clear(iostate __state) > { > if (this->rdbuf()) > _M_streambuf_state = __state; > else > _M_streambuf_state = __state | badbit; > if (this->exceptions() & this->rdstate()) > __throw_ios_failure(("basic_ios::clear")); > } > > template<typename _CharT, typename _Traits> > basic_streambuf<_CharT, _Traits>* > basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) > { > basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; > _M_streambuf = __sb; > this->clear(); > return __old; > } > > template<typename _CharT, typename _Traits> > basic_ios<_CharT, _Traits>& > basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) > { > > > if (this != &__rhs) > { > > > > > _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? > _M_local_word : new _Words[__rhs._M_word_size]; > > > _Callback_list* __cb = __rhs._M_callbacks; > if (__cb) > __cb->_M_add_reference(); > _M_call_callbacks(erase_event); > if (_M_word != _M_local_word) > { > delete [] _M_word; > _M_word = 0; > } > _M_dispose_callbacks(); > > > _M_callbacks = __cb; > for (int __i = 0; __i < __rhs._M_word_size; ++__i) > __words[__i] = __rhs._M_word[__i]; > if (_M_word != _M_local_word) > { > delete [] _M_word; > _M_word = 0; > } > _M_word = __words; > _M_word_size = __rhs._M_word_size; > > this->flags(__rhs.flags()); > this->width(__rhs.width()); > this->precision(__rhs.precision()); > this->tie(__rhs.tie()); > this->fill(__rhs.fill()); > _M_ios_locale = __rhs.getloc(); > _M_cache_locale(_M_ios_locale); > > _M_call_callbacks(copyfmt_event); > > > this->exceptions(__rhs.exceptions()); > } > return *this; > } > > template<typename _CharT, typename _Traits> > char > basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const > { return __check_facet(_M_ctype).narrow(__c, __dfault); } > > template<typename _CharT, typename _Traits> > _CharT > basic_ios<_CharT, _Traits>::widen(char __c) const > { return __check_facet(_M_ctype).widen(__c); } > > > template<typename _CharT, typename _Traits> > locale > basic_ios<_CharT, _Traits>::imbue(const locale& __loc) > { > locale __old(this->getloc()); > ios_base::imbue(__loc); > _M_cache_locale(__loc); > if (this->rdbuf() != 0) > this->rdbuf()->pubimbue(__loc); > return __old; > } > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) > { > > ios_base::_M_init(); > > > _M_cache_locale(_M_ios_locale); ># 159 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.tcc" 3 > _M_fill = _CharT(); > _M_fill_init = false; > > _M_tie = 0; > _M_exception = goodbit; > _M_streambuf = __sb; > _M_streambuf_state = __sb ? goodbit : badbit; > } > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) > { > if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) > _M_ctype = &use_facet<__ctype_type>(__loc); > else > _M_ctype = 0; > > if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) > _M_num_put = &use_facet<__num_put_type>(__loc); > else > _M_num_put = 0; > > if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) > _M_num_get = &use_facet<__num_get_type>(__loc); > else > _M_num_get = 0; > } > > > > > > extern template class basic_ios<char>; > > > extern template class basic_ios<wchar_t>; > > >} ># 465 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/basic_ios.h" 2 3 ># 52 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ios" 2 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/limits" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/limits" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/limits" 3 ># 150 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/limits" 3 >namespace std >{ > > > > > > enum float_round_style > { > round_indeterminate = -1, > round_toward_zero = 0, > round_to_nearest = 1, > round_toward_infinity = 2, > round_toward_neg_infinity = 3 > }; > > > > > > > > enum float_denorm_style > { > > denorm_indeterminate = -1, > > denorm_absent = 0, > > denorm_present = 1 > }; ># 192 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/limits" 3 > struct __numeric_limits_base > { > > > static const bool is_specialized = false; > > > > > static const int digits = 0; > > static const int digits10 = 0; > > static const bool is_signed = false; > > > > > > static const bool is_integer = false; > > > > > static const bool is_exact = false; > > > static const int radix = 0; > > > > static const int min_exponent = 0; > > > static const int min_exponent10 = 0; > > > > static const int max_exponent = 0; > > > static const int max_exponent10 = 0; > > > static const bool has_infinity = false; > > > static const bool has_quiet_NaN = false; > > > static const bool has_signaling_NaN = false; > > static const float_denorm_style has_denorm = denorm_absent; > > > static const bool has_denorm_loss = false; > > > > static const bool is_iec559 = false; > > > > static const bool is_bounded = false; > > > > > static const bool is_modulo = false; > > > static const bool traps = false; > > static const bool tinyness_before = false; > > > > static const float_round_style round_style = round_toward_zero; > }; ># 285 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/limits" 3 > template<typename _Tp> > struct numeric_limits : public __numeric_limits_base > { > > > static _Tp min() throw() { return static_cast<_Tp>(0); } > > static _Tp max() throw() { return static_cast<_Tp>(0); } > > > static _Tp epsilon() throw() { return static_cast<_Tp>(0); } > > static _Tp round_error() throw() { return static_cast<_Tp>(0); } > > static _Tp infinity() throw() { return static_cast<_Tp>(0); } > > static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } > > > static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } > > > > static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } > }; > > > > template<> > struct numeric_limits<bool> > { > static const bool is_specialized = true; > > static bool min() throw() > { return false; } > static bool max() throw() > { return true; } > > static const int digits = 1; > static const int digits10 = 0; > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static bool epsilon() throw() > { return false; } > static bool round_error() throw() > { return false; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static bool infinity() throw() > { return false; } > static bool quiet_NaN() throw() > { return false; } > static bool signaling_NaN() throw() > { return false; } > static bool denorm_min() throw() > { return false; } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > > > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<char> > { > static const bool is_specialized = true; > > static char min() throw() > { return (((char)(-1) < 0) ? (char)1 << (sizeof(char) * 8 - ((char)(-1) < 0)) : (char)0); } > static char max() throw() > { return (((char)(-1) < 0) ? ((char)1 << (sizeof(char) * 8 - ((char)(-1) < 0))) - 1 : ~(char)0); } > > static const int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); > static const int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643 / 2136); > static const bool is_signed = ((char)(-1) < 0); > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static char epsilon() throw() > { return 0; } > static char round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static char infinity() throw() > { return char(); } > static char quiet_NaN() throw() > { return char(); } > static char signaling_NaN() throw() > { return char(); } > static char denorm_min() throw() > { return static_cast<char>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<signed char> > { > static const bool is_specialized = true; > > static signed char min() throw() > { return -127 - 1; } > static signed char max() throw() > { return 127; } > > static const int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); > static const int digits10 = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643 / 2136); > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static signed char epsilon() throw() > { return 0; } > static signed char round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static signed char infinity() throw() > { return static_cast<signed char>(0); } > static signed char quiet_NaN() throw() > { return static_cast<signed char>(0); } > static signed char signaling_NaN() throw() > { return static_cast<signed char>(0); } > static signed char denorm_min() throw() > { return static_cast<signed char>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<unsigned char> > { > static const bool is_specialized = true; > > static unsigned char min() throw() > { return 0; } > static unsigned char max() throw() > { return 127 * 2U + 1; } > > static const int digits = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); > static const int digits10 = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643 / 2136); > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static unsigned char epsilon() throw() > { return 0; } > static unsigned char round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned char infinity() throw() > { return static_cast<unsigned char>(0); } > static unsigned char quiet_NaN() throw() > { return static_cast<unsigned char>(0); } > static unsigned char signaling_NaN() throw() > { return static_cast<unsigned char>(0); } > static unsigned char denorm_min() throw() > { return static_cast<unsigned char>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<wchar_t> > { > static const bool is_specialized = true; > > static wchar_t min() throw() > { return (((wchar_t)(-1) < 0) ? (wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) : (wchar_t)0); } > static wchar_t max() throw() > { return (((wchar_t)(-1) < 0) ? ((wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0))) - 1 : ~(wchar_t)0); } > > static const int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); > static const int digits10 = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643 / 2136); > static const bool is_signed = ((wchar_t)(-1) < 0); > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static wchar_t epsilon() throw() > { return 0; } > static wchar_t round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static wchar_t infinity() throw() > { return wchar_t(); } > static wchar_t quiet_NaN() throw() > { return wchar_t(); } > static wchar_t signaling_NaN() throw() > { return wchar_t(); } > static wchar_t denorm_min() throw() > { return wchar_t(); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<short> > { > static const bool is_specialized = true; > > static short min() throw() > { return -32767 - 1; } > static short max() throw() > { return 32767; } > > static const int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); > static const int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643 / 2136); > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static short epsilon() throw() > { return 0; } > static short round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static short infinity() throw() > { return short(); } > static short quiet_NaN() throw() > { return short(); } > static short signaling_NaN() throw() > { return short(); } > static short denorm_min() throw() > { return short(); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<unsigned short> > { > static const bool is_specialized = true; > > static unsigned short min() throw() > { return 0; } > static unsigned short max() throw() > { return 32767 * 2U + 1; } > > static const int digits = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); > static const int digits10 = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643 / 2136); > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static unsigned short epsilon() throw() > { return 0; } > static unsigned short round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned short infinity() throw() > { return static_cast<unsigned short>(0); } > static unsigned short quiet_NaN() throw() > { return static_cast<unsigned short>(0); } > static unsigned short signaling_NaN() throw() > { return static_cast<unsigned short>(0); } > static unsigned short denorm_min() throw() > { return static_cast<unsigned short>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<int> > { > static const bool is_specialized = true; > > static int min() throw() > { return -2147483647 - 1; } > static int max() throw() > { return 2147483647; } > > static const int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); > static const int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643 / 2136); > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static int epsilon() throw() > { return 0; } > static int round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static int infinity() throw() > { return static_cast<int>(0); } > static int quiet_NaN() throw() > { return static_cast<int>(0); } > static int signaling_NaN() throw() > { return static_cast<int>(0); } > static int denorm_min() throw() > { return static_cast<int>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<unsigned int> > { > static const bool is_specialized = true; > > static unsigned int min() throw() > { return 0; } > static unsigned int max() throw() > { return 2147483647 * 2U + 1; } > > static const int digits = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); > static const int digits10 = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643 / 2136); > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static unsigned int epsilon() throw() > { return 0; } > static unsigned int round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned int infinity() throw() > { return static_cast<unsigned int>(0); } > static unsigned int quiet_NaN() throw() > { return static_cast<unsigned int>(0); } > static unsigned int signaling_NaN() throw() > { return static_cast<unsigned int>(0); } > static unsigned int denorm_min() throw() > { return static_cast<unsigned int>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<long> > { > static const bool is_specialized = true; > > static long min() throw() > { return -2147483647L - 1; } > static long max() throw() > { return 2147483647L; } > > static const int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); > static const int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643 / 2136); > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static long epsilon() throw() > { return 0; } > static long round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static long infinity() throw() > { return static_cast<long>(0); } > static long quiet_NaN() throw() > { return static_cast<long>(0); } > static long signaling_NaN() throw() > { return static_cast<long>(0); } > static long denorm_min() throw() > { return static_cast<long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<unsigned long> > { > static const bool is_specialized = true; > > static unsigned long min() throw() > { return 0; } > static unsigned long max() throw() > { return 2147483647L * 2UL + 1; } > > static const int digits = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); > static const int digits10 = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643 / 2136); > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static unsigned long epsilon() throw() > { return 0; } > static unsigned long round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned long infinity() throw() > { return static_cast<unsigned long>(0); } > static unsigned long quiet_NaN() throw() > { return static_cast<unsigned long>(0); } > static unsigned long signaling_NaN() throw() > { return static_cast<unsigned long>(0); } > static unsigned long denorm_min() throw() > { return static_cast<unsigned long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<long long> > { > static const bool is_specialized = true; > > static long long min() throw() > { return -9223372036854775807LL - 1; } > static long long max() throw() > { return 9223372036854775807LL; } > > static const int digits = (sizeof(long long) * 8 - ((long long)(-1) < 0)); > static const int digits10 = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643 / 2136); > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static long long epsilon() throw() > { return 0; } > static long long round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static long long infinity() throw() > { return static_cast<long long>(0); } > static long long quiet_NaN() throw() > { return static_cast<long long>(0); } > static long long signaling_NaN() throw() > { return static_cast<long long>(0); } > static long long denorm_min() throw() > { return static_cast<long long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<unsigned long long> > { > static const bool is_specialized = true; > > static unsigned long long min() throw() > { return 0; } > static unsigned long long max() throw() > { return 9223372036854775807LL * 2ULL + 1; } > > static const int digits = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); > static const int digits10 = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643 / 2136); > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > static unsigned long long epsilon() throw() > { return 0; } > static unsigned long long round_error() throw() > { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned long long infinity() throw() > { return static_cast<unsigned long long>(0); } > static unsigned long long quiet_NaN() throw() > { return static_cast<unsigned long long>(0); } > static unsigned long long signaling_NaN() throw() > { return static_cast<unsigned long long>(0); } > static unsigned long long denorm_min() throw() > { return static_cast<unsigned long long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style = round_toward_zero; > }; > > template<> > struct numeric_limits<float> > { > static const bool is_specialized = true; > > static float min() throw() > { return 1.17549435e-38F; } > static float max() throw() > { return 3.40282347e+38F; } > > static const int digits = 24; > static const int digits10 = 6; > static const bool is_signed = true; > static const bool is_integer = false; > static const bool is_exact = false; > static const int radix = 2; > static float epsilon() throw() > { return 1.19209290e-7F; } > static float round_error() throw() > { return 0.5F; } > > static const int min_exponent = (-125); > static const int min_exponent10 = (-37); > static const int max_exponent = 128; > static const int max_exponent10 = 38; > > static const bool has_infinity = 1; > static const bool has_quiet_NaN = 1; > static const bool has_signaling_NaN = has_quiet_NaN; > static const float_denorm_style has_denorm > = 1.40129846e-45F ? denorm_present : denorm_absent; > static const bool has_denorm_loss = false; > > static float infinity() throw() > { return __builtin_huge_valf (); } > static float quiet_NaN() throw() > { return __builtin_nanf (""); } > static float signaling_NaN() throw() > { return __builtin_nansf (""); } > static float denorm_min() throw() > { return 1.40129846e-45F; } > > static const bool is_iec559 > = has_infinity && has_quiet_NaN && has_denorm == denorm_present; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = false; > static const bool tinyness_before = false; > static const float_round_style round_style = round_to_nearest; > }; > > > > > > template<> > struct numeric_limits<double> > { > static const bool is_specialized = true; > > static double min() throw() > { return 2.2250738585072014e-308; } > static double max() throw() > { return 1.7976931348623157e+308; } > > static const int digits = 53; > static const int digits10 = 15; > static const bool is_signed = true; > static const bool is_integer = false; > static const bool is_exact = false; > static const int radix = 2; > static double epsilon() throw() > { return 2.2204460492503131e-16; } > static double round_error() throw() > { return 0.5; } > > static const int min_exponent = (-1021); > static const int min_exponent10 = (-307); > static const int max_exponent = 1024; > static const int max_exponent10 = 308; > > static const bool has_infinity = 1; > static const bool has_quiet_NaN = 1; > static const bool has_signaling_NaN = has_quiet_NaN; > static const float_denorm_style has_denorm > = 4.9406564584124654e-324 ? denorm_present : denorm_absent; > static const bool has_denorm_loss = false; > > static double infinity() throw() > { return __builtin_huge_val(); } > static double quiet_NaN() throw() > { return __builtin_nan (""); } > static double signaling_NaN() throw() > { return __builtin_nans (""); } > static double denorm_min() throw() > { return 4.9406564584124654e-324; } > > static const bool is_iec559 > = has_infinity && has_quiet_NaN && has_denorm == denorm_present; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = false; > static const bool tinyness_before = false; > static const float_round_style round_style = round_to_nearest; > }; > > > > > > template<> > struct numeric_limits<long double> > { > static const bool is_specialized = true; > > static long double min() throw() > { return 3.36210314311209350626e-4932L; } > static long double max() throw() > { return 1.18973149535723176502e+4932L; } > > static const int digits = 64; > static const int digits10 = 18; > static const bool is_signed = true; > static const bool is_integer = false; > static const bool is_exact = false; > static const int radix = 2; > static long double epsilon() throw() > { return 1.08420217248550443401e-19L; } > static long double round_error() throw() > { return 0.5L; } > > static const int min_exponent = (-16381); > static const int min_exponent10 = (-4931); > static const int max_exponent = 16384; > static const int max_exponent10 = 4932; > > static const bool has_infinity = 1; > static const bool has_quiet_NaN = 1; > static const bool has_signaling_NaN = has_quiet_NaN; > static const float_denorm_style has_denorm > = 3.64519953188247460253e-4951L ? denorm_present : denorm_absent; > static const bool has_denorm_loss > = false; > > static long double infinity() throw() > { return __builtin_huge_vall (); } > static long double quiet_NaN() throw() > { return __builtin_nanl (""); } > static long double signaling_NaN() throw() > { return __builtin_nansl (""); } > static long double denorm_min() throw() > { return 3.64519953188247460253e-4951L; } > > static const bool is_iec559 > = has_infinity && has_quiet_NaN && has_denorm == denorm_present; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = false; > static const bool tinyness_before = false; > static const float_round_style round_style = round_to_nearest; > }; > > > > > >} ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 2 3 > >namespace std >{ ># 58 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > template<typename _CharT, typename _Traits> > class basic_istream : virtual public basic_ios<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_ios<_CharT, _Traits> __ios_type; > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > > __num_get_type; > typedef ctype<_CharT> __ctype_type; > > template<typename _CharT2, typename _Traits2> > friend basic_istream<_CharT2, _Traits2>& > operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2&); > > template<typename _CharT2, typename _Traits2> > friend basic_istream<_CharT2, _Traits2>& > operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); > > protected: > > > > > > > > streamsize _M_gcount; > > public: ># 104 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > explicit > basic_istream(__streambuf_type* __sb): _M_gcount(streamsize(0)) > { this->init(__sb); } > > > > > > > virtual > ~basic_istream() > { _M_gcount = streamsize(0); } > > > class sentry; > friend class sentry; ># 131 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > inline __istream_type& > operator>>(__istream_type& (*__pf)(__istream_type&)); > > inline __istream_type& > operator>>(__ios_type& (*__pf)(__ios_type&)); > > inline __istream_type& > operator>>(ios_base& (*__pf)(ios_base&)); ># 169 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > operator>>(bool& __n); > > __istream_type& > operator>>(short& __n); > > __istream_type& > operator>>(unsigned short& __n); > > __istream_type& > operator>>(int& __n); > > __istream_type& > operator>>(unsigned int& __n); > > __istream_type& > operator>>(long& __n); > > __istream_type& > operator>>(unsigned long& __n); > > > __istream_type& > operator>>(long long& __n); > > __istream_type& > operator>>(unsigned long long& __n); > > > __istream_type& > operator>>(float& __f); > > __istream_type& > operator>>(double& __f); > > __istream_type& > operator>>(long double& __f); > > __istream_type& > operator>>(void*& __p); ># 230 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > operator>>(__streambuf_type* __sb); ># 240 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > inline streamsize > gcount() const > { return _M_gcount; } ># 272 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > int_type > get(); ># 286 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > get(char_type& __c); ># 313 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > get(char_type* __s, streamsize __n, char_type __delim); ># 324 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > inline __istream_type& > get(char_type* __s, streamsize __n) > { return this->get(__s, __n, this->widen('\n')); } ># 347 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > get(__streambuf_type& __sb, char_type __delim); ># 357 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > inline __istream_type& > get(__streambuf_type& __sb) > { return this->get(__sb, this->widen('\n')); } ># 386 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > getline(char_type* __s, streamsize __n, char_type __delim); ># 397 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > inline __istream_type& > getline(char_type* __s, streamsize __n) > { return this->getline(__s, __n, this->widen('\n')); } ># 416 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > ignore(streamsize __n = 1, int_type __delim = traits_type::eof()); ># 427 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > int_type > peek(); ># 445 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > read(char_type* __s, streamsize __n); ># 464 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > streamsize > readsome(char_type* __s, streamsize __n); ># 480 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > putback(char_type __c); ># 495 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > unget(); ># 513 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > int > sync(); ># 527 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > pos_type > tellg(); ># 542 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > seekg(pos_type); ># 558 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > __istream_type& > seekg(off_type, ios_base::seekdir); > > > protected: > explicit > basic_istream(): _M_gcount(streamsize(0)) { } > }; ># 578 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > template<typename _CharT, typename _Traits> > class basic_istream<_CharT, _Traits>::sentry > { > public: > > typedef _Traits traits_type; > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::__ctype_type __ctype_type; > typedef typename _Traits::int_type __int_type; ># 610 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > explicit > sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); ># 620 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > operator bool() const { return _M_ok; } > > private: > bool _M_ok; > }; ># 639 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); > > template<class _Traits> > basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) > { return (__in >> reinterpret_cast<char&>(__c)); } > > template<class _Traits> > basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, signed char& __c) > { return (__in >> reinterpret_cast<char&>(__c)); } ># 680 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); > > template<class _Traits> > basic_istream<char,_Traits>& > operator>>(basic_istream<char,_Traits>& __in, unsigned char* __s) > { return (__in >> reinterpret_cast<char*>(__s)); } > > template<class _Traits> > basic_istream<char,_Traits>& > operator>>(basic_istream<char,_Traits>& __in, signed char* __s) > { return (__in >> reinterpret_cast<char*>(__s)); } ># 702 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > template<typename _CharT, typename _Traits> > class basic_iostream > : public basic_istream<_CharT, _Traits>, > public basic_ostream<_CharT, _Traits> > { > public: > > > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_ostream<_CharT, _Traits> __ostream_type; > > > > > > > > explicit > basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) > : __istream_type(), __ostream_type() > { this->init(__sb); } > > > > > virtual > ~basic_iostream() { } > > protected: > explicit > basic_iostream() : __istream_type(), __ostream_type() > { } > }; ># 765 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > ws(basic_istream<_CharT, _Traits>& __is); >} > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/istream.tcc" 1 3 ># 38 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/istream.tcc" 3 > ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/istream.tcc" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/locale" 1 3 ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/locale" 3 > ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/locale" 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > ># 37 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/typeinfo" 1 3 ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/typeinfo" 3 >extern "C++" { > >namespace __cxxabiv1 >{ > class __class_type_info; >} ># 55 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/typeinfo" 3 >namespace std >{ > > > > > > > class type_info > { > public: > > > > > virtual ~type_info(); > > private: > > type_info& operator=(const type_info&); > type_info(const type_info&); > > protected: > const char *__name; > > protected: > explicit type_info(const char *__n): __name(__n) { } > > public: > > > > const char* name() const > { return __name; } ># 101 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/typeinfo" 3 > bool before(const type_info& __arg) const > { return __name < __arg.__name; } > bool operator==(const type_info& __arg) const > { return __name == __arg.__name; } > > bool operator!=(const type_info& __arg) const > { return !operator==(__arg); } > > > public: > > virtual bool __is_pointer_p() const; > > virtual bool __is_function_p() const; > > > > > > > > virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, > unsigned __outer) const; > > > virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, > void **__obj_ptr) const; > }; > > > > > > > class bad_cast : public exception > { > public: > bad_cast() throw() { } > > > virtual ~bad_cast() throw(); > }; > > > class bad_typeid : public exception > { > public: > bad_typeid () throw() { } > > > virtual ~bad_typeid() throw(); > }; >} > >} ># 40 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 2 3 > > >namespace std >{ > template<typename _Facet> > locale > locale::combine(const locale& __other) const > { > _Impl* __tmp = new _Impl(*_M_impl, 1); > try > { > __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); > } > catch(...) > { > __tmp->_M_remove_reference(); > throw; > } > return locale(__tmp); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > bool > locale::operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, > const basic_string<_CharT, _Traits, _Alloc>& __s2) const > { > typedef std::collate<_CharT> __collate_type; > const __collate_type& __collate = use_facet<__collate_type>(*this); > return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), > __s2.data(), __s2.data() + __s2.length()) < 0); > } ># 83 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > template<typename _Facet> > inline bool > has_facet(const locale& __loc) throw() > { > const size_t __i = _Facet::id._M_id(); > const locale::facet** __facets = __loc._M_impl->_M_facets; > return (__i < __loc._M_impl->_M_facets_size && __facets[__i]); > } ># 105 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > template<typename _Facet> > inline const _Facet& > use_facet(const locale& __loc) > { > const size_t __i = _Facet::id._M_id(); > const locale::facet** __facets = __loc._M_impl->_M_facets; > if (!(__i < __loc._M_impl->_M_facets_size && __facets[__i])) > __throw_bad_cast(); > return static_cast<const _Facet&>(*__facets[__i]); > } > > > > template<typename _Facet> > struct __use_cache > { > const _Facet* > operator() (const locale& __loc) const; > }; > > > template<typename _CharT> > struct __use_cache<__numpunct_cache<_CharT> > > { > const __numpunct_cache<_CharT>* > operator() (const locale& __loc) const > { > const size_t __i = numpunct<_CharT>::id._M_id(); > const locale::facet** __caches = __loc._M_impl->_M_caches; > if (!__caches[__i]) > { > __numpunct_cache<_CharT>* __tmp = __null; > try > { > __tmp = new __numpunct_cache<_CharT>; > __tmp->_M_cache(__loc); > } > catch(...) > { > delete __tmp; > throw; > } > __loc._M_impl->_M_install_cache(__tmp, __i); > } > return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]); > } > }; > > template<typename _CharT, bool _Intl> > struct __use_cache<__moneypunct_cache<_CharT, _Intl> > > { > const __moneypunct_cache<_CharT, _Intl>* > operator() (const locale& __loc) const > { > const size_t __i = moneypunct<_CharT, _Intl>::id._M_id(); > const locale::facet** __caches = __loc._M_impl->_M_caches; > if (!__caches[__i]) > { > __moneypunct_cache<_CharT, _Intl>* __tmp = __null; > try > { > __tmp = new __moneypunct_cache<_CharT, _Intl>; > __tmp->_M_cache(__loc); > } > catch(...) > { > delete __tmp; > throw; > } > __loc._M_impl->_M_install_cache(__tmp, __i); > } > return static_cast< > const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]); > } > }; > > template<typename _CharT> > void > __numpunct_cache<_CharT>::_M_cache(const locale& __loc) > { > _M_allocated = true; > > const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc); > > _M_grouping_size = __np.grouping().size(); > char* __grouping = new char[_M_grouping_size]; > __np.grouping().copy(__grouping, _M_grouping_size); > _M_grouping = __grouping; > _M_use_grouping = _M_grouping_size && __np.grouping()[0] != 0; > > _M_truename_size = __np.truename().size(); > _CharT* __truename = new _CharT[_M_truename_size]; > __np.truename().copy(__truename, _M_truename_size); > _M_truename = __truename; > > _M_falsename_size = __np.falsename().size(); > _CharT* __falsename = new _CharT[_M_falsename_size]; > __np.falsename().copy(__falsename, _M_falsename_size); > _M_falsename = __falsename; > > _M_decimal_point = __np.decimal_point(); > _M_thousands_sep = __np.thousands_sep(); > > const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc); > __ct.widen(__num_base::_S_atoms_out, > __num_base::_S_atoms_out + __num_base::_S_oend, _M_atoms_out); > __ct.widen(__num_base::_S_atoms_in, > __num_base::_S_atoms_in + __num_base::_S_iend, _M_atoms_in); > } > > template<typename _CharT, bool _Intl> > void > __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) > { > _M_allocated = true; > > const moneypunct<_CharT, _Intl>& __mp = > use_facet<moneypunct<_CharT, _Intl> >(__loc); > > _M_grouping_size = __mp.grouping().size(); > char* __grouping = new char[_M_grouping_size]; > __mp.grouping().copy(__grouping, _M_grouping_size); > _M_grouping = __grouping; > _M_use_grouping = _M_grouping_size && __mp.grouping()[0] != 0; > > _M_decimal_point = __mp.decimal_point(); > _M_thousands_sep = __mp.thousands_sep(); > _M_frac_digits = __mp.frac_digits(); > > _M_curr_symbol_size = __mp.curr_symbol().size(); > _CharT* __curr_symbol = new _CharT[_M_curr_symbol_size]; > __mp.curr_symbol().copy(__curr_symbol, _M_curr_symbol_size); > _M_curr_symbol = __curr_symbol; > > _M_positive_sign_size = __mp.positive_sign().size(); > _CharT* __positive_sign = new _CharT[_M_positive_sign_size]; > __mp.positive_sign().copy(__positive_sign, _M_positive_sign_size); > _M_positive_sign = __positive_sign; > > _M_negative_sign_size = __mp.negative_sign().size(); > _CharT* __negative_sign = new _CharT[_M_negative_sign_size]; > __mp.negative_sign().copy(__negative_sign, _M_negative_sign_size); > _M_negative_sign = __negative_sign; > > _M_pos_format = __mp.pos_format(); > _M_neg_format = __mp.neg_format(); > > const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc); > __ct.widen(money_base::_S_atoms, > money_base::_S_atoms + money_base::_S_end, _M_atoms); > } ># 266 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > static bool > __verify_grouping(const char* __grouping, size_t __grouping_size, > const string& __grouping_tmp); > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, > ios_base::iostate& __err, string& __xtrc) const > { > typedef char_traits<_CharT> __traits_type; > typedef typename numpunct<_CharT>::__cache_type __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_in; > > > bool __found_mantissa = false; > > > if (__beg != __end) > { > const char_type __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if ((__plus || __c == __lit[__num_base::_S_iminus]) > && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > { > __xtrc += __plus ? '+' : '-'; > ++__beg; > } > } > > > while (__beg != __end) > { > const char_type __c = *__beg; > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep > || __c == __lc->_M_decimal_point) > break; > else if (__c == __lit[__num_base::_S_izero]) > { > if (!__found_mantissa) > { > __xtrc += '0'; > __found_mantissa = true; > } > ++__beg; > } > else > break; > } > > > bool __found_dec = false; > bool __found_sci = false; > string __found_grouping; > if (__lc->_M_use_grouping) > __found_grouping.reserve(32); > int __sep_pos = 0; > const char_type* __lit_zero = __lit + __num_base::_S_izero; > const char_type* __q; > while (__beg != __end) > { > > > const char_type __c = *__beg; > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > if (!__found_dec && !__found_sci) > { > > > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > ++__beg; > } > else > { > __err |= ios_base::failbit; > break; > } > } > else > break; > } > else if (__c == __lc->_M_decimal_point) > { > if (!__found_dec && !__found_sci) > { > > > > if (__found_grouping.size()) > __found_grouping += static_cast<char>(__sep_pos); > __xtrc += '.'; > __found_dec = true; > ++__beg; > } > else > break; > } > else if (__q = __traits_type::find(__lit_zero, 10, __c)) > { > __xtrc += __num_base::_S_atoms_in[__q - __lit]; > __found_mantissa = true; > ++__sep_pos; > ++__beg; > } > else if ((__c == __lit[__num_base::_S_ie] > || __c == __lit[__num_base::_S_iE]) > && __found_mantissa && !__found_sci) > { > > if (__found_grouping.size() && !__found_dec) > __found_grouping += static_cast<char>(__sep_pos); > __xtrc += 'e'; > __found_sci = true; > > > if (++__beg != __end) > { > const bool __plus = *__beg == __lit[__num_base::_S_iplus]; > if ((__plus || *__beg == __lit[__num_base::_S_iminus]) > && !(__lc->_M_use_grouping > && *__beg == __lc->_M_thousands_sep) > && !(*__beg == __lc->_M_decimal_point)) > { > __xtrc += __plus ? '+' : '-'; > ++__beg; > } > } > } > else > > break; > } > > > > if (__lc->_M_use_grouping && __found_grouping.size()) > { > > if (!__found_dec && !__found_sci) > __found_grouping += static_cast<char>(__sep_pos); > > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __found_grouping)) > __err |= ios_base::failbit; > } > > > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > template<typename _ValueT> > _InIter > num_get<_CharT, _InIter>:: > _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, > ios_base::iostate& __err, _ValueT& __v) const > { > typedef char_traits<_CharT> __traits_type; > typedef typename numpunct<_CharT>::__cache_type __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_in; > > > const ios_base::fmtflags __basefield = __io.flags() > & ios_base::basefield; > const bool __oct = __basefield == ios_base::oct; > int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); > > > bool __found_num = false; > > > bool __negative = false; > if (__beg != __end) > { > const char_type __c = *__beg; > if (numeric_limits<_ValueT>::is_signed) > __negative = __c == __lit[__num_base::_S_iminus]; > if ((__negative || __c == __lit[__num_base::_S_iplus]) > && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > ++__beg; > } > > > > while (__beg != __end) > { > const char_type __c = *__beg; > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep > || __c == __lc->_M_decimal_point) > break; > else if (__c == __lit[__num_base::_S_izero] > && (!__found_num || __base == 10)) > { > __found_num = true; > ++__beg; > } > else if (__found_num) > { > if (__c == __lit[__num_base::_S_ix] > || __c == __lit[__num_base::_S_iX]) > { > if (__basefield == 0) > __base = 16; > if (__base == 16) > { > __found_num = false; > ++__beg; > } > } > else if (__basefield == 0) > __base = 8; > break; > } > else > break; > } > > > > const size_t __len = __base == 16 ? (__num_base::_S_iend > - __num_base::_S_izero) > : __base; > > > string __found_grouping; > if (__lc->_M_use_grouping) > __found_grouping.reserve(32); > int __sep_pos = 0; > bool __overflow = false; > _ValueT __result = 0; > const char_type* __lit_zero = __lit + __num_base::_S_izero; > const char_type* __q; > if (__negative) > { > const _ValueT __min = numeric_limits<_ValueT>::min() / __base; > for (; __beg != __end; ++__beg) > { > > > const char_type __c = *__beg; > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > > > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > } > else > { > __err |= ios_base::failbit; > break; > } > } > else if (__c == __lc->_M_decimal_point) > break; > else if (__q = __traits_type::find(__lit_zero, __len, __c)) > { > int __digit = __q - __lit_zero; > if (__digit > 15) > __digit -= 6; > if (__result < __min) > __overflow = true; > else > { > const _ValueT __new_result = __result * __base > - __digit; > __overflow |= __new_result > __result; > __result = __new_result; > ++__sep_pos; > __found_num = true; > } > } > else > > break; > } > } > else > { > const _ValueT __max = numeric_limits<_ValueT>::max() / __base; > for (; __beg != __end; ++__beg) > { > const char_type __c = *__beg; > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > } > else > { > __err |= ios_base::failbit; > break; > } > } > else if (__c == __lc->_M_decimal_point) > break; > else if (__q = __traits_type::find(__lit_zero, __len, __c)) > { > int __digit = __q - __lit_zero; > if (__digit > 15) > __digit -= 6; > if (__result > __max) > __overflow = true; > else > { > const _ValueT __new_result = __result * __base > + __digit; > __overflow |= __new_result < __result; > __result = __new_result; > ++__sep_pos; > __found_num = true; > } > } > else > break; > } > } > > > > if (__lc->_M_use_grouping && __found_grouping.size()) > { > > __found_grouping += static_cast<char>(__sep_pos); > > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __found_grouping)) > __err |= ios_base::failbit; > } > > if (!(__err & ios_base::failbit) && !__overflow > && __found_num) > __v = __result; > else > __err |= ios_base::failbit; > > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, bool& __v) const > { > if (!(__io.flags() & ios_base::boolalpha)) > { > > > > long __l = -1; > __beg = _M_extract_int(__beg, __end, __io, __err, __l); > if (__l == 0 || __l == 1) > __v = __l; > else > __err |= ios_base::failbit; > } > else > { > > typedef char_traits<_CharT> __traits_type; > typedef typename numpunct<_CharT>::__cache_type __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > bool __testf = true; > bool __testt = true; > size_t __n; > for (__n = 0; __beg != __end; ++__n, ++__beg) > { > if (__testf) > if (__n < __lc->_M_falsename_size) > __testf = *__beg == __lc->_M_falsename[__n]; > else > break; > > if (__testt) > if (__n < __lc->_M_truename_size) > __testt = *__beg == __lc->_M_truename[__n]; > else > break; > > if (!__testf && !__testt) > break; > } > if (__testf && __n == __lc->_M_falsename_size) > __v = 0; > else if (__testt && __n == __lc->_M_truename_size) > __v = 1; > else > __err |= ios_base::failbit; > > if (__beg == __end) > __err |= ios_base::eofbit; > } > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned short& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned int& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, float& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, double& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long double& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, void*& __v) const > { > > typedef ios_base::fmtflags fmtflags; > const fmtflags __fmt = __io.flags(); > __io.flags(__fmt & ~ios_base::basefield | ios_base::hex); > > unsigned long __ul; > __beg = _M_extract_int(__beg, __end, __io, __err, __ul); > > > __io.flags(__fmt); > > if (!(__err & ios_base::failbit)) > __v = reinterpret_cast<void*>(__ul); > else > __err |= ios_base::failbit; > return __beg; > } > > > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_pad(_CharT __fill, streamsize __w, ios_base& __io, > _CharT* __new, const _CharT* __cs, int& __len) const > { > > > __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, __cs, > __w, __len, true); > __len = static_cast<int>(__w); > } > > > template<typename _CharT> > inline int > __int_to_char(_CharT* __bufend, long __v, const _CharT* __lit, > ios_base::fmtflags __flags) > { > unsigned long __ul = static_cast<unsigned long>(__v); > bool __neg = false; > if (__v < 0) > { > __ul = -__ul; > __neg = true; > } > return __int_to_char(__bufend, __ul, __lit, __flags, __neg); > } > > template<typename _CharT> > inline int > __int_to_char(_CharT* __bufend, unsigned long __v, const _CharT* __lit, > ios_base::fmtflags __flags) > { > > return __int_to_char(__bufend, __v, __lit, > __flags & ~ios_base::showpos, false); > } > > > template<typename _CharT> > inline int > __int_to_char(_CharT* __bufend, long long __v, const _CharT* __lit, > ios_base::fmtflags __flags) > { > unsigned long long __ull = static_cast<unsigned long long>(__v); > bool __neg = false; > if (__v < 0) > { > __ull = -__ull; > __neg = true; > } > return __int_to_char(__bufend, __ull, __lit, __flags, __neg); > } > > template<typename _CharT> > inline int > __int_to_char(_CharT* __bufend, unsigned long long __v, > const _CharT* __lit, ios_base::fmtflags __flags) > { return __int_to_char(__bufend, __v, __lit, > __flags & ~ios_base::showpos, false); } > > > template<typename _CharT, typename _ValueT> > int > __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, > ios_base::fmtflags __flags, bool __neg) > { > > const bool __showbase = (__flags & ios_base::showbase) && __v; > const ios_base::fmtflags __basefield = __flags & ios_base::basefield; > _CharT* __buf = __bufend - 1; > > if (__builtin_expect(__basefield != ios_base::oct && > __basefield != ios_base::hex, true)) > { > > do > { > *__buf-- = __lit[(__v % 10) + __num_base::_S_odigits]; > __v /= 10; > } > while (__v != 0); > if (__neg) > *__buf-- = __lit[__num_base::_S_ominus]; > else if (__flags & ios_base::showpos) > *__buf-- = __lit[__num_base::_S_oplus]; > } > else if (__basefield == ios_base::oct) > { > > do > { > *__buf-- = __lit[(__v & 0x7) + __num_base::_S_odigits]; > __v >>= 3; > } > while (__v != 0); > if (__showbase) > *__buf-- = __lit[__num_base::_S_odigits]; > } > else > { > > const bool __uppercase = __flags & ios_base::uppercase; > const int __case_offset = __uppercase ? __num_base::_S_oudigits > : __num_base::_S_odigits; > do > { > *__buf-- = __lit[(__v & 0xf) + __case_offset]; > __v >>= 4; > } > while (__v != 0); > if (__showbase) > { > > *__buf-- = __lit[__num_base::_S_ox + __uppercase]; > > *__buf-- = __lit[__num_base::_S_odigits]; > } > } > return __bufend - __buf - 1; > } > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, > ios_base& __io, _CharT* __new, _CharT* __cs, int& __len) const > { > > > > > > streamsize __off = 0; > const ios_base::fmtflags __basefield = __io.flags() > & ios_base::basefield; > if ((__io.flags() & ios_base::showbase) && __len > 1) > if (__basefield == ios_base::oct) > { > __off = 1; > __new[0] = __cs[0]; > } > else if (__basefield == ios_base::hex) > { > __off = 2; > __new[0] = __cs[0]; > __new[1] = __cs[1]; > } > _CharT* __p; > __p = std::__add_grouping(__new + __off, __sep, __grouping, > __grouping_size, __cs + __off, > __cs + __len); > __len = __p - __new; > } > > template<typename _CharT, typename _OutIter> > template<typename _ValueT> > _OutIter > num_put<_CharT, _OutIter>:: > _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, > _ValueT __v) const > { > typedef typename numpunct<_CharT>::__cache_type __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_out; > > > const int __ilen = 4 * sizeof(_ValueT); > _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __ilen)); > > > > int __len; > __len = __int_to_char(__cs + __ilen, __v, __lit, __io.flags()); > __cs += __ilen - __len; > > > if (__lc->_M_use_grouping) > { > > > _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len * 2)); > _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, > __lc->_M_thousands_sep, __io, __cs2, __cs, __len); > __cs = __cs2; > } > > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __cs3, __cs, __len); > __cs = __cs3; > } > __io.width(0); > > > > return std::__write(__s, __cs, __len); > } > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_group_float(const char* __grouping, size_t __grouping_size, > _CharT __sep, const _CharT* __p, _CharT* __new, > _CharT* __cs, int& __len) const > { > > > > _CharT* __p2; > const int __declen = __p ? __p - __cs : __len; > __p2 = std::__add_grouping(__new, __sep, __grouping, __grouping_size, > __cs, __cs + __declen); > > > int __newlen = __p2 - __new; > if (__p) > { > char_traits<_CharT>::copy(__p2, __p, __len - __declen); > __newlen += __len - __declen; > } > __len = __newlen; > } ># 1041 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _OutIter> > template<typename _ValueT> > _OutIter > num_put<_CharT, _OutIter>:: > _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, > _ValueT __v) const > { > typedef typename numpunct<_CharT>::__cache_type __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > > streamsize __prec = __io.precision(); > if (__prec < static_cast<streamsize>(0)) > __prec = static_cast<streamsize>(6); > > const int __max_digits = numeric_limits<_ValueT>::digits10; > > > int __len; > > char __fbuf[16]; > > > > > int __cs_size = __max_digits * 3; > char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > > __num_base::_S_format_float(__io, __fbuf, __mod); > __len = std::__convert_from_v(__cs, __cs_size, __fbuf, __v, > _S_get_c_locale(), __prec); > > > if (__len >= __cs_size) > { > __cs_size = __len + 1; > __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > __len = std::__convert_from_v(__cs, __cs_size, __fbuf, __v, > _S_get_c_locale(), __prec); > } ># 1105 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len)); > __ctype.widen(__cs, __cs + __len, __ws); > > > const _CharT __cdec = __ctype.widen('.'); > const _CharT __dec = __lc->_M_decimal_point; > const _CharT* __p; > if (__p = char_traits<_CharT>::find(__ws, __len, __cdec)) > __ws[__p - __ws] = __dec; > > > if (__lc->_M_use_grouping) > { > > > _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len * 2)); > _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, > __lc->_M_thousands_sep, __p, __ws2, __ws, __len); > __ws = __ws2; > } > > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __ws3, __ws, __len); > __ws = __ws3; > } > __io.width(0); > > > > return std::__write(__s, __ws, __len); > } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const > { > const ios_base::fmtflags __flags = __io.flags(); > if ((__flags & ios_base::boolalpha) == 0) > { > unsigned long __uv = __v; > __s = _M_insert_int(__s, __io, __fill, __uv); > } > else > { > typedef typename numpunct<_CharT>::__cache_type __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > const _CharT* __name = __v ? __lc->_M_truename > : __lc->_M_falsename; > int __len = __v ? __lc->_M_truename_size > : __lc->_M_falsename_size; > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __cs > = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __cs, __name, __len); > __name = __cs; > } > __io.width(0); > __s = std::__write(__s, __name, __len); > } > return __s; > } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __b, char_type __fill, long long __v) const > { return _M_insert_int(__s, __b, __fill, __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const > { return _M_insert_float(__s, __io, __fill, char(), __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > long double __v) const > { return _M_insert_float(__s, __io, __fill, 'L', __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > const void* __v) const > { > const ios_base::fmtflags __flags = __io.flags(); > const ios_base::fmtflags __fmt = ~(ios_base::showpos > | ios_base::basefield > | ios_base::uppercase > | ios_base::internal); > __io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase)); > > __s = _M_insert_int(__s, __io, __fill, > reinterpret_cast<unsigned long>(__v)); > __io.flags(__flags); > return __s; > } > > template<typename _CharT, typename _InIter> > template<bool _Intl> > _InIter > money_get<_CharT, _InIter>:: > _M_extract(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, string& __units) const > { > typedef char_traits<_CharT> __traits_type; > typedef typename string_type::size_type size_type; > typedef money_base::part part; > typedef moneypunct<_CharT, _Intl> __moneypunct_type; > typedef typename __moneypunct_type::__cache_type __cache_type; > > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > __use_cache<__cache_type> __uc; > const __cache_type* __lc = __uc(__loc); > const char_type* __lit = __lc->_M_atoms; > > > bool __negative = false; > > size_type __sign_size = 0; > > const bool __mandatory_sign = (__lc->_M_positive_sign_size > && __lc->_M_negative_sign_size); > > string __grouping_tmp; > if (__lc->_M_use_grouping) > __grouping_tmp.reserve(32); > > int __last_pos = 0; > > int __n = 0; > > bool __testvalid = true; > > bool __testdecfound = false; > > > string __res; > __res.reserve(32); > > const char_type* __lit_zero = __lit + money_base::_S_zero; > const char_type* __q; > const money_base::pattern __p = __lc->_M_neg_format; > for (int __i = 0; __i < 4 && __testvalid; ++__i) > { > const part __which = static_cast<part>(__p.field[__i]); > switch (__which) > { > case money_base::symbol: > > > > > if (__io.flags() & ios_base::showbase || __sign_size > 1 > || __i == 0 > || (__i == 1 && (__mandatory_sign > || (static_cast<part>(__p.field[0]) > == money_base::sign) > || (static_cast<part>(__p.field[2]) > == money_base::space))) > || (__i == 2 && ((static_cast<part>(__p.field[3]) > == money_base::value) > || __mandatory_sign > && (static_cast<part>(__p.field[3]) > == money_base::sign)))) > { > const size_type __len = __lc->_M_curr_symbol_size; > size_type __j = 0; > for (; __beg != __end && __j < __len > && *__beg == __lc->_M_curr_symbol[__j]; > ++__beg, ++__j); > if (__j != __len > && (__j || __io.flags() & ios_base::showbase)) > __testvalid = false; > } > break; > case money_base::sign: > > if (__lc->_M_positive_sign_size && __beg != __end > && *__beg == __lc->_M_positive_sign[0]) > { > __sign_size = __lc->_M_positive_sign_size; > ++__beg; > } > else if (__lc->_M_negative_sign_size && __beg != __end > && *__beg == __lc->_M_negative_sign[0]) > { > __negative = true; > __sign_size = __lc->_M_negative_sign_size; > ++__beg; > } > else if (__lc->_M_positive_sign_size > && !__lc->_M_negative_sign_size) > > > __negative = true; > else if (__mandatory_sign) > __testvalid = false; > break; > case money_base::value: > > > for (; __beg != __end; ++__beg) > if (__q = __traits_type::find(__lit_zero, 10, *__beg)) > { > __res += money_base::_S_atoms[__q - __lit]; > ++__n; > } > else if (*__beg == __lc->_M_decimal_point && !__testdecfound) > { > __last_pos = __n; > __n = 0; > __testdecfound = true; > } > else if (__lc->_M_use_grouping > && *__beg == __lc->_M_thousands_sep > && !__testdecfound) > { > if (__n) > { > > __grouping_tmp += static_cast<char>(__n); > __n = 0; > } > else > { > __testvalid = false; > break; > } > } > else > break; > if (__res.empty()) > __testvalid = false; > break; > case money_base::space: > > if (__beg != __end && __ctype.is(ctype_base::space, *__beg)) > ++__beg; > else > __testvalid = false; > case money_base::none: > > if (__i != 3) > for (; __beg != __end > && __ctype.is(ctype_base::space, *__beg); ++__beg); > break; > } > } > > > if (__sign_size > 1 && __testvalid) > { > const char_type* __sign = __negative ? __lc->_M_negative_sign > : __lc->_M_positive_sign; > size_type __i = 1; > for (; __beg != __end && __i < __sign_size > && *__beg == __sign[__i]; ++__beg, ++__i); > > if (__i != __sign_size) > __testvalid = false; > } > > if (__testvalid) > { > > if (__res.size() > 1) > { > const size_type __first = __res.find_first_not_of('0'); > const bool __only_zeros = __first == string::npos; > if (__first) > __res.erase(0, __only_zeros ? __res.size() - 1 : __first); > } > > > if (__negative && __res[0] != '0') > __res.insert(__res.begin(), '-'); > > > if (__grouping_tmp.size()) > { > > __grouping_tmp += static_cast<char>(__testdecfound ? __last_pos > : __n); > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __grouping_tmp)) > __testvalid = false; > } > > > if (__testdecfound && __lc->_M_frac_digits > 0 > && __n != __lc->_M_frac_digits) > __testvalid = false; > } > > > if (__beg == __end) > __err |= ios_base::eofbit; > > > if (!__testvalid) > __err |= ios_base::failbit; > else > __units.swap(__res); > > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > money_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, > ios_base::iostate& __err, long double& __units) const > { > string __str; > if (__intl) > __beg = _M_extract<true>(__beg, __end, __io, __err, __str); > else > __beg = _M_extract<false>(__beg, __end, __io, __err, __str); > std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > money_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, > ios_base::iostate& __err, string_type& __units) const > { > typedef typename string::size_type size_type; > > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > string __str; > const iter_type __ret = __intl ? _M_extract<true>(__beg, __end, __io, > __err, __str) > : _M_extract<false>(__beg, __end, __io, > __err, __str); > const size_type __len = __str.size(); > if (__len) > { > _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len)); > __ctype.widen(__str.data(), __str.data() + __len, __ws); > __units.assign(__ws, __len); > } > > return __ret; > } > > template<typename _CharT, typename _OutIter> > template<bool _Intl> > _OutIter > money_put<_CharT, _OutIter>:: > _M_insert(iter_type __s, ios_base& __io, char_type __fill, > const string_type& __digits) const > { > typedef typename string_type::size_type size_type; > typedef money_base::part part; > typedef moneypunct<_CharT, _Intl> __moneypunct_type; > typedef typename __moneypunct_type::__cache_type __cache_type; > > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > __use_cache<__cache_type> __uc; > const __cache_type* __lc = __uc(__loc); > const char_type* __lit = __lc->_M_atoms; > > > > const char_type* __beg = __digits.data(); > > money_base::pattern __p; > const char_type* __sign; > size_type __sign_size; > if (*__beg != __lit[money_base::_S_minus]) > { > __p = __lc->_M_pos_format; > __sign = __lc->_M_positive_sign; > __sign_size = __lc->_M_positive_sign_size; > } > else > { > __p = __lc->_M_neg_format; > __sign = __lc->_M_negative_sign; > __sign_size = __lc->_M_negative_sign_size; > if (__digits.size()) > ++__beg; > } > > > size_type __len = __ctype.scan_not(ctype_base::digit, __beg, > __beg + __digits.size()) - __beg; > if (__len) > { > > > > string_type __value; > __value.reserve(2 * __len); > > > > int __paddec = __len - __lc->_M_frac_digits; > if (__paddec > 0) > { > if (__lc->_M_frac_digits < 0) > __paddec = __len; > if (__lc->_M_grouping_size) > { > _CharT* __ws = > static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * 2 * __len)); > _CharT* __ws_end = > std::__add_grouping(__ws, __lc->_M_thousands_sep, > __lc->_M_grouping, > __lc->_M_grouping_size, > __beg, __beg + __paddec); > __value.assign(__ws, __ws_end - __ws); > } > else > __value.assign(__beg, __paddec); > } > > > if (__lc->_M_frac_digits > 0) > { > __value += __lc->_M_decimal_point; > if (__paddec >= 0) > __value.append(__beg + __paddec, __lc->_M_frac_digits); > else > { > > __value.append(-__paddec, __lit[money_base::_S_zero]); > __value.append(__beg, __len); > } > } > > > const ios_base::fmtflags __f = __io.flags() > & ios_base::adjustfield; > __len = __value.size() + __sign_size; > __len += ((__io.flags() & ios_base::showbase) > ? __lc->_M_curr_symbol_size : 0); > > string_type __res; > __res.reserve(2 * __len); > > const size_type __width = static_cast<size_type>(__io.width()); > const bool __testipad = (__f == ios_base::internal > && __len < __width); > > for (int __i = 0; __i < 4; ++__i) > { > const part __which = static_cast<part>(__p.field[__i]); > switch (__which) > { > case money_base::symbol: > if (__io.flags() & ios_base::showbase) > __res.append(__lc->_M_curr_symbol, > __lc->_M_curr_symbol_size); > break; > case money_base::sign: > > > > if (__sign_size) > __res += __sign[0]; > break; > case money_base::value: > __res += __value; > break; > case money_base::space: > > > > if (__testipad) > __res.append(__width - __len, __fill); > else > __res += __fill; > break; > case money_base::none: > if (__testipad) > __res.append(__width - __len, __fill); > break; > } > } > > > if (__sign_size > 1) > __res.append(__sign + 1, __sign_size - 1); > > > __len = __res.size(); > if (__width > __len) > { > if (__f == ios_base::left) > > __res.append(__width - __len, __fill); > else > > __res.insert(0, __width - __len, __fill); > __len = __width; > } > > > __s = std::__write(__s, __res.data(), __len); > } > __io.width(0); > return __s; > } > > template<typename _CharT, typename _OutIter> > _OutIter > money_put<_CharT, _OutIter>:: > do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, > long double __units) const > { > const locale __loc = __io.getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > > int __cs_size = 64; > char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > > > int __len = std::__convert_from_v(__cs, __cs_size, "%.0Lf", __units, > _S_get_c_locale()); > > if (__len >= __cs_size) > { > __cs_size = __len + 1; > __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > __len = std::__convert_from_v(__cs, __cs_size, "%.0Lf", __units, > _S_get_c_locale()); > } > > > > > > > > _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __cs_size)); > __ctype.widen(__cs, __cs + __len, __ws); > const string_type __digits(__ws, __len); > return __intl ? _M_insert<true>(__s, __io, __fill, __digits) > : _M_insert<false>(__s, __io, __fill, __digits); > } > > template<typename _CharT, typename _OutIter> > _OutIter > money_put<_CharT, _OutIter>:: > do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, > const string_type& __digits) const > { return __intl ? _M_insert<true>(__s, __io, __fill, __digits) > : _M_insert<false>(__s, __io, __fill, __digits); } > > > > > > template<typename _CharT, typename _InIter> > time_base::dateorder > time_get<_CharT, _InIter>::do_date_order() const > { return time_base::no_order; } > > > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm, > const _CharT* __format) const > { > const locale& __loc = __io._M_getloc(); > const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > const size_t __len = char_traits<_CharT>::length(__format); > > for (size_t __i = 0; __beg != __end && __i < __len && !__err; ++__i) > { > if (__ctype.narrow(__format[__i], 0) == '%') > { > > char __c = __ctype.narrow(__format[++__i], 0); > int __mem = 0; > if (__c == 'E' || __c == 'O') > __c = __ctype.narrow(__format[++__i], 0); > switch (__c) > { > const char* __cs; > _CharT __wcs[10]; > case 'a': > > const char_type* __days1[7]; > __tp._M_days_abbreviated(__days1); > __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days1, > 7, __io, __err); > break; > case 'A': > > const char_type* __days2[7]; > __tp._M_days(__days2); > __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days2, > 7, __io, __err); > break; > case 'h': > case 'b': > > const char_type* __months1[12]; > __tp._M_months_abbreviated(__months1); > __beg = _M_extract_name(__beg, __end, __tm->tm_mon, > __months1, 12, __io, __err); > break; > case 'B': > > const char_type* __months2[12]; > __tp._M_months(__months2); > __beg = _M_extract_name(__beg, __end, __tm->tm_mon, > __months2, 12, __io, __err); > break; > case 'c': > > const char_type* __dt[2]; > __tp._M_date_time_formats(__dt); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __dt[0]); > break; > case 'd': > > __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2, > __io, __err); > break; > case 'e': > > > if (__ctype.is(ctype_base::space, *__beg)) > __beg = _M_extract_num(++__beg, __end, __tm->tm_mday, 1, 9, > 1, __io, __err); > else > __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 10, 31, > 2, __io, __err); > break; > case 'D': > > __cs = "%m/%d/%y"; > __ctype.widen(__cs, __cs + 9, __wcs); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __wcs); > break; > case 'H': > > __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2, > __io, __err); > break; > case 'I': > > __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2, > __io, __err); > break; > case 'm': > > __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, > __io, __err); > if (!__err) > __tm->tm_mon = __mem - 1; > break; > case 'M': > > __beg = _M_extract_num(__beg, __end, __tm->tm_min, 0, 59, 2, > __io, __err); > break; > case 'n': > if (__ctype.narrow(*__beg, 0) == '\n') > ++__beg; > else > __err |= ios_base::failbit; > break; > case 'R': > > __cs = "%H:%M"; > __ctype.widen(__cs, __cs + 6, __wcs); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __wcs); > break; > case 'S': > > __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 59, 2, > __io, __err); > break; > case 't': > if (__ctype.narrow(*__beg, 0) == '\t') > ++__beg; > else > __err |= ios_base::failbit; > break; > case 'T': > > __cs = "%H:%M:%S"; > __ctype.widen(__cs, __cs + 9, __wcs); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __wcs); > break; > case 'x': > > const char_type* __dates[2]; > __tp._M_date_formats(__dates); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __dates[0]); > break; > case 'X': > > const char_type* __times[2]; > __tp._M_time_formats(__times); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __times[0]); > break; > case 'y': > case 'C': > > __beg = _M_extract_num(__beg, __end, __tm->tm_year, 0, 99, 2, > __io, __err); > break; > case 'Y': > > __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, > __io, __err); > if (!__err) > __tm->tm_year = __mem - 1900; > break; > case 'Z': > > if (__ctype.is(ctype_base::upper, *__beg)) > { > int __tmp; > __beg = _M_extract_name(__beg, __end, __tmp, > __timepunct_cache<_CharT>::_S_timezones, > 14, __io, __err); > > > if (__beg != __end && !__err && __tmp == 0 > && (*__beg == __ctype.widen('-') > || *__beg == __ctype.widen('+'))) > { > __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, > __io, __err); > __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, > __io, __err); > } > } > else > __err |= ios_base::failbit; > break; > default: > > __err |= ios_base::failbit; > } > } > else > { > > if (__format[__i] == *__beg) > ++__beg; > else > __err |= ios_base::failbit; > } > } > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > _M_extract_num(iter_type __beg, iter_type __end, int& __member, > int __min, int __max, size_t __len, > ios_base& __io, ios_base::iostate& __err) const > { > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > > int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1); > > ++__min; > size_t __i = 0; > int __value = 0; > for (; __beg != __end && __i < __len; ++__beg, ++__i) > { > const char __c = __ctype.narrow(*__beg, '*'); > if (__c >= '0' && __c <= '9') > { > __value = __value * 10 + (__c - '0'); > const int __valuec = __value * __mult; > if (__valuec > __max || __valuec + __mult < __min) > break; > __mult /= 10; > } > else > break; > } > if (__i == __len) > __member = __value; > else > __err |= ios_base::failbit; > return __beg; > } > > > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > _M_extract_name(iter_type __beg, iter_type __end, int& __member, > const _CharT** __names, size_t __indexlen, > ios_base& __io, ios_base::iostate& __err) const > { > typedef char_traits<_CharT> __traits_type; > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > int* __matches = static_cast<int*>(__builtin_alloca(sizeof(int) > * __indexlen)); > size_t __nmatches = 0; > size_t __pos = 0; > bool __testvalid = true; > const char_type* __name; > > > > > > if (__beg != __end) > { > const char_type __c = *__beg; > for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) > if (__c == __names[__i1][0] > || __c == __ctype.toupper(__names[__i1][0])) > __matches[__nmatches++] = __i1; > } > > while (__nmatches > 1) > { > > size_t __minlen = __traits_type::length(__names[__matches[0]]); > for (size_t __i2 = 1; __i2 < __nmatches; ++__i2) > __minlen = std::min(__minlen, > __traits_type::length(__names[__matches[__i2]])); > ++__pos; > ++__beg; > if (__pos < __minlen && __beg != __end) > for (size_t __i3 = 0; __i3 < __nmatches;) > { > __name = __names[__matches[__i3]]; > if (__name[__pos] != *__beg) > __matches[__i3] = __matches[--__nmatches]; > else > ++__i3; > } > else > break; > } > > if (__nmatches == 1) > { > > ++__pos; > ++__beg; > __name = __names[__matches[0]]; > const size_t __len = __traits_type::length(__name); > while (__pos < __len && __beg != __end && __name[__pos] == *__beg) > ++__beg, ++__pos; > > if (__len == __pos) > __member = __matches[0]; > else > __testvalid = false; > } > else > __testvalid = false; > if (!__testvalid) > __err |= ios_base::failbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > do_get_time(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { > const locale& __loc = __io._M_getloc(); > const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); > const char_type* __times[2]; > __tp._M_time_formats(__times); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __times[0]); > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > do_get_date(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { > const locale& __loc = __io._M_getloc(); > const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); > const char_type* __dates[2]; > __tp._M_date_formats(__dates); > __beg = _M_extract_via_format(__beg, __end, __io, __err, > __tm, __dates[0]); > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { > typedef char_traits<_CharT> __traits_type; > const locale& __loc = __io._M_getloc(); > const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > const char_type* __days[7]; > __tp._M_days_abbreviated(__days); > int __tmpwday; > __beg = _M_extract_name(__beg, __end, __tmpwday, __days, 7, __io, __err); > > > > > > > > if (!__err) > { > size_t __pos = __traits_type::length(__days[__tmpwday]); > __tp._M_days(__days); > const char_type* __name = __days[__tmpwday]; > if (__name[__pos] == *__beg) > { > > const size_t __len = __traits_type::length(__name); > while (__pos < __len && __beg != __end > && __name[__pos] == *__beg) > ++__beg, ++__pos; > if (__len != __pos) > __err |= ios_base::failbit; > } > if (!__err) > __tm->tm_wday = __tmpwday; > } > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > do_get_monthname(iter_type __beg, iter_type __end, > ios_base& __io, ios_base::iostate& __err, tm* __tm) const > { > typedef char_traits<_CharT> __traits_type; > const locale& __loc = __io._M_getloc(); > const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > const char_type* __months[12]; > __tp._M_months_abbreviated(__months); > int __tmpmon; > __beg = _M_extract_name(__beg, __end, __tmpmon, __months, 12, > __io, __err); > > > > > > > > if (!__err) > { > size_t __pos = __traits_type::length(__months[__tmpmon]); > __tp._M_months(__months); > const char_type* __name = __months[__tmpmon]; > if (__name[__pos] == *__beg) > { > > const size_t __len = __traits_type::length(__name); > while (__pos < __len && __beg != __end > && __name[__pos] == *__beg) > ++__beg, ++__pos; > if (__len != __pos) > __err |= ios_base::failbit; > } > if (!__err) > __tm->tm_mon = __tmpmon; > } > > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > time_get<_CharT, _InIter>:: > do_get_year(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, tm* __tm) const > { > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > size_t __i = 0; > int __value = 0; > for (; __beg != __end && __i < 4; ++__beg, ++__i) > { > const char __c = __ctype.narrow(*__beg, '*'); > if (__c >= '0' && __c <= '9') > __value = __value * 10 + (__c - '0'); > else > break; > } > if (__i == 2 || __i == 4) > __tm->tm_year = __i == 2 ? __value : __value - 1900; > else > __err |= ios_base::failbit; > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _OutIter> > _OutIter > time_put<_CharT, _OutIter>:: > put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, > const _CharT* __beg, const _CharT* __end) const > { > const locale& __loc = __io._M_getloc(); > ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc); > for (; __beg != __end; ++__beg) > if (__ctype.narrow(*__beg, 0) != '%') > { > *__s = *__beg; > ++__s; > } > else if (++__beg != __end) > { > char __format; > char __mod = 0; > const char __c = __ctype.narrow(*__beg, 0); > if (__c != 'E' && __c != 'O') > __format = __c; > else if (++__beg != __end) > { > __mod = __c; > __format = __ctype.narrow(*__beg, 0); > } > else > break; > __s = this->do_put(__s, __io, __fill, __tm, __format, __mod); > } > else > break; > return __s; > } > > template<typename _CharT, typename _OutIter> > _OutIter > time_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, > char __format, char __mod) const > { > const locale& __loc = __io._M_getloc(); > ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc); > __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); > > > > const size_t __maxlen = 64; > char_type* __res = > static_cast<char_type*>(__builtin_alloca(sizeof(char_type) * __maxlen)); > > > > > > > char_type __fmt[4]; > __fmt[0] = __ctype.widen('%'); > if (!__mod) > { > __fmt[1] = __format; > __fmt[2] = char_type(); > } > else > { > __fmt[1] = __mod; > __fmt[2] = __format; > __fmt[3] = char_type(); > } > > __tp._M_put(__res, __maxlen, __fmt, __tm); > > > return std::__write(__s, __res, char_traits<char_type>::length(__res)); > } > > > > template<typename _CharT> > int > collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const > { return 0; } > > > template<typename _CharT> > size_t > collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const > { return 0; } > > template<typename _CharT> > int > collate<_CharT>:: > do_compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const > { > > > const string_type __one(__lo1, __hi1); > const string_type __two(__lo2, __hi2); > > const _CharT* __p = __one.c_str(); > const _CharT* __pend = __one.data() + __one.length(); > const _CharT* __q = __two.c_str(); > const _CharT* __qend = __two.data() + __two.length(); > > > > > for (;;) > { > const int __res = _M_compare(__p, __q); > if (__res) > return __res; > > __p += char_traits<_CharT>::length(__p); > __q += char_traits<_CharT>::length(__q); > if (__p == __pend && __q == __qend) > return 0; > else if (__p == __pend) > return -1; > else if (__q == __qend) > return 1; > > __p++; > __q++; > } > } > > template<typename _CharT> > typename collate<_CharT>::string_type > collate<_CharT>:: > do_transform(const _CharT* __lo, const _CharT* __hi) const > { > > string_type __str(__lo, __hi); > > const _CharT* __p = __str.c_str(); > const _CharT* __pend = __str.data() + __str.length(); > > size_t __len = (__hi - __lo) * 2; > > string_type __ret; > > > > > for (;;) > { > > _CharT* __c = > static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len)); > size_t __res = _M_transform(__c, __p, __len); > > > if (__res >= __len) > { > __len = __res + 1; > __c = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len)); > __res = _M_transform(__c, __p, __res + 1); > } > > __ret.append(__c, __res); > __p += char_traits<_CharT>::length(__p); > if (__p == __pend) > return __ret; > > __p++; > __ret.push_back(_CharT()); > } > } > > template<typename _CharT> > long > collate<_CharT>:: > do_hash(const _CharT* __lo, const _CharT* __hi) const > { > unsigned long __val = 0; > for (; __lo < __hi; ++__lo) > __val = *__lo + ((__val << 7) | > (__val >> (numeric_limits<unsigned long>::digits - 7))); > return static_cast<long>(__val); > } ># 2385 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _Traits> > void > __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, > _CharT* __news, const _CharT* __olds, > const streamsize __newlen, > const streamsize __oldlen, const bool __num) > { > const size_t __plen = static_cast<size_t>(__newlen - __oldlen); > const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; > > > if (__adjust == ios_base::left) > { > _Traits::copy(__news, const_cast<_CharT*>(__olds), __oldlen); > _Traits::assign(__news + __oldlen, __plen, __fill); > return; > } > > size_t __mod = 0; > if (__adjust == ios_base::internal && __num) > { > > > > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > const bool __testsign = (__ctype.widen('-') == __olds[0] > || __ctype.widen('+') == __olds[0]); > const bool __testhex = (__ctype.widen('0') == __olds[0] > && __oldlen > 1 > && (__ctype.widen('x') == __olds[1] > || __ctype.widen('X') == __olds[1])); > if (__testhex) > { > __news[0] = __olds[0]; > __news[1] = __olds[1]; > __mod = 2; > __news += 2; > } > else if (__testsign) > { > __news[0] = __olds[0]; > __mod = 1; > ++__news; > } > > } > _Traits::assign(__news, __plen, __fill); > _Traits::copy(__news + __plen, const_cast<_CharT*>(__olds + __mod), > __oldlen - __mod); > } > > bool > __verify_grouping(const char* __grouping, size_t __grouping_size, > const string& __grouping_tmp) > { > const size_t __n = __grouping_tmp.size() - 1; > const size_t __min = std::min(__n, __grouping_size - 1); > size_t __i = __n; > bool __test = true; > > > > > for (size_t __j = 0; __j < __min && __test; --__i, ++__j) > __test = __grouping_tmp[__i] == __grouping[__j]; > for (; __i && __test; --__i) > __test = __grouping_tmp[__i] == __grouping[__min]; > > > __test &= __grouping_tmp[0] <= __grouping[__min]; > return __test; > } > > template<typename _CharT> > _CharT* > __add_grouping(_CharT* __s, _CharT __sep, > const char* __gbeg, size_t __gsize, > const _CharT* __first, const _CharT* __last) > { > if (__last - __first > *__gbeg) > { > const bool __bump = __gsize != 1; > __s = std::__add_grouping(__s, __sep, __gbeg + __bump, > __gsize - __bump, __first, > __last - *__gbeg); > __first = __last - *__gbeg; > *__s++ = __sep; > } > do > *__s++ = *__first++; > while (__first != __last); > return __s; > } > > > > > > extern template class moneypunct<char, false>; > extern template class moneypunct<char, true>; > extern template class moneypunct_byname<char, false>; > extern template class moneypunct_byname<char, true>; > extern template class money_get<char>; > extern template class money_put<char>; > extern template class numpunct<char>; > extern template class numpunct_byname<char>; > extern template class num_get<char>; > extern template class num_put<char>; > extern template class __timepunct<char>; > extern template class time_put<char>; > extern template class time_put_byname<char>; > extern template class time_get<char>; > extern template class time_get_byname<char>; > extern template class messages<char>; > extern template class messages_byname<char>; > extern template class ctype_byname<char>; > extern template class codecvt_byname<char, char, mbstate_t>; > extern template class collate<char>; > extern template class collate_byname<char>; > > extern template > const codecvt<char, char, mbstate_t>& > use_facet<codecvt<char, char, mbstate_t> >(const locale&); > > extern template > const collate<char>& > use_facet<collate<char> >(const locale&); > > extern template > const numpunct<char>& > use_facet<numpunct<char> >(const locale&); > > extern template > const num_put<char>& > use_facet<num_put<char> >(const locale&); > > extern template > const num_get<char>& > use_facet<num_get<char> >(const locale&); > > extern template > const moneypunct<char, true>& > use_facet<moneypunct<char, true> >(const locale&); > > extern template > const moneypunct<char, false>& > use_facet<moneypunct<char, false> >(const locale&); > > extern template > const money_put<char>& > use_facet<money_put<char> >(const locale&); > > extern template > const money_get<char>& > use_facet<money_get<char> >(const locale&); > > extern template > const __timepunct<char>& > use_facet<__timepunct<char> >(const locale&); > > extern template > const time_put<char>& > use_facet<time_put<char> >(const locale&); > > extern template > const time_get<char>& > use_facet<time_get<char> >(const locale&); > > extern template > const messages<char>& > use_facet<messages<char> >(const locale&); > > extern template > bool > has_facet<ctype<char> >(const locale&); > > extern template > bool > has_facet<codecvt<char, char, mbstate_t> >(const locale&); > > extern template > bool > has_facet<collate<char> >(const locale&); > > extern template > bool > has_facet<numpunct<char> >(const locale&); > > extern template > bool > has_facet<num_put<char> >(const locale&); > > extern template > bool > has_facet<num_get<char> >(const locale&); > > extern template > bool > has_facet<moneypunct<char> >(const locale&); > > extern template > bool > has_facet<money_put<char> >(const locale&); > > extern template > bool > has_facet<money_get<char> >(const locale&); > > extern template > bool > has_facet<__timepunct<char> >(const locale&); > > extern template > bool > has_facet<time_put<char> >(const locale&); > > extern template > bool > has_facet<time_get<char> >(const locale&); > > extern template > bool > has_facet<messages<char> >(const locale&); > > > extern template class moneypunct<wchar_t, false>; > extern template class moneypunct<wchar_t, true>; > extern template class moneypunct_byname<wchar_t, false>; > extern template class moneypunct_byname<wchar_t, true>; > extern template class money_get<wchar_t>; > extern template class money_put<wchar_t>; > extern template class numpunct<wchar_t>; > extern template class numpunct_byname<wchar_t>; > extern template class num_get<wchar_t>; > extern template class num_put<wchar_t>; > extern template class __timepunct<wchar_t>; > extern template class time_put<wchar_t>; > extern template class time_put_byname<wchar_t>; > extern template class time_get<wchar_t>; > extern template class time_get_byname<wchar_t>; > extern template class messages<wchar_t>; > extern template class messages_byname<wchar_t>; > extern template class ctype_byname<wchar_t>; > extern template class codecvt_byname<wchar_t, char, mbstate_t>; > extern template class collate<wchar_t>; > extern template class collate_byname<wchar_t>; > > extern template > const codecvt<wchar_t, char, mbstate_t>& > use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&); > > extern template > const collate<wchar_t>& > use_facet<collate<wchar_t> >(const locale&); > > extern template > const numpunct<wchar_t>& > use_facet<numpunct<wchar_t> >(const locale&); > > extern template > const num_put<wchar_t>& > use_facet<num_put<wchar_t> >(const locale&); > > extern template > const num_get<wchar_t>& > use_facet<num_get<wchar_t> >(const locale&); > > extern template > const moneypunct<wchar_t, true>& > use_facet<moneypunct<wchar_t, true> >(const locale&); > > extern template > const moneypunct<wchar_t, false>& > use_facet<moneypunct<wchar_t, false> >(const locale&); > > extern template > const money_put<wchar_t>& > use_facet<money_put<wchar_t> >(const locale&); > > extern template > const money_get<wchar_t>& > use_facet<money_get<wchar_t> >(const locale&); > > extern template > const __timepunct<wchar_t>& > use_facet<__timepunct<wchar_t> >(const locale&); > > extern template > const time_put<wchar_t>& > use_facet<time_put<wchar_t> >(const locale&); > > extern template > const time_get<wchar_t>& > use_facet<time_get<wchar_t> >(const locale&); > > extern template > const messages<wchar_t>& > use_facet<messages<wchar_t> >(const locale&); > > extern template > bool > has_facet<ctype<wchar_t> >(const locale&); > > extern template > bool > has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&); > > extern template > bool > has_facet<collate<wchar_t> >(const locale&); > > extern template > bool > has_facet<numpunct<wchar_t> >(const locale&); > > extern template > bool > has_facet<num_put<wchar_t> >(const locale&); > > extern template > bool > has_facet<num_get<wchar_t> >(const locale&); > > extern template > bool > has_facet<moneypunct<wchar_t> >(const locale&); > > extern template > bool > has_facet<money_put<wchar_t> >(const locale&); > > extern template > bool > has_facet<money_get<wchar_t> >(const locale&); > > extern template > bool > has_facet<__timepunct<wchar_t> >(const locale&); > > extern template > bool > has_facet<time_put<wchar_t> >(const locale&); > > extern template > bool > has_facet<time_get<wchar_t> >(const locale&); > > extern template > bool > has_facet<messages<wchar_t> >(const locale&); > > >} ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/locale" 2 3 ># 41 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/istream.tcc" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 1 3 ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > ># 44 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > > > >namespace std >{ ># 57 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > template<typename _CharT, typename _Traits> > class basic_ostream : virtual public basic_ios<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_ios<_CharT, _Traits> __ios_type; > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > > __num_put_type; > typedef ctype<_CharT> __ctype_type; > > template<typename _CharT2, typename _Traits2> > friend basic_ostream<_CharT2, _Traits2>& > operator<<(basic_ostream<_CharT2, _Traits2>&, _CharT2); > > template<typename _Traits2> > friend basic_ostream<char, _Traits2>& > operator<<(basic_ostream<char, _Traits2>&, char); > > template<typename _CharT2, typename _Traits2> > friend basic_ostream<_CharT2, _Traits2>& > operator<<(basic_ostream<_CharT2, _Traits2>&, const _CharT2*); > > template<typename _Traits2> > friend basic_ostream<char, _Traits2>& > operator<<(basic_ostream<char, _Traits2>&, const char*); > > template<typename _CharT2, typename _Traits2> > friend basic_ostream<_CharT2, _Traits2>& > operator<<(basic_ostream<_CharT2, _Traits2>&, const char*); ># 104 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > explicit > basic_ostream(__streambuf_type* __sb) > { this->init(__sb); } > > > > > > > virtual > ~basic_ostream() { } > > > class sentry; > friend class sentry; ># 130 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > inline __ostream_type& > operator<<(__ostream_type& (*__pf)(__ostream_type&)); > > inline __ostream_type& > operator<<(__ios_type& (*__pf)(__ios_type&)); > > inline __ostream_type& > operator<<(ios_base& (*__pf) (ios_base&)); ># 167 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > operator<<(long __n); > > __ostream_type& > operator<<(unsigned long __n); > > __ostream_type& > operator<<(bool __n); > > __ostream_type& > operator<<(short __n) > { > ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; > if (__fmt & ios_base::oct || __fmt & ios_base::hex) > return this->operator<<(static_cast<unsigned long> > (static_cast<unsigned short>(__n))); > else > return this->operator<<(static_cast<long>(__n)); > } > > __ostream_type& > operator<<(unsigned short __n) > { return this->operator<<(static_cast<unsigned long>(__n)); } > > __ostream_type& > operator<<(int __n) > { > ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; > if (__fmt & ios_base::oct || __fmt & ios_base::hex) > return this->operator<<(static_cast<unsigned long> > (static_cast<unsigned int>(__n))); > else > return this->operator<<(static_cast<long>(__n)); > } > > __ostream_type& > operator<<(unsigned int __n) > { return this->operator<<(static_cast<unsigned long>(__n)); } > > > __ostream_type& > operator<<(long long __n); > > __ostream_type& > operator<<(unsigned long long __n); > > > __ostream_type& > operator<<(double __f); > > __ostream_type& > operator<<(float __f) > { return this->operator<<(static_cast<double>(__f)); } > > __ostream_type& > operator<<(long double __f); > > __ostream_type& > operator<<(const void* __p); ># 248 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > operator<<(__streambuf_type* __sb); ># 281 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > put(char_type __c); > > > void > _M_write(const char_type* __s, streamsize __n) > { > streamsize __put = this->rdbuf()->sputn(__s, __n); > if (__put != __n) > this->setstate(ios_base::badbit); > } ># 309 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > write(const char_type* __s, streamsize __n); ># 322 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > flush(); ># 333 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > pos_type > tellp(); ># 344 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > seekp(pos_type); ># 356 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > __ostream_type& > seekp(off_type, ios_base::seekdir); > > protected: > explicit > basic_ostream() { } > }; ># 374 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > template <typename _CharT, typename _Traits> > class basic_ostream<_CharT, _Traits>::sentry > { > > bool _M_ok; > basic_ostream<_CharT,_Traits>& _M_os; > > public: ># 393 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > explicit > sentry(basic_ostream<_CharT,_Traits>& __os); ># 403 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > ~sentry() > { > > if (_M_os.flags() & ios_base::unitbuf && !uncaught_exception()) > { > > if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) > _M_os.setstate(ios_base::badbit); > } > } ># 421 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > operator bool() const > { return _M_ok; } > }; ># 442 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c); > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) > { return (__out << __out.widen(__c)); } > > > template <class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, char __c); > > > template<class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, signed char __c) > { return (__out << static_cast<char>(__c)); } > > template<class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c) > { return (__out << static_cast<char>(__c)); } ># 482 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s); > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits> & > operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); > > > template<class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const char* __s); > > > template<class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s) > { return (__out << reinterpret_cast<const char*>(__s)); } > > template<class _Traits> > basic_ostream<char, _Traits> & > operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s) > { return (__out << reinterpret_cast<const char*>(__s)); } ># 516 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 3 > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > endl(basic_ostream<_CharT, _Traits>& __os) > { return flush(__os.put(__os.widen('\n'))); } > > > > > > > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > ends(basic_ostream<_CharT, _Traits>& __os) > { return __os.put(_CharT()); } > > > > > > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > flush(basic_ostream<_CharT, _Traits>& __os) > { return __os.flush(); } > >} > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ostream.tcc" 1 3 ># 38 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ostream.tcc" 3 > ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/ostream.tcc" 3 > > > >namespace std >{ > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>::sentry:: > sentry(basic_ostream<_CharT, _Traits>& __os) > : _M_ok(false), _M_os(__os) > { > > if (__os.tie() && __os.good()) > __os.tie()->flush(); > > if (__os.good()) > _M_ok = true; > else > __os.setstate(ios_base::failbit); > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(__ostream_type& (*__pf)(__ostream_type&)) > { > > > > return __pf(*this); > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(__ios_type& (*__pf)(__ios_type&)) > { > > > > __pf(*this); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(ios_base& (*__pf)(ios_base&)) > { > > > > __pf(*this); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(bool __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __n).failed()) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(long __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > bool __b = false; > const char_type __c = this->fill(); > const ios_base::fmtflags __fmt = (this->flags() > & ios_base::basefield); > const __num_put_type& __np = __check_facet(this->_M_num_put); > if ((__fmt & ios_base::oct) || (__fmt & ios_base::hex)) > { > const unsigned long __l = static_cast<unsigned long>(__n); > __b = __np.put(*this, *this, __c, __l).failed(); > } > else > __b = __np.put(*this, *this, __c, __n).failed(); > if (__b) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(unsigned long __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __n).failed()) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(long long __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > bool __b = false; > const char_type __c = this->fill(); > const ios_base::fmtflags __fmt = (this->flags() > & ios_base::basefield); > const __num_put_type& __np = __check_facet(this->_M_num_put); > if ((__fmt & ios_base::oct) || (__fmt & ios_base::hex)) > { > const unsigned long long __l = (static_cast< > unsigned long long>(__n)); > __b = __np.put(*this, *this, __c, __l).failed(); > } > else > __b = __np.put(*this, *this, __c, __n).failed(); > if (__b) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(unsigned long long __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __n).failed()) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(double __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __n).failed()) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(long double __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __n).failed()) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(const void* __n) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __n).failed()) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(__streambuf_type* __sbin) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this); > if (__cerb && __sbin) > { > try > { > if (!__copy_streambufs(__sbin, this->rdbuf())) > __err |= ios_base::failbit; > } > catch(...) > { this->_M_setstate(ios_base::failbit); } > } > else if (!__sbin) > __err |= ios_base::badbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > put(char_type __c) > { > > > > > > > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __put = this->rdbuf()->sputc(__c); > if (traits_type::eq_int_type(__put, traits_type::eof())) > __err |= ios_base::badbit; > } > catch (...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > write(const _CharT* __s, streamsize __n) > { > > > > > > > > sentry __cerb(*this); > if (__cerb) > { > try > { _M_write(__s, __n); } > catch (...) > { this->_M_setstate(ios_base::badbit); } > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > flush() > { > > > > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (this->rdbuf() && this->rdbuf()->pubsync() == -1) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_ostream<_CharT, _Traits>::pos_type > basic_ostream<_CharT, _Traits>:: > tellp() > { > pos_type __ret = pos_type(-1); > try > { > if (!this->fail()) > __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > return __ret; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > seekp(pos_type __pos) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > > const pos_type __p = this->rdbuf()->pubseekpos(__pos, > ios_base::out); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > seekp(off_type __off, ios_base::seekdir __dir) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > > const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, > ios_base::out); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typename __ostream_type::sentry __cerb(__out); > if (__cerb) > { > try > { > const streamsize __w = __out.width(); > streamsize __len = 1; > _CharT* __cs = &__c; > if (__w > __len) > { > __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, > &__c, __w, __len, false); > __len = __w; > } > __out._M_write(__cs, __len); > __out.width(0); > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > return __out; > } > > > template <class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, char __c) > { > typedef basic_ostream<char, _Traits> __ostream_type; > typename __ostream_type::sentry __cerb(__out); > if (__cerb) > { > try > { > const streamsize __w = __out.width(); > streamsize __len = 1; > char* __cs = &__c; > if (__w > __len) > { > __cs = static_cast<char*>(__builtin_alloca(__w)); > __pad<char, _Traits>::_S_pad(__out, __out.fill(), __cs, > &__c, __w, __len, false); > __len = __w; > } > __out._M_write(__cs, __len); > __out.width(0); > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > return __out; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typename __ostream_type::sentry __cerb(__out); > if (__cerb && __s) > { > try > { > const streamsize __w = __out.width(); > streamsize __len = static_cast<streamsize>(_Traits::length(__s)); > if (__w > __len) > { > _CharT* __cs = (static_cast< > _CharT*>(__builtin_alloca(sizeof(_CharT) > * __w))); > __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, > __s, __w, __len, false); > __s = __cs; > __len = __w; > } > __out._M_write(__s, __len); > __out.width(0); > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > else if (!__s) > __out.setstate(ios_base::badbit); > return __out; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > > > > typedef char_traits<char> __traits_type; > typename __ostream_type::sentry __cerb(__out); > if (__cerb && __s) > { > size_t __clen = __traits_type::length(__s); > _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __clen)); > for (size_t __i = 0; __i < __clen; ++__i) > __ws[__i] = __out.widen(__s[__i]); > _CharT* __str = __ws; > > try > { > const streamsize __w = __out.width(); > streamsize __len = static_cast<streamsize>(__clen); > if (__w > __len) > { > _CharT* __cs = (static_cast< > _CharT*>(__builtin_alloca(sizeof(_CharT) > * __w))); > __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, > __ws, __w, __len, false); > __str = __cs; > __len = __w; > } > __out._M_write(__str, __len); > __out.width(0); > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > else if (!__s) > __out.setstate(ios_base::badbit); > return __out; > } > > > template<class _Traits> > basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const char* __s) > { > typedef basic_ostream<char, _Traits> __ostream_type; > typename __ostream_type::sentry __cerb(__out); > if (__cerb && __s) > { > try > { > const streamsize __w = __out.width(); > streamsize __len = static_cast<streamsize>(_Traits::length(__s)); > if (__w > __len) > { > char* __cs = static_cast<char*>(__builtin_alloca(__w)); > __pad<char, _Traits>::_S_pad(__out, __out.fill(), __cs, > __s, __w, __len, false); > __s = __cs; > __len = __w; > } > __out._M_write(__s, __len); > __out.width(0); > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > else if (!__s) > __out.setstate(ios_base::badbit); > return __out; > } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, > const basic_string<_CharT, _Traits, _Alloc>& __str) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typename __ostream_type::sentry __cerb(__out); > if (__cerb) > { > const streamsize __w = __out.width(); > streamsize __len = static_cast<streamsize>(__str.size()); > const _CharT* __s = __str.data(); > > > > if (__w > __len) > { > _CharT* __cs = (static_cast< > _CharT*>(__builtin_alloca(sizeof(_CharT) * __w))); > __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, __s, > __w, __len, false); > __s = __cs; > __len = __w; > } > __out._M_write(__s, __len); > __out.width(0); > } > return __out; > } > > > > > > extern template class basic_ostream<char>; > extern template ostream& endl(ostream&); > extern template ostream& ends(ostream&); > extern template ostream& flush(ostream&); > extern template ostream& operator<<(ostream&, char); > extern template ostream& operator<<(ostream&, unsigned char); > extern template ostream& operator<<(ostream&, signed char); > extern template ostream& operator<<(ostream&, const char*); > extern template ostream& operator<<(ostream&, const unsigned char*); > extern template ostream& operator<<(ostream&, const signed char*); > > > extern template class basic_ostream<wchar_t>; > extern template wostream& endl(wostream&); > extern template wostream& ends(wostream&); > extern template wostream& flush(wostream&); > extern template wostream& operator<<(wostream&, wchar_t); > extern template wostream& operator<<(wostream&, char); > extern template wostream& operator<<(wostream&, const wchar_t*); > extern template wostream& operator<<(wostream&, const char*); > > >} ># 546 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/ostream" 2 3 ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/istream.tcc" 2 3 > >namespace std >{ > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>::sentry:: > sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > if (__in.good()) > { > if (__in.tie()) > __in.tie()->flush(); > if (!__noskip && (__in.flags() & ios_base::skipws)) > { > const __int_type __eof = traits_type::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > const __ctype_type& __ct = __check_facet(__in._M_ctype); > while (!traits_type::eq_int_type(__c, __eof) > && __ct.is(ctype_base::space, > traits_type::to_char_type(__c))) > __c = __sb->snextc(); > > > > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > } > > if (__in.good() && __err == ios_base::goodbit) > _M_ok = true; > else > { > __err |= ios_base::failbit; > __in.setstate(__err); > } > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(__istream_type& (*__pf)(__istream_type&)) > { return __pf(*this); } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(__ios_type& (*__pf)(__ios_type&)) > { > __pf(*this); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(ios_base& (*__pf)(ios_base&)) > { > __pf(*this); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(bool& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(short& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > long __l; > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __l); > > > if (!(__err & ios_base::failbit) > && (numeric_limits<short>::min() <= __l > && __l <= numeric_limits<short>::max())) > __n = __l; > else > __err |= ios_base::failbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(unsigned short& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(int& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > long __l; > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __l); > > > if (!(__err & ios_base::failbit) > && (numeric_limits<int>::min() <= __l > && __l <= numeric_limits<int>::max())) > __n = __l; > else > __err |= ios_base::failbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(unsigned int& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(long& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(unsigned long& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(long long& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(unsigned long long& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(float& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(double& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(long double& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(void*& __n) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __n); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(__streambuf_type* __sbout) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, false); > if (__cerb && __sbout) > { > try > { > if (!__copy_streambufs(this->rdbuf(), __sbout)) > __err |= ios_base::failbit; > } > catch(...) > { this->_M_setstate(ios_base::failbit); } > } > else if (!__sbout) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::int_type > basic_istream<_CharT, _Traits>:: > get(void) > { > const int_type __eof = traits_type::eof(); > int_type __c = __eof; > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > __c = this->rdbuf()->sbumpc(); > > if (!traits_type::eq_int_type(__c, __eof)) > _M_gcount = 1; > else > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return __c; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(char_type& __c) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __cb = this->rdbuf()->sbumpc(); > > if (!traits_type::eq_int_type(__cb, traits_type::eof())) > { > _M_gcount = 1; > __c = traits_type::to_char_type(__cb); > } > else > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(char_type* __s, streamsize __n, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > while (_M_gcount + 1 < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim)) > { > *__s++ = traits_type::to_char_type(__c); > ++_M_gcount; > __c = __sb->snextc(); > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > *__s = char_type(); > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(__streambuf_type& __sb, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __this_sb = this->rdbuf(); > int_type __c = __this_sb->sgetc(); > char_type __c2 = traits_type::to_char_type(__c); > > while (!traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim) > && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) > { > ++_M_gcount; > __c = __this_sb->snextc(); > __c2 = traits_type::to_char_type(__c); > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > getline(char_type* __s, streamsize __n, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > while (_M_gcount + 1 < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim)) > { > streamsize __size = std::min(streamsize(__sb->egptr() > - __sb->gptr()), > __n - _M_gcount - 1); > if (__size > 1) > { > const char_type* __p = traits_type::find(__sb->gptr(), > __size, > __delim); > if (__p) > __size = __p - __sb->gptr(); > traits_type::copy(__s, __sb->gptr(), __size); > __s += __size; > __sb->gbump(__size); > _M_gcount += __size; > __c = __sb->sgetc(); > } > else > { > *__s++ = traits_type::to_char_type(__c); > ++_M_gcount; > __c = __sb->snextc(); > } > } > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > else if (traits_type::eq_int_type(__c, __idelim)) > { > ++_M_gcount; > __sb->sbumpc(); > } > else > __err |= ios_base::failbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > *__s = char_type(); > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(streamsize __n, int_type __delim) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb && __n > 0) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c; > > if (__n != numeric_limits<streamsize>::max()) > --__n; > while (_M_gcount <= __n > && !traits_type::eq_int_type(__c = __sb->sbumpc(), __eof)) > { > ++_M_gcount; > if (traits_type::eq_int_type(__c, __delim)) > break; > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::int_type > basic_istream<_CharT, _Traits>:: > peek(void) > { > int_type __c = traits_type::eof(); > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > __c = this->rdbuf()->sgetc(); > if (traits_type::eq_int_type(__c, traits_type::eof())) > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return __c; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > read(char_type* __s, streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > _M_gcount = this->rdbuf()->sgetn(__s, __n); > if (_M_gcount != __n) > __err |= (ios_base::eofbit | ios_base::failbit); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > streamsize > basic_istream<_CharT, _Traits>:: > readsome(char_type* __s, streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > > const streamsize __num = this->rdbuf()->in_avail(); > if (__num > 0) > _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); > else if (__num == -1) > __err |= ios_base::eofbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return _M_gcount; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > putback(char_type __c) > { > > > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > if (!__sb > || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > unget(void) > { > > > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > if (!__sb > || traits_type::eq_int_type(__sb->sungetc(), __eof)) > __err |= ios_base::badbit; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > int > basic_istream<_CharT, _Traits>:: > sync(void) > { > > > int __ret = -1; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > __streambuf_type* __sb = this->rdbuf(); > if (__sb) > { > if (__sb->pubsync() == -1) > __err |= ios_base::badbit; > else > __ret = 0; > } > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return __ret; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::pos_type > basic_istream<_CharT, _Traits>:: > tellg(void) > { > > > pos_type __ret = pos_type(-1); > try > { > if (!this->fail()) > __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > return __ret; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > seekg(pos_type __pos) > { > > > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > const pos_type __p = this->rdbuf()->pubseekpos(__pos, > ios_base::in); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > seekg(off_type __off, ios_base::seekdir __dir) > { > > > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, > ios_base::in); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::int_type __int_type; > > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __int_type __cb = __in.rdbuf()->sbumpc(); > if (!_Traits::eq_int_type(__cb, _Traits::eof())) > __c = _Traits::to_char_type(__cb); > else > __err |= (ios_base::eofbit | ios_base::failbit); > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > if (__err) > __in.setstate(__err); > } > return __in; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::__streambuf_type __streambuf_type; > typedef typename _Traits::int_type int_type; > typedef _CharT char_type; > typedef ctype<_CharT> __ctype_type; > > streamsize __extracted = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > try > { > > streamsize __num = __in.width(); > if (__num <= 0) > __num = numeric_limits<streamsize>::max(); > > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > > const int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > int_type __c = __sb->sgetc(); > > while (__extracted < __num - 1 > && !_Traits::eq_int_type(__c, __eof) > && !__ct.is(ctype_base::space, > _Traits::to_char_type(__c))) > { > *__s++ = _Traits::to_char_type(__c); > ++__extracted; > __c = __sb->snextc(); > } > if (_Traits::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > > > > *__s = char_type(); > __in.width(0); > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > } > if (!__extracted) > __err |= ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT,_Traits>& > ws(basic_istream<_CharT,_Traits>& __in) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::__streambuf_type __streambuf_type; > typedef typename __istream_type::__ctype_type __ctype_type; > typedef typename __istream_type::int_type __int_type; > > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > const __int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > while (!_Traits::eq_int_type(__c, __eof) > && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) > __c = __sb->snextc(); > > if (_Traits::eq_int_type(__c, __eof)) > __in.setstate(ios_base::eofbit); > return __in; > } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT, _Traits, _Alloc>& __str) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::int_type __int_type; > typedef typename __istream_type::__streambuf_type __streambuf_type; > typedef typename __istream_type::__ctype_type __ctype_type; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > > __size_type __extracted = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > try > { > > __str.erase(); > _CharT __buf[128]; > __size_type __len = 0; > const streamsize __w = __in.width(); > const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) > : __str.max_size(); > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > const __int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > while (__extracted < __n > && !_Traits::eq_int_type(__c, __eof) > && !__ct.is(ctype_base::space, _Traits::to_char_type(__c))) > { > if (__len == sizeof(__buf) / sizeof(_CharT)) > { > __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); > __len = 0; > } > __buf[__len++] = _Traits::to_char_type(__c); > ++__extracted; > __c = __sb->snextc(); > } > __str.append(__buf, __len); > > if (_Traits::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > __in.width(0); > } > catch(...) > { > > > > __in._M_setstate(ios_base::badbit); > } > } > > if (!__extracted) > __err |= ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::int_type __int_type; > typedef typename __istream_type::__streambuf_type __streambuf_type; > typedef typename __istream_type::__ctype_type __ctype_type; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > > __size_type __extracted = 0; > const __size_type __n = __str.max_size(); > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > typename __istream_type::sentry __cerb(__in, true); > if (__cerb) > { > try > { > > __str.erase(); > _CharT __buf[128]; > __size_type __len = 0; > const __int_type __idelim = _Traits::to_int_type(__delim); > const __int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > while (__extracted < __n > && !_Traits::eq_int_type(__c, __eof) > && !_Traits::eq_int_type(__c, __idelim)) > { > if (__len == sizeof(__buf) / sizeof(_CharT)) > { > __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); > __len = 0; > } > __buf[__len++] = _Traits::to_char_type(__c); > ++__extracted; > __c = __sb->snextc(); > } > __str.append(__buf, __len); > > if (_Traits::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > else if (_Traits::eq_int_type(__c, __idelim)) > { > ++__extracted; > __sb->sbumpc(); > } > else > __err |= ios_base::failbit; > } > catch(...) > { > > > > __in._M_setstate(ios_base::badbit); > } > } > if (!__extracted) > __err |= ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > template<class _CharT, class _Traits, class _Alloc> > inline basic_istream<_CharT,_Traits>& > getline(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT,_Traits,_Alloc>& __str) > { return getline(__in, __str, __in.widen('\n')); } > > > > > > extern template class basic_istream<char>; > extern template istream& ws(istream&); > extern template istream& operator>>(istream&, char&); > extern template istream& operator>>(istream&, char*); > extern template istream& operator>>(istream&, unsigned char&); > extern template istream& operator>>(istream&, signed char&); > extern template istream& operator>>(istream&, unsigned char*); > extern template istream& operator>>(istream&, signed char*); > > > extern template class basic_istream<wchar_t>; > extern template wistream& ws(wistream&); > extern template wistream& operator>>(wistream&, wchar_t&); > extern template wistream& operator>>(wistream&, wchar_t*); > > >} ># 772 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/istream" 2 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 2 3 > > >namespace std >{ ># 62 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_stringbuf : public basic_streambuf<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > > > > > > > typedef basic_streambuf<char_type, traits_type> __streambuf_type; > typedef basic_string<char_type, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > > > protected: > > > > > > ios_base::openmode _M_mode; > > > > > > > > __string_type _M_string; > > public: ># 112 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out) > : __streambuf_type(), _M_mode(), _M_string() > { _M_stringbuf_init(__mode); } ># 125 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_stringbuf(const __string_type& __str, > ios_base::openmode __mode = ios_base::in | ios_base::out) > : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size()) > { _M_stringbuf_init(__mode); } ># 140 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > __string_type > str() const > { > const bool __testout = this->_M_mode & ios_base::out; > if (__testout) > { > > if (this->pptr() > this->egptr()) > return __string_type(this->pbase(), this->pptr()); > else > return __string_type(this->pbase(), this->egptr()); > } > else > return _M_string; > } ># 163 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > void > str(const __string_type& __s) > { > > _M_string.assign(__s.data(), __s.size()); > _M_stringbuf_init(this->_M_mode); > } > > protected: > > > > > > > void > _M_stringbuf_init(ios_base::openmode __mode) > { > this->_M_mode = __mode; > > __size_type __len = 0; > if (this->_M_mode & (ios_base::ate | ios_base::app)) > __len = _M_string.size(); > _M_sync(const_cast<char_type*>(_M_string.data()), 0, __len); > } > > > virtual int_type > underflow(); > > > virtual int_type > pbackfail(int_type __c = traits_type::eof()); > > > virtual int_type > overflow(int_type __c = traits_type::eof()); ># 212 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > virtual __streambuf_type* > setbuf(char_type* __s, streamsize __n) > { > if (__s && __n >= 0) > { > > > > > > > _M_string = __string_type(__s, __n); > > > _M_sync(__s, 0, 0); > } > return this; > } > > > virtual pos_type > seekoff(off_type __off, ios_base::seekdir __way, > ios_base::openmode __mode = ios_base::in | ios_base::out); > > > virtual pos_type > seekpos(pos_type __sp, > ios_base::openmode __mode = ios_base::in | ios_base::out); ># 252 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > void > _M_sync(char_type* __base, __size_type __i, __size_type __o) > { > const bool __testin = this->_M_mode & ios_base::in; > const bool __testout = this->_M_mode & ios_base::out; > const __size_type __len = _M_string.size(); > > if (__testin) > this->setg(__base, __base + __i, __base + __len); > if (__testout) > { > this->setp(__base, __base + _M_string.capacity()); > this->pbump(__o); > > > > > if (!__testin) > this->setg(__base + __len, __base + __len, __base + __len); > } > } > > > > void > _M_update_egptr() > { > const bool __testin = this->_M_mode & ios_base::in; > const bool __testout = this->_M_mode & ios_base::out; > > if (__testout && this->pptr() > this->egptr()) > if (__testin) > this->setg(this->eback(), this->gptr(), this->pptr()); > else > this->setg(this->pptr(), this->pptr(), this->pptr()); > } > }; ># 300 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_istringstream : public basic_istream<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; > typedef basic_istream<char_type, traits_type> __istream_type; > > private: > > > > > > __stringbuf_type _M_stringbuf; > > public: ># 343 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_istringstream(ios_base::openmode __mode = ios_base::in) > : __istream_type(), _M_stringbuf(__mode | ios_base::in) > { this->init(&_M_stringbuf); } ># 363 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_istringstream(const __string_type& __str, > ios_base::openmode __mode = ios_base::in) > : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) > { this->init(&_M_stringbuf); } > > > > > > > > ~basic_istringstream() > { } ># 385 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > __stringbuf_type* > rdbuf() const > { return const_cast<__stringbuf_type*>(&_M_stringbuf); } > > > > > > __string_type > str() const > { return _M_stringbuf.str(); } > > > > > > > > void > str(const __string_type& __s) > { _M_stringbuf.str(__s); } > }; ># 418 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > template <typename _CharT, typename _Traits, typename _Alloc> > class basic_ostringstream : public basic_ostream<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; > typedef basic_ostream<char_type, traits_type> __ostream_type; > > private: > > > > > > __stringbuf_type _M_stringbuf; > > public: ># 461 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_ostringstream(ios_base::openmode __mode = ios_base::out) > : __ostream_type(), _M_stringbuf(__mode | ios_base::out) > { this->init(&_M_stringbuf); } ># 481 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_ostringstream(const __string_type& __str, > ios_base::openmode __mode = ios_base::out) > : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) > { this->init(&_M_stringbuf); } > > > > > > > > ~basic_ostringstream() > { } ># 503 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > __stringbuf_type* > rdbuf() const > { return const_cast<__stringbuf_type*>(&_M_stringbuf); } > > > > > > __string_type > str() const > { return _M_stringbuf.str(); } > > > > > > > > void > str(const __string_type& __s) > { _M_stringbuf.str(__s); } > }; ># 536 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > template <typename _CharT, typename _Traits, typename _Alloc> > class basic_stringstream : public basic_iostream<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; > typedef basic_iostream<char_type, traits_type> __iostream_type; > > private: > > > > > > __stringbuf_type _M_stringbuf; > > public: ># 577 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in) > : __iostream_type(), _M_stringbuf(__m) > { this->init(&_M_stringbuf); } ># 595 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > explicit > basic_stringstream(const __string_type& __str, > ios_base::openmode __m = ios_base::out | ios_base::in) > : __iostream_type(), _M_stringbuf(__str, __m) > { this->init(&_M_stringbuf); } > > > > > > > > ~basic_stringstream() > { } ># 617 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 3 > __stringbuf_type* > rdbuf() const > { return const_cast<__stringbuf_type*>(&_M_stringbuf); } > > > > > > __string_type > str() const > { return _M_stringbuf.str(); } > > > > > > > > void > str(const __string_type& __s) > { _M_stringbuf.str(__s); } > }; >} > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/sstream.tcc" 1 3 ># 38 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/sstream.tcc" 3 > ># 39 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/sstream.tcc" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 1 3 ># 41 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/sstream.tcc" 2 3 > >namespace std >{ > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > pbackfail(int_type __c) > { > int_type __ret = traits_type::eof(); > const bool __testeof = traits_type::eq_int_type(__c, __ret); > > if (this->eback() < this->gptr()) > { > const bool __testeq = traits_type::eq(traits_type::to_char_type(__c), > this->gptr()[-1]); > this->gbump(-1); > > > > if (!__testeof && __testeq) > __ret = __c; > else if (__testeof) > __ret = traits_type::not_eof(__c); > else > { > *this->gptr() = traits_type::to_char_type(__c); > __ret = __c; > } > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > overflow(int_type __c) > { > const bool __testout = this->_M_mode & ios_base::out; > if (__builtin_expect(!__testout, false)) > return traits_type::eof(); > > const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); > if (__builtin_expect(__testeof, false)) > return traits_type::not_eof(__c); > > const __size_type __capacity = _M_string.capacity(); > const __size_type __max_size = _M_string.max_size(); > const bool __testput = this->pptr() < this->epptr(); > if (__builtin_expect(!__testput && __capacity == __max_size, false)) > return traits_type::eof(); > > > > if (!__testput) > { > > > > > > > const __size_type __opt_len = std::max(__size_type(2 * __capacity), > __size_type(512)); > const __size_type __len = std::min(__opt_len, __max_size); > __string_type __tmp; > __tmp.reserve(__len); > __tmp.assign(_M_string.data(), this->epptr() - this->pbase()); > _M_string.swap(__tmp); > _M_sync(const_cast<char_type*>(_M_string.data()), > this->gptr() - this->eback(), this->pptr() - this->pbase()); > } > return this->sputc(traits_type::to_char_type(__c)); > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > underflow() > { > int_type __ret = traits_type::eof(); > const bool __testin = this->_M_mode & ios_base::in; > if (__testin) > { > > _M_update_egptr(); > if (this->gptr() < this->egptr()) > __ret = traits_type::to_int_type(*this->gptr()); > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) > { > pos_type __ret = pos_type(off_type(-1)); > bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; > bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; > const bool __testboth = __testin && __testout && __way != ios_base::cur; > __testin &= !(__mode & ios_base::out); > __testout &= !(__mode & ios_base::in); > > if (_M_string.capacity() && (__testin || __testout || __testboth)) > { > char_type* __beg = __testin ? this->eback() : this->pbase(); > > _M_update_egptr(); > > off_type __newoffi = 0; > off_type __newoffo = 0; > if (__way == ios_base::cur) > { > __newoffi = this->gptr() - __beg; > __newoffo = this->pptr() - __beg; > } > else if (__way == ios_base::end) > __newoffo = __newoffi = this->egptr() - __beg; > > if ((__testin || __testboth) > && __newoffi + __off >= 0 > && this->egptr() - __beg >= __newoffi + __off) > { > this->gbump((__beg + __newoffi + __off) - this->gptr()); > __ret = pos_type(__newoffi); > } > if ((__testout || __testboth) > && __newoffo + __off >= 0 > && this->egptr() - __beg >= __newoffo + __off) > { > this->pbump((__beg + __newoffo + __off) - this->pptr()); > __ret = pos_type(__newoffo); > } > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > seekpos(pos_type __sp, ios_base::openmode __mode) > { > pos_type __ret = pos_type(off_type(-1)); > if (_M_string.capacity()) > { > off_type __pos (__sp); > const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; > const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; > char_type* __beg = __testin ? this->eback() : this->pbase(); > > _M_update_egptr(); > > const bool __testpos = 0 <= __pos > && __pos <= this->egptr() - __beg; > if ((__testin || __testout) && __testpos) > { > if (__testin) > this->gbump((__beg + __pos) - this->gptr()); > if (__testout) > this->pbump((__beg + __pos) - this->pptr()); > __ret = pos_type(off_type(__pos)); > } > } > return __ret; > } > > > > > > extern template class basic_stringbuf<char>; > extern template class basic_istringstream<char>; > extern template class basic_ostringstream<char>; > extern template class basic_stringstream<char>; > > > extern template class basic_stringbuf<wchar_t>; > extern template class basic_istringstream<wchar_t>; > extern template class basic_ostringstream<wchar_t>; > extern template class basic_stringstream<wchar_t>; > > >} ># 643 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/sstream" 2 3 ># 24 "config.hpp" 2 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 3 >namespace std >{ > > void > __throw_bad_exception(void); > > > void > __throw_bad_alloc(void); > > > void > __throw_bad_cast(void); > > void > __throw_bad_typeid(void); > > > void > __throw_logic_error(const char* __s); > > void > __throw_domain_error(const char* __s); > > void > __throw_invalid_argument(const char* __s); > > void > __throw_length_error(const char* __s); > > void > __throw_out_of_range(const char* __s); > > void > __throw_runtime_error(const char* __s); > > void > __throw_range_error(const char* __s); > > void > __throw_overflow_error(const char* __s); > > void > __throw_underflow_error(const char* __s); > > > void > __throw_ios_failure(const char* __s); >} ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 2 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 1 3 ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 3 >namespace std >{ > > void > __throw_bad_exception(void); > > > void > __throw_bad_alloc(void); > > > void > __throw_bad_cast(void); > > void > __throw_bad_typeid(void); > > > void > __throw_logic_error(const char* __s); > > void > __throw_domain_error(const char* __s); > > void > __throw_invalid_argument(const char* __s); > > void > __throw_length_error(const char* __s); > > void > __throw_out_of_range(const char* __s); > > void > __throw_runtime_error(const char* __s); > > void > __throw_range_error(const char* __s); > > void > __throw_overflow_error(const char* __s); > > void > __throw_underflow_error(const char* __s); > > > void > __throw_ios_failure(const char* __s); >} ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 2 3 > > >namespace std >{ > > > > > > template<typename _Tp, typename _Alloc> > struct _Vector_base > { > struct _Vector_impl > : public _Alloc { > _Tp* _M_start; > _Tp* _M_finish; > _Tp* _M_end_of_storage; > _Vector_impl (_Alloc const& __a) > : _Alloc(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) > { } > }; > > public: > typedef _Alloc allocator_type; > > allocator_type > get_allocator() const { return *static_cast<const _Alloc*>(&this->_M_impl); } > > _Vector_base(const allocator_type& __a) : _M_impl(__a) > { } > > _Vector_base(size_t __n, const allocator_type& __a) > : _M_impl(__a) > { > this->_M_impl._M_start = this->_M_allocate(__n); > this->_M_impl._M_finish = this->_M_impl._M_start; > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; > } > > ~_Vector_base() > { _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); } > > public: > _Vector_impl _M_impl; > > _Tp* > _M_allocate(size_t __n) { return _M_impl.allocate(__n); } > > void > _M_deallocate(_Tp* __p, size_t __n) > { if (__p) _M_impl.deallocate(__p, __n); } > }; ># 140 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > template<typename _Tp, typename _Alloc = allocator<_Tp> > > class vector : protected _Vector_base<_Tp, _Alloc> > { > > > > typedef _Vector_base<_Tp, _Alloc> _Base; > typedef vector<_Tp, _Alloc> vector_type; > > public: > typedef _Tp value_type; > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator; > typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type> > const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef typename _Base::allocator_type allocator_type; > > protected: > > > > > > using _Base::_M_allocate; > using _Base::_M_deallocate; > using _Base::_M_impl; > > public: > > > > > > explicit > vector(const allocator_type& __a = allocator_type()) > : _Base(__a) { } ># 191 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > vector(size_type __n, const value_type& __value, > const allocator_type& __a = allocator_type()) > : _Base(__n, __a) > { this->_M_impl._M_finish = std::uninitialized_fill_n(this->_M_impl._M_start, > __n, __value); } ># 204 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > explicit > vector(size_type __n) > : _Base(__n, allocator_type()) > { this->_M_impl._M_finish = std::uninitialized_fill_n(this->_M_impl._M_start, > __n, value_type()); } ># 219 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > vector(const vector& __x) > : _Base(__x.size(), __x.get_allocator()) > { this->_M_impl._M_finish = std::uninitialized_copy(__x.begin(), __x.end(), > this->_M_impl._M_start); > } ># 240 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > template<typename _InputIterator> > vector(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Base(__a) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_initialize_dispatch(__first, __last, _Integral()); > } > > > > > > > > ~vector() { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); } ># 266 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > vector& > operator=(const vector& __x); ># 279 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > assign(size_type __n, const value_type& __val) > { _M_fill_assign(__n, __val); } ># 295 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } > > > using _Base::get_allocator; > > > > > > > > iterator > begin() { return iterator (this->_M_impl._M_start); } > > > > > > > const_iterator > begin() const { return const_iterator (this->_M_impl._M_start); } > > > > > > > iterator > end() { return iterator (this->_M_impl._M_finish); } > > > > > > > const_iterator > end() const { return const_iterator (this->_M_impl._M_finish); } > > > > > > > reverse_iterator > rbegin() { return reverse_iterator(end()); } > > > > > > > const_reverse_iterator > rbegin() const { return const_reverse_iterator(end()); } > > > > > > > reverse_iterator > rend() { return reverse_iterator(begin()); } > > > > > > > const_reverse_iterator > rend() const { return const_reverse_iterator(begin()); } > > > > size_type > size() const { return size_type(end() - begin()); } > > > size_type > max_size() const { return size_type(-1) / sizeof(value_type); } ># 392 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > resize(size_type __new_size, const value_type& __x) > { > if (__new_size < size()) > erase(begin() + __new_size, end()); > else > insert(end(), __new_size - size(), __x); > } ># 411 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > resize(size_type __new_size) { resize(__new_size, value_type()); } > > > > > > size_type > capacity() const > { return size_type(const_iterator(this->_M_impl._M_end_of_storage) - begin()); } > > > > > > bool > empty() const { return begin() == end(); } ># 446 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > reserve(size_type __n); ># 461 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > reference > operator[](size_type __n) { return *(begin() + __n); } ># 475 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > const_reference > operator[](size_type __n) const { return *(begin() + __n); } > > protected: > > void > _M_range_check(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("vector::_M_range_check")); > } > > public: ># 499 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > reference > at(size_type __n) { _M_range_check(__n); return (*this)[__n]; } ># 513 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > const_reference > at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; } > > > > > > reference > front() { return *begin(); } > > > > > > const_reference > front() const { return *begin(); } > > > > > > reference > back() { return *(end() - 1); } > > > > > > const_reference > back() const { return *(end() - 1); } ># 555 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > push_back(const value_type& __x) > { > if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) > { > std::_Construct(this->_M_impl._M_finish, __x); > ++this->_M_impl._M_finish; > } > else > _M_insert_aux(end(), __x); > } ># 576 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > pop_back() > { > --this->_M_impl._M_finish; > std::_Destroy(this->_M_impl._M_finish); > } ># 594 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > iterator > insert(iterator __position, const value_type& __x); ># 610 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > insert(iterator __position, size_type __n, const value_type& __x) > { _M_fill_insert(__position, __n, __x); } ># 628 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > template<typename _InputIterator> > void > insert(iterator __position, _InputIterator __first, > _InputIterator __last) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } ># 653 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > iterator > erase(iterator __position); ># 674 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > iterator > erase(iterator __first, iterator __last); ># 686 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > void > swap(vector& __x) > { > std::swap(this->_M_impl._M_start, __x._M_impl._M_start); > std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); > std::swap(this->_M_impl._M_end_of_storage, __x._M_impl._M_end_of_storage); > } > > > > > > > > void > clear() { erase(begin(), end()); } > > protected: > > > > > > > template<typename _ForwardIterator> > pointer > _M_allocate_and_copy(size_type __n, > _ForwardIterator __first, _ForwardIterator __last) > { > pointer __result = this->_M_allocate(__n); > try > { > std::uninitialized_copy(__first, __last, __result); > return __result; > } > catch(...) > { > _M_deallocate(__result, __n); > throw; > } > } > > > > > > template<typename _Integer> > void > _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) > { > this->_M_impl._M_start = _M_allocate(__n); > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; > this->_M_impl._M_finish = std::uninitialized_fill_n(this->_M_impl._M_start, > __n, __value); > } > > > template<typename _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename iterator_traits<_InputIterator>::iterator_category > _IterCategory; > _M_range_initialize(__first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_range_initialize(_InputIterator __first, > _InputIterator __last, input_iterator_tag) > { > for ( ; __first != __last; ++__first) > push_back(*__first); > } > > > template<typename _ForwardIterator> > void > _M_range_initialize(_ForwardIterator __first, > _ForwardIterator __last, forward_iterator_tag) > { > size_type __n = std::distance(__first, __last); > this->_M_impl._M_start = this->_M_allocate(__n); > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; > this->_M_impl._M_finish = std::uninitialized_copy(__first, __last, > this->_M_impl._M_start); > } > > > > > > > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { > _M_fill_assign(static_cast<size_type>(__n), > static_cast<value_type>(__val)); > } > > > template<typename _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename iterator_traits<_InputIterator>::iterator_category > _IterCategory; > _M_assign_aux(__first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_assign_aux(_InputIterator __first, _InputIterator __last, > input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag); > > > > void > _M_fill_assign(size_type __n, const value_type& __val); > > > > > > template<typename _Integer> > void > _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, > __true_type) > { > _M_fill_insert(__pos, static_cast<size_type>(__n), > static_cast<value_type>(__val)); > } > > > template<typename _InputIterator> > void > _M_insert_dispatch(iterator __pos, _InputIterator __first, > _InputIterator __last, __false_type) > { > typedef typename iterator_traits<_InputIterator>::iterator_category > _IterCategory; > _M_range_insert(__pos, __first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_range_insert(iterator __pos, _InputIterator __first, > _InputIterator __last, input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_range_insert(iterator __pos, _ForwardIterator __first, > _ForwardIterator __last, forward_iterator_tag); > > > > void > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); > > > void > _M_insert_aux(iterator __position, const value_type& __x); > }; ># 874 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator==(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y) > { > return __x.size() == __y.size() && > std::equal(__x.begin(), __x.end(), __y.begin()); > } ># 893 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_vector.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator<(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y) > { > return std::lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); > } > > > template<typename _Tp, typename _Alloc> > inline bool > operator!=(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y) > { return __y < __x; } > > > template<typename _Tp, typename _Alloc> > inline bool > operator<=(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>=(const vector<_Tp,_Alloc>& __x, const vector<_Tp,_Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Tp, typename _Alloc> > inline void > swap(vector<_Tp,_Alloc>& __x, vector<_Tp,_Alloc>& __y) > { __x.swap(__y); } >} ># 72 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_bvector.h" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_bvector.h" 3 >namespace std >{ > typedef unsigned long _Bit_type; > enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; > > struct _Bit_reference > { > _Bit_type * _M_p; > _Bit_type _M_mask; > > _Bit_reference(_Bit_type * __x, _Bit_type __y) > : _M_p(__x), _M_mask(__y) { } > > _Bit_reference() : _M_p(0), _M_mask(0) { } > > operator bool() const { return !!(*_M_p & _M_mask); } > > _Bit_reference& > operator=(bool __x) > { > if (__x) > *_M_p |= _M_mask; > else > *_M_p &= ~_M_mask; > return *this; > } > > _Bit_reference& > operator=(const _Bit_reference& __x) > { return *this = bool(__x); } > > bool > operator==(const _Bit_reference& __x) const > { return bool(*this) == bool(__x); } > > bool > operator<(const _Bit_reference& __x) const > { return !bool(*this) && bool(__x); } > > void > flip() { *_M_p ^= _M_mask; } > }; > > struct _Bit_iterator_base : public iterator<random_access_iterator_tag, bool> > { > _Bit_type * _M_p; > unsigned int _M_offset; > > _Bit_iterator_base(_Bit_type * __x, unsigned int __y) > : _M_p(__x), _M_offset(__y) { } > > void > _M_bump_up() > { > if (_M_offset++ == _S_word_bit - 1) > { > _M_offset = 0; > ++_M_p; > } > } > > void > _M_bump_down() > { > if (_M_offset-- == 0) > { > _M_offset = _S_word_bit - 1; > --_M_p; > } > } > > void > _M_incr(ptrdiff_t __i) > { > difference_type __n = __i + _M_offset; > _M_p += __n / _S_word_bit; > __n = __n % _S_word_bit; > if (__n < 0) > { > _M_offset = static_cast<unsigned int>(__n + _S_word_bit); > --_M_p; > } > else > _M_offset = static_cast<unsigned int>(__n); > } > > bool > operator==(const _Bit_iterator_base& __i) const > { return _M_p == __i._M_p && _M_offset == __i._M_offset; } > > bool > operator<(const _Bit_iterator_base& __i) const > { > return _M_p < __i._M_p > || (_M_p == __i._M_p && _M_offset < __i._M_offset); > } > > bool > operator!=(const _Bit_iterator_base& __i) const > { return !(*this == __i); } > > bool > operator>(const _Bit_iterator_base& __i) const > { return __i < *this; } > > bool > operator<=(const _Bit_iterator_base& __i) const > { return !(__i < *this); } > > bool > operator>=(const _Bit_iterator_base& __i) const > { return !(*this < __i); } > }; > > inline ptrdiff_t > operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) > { > return _S_word_bit * (__x._M_p - __y._M_p) + __x._M_offset - __y._M_offset; > } > > struct _Bit_iterator : public _Bit_iterator_base > { > typedef _Bit_reference reference; > typedef _Bit_reference* pointer; > typedef _Bit_iterator iterator; > > _Bit_iterator() : _Bit_iterator_base(0, 0) { } > _Bit_iterator(_Bit_type * __x, unsigned int __y) > : _Bit_iterator_base(__x, __y) { } > > reference > operator*() const { return reference(_M_p, 1UL << _M_offset); } > > iterator& > operator++() > { > _M_bump_up(); > return *this; > } > > iterator > operator++(int) > { > iterator __tmp = *this; > _M_bump_up(); > return __tmp; > } > > iterator& > operator--() > { > _M_bump_down(); > return *this; > } > > iterator > operator--(int) > { > iterator __tmp = *this; > _M_bump_down(); > return __tmp; > } > > iterator& > operator+=(difference_type __i) > { > _M_incr(__i); > return *this; > } > > iterator& > operator-=(difference_type __i) > { > *this += -__i; > return *this; > } > > iterator > operator+(difference_type __i) const > { > iterator __tmp = *this; > return __tmp += __i; > } > > iterator > operator-(difference_type __i) const > { > iterator __tmp = *this; > return __tmp -= __i; > } > > reference > operator[](difference_type __i) > { return *(*this + __i); } > }; > > inline _Bit_iterator > operator+(ptrdiff_t __n, const _Bit_iterator& __x) { return __x + __n; } > > > struct _Bit_const_iterator : public _Bit_iterator_base > { > typedef bool reference; > typedef bool const_reference; > typedef const bool* pointer; > typedef _Bit_const_iterator const_iterator; > > _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } > _Bit_const_iterator(_Bit_type * __x, unsigned int __y) > : _Bit_iterator_base(__x, __y) { } > _Bit_const_iterator(const _Bit_iterator& __x) > : _Bit_iterator_base(__x._M_p, __x._M_offset) { } > > const_reference > operator*() const > { return _Bit_reference(_M_p, 1UL << _M_offset); } > > const_iterator& > operator++() > { > _M_bump_up(); > return *this; > } > > const_iterator > operator++(int) > { > const_iterator __tmp = *this; > _M_bump_up(); > return __tmp; > } > > const_iterator& > operator--() > { > _M_bump_down(); > return *this; > } > > const_iterator > operator--(int) > { > const_iterator __tmp = *this; > _M_bump_down(); > return __tmp; > } > > const_iterator& > operator+=(difference_type __i) > { > _M_incr(__i); > return *this; > } > > const_iterator& > operator-=(difference_type __i) > { > *this += -__i; > return *this; > } > > const_iterator > operator+(difference_type __i) const { > const_iterator __tmp = *this; > return __tmp += __i; > } > > const_iterator > operator-(difference_type __i) const > { > const_iterator __tmp = *this; > return __tmp -= __i; > } > > const_reference > operator[](difference_type __i) > { return *(*this + __i); } > }; > > inline _Bit_const_iterator > operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) > { return __x + __n; } > > template<class _Alloc> > class _Bvector_base > { > typedef typename _Alloc::template rebind<_Bit_type>::other > _Bit_alloc_type; > > struct _Bvector_impl : public _Bit_alloc_type > { > _Bit_iterator _M_start; > _Bit_iterator _M_finish; > _Bit_type* _M_end_of_storage; > _Bvector_impl(const _Bit_alloc_type& __a) > : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0) > { } > }; > > public: > typedef _Alloc allocator_type; > > allocator_type > get_allocator() const > { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); } > > _Bvector_base(const allocator_type& __a) : _M_impl(__a) { } > > ~_Bvector_base() { this->_M_deallocate(); } > > protected: > _Bvector_impl _M_impl; > > _Bit_type* > _M_allocate(size_t __n) > { return _M_impl.allocate((__n + _S_word_bit - 1) / _S_word_bit); } > > void > _M_deallocate() > { > if (_M_impl._M_start._M_p) > _M_impl.deallocate(_M_impl._M_start._M_p, > _M_impl._M_end_of_storage - _M_impl._M_start._M_p); > } > }; >} > > > > >namespace std >{ ># 414 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_bvector.h" 3 >template<typename _Alloc> > class vector<bool, _Alloc> : public _Bvector_base<_Alloc> > { > public: > typedef bool value_type; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Bit_reference reference; > typedef bool const_reference; > typedef _Bit_reference* pointer; > typedef const bool* const_pointer; > > typedef _Bit_iterator iterator; > typedef _Bit_const_iterator const_iterator; > > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > > typedef typename _Bvector_base<_Alloc>::allocator_type allocator_type; > > allocator_type get_allocator() const > { return _Bvector_base<_Alloc>::get_allocator(); } > > protected: > using _Bvector_base<_Alloc>::_M_allocate; > using _Bvector_base<_Alloc>::_M_deallocate; > > protected: > void _M_initialize(size_type __n) > { > _Bit_type* __q = this->_M_allocate(__n); > this->_M_impl._M_end_of_storage = __q > + (__n + _S_word_bit - 1) / _S_word_bit; > this->_M_impl._M_start = iterator(__q, 0); > this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); > } > > void _M_insert_aux(iterator __position, bool __x) > { > if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage) > { > std::copy_backward(__position, this->_M_impl._M_finish, > this->_M_impl._M_finish + 1); > *__position = __x; > ++this->_M_impl._M_finish; > } > else > { > const size_type __len = size() ? 2 * size() > : static_cast<size_type>(_S_word_bit); > _Bit_type * __q = this->_M_allocate(__len); > iterator __i = std::copy(begin(), __position, iterator(__q, 0)); > *__i++ = __x; > this->_M_impl._M_finish = std::copy(__position, end(), __i); > this->_M_deallocate(); > this->_M_impl._M_end_of_storage = __q + (__len + _S_word_bit - 1) > / _S_word_bit; > this->_M_impl._M_start = iterator(__q, 0); > } > } > > template<class _InputIterator> > void _M_initialize_range(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > this->_M_impl._M_start = iterator(); > this->_M_impl._M_finish = iterator(); > this->_M_impl._M_end_of_storage = 0; > for ( ; __first != __last; ++__first) > push_back(*__first); > } > > template<class _ForwardIterator> > void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag) > { > const size_type __n = std::distance(__first, __last); > _M_initialize(__n); > std::copy(__first, __last, this->_M_impl._M_start); > } > > template<class _InputIterator> > void _M_insert_range(iterator __pos, _InputIterator __first, > _InputIterator __last, input_iterator_tag) > { > for ( ; __first != __last; ++__first) > { > __pos = insert(__pos, *__first); > ++__pos; > } > } > > template<class _ForwardIterator> > void _M_insert_range(iterator __position, _ForwardIterator __first, > _ForwardIterator __last, forward_iterator_tag) > { > if (__first != __last) > { > size_type __n = std::distance(__first, __last); > if (capacity() - size() >= __n) > { > std::copy_backward(__position, end(), > this->_M_impl._M_finish + difference_type(__n)); > std::copy(__first, __last, __position); > this->_M_impl._M_finish += difference_type(__n); > } > else > { > const size_type __len = size() + std::max(size(), __n); > _Bit_type * __q = this->_M_allocate(__len); > iterator __i = std::copy(begin(), __position, iterator(__q, 0)); > __i = std::copy(__first, __last, __i); > this->_M_impl._M_finish = std::copy(__position, end(), __i); > this->_M_deallocate(); > this->_M_impl._M_end_of_storage = __q + (__len + _S_word_bit - 1) > / _S_word_bit; > this->_M_impl._M_start = iterator(__q, 0); > } > } > } > > public: > iterator begin() > { return this->_M_impl._M_start; } > > const_iterator begin() const > { return this->_M_impl._M_start; } > > iterator end() > { return this->_M_impl._M_finish; } > > const_iterator end() const > { return this->_M_impl._M_finish; } > > reverse_iterator rbegin() > { return reverse_iterator(end()); } > > const_reverse_iterator rbegin() const > { return const_reverse_iterator(end()); } > > reverse_iterator rend() > { return reverse_iterator(begin()); } > > const_reverse_iterator rend() const > { return const_reverse_iterator(begin()); } > > size_type size() const > { return size_type(end() - begin()); } > > size_type max_size() const > { return size_type(-1); } > > size_type capacity() const > { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0) > - begin()); } > bool empty() const > { return begin() == end(); } > > reference operator[](size_type __n) > { return *(begin() + difference_type(__n)); } > > const_reference operator[](size_type __n) const > { return *(begin() + difference_type(__n)); } > > void _M_range_check(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("vector<bool>::_M_range_check")); > } > > reference at(size_type __n) > { _M_range_check(__n); return (*this)[__n]; } > > const_reference at(size_type __n) const > { _M_range_check(__n); return (*this)[__n]; } > > explicit vector(const allocator_type& __a = allocator_type()) > : _Bvector_base<_Alloc>(__a) { } > > vector(size_type __n, bool __value, > const allocator_type& __a = allocator_type()) > : _Bvector_base<_Alloc>(__a) > { > _M_initialize(__n); > std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, > __value ? ~0 : 0); > } > > explicit vector(size_type __n) > : _Bvector_base<_Alloc>(allocator_type()) > { > _M_initialize(__n); > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, 0); > } > > vector(const vector& __x) : _Bvector_base<_Alloc>(__x.get_allocator()) > { > _M_initialize(__x.size()); > std::copy(__x.begin(), __x.end(), this->_M_impl._M_start); > } > > > template<class _Integer> > void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) > { > _M_initialize(__n); > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, __x ? ~0 : 0); > } > > template<class _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { _M_initialize_range(__first, __last, > std::__iterator_category(__first)); } > > template<class _InputIterator> > vector(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Bvector_base<_Alloc>(__a) > { > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_initialize_dispatch(__first, __last, _Integral()); > } > > ~vector() { } > > vector& operator=(const vector& __x) > { > if (&__x == this) > return *this; > if (__x.size() > capacity()) > { > this->_M_deallocate(); > _M_initialize(__x.size()); > } > std::copy(__x.begin(), __x.end(), begin()); > this->_M_impl._M_finish = begin() + difference_type(__x.size()); > return *this; > } > > > > > > > void _M_fill_assign(size_t __n, bool __x) > { > if (__n > size()) > { > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, __x ? ~0 : 0); > insert(end(), __n - size(), __x); > } > else > { > erase(begin() + __n, end()); > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, __x ? ~0 : 0); > } > } > > void assign(size_t __n, bool __x) > { _M_fill_assign(__n, __x); } > > template<class _InputIterator> > void assign(_InputIterator __first, _InputIterator __last) > { > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } > > template<class _Integer> > void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { _M_fill_assign((size_t) __n, (bool) __val); } > > template<class _InputIterator> > void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } > > template<class _InputIterator> > void _M_assign_aux(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > iterator __cur = begin(); > for ( ; __first != __last && __cur != end(); ++__cur, ++__first) > *__cur = *__first; > if (__first == __last) > erase(__cur, end()); > else > insert(end(), __first, __last); > } > > template<class _ForwardIterator> > void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag) > { > const size_type __len = std::distance(__first, __last); > if (__len < size()) > erase(std::copy(__first, __last, begin()), end()); > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, size()); > std::copy(__first, __mid, begin()); > insert(end(), __mid, __last); > } > } > > void reserve(size_type __n) > { > if (__n > this->max_size()) > __throw_length_error(("vector::reserve")); > if (this->capacity() < __n) > { > _Bit_type* __q = this->_M_allocate(__n); > this->_M_impl._M_finish = std::copy(begin(), end(), > iterator(__q, 0)); > this->_M_deallocate(); > this->_M_impl._M_start = iterator(__q, 0); > this->_M_impl._M_end_of_storage = __q + (__n + _S_word_bit - 1) / _S_word_bit; > } > } > > reference front() > { return *begin(); } > > const_reference front() const > { return *begin(); } > > reference back() > { return *(end() - 1); } > > const_reference back() const > { return *(end() - 1); } > > void push_back(bool __x) > { > if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage) > *this->_M_impl._M_finish++ = __x; > else > _M_insert_aux(end(), __x); > } > > void swap(vector<bool, _Alloc>& __x) > { > std::swap(this->_M_impl._M_start, __x._M_impl._M_start); > std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); > std::swap(this->_M_impl._M_end_of_storage, > __x._M_impl._M_end_of_storage); > } > > > static void swap(reference __x, reference __y) > { > bool __tmp = __x; > __x = __y; > __y = __tmp; > } > > iterator insert(iterator __position, bool __x = bool()) > { > const difference_type __n = __position - begin(); > if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage > && __position == end()) > *this->_M_impl._M_finish++ = __x; > else > _M_insert_aux(__position, __x); > return begin() + __n; > } > > > > template<class _Integer> > void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, > __true_type) > { _M_fill_insert(__pos, __n, __x); } > > template<class _InputIterator> > void _M_insert_dispatch(iterator __pos, > _InputIterator __first, _InputIterator __last, > __false_type) > { _M_insert_range(__pos, __first, __last, > std::__iterator_category(__first)); } > > template<class _InputIterator> > void insert(iterator __position, > _InputIterator __first, _InputIterator __last) > { > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } > > void _M_fill_insert(iterator __position, size_type __n, bool __x) > { > if (__n == 0) > return; > if (capacity() - size() >= __n) > { > std::copy_backward(__position, end(), > this->_M_impl._M_finish + difference_type(__n)); > std::fill(__position, __position + difference_type(__n), __x); > this->_M_impl._M_finish += difference_type(__n); > } > else > { > const size_type __len = size() + std::max(size(), __n); > _Bit_type * __q = this->_M_allocate(__len); > iterator __i = std::copy(begin(), __position, iterator(__q, 0)); > std::fill_n(__i, __n, __x); > this->_M_impl._M_finish = std::copy(__position, end(), > __i + difference_type(__n)); > this->_M_deallocate(); > this->_M_impl._M_end_of_storage = __q + (__len + _S_word_bit - 1) > / _S_word_bit; > this->_M_impl._M_start = iterator(__q, 0); > } > } > > void insert(iterator __position, size_type __n, bool __x) > { _M_fill_insert(__position, __n, __x); } > > void pop_back() > { --this->_M_impl._M_finish; } > > iterator erase(iterator __position) > { > if (__position + 1 != end()) > std::copy(__position + 1, end(), __position); > --this->_M_impl._M_finish; > return __position; > } > > iterator erase(iterator __first, iterator __last) > { > this->_M_impl._M_finish = std::copy(__last, end(), __first); > return __first; > } > > void resize(size_type __new_size, bool __x = bool()) > { > if (__new_size < size()) > erase(begin() + difference_type(__new_size), end()); > else > insert(end(), __new_size - size(), __x); > } > > void flip() > { > for (_Bit_type * __p = this->_M_impl._M_start._M_p; > __p != this->_M_impl._M_end_of_storage; ++__p) > *__p = ~*__p; > } > > void clear() > { erase(begin(), end()); } > }; >} ># 73 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 2 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/vector.tcc" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/vector.tcc" 3 >namespace std >{ > template<typename _Tp, typename _Alloc> > void > vector<_Tp,_Alloc>:: > reserve(size_type __n) > { > if (__n > this->max_size()) > __throw_length_error(("vector::reserve")); > if (this->capacity() < __n) > { > const size_type __old_size = size(); > pointer __tmp = _M_allocate_and_copy(__n, > this->_M_impl._M_start, > this->_M_impl._M_finish); > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); > this->_M_impl._M_start = __tmp; > this->_M_impl._M_finish = __tmp + __old_size; > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; > } > } > > template<typename _Tp, typename _Alloc> > typename vector<_Tp,_Alloc>::iterator > vector<_Tp,_Alloc>:: > insert(iterator __position, const value_type& __x) > { > size_type __n = __position - begin(); > if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage && __position == end()) > { > std::_Construct(this->_M_impl._M_finish, __x); > ++this->_M_impl._M_finish; > } > else > _M_insert_aux(__position, __x); > return begin() + __n; > } > > template<typename _Tp, typename _Alloc> > typename vector<_Tp,_Alloc>::iterator > vector<_Tp,_Alloc>:: > erase(iterator __position) > { > if (__position + 1 != end()) > std::copy(__position + 1, end(), __position); > --this->_M_impl._M_finish; > std::_Destroy(this->_M_impl._M_finish); > return __position; > } > > template<typename _Tp, typename _Alloc> > typename vector<_Tp,_Alloc>::iterator > vector<_Tp,_Alloc>:: > erase(iterator __first, iterator __last) > { > iterator __i(copy(__last, end(), __first)); > std::_Destroy(__i, end()); > this->_M_impl._M_finish = this->_M_impl._M_finish - (__last - __first); > return __first; > } > > template<typename _Tp, typename _Alloc> > vector<_Tp,_Alloc>& > vector<_Tp,_Alloc>:: > operator=(const vector<_Tp,_Alloc>& __x) > { > if (&__x != this) > { > const size_type __xlen = __x.size(); > if (__xlen > capacity()) > { > pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), __x.end()); > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); > this->_M_impl._M_start = __tmp; > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; > } > else if (size() >= __xlen) > { > iterator __i(copy(__x.begin(), __x.end(), begin())); > std::_Destroy(__i, end()); > } > else > { > std::copy(__x.begin(), __x.begin() + size(), this->_M_impl._M_start); > std::uninitialized_copy(__x.begin() + size(), __x.end(), this->_M_impl._M_finish); > } > this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; > } > return *this; > } > > template<typename _Tp, typename _Alloc> > void > vector<_Tp,_Alloc>:: > _M_fill_assign(size_t __n, const value_type& __val) > { > if (__n > capacity()) > { > vector __tmp(__n, __val, get_allocator()); > __tmp.swap(*this); > } > else if (__n > size()) > { > std::fill(begin(), end(), __val); > this->_M_impl._M_finish > = std::uninitialized_fill_n(this->_M_impl._M_finish, __n - size(), __val); > } > else > erase(fill_n(begin(), __n, __val), end()); > } > > template<typename _Tp, typename _Alloc> template<typename _InputIterator> > void > vector<_Tp,_Alloc>:: > _M_assign_aux(_InputIterator __first, _InputIterator __last, input_iterator_tag) > { > iterator __cur(begin()); > for ( ; __first != __last && __cur != end(); ++__cur, ++__first) > *__cur = *__first; > if (__first == __last) > erase(__cur, end()); > else > insert(end(), __first, __last); > } > > template<typename _Tp, typename _Alloc> template<typename _ForwardIterator> > void > vector<_Tp,_Alloc>:: > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag) > { > size_type __len = std::distance(__first, __last); > > if (__len > capacity()) > { > pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); > this->_M_impl._M_start = __tmp; > this->_M_impl._M_end_of_storage = this->_M_impl._M_finish = this->_M_impl._M_start + __len; > } > else if (size() >= __len) > { > iterator __new_finish(copy(__first, __last, this->_M_impl._M_start)); > std::_Destroy(__new_finish, end()); > this->_M_impl._M_finish = __new_finish.base(); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, size()); > std::copy(__first, __mid, this->_M_impl._M_start); > this->_M_impl._M_finish = std::uninitialized_copy(__mid, __last, this->_M_impl._M_finish); > } > } > > template<typename _Tp, typename _Alloc> > void > vector<_Tp,_Alloc>:: > _M_insert_aux(iterator __position, const _Tp& __x) > { > if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) > { > std::_Construct(this->_M_impl._M_finish, *(this->_M_impl._M_finish - 1)); > ++this->_M_impl._M_finish; > _Tp __x_copy = __x; > std::copy_backward(__position, > iterator(this->_M_impl._M_finish-2), > iterator(this->_M_impl._M_finish-1)); > *__position = __x_copy; > } > else > { > const size_type __old_size = size(); > const size_type __len = __old_size != 0 ? 2 * __old_size : 1; > iterator __new_start(this->_M_allocate(__len)); > iterator __new_finish(__new_start); > try > { > __new_finish = std::uninitialized_copy(iterator(this->_M_impl._M_start), > __position, > __new_start); > std::_Construct(__new_finish.base(), __x); > ++__new_finish; > __new_finish = std::uninitialized_copy(__position, > iterator(this->_M_impl._M_finish), > __new_finish); > } > catch(...) > { > std::_Destroy(__new_start,__new_finish); > _M_deallocate(__new_start.base(),__len); > throw; > } > std::_Destroy(begin(), end()); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); > this->_M_impl._M_start = __new_start.base(); > this->_M_impl._M_finish = __new_finish.base(); > this->_M_impl._M_end_of_storage = __new_start.base() + __len; > } > } > > template<typename _Tp, typename _Alloc> > void > vector<_Tp,_Alloc>:: > _M_fill_insert(iterator __position, size_type __n, const value_type& __x) > { > if (__n != 0) > { > if (size_type(this->_M_impl._M_end_of_storage - this->_M_impl._M_finish) >= __n) > { > value_type __x_copy = __x; > const size_type __elems_after = end() - __position; > iterator __old_finish(this->_M_impl._M_finish); > if (__elems_after > __n) > { > std::uninitialized_copy(this->_M_impl._M_finish - __n, > this->_M_impl._M_finish, > this->_M_impl._M_finish); > this->_M_impl._M_finish += __n; > std::copy_backward(__position, __old_finish - __n, __old_finish); > std::fill(__position, __position + __n, __x_copy); > } > else > { > std::uninitialized_fill_n(this->_M_impl._M_finish, > __n - __elems_after, > __x_copy); > this->_M_impl._M_finish += __n - __elems_after; > std::uninitialized_copy(__position, __old_finish, this->_M_impl._M_finish); > this->_M_impl._M_finish += __elems_after; > std::fill(__position, __old_finish, __x_copy); > } > } > else > { > const size_type __old_size = size(); > const size_type __len = __old_size + std::max(__old_size, __n); > iterator __new_start(this->_M_allocate(__len)); > iterator __new_finish(__new_start); > try > { > __new_finish = std::uninitialized_copy(begin(), __position, > __new_start); > __new_finish = std::uninitialized_fill_n(__new_finish, __n, __x); > __new_finish = std::uninitialized_copy(__position, end(), > __new_finish); > } > catch(...) > { > std::_Destroy(__new_start,__new_finish); > _M_deallocate(__new_start.base(),__len); > throw; > } > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); > this->_M_impl._M_start = __new_start.base(); > this->_M_impl._M_finish = __new_finish.base(); > this->_M_impl._M_end_of_storage = __new_start.base() + __len; > } > } > } > > template<typename _Tp, typename _Alloc> template<typename _InputIterator> > void > vector<_Tp,_Alloc>:: > _M_range_insert(iterator __pos, > _InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > for ( ; __first != __last; ++__first) > { > __pos = insert(__pos, *__first); > ++__pos; > } > } > > template<typename _Tp, typename _Alloc> template<typename _ForwardIterator> > void > vector<_Tp,_Alloc>:: > _M_range_insert(iterator __position,_ForwardIterator __first, > _ForwardIterator __last, forward_iterator_tag) > { > if (__first != __last) > { > size_type __n = std::distance(__first, __last); > if (size_type(this->_M_impl._M_end_of_storage - this->_M_impl._M_finish) >= __n) > { > const size_type __elems_after = end() - __position; > iterator __old_finish(this->_M_impl._M_finish); > if (__elems_after > __n) > { > std::uninitialized_copy(this->_M_impl._M_finish - __n, > this->_M_impl._M_finish, > this->_M_impl._M_finish); > this->_M_impl._M_finish += __n; > std::copy_backward(__position, __old_finish - __n, __old_finish); > std::copy(__first, __last, __position); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, __elems_after); > std::uninitialized_copy(__mid, __last, this->_M_impl._M_finish); > this->_M_impl._M_finish += __n - __elems_after; > std::uninitialized_copy(__position, __old_finish, this->_M_impl._M_finish); > this->_M_impl._M_finish += __elems_after; > std::copy(__first, __mid, __position); > } > } > else > { > const size_type __old_size = size(); > const size_type __len = __old_size + std::max(__old_size, __n); > iterator __new_start(this->_M_allocate(__len)); > iterator __new_finish(__new_start); > try > { > __new_finish = std::uninitialized_copy(iterator(this->_M_impl._M_start), > __position, __new_start); > __new_finish = std::uninitialized_copy(__first, __last, > __new_finish); > __new_finish = std::uninitialized_copy(__position, > iterator(this->_M_impl._M_finish), > __new_finish); > } > catch(...) > { > std::_Destroy(__new_start,__new_finish); > _M_deallocate(__new_start.base(), __len); > throw; > } > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage - this->_M_impl._M_start); > this->_M_impl._M_start = __new_start.base(); > this->_M_impl._M_finish = __new_finish.base(); > this->_M_impl._M_end_of_storage = __new_start.base() + __len; > } > } > } >} ># 76 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/vector" 2 3 ># 26 "config.hpp" 2 ># 37 "config.hpp" >struct line_source >{ > line_source(int ln,const std::string& fname, int line) : > linenum(ln), file(fname), fileline(line) > {} > > int linenum; > std::string file; > int fileline; >}; > >bool operator<(const line_source& a, const line_source& b); > > >struct io_exception : public std::exception { > io_exception() {} > io_exception(const std::string& msg) : message(msg) {} > virtual ~io_exception() throw() {} > > virtual const char* what() const throw(); >private: > std::string message; >}; > > >std::string read_file(const std::string& fname); > >void write_file(const std::string& fname, const std::string& data); >std::string read_stdin(); > >struct preproc_define { > preproc_define() {} > explicit preproc_define(const std::string& val) : value(val) {} > preproc_define(const std::string& val, const std::vector<std::string>& args) > : value(val), arguments(args) {} > std::string value; > std::vector<std::string> arguments; >}; > >typedef std::map<std::string,preproc_define> preproc_map; > > > > >std::string preprocess_file(const std::string& fname, > const preproc_map* defines=__null, > std::vector<line_source>* src=__null); > >typedef std::map<std::string,std::string> string_map; > > >struct compression_schema >{ > typedef std::map<unsigned int,std::string> char_word_map; > char_word_map char_to_word; > > typedef std::map<std::string,unsigned int> word_char_map; > word_char_map word_to_char; >}; > > > >struct config >{ > > config() {} > > > explicit config(const std::string& data, > const std::vector<line_source>* lines=0); > config(const config& cfg); > ~config(); > > config& operator=(const config& cfg); > > > void read(const std::string& data, > const std::vector<line_source>* lines=0); > std::string write() const; > > > > > > std::string write_compressed(compression_schema& schema) const; > void read_compressed(const std::string& data, compression_schema& schema); > > typedef std::vector<config*> child_list; > typedef std::map<std::string,child_list> child_map; > > typedef std::vector<config*>::iterator child_iterator; > typedef std::vector<config*>::const_iterator const_child_iterator; > > typedef std::pair<child_iterator,child_iterator> child_itors; > typedef std::pair<const_child_iterator,const_child_iterator> const_child_itors; > > child_itors child_range(const std::string& key); > const_child_itors child_range(const std::string& key) const; > > const child_list& get_children(const std::string& key) const; > const child_map& all_children() const; > > config* child(const std::string& key); > const config* child(const std::string& key) const; > config& add_child(const std::string& key); > config& add_child(const std::string& key, const config& val); > std::string& operator[](const std::string& key); > const std::string& operator[](const std::string& key) const; > > const std::string& get_attribute(const std::string& key) const; > > config* find_child(const std::string& key, const std::string& name, > const std::string& value); > const config* find_child(const std::string& key, const std::string& name, > const std::string& value) const; > > void clear_children(const std::string& key); > void remove_child(const std::string& key, size_t index); > > > > enum { REMOVE_EMPTY = 0x01, STRIP_SPACES = 0x02 }; > static std::vector<std::string> split(const std::string& val, char c=',', int flags = REMOVE_EMPTY | STRIP_SPACES); > static std::string join(const std::vector<std::string>& v, char c=','); > static std::vector<std::string> quoted_split(const std::string& val, char c=',', > int flags = REMOVE_EMPTY | STRIP_SPACES, char quote='\\'); > > static std::pair<int,int> parse_range(const std::string& str); > static bool notspace(char c); > static std::string& escape(std::string& str); > static std::string& unescape(std::string& str); > static std::string& strip(std::string& str); > static bool has_value(const std::string& values, const std::string& val); > > > > > static std::string interpolate_variables_into_string(const std::string& str, const string_map* symbols=__null); > > void clear(); > bool empty() const; > > struct error { > error(const std::string& msg) : message(msg) {} > std::string message; > }; > > struct child_pos { > child_pos(child_map::const_iterator p, size_t i) : pos(p), index(i) {} > child_map::const_iterator pos; > size_t index; > > bool operator==(const child_pos& o) const { return pos == o.pos && index == o.index; } > bool operator!=(const child_pos& o) const { return !operator==(o); } > }; > > struct all_children_iterator { > typedef std::vector<child_pos>::const_iterator Itor; > explicit all_children_iterator(Itor i); > > all_children_iterator operator++(); > all_children_iterator operator++(int); > > std::pair<const std::string*,const config*> operator*() const; > > bool operator==(all_children_iterator i) const; > bool operator!=(all_children_iterator i) const; > > private: > Itor i_; > }; > > > all_children_iterator ordered_begin() const; > all_children_iterator ordered_end() const; > > > > > config get_diff(const config& c) const; > > void apply_diff(const config& diff); > > > > void append(const config& cfg); > > > string_map values; > >private: > size_t write_size(size_t tab=0) const; > std::string::iterator write_internal(std::string::iterator out, size_t tab=0) const; > std::string::const_iterator read_compressed_internal(std::string::const_iterator i1, std::string::const_iterator i2, compression_schema& schema, int level); > void write_compressed_internal(compression_schema& schema, std::vector<char>& res, int level) const; > > > child_map children; > > std::vector<child_pos> ordered_children; >}; > >bool operator==(const config& a, const config& b); >bool operator!=(const config& a, const config& b); > >struct config_has_value { > config_has_value(const std::string& name, const std::string& value) > : name_(name), value_(value) > {} > > bool operator()(const config* cfg) const { return (*cfg)[name_] == value_; } > >private: > const std::string name_, value_; >}; ># 17 "display.hpp" 2 ># 1 "gamestatus.hpp" 1 ># 16 "gamestatus.hpp" ># 1 "unit.hpp" 1 ># 17 "unit.hpp" ># 1 "map.hpp" 1 ># 18 "map.hpp" ># 1 "terrain.hpp" 1 ># 17 "terrain.hpp" ># 1 "sdl_utils.hpp" 1 ># 17 "sdl_utils.hpp" ># 1 "scoped_resource.hpp" 1 ># 18 "scoped_resource.hpp" >namespace util >{ ># 48 "scoped_resource.hpp" >template<typename T,typename ReleasePolicy> >class scoped_resource >{ > T resource; > ReleasePolicy release; > > > scoped_resource(const scoped_resource&); > scoped_resource& operator=(const scoped_resource&); >public: > typedef T resource_type; > typedef ReleasePolicy release_type; > > > > > > > > scoped_resource(resource_type res=resource_type(),release_type rel=release_type()) > : resource(res), release(rel) {} > > > > > > ~scoped_resource() > { > release(resource); > } > > > > > > > > operator resource_type() const { return resource; } > > > > > > > > resource_type get() const { return resource; } > > > > > > > resource_type operator->() const { return resource; } > > void assign(const resource_type& o) { > release(resource); > resource = o; > } >}; > > > > > >struct delete_item { > template<typename T> > void operator()(T*& p) const { delete p; p = 0; } >}; > > > > >struct delete_array { > template<typename T> > void operator()(T*& p) const { delete [] p; p = 0; } >}; ># 146 "scoped_resource.hpp" >template<typename T> >struct scoped_ptr : public scoped_resource<T*,delete_item> >{ > explicit scoped_ptr(T* p) : scoped_resource<T*,delete_item>(p) {} >}; ># 165 "scoped_resource.hpp" >template<typename T> >struct scoped_array : public scoped_resource<T*,delete_array> >{ > explicit scoped_array(T* p) : scoped_resource<T*,delete_array>(p) {} >}; > > > > > >struct close_FILE >{ > void operator()(FILE* f) const { if(f != __null) { fclose(f); } } >}; >typedef scoped_resource<FILE*,close_FILE> scoped_FILE; > >} ># 18 "sdl_utils.hpp" 2 > ># 1 "/usr/include/SDL/SDL.h" 1 ># 33 "/usr/include/SDL/SDL.h" ># 1 "/usr/include/SDL/SDL_main.h" 1 ># 34 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 37 "/usr/include/SDL/SDL_types.h" >typedef enum { > SDL_FALSE = 0, > SDL_TRUE = 1 >} SDL_bool; >typedef unsigned char Uint8; >typedef signed char Sint8; >typedef unsigned short Uint16; >typedef signed short Sint16; >typedef unsigned int Uint32; >typedef signed int Sint32; ># 65 "/usr/include/SDL/SDL_types.h" >typedef unsigned long long Uint64; > >typedef long long Sint64; ># 80 "/usr/include/SDL/SDL_types.h" >typedef int SDL_dummy_uint8[(sizeof(Uint8) == 1) * 2 - 1]; >typedef int SDL_dummy_sint8[(sizeof(Sint8) == 1) * 2 - 1]; >typedef int SDL_dummy_uint16[(sizeof(Uint16) == 2) * 2 - 1]; >typedef int SDL_dummy_sint16[(sizeof(Sint16) == 2) * 2 - 1]; >typedef int SDL_dummy_uint32[(sizeof(Uint32) == 4) * 2 - 1]; >typedef int SDL_dummy_sint32[(sizeof(Sint32) == 4) * 2 - 1]; >typedef int SDL_dummy_uint64[(sizeof(Uint64) == 8) * 2 - 1]; >typedef int SDL_dummy_sint64[(sizeof(Sint64) == 8) * 2 - 1]; ># 99 "/usr/include/SDL/SDL_types.h" >typedef enum { > DUMMY_ENUM_VALUE >} SDL_DUMMY_ENUM; > >typedef int SDL_dummy_enum[(sizeof(SDL_DUMMY_ENUM) == sizeof(int)) * 2 - 1]; > > > > >enum { SDL_PRESSED = 0x01, SDL_RELEASED = 0x00 }; ># 35 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_getenv.h" 1 ># 36 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_error.h" 1 ># 33 "/usr/include/SDL/SDL_error.h" ># 1 "/usr/include/SDL/begin_code.h" 1 ># 34 "/usr/include/SDL/SDL_error.h" 2 > > >extern "C" { > > > >extern void SDL_SetError(const char *fmt, ...); >extern char * SDL_GetError(void); >extern void SDL_ClearError(void); > > > >typedef enum { > SDL_ENOMEM, > SDL_EFREAD, > SDL_EFWRITE, > SDL_EFSEEK, > SDL_LASTERROR >} SDL_errorcode; >extern void SDL_Error(SDL_errorcode code); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 61 "/usr/include/SDL/SDL_error.h" 2 ># 37 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_rwops.h" 1 ># 37 "/usr/include/SDL/SDL_rwops.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 38 "/usr/include/SDL/SDL_rwops.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 40 "/usr/include/SDL/SDL_rwops.h" 2 > > >extern "C" { > > > > >typedef struct SDL_RWops { > > > > > int (*seek)(struct SDL_RWops *context, int offset, int whence); > > > > > > int (*read)(struct SDL_RWops *context, void *ptr, int size, int maxnum); > > > > > > int (*write)(struct SDL_RWops *context, const void *ptr, int size, int num); > > > int (*close)(struct SDL_RWops *context); > > Uint32 type; > union { > struct { > int autoclose; > FILE *fp; > } stdio; > struct { > Uint8 *base; > Uint8 *here; > Uint8 *stop; > } mem; > struct { > void *data1; > } unknown; > } hidden; > >} SDL_RWops; > > > > >extern SDL_RWops * SDL_RWFromFile(const char *file, const char *mode); > >extern SDL_RWops * SDL_RWFromFP(FILE *fp, int autoclose); > >extern SDL_RWops * SDL_RWFromMem(void *mem, int size); >extern SDL_RWops * SDL_RWFromConstMem(const void *mem, int size); > >extern SDL_RWops * SDL_AllocRW(void); >extern void SDL_FreeRW(SDL_RWops *area); ># 110 "/usr/include/SDL/SDL_rwops.h" >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 113 "/usr/include/SDL/SDL_rwops.h" 2 ># 38 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_timer.h" 1 ># 33 "/usr/include/SDL/SDL_timer.h" ># 1 "/usr/include/SDL/SDL_main.h" 1 ># 34 "/usr/include/SDL/SDL_timer.h" 2 ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 35 "/usr/include/SDL/SDL_timer.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 37 "/usr/include/SDL/SDL_timer.h" 2 > > >extern "C" { ># 51 "/usr/include/SDL/SDL_timer.h" >extern Uint32 SDL_GetTicks(void); > > >extern void SDL_Delay(Uint32 ms); > > >typedef Uint32 ( *SDL_TimerCallback)(Uint32 interval); ># 85 "/usr/include/SDL/SDL_timer.h" >extern int SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback); ># 97 "/usr/include/SDL/SDL_timer.h" >typedef Uint32 ( *SDL_NewTimerCallback)(Uint32 interval, void *param); > > >typedef struct _SDL_TimerID *SDL_TimerID; > > > > >extern SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param); > > > > >extern SDL_bool SDL_RemoveTimer(SDL_TimerID t); > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 117 "/usr/include/SDL/SDL_timer.h" 2 ># 39 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_audio.h" 1 ># 35 "/usr/include/SDL/SDL_audio.h" ># 1 "/usr/include/SDL/SDL_main.h" 1 ># 36 "/usr/include/SDL/SDL_audio.h" 2 ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 37 "/usr/include/SDL/SDL_audio.h" 2 ># 1 "/usr/include/SDL/SDL_error.h" 1 ># 38 "/usr/include/SDL/SDL_audio.h" 2 ># 1 "/usr/include/SDL/SDL_rwops.h" 1 ># 39 "/usr/include/SDL/SDL_audio.h" 2 ># 1 "/usr/include/SDL/SDL_byteorder.h" 1 ># 40 "/usr/include/SDL/SDL_audio.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 42 "/usr/include/SDL/SDL_audio.h" 2 > > >extern "C" { > > > >typedef struct { > int freq; > Uint16 format; > Uint8 channels; > Uint8 silence; > Uint16 samples; > Uint16 padding; > Uint32 size; > > > > > > > void (*callback)(void *userdata, Uint8 *stream, int len); > void *userdata; >} SDL_AudioSpec; ># 87 "/usr/include/SDL/SDL_audio.h" >typedef struct SDL_AudioCVT { > int needed; > Uint16 src_format; > Uint16 dst_format; > double rate_incr; > Uint8 *buf; > int len; > int len_cvt; > int len_mult; > double len_ratio; > void (*filters[10])(struct SDL_AudioCVT *cvt, Uint16 format); > int filter_index; >} SDL_AudioCVT; ># 108 "/usr/include/SDL/SDL_audio.h" >extern int SDL_AudioInit(const char *driver_name); >extern void SDL_AudioQuit(void); > > > > > >extern char * SDL_AudioDriverName(char *namebuf, int maxlen); ># 158 "/usr/include/SDL/SDL_audio.h" >extern int SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); > > > > >typedef enum { > SDL_AUDIO_STOPPED = 0, > SDL_AUDIO_PLAYING, > SDL_AUDIO_PAUSED >} SDL_audiostatus; >extern SDL_audiostatus SDL_GetAudioStatus(void); ># 177 "/usr/include/SDL/SDL_audio.h" >extern void SDL_PauseAudio(int pause_on); ># 196 "/usr/include/SDL/SDL_audio.h" >extern SDL_AudioSpec * SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); ># 205 "/usr/include/SDL/SDL_audio.h" >extern void SDL_FreeWAV(Uint8 *audio_buf); ># 214 "/usr/include/SDL/SDL_audio.h" >extern int SDL_BuildAudioCVT(SDL_AudioCVT *cvt, > Uint16 src_format, Uint8 src_channels, int src_rate, > Uint16 dst_format, Uint8 dst_channels, int dst_rate); ># 226 "/usr/include/SDL/SDL_audio.h" >extern int SDL_ConvertAudio(SDL_AudioCVT *cvt); ># 236 "/usr/include/SDL/SDL_audio.h" >extern void SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume); > > > > > > > >extern void SDL_LockAudio(void); >extern void SDL_UnlockAudio(void); > > > > >extern void SDL_CloseAudio(void); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 258 "/usr/include/SDL/SDL_audio.h" 2 ># 40 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_cdrom.h" 1 ># 33 "/usr/include/SDL/SDL_cdrom.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 34 "/usr/include/SDL/SDL_cdrom.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 36 "/usr/include/SDL/SDL_cdrom.h" 2 > > >extern "C" { ># 54 "/usr/include/SDL/SDL_cdrom.h" >typedef enum { > CD_TRAYEMPTY, > CD_STOPPED, > CD_PLAYING, > CD_PAUSED, > CD_ERROR = -1 >} CDstatus; > > > > >typedef struct { > Uint8 id; > Uint8 type; > Uint16 unused; > Uint32 length; > Uint32 offset; >} SDL_CDtrack; > > >typedef struct SDL_CD { > int id; > CDstatus status; > > > int numtracks; > int cur_track; > int cur_frame; > SDL_CDtrack track[99 +1]; >} SDL_CD; ># 102 "/usr/include/SDL/SDL_cdrom.h" >extern int SDL_CDNumDrives(void); > > > > > > > >extern const char * SDL_CDName(int drive); > > > > > > > >extern SDL_CD * SDL_CDOpen(int drive); > > > > > >extern CDstatus SDL_CDStatus(SDL_CD *cdrom); ># 145 "/usr/include/SDL/SDL_cdrom.h" >extern int SDL_CDPlayTracks(SDL_CD *cdrom, > int start_track, int start_frame, int ntracks, int nframes); > > > > >extern int SDL_CDPlay(SDL_CD *cdrom, int start, int length); > > >extern int SDL_CDPause(SDL_CD *cdrom); > > >extern int SDL_CDResume(SDL_CD *cdrom); > > >extern int SDL_CDStop(SDL_CD *cdrom); > > >extern int SDL_CDEject(SDL_CD *cdrom); > > >extern void SDL_CDClose(SDL_CD *cdrom); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 174 "/usr/include/SDL/SDL_cdrom.h" 2 ># 41 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_joystick.h" 1 ># 33 "/usr/include/SDL/SDL_joystick.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 34 "/usr/include/SDL/SDL_joystick.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 36 "/usr/include/SDL/SDL_joystick.h" 2 > > >extern "C" { ># 47 "/usr/include/SDL/SDL_joystick.h" >struct _SDL_Joystick; >typedef struct _SDL_Joystick SDL_Joystick; > > > > > > >extern int SDL_NumJoysticks(void); > > > > > > >extern const char * SDL_JoystickName(int device_index); ># 71 "/usr/include/SDL/SDL_joystick.h" >extern SDL_Joystick * SDL_JoystickOpen(int device_index); > > > > >extern int SDL_JoystickOpened(int device_index); > > > > >extern int SDL_JoystickIndex(SDL_Joystick *joystick); > > > > >extern int SDL_JoystickNumAxes(SDL_Joystick *joystick); > > > > > > >extern int SDL_JoystickNumBalls(SDL_Joystick *joystick); > > > > >extern int SDL_JoystickNumHats(SDL_Joystick *joystick); > > > > >extern int SDL_JoystickNumButtons(SDL_Joystick *joystick); > > > > > > >extern void SDL_JoystickUpdate(void); ># 119 "/usr/include/SDL/SDL_joystick.h" >extern int SDL_JoystickEventState(int state); > > > > > > >extern Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis); ># 144 "/usr/include/SDL/SDL_joystick.h" >extern Uint8 SDL_JoystickGetHat(SDL_Joystick *joystick, int hat); > > > > > > >extern int SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy); > > > > > >extern Uint8 SDL_JoystickGetButton(SDL_Joystick *joystick, int button); > > > > >extern void SDL_JoystickClose(SDL_Joystick *joystick); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 170 "/usr/include/SDL/SDL_joystick.h" 2 ># 42 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_events.h" 1 ># 33 "/usr/include/SDL/SDL_events.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 34 "/usr/include/SDL/SDL_events.h" 2 ># 1 "/usr/include/SDL/SDL_active.h" 1 ># 33 "/usr/include/SDL/SDL_active.h" ># 1 "/usr/include/SDL/begin_code.h" 1 ># 34 "/usr/include/SDL/SDL_active.h" 2 > > >extern "C" { ># 51 "/usr/include/SDL/SDL_active.h" >extern Uint8 SDL_GetAppState(void); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 59 "/usr/include/SDL/SDL_active.h" 2 ># 35 "/usr/include/SDL/SDL_events.h" 2 ># 1 "/usr/include/SDL/SDL_keyboard.h" 1 ># 33 "/usr/include/SDL/SDL_keyboard.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 34 "/usr/include/SDL/SDL_keyboard.h" 2 ># 1 "/usr/include/SDL/SDL_keysym.h" 1 ># 37 "/usr/include/SDL/SDL_keysym.h" >typedef enum { > > SDLK_UNKNOWN = 0, > SDLK_FIRST = 0, > SDLK_BACKSPACE = 8, > SDLK_TAB = 9, > SDLK_CLEAR = 12, > SDLK_RETURN = 13, > SDLK_PAUSE = 19, > SDLK_ESCAPE = 27, > SDLK_SPACE = 32, > SDLK_EXCLAIM = 33, > SDLK_QUOTEDBL = 34, > SDLK_HASH = 35, > SDLK_DOLLAR = 36, > SDLK_AMPERSAND = 38, > SDLK_QUOTE = 39, > SDLK_LEFTPAREN = 40, > SDLK_RIGHTPAREN = 41, > SDLK_ASTERISK = 42, > SDLK_PLUS = 43, > SDLK_COMMA = 44, > SDLK_MINUS = 45, > SDLK_PERIOD = 46, > SDLK_SLASH = 47, > SDLK_0 = 48, > SDLK_1 = 49, > SDLK_2 = 50, > SDLK_3 = 51, > SDLK_4 = 52, > SDLK_5 = 53, > SDLK_6 = 54, > SDLK_7 = 55, > SDLK_8 = 56, > SDLK_9 = 57, > SDLK_COLON = 58, > SDLK_SEMICOLON = 59, > SDLK_LESS = 60, > SDLK_EQUALS = 61, > SDLK_GREATER = 62, > SDLK_QUESTION = 63, > SDLK_AT = 64, > > > > SDLK_LEFTBRACKET = 91, > SDLK_BACKSLASH = 92, > SDLK_RIGHTBRACKET = 93, > SDLK_CARET = 94, > SDLK_UNDERSCORE = 95, > SDLK_BACKQUOTE = 96, > SDLK_a = 97, > SDLK_b = 98, > SDLK_c = 99, > SDLK_d = 100, > SDLK_e = 101, > SDLK_f = 102, > SDLK_g = 103, > SDLK_h = 104, > SDLK_i = 105, > SDLK_j = 106, > SDLK_k = 107, > SDLK_l = 108, > SDLK_m = 109, > SDLK_n = 110, > SDLK_o = 111, > SDLK_p = 112, > SDLK_q = 113, > SDLK_r = 114, > SDLK_s = 115, > SDLK_t = 116, > SDLK_u = 117, > SDLK_v = 118, > SDLK_w = 119, > SDLK_x = 120, > SDLK_y = 121, > SDLK_z = 122, > SDLK_DELETE = 127, > > > > SDLK_WORLD_0 = 160, > SDLK_WORLD_1 = 161, > SDLK_WORLD_2 = 162, > SDLK_WORLD_3 = 163, > SDLK_WORLD_4 = 164, > SDLK_WORLD_5 = 165, > SDLK_WORLD_6 = 166, > SDLK_WORLD_7 = 167, > SDLK_WORLD_8 = 168, > SDLK_WORLD_9 = 169, > SDLK_WORLD_10 = 170, > SDLK_WORLD_11 = 171, > SDLK_WORLD_12 = 172, > SDLK_WORLD_13 = 173, > SDLK_WORLD_14 = 174, > SDLK_WORLD_15 = 175, > SDLK_WORLD_16 = 176, > SDLK_WORLD_17 = 177, > SDLK_WORLD_18 = 178, > SDLK_WORLD_19 = 179, > SDLK_WORLD_20 = 180, > SDLK_WORLD_21 = 181, > SDLK_WORLD_22 = 182, > SDLK_WORLD_23 = 183, > SDLK_WORLD_24 = 184, > SDLK_WORLD_25 = 185, > SDLK_WORLD_26 = 186, > SDLK_WORLD_27 = 187, > SDLK_WORLD_28 = 188, > SDLK_WORLD_29 = 189, > SDLK_WORLD_30 = 190, > SDLK_WORLD_31 = 191, > SDLK_WORLD_32 = 192, > SDLK_WORLD_33 = 193, > SDLK_WORLD_34 = 194, > SDLK_WORLD_35 = 195, > SDLK_WORLD_36 = 196, > SDLK_WORLD_37 = 197, > SDLK_WORLD_38 = 198, > SDLK_WORLD_39 = 199, > SDLK_WORLD_40 = 200, > SDLK_WORLD_41 = 201, > SDLK_WORLD_42 = 202, > SDLK_WORLD_43 = 203, > SDLK_WORLD_44 = 204, > SDLK_WORLD_45 = 205, > SDLK_WORLD_46 = 206, > SDLK_WORLD_47 = 207, > SDLK_WORLD_48 = 208, > SDLK_WORLD_49 = 209, > SDLK_WORLD_50 = 210, > SDLK_WORLD_51 = 211, > SDLK_WORLD_52 = 212, > SDLK_WORLD_53 = 213, > SDLK_WORLD_54 = 214, > SDLK_WORLD_55 = 215, > SDLK_WORLD_56 = 216, > SDLK_WORLD_57 = 217, > SDLK_WORLD_58 = 218, > SDLK_WORLD_59 = 219, > SDLK_WORLD_60 = 220, > SDLK_WORLD_61 = 221, > SDLK_WORLD_62 = 222, > SDLK_WORLD_63 = 223, > SDLK_WORLD_64 = 224, > SDLK_WORLD_65 = 225, > SDLK_WORLD_66 = 226, > SDLK_WORLD_67 = 227, > SDLK_WORLD_68 = 228, > SDLK_WORLD_69 = 229, > SDLK_WORLD_70 = 230, > SDLK_WORLD_71 = 231, > SDLK_WORLD_72 = 232, > SDLK_WORLD_73 = 233, > SDLK_WORLD_74 = 234, > SDLK_WORLD_75 = 235, > SDLK_WORLD_76 = 236, > SDLK_WORLD_77 = 237, > SDLK_WORLD_78 = 238, > SDLK_WORLD_79 = 239, > SDLK_WORLD_80 = 240, > SDLK_WORLD_81 = 241, > SDLK_WORLD_82 = 242, > SDLK_WORLD_83 = 243, > SDLK_WORLD_84 = 244, > SDLK_WORLD_85 = 245, > SDLK_WORLD_86 = 246, > SDLK_WORLD_87 = 247, > SDLK_WORLD_88 = 248, > SDLK_WORLD_89 = 249, > SDLK_WORLD_90 = 250, > SDLK_WORLD_91 = 251, > SDLK_WORLD_92 = 252, > SDLK_WORLD_93 = 253, > SDLK_WORLD_94 = 254, > SDLK_WORLD_95 = 255, > > > SDLK_KP0 = 256, > SDLK_KP1 = 257, > SDLK_KP2 = 258, > SDLK_KP3 = 259, > SDLK_KP4 = 260, > SDLK_KP5 = 261, > SDLK_KP6 = 262, > SDLK_KP7 = 263, > SDLK_KP8 = 264, > SDLK_KP9 = 265, > SDLK_KP_PERIOD = 266, > SDLK_KP_DIVIDE = 267, > SDLK_KP_MULTIPLY = 268, > SDLK_KP_MINUS = 269, > SDLK_KP_PLUS = 270, > SDLK_KP_ENTER = 271, > SDLK_KP_EQUALS = 272, > > > SDLK_UP = 273, > SDLK_DOWN = 274, > SDLK_RIGHT = 275, > SDLK_LEFT = 276, > SDLK_INSERT = 277, > SDLK_HOME = 278, > SDLK_END = 279, > SDLK_PAGEUP = 280, > SDLK_PAGEDOWN = 281, > > > SDLK_F1 = 282, > SDLK_F2 = 283, > SDLK_F3 = 284, > SDLK_F4 = 285, > SDLK_F5 = 286, > SDLK_F6 = 287, > SDLK_F7 = 288, > SDLK_F8 = 289, > SDLK_F9 = 290, > SDLK_F10 = 291, > SDLK_F11 = 292, > SDLK_F12 = 293, > SDLK_F13 = 294, > SDLK_F14 = 295, > SDLK_F15 = 296, > > > SDLK_NUMLOCK = 300, > SDLK_CAPSLOCK = 301, > SDLK_SCROLLOCK = 302, > SDLK_RSHIFT = 303, > SDLK_LSHIFT = 304, > SDLK_RCTRL = 305, > SDLK_LCTRL = 306, > SDLK_RALT = 307, > SDLK_LALT = 308, > SDLK_RMETA = 309, > SDLK_LMETA = 310, > SDLK_LSUPER = 311, > SDLK_RSUPER = 312, > SDLK_MODE = 313, > SDLK_COMPOSE = 314, > > > SDLK_HELP = 315, > SDLK_PRINT = 316, > SDLK_SYSREQ = 317, > SDLK_BREAK = 318, > SDLK_MENU = 319, > SDLK_POWER = 320, > SDLK_EURO = 321, > SDLK_UNDO = 322, > > > > SDLK_LAST >} SDLKey; > > >typedef enum { > KMOD_NONE = 0x0000, > KMOD_LSHIFT= 0x0001, > KMOD_RSHIFT= 0x0002, > KMOD_LCTRL = 0x0040, > KMOD_RCTRL = 0x0080, > KMOD_LALT = 0x0100, > KMOD_RALT = 0x0200, > KMOD_LMETA = 0x0400, > KMOD_RMETA = 0x0800, > KMOD_NUM = 0x1000, > KMOD_CAPS = 0x2000, > KMOD_MODE = 0x4000, > KMOD_RESERVED = 0x8000 >} SDLMod; ># 35 "/usr/include/SDL/SDL_keyboard.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 37 "/usr/include/SDL/SDL_keyboard.h" 2 > > >extern "C" { ># 58 "/usr/include/SDL/SDL_keyboard.h" >typedef struct { > Uint8 scancode; > SDLKey sym; > SDLMod mod; > Uint16 unicode; >} SDL_keysym; ># 77 "/usr/include/SDL/SDL_keyboard.h" >extern int SDL_EnableUNICODE(int enable); ># 90 "/usr/include/SDL/SDL_keyboard.h" >extern int SDL_EnableKeyRepeat(int delay, int interval); ># 99 "/usr/include/SDL/SDL_keyboard.h" >extern Uint8 * SDL_GetKeyState(int *numkeys); > > > > >extern SDLMod SDL_GetModState(void); > > > > > >extern void SDL_SetModState(SDLMod modstate); > > > > >extern char * SDL_GetKeyName(SDLKey key); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 123 "/usr/include/SDL/SDL_keyboard.h" 2 ># 36 "/usr/include/SDL/SDL_events.h" 2 ># 1 "/usr/include/SDL/SDL_mouse.h" 1 ># 33 "/usr/include/SDL/SDL_mouse.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 34 "/usr/include/SDL/SDL_mouse.h" 2 ># 1 "/usr/include/SDL/SDL_video.h" 1 ># 35 "/usr/include/SDL/SDL_video.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 36 "/usr/include/SDL/SDL_video.h" 2 ># 1 "/usr/include/SDL/SDL_mutex.h" 1 ># 36 "/usr/include/SDL/SDL_mutex.h" ># 1 "/usr/include/SDL/SDL_main.h" 1 ># 37 "/usr/include/SDL/SDL_mutex.h" 2 ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 38 "/usr/include/SDL/SDL_mutex.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 40 "/usr/include/SDL/SDL_mutex.h" 2 > > >extern "C" { ># 59 "/usr/include/SDL/SDL_mutex.h" >struct SDL_mutex; >typedef struct SDL_mutex SDL_mutex; > > >extern SDL_mutex * SDL_CreateMutex(void); > > > >extern int SDL_mutexP(SDL_mutex *mutex); > > > > > > >extern int SDL_mutexV(SDL_mutex *mutex); > > >extern void SDL_DestroyMutex(SDL_mutex *mutex); > > > > > > > >struct SDL_semaphore; >typedef struct SDL_semaphore SDL_sem; > > >extern SDL_sem * SDL_CreateSemaphore(Uint32 initial_value); > > >extern void SDL_DestroySemaphore(SDL_sem *sem); > > > > > >extern int SDL_SemWait(SDL_sem *sem); > > > > >extern int SDL_SemTryWait(SDL_sem *sem); > > > > > > > >extern int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 ms); > > > > >extern int SDL_SemPost(SDL_sem *sem); > > >extern Uint32 SDL_SemValue(SDL_sem *sem); > > > > > > > >struct SDL_cond; >typedef struct SDL_cond SDL_cond; > > >extern SDL_cond * SDL_CreateCond(void); > > >extern void SDL_DestroyCond(SDL_cond *cond); > > > > >extern int SDL_CondSignal(SDL_cond *cond); > > > > >extern int SDL_CondBroadcast(SDL_cond *cond); > > > > > >extern int SDL_CondWait(SDL_cond *cond, SDL_mutex *mut); > > > > > > > >extern int SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms); > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 165 "/usr/include/SDL/SDL_mutex.h" 2 ># 37 "/usr/include/SDL/SDL_video.h" 2 ># 1 "/usr/include/SDL/SDL_rwops.h" 1 ># 38 "/usr/include/SDL/SDL_video.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 40 "/usr/include/SDL/SDL_video.h" 2 > > >extern "C" { > > > > > > > >typedef struct { > Sint16 x, y; > Uint16 w, h; >} SDL_Rect; > >typedef struct { > Uint8 r; > Uint8 g; > Uint8 b; > Uint8 unused; >} SDL_Color; > > >typedef struct { > int ncolors; > SDL_Color *colors; >} SDL_Palette; > > >typedef struct SDL_PixelFormat { > SDL_Palette *palette; > Uint8 BitsPerPixel; > Uint8 BytesPerPixel; > Uint8 Rloss; > Uint8 Gloss; > Uint8 Bloss; > Uint8 Aloss; > Uint8 Rshift; > Uint8 Gshift; > Uint8 Bshift; > Uint8 Ashift; > Uint32 Rmask; > Uint32 Gmask; > Uint32 Bmask; > Uint32 Amask; > > > Uint32 colorkey; > > Uint8 alpha; >} SDL_PixelFormat; > > >struct SDL_Surface; >typedef int (*SDL_blit)(struct SDL_Surface *src, SDL_Rect *srcrect, > struct SDL_Surface *dst, SDL_Rect *dstrect); > > > > >typedef struct SDL_Surface { > Uint32 flags; > SDL_PixelFormat *format; > int w, h; > Uint16 pitch; > void *pixels; > int offset; > > > struct private_hwdata *hwdata; > > > SDL_Rect clip_rect; > Uint32 unused1; > > > Uint32 locked; > > > struct SDL_BlitMap *map; > > > unsigned int format_version; > > > int refcount; >} SDL_Surface; ># 157 "/usr/include/SDL/SDL_video.h" >typedef struct { > Uint32 hw_available :1; > Uint32 wm_available :1; > Uint32 UnusedBits1 :6; > Uint32 UnusedBits2 :1; > Uint32 blit_hw :1; > Uint32 blit_hw_CC :1; > Uint32 blit_hw_A :1; > Uint32 blit_sw :1; > Uint32 blit_sw_CC :1; > Uint32 blit_sw_A :1; > Uint32 blit_fill :1; > Uint32 UnusedBits3 :16; > Uint32 video_mem; > SDL_PixelFormat *vfmt; >} SDL_VideoInfo; ># 189 "/usr/include/SDL/SDL_video.h" >typedef struct SDL_Overlay { > Uint32 format; > int w, h; > int planes; > Uint16 *pitches; > Uint8 **pixels; > > > struct private_yuvhwfuncs *hwfuncs; > struct private_yuvhwdata *hwdata; > > > Uint32 hw_overlay :1; > Uint32 UnusedBits :31; >} SDL_Overlay; > > > >typedef enum { > SDL_GL_RED_SIZE, > SDL_GL_GREEN_SIZE, > SDL_GL_BLUE_SIZE, > SDL_GL_ALPHA_SIZE, > SDL_GL_BUFFER_SIZE, > SDL_GL_DOUBLEBUFFER, > SDL_GL_DEPTH_SIZE, > SDL_GL_STENCIL_SIZE, > SDL_GL_ACCUM_RED_SIZE, > SDL_GL_ACCUM_GREEN_SIZE, > SDL_GL_ACCUM_BLUE_SIZE, > SDL_GL_ACCUM_ALPHA_SIZE, > SDL_GL_STEREO, > SDL_GL_MULTISAMPLEBUFFERS, > SDL_GL_MULTISAMPLESAMPLES >} SDL_GLattr; ># 244 "/usr/include/SDL/SDL_video.h" >extern int SDL_VideoInit(const char *driver_name, Uint32 flags); >extern void SDL_VideoQuit(void); > > > > > >extern char * SDL_VideoDriverName(char *namebuf, int maxlen); > > > > > > > >extern SDL_Surface * SDL_GetVideoSurface(void); > > > > > > > >extern const SDL_VideoInfo * SDL_GetVideoInfo(void); ># 280 "/usr/include/SDL/SDL_video.h" >extern int SDL_VideoModeOK(int width, int height, int bpp, Uint32 flags); ># 291 "/usr/include/SDL/SDL_video.h" >extern SDL_Rect ** SDL_ListModes(SDL_PixelFormat *format, Uint32 flags); ># 351 "/usr/include/SDL/SDL_video.h" >extern SDL_Surface * SDL_SetVideoMode > (int width, int height, int bpp, Uint32 flags); > > > > > > > >extern void SDL_UpdateRects > (SDL_Surface *screen, int numrects, SDL_Rect *rects); >extern void SDL_UpdateRect > (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h); ># 375 "/usr/include/SDL/SDL_video.h" >extern int SDL_Flip(SDL_Surface *screen); ># 385 "/usr/include/SDL/SDL_video.h" >extern int SDL_SetGamma(float red, float green, float blue); ># 399 "/usr/include/SDL/SDL_video.h" >extern int SDL_SetGammaRamp(const Uint16 *red, const Uint16 *green, const Uint16 *blue); ># 410 "/usr/include/SDL/SDL_video.h" >extern int SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue); ># 427 "/usr/include/SDL/SDL_video.h" >extern int SDL_SetColors(SDL_Surface *surface, > SDL_Color *colors, int firstcolor, int ncolors); ># 446 "/usr/include/SDL/SDL_video.h" >extern int SDL_SetPalette(SDL_Surface *surface, int flags, > SDL_Color *colors, int firstcolor, > int ncolors); > > > > >extern Uint32 SDL_MapRGB > (SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b); > > > > >extern Uint32 SDL_MapRGBA(SDL_PixelFormat *format, > Uint8 r, Uint8 g, Uint8 b, Uint8 a); > > > > >extern void SDL_GetRGB(Uint32 pixel, SDL_PixelFormat *fmt, > Uint8 *r, Uint8 *g, Uint8 *b); > > > > >extern void SDL_GetRGBA(Uint32 pixel, SDL_PixelFormat *fmt, > Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); ># 509 "/usr/include/SDL/SDL_video.h" >extern SDL_Surface * SDL_CreateRGBSurface > (Uint32 flags, int width, int height, int depth, > Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); >extern SDL_Surface * SDL_CreateRGBSurfaceFrom(void *pixels, > int width, int height, int depth, int pitch, > Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); >extern void SDL_FreeSurface(SDL_Surface *surface); ># 535 "/usr/include/SDL/SDL_video.h" >extern int SDL_LockSurface(SDL_Surface *surface); >extern void SDL_UnlockSurface(SDL_Surface *surface); > > > > > > > >extern SDL_Surface * SDL_LoadBMP_RW(SDL_RWops *src, int freesrc); ># 554 "/usr/include/SDL/SDL_video.h" >extern int SDL_SaveBMP_RW > (SDL_Surface *surface, SDL_RWops *dst, int freedst); ># 570 "/usr/include/SDL/SDL_video.h" >extern int SDL_SetColorKey > (SDL_Surface *surface, Uint32 flag, Uint32 key); ># 588 "/usr/include/SDL/SDL_video.h" >extern int SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha); ># 602 "/usr/include/SDL/SDL_video.h" >extern SDL_bool SDL_SetClipRect(SDL_Surface *surface, const SDL_Rect *rect); > > > > > > >extern void SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect); ># 623 "/usr/include/SDL/SDL_video.h" >extern SDL_Surface * SDL_ConvertSurface > (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags); ># 700 "/usr/include/SDL/SDL_video.h" >extern int SDL_UpperBlit > (SDL_Surface *src, SDL_Rect *srcrect, > SDL_Surface *dst, SDL_Rect *dstrect); > > > >extern int SDL_LowerBlit > (SDL_Surface *src, SDL_Rect *srcrect, > SDL_Surface *dst, SDL_Rect *dstrect); ># 719 "/usr/include/SDL/SDL_video.h" >extern int SDL_FillRect > (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color); ># 733 "/usr/include/SDL/SDL_video.h" >extern SDL_Surface * SDL_DisplayFormat(SDL_Surface *surface); ># 747 "/usr/include/SDL/SDL_video.h" >extern SDL_Surface * SDL_DisplayFormatAlpha(SDL_Surface *surface); ># 759 "/usr/include/SDL/SDL_video.h" >extern SDL_Overlay * SDL_CreateYUVOverlay(int width, int height, > Uint32 format, SDL_Surface *display); > > >extern int SDL_LockYUVOverlay(SDL_Overlay *overlay); >extern void SDL_UnlockYUVOverlay(SDL_Overlay *overlay); > > > > > > > >extern int SDL_DisplayYUVOverlay(SDL_Overlay *overlay, SDL_Rect *dstrect); > > >extern void SDL_FreeYUVOverlay(SDL_Overlay *overlay); ># 792 "/usr/include/SDL/SDL_video.h" >extern int SDL_GL_LoadLibrary(const char *path); > > > > >extern void * SDL_GL_GetProcAddress(const char* proc); > > > > >extern int SDL_GL_SetAttribute(SDL_GLattr attr, int value); ># 813 "/usr/include/SDL/SDL_video.h" >extern int SDL_GL_GetAttribute(SDL_GLattr attr, int* value); > > > > >extern void SDL_GL_SwapBuffers(void); > > > > > >extern void SDL_GL_UpdateRects(int numrects, SDL_Rect* rects); >extern void SDL_GL_Lock(void); >extern void SDL_GL_Unlock(void); ># 835 "/usr/include/SDL/SDL_video.h" >extern void SDL_WM_SetCaption(const char *title, const char *icon); >extern void SDL_WM_GetCaption(char **title, char **icon); > > > > > > > >extern void SDL_WM_SetIcon(SDL_Surface *icon, Uint8 *mask); > > > > > > >extern int SDL_WM_IconifyWindow(void); ># 868 "/usr/include/SDL/SDL_video.h" >extern int SDL_WM_ToggleFullScreen(SDL_Surface *surface); > > > > > >typedef enum { > SDL_GRAB_QUERY = -1, > SDL_GRAB_OFF = 0, > SDL_GRAB_ON = 1, > SDL_GRAB_FULLSCREEN >} SDL_GrabMode; > > > > > >extern SDL_GrabMode SDL_WM_GrabInput(SDL_GrabMode mode); > > >extern int SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect, > SDL_Surface *dst, SDL_Rect *dstrect); > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 896 "/usr/include/SDL/SDL_video.h" 2 ># 35 "/usr/include/SDL/SDL_mouse.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 37 "/usr/include/SDL/SDL_mouse.h" 2 > > >extern "C" { > > >typedef struct WMcursor WMcursor; >typedef struct { > SDL_Rect area; > Sint16 hot_x, hot_y; > Uint8 *data; > Uint8 *mask; > Uint8 *save[2]; > WMcursor *wm_cursor; >} SDL_Cursor; ># 59 "/usr/include/SDL/SDL_mouse.h" >extern Uint8 SDL_GetMouseState(int *x, int *y); > > > > > > > >extern Uint8 SDL_GetRelativeMouseState(int *x, int *y); > > > > >extern void SDL_WarpMouse(Uint16 x, Uint16 y); ># 87 "/usr/include/SDL/SDL_mouse.h" >extern SDL_Cursor * SDL_CreateCursor > (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); > > > > > > >extern void SDL_SetCursor(SDL_Cursor *cursor); > > > > >extern SDL_Cursor * SDL_GetCursor(void); > > > > >extern void SDL_FreeCursor(SDL_Cursor *cursor); ># 114 "/usr/include/SDL/SDL_mouse.h" >extern int SDL_ShowCursor(int toggle); ># 136 "/usr/include/SDL/SDL_mouse.h" >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 139 "/usr/include/SDL/SDL_mouse.h" 2 ># 37 "/usr/include/SDL/SDL_events.h" 2 ># 1 "/usr/include/SDL/SDL_joystick.h" 1 ># 38 "/usr/include/SDL/SDL_events.h" 2 ># 1 "/usr/include/SDL/SDL_quit.h" 1 ># 39 "/usr/include/SDL/SDL_events.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 41 "/usr/include/SDL/SDL_events.h" 2 > > >extern "C" { > > > >enum { SDL_NOEVENT = 0, > SDL_ACTIVEEVENT, > SDL_KEYDOWN, > SDL_KEYUP, > SDL_MOUSEMOTION, > SDL_MOUSEBUTTONDOWN, > SDL_MOUSEBUTTONUP, > SDL_JOYAXISMOTION, > SDL_JOYBALLMOTION, > SDL_JOYHATMOTION, > SDL_JOYBUTTONDOWN, > SDL_JOYBUTTONUP, > SDL_QUIT, > SDL_SYSWMEVENT, > SDL_EVENT_RESERVEDA, > SDL_EVENT_RESERVEDB, > SDL_VIDEORESIZE, > SDL_VIDEOEXPOSE, > SDL_EVENT_RESERVED2, > SDL_EVENT_RESERVED3, > SDL_EVENT_RESERVED4, > SDL_EVENT_RESERVED5, > SDL_EVENT_RESERVED6, > SDL_EVENT_RESERVED7, > > SDL_USEREVENT = 24, > > > > SDL_NUMEVENTS = 32 >}; > > > >enum { > SDL_ACTIVEEVENTMASK = (1<<(SDL_ACTIVEEVENT)), > SDL_KEYDOWNMASK = (1<<(SDL_KEYDOWN)), > SDL_KEYUPMASK = (1<<(SDL_KEYUP)), > SDL_MOUSEMOTIONMASK = (1<<(SDL_MOUSEMOTION)), > SDL_MOUSEBUTTONDOWNMASK = (1<<(SDL_MOUSEBUTTONDOWN)), > SDL_MOUSEBUTTONUPMASK = (1<<(SDL_MOUSEBUTTONUP)), > SDL_MOUSEEVENTMASK = (1<<(SDL_MOUSEMOTION))| > (1<<(SDL_MOUSEBUTTONDOWN))| > (1<<(SDL_MOUSEBUTTONUP)), > SDL_JOYAXISMOTIONMASK = (1<<(SDL_JOYAXISMOTION)), > SDL_JOYBALLMOTIONMASK = (1<<(SDL_JOYBALLMOTION)), > SDL_JOYHATMOTIONMASK = (1<<(SDL_JOYHATMOTION)), > SDL_JOYBUTTONDOWNMASK = (1<<(SDL_JOYBUTTONDOWN)), > SDL_JOYBUTTONUPMASK = (1<<(SDL_JOYBUTTONUP)), > SDL_JOYEVENTMASK = (1<<(SDL_JOYAXISMOTION))| > (1<<(SDL_JOYBALLMOTION))| > (1<<(SDL_JOYHATMOTION))| > (1<<(SDL_JOYBUTTONDOWN))| > (1<<(SDL_JOYBUTTONUP)), > SDL_VIDEORESIZEMASK = (1<<(SDL_VIDEORESIZE)), > SDL_VIDEOEXPOSEMASK = (1<<(SDL_VIDEOEXPOSE)), > SDL_QUITMASK = (1<<(SDL_QUIT)), > SDL_SYSWMEVENTMASK = (1<<(SDL_SYSWMEVENT)) >}; > > > >typedef struct { > Uint8 type; > Uint8 gain; > Uint8 state; >} SDL_ActiveEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 state; > SDL_keysym keysym; >} SDL_KeyboardEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 state; > Uint16 x, y; > Sint16 xrel; > Sint16 yrel; >} SDL_MouseMotionEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 button; > Uint8 state; > Uint16 x, y; >} SDL_MouseButtonEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 axis; > Sint16 value; >} SDL_JoyAxisEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 ball; > Sint16 xrel; > Sint16 yrel; >} SDL_JoyBallEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 hat; > Uint8 value; > > > > > >} SDL_JoyHatEvent; > > >typedef struct { > Uint8 type; > Uint8 which; > Uint8 button; > Uint8 state; >} SDL_JoyButtonEvent; > > > > > >typedef struct { > Uint8 type; > int w; > int h; >} SDL_ResizeEvent; > > >typedef struct { > Uint8 type; >} SDL_ExposeEvent; > > >typedef struct { > Uint8 type; >} SDL_QuitEvent; > > >typedef struct { > Uint8 type; > int code; > void *data1; > void *data2; >} SDL_UserEvent; > > >struct SDL_SysWMmsg; >typedef struct SDL_SysWMmsg SDL_SysWMmsg; >typedef struct { > Uint8 type; > SDL_SysWMmsg *msg; >} SDL_SysWMEvent; > > >typedef union { > Uint8 type; > SDL_ActiveEvent active; > SDL_KeyboardEvent key; > SDL_MouseMotionEvent motion; > SDL_MouseButtonEvent button; > SDL_JoyAxisEvent jaxis; > SDL_JoyBallEvent jball; > SDL_JoyHatEvent jhat; > SDL_JoyButtonEvent jbutton; > SDL_ResizeEvent resize; > SDL_ExposeEvent expose; > SDL_QuitEvent quit; > SDL_UserEvent user; > SDL_SysWMEvent syswm; >} SDL_Event; ># 241 "/usr/include/SDL/SDL_events.h" >extern void SDL_PumpEvents(void); ># 255 "/usr/include/SDL/SDL_events.h" >typedef enum { > SDL_ADDEVENT, > SDL_PEEKEVENT, > SDL_GETEVENT >} SDL_eventaction; > >extern int SDL_PeepEvents(SDL_Event *events, int numevents, > SDL_eventaction action, Uint32 mask); > > > > > >extern int SDL_PollEvent(SDL_Event *event); > > > > > >extern int SDL_WaitEvent(SDL_Event *event); > > > > > >extern int SDL_PushEvent(SDL_Event *event); > > > > > > > >typedef int (*SDL_EventFilter)(const SDL_Event *event); ># 305 "/usr/include/SDL/SDL_events.h" >extern void SDL_SetEventFilter(SDL_EventFilter filter); > > > > > >extern SDL_EventFilter SDL_GetEventFilter(void); ># 325 "/usr/include/SDL/SDL_events.h" >extern Uint8 SDL_EventState(Uint8 type, int state); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 333 "/usr/include/SDL/SDL_events.h" 2 ># 43 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_video.h" 1 ># 44 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_byteorder.h" 1 ># 45 "/usr/include/SDL/SDL.h" 2 ># 1 "/usr/include/SDL/SDL_version.h" 1 ># 33 "/usr/include/SDL/SDL_version.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 34 "/usr/include/SDL/SDL_version.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 36 "/usr/include/SDL/SDL_version.h" 2 > > >extern "C" { ># 47 "/usr/include/SDL/SDL_version.h" >typedef struct { > Uint8 major; > Uint8 minor; > Uint8 patch; >} SDL_version; ># 82 "/usr/include/SDL/SDL_version.h" >extern const SDL_version * SDL_Linked_Version(void); > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 89 "/usr/include/SDL/SDL_version.h" 2 ># 46 "/usr/include/SDL/SDL.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 48 "/usr/include/SDL/SDL.h" 2 > > >extern "C" { ># 72 "/usr/include/SDL/SDL.h" >extern int SDL_Init(Uint32 flags); > > >extern int SDL_InitSubSystem(Uint32 flags); > > >extern void SDL_QuitSubSystem(Uint32 flags); > > > > > >extern Uint32 SDL_WasInit(Uint32 flags); > > > > >extern void SDL_Quit(void); > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 96 "/usr/include/SDL/SDL.h" 2 ># 20 "sdl_utils.hpp" 2 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iostream" 1 3 ># 42 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iostream" 3 > ># 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iostream" 3 > > > > > >namespace std >{ ># 63 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/iostream" 3 > extern istream cin; > extern ostream cout; > extern ostream cerr; > extern ostream clog; > > > extern wistream wcin; > extern wostream wcout; > extern wostream wcerr; > extern wostream wclog; > > > > > static ios_base::Init __ioinit; >} ># 23 "sdl_utils.hpp" 2 ># 36 "sdl_utils.hpp" >bool point_in_rect(int x, int y, const SDL_Rect& rect); > >bool rects_overlap(const SDL_Rect& rect1, const SDL_Rect& rect2); > >struct free_sdl_surface { > void operator()(SDL_Surface* surface) const; >}; > > >struct surface >{ >private: > int sdl_add_ref(SDL_Surface* surf); > typedef util::scoped_resource<SDL_Surface*,free_sdl_surface> scoped_sdl_surface; >public: > surface() : surface_(__null) > {} > > surface(SDL_Surface* surf); > > surface(const surface& o) : surface_(o.surface_.get()) > { > sdl_add_ref(get()); > } > > surface& operator=(const surface& o) > { > surface_.assign(o.surface_.get()); > sdl_add_ref(get()); > return *this; > } > > operator SDL_Surface*() const { return surface_; } > > SDL_Surface* get() const { return surface_.get(); } > > SDL_Surface* operator->() const { return surface_.get(); } > > void assign(const surface& o) > { > operator=(o); > } > > void assign(SDL_Surface* surf) { surface_.assign(surf); } > > bool null() const { return get() == __null; } > >private: > scoped_sdl_surface surface_; >}; > >bool operator<(const surface& a, const surface& b); > >surface make_neutral_surface(surface surf); >surface create_optimized_surface(surface surface); >surface scale_surface(surface surface, int w, int h); >surface scale_surface_blended(surface surface, int w, int h); >surface adjust_surface_colour(surface surface, int r, int g, int b); >surface greyscale_image(surface surface); >surface brighten_image(surface surface, double amount); >surface get_surface_portion(surface src, SDL_Rect& rect); >surface adjust_surface_alpha(surface surface, double amount); >surface adjust_surface_alpha_add(surface surface, int amount); >surface mask_surface(surface surf, surface mask); >surface cut_surface(surface surface, const SDL_Rect& r); >surface blend_surface(surface surface, double amount, Uint32 colour); >surface flip_surface(surface surface); >surface flop_surface(surface surface); > >surface create_compatible_surface(surface surf, int width=-1, int height=-1); > >void fill_rect_alpha(SDL_Rect& rect, Uint32 colour, Uint8 alpha, surface target); > >SDL_Rect get_non_transperant_portion(surface surf); > >bool operator==(const SDL_Rect& a, const SDL_Rect& b); >bool operator!=(const SDL_Rect& a, const SDL_Rect& b); > >struct pixel_data >{ > pixel_data() : r(0), g(0), b(0) > {} > > pixel_data(int red, int green, int blue) : r(red), g(green), b(blue) > {} > > pixel_data(int pixel, SDL_PixelFormat* fmt) { > unformat(pixel, fmt); > } > > pixel_data(config& cfg) { > read(cfg); > } > > int format(SDL_PixelFormat* fmt) const { > return SDL_MapRGB(fmt,r,g,b); > } > > void unformat(int pixel, SDL_PixelFormat* fmt) { > r = ((pixel&fmt->Rmask) >> fmt->Rshift); > g = ((pixel&fmt->Gmask) >> fmt->Gshift); > b = ((pixel&fmt->Bmask) >> fmt->Bshift); > } > > void read(const config& cfg) { > const std::string& red = cfg["red"]; > const std::string& green = cfg["green"]; > const std::string& blue = cfg["blue"]; > > if(red.empty()) > r = 0; > else > r = atoi(red.c_str()); > > if(green.empty()) > g = 0; > else > g = atoi(green.c_str()); > > if(blue.empty()) > b = 0; > else > b = atoi(blue.c_str()); > } > > int r, g, b; >}; > >struct surface_lock >{ > surface_lock(surface surface) : surface_(surface), locked_(false) > { > if((surface_->offset || ((surface_->flags & (0x00000001|0x00000004|0x00004000)) != 0))) { > const int res = SDL_LockSurface(surface_); > if(res == 0) { > locked_ = true; > } > } > } > > ~surface_lock() > { > if(locked_) { > SDL_UnlockSurface(surface_); > } > } > > Uint32* pixels() { return reinterpret_cast<Uint32*>(surface_->pixels); } >private: > surface const surface_; > bool locked_; >}; > >struct surface_restorer >{ > surface_restorer(); > surface_restorer(class CVideo* target, const SDL_Rect& rect); > ~surface_restorer(); > > void restore(); > void update(); > void cancel(); > > const SDL_Rect& area() const { return rect_; } > >private: > class CVideo* target_; > SDL_Rect rect_; > surface surface_; >}; > >struct clip_rect_setter >{ > clip_rect_setter(surface surf, SDL_Rect& r) : surface_(surf) > { > SDL_GetClipRect(surface_,&rect); > SDL_SetClipRect(surface_,&r); > } > > ~clip_rect_setter() { SDL_SetClipRect(surface_,&rect); } > >private: > surface surface_; > SDL_Rect rect; >}; ># 18 "terrain.hpp" 2 > > > >class terrain_type >{ >public: > terrain_type(); > terrain_type(const config& cfg); > > > const std::string& default_image() const; > const std::string& adjacent_image() const; > const std::string& name() const; > > > char letter() const; > > > const std::string& type() const; > > pixel_data get_rgb() const; > > bool is_light() const; > bool is_alias() const; > > int unit_height_adjust() const; > double unit_submerge() const; > > > > bool equal_precedence() const; > > bool gives_healing() const; > bool is_village() const; > bool is_castle() const; > bool is_keep() const; > >private: > std::vector<std::string> images_; > std::string adjacent_image_; > std::string name_; > > > > > char letter_; > std::string type_; > > pixel_data colour_; > > int height_adjust_; > > double submerge_; > > bool equal_precedence_; > bool is_light_; > > bool heals_, village_, castle_, keep_; >}; > >void create_terrain_maps(const std::vector<config*>& cfgs, > std::vector<char>& terrain_precedence, > std::map<char,terrain_type>& letter_to_terrain, > std::map<std::string,terrain_type>& str_to_terrain); ># 19 "map.hpp" 2 > > > > > > > >class gamemap >{ >public: > > typedef char TERRAIN; > > > > > > enum { FOGGED = '~', VOID_TERRAIN = ' ', KEEP = 'K', CASTLE = 'C', VILLAGE = 't', FOREST = 'f' }; > > > > > > const std::string& terrain_name(TERRAIN terrain) const; > std::vector<std::string> underlying_terrain_name(TERRAIN terrain) const; > const std::string& underlying_terrain(TERRAIN terrain) const; > > > struct incorrect_format_exception { > incorrect_format_exception(const char* msg) : msg_(msg) {} > const char* const msg_; > }; > > > struct location { > > enum DIRECTION { NORTH, NORTH_EAST, SOUTH_EAST, SOUTH, > SOUTH_WEST, NORTH_WEST }; > > location() : x(-1), y(-1) {} > location(int x, int y) : x(x), y(y) {} > explicit location(const config& cfg); > > void write(config& cfg) const; > > bool valid() const { return x >= 0 && y >= 0; } > > int x, y; > > > bool operator<(const location& a) const { return x < a.x || x == a.x && y < a.y; } > bool operator==(const location& a) const { return x == a.x && y == a.y; } > bool operator!=(const location& a) const { return !operator==(a); } > > > location operator-() const; > location operator+(const location &a) const; > location &operator+=(const location &a); > location operator-(const location &a) const; > location &operator-=(const location &a); > > location get_direction(DIRECTION d) const; > > static location null_location; > }; > > const std::string& underlying_terrain(const location& loc) const > { return underlying_terrain(get_terrain(loc)); } > > bool is_village(TERRAIN terrain) const; > bool gives_healing(TERRAIN terrain) const; > bool is_castle(TERRAIN terrain) const; > bool is_keep(TERRAIN terrain) const; > > bool is_village(const location& loc) const; > bool gives_healing(const location& loc) const; > bool is_castle(const location& loc) const; > bool is_keep(const location& loc) const; > > > > > > gamemap(const config& terrain_cfg, const std::string& data); > void read(const std::string& data); > > std::string write() const; > > > int x() const; > int y() const; > > > const std::vector<TERRAIN>& operator[](int index) const; > > > > > TERRAIN get_terrain(const location& loc) const; > > > const location& starting_position(int side) const; > int is_starting_position(const location& loc) const; > int num_valid_starting_positions() const; > > void set_starting_position(int side, const location& loc); > > > > bool on_board(const location& loc) const > { > return loc.valid() && loc.x < x() && loc.y < y(); > } > > > bool empty() const > { > return x() == 0 || y() == 0; > } > > > const std::vector<location>& villages() const { return villages_; } > > > > const terrain_type& get_terrain_info(TERRAIN terrain) const; > > > const terrain_type& get_terrain_info(const location &loc) const; > > > > const std::vector<TERRAIN>& get_terrain_precedence() const; > > bool is_built(const location& loc) const; > > > void set_terrain(const location& loc, TERRAIN ter); > > > > const std::map<TERRAIN,size_t>& get_weighted_terrain_frequencies() const; > > > > void remove_from_border_cache(const location &loc); >private: > int num_starting_positions() const; > > std::vector<TERRAIN> terrainPrecedence_; > std::map<TERRAIN,terrain_type> letterToTerrain_; > std::map<std::string,terrain_type> terrain_; > > std::vector<std::vector<TERRAIN> > tiles_; > std::vector<location> villages_; > location startingPositions_[10]; > > mutable std::map<location,TERRAIN> borderCache_; > mutable std::map<TERRAIN,size_t> terrainFrequencyCache_; >}; > > > >std::vector<gamemap::location> parse_location_range(const std::string& xvals, const std::string& yvals); ># 18 "unit.hpp" 2 ># 1 "team.hpp" 1 ># 19 "team.hpp" ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 1 "/usr/include/assert.h" 1 3 4 ># 65 "/usr/include/assert.h" 3 4 >extern "C" { > > >extern void __assert_fail (__const char *__assertion, __const char *__file, > unsigned int __line, __const char *__function) > throw () __attribute__ ((__noreturn__)); > > >extern void __assert_perror_fail (int __errnum, __const char *__file, > unsigned int __line, > __const char *__function) > throw () __attribute__ ((__noreturn__)); > > > > >extern void __assert (const char *__assertion, const char *__file, int __line) > throw () __attribute__ ((__noreturn__)); > > >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 2 3 ># 20 "team.hpp" 2 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/set" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/set" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/set" 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 >namespace std >{ > > template<class _Key, class _Compare = less<_Key>, > class _Alloc = allocator<_Key> > > class set; > > template<class _Key, class _Compare, class _Alloc> > inline bool > operator==(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y); > > template<class _Key, class _Compare, class _Alloc> > inline bool > operator<(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y); ># 106 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > template<class _Key, class _Compare, class _Alloc> > class set > { > > > > > > public: > > > > typedef _Key key_type; > typedef _Key value_type; > typedef _Compare key_compare; > typedef _Compare value_compare; > > > private: > typedef _Rb_tree<key_type, value_type, > _Identity<value_type>, key_compare, _Alloc> _Rep_type; > _Rep_type _M_t; > public: > > > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > > > > typedef typename _Rep_type::const_iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::const_reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > typedef typename _Rep_type::allocator_type allocator_type; > > > > > set() > : _M_t(_Compare(), allocator_type()) {} > > > > > > > > explicit set(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) {} ># 171 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > template<class _InputIterator> > set(_InputIterator __first, _InputIterator __last) > : _M_t(_Compare(), allocator_type()) > { _M_t.insert_unique(__first, __last); } ># 187 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > template<class _InputIterator> > set(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) > { _M_t.insert_unique(__first, __last); } ># 201 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > set(const set<_Key,_Compare,_Alloc>& __x) > : _M_t(__x._M_t) { } ># 211 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > set<_Key,_Compare,_Alloc>& > operator=(const set<_Key, _Compare, _Alloc>& __x) > { > _M_t = __x._M_t; > return *this; > } > > > > > key_compare > key_comp() const > { return _M_t.key_comp(); } > > value_compare > value_comp() const > { return _M_t.key_comp(); } > > allocator_type > get_allocator() const > { return _M_t.get_allocator(); } > > > > > > iterator > begin() const > { return _M_t.begin(); } > > > > > > iterator > end() const > { return _M_t.end(); } > > > > > > > reverse_iterator > rbegin() const > { return _M_t.rbegin(); } > > > > > > > reverse_iterator > rend() const > { return _M_t.rend(); } > > > bool > empty() const > { return _M_t.empty(); } > > > size_type > size() const > { return _M_t.size(); } > > > size_type > max_size() const > { return _M_t.max_size(); } ># 293 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > void > swap(set<_Key,_Compare,_Alloc>& __x) > { _M_t.swap(__x._M_t); } ># 311 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > pair<iterator,bool> > insert(const value_type& __x) > { > pair<typename _Rep_type::iterator, bool> __p = _M_t.insert_unique(__x); > return pair<iterator, bool>(__p.first, __p.second); > } ># 337 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > iterator > insert(iterator __position, const value_type& __x) > { > typedef typename _Rep_type::iterator _Rep_iterator; > return _M_t.insert_unique((_Rep_iterator&)__position, __x); > } ># 352 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > template<class _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t.insert_unique(__first, __last); } ># 366 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > void > erase(iterator __position) > { > typedef typename _Rep_type::iterator _Rep_iterator; > _M_t.erase((_Rep_iterator&)__position); > } ># 384 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > size_type > erase(const key_type& __x) { return _M_t.erase(__x); } ># 398 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > void > erase(iterator __first, iterator __last) > { > typedef typename _Rep_type::iterator _Rep_iterator; > _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last); > } > > > > > > > > void > clear() > { _M_t.clear(); } ># 425 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > size_type > count(const key_type& __x) const > { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } ># 443 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } > > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } ># 464 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } > > const_iterator > lower_bound(const key_type& __x) const > { return _M_t.lower_bound(__x); } ># 480 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > iterator > upper_bound(const key_type& __x) > { return _M_t.upper_bound(__x); } > > const_iterator > upper_bound(const key_type& __x) const > { return _M_t.upper_bound(__x); } ># 505 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > pair<iterator,iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } > > pair<const_iterator,const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > > template<class _K1, class _C1, class _A1> > friend bool > operator== (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&); > > template<class _K1, class _C1, class _A1> > friend bool > operator< (const set<_K1,_C1,_A1>&, const set<_K1,_C1,_A1>&); > }; ># 534 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > template<class _Key, class _Compare, class _Alloc> > inline bool > operator==(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 551 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_set.h" 3 > template<class _Key, class _Compare, class _Alloc> > inline bool > operator<(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template<class _Key, class _Compare, class _Alloc> > inline bool > operator!=(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y) > { return !(__x == __y); } > > > template<class _Key, class _Compare, class _Alloc> > inline bool > operator>(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y) > { return __y < __x; } > > > template<class _Key, class _Compare, class _Alloc> > inline bool > operator<=(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y) > { return !(__y < __x); } > > > template<class _Key, class _Compare, class _Alloc> > inline bool > operator>=(const set<_Key,_Compare,_Alloc>& __x, > const set<_Key,_Compare,_Alloc>& __y) > { return !(__x < __y); } > > > template<class _Key, class _Compare, class _Alloc> > inline void > swap(set<_Key,_Compare,_Alloc>& __x, set<_Key,_Compare,_Alloc>& __y) > { __x.swap(__y); } > >} ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/set" 2 3 ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 >namespace std >{ > > > template <class _Key, class _Compare = less<_Key>, > class _Alloc = allocator<_Key> > > class multiset; > > template <class _Key, class _Compare, class _Alloc> > inline bool > operator==(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y); > > template <class _Key, class _Compare, class _Alloc> > inline bool > operator<(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y); ># 104 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > template <class _Key, class _Compare, class _Alloc> > class multiset > { > > > > > > public: > > typedef _Key key_type; > typedef _Key value_type; > typedef _Compare key_compare; > typedef _Compare value_compare; > > private: > > typedef _Rb_tree<key_type, value_type, > _Identity<value_type>, key_compare, _Alloc> _Rep_type; > > _Rep_type _M_t; > > public: > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > > > > typedef typename _Rep_type::const_iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::const_reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > typedef typename _Rep_type::allocator_type allocator_type; > > > > > > > multiset() > : _M_t(_Compare(), allocator_type()) { } > > explicit > multiset(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) { } ># 164 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > template <class _InputIterator> > multiset(_InputIterator __first, _InputIterator __last) > : _M_t(_Compare(), allocator_type()) > { _M_t.insert_equal(__first, __last); } ># 180 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > template <class _InputIterator> > multiset(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, __a) > { _M_t.insert_equal(__first, __last); } ># 194 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > multiset(const multiset<_Key,_Compare,_Alloc>& __x) > : _M_t(__x._M_t) { } ># 204 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > multiset<_Key,_Compare,_Alloc>& > operator=(const multiset<_Key,_Compare,_Alloc>& __x) > { > _M_t = __x._M_t; > return *this; > } > > > > > key_compare > key_comp() const > { return _M_t.key_comp(); } > > value_compare > value_comp() const > { return _M_t.key_comp(); } > > allocator_type > get_allocator() const > { return _M_t.get_allocator(); } > > > > > > > iterator > begin() const > { return _M_t.begin(); } > > > > > > > iterator > end() const > { return _M_t.end(); } > > > > > > > reverse_iterator > rbegin() const > { return _M_t.rbegin(); } > > > > > > > reverse_iterator > rend() const > { return _M_t.rend(); } > > > bool > empty() const > { return _M_t.empty(); } > > > size_type > size() const > { return _M_t.size(); } > > > size_type > max_size() const > { return _M_t.max_size(); } ># 288 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > void > swap(multiset<_Key,_Compare,_Alloc>& __x) > { _M_t.swap(__x._M_t); } ># 304 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > iterator > insert(const value_type& __x) > { return _M_t.insert_equal(__x); } ># 328 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > iterator > insert(iterator __position, const value_type& __x) > { > typedef typename _Rep_type::iterator _Rep_iterator; > return _M_t.insert_equal((_Rep_iterator&)__position, __x); > } ># 343 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > template <class _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t.insert_equal(__first, __last); } ># 358 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > void > erase(iterator __position) > { > typedef typename _Rep_type::iterator _Rep_iterator; > _M_t.erase((_Rep_iterator&)__position); > } ># 376 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 391 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > void > erase(iterator __first, iterator __last) > { > typedef typename _Rep_type::iterator _Rep_iterator; > _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last); > } > > > > > > > > void > clear() > { _M_t.clear(); } ># 415 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > size_type > count(const key_type& __x) const > { return _M_t.count(__x); } ># 433 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } > > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } ># 454 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } > > const_iterator > lower_bound(const key_type& __x) const > { return _M_t.lower_bound(__x); } ># 470 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > iterator > upper_bound(const key_type& __x) > { return _M_t.upper_bound(__x); } > > const_iterator > upper_bound(const key_type& __x) const > { return _M_t.upper_bound(__x); } ># 495 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > pair<iterator,iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } > > pair<const_iterator,const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > template <class _K1, class _C1, class _A1> > friend bool > operator== (const multiset<_K1,_C1,_A1>&, > const multiset<_K1,_C1,_A1>&); > > template <class _K1, class _C1, class _A1> > friend bool > operator< (const multiset<_K1,_C1,_A1>&, > const multiset<_K1,_C1,_A1>&); > }; ># 525 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > template <class _Key, class _Compare, class _Alloc> > inline bool > operator==(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 542 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_multiset.h" 3 > template <class _Key, class _Compare, class _Alloc> > inline bool > operator<(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template <class _Key, class _Compare, class _Alloc> > inline bool > operator!=(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return !(__x == __y); } > > > template <class _Key, class _Compare, class _Alloc> > inline bool > operator>(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return __y < __x; } > > > template <class _Key, class _Compare, class _Alloc> > inline bool > operator<=(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return !(__y < __x); } > > > template <class _Key, class _Compare, class _Alloc> > inline bool > operator>=(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return !(__x < __y); } > > > template <class _Key, class _Compare, class _Alloc> > inline void > swap(multiset<_Key,_Compare,_Alloc>& __x, > multiset<_Key,_Compare,_Alloc>& __y) > { __x.swap(__y); } > >} ># 69 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/set" 2 3 ># 21 "team.hpp" 2 > > > > > >class team >{ > class shroud_map { > public: > shroud_map() : enabled_(false) {} > > void place(size_t x, size_t y); > bool clear(size_t x, size_t y); > void reset(); > > bool value(size_t x, size_t y) const; > bool shared_value(const std::vector<const shroud_map*>& maps, size_t x, size_t y) const; > > bool copy_from(const std::vector<const shroud_map*>& maps); > > std::string write() const; > void read(const std::string& shroud_data); > > bool enabled() const { return enabled_; } > void set_enabled(bool enabled) { enabled_ = enabled; } > private: > bool enabled_; > std::vector<std::vector<bool> > data_; > }; >public: > > struct target { > explicit target(const config& cfg); > void write(config& cfg) const; > config criteria; > double value; > }; > > struct team_info > { > team_info(const config& cfg); > void write(config& cfg) const; > std::string name; > std::string gold; > std::string income; > int income_per_village; > std::set<std::string> can_recruit; > std::vector<std::string> recruitment_pattern; > std::vector<int> enemies; > std::string team_name; > > std::string flag; > > std::string description; > > enum CONTROLLER { HUMAN, AI, NETWORK, EMPTY }; > CONTROLLER controller; > std::string ai_algorithm; > > std::vector<config> ai_params; > > int villages_per_scout; > double leader_value, village_value; > > std::vector<target> targets; > > bool share_maps, share_view; > > std::string music; > > int colour; > }; > > team(const config& cfg, int gold=100); > > void write(config& cfg) const; > > void get_village(const gamemap::location&); > void lose_village(const gamemap::location&); > void clear_villages(); > const std::set<gamemap::location>& villages() const; > bool owns_village(const gamemap::location&) const; > > int gold() const; > int income() const; > void new_turn(); > void set_time_of_day(int turn, const struct time_of_day& tod); > void get_shared_maps(); > void spend_gold(int amount); > void set_income(int amount); > > const std::set<std::string>& recruits() const; > std::set<std::string>& recruits(); > const std::vector<std::string>& recruitment_pattern() const; > const std::string& name() const; > > bool is_enemy(int side) const; > double aggression() const; > double caution() const; > > bool is_human() const; > bool is_network() const; > bool is_ai() const; > bool is_empty() const; > > void make_human(); > void make_network(); > void make_ai(); > > const std::string& team_name() const; > void change_team(const std::string& name); > > const std::string& flag() const; > > const std::string& ai_algorithm() const; > const config& ai_parameters() const; > > double leader_value() const; > double village_value() const; > > int villages_per_scout() const; > > std::vector<target>& targets(); > > > > bool shrouded(int x, int y) const; > bool fogged(int x, int y) const; > > bool uses_shroud() const { return shroud_.enabled(); } > bool uses_fog() const { return fog_.enabled(); } > bool fog_or_shroud() const { return uses_shroud() || uses_fog(); } > bool clear_shroud(int x, int y) { return shroud_.clear(x+1,y+1); } > void place_shroud(int x, int y) { shroud_.place(x+1,y+1); } > bool clear_fog(int x, int y) { return fog_.clear(x+1,y+1); } > void refog() { fog_.reset(); } > > bool knows_about_team(size_t index) const; > bool copy_ally_shroud(); > > bool auto_shroud_updates() const { return auto_shroud_updates_; } > void set_auto_shroud_updates(bool value) { auto_shroud_updates_ = value; } > > const std::string& music() const; > > int map_colour_to() const; > > static int nteams(); > > > static const SDL_Color& get_side_colour(int side); > static int get_side_colour_index(int side); > >private: > > bool share_maps() const { return info_.share_maps; } > bool share_view() const { return info_.share_view; } > > std::vector<const shroud_map*> ally_shroud(const std::vector<team>& teams) const; > std::vector<const shroud_map*> ally_fog(const std::vector<team>& teams) const; > > int gold_; > std::set<gamemap::location> villages_; > > shroud_map shroud_, fog_; > > bool auto_shroud_updates_; > > team_info info_; > > config aiparams_; > > > double aggression_, caution_; >}; > >struct teams_manager { > teams_manager(std::vector<team>& teams); > ~teams_manager(); >}; > >bool is_observer(); > > > >void validate_side(int side); ># 19 "unit.hpp" 2 ># 1 "unit_types.hpp" 1 ># 18 "unit_types.hpp" ># 1 "race.hpp" 1 > > > > > > > ># 1 "language.hpp" 1 ># 23 "language.hpp" >typedef std::vector<wchar_t> wide_string; > > > >struct symbol_table >{ > const std::string& operator[](const std::string& key) const; > const std::string& operator[](const char* key) const; >}; > > > > >extern symbol_table string_table; > > > >const std::string& translate_string(const std::string& str); > > > >const std::string& translate_string_default(const std::string& key, const std::string& default_val); > > > >std::vector<std::string> get_languages(); > > > > > >bool set_language(const std::string& locale); > > >const std::string& get_language(); > > >std::string get_locale(); > > > >std::vector<std::string> split_utf8_string(const std::string &src); >std::string wstring_to_string(const wide_string &); >wide_string string_to_wstring(const std::string &); >std::string wchar_to_string(const wchar_t); ># 9 "race.hpp" 2 > > >typedef std::map<wide_string, std::vector<wchar_t> > markov_prefix_map; > >class unit_race >{ >public: > enum GENDER { MALE, FEMALE, NUM_GENDERS }; > > unit_race(); > unit_race(const config& cfg); > > const std::string& name() const; > > std::string generate_name(GENDER gender) const; > > int num_traits() const; > > bool not_living() const; > >private: > std::string name_; > int ntraits_; > std::vector<std::string> names_[NUM_GENDERS]; > markov_prefix_map next_[NUM_GENDERS]; > int chain_size_; > > bool not_living_; >}; > >typedef std::map<std::string,unit_race> race_map; ># 19 "unit_types.hpp" 2 > ># 1 "animated.hpp" 1 ># 19 "animated.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 20 "animated.hpp" 2 > ># 1 "util.hpp" 1 ># 16 "util.hpp" ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 1 3 ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 3 > ># 48 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 3 > > > > ># 1 "/usr/include/math.h" 1 3 4 ># 29 "/usr/include/math.h" 3 4 >extern "C" { > > > ># 1 "/usr/include/bits/huge_val.h" 1 3 4 ># 34 "/usr/include/math.h" 2 3 4 > ># 1 "/usr/include/bits/huge_valf.h" 1 3 4 ># 36 "/usr/include/math.h" 2 3 4 ># 1 "/usr/include/bits/huge_vall.h" 1 3 4 ># 37 "/usr/include/math.h" 2 3 4 > > ># 1 "/usr/include/bits/inf.h" 1 3 4 ># 40 "/usr/include/math.h" 2 3 4 > > ># 1 "/usr/include/bits/nan.h" 1 3 4 ># 43 "/usr/include/math.h" 2 3 4 > > > ># 1 "/usr/include/bits/mathdef.h" 1 3 4 ># 29 "/usr/include/bits/mathdef.h" 3 4 >typedef long double float_t; > >typedef long double double_t; ># 47 "/usr/include/math.h" 2 3 4 ># 70 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathcalls.h" 1 3 4 ># 53 "/usr/include/bits/mathcalls.h" 3 4 > > >extern double acos (double __x) throw (); extern double __acos (double __x) throw (); > >extern double asin (double __x) throw (); extern double __asin (double __x) throw (); > >extern double atan (double __x) throw (); extern double __atan (double __x) throw (); > >extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); > > >extern double cos (double __x) throw (); extern double __cos (double __x) throw (); > >extern double sin (double __x) throw (); extern double __sin (double __x) throw (); > >extern double tan (double __x) throw (); extern double __tan (double __x) throw (); > > > > >extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); > >extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); > >extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); > > > > >extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw (); > > > > > > >extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); > >extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); > >extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); > > > > > > > >extern double exp (double __x) throw (); extern double __exp (double __x) throw (); > > >extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); > > >extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); > > >extern double log (double __x) throw (); extern double __log (double __x) throw (); > > >extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); > > >extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw (); > > > > >extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); > >extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw (); > > > > > >extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); > > >extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); > > >extern double logb (double __x) throw (); extern double __logb (double __x) throw (); > > > > > > >extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); > > >extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); > > > > > > > > >extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); > > >extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); > > > > > >extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); > > > > > > >extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); > > > > > > > > >extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); > > >extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); > > >extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); > > >extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); > > > > >extern int __isinf (double __value) throw () __attribute__ ((__const__)); > > >extern int __finite (double __value) throw () __attribute__ ((__const__)); > > > > > >extern int isinf (double __value) throw () __attribute__ ((__const__)); > > >extern int finite (double __value) throw () __attribute__ ((__const__)); > > >extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); > > > >extern double significand (double __x) throw (); extern double __significand (double __x) throw (); > > > > > >extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); > > > > > > >extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__)); > > > > > >extern int __isnan (double __value) throw () __attribute__ ((__const__)); > > > >extern int isnan (double __value) throw () __attribute__ ((__const__)); > > >extern double j0 (double) throw (); extern double __j0 (double) throw (); >extern double j1 (double) throw (); extern double __j1 (double) throw (); >extern double jn (int, double) throw (); extern double __jn (int, double) throw (); >extern double y0 (double) throw (); extern double __y0 (double) throw (); >extern double y1 (double) throw (); extern double __y1 (double) throw (); >extern double yn (int, double) throw (); extern double __yn (int, double) throw (); > > > > > > >extern double erf (double) throw (); extern double __erf (double) throw (); >extern double erfc (double) throw (); extern double __erfc (double) throw (); >extern double lgamma (double) throw (); extern double __lgamma (double) throw (); > > > > > > >extern double tgamma (double) throw (); extern double __tgamma (double) throw (); > > > > > >extern double gamma (double) throw (); extern double __gamma (double) throw (); > > > > > > >extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); > > > > > > > >extern double rint (double __x) throw (); extern double __rint (double __x) throw (); > > >extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__)); > >extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); > > > >extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); > > > >extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); > > > >extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); > > > > >extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); > > > >extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); > > > >extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); > > > >extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); > > > > >extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); > > > > > > >extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); >extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); > > > >extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); >extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); > > > >extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); > > >extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw (); > > >extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw (); > > > >extern int __fpclassify (double __value) throw () > __attribute__ ((__const__)); > > >extern int __signbit (double __value) throw () > __attribute__ ((__const__)); > > > >extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); > > > > >extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); ># 71 "/usr/include/math.h" 2 3 4 ># 93 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathcalls.h" 1 3 4 ># 53 "/usr/include/bits/mathcalls.h" 3 4 > > >extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); > >extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); > >extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); > >extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); > > >extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); > >extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); > >extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); > > > > >extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); > >extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); > >extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); > > > > >extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw (); > > > > > > >extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); > >extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); > >extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); > > > > > > > >extern float expf (float __x) throw (); extern float __expf (float __x) throw (); > > >extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); > > >extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); > > >extern float logf (float __x) throw (); extern float __logf (float __x) throw (); > > >extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); > > >extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw (); > > > > >extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); > >extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw (); > > > > > >extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); > > >extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); > > >extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); > > > > > > >extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); > > >extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); > > > > > > > > >extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); > > >extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); > > > > > >extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); > > > > > > >extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); > > > > > > > > >extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); > > >extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); > > >extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); > > >extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); > > > > >extern int __isinff (float __value) throw () __attribute__ ((__const__)); > > >extern int __finitef (float __value) throw () __attribute__ ((__const__)); > > > > > >extern int isinff (float __value) throw () __attribute__ ((__const__)); > > >extern int finitef (float __value) throw () __attribute__ ((__const__)); > > >extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); > > > >extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); > > > > > >extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); > > > > > > >extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__)); > > > > > >extern int __isnanf (float __value) throw () __attribute__ ((__const__)); > > > >extern int isnanf (float __value) throw () __attribute__ ((__const__)); > > >extern float j0f (float) throw (); extern float __j0f (float) throw (); >extern float j1f (float) throw (); extern float __j1f (float) throw (); >extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); >extern float y0f (float) throw (); extern float __y0f (float) throw (); >extern float y1f (float) throw (); extern float __y1f (float) throw (); >extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); > > > > > > >extern float erff (float) throw (); extern float __erff (float) throw (); >extern float erfcf (float) throw (); extern float __erfcf (float) throw (); >extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); > > > > > > >extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); > > > > > >extern float gammaf (float) throw (); extern float __gammaf (float) throw (); > > > > > > >extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); > > > > > > > >extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); > > >extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); > >extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); > > > >extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); > > > >extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); > > > >extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); > > > > >extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); > > > >extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); > > > >extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); > > > >extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); > > > > >extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); > > > > > > >extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); >extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); > > > >extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); >extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); > > > >extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); > > >extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw (); > > >extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw (); > > > >extern int __fpclassifyf (float __value) throw () > __attribute__ ((__const__)); > > >extern int __signbitf (float __value) throw () > __attribute__ ((__const__)); > > > >extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); > > > > >extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); ># 94 "/usr/include/math.h" 2 3 4 ># 114 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathcalls.h" 1 3 4 ># 53 "/usr/include/bits/mathcalls.h" 3 4 > > >extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); > >extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); > >extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); > >extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); > > >extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); > >extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); > >extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); > > > > >extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); > >extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); > >extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); > > > > >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 (); > > > > > > >extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); > >extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); > >extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); > > > > > > > >extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); > > >extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); > > >extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); > > >extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); > > >extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); > > >extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw (); > > > > >extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); > >extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw (); > > > > > >extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); > > >extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); > > >extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); > > > > > > >extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); > > >extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); > > > > > > > > >extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); > > >extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); > > > > > >extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); > > > > > > >extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); > > > > > > > > >extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); > > >extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); > > >extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); > > >extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); > > > > >extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); > > >extern int __finitel (long double __value) throw () __attribute__ ((__const__)); > > > > > >extern int isinfl (long double __value) throw () __attribute__ ((__const__)); > > >extern int finitel (long double __value) throw () __attribute__ ((__const__)); > > >extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); > > > >extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); > > > > > >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__)); > > > > > > >extern long double nanl (__const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) throw () __attribute__ ((__const__)); > > > > > >extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); > > > >extern int isnanl (long double __value) throw () __attribute__ ((__const__)); > > >extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); >extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); >extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); >extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); >extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); >extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); > > > > > > >extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); >extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); >extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); > > > > > > >extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); > > > > > >extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); > > > > > > >extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); > > > > > > > >extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); > > >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__)); > >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__)); > > > >extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); > > > >extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); > > > >extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); > > > > >extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); > > > >extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); > > > >extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); > > > >extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); > > > > >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 (); > > > > > > >extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); >extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); > > > >extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); >extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); > > > >extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); > > >extern long double fmaxl (long double __x, long double __y) throw (); extern long double __fmaxl (long double __x, long double __y) throw (); > > >extern long double fminl (long double __x, long double __y) throw (); extern long double __fminl (long double __x, long double __y) throw (); > > > >extern int __fpclassifyl (long double __value) throw () > __attribute__ ((__const__)); > > >extern int __signbitl (long double __value) throw () > __attribute__ ((__const__)); > > > >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 (); > > > > >extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); ># 115 "/usr/include/math.h" 2 3 4 ># 130 "/usr/include/math.h" 3 4 >extern int signgam; ># 171 "/usr/include/math.h" 3 4 >enum > { > FP_NAN, > > FP_INFINITE, > > FP_ZERO, > > FP_SUBNORMAL, > > FP_NORMAL > > }; ># 257 "/usr/include/math.h" 3 4 >typedef enum >{ > _IEEE_ = -1, > _SVID_, > _XOPEN_, > _POSIX_, > _ISOC_ >} _LIB_VERSION_TYPE; > > > > >extern _LIB_VERSION_TYPE _LIB_VERSION; ># 280 "/usr/include/math.h" 3 4 >struct __exception > > > > { > int type; > char *name; > double arg1; > double arg2; > double retval; > }; > > >extern int matherr (struct __exception *__exc) throw (); ># 382 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathinline.h" 1 3 4 ># 127 "/usr/include/bits/mathinline.h" 3 4 >__inline int >__signbitf (float __x) throw () >{ > __extension__ union { float __f; int __i; } __u = { __f: __x }; > return __u.__i < 0; >} >__inline int >__signbit (double __x) throw () >{ > __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; > return __u.__i[1] < 0; >} >__inline int >__signbitl (long double __x) throw () >{ > __extension__ union { long double __l; int __i[3]; } __u = { __l: __x }; > return (__u.__i[2] & 0x8000) != 0; >} ># 291 "/usr/include/bits/mathinline.h" 3 4 >__inline double __sgn (double) throw (); __inline double __sgn (double __x) throw () { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } __inline float __sgnf (float) throw (); __inline float __sgnf (float __x) throw () { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } __inline long double __sgnl (long double) throw (); __inline long double __sgnl (long double __x) throw () { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } ># 433 "/usr/include/bits/mathinline.h" 3 4 >__inline long double __atan2l (long double __y, long double __x) throw () { return __builtin_atan2l (__y, __x); } ># 473 "/usr/include/bits/mathinline.h" 3 4 >__inline double fabs (double __x) throw () { return __builtin_fabs (__x); } > >__inline float fabsf (float __x) throw () { return __builtin_fabsf (__x); } >__inline long double fabsl (long double __x) throw () { return __builtin_fabsl (__x); } > >__inline long double __fabsl (long double __x) throw () { return __builtin_fabsl (__x); } ># 506 "/usr/include/bits/mathinline.h" 3 4 >__inline long double __sgn1l (long double) throw (); __inline long double __sgn1l (long double __x) throw () { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; } ># 530 "/usr/include/bits/mathinline.h" 3 4 >__inline double floor (double __x) throw () { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } __inline float floorf (float __x) throw () { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } __inline long double floorl (long double __x) throw () { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } ># 541 "/usr/include/bits/mathinline.h" 3 4 >__inline double ceil (double __x) throw () { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } __inline float ceilf (float __x) throw () { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } __inline long double ceill (long double __x) throw () { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } ># 653 "/usr/include/bits/mathinline.h" 3 4 >__inline long int >lrintf (float __x) throw () >{ > long int __lrintres; __asm__ __volatile__ ("fistpl %0" : "=m" (__lrintres) : "t" (__x) : "st"); return __lrintres; >} >__inline long int >lrint (double __x) throw () >{ > long int __lrintres; __asm__ __volatile__ ("fistpl %0" : "=m" (__lrintres) : "t" (__x) : "st"); return __lrintres; >} >__inline long int >lrintl (long double __x) throw () >{ > long int __lrintres; __asm__ __volatile__ ("fistpl %0" : "=m" (__lrintres) : "t" (__x) : "st"); return __lrintres; >} ># 676 "/usr/include/bits/mathinline.h" 3 4 >__inline long long int >llrintf (float __x) throw () >{ > long long int __llrintres; __asm__ __volatile__ ("fistpll %0" : "=m" (__llrintres) : "t" (__x) : "st"); return __llrintres; >} >__inline long long int >llrint (double __x) throw () >{ > long long int __llrintres; __asm__ __volatile__ ("fistpll %0" : "=m" (__llrintres) : "t" (__x) : "st"); return __llrintres; >} >__inline long long int >llrintl (long double __x) throw () >{ > long long int __llrintres; __asm__ __volatile__ ("fistpll %0" : "=m" (__llrintres) : "t" (__x) : "st"); return __llrintres; >} ># 713 "/usr/include/bits/mathinline.h" 3 4 >__inline int >__finite (double __x) throw () >{ > return (__extension__ > (((((union { double __d; int __i[2]; }) {__d: __x}).__i[1] > | 0x800fffffu) + 1) >> 31)); >} ># 383 "/usr/include/math.h" 2 3 4 ># 438 "/usr/include/math.h" 3 4 >} ># 53 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 2 3 ># 81 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 3 >namespace std >{ > > > template<typename _Tp> _Tp __cmath_power(_Tp, unsigned int); > > inline double > abs(double __x) > { return __builtin_fabs(__x); } > > inline float > abs(float __x) > { return __builtin_fabsf(__x); } > > inline long double > abs(long double __x) > { return __builtin_fabsl(__x); } > > using ::acos; > > inline float > acos(float __x) > { return __builtin_acosf(__x); } > > inline long double > acos(long double __x) > { return __builtin_acosl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > acos(_Tp __x) > { > return __builtin_acos(__x); > } > > using ::asin; > > inline float > asin(float __x) > { return __builtin_asinf(__x); } > > inline long double > asin(long double __x) > { return __builtin_asinl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > asin(_Tp __x) > { return __builtin_asin(__x); } > > using ::atan; > > inline float > atan(float __x) > { return __builtin_atanf(__x); } > > inline long double > atan(long double __x) > { return __builtin_atanl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > atan(_Tp __x) > { return __builtin_atan(__x); } > > using ::atan2; > > inline float > atan2(float __y, float __x) > { return __builtin_atan2f(__y, __x); } > > inline long double > atan2(long double __y, long double __x) > { return __builtin_atan2l(__y, __x); } > > template<typename _Tp, typename _Up> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type > && __is_integer<_Up>::_M_type>::_M_type > atan2(_Tp __y, _Up __x) > { return __builtin_atan2(__y, __x); } > > using ::ceil; > > inline float > ceil(float __x) > { return __builtin_ceilf(__x); } > > inline long double > ceil(long double __x) > { return __builtin_ceill(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > ceil(_Tp __x) > { return __builtin_ceil(__x); } > > using ::cos; > > inline float > cos(float __x) > { return __builtin_cosf(__x); } > > inline long double > cos(long double __x) > { return __builtin_cosl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > cos(_Tp __x) > { return __builtin_cos(__x); } > > using ::cosh; > > inline float > cosh(float __x) > { return __builtin_coshf(__x); } > > inline long double > cosh(long double __x) > { return __builtin_coshl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > cosh(_Tp __x) > { return __builtin_cosh(__x); } > > using ::exp; > > inline float > exp(float __x) > { return __builtin_expf(__x); } > > inline long double > exp(long double __x) > { return __builtin_expl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > exp(_Tp __x) > { return __builtin_exp(__x); } > > using ::fabs; > > inline float > fabs(float __x) > { return __builtin_fabsf(__x); } > > inline long double > fabs(long double __x) > { return __builtin_fabsl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > fabs(_Tp __x) > { return __builtin_fabs(__x); } > > using ::floor; > > inline float > floor(float __x) > { return __builtin_floorf(__x); } > > inline long double > floor(long double __x) > { return __builtin_floorl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > floor(_Tp __x) > { return __builtin_floor(__x); } > > using ::fmod; > > inline float > fmod(float __x, float __y) > { return __builtin_fmodf(__x, __y); } > > inline long double > fmod(long double __x, long double __y) > { return __builtin_fmodl(__x, __y); } > > using ::frexp; > > inline float > frexp(float __x, int* __exp) > { return __builtin_frexpf(__x, __exp); } > > inline long double > frexp(long double __x, int* __exp) > { return __builtin_frexpl(__x, __exp); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > frexp(_Tp __x, int* __exp) > { return __builtin_frexp(__x, __exp); } > > using ::ldexp; > > inline float > ldexp(float __x, int __exp) > { return __builtin_ldexpf(__x, __exp); } > > inline long double > ldexp(long double __x, int __exp) > { return __builtin_ldexpl(__x, __exp); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > ldexp(_Tp __x, int __exp) > { return __builtin_ldexp(__x, __exp); } > > using ::log; > > inline float > log(float __x) > { return __builtin_logf(__x); } > > inline long double > log(long double __x) > { return __builtin_logl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > log(_Tp __x) > { return __builtin_log(__x); } > > using ::log10; > > inline float > log10(float __x) > { return __builtin_log10f(__x); } > > inline long double > log10(long double __x) > { return __builtin_log10l(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > log10(_Tp __x) > { return __builtin_log10(__x); } > > using ::modf; > > inline float > modf(float __x, float* __iptr) > { return __builtin_modff(__x, __iptr); } > > inline long double > modf(long double __x, long double* __iptr) > { return __builtin_modfl(__x, __iptr); } > > template<typename _Tp> > inline _Tp > __pow_helper(_Tp __x, int __n) > { > return __n < 0 > ? _Tp(1)/__cmath_power(__x, -__n) > : __cmath_power(__x, __n); > } > > using ::pow; > > inline float > pow(float __x, float __y) > { return __builtin_powf(__x, __y); } > > inline long double > pow(long double __x, long double __y) > { return __builtin_powl(__x, __y); } > > inline double > pow(double __x, int __i) > { return __pow_helper(__x, __i); } > > inline float > pow(float __x, int __n) > { return __pow_helper(__x, __n); } > > inline long double > pow(long double __x, int __n) > { return __pow_helper(__x, __n); } > > using ::sin; > > inline float > sin(float __x) > { return __builtin_sinf(__x); } > > inline long double > sin(long double __x) > { return __builtin_sinl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > sin(_Tp __x) > { return __builtin_sin(__x); } > > using ::sinh; > > inline float > sinh(float __x) > { return __builtin_sinhf(__x); } > > inline long double > sinh(long double __x) > { return __builtin_sinhl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > sinh(_Tp __x) > { return __builtin_sinh(__x); } > > using ::sqrt; > > inline float > sqrt(float __x) > { return __builtin_sqrtf(__x); } > > inline long double > sqrt(long double __x) > { return __builtin_sqrtl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > sqrt(_Tp __x) > { return __builtin_sqrt(__x); } > > using ::tan; > > inline float > tan(float __x) > { return __builtin_tanf(__x); } > > inline long double > tan(long double __x) > { return __builtin_tanl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > tan(_Tp __x) > { return __builtin_tan(__x); } > > using ::tanh; > > inline float > tanh(float __x) > { return __builtin_tanhf(__x); } > > inline long double > tanh(long double __x) > { return __builtin_tanhl(__x); } > > template<typename _Tp> > inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type > tanh(_Tp __x) > { return __builtin_tanh(__x); } >} > > > > > > >namespace __gnu_cxx >{ > template<typename _Tp> > int > __capture_fpclassify(_Tp __f) { return (sizeof (__f) == sizeof (float) ? __fpclassifyf (__f) : sizeof (__f) == sizeof (double) ? __fpclassify (__f) : __fpclassifyl (__f)); } > > template<typename _Tp> > int > __capture_isfinite(_Tp __f) { return (sizeof (__f) == sizeof (float) ? __finitef (__f) : sizeof (__f) == sizeof (double) ? __finite (__f) : __finitel (__f)); } > > template<typename _Tp> > int > __capture_isinf(_Tp __f) { return (sizeof (__f) == sizeof (float) ? __isinff (__f) : sizeof (__f) == sizeof (double) ? __isinf (__f) : __isinfl (__f)); } > > template<typename _Tp> > int > __capture_isnan(_Tp __f) { return (sizeof (__f) == sizeof (float) ? __isnanf (__f) : sizeof (__f) == sizeof (double) ? __isnan (__f) : __isnanl (__f)); } > > template<typename _Tp> > int > __capture_isnormal(_Tp __f) { return ((sizeof (__f) == sizeof (float) ? __fpclassifyf (__f) : sizeof (__f) == sizeof (double) ? __fpclassify (__f) : __fpclassifyl (__f)) == FP_NORMAL); } > > template<typename _Tp> > int > __capture_signbit(_Tp __f) { return (sizeof (__f) == sizeof (float) ? __signbitf (__f) : sizeof (__f) == sizeof (double) ? __signbit (__f) : __signbitl (__f)); } > > template<typename _Tp> > int > __capture_isgreater(_Tp __f1, _Tp __f2) > { return __builtin_isgreater(__f1, __f2); } > > template<typename _Tp> > int > __capture_isgreaterequal(_Tp __f1, _Tp __f2) > { return __builtin_isgreaterequal(__f1, __f2); } > > template<typename _Tp> > int > __capture_isless(_Tp __f1, _Tp __f2) { return __builtin_isless(__f1, __f2); } > > template<typename _Tp> > int > __capture_islessequal(_Tp __f1, _Tp __f2) > { return __builtin_islessequal(__f1, __f2); } > > template<typename _Tp> > int > __capture_islessgreater(_Tp __f1, _Tp __f2) > { return __builtin_islessgreater(__f1, __f2); } > > template<typename _Tp> > int > __capture_isunordered(_Tp __f1, _Tp __f2) > { return __builtin_isunordered(__f1, __f2); } >} ># 518 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 3 >namespace __gnu_cxx >{ > template<typename _Tp> > int > fpclassify(_Tp __f) { return __capture_fpclassify(__f); } > > template<typename _Tp> > int > isfinite(_Tp __f) { return __capture_isfinite(__f); } > > template<typename _Tp> > int > isinf(_Tp __f) { return __capture_isinf(__f); } > > template<typename _Tp> > int > isnan(_Tp __f) { return __capture_isnan(__f); } > > template<typename _Tp> > int > isnormal(_Tp __f) { return __capture_isnormal(__f); } > > template<typename _Tp> > int > signbit(_Tp __f) { return __capture_signbit(__f); } > > template<typename _Tp> > int > isgreater(_Tp __f1, _Tp __f2) { return __capture_isgreater(__f1, __f2); } > > template<typename _Tp> > int > isgreaterequal(_Tp __f1, _Tp __f2) > { return __capture_isgreaterequal(__f1, __f2); } > > template<typename _Tp> > int > isless(_Tp __f1, _Tp __f2) { return __capture_isless(__f1, __f2); } > > template<typename _Tp> > int > islessequal(_Tp __f1, _Tp __f2) > { return __capture_islessequal(__f1, __f2); } > > template<typename _Tp> > int > islessgreater(_Tp __f1, _Tp __f2) > { return __capture_islessgreater(__f1, __f2); } > > template<typename _Tp> > int > isunordered(_Tp __f1, _Tp __f2) > { return __capture_isunordered(__f1, __f2); } >} > >namespace std >{ > using __gnu_cxx::fpclassify; > using __gnu_cxx::isfinite; > using __gnu_cxx::isinf; > using __gnu_cxx::isnan; > using __gnu_cxx::isnormal; > using __gnu_cxx::signbit; > using __gnu_cxx::isgreater; > using __gnu_cxx::isgreaterequal; > using __gnu_cxx::isless; > using __gnu_cxx::islessequal; > using __gnu_cxx::islessgreater; > using __gnu_cxx::isunordered; >} > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/cmath.tcc" 1 3 ># 35 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/cmath.tcc" 3 >namespace std >{ > template<typename _Tp> > inline _Tp > __cmath_power(_Tp __x, unsigned int __n) > { > _Tp __y = __n % 2 ? __x : 1; > > while (__n >>= 1) > { > __x = __x * __x; > if (__n % 2) > __y = __y * __x; > } > > return __y; > } >} ># 593 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cmath" 2 3 ># 17 "util.hpp" 2 > > > > > >template<typename T> >T& minimum(T& a, T& b) { return a < b ? a : b; } > >template<typename T> >const T& minimum(const T& a, const T& b) { return a < b ? a : b; } > >template<typename T> >T& maximum(T& a, T& b) { return a < b ? b : a; } > >template<typename T> >const T& maximum(const T& a, const T& b) { return a < b ? b : a; } > >template<typename T> >inline bool is_odd(T num) { return (static_cast<unsigned int>(num > 0 ? num : -num)&1) == 1; } > >template<typename T> >inline bool is_even(T num) { return !is_odd(num); } > > > >namespace util { > >template<typename T> >T round(T n) { return floor(n + 0.5); } > >} > >struct bad_lexical_cast {}; > >template<typename To, typename From> >To lexical_cast(From a) >{ > To res; > std::stringstream str; > > if(!(str << a && str >> res)) { > throw bad_lexical_cast(); > } else { > return res; > } >} > >template<typename To, typename From> >To lexical_cast_default(From a, To def=To()) >{ > To res; > std::stringstream str; > > if(!(str << a && str >> res)) { > return def; > } else { > return res; > } >} > >template<typename From> >std::string str_cast(From a) >{ > return lexical_cast<std::string,From>(a); >} > >inline bool chars_equal_insensitive(char a, char b) { return tolower(a) == tolower(b); } > > > >template<typename T, typename C> >void push_back(T& str, C c) >{ > str.resize(str.size()+1); > str[str.size()-1] = c; >} ># 22 "animated.hpp" 2 > >template<typename T> >class void_value >{ > public: > const T operator()() { return T(); } >}; > >template<typename T, typename T_void_value=void_value<T> > >class animated >{ >public: > class string_initializer > { > public: > virtual T operator()(const std::string& s) const { return T(s); } > }; > > animated(); > > > > > > > animated(const std::string &cfg, const string_initializer& init=string_initializer()); > > > > > > void add_frame(int start); > > > void add_frame(int start, const T& value); > > > > enum { INFINITE_CYCLES = -1 }; > void start_animation(int start_time=0, int cycles=1, int acceleration=1); > > int get_first_frame_time() const; > int get_last_frame_time() const; > int get_duration() const; > > > void update_current_frame() { if(does_not_change_) return; update_current_frame_internal(); }; > bool frame_changed() const; > > > bool animation_finished() const; > int get_animation_time() const; > int get_frame_time() const; > const T& get_current_frame() const; > const T& get_base_frame() const; > >private: > struct frame > { > frame(int milliseconds) : > milliseconds(milliseconds), has_value(false) > {}; > > frame(int milliseconds, const T& value) : > milliseconds(milliseconds), value(value), has_value(true) > {}; > > > int milliseconds; > bool has_value; > T value; > }; > void update_current_frame_internal(); > > static const T void_value_; > > int starting_frame_time_; > int ending_frame_time_; > > bool started_; > bool no_current_frame_; > bool does_not_change_; > > int real_start_ticks_; > int start_ticks_; > int current_cycle_; > int current_time_; > int cycles_; > int acceleration_; > bool frame_changed_; > int start_frame_; > int duration_; > typename std::vector<frame>::size_type current_frame_; > > std::vector<frame> frames_; >}; > > >template<typename T, typename T_void_value> >const T animated<T,T_void_value>::void_value_ = T_void_value()(); > >template<typename T, typename T_void_value> >animated<T,T_void_value>::animated() : > no_current_frame_(true), started_(false), > starting_frame_time_(2147483647), > ending_frame_time_((-2147483647 - 1)), > start_ticks_(0), > real_start_ticks_(0), > does_not_change_(false), > acceleration_(1) >{} > >template<typename T, typename T_void_value> >animated<T,T_void_value>::animated(const std::string &cfg, const string_initializer& init): > no_current_frame_(true), started_(false), > starting_frame_time_(2147483647), > start_ticks_(0), > real_start_ticks_(0), > does_not_change_(false), > acceleration_(1) >{ > std::vector<std::string> items = config::split(cfg); > > int current_time = 0; > > std::vector<std::string>::const_iterator itor = items.begin(); > for(; itor != items.end(); ++itor) { > const std::vector<std::string>& items = config::split(*itor, ':'); > std::string str; > int time; > > if(items.size() > 1) { > str = items.front(); > time = atoi(items.back().c_str()); > } else { > str = *itor; > time = 100; > } > > frames_.push_back(frame(current_time, init(str))); > current_time += time; > } > > starting_frame_time_ = 0; > ending_frame_time_ = current_time; >} > > >template<typename T, typename T_void_value> >void animated<T,T_void_value>::add_frame(int start) >{ > frames_.push_back(frame(start)); > starting_frame_time_ = minimum<int>(starting_frame_time_, start); > ending_frame_time_ = maximum<int>(ending_frame_time_, start); >} > >template<typename T, typename T_void_value> >void animated<T,T_void_value>::add_frame(int start, const T& value) >{ > frames_.push_back(frame(start, value)); > starting_frame_time_ = minimum<int>(starting_frame_time_, start); > ending_frame_time_ = maximum<int>(ending_frame_time_, start); >} > >template<typename T, typename T_void_value> >void animated<T,T_void_value>::start_animation(int start_frame, int cycles, int acceleration) >{ > started_ = true; > start_frame_ = start_frame; > start_ticks_ = real_start_ticks_ = current_time_ = SDL_GetTicks() * acceleration; > cycles_ = cycles; > current_cycle_ = 0; > acceleration_ = acceleration; > > current_frame_ = 0; > > if (ending_frame_time_ >= start_frame_) { > duration_ = ending_frame_time_ - start_frame_; > } else { > duration_ = 0; > } >} > > >template<typename T, typename T_void_value> >void animated<T,T_void_value>::update_current_frame_internal() >{ > > if(does_not_change_) > return; > > frame_changed_ = false; > > current_time_ = SDL_GetTicks() * acceleration_; > if(!started_) > return; > > if(frames_.empty()) { > no_current_frame_ = true; > does_not_change_ = true; > return; > } > > if(frames_.size() == 1 && cycles_ == INFINITE_CYCLES) { > does_not_change_ = true; > frame_changed_ = false; > } > > if (duration_ > 0) { > > int ticks = current_time_ - start_ticks_; > > > if(ticks > duration_) { > int ncycles = ticks/duration_; > current_cycle_ = minimum<int>(cycles_, current_cycle_ + ncycles); > start_ticks_ += ncycles * duration_; > ticks -= ncycles * duration_; > > current_frame_ = 0; > frame_changed_ = true; > } > > if(cycles_ != INFINITE_CYCLES && current_cycle_ >= cycles_) { > > > current_frame_ = frames_.size() - 1; > frame_changed_ = true; > > no_current_frame_ = false; > started_ = false; > return; > } > > if(ticks < (frames_[current_frame_].milliseconds - start_frame_)) { > > frame_changed_ = true; > no_current_frame_ = true; > return; > } > > > typename std::vector<frame>::size_type i = current_frame_ + 1; > for(; i != frames_.size(); ++i) { > if(ticks < (frames_[i].milliseconds - start_frame_)) > break; > current_frame_ = i; > frame_changed_ = true; > > } > no_current_frame_ = false; > > } else { > > > if(cycles_ != -1) > started_ = false; > > does_not_change_ = true; > frame_changed_ = false; > > > > no_current_frame_ = false; > } > >} > >template<typename T, typename T_void_value> >bool animated<T,T_void_value>::frame_changed() const >{ > return frame_changed_; >} > >template<typename T, typename T_void_value> >bool animated<T,T_void_value>::animation_finished() const >{ > if(!started_) > return true; > > > > return false; >} > >template<typename T, typename T_void_value> >int animated<T,T_void_value>::get_animation_time() const >{ > if(does_not_change_) > return SDL_GetTicks() * acceleration_ - real_start_ticks_ + start_frame_; > > return current_time_ - real_start_ticks_ + start_frame_; >} > >template<typename T, typename T_void_value> >int animated<T,T_void_value>::get_frame_time() const >{ > return current_time_ - start_ticks_ + start_frame_; >} > >template<typename T, typename T_void_value> >const T& animated<T,T_void_value>::get_current_frame() const >{ > if(no_current_frame_ == true) > return void_value_; > if(!frames_[current_frame_].has_value) > return void_value_; > > return frames_[current_frame_].value; >} > >template<typename T, typename T_void_value> >const T& animated<T,T_void_value>::get_base_frame() const >{ > if(frames_.empty()) > return void_value_; > > return frames_[0]; >} > >template<typename T, typename T_void_value> >int animated<T,T_void_value>::get_first_frame_time() const >{ > if (starting_frame_time_ != 2147483647 && starting_frame_time_ != (-2147483647 - 1)) > return starting_frame_time_; > > return 0; >} > >template<typename T, typename T_void_value> >int animated<T,T_void_value>::get_last_frame_time() const >{ > if (ending_frame_time_ != 2147483647 && ending_frame_time_ != (-2147483647 - 1)) > return ending_frame_time_; > > return 0; >} ># 21 "unit_types.hpp" 2 > > > > > >class unit_animation >{ >public: > struct frame { > frame() {} > explicit frame(const std::string& str) {} > explicit frame(const config& cfg); > > > int xoffset; > std::string image; > std::string image_diagonal; > std::string halo; > int halo_x, halo_y; > }; > > explicit unit_animation(const config& cfg); > > enum FRAME_TYPE { UNIT_FRAME, MISSILE_FRAME }; > enum FRAME_DIRECTION { VERTICAL, DIAGONAL }; > > void start_animation(int start_frame, FRAME_TYPE type, int acceleration); > void update_current_frames(); > bool animation_finished() const; > const frame& get_current_frame(FRAME_TYPE type=UNIT_FRAME) const; > int get_animation_time() const; > int get_first_frame_time(FRAME_TYPE type=UNIT_FRAME) const; > int get_last_frame_time(FRAME_TYPE type=UNIT_FRAME) const; > > struct sfx { > int time; > std::string on_hit, on_miss; > }; > > const std::vector<sfx>& sound_effects() const; > >private: > > > animated<frame> unit_frames_; > animated<frame> missile_frames_; > > std::vector<sfx> sfx_; >}; > > > >class attack_type >{ >public: > enum RANGE { SHORT_RANGE, LONG_RANGE }; > > attack_type(const config& cfg); > const std::string& name() const; > const std::string& type() const; > const std::string& special() const; > const std::string& icon() const; > RANGE range() const; > int hexes() const; > int damage() const; > int num_attacks() const; > double attack_weight() const; > double defense_weight() const; > > bool backstab() const; > bool slow() const; > > > > > const unit_animation& animation() const; > > bool matches_filter(const config& cfg) const; > bool apply_modification(const config& cfg,std::string* description); >private: > std::vector<unit_animation> animation_; > std::string name_; > std::string type_; > std::string special_; > std::string icon_; > RANGE range_; > int hexes_; > int damage_; > int num_attacks_; > double attack_weight_; > double defense_weight_; > > > > bool backstab_, slow_; >}; > >class unit_movement_type; > > > >class unit_movement_type >{ >public: > > > unit_movement_type(const config& cfg, const unit_movement_type* parent=__null); > > const std::string& name() const; > int movement_cost(const gamemap& map, gamemap::TERRAIN terrain, int recurse_count=0) const; > int defense_modifier(const gamemap& map, gamemap::TERRAIN terrain, int recurse_count=0) const; > int damage_against(const attack_type& attack) const; > int resistance_against(const attack_type& attack) const; > > string_map damage_table() const; > > void set_parent(const unit_movement_type* parent); > > bool is_flying() const; > >private: > const config& cfg_; > > mutable std::map<gamemap::TERRAIN,int> moveCosts_; > mutable std::map<gamemap::TERRAIN,int> defenseMods_; > > const unit_movement_type* parent_; >}; > >typedef std::map<std::string,unit_movement_type> movement_type_map; > >class unit_type >{ >public: > > > unit_type(const config& cfg, const movement_type_map& movement_types, > const race_map& races, const std::vector<config*>& traits); > unit_type(const unit_type& o); > > ~unit_type(); > > const unit_type* get_gender_unit_type(unit_race::GENDER gender) const; > > int num_traits() const; > > std::string generate_description() const; > > > std::string language_name() const; > > > std::string id() const; > const std::string& name() const; > const std::string& image() const; > const std::string& image_halo() const; > const std::string& image_moving() const; > const std::string& image_profile() const; > const std::string& image_fighting(attack_type::RANGE range) const; > const std::string& image_defensive(attack_type::RANGE range) const; > const std::string& image_leading() const; > const std::string& image_healing() const; > const std::string& image_halo_healing() const; > const std::string& unit_description() const; > const std::string& get_hit_sound() const; > const std::string& die_sound() const; > int hitpoints() const; > std::vector<attack_type> attacks() const; > const unit_movement_type& movement_type() const; > > int experience_needed() const; > std::vector<std::string> advances_to() const; > const config::child_list& modification_advancements() const { return cfg_.get_children("advancement"); } > const std::string& usage() const; > > struct experience_accelerator { > experience_accelerator(int modifier); > ~experience_accelerator(); > private: > int old_value_; > }; > > int level() const; > int movement() const; > int cost() const; > > enum ALIGNMENT { LAWFUL, NEUTRAL, CHAOTIC }; > > ALIGNMENT alignment() const; > static const std::string& alignment_description(ALIGNMENT align); > > double alpha() const; > > const std::vector<std::string>& abilities() const; > > > > > int max_unit_healing() const; > int heals() const; > bool regenerates() const; > bool is_leader() const; > bool illuminates() const; > bool is_skirmisher() const; > bool teleports() const; > bool nightvision() const; > bool not_living() const; > bool can_advance() const; > > bool has_ability(const std::string& ability) const; > > const std::vector<config*>& possible_traits() const; > > const std::vector<unit_race::GENDER>& genders() const; > > const std::string& race() const; > > const unit_animation* defend_animation(bool hits, attack_type::RANGE range) const; > >private: > void operator=(const unit_type& o); > > unit_type* gender_types_[2]; > > const config& cfg_; > > const unit_race* race_; > > double alpha_; > > std::vector<std::string> abilities_; > > int max_heals_; > int heals_; > bool regenerates_; > bool leadership_; > bool illuminates_; > bool skirmish_; > bool teleport_; > bool nightvision_; > bool can_advance_; > > unit_movement_type movementType_; > > const std::vector<config*>& possibleTraits_; > > std::vector<unit_race::GENDER> genders_; > > struct defensive_animation > { > defensive_animation(const config& cfg); > bool matches(bool hits, attack_type::RANGE range) const; > > enum { HIT, MISS, HIT_OR_MISS } hits; > enum { SHORT, LONG, SHORT_OR_LONG } range; > unit_animation animation; > }; > > std::vector<defensive_animation> defensive_animations_; >}; > >struct game_data >{ > game_data(const config& cfg); > movement_type_map movement_types; > typedef std::map<std::string,unit_type> unit_type_map; > unit_type_map unit_types; > race_map races; >}; ># 20 "unit.hpp" 2 > > > > > >class unit; > >typedef std::map<gamemap::location,unit> unit_map; > >class unit >{ >public: > friend struct unit_movement_resetter; > > unit(const game_data& data, const config& cfg); > unit(const unit_type* t, int side, bool use_traits=false, bool dummy_unit=false, unit_race::GENDER gender=unit_race::MALE); > > > unit(const unit_type* t, const unit& u); > const unit_type& type() const; > std::string name() const; > const std::string& description() const; > const std::string& underlying_description() const; > > > const std::string& unit_description() const; > > void rename(const std::string& new_description); > > int hitpoints() const; > int max_hitpoints() const; > int experience() const; > int max_experience() const; > bool get_experience(int xp); > bool advances() const; > int side() const; > unit_race::GENDER gender() const; > void set_side(int new_side); > double alpha() const; > void make_recruiter(); > bool can_recruit() const; > int total_movement() const; > int movement_left() const; > void set_user_end_turn(bool value=true); > bool user_end_turn() const; > bool can_attack() const; > void set_movement(int moves); > void set_attacked(); > void end_unit_turn(); > void new_turn(); > void end_turn(); > void new_level(); > > void set_resting(bool resting); > bool is_resting() const; > > bool gets_hit(int damage); > void heal(); > void heal(int amount); > void heal_all(); > > bool invisible(const std::string& terrain, int lawful_bonus, > const gamemap::location& loc, > const unit_map& units,const std::vector<team>& teams) const; > bool poisoned() const; > bool stone() const; > > bool incapacitated() const; > > bool matches_filter(const config& cfg) const; > > void set_flag(const std::string& flag); > void remove_flag(const std::string& flag); > bool has_flag(const std::string& flag) const; > > void add_overlay(const std::string& overlay); > void remove_overlay(const std::string& overlay); > const std::vector<std::string>& overlays() const; > > void read(const game_data& data, const config& cfg); > > void write(config& cfg) const; > > void assign_role(const std::string& role); > > const std::vector<attack_type>& attacks() const; > int longest_range() const; > std::vector<attack_type> attacks_at_range(int range) const; > > int movement_cost(const gamemap& map, gamemap::TERRAIN terrain) const; > int defense_modifier(const gamemap& map, gamemap::TERRAIN terrain) const; > int damage_against(const attack_type& attack) const; > > > > const std::string& image() const; > > void set_defending(bool newval, bool hits=false, int ms=0, > attack_type::RANGE range=attack_type::LONG_RANGE); > void set_attacking(bool newval, const attack_type* type=__null, int ms=0); > > void set_leading(bool newval); > void set_healing(bool newval); > > bool facing_left() const; > void set_facing_left(bool newval); > > const std::string& traits_description() const; > > int value() const; > bool is_guardian() const; > > const gamemap::location& get_goto() const; > void set_goto(const gamemap::location& new_goto); > > int upkeep() const; > > bool is_flying() const; > > bool can_advance() const; > config::child_list get_modification_advances() const; > > size_t modification_count(const std::string& type, const std::string& id) const; > > void add_modification(const std::string& type, const config& modification, > bool no_add=false); > > const std::string& modification_description(const std::string& type) const; > > bool move_interrupted() const; > const gamemap::location& get_interrupted_move() const; > void set_interrupted_move(const gamemap::location& interrupted_move); >private: > unit_race::GENDER generate_gender(const unit_type& type, bool use_genders); > unit_race::GENDER gender_; > > const unit_type* type_; > > enum STATE { STATE_NORMAL, STATE_ATTACKING, > STATE_DEFENDING_LONG, STATE_DEFENDING_SHORT, STATE_LEADING, STATE_HEALING}; > STATE state_; > const attack_type* attackType_; > int attackingMilliseconds_; > bool getsHit_; > > int hitpoints_; > int maxHitpoints_, backupMaxHitpoints_; > int experience_; > int maxExperience_, backupMaxExperience_; > > int side_; > > > > > enum MOVES { ATTACKED=-1, MOVED=-2, NOT_MOVED=-3 }; > int moves_; > bool user_end_turn_; > bool facingLeft_; > int maxMovement_, backupMaxMovement_; > bool resting_; > > std::string underlying_description_, description_; > > > > > std::string custom_unit_description_; > > bool recruit_; > > std::string role_; > > std::set<std::string> statusFlags_; > std::vector<std::string> overlays_; > > > config variables_; > > std::vector<attack_type> attacks_; > std::vector<attack_type> backupAttacks_; > > config modifications_; > > std::string traitsDescription_; > > string_map modificationDescriptions_; > > bool guardian_; > > gamemap::location goto_, interrupted_move_; > > enum UPKEEP_COST { UPKEEP_FREE, UPKEEP_LOYAL, UPKEEP_FULL_PRICE }; > > UPKEEP_COST upkeep_; > > void apply_modifications(); > void remove_temporary_modifications(); > void generate_traits(); >}; > > >struct unit_movement_resetter >{ > unit_movement_resetter(unit& u, bool operate=true) : u_(u), moves_(u.moves_) > { > if(operate) { > u.moves_ = u.total_movement(); > } > } > > ~unit_movement_resetter() > { > u_.moves_ = moves_; > } > >private: > unit& u_; > int moves_; >}; > >struct compare_unit_values >{ > bool operator()(const unit& a, const unit& b) const; >}; > >int team_units(const unit_map& units, int team_num); >int team_upkeep(const unit_map& units, int team_num); >unit_map::const_iterator team_leader(int side, const unit_map& units); >std::string team_name(int side, const unit_map& units); >unit_map::iterator find_visible_unit(unit_map& units, > const gamemap::location loc, > const gamemap& map, int lawful_bonus, > const std::vector<team>& teams, const team& current_team); >unit_map::const_iterator find_visible_unit(const unit_map& units, > const gamemap::location loc, > const gamemap& map, int lawful_bonus, > const std::vector<team>& teams, const team& current_team); > >struct team_data >{ > int units, upkeep, villages, expenses, net_income, gold; >}; > >team_data calculate_team_data(const class team& tm, int side, const unit_map& units); > >std::string get_team_name(int side, const unit_map& units); > >const std::set<gamemap::location> vacant_villages(const std::set<gamemap::location>& villages, const unit_map& units); > > > >struct temporary_unit_placer >{ > temporary_unit_placer(unit_map& m, const gamemap::location& loc, const unit& u); > ~temporary_unit_placer(); > >private: > unit_map& m_; > const gamemap::location& loc_; > const unit temp_; > bool use_temp_; >}; ># 17 "gamestatus.hpp" 2 ># 25 "gamestatus.hpp" >struct time_of_day >{ > explicit time_of_day(const config& cfg); > void write(config& cfg) const; > > > > int lawful_bonus; > > > std::string image; > std::string name; > std::string id; > > > > std::string image_mask; > > > > int red, green, blue; >}; > > > >class gamestatus >{ >public: > gamestatus(config& time_cfg, int num_turns); > void write(config& cfg) const; > > const time_of_day& get_time_of_day() const; > const time_of_day& get_previous_time_of_day() const; > const time_of_day& get_time_of_day(bool illuminated, const gamemap::location& loc) const; > size_t turn() const; > int number_of_turns() const; > > > > bool next_turn(); > > struct error { > error() {} > error(const std::string& msg) : message(msg) > {} > > std::string message; > }; > > > struct load_game_failed : public error { > load_game_failed() {} > load_game_failed(const std::string& msg) : error("load_game_failed: " + msg) {} > }; > > > struct save_game_failed : public error { > save_game_failed() {} > save_game_failed(const std::string& msg) : error("save_game_failed: " + msg) {} > }; > > > > struct game_error : public error { > game_error(const std::string& msg) : error("game_error: " + msg) {} > }; > > > > struct load_game_exception { > load_game_exception(const std::string& game, bool show_replay) : game(game), show_replay(show_replay) {} > std::string game; > bool show_replay; > }; > >private: > const time_of_day& get_time_of_day_turn(int nturn) const; > > std::vector<time_of_day> times_, illuminatedTimes_; > > struct area_time_of_day { > std::string xsrc, ysrc; > std::vector<time_of_day> times, illuminated_times; > std::set<gamemap::location> hexes; > }; > > std::vector<area_time_of_day> areas_; > > size_t turn_; > int numTurns_; >}; > > > > >struct game_state >{ > game_state() : gold(-1), difficulty("NORMAL") {} > std::string label; > std::string version; > std::string campaign_type; > std::string scenario; > int gold; > std::vector<unit> available_units; > config variables; > std::string difficulty; > > std::set<std::string> can_recruit; > > std::string campaign_define; > > > > config replay_data; > > > > config starting_pos; > > > > > > > > config snapshot; >}; > >struct save_info { > save_info(const std::string& n, time_t t) : name(n), time_modified(t) {} > std::string name; > time_t time_modified; >}; > > >std::vector<save_info> get_saves_list(); > >enum WRITE_GAME_MODE { WRITE_SNAPSHOT_ONLY, WRITE_FULL_GAME }; > >game_state read_game(const game_data& data, const config* cfg); >void write_game(const game_state& game, config& cfg, WRITE_GAME_MODE mode=WRITE_FULL_GAME); > > >bool save_game_exists(const std::string & name); > > >void load_game(const game_data& data, const std::string& name, game_state& state); > >void save_game(const game_state& state); > > >void delete_game(const std::string& name); > >config& save_index(); >config& save_summary(const std::string& save); >void delete_save_summary(const std::string& save); > >void write_save_index(); > >void extract_summary_data_from_save(const game_state& state, config& out); ># 18 "display.hpp" 2 ># 1 "image.hpp" 1 > > > > > > ># 1 "/usr/include/SDL/SDL.h" 1 ># 8 "image.hpp" 2 > > > >class team; ># 22 "image.hpp" >namespace image { > template<typename T> > struct cache_item { > cache_item() : loaded(false), item() {} > cache_item(T item) : loaded(true), item(item) {} > > bool loaded; > T item; > }; > > > class locator > { > private: > > > void init_index(); > public: > enum type { NONE, FILE, SUB_FILE }; > > struct value { > value(); > value(const value &a); > value(const char *filename); > value(const std::string& filename); > value(const std::string& filename, const gamemap::location& loc); > > bool operator==(const value& a) const; > bool operator<(const value& a) const; > > type type_; > std::string filename_; > gamemap::location loc_; > }; > > > > > > locator(); > locator(const locator &a); > locator(const char *filename); > locator(const std::string& filename); > locator(const std::string& filename, const gamemap::location& loc); > > locator& operator=(const locator &a); > bool operator==(const locator &a) const { return index_ == a.index_; } > bool operator!=(const locator &a) const { return index_ != a.index_; } > bool operator<(const locator &a) const { return index_ < a.index_; } > > const std::string &get_filename() const { return val_.filename_; } > const gamemap::location& get_loc() const { return val_.loc_ ; } > const type get_type() const { return val_.type_; }; > > > > > bool is_void() const { return val_.type_ == NONE; } > > surface load_from_disk() const; ># 96 "image.hpp" > bool in_cache(const std::vector<cache_item<surface> >& cache) const; > surface locate_in_cache(const std::vector<cache_item<surface> >& cache) const; > void add_to_cache(std::vector<cache_item<surface> >& cache, const surface &image) const; > bool in_cache(const std::vector<cache_item<locator> >& cache) const; > locator locate_in_cache(const std::vector<cache_item<locator> >& cache) const; > void add_to_cache(std::vector<cache_item<locator> >& cache, const locator &image) const; > protected: > static int last_index_; > private: > > surface load_image_file() const; > surface load_image_sub_file() const; > > int index_; > value val_; > }; > > > typedef std::vector<cache_item<surface> > image_cache; > typedef std::vector<cache_item<locator> > locator_cache; > > > > > struct manager > { > manager(); > ~manager(); > }; > > > > > void set_wm_icon(); > > > > > void set_colour_adjustment(int r, int g, int b); > > > void get_colour_adjustment(int *r, int *g, int *b); > > > > void set_image_mask(const std::string& image_name); > > > > void set_pixel_format(SDL_PixelFormat* format); > > > > void set_zoom(int zoom); > > enum TYPE { UNSCALED, SCALED, UNMASKED, GREYED, BRIGHTENED, SEMI_BRIGHTENED }; > > enum COLOUR_ADJUSTMENT { ADJUST_COLOUR, NO_ADJUST_COLOUR }; > > > > > surface get_image(const locator& i_locator,TYPE type=SCALED, COLOUR_ADJUSTMENT adj=ADJUST_COLOUR); > > > > > > surface get_image_dim(const locator& i_locator, size_t x, size_t y); > > > > > surface reverse_image(const surface &surf); > > > locator get_alternative(const locator &i_locator, const std::string &alt); > > > > > > > void register_image(const locator& i_locator, const surface& surf); > > > bool exists(const locator& i_locator); > > > > surface getMinimap(int w, int h, const gamemap& map_, int lawful_bonus, const team* tm=__null); >} ># 19 "display.hpp" 2 ># 1 "key.hpp" 1 ># 17 "key.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 18 "key.hpp" 2 > > > > > > >class CKey { >public: > CKey(); > > int operator[](int); > void SetEnabled(bool enable); >private: > Uint8 *key_list; > bool is_enabled; >}; ># 20 "display.hpp" 2 > ># 1 "builder.hpp" 1 ># 20 "builder.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 21 "builder.hpp" 2 > > > > > >class terrain_builder >{ >public: > enum ADJACENT_TERRAIN_TYPE { ADJACENT_BACKGROUND, ADJACENT_FOREGROUND }; > typedef std::vector<animated<image::locator> > imagelist; > > terrain_builder(const config& cfg, const gamemap& gmap); > > > > > const imagelist *get_terrain_at(const gamemap::location &loc, > const std::string &tod, ADJACENT_TERRAIN_TYPE terrain_type) const; > > > > bool terrain_builder::update_animation(const gamemap::location &loc); > > > > > void rebuild_terrain(const gamemap::location &loc); > void rebuild_all(); > > > > struct rule_image_variant { > rule_image_variant(const std::string &image_string, const std::string &tod) : > image_string(image_string), tod(tod) {}; > > std::string image_string; > > animated<image::locator> image; > std::string tod; > }; > > typedef std::map<std::string, rule_image_variant> rule_image_variantlist; > struct rule_image { > rule_image(int layer, bool global_image=false) : > layer(layer), global_image(global_image) {}; > > int layer; > bool global_image; > rule_image_variantlist variants; > }; > > typedef std::vector<rule_image> rule_imagelist; > > struct terrain_constraint > { > terrain_constraint() : loc() {}; > > terrain_constraint(gamemap::location loc) : loc(loc) {}; > > gamemap::location loc; > std::string terrain_types; > std::vector<std::string> set_flag; > std::vector<std::string> no_flag; > std::vector<std::string> has_flag; > > rule_imagelist images; > }; > > struct tile > { > tile(); > void rebuild_cache(const std::string &tod) const; > void clear(); > > std::set<std::string> flags; > > std::multimap<int, const rule_image*> images; > > mutable imagelist images_foreground; > mutable imagelist images_background; > > mutable std::string last_tod; > > gamemap::TERRAIN adjacents[7]; > > }; > >private: > typedef std::map<gamemap::location, terrain_constraint> constraint_set; > > struct building_rule > { > constraint_set constraints; > gamemap::location location_constraints; > > int probability; > int precedence; > > > }; > > class tilemap > { > public: > tilemap(int x, int y) : x_(x), y_(y), map_((x+2)*(y+2)) {} > > tile &operator[](const gamemap::location &loc); > const tile &operator[] (const gamemap::location &loc) const; > > bool on_map(const gamemap::location &loc) const; > > void reset(); > private: > std::vector<tile> map_; > int x_; > int y_; > }; > > typedef std::multimap<int, building_rule> building_ruleset; > > > bool rule_valid(const building_rule &rule); > bool start_animation(building_rule &rule); > terrain_constraint rotate(const terrain_constraint &constraint, int angle); > void replace_token(std::string &, const std::string &token, const std::string& replacement); > void replace_token(rule_image_variant &, const std::string &token, const std::string& replacement); > void replace_token(rule_image &, const std::string &token, const std::string& replacement); > void replace_token(rule_imagelist &, const std::string &token, const std::string& replacement); > void replace_token(building_rule &s, const std::string &token, const std::string& replacement); > > building_rule rotate_rule(const building_rule &rule, int angle, const std::vector<std::string>& angle_name); > > void add_rule(building_ruleset& rules, building_rule &rule); > void add_rotated_rules(building_ruleset& rules, building_rule& tpl, const std::string &rotations); > void add_constraint_item(std::vector<std::string> &list, const config& cfg, const std::string &item); > > void add_images_from_config(rule_imagelist &images, const config &cfg, bool global); > > void add_constraints(std::map<gamemap::location, terrain_constraint>& constraints, > const gamemap::location &loc, const std::string& type); > void add_constraints(std::map<gamemap::location, terrain_constraint>& constraints, > const gamemap::location &loc, const config &cfg, const config& global_images); > > typedef std::multimap<int, gamemap::location> anchormap; > void parse_mapstring(const std::string &mapstring, struct building_rule &br, > anchormap& anchors); > void parse_config(const config &cfg); > bool terrain_matches(gamemap::TERRAIN letter, const std::string &terrains); > bool rule_matches(const building_rule &rule, const gamemap::location &loc, int rule_index, bool check_loc); > void apply_rule(const building_rule &rule, const gamemap::location &loc); > > int get_constraint_adjacents(const building_rule& rule, const gamemap::location& loc); > int get_constraint_size(const building_rule& rule, const terrain_constraint& constraint, bool& border); > void build_terrains(); > > const gamemap& map_; > tilemap tile_map_; > > typedef std::map<unsigned char, std::vector<gamemap::location> > terrain_by_type_map; > terrain_by_type_map terrain_by_type_; > terrain_by_type_map terrain_by_type_border_; > > building_ruleset building_rules_; > >}; ># 22 "display.hpp" 2 ># 1 "map_label.hpp" 1 ># 10 "map_label.hpp" >class display; >class team; > >class map_labels >{ >public: > map_labels(const display& disp, const gamemap& map); > map_labels(const display& disp, const config& cfg, const gamemap& map); > ~map_labels(); > > void write(config& res) const; > void read(const config& cfg); > > const std::string& get_label(const gamemap::location& loc) const; > void set_label(const gamemap::location& loc, const std::string& text); > void clear(); > > void scroll(double xmove, double ymove); > > void recalculate_labels(); > > void recalculate_shroud(); > > typedef std::map<gamemap::location,int> label_map; > const label_map& labels() { return labels_; } > const std::string& get_label(int index) const; > >private: > map_labels(const map_labels&); > void operator=(const map_labels&); > > const display& disp_; > const team* team_; > const gamemap& map_; > > label_map labels_; >}; ># 23 "display.hpp" 2 ># 1 "pathfind.hpp" 1 ># 16 "pathfind.hpp" ># 1 "array.hpp" 1 > > > > > >namespace util >{ > >template<typename T,size_t N> >class array >{ >public: > typedef T value_type; > typedef T* iterator; > typedef const T* const_iterator; > typedef T& reference; > typedef const T& const_reference; > typedef size_t size_type; > > array() {} > array(const T& o) > { > std::fill(begin(),end(),o); > } > > iterator begin() { return a; } > iterator end() { return a + N; } > > const_iterator begin() const { return a; } > const_iterator end() const { return a + N; } > > reference operator[](size_type n) { return a[n]; } > const_reference operator[](size_type n) const { return a[n]; } > > reference front() { return a[0]; } > reference back() { return a[N-1]; } > > const_reference front() const { return a[0]; } > const_reference back() const { return a[N-1]; } > > size_type size() const { return N; } > > bool empty() const { return size() == 0; } > > T* data() { return a; } > const T* data() const { return a; } > >private: > T a[N]; >}; > >} ># 17 "pathfind.hpp" 2 > > > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 1 "/usr/include/assert.h" 1 3 4 ># 65 "/usr/include/assert.h" 3 4 >extern "C" { > > >extern void __assert_fail (__const char *__assertion, __const char *__file, > unsigned int __line, __const char *__function) > throw () __attribute__ ((__noreturn__)); > > >extern void __assert_perror_fail (int __errnum, __const char *__file, > unsigned int __line, > __const char *__function) > throw () __attribute__ ((__noreturn__)); > > > > >extern void __assert (const char *__assertion, const char *__file, int __line) > throw () __attribute__ ((__noreturn__)); > > >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 2 3 ># 24 "pathfind.hpp" 2 > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/list" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/list" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/list" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 3 >namespace std >{ > > void > __throw_bad_exception(void); > > > void > __throw_bad_alloc(void); > > > void > __throw_bad_cast(void); > > void > __throw_bad_typeid(void); > > > void > __throw_logic_error(const char* __s); > > void > __throw_domain_error(const char* __s); > > void > __throw_invalid_argument(const char* __s); > > void > __throw_length_error(const char* __s); > > void > __throw_out_of_range(const char* __s); > > void > __throw_runtime_error(const char* __s); > > void > __throw_range_error(const char* __s); > > void > __throw_overflow_error(const char* __s); > > void > __throw_underflow_error(const char* __s); > > > void > __throw_ios_failure(const char* __s); >} ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/list" 2 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 1 3 ># 66 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 >namespace std >{ > > > > > > > struct _List_node_base > { > _List_node_base* _M_next; > _List_node_base* _M_prev; > > static void > swap(_List_node_base& __x, _List_node_base& __y); > > void > transfer(_List_node_base * const __first, > _List_node_base * const __last); > > void > reverse(); > > void > hook(_List_node_base * const __position); > > void > unhook(); > }; > > > template<typename _Tp> > struct _List_node : public _List_node_base > { > _Tp _M_data; > }; ># 110 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _Tp> > struct _List_iterator > { > typedef _List_iterator<_Tp> _Self; > typedef _List_node<_Tp> _Node; > > typedef ptrdiff_t difference_type; > typedef bidirectional_iterator_tag iterator_category; > typedef _Tp value_type; > typedef _Tp* pointer; > typedef _Tp& reference; > > _List_iterator() { } > > _List_iterator(_List_node_base* __x) > : _M_node(__x) { } > > > reference > operator*() const > { return static_cast<_Node*>(_M_node)->_M_data; } > > pointer > operator->() const > { return &static_cast<_Node*>(_M_node)->_M_data; } > > _Self& > operator++() > { > _M_node = _M_node->_M_next; > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > _M_node = _M_node->_M_next; > return __tmp; > } > > _Self& > operator--() > { > _M_node = _M_node->_M_prev; > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > _M_node = _M_node->_M_prev; > return __tmp; > } > > bool > operator==(const _Self& __x) const > { return _M_node == __x._M_node; } > > bool > operator!=(const _Self& __x) const > { return _M_node != __x._M_node; } > > > _List_node_base* _M_node; > }; ># 185 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _Tp> > struct _List_const_iterator > { > typedef _List_const_iterator<_Tp> _Self; > typedef const _List_node<_Tp> _Node; > typedef _List_iterator<_Tp> iterator; > > typedef ptrdiff_t difference_type; > typedef bidirectional_iterator_tag iterator_category; > typedef _Tp value_type; > typedef const _Tp* pointer; > typedef const _Tp& reference; > > _List_const_iterator() { } > > _List_const_iterator(const _List_node_base* __x) > : _M_node(__x) { } > > _List_const_iterator(const iterator& __x) > : _M_node(__x._M_node) { } > > > > reference > operator*() const > { return static_cast<_Node*>(_M_node)->_M_data; } > > pointer > operator->() const > { return &static_cast<_Node*>(_M_node)->_M_data; } > > _Self& > operator++() > { > _M_node = _M_node->_M_next; > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > _M_node = _M_node->_M_next; > return __tmp; > } > > _Self& > operator--() > { > _M_node = _M_node->_M_prev; > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > _M_node = _M_node->_M_prev; > return __tmp; > } > > bool > operator==(const _Self& __x) const > { return _M_node == __x._M_node; } > > bool > operator!=(const _Self& __x) const > { return _M_node != __x._M_node; } > > > const _List_node_base* _M_node; > }; > > template<typename _Val> > inline bool > operator==(const _List_iterator<_Val>& __x, > const _List_const_iterator<_Val>& __y) > { return __x._M_node == __y._M_node; } > > template<typename _Val> > inline bool > operator!=(const _List_iterator<_Val>& __x, > const _List_const_iterator<_Val>& __y) > { return __x._M_node != __y._M_node; } > > > > > > > > template<typename _Tp, typename _Alloc> > class _List_base > { > protected: ># 293 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > typedef typename _Alloc::template rebind<_List_node<_Tp> >::other > > _Node_Alloc_type; > > struct _List_impl > : public _Node_Alloc_type { > _List_node_base _M_node; > _List_impl (const _Node_Alloc_type& __a) > : _Node_Alloc_type(__a) > { } > }; > > _List_impl _M_impl; > > _List_node<_Tp>* > _M_get_node() > { return _M_impl._Node_Alloc_type::allocate(1); } > > void > _M_put_node(_List_node<_Tp>* __p) > { _M_impl._Node_Alloc_type::deallocate(__p, 1); } > > public: > typedef _Alloc allocator_type; > > allocator_type > get_allocator() const > { return allocator_type(*static_cast<const _Node_Alloc_type*>(&this->_M_impl)); } > > _List_base(const allocator_type& __a) > : _M_impl(__a) > { _M_init(); } > > > ~_List_base() > { _M_clear(); } > > void > _M_clear(); > > void > _M_init() > { > this->_M_impl._M_node._M_next = &this->_M_impl._M_node; > this->_M_impl._M_node._M_prev = &this->_M_impl._M_node; > } > }; ># 386 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _Tp, typename _Alloc = allocator<_Tp> > > class list : protected _List_base<_Tp, _Alloc> > { > > > > typedef _List_base<_Tp, _Alloc> _Base; > > public: > typedef _Tp value_type; > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef _List_iterator<_Tp> iterator; > typedef _List_const_iterator<_Tp> const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef typename _Base::allocator_type allocator_type; > > protected: > > > typedef _List_node<_Tp> _Node; > > > > > > > > using _Base::_M_impl; > using _Base::_M_put_node; > using _Base::_M_get_node; ># 430 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > _Node* > _M_create_node(const value_type& __x) > { > _Node* __p = this->_M_get_node(); > try > { > std::_Construct(&__p->_M_data, __x); > } > catch(...) > { > _M_put_node(__p); > throw; > } > return __p; > } > > > > > > > > _Node* > _M_create_node() > { > _Node* __p = this->_M_get_node(); > try > { > std::_Construct(&__p->_M_data); > } > catch(...) > { > _M_put_node(__p); > throw; > } > return __p; > } > > public: > > > > > > explicit > list(const allocator_type& __a = allocator_type()) > : _Base(__a) { } ># 485 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > list(size_type __n, const value_type& __value, > const allocator_type& __a = allocator_type()) > : _Base(__a) > { this->insert(begin(), __n, __value); } ># 497 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > explicit > list(size_type __n) > : _Base(allocator_type()) > { this->insert(begin(), __n, value_type()); } ># 509 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > list(const list& __x) > : _Base(__x.get_allocator()) > { this->insert(begin(), __x.begin(), __x.end()); } ># 527 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _InputIterator> > list(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Base(__a) > { this->insert(begin(), __first, __last); } ># 548 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > list& > operator=(const list& __x); ># 561 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > assign(size_type __n, const value_type& __val) > { _M_fill_assign(__n, __val); } ># 577 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } > > > allocator_type > get_allocator() const > { return _Base::get_allocator(); } > > > > > > > iterator > begin() > { return this->_M_impl._M_node._M_next; } > > > > > > > const_iterator > begin() const > { return this->_M_impl._M_node._M_next; } > > > > > > > iterator > end() { return &this->_M_impl._M_node; } > > > > > > > const_iterator > end() const > { return &this->_M_impl._M_node; } > > > > > > > reverse_iterator > rbegin() > { return reverse_iterator(end()); } > > > > > > > const_reverse_iterator > rbegin() const > { return const_reverse_iterator(end()); } > > > > > > > reverse_iterator > rend() > { return reverse_iterator(begin()); } > > > > > > > const_reverse_iterator > rend() const > { return const_reverse_iterator(begin()); } > > > > > > > bool > empty() const > { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; } > > > size_type > size() const > { return std::distance(begin(), end()); } > > > size_type > max_size() const > { return size_type(-1); } ># 691 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > resize(size_type __new_size, const value_type& __x); ># 703 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > resize(size_type __new_size) > { this->resize(__new_size, value_type()); } > > > > > > > reference > front() > { return *begin(); } > > > > > > const_reference > front() const > { return *begin(); } > > > > > > reference > back() > { return *(--end()); } > > > > > > const_reference > back() const > { return *(--end()); } ># 751 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > push_front(const value_type& __x) > { this->_M_insert(begin(), __x); } ># 767 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > pop_front() > { this->_M_erase(begin()); } ># 781 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > push_back(const value_type& __x) > { this->_M_insert(end(), __x); } ># 796 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > pop_back() > { this->_M_erase(this->_M_impl._M_node._M_prev); } ># 811 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > iterator > insert(iterator __position, const value_type& __x); ># 827 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > insert(iterator __position, size_type __n, const value_type& __x) > { _M_fill_insert(__position, __n, __x); } ># 845 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _InputIterator> > void > insert(iterator __position, _InputIterator __first, > _InputIterator __last) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } ># 870 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > iterator > erase(iterator __position); ># 892 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > iterator > erase(iterator __first, iterator __last) > { > while (__first != __last) > __first = erase(__first); > return __last; > } ># 909 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > swap(list& __x) > { _List_node_base::swap(this->_M_impl._M_node,__x._M_impl._M_node); } > > > > > > > > void > clear() > { > _Base::_M_clear(); > _Base::_M_init(); > } ># 936 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > splice(iterator __position, list& __x) > { > if (!__x.empty()) > this->_M_transfer(__position, __x.begin(), __x.end()); > } ># 952 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > splice(iterator __position, list&, iterator __i) > { > iterator __j = __i; > ++__j; > if (__position == __i || __position == __j) > return; > this->_M_transfer(__position, __i, __j); > } ># 974 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > splice(iterator __position, list&, iterator __first, iterator __last) > { > if (__first != __last) > this->_M_transfer(__position, __first, __last); > } ># 992 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > remove(const _Tp& __value); ># 1006 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _Predicate> > void > remove_if(_Predicate); ># 1020 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > unique(); ># 1035 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _BinaryPredicate> > void > unique(_BinaryPredicate); ># 1048 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > void > merge(list& __x); ># 1063 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _StrictWeakOrdering> > void > merge(list&, _StrictWeakOrdering); > > > > > > > void > reverse() > { this->_M_impl._M_node.reverse(); } > > > > > > > > void > sort(); > > > > > > > > template<typename _StrictWeakOrdering> > void > sort(_StrictWeakOrdering); > > protected: > > > > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { > _M_fill_assign(static_cast<size_type>(__n), > static_cast<value_type>(__val)); > } > > > template<typename _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type); > > > > void > _M_fill_assign(size_type __n, const value_type& __val); > > > > > > template<typename _Integer> > void > _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, > __true_type) > { > _M_fill_insert(__pos, static_cast<size_type>(__n), > static_cast<value_type>(__x)); > } > > > template<typename _InputIterator> > void > _M_insert_dispatch(iterator __pos, > _InputIterator __first, _InputIterator __last, > __false_type) > { > for ( ; __first != __last; ++__first) > _M_insert(__pos, *__first); > } > > > > void > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) > { > for ( ; __n > 0; --__n) > _M_insert(__pos, __x); > } > > > > void > _M_transfer(iterator __position, iterator __first, iterator __last) > { __position._M_node->transfer(__first._M_node,__last._M_node); } > > > void > _M_insert(iterator __position, const value_type& __x) > { > _Node* __tmp = _M_create_node(__x); > __tmp->hook(__position._M_node); > } > > > void > _M_erase(iterator __position) > { > __position._M_node->unhook(); > _Node* __n = static_cast<_Node*>(__position._M_node); > std::_Destroy(&__n->_M_data); > _M_put_node(__n); > } > }; ># 1186 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator==(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) > { > typedef typename list<_Tp,_Alloc>::const_iterator const_iterator; > const_iterator __end1 = __x.end(); > const_iterator __end2 = __y.end(); > > const_iterator __i1 = __x.begin(); > const_iterator __i2 = __y.begin(); > while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) > { > ++__i1; > ++__i2; > } > return __i1 == __end1 && __i2 == __end2; > } ># 1215 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_list.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator<(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) > { return std::lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator!=(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) > { return __y < __x; } > > > template<typename _Tp, typename _Alloc> > inline bool > operator<=(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>=(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Tp, typename _Alloc> > inline void > swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) > { __x.swap(__y); } >} ># 72 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/list" 2 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/list.tcc" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/list.tcc" 3 >namespace std >{ > template<typename _Tp, typename _Alloc> > void > _List_base<_Tp,_Alloc>:: > _M_clear() > { > typedef _List_node<_Tp> _Node; > _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next); > while (__cur != &this->_M_impl._M_node) > { > _Node* __tmp = __cur; > __cur = static_cast<_Node*>(__cur->_M_next); > std::_Destroy(&__tmp->_M_data); > _M_put_node(__tmp); > } > } > > template<typename _Tp, typename _Alloc> > typename list<_Tp,_Alloc>::iterator > list<_Tp,_Alloc>:: > insert(iterator __position, const value_type& __x) > { > _Node* __tmp = _M_create_node(__x); > __tmp->hook(__position._M_node); > return __tmp; > } > > template<typename _Tp, typename _Alloc> > typename list<_Tp,_Alloc>::iterator > list<_Tp,_Alloc>:: > erase(iterator __position) > { > iterator __ret = __position._M_node->_M_next; > _M_erase(__position); > return __ret; > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp,_Alloc>:: > resize(size_type __new_size, const value_type& __x) > { > iterator __i = begin(); > size_type __len = 0; > for ( ; __i != end() && __len < __new_size; ++__i, ++__len) > ; > if (__len == __new_size) > erase(__i, end()); > else > insert(end(), __new_size - __len, __x); > } > > template<typename _Tp, typename _Alloc> > list<_Tp,_Alloc>& > list<_Tp,_Alloc>:: > operator=(const list& __x) > { > if (this != &__x) > { > iterator __first1 = begin(); > iterator __last1 = end(); > const_iterator __first2 = __x.begin(); > const_iterator __last2 = __x.end(); > while (__first1 != __last1 && __first2 != __last2) > *__first1++ = *__first2++; > if (__first2 == __last2) > erase(__first1, __last1); > else > insert(__last1, __first2, __last2); > } > return *this; > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp,_Alloc>:: > _M_fill_assign(size_type __n, const value_type& __val) > { > iterator __i = begin(); > for ( ; __i != end() && __n > 0; ++__i, --__n) > *__i = __val; > if (__n > 0) > insert(end(), __n, __val); > else > erase(__i, end()); > } > > template<typename _Tp, typename _Alloc> > template <typename _InputIterator> > void > list<_Tp,_Alloc>:: > _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, > __false_type) > { > iterator __first1 = begin(); > iterator __last1 = end(); > for (; __first1 != __last1 && __first2 != __last2; > ++__first1, ++__first2) > *__first1 = *__first2; > if (__first2 == __last2) > erase(__first1, __last1); > else > insert(__last1, __first2, __last2); > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp,_Alloc>:: > remove(const value_type& __value) > { > iterator __first = begin(); > iterator __last = end(); > while (__first != __last) > { > iterator __next = __first; > ++__next; > if (*__first == __value) > _M_erase(__first); > __first = __next; > } > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp,_Alloc>:: > unique() > { > iterator __first = begin(); > iterator __last = end(); > if (__first == __last) > return; > iterator __next = __first; > while (++__next != __last) > { > if (*__first == *__next) > _M_erase(__next); > else > __first = __next; > __next = __first; > } > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp,_Alloc>:: > merge(list& __x) > { > > > if (this != &__x) > { > iterator __first1 = begin(); > iterator __last1 = end(); > iterator __first2 = __x.begin(); > iterator __last2 = __x.end(); > while (__first1 != __last1 && __first2 != __last2) > if (*__first2 < *__first1) > { > iterator __next = __first2; > _M_transfer(__first1, __first2, ++__next); > __first2 = __next; > } > else > ++__first1; > if (__first2 != __last2) > _M_transfer(__last1, __first2, __last2); > } > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp,_Alloc>:: > sort() > { > > if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node > && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) > { > list __carry; > list __tmp[64]; > list * __fill = &__tmp[0]; > list * __counter; > > do > { > __carry.splice(__carry.begin(), *this, begin()); > > for(__counter = &__tmp[0]; > (__counter != __fill) && !__counter->empty(); > ++__counter) > { > __counter->merge(__carry); > __carry.swap(*__counter); > } > __carry.swap(*__counter); > if (__counter == __fill) > ++__fill; > } > while ( !empty() ); > > for (__counter = &__tmp[1]; __counter != __fill; ++__counter) > __counter->merge( *(__counter-1) ); > swap( *(__fill-1) ); > } > } > > template<typename _Tp, typename _Alloc> > template <typename _Predicate> > void > list<_Tp,_Alloc>:: > remove_if(_Predicate __pred) > { > iterator __first = begin(); > iterator __last = end(); > while (__first != __last) > { > iterator __next = __first; > ++__next; > if (__pred(*__first)) > _M_erase(__first); > __first = __next; > } > } > > template<typename _Tp, typename _Alloc> > template <typename _BinaryPredicate> > void > list<_Tp,_Alloc>:: > unique(_BinaryPredicate __binary_pred) > { > iterator __first = begin(); > iterator __last = end(); > if (__first == __last) return; > iterator __next = __first; > while (++__next != __last) > { > if (__binary_pred(*__first, *__next)) > _M_erase(__next); > else > __first = __next; > __next = __first; > } > } > > template<typename _Tp, typename _Alloc> > template <typename _StrictWeakOrdering> > void > list<_Tp,_Alloc>:: > merge(list& __x, _StrictWeakOrdering __comp) > { > > > if (this != &__x) > { > iterator __first1 = begin(); > iterator __last1 = end(); > iterator __first2 = __x.begin(); > iterator __last2 = __x.end(); > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first2, *__first1)) > { > iterator __next = __first2; > _M_transfer(__first1, __first2, ++__next); > __first2 = __next; > } > else > ++__first1; > if (__first2 != __last2) > _M_transfer(__last1, __first2, __last2); > } > } > > template<typename _Tp, typename _Alloc> > template <typename _StrictWeakOrdering> > void > list<_Tp,_Alloc>:: > sort(_StrictWeakOrdering __comp) > { > > if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node > && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) > { > list __carry; > list __tmp[64]; > list * __fill = &__tmp[0]; > list * __counter; > > do > { > __carry.splice(__carry.begin(), *this, begin()); > > for(__counter = &__tmp[0]; > (__counter != __fill) && !__counter->empty(); > ++__counter) > { > __counter->merge(__carry, __comp); > __carry.swap(*__counter); > } > __carry.swap(*__counter); > if (__counter == __fill) > ++__fill; > } > while ( !empty() ); > > for (__counter = &__tmp[1]; __counter != __fill; ++__counter) > __counter->merge( *(__counter-1), __comp ); > swap( *(__fill-1) ); > } > } >} ># 75 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/list" 2 3 ># 28 "pathfind.hpp" 2 > > > > > > >void get_adjacent_tiles(const gamemap::location& a, gamemap::location* res); > > >typedef util::array<gamemap::location,6> adjacent_tiles_array; > > >void get_tiles_radius(const gamemap::location& a, size_t radius, std::set<gamemap::location>& res); > > >bool tiles_adjacent(const gamemap::location& a, const gamemap::location& b); > > > >size_t distance_between(const gamemap::location& a, const gamemap::location& b); > >enum VACANT_TILE_TYPE { VACANT_CASTLE, VACANT_ANY }; > > > > > > > >gamemap::location find_vacant_tile(const gamemap& map, > const std::map<gamemap::location,unit>& un, > const gamemap::location& loc, > VACANT_TILE_TYPE vacancy=VACANT_ANY); > > >bool enemy_zoc(const gamemap& map,const gamestatus& status, > const std::map<gamemap::location,unit>& units, > const std::vector<team>& teams, > const gamemap::location& loc,const team& current_team,int side); > > > >struct paths >{ > paths() {} > > > > > > > > paths(const gamemap& map, const gamestatus& status, > const game_data& gamedata, > const std::map<gamemap::location,unit>& units, > const gamemap::location& loc, std::vector<team>& teams, > bool ignore_zocs, bool allow_teleport, int additional_turns=0); > > > struct route > { > route() : move_left(0) {} > std::vector<gamemap::location> steps; > int move_left; > }; > > typedef std::map<gamemap::location,route> routes_map; > routes_map routes; >}; > > > >int route_turns_to_complete(const unit& u, const gamemap& map, > const paths::route& rt); > >struct shortest_path_calculator >{ > shortest_path_calculator(const unit& u, const team& t, > const unit_map& units, > const std::vector<team>& teams, > const gamemap& map, > const gamestatus& status); > double cost(const gamemap::location& loc, double so_far) const; > >private: > const unit& unit_; > const team& team_; > const unit_map& units_; > const std::vector<team>& teams_; > const gamemap& map_; > const gamestatus& status_; >}; > >namespace detail { >struct node { > static double heuristic(const gamemap::location& src, > const gamemap::location& dst) { > return distance_between(src,dst); > } > > node(const gamemap::location& pos, const gamemap::location& dst, > double cost, const gamemap::location& parent, > const std::set<gamemap::location>* teleports) > : loc(pos), parent(parent), g(cost), h(heuristic(pos,dst)) > { > > > > if(teleports != __null) { > double srch = h, dsth = h; > std::set<gamemap::location>::const_iterator i; > for(i = teleports->begin(); i != teleports->end(); ++i) { > const double new_srch = heuristic(pos,*i); > const double new_dsth = heuristic(*i,dst); > if(new_srch < srch) { > srch = new_srch; > } > > if(new_dsth < dsth) { > dsth = new_dsth; > } > } > > if(srch + dsth + 1.0 < h) { > h = srch + dsth + 1.0; > } > } > > f = g + h; > } > > gamemap::location loc, parent; > double g, h, f; >}; > >} > >template<typename T> >paths::route a_star_search(const gamemap::location& src, > const gamemap::location& dst, double stop_at, T obj, > const std::set<gamemap::location>* teleports=__null) >{ > std::cerr << "a* search: " << src.x << ", " << src.y << " -> " << dst.x << ", " << dst.y << "\n"; > using namespace detail; > typedef gamemap::location location; > > typedef std::map<location,node> list_map; > typedef std::pair<location,node> list_type; > > std::multimap<double,location> open_list_ordered; > list_map open_list, closed_list; > > open_list.insert(list_type(src,node(src,dst,0.0,location(),teleports))); > open_list_ordered.insert(std::pair<double,location>(0.0,src)); > > std::vector<location> locs; > while(!open_list.empty()) { > > (static_cast<void> (__builtin_expect (!!(open_list.size() == open_list_ordered.size()), 1) ? 0 : (__assert_fail ("open_list.size() == open_list_ordered.size()", "pathfind.hpp", 186, __PRETTY_FUNCTION__), 0))); > > const list_map::iterator lowest_in_open = open_list.find(open_list_ordered.begin()->second); > (static_cast<void> (__builtin_expect (!!(lowest_in_open != open_list.end()), 1) ? 0 : (__assert_fail ("lowest_in_open != open_list.end()", "pathfind.hpp", 189, __PRETTY_FUNCTION__), 0))); > > > closed_list.erase(lowest_in_open->first); > const list_map::iterator lowest = closed_list.insert(*lowest_in_open).first; > > open_list.erase(lowest_in_open); > open_list_ordered.erase(open_list_ordered.begin()); > > > locs.resize(6); > get_adjacent_tiles(lowest->second.loc,&locs[0]); > if(teleports != __null && teleports->count(lowest->second.loc) != 0) { > std::copy(teleports->begin(),teleports->end(),std::back_inserter(locs)); > } > > for(size_t j = 0; j != locs.size(); ++j) { > > > if(locs[j] == dst) { > std::cerr << "found solution; calculating it...\n"; > paths::route rt; > > for(location loc = lowest->second.loc; loc.valid(); ) { > rt.steps.push_back(loc); > list_map::const_iterator itor = open_list.find(loc); > if(itor == open_list.end()) { > itor = closed_list.find(loc); > (static_cast<void> (__builtin_expect (!!(itor != closed_list.end()), 1) ? 0 : (__assert_fail ("itor != closed_list.end()", "pathfind.hpp", 217, __PRETTY_FUNCTION__), 0))); > } > > loc = itor->second.parent; > } > > std::reverse(rt.steps.begin(),rt.steps.end()); > rt.steps.push_back(dst); > rt.move_left = int(lowest->second.g + obj.cost(dst,lowest->second.g)); > > (static_cast<void> (__builtin_expect (!!(rt.steps.front() == src), 1) ? 0 : (__assert_fail ("rt.steps.front() == src", "pathfind.hpp", 227, __PRETTY_FUNCTION__), 0))); > > std::cerr << "exiting a* search (solved)\n"; > > return rt; > } > > list_map::iterator current_best = open_list.find(locs[j]); > const bool in_open = current_best != open_list.end(); > if(!in_open) { > current_best = closed_list.find(locs[j]); > } > > if(current_best != closed_list.end() && current_best->second.g <= lowest->second.g+1.0) { > continue; > } > > const double new_cost = obj.cost(locs[j],lowest->second.g); > > const node nd(locs[j],dst,lowest->second.g+new_cost, > lowest->second.loc,teleports); > > if(current_best != closed_list.end()) { > if(current_best->second.g <= nd.g) { > continue; > } else if(in_open) { > typedef std::multimap<double,location>::iterator Itor; > std::pair<Itor,Itor> itors = open_list_ordered.equal_range(current_best->second.f); > while(itors.first != itors.second) { > if(itors.first->second == current_best->second.loc) { > open_list_ordered.erase(itors.first); > break; > } > ++itors.first; > } > > open_list.erase(current_best); > } else { > closed_list.erase(current_best); > } > } > > if(nd.f < stop_at) { > open_list.insert(list_type(nd.loc,nd)); > open_list_ordered.insert(std::pair<double,location>(nd.f,nd.loc)); > } else { > closed_list.insert(list_type(nd.loc,nd)); > } > } > } > > std::cerr << "aborted a* search\n"; > paths::route val; > val.move_left = 100000; > return val; >} ># 24 "display.hpp" 2 ># 1 "reports.hpp" 1 ># 15 "reports.hpp" >namespace reports { > > enum TYPE { UNIT_DESCRIPTION, UNIT_TYPE, UNIT_LEVEL, UNIT_TRAITS, UNIT_STATUS, > UNIT_ALIGNMENT, UNIT_ABILITIES, UNIT_HP, UNIT_XP, UNIT_MOVES, UNIT_WEAPONS, > UNIT_IMAGE, UNIT_PROFILE, TIME_OF_DAY, > TURN, GOLD, VILLAGES, NUM_UNITS, UPKEEP, EXPENSES, INCOME, TERRAIN, POSITION, > SIDE_PLAYING, OBSERVERS, SELECTED_TERRAIN, EDIT_LEFT_BUTTON_FUNCTION, > NUM_REPORTS}; > > enum { UNIT_REPORTS_BEGIN=UNIT_DESCRIPTION, UNIT_REPORTS_END=UNIT_PROFILE+1 }; > enum { STATUS_REPORTS_BEGIN=TIME_OF_DAY, STATUS_REPORTS_END=NUM_REPORTS}; > > const std::string& report_name(TYPE type); > > struct element { > > > > std::string image; > std::string text; > > std::string tooltip; > > element() {} > explicit element(const std::string& text) : text(text) {} > element(const std::string& text, const std::string& image, const std::string& tooltip) : > image(image), text(text), tooltip(tooltip) {} > > bool operator==(const element& o) const { > return o.text == text && o.image == image && o.tooltip == tooltip; > } > bool operator!=(const element& o) const { return !(o == *this); } > }; > struct report : public std::vector<element> { > report() {} > explicit report(const std::string& text) { this->push_back(element(text)); } > report(const std::string& text, const std::string& image, const std::string& tooltip) { > this->push_back(element(text, image, tooltip)); > } > > > void add_text(std::stringstream& text, std::stringstream& tooltip); > void add_text(const std::string& text, const std::string& tooltip); > void add_image(const std::string& image, const std::string& tooltip); > void add_image(std::stringstream& image, std::stringstream& tooltip); > }; > > report generate_report(TYPE type, const gamemap& map, const unit_map& units, > const std::vector<team>& teams, > const team& current_team, int current_side, int active_side, > const gamemap::location& loc, const gamemap::location& mouseover, > const gamestatus& status, const std::set<std::string>& observers, > const std::string* format_string=__null); > > > > > > void set_report_content(const TYPE which_report, const std::string &content); >} ># 25 "display.hpp" 2 > ># 1 "theme.hpp" 1 ># 9 "theme.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 10 "theme.hpp" 2 > >class theme >{ > > class object > { > public: > object(); > object(const config& cfg); > > SDL_Rect& location(const SDL_Rect& screen) const; ># 30 "theme.hpp" > enum ANCHORING { FIXED, TOP_ANCHORED, PROPORTIONAL, BOTTOM_ANCHORED }; > > private: > SDL_Rect loc_; > mutable SDL_Rect relative_loc_; > mutable SDL_Rect last_screen_; > > ANCHORING xanchor_, yanchor_; > > static ANCHORING read_anchor(const std::string& str); > }; > >public: > > class label : private object > { > public: > label(); > explicit label(const config& cfg); > > using object::location; > > const std::string& text() const; > const std::string& icon() const; > > bool empty() const; > > size_t font_size() const; > > private: > std::string text_, icon_; > size_t font_; > }; > > class status_item : private object > { > public: > > explicit status_item(const config& cfg); > > using object::location; > > const std::string& prefix() const; > const std::string& postfix() const; > > > const label* get_label() const; > > size_t font_size() const; > > private: > std::string prefix_, postfix_; > label label_; > size_t font_; > }; > > class panel : private object > { > public: > explicit panel(const config& cfg); > > using object::location; > > const std::string& image() const; > > private: > std::string image_; > }; > > class menu : private object > { > public: > menu(); > explicit menu(const config& cfg); > > using object::location; > > bool is_context() const; > > const std::string& title() const; > > const std::string& image() const; > > const std::vector<std::string>& items() const; > private: > bool context_; > std::string title_, image_; > std::vector<std::string> items_; > }; > > explicit theme(const config& cfg, const SDL_Rect& screen); > bool set_resolution(const SDL_Rect& screen); > > const std::vector<panel>& panels() const; > const std::vector<label>& labels() const; > const std::vector<menu>& menus() const; > > const menu* context_menu() const; > > const status_item* get_status_item(const std::string& item) const; > > const SDL_Rect& main_map_location(const SDL_Rect& screen) const; > const SDL_Rect& mini_map_location(const SDL_Rect& screen) const; > >private: > const config& cfg_; > std::vector<panel> panels_; > std::vector<label> labels_; > std::vector<menu> menus_; > > menu context_; > > std::map<std::string,status_item> status_; > > object main_map_, mini_map_; >}; ># 27 "display.hpp" 2 > ># 1 "video.hpp" 1 ># 16 "video.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 17 "video.hpp" 2 > > > > > > > >surface display_format_alpha(surface surf); >surface get_video_surface(); > >bool non_interactive(); > > >void update_rect(size_t x, size_t y, size_t w, size_t h); >void update_rect(const SDL_Rect& rect); >void update_whole_screen(); > >class CVideo { > public: > CVideo(); > CVideo(int x, int y, int bits_per_pixel, int flags); > ~CVideo(); > > int modePossible( int x, int y, int bits_per_pixel, int flags ); > int setMode( int x, int y, int bits_per_pixel, int flags ); > > int setGamma(float gamma); > > > int getx() const; > int gety() const; > int getBitsPerPixel(); > int getBytesPerPixel(); > int getRedMask(); > int getGreenMask(); > int getBlueMask(); > > > void lock(); > void unlock(); > int mustLock(); > > void flip(); > > surface getSurface( void ); > > bool isFullScreen() const; > > struct error {}; > > struct quit {}; > > > void setBpp( int bpp ); > int getBpp(); > > void make_fake(); > >private: > > int bpp; > > > bool fake_screen; >}; > > >struct video_change_detector { > video_change_detector(CVideo& video) : video_(video), full_(video.isFullScreen()), x_(video.getx()), y_(video.gety()) > {} > > bool changed() const { return full_ != video_.isFullScreen() || x_ != video_.getx() || y_ != video_.gety(); } > >private: > CVideo& video_; > bool full_; > int x_, y_; >}; ># 29 "display.hpp" 2 ># 1 "widgets/button.hpp" 1 ># 16 "widgets/button.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 17 "widgets/button.hpp" 2 > ># 1 "widgets/widget.hpp" 1 > > > ># 1 "widgets/../events.hpp" 1 > > > ># 1 "/usr/include/SDL/SDL.h" 1 ># 5 "widgets/../events.hpp" 2 > > > > >namespace events >{ > > > >struct resize_lock { > resize_lock(); > ~resize_lock(); >}; ># 26 "widgets/../events.hpp" >class handler >{ >public: > virtual void handle_event(const SDL_Event& event) = 0; > virtual void process() {} > virtual void draw() {} > > virtual void volatile_draw() {} > virtual void volatile_undraw() {} > > virtual bool requires_event_focus() const { return false; } > > virtual void process_help_string(int mousex, int mousey) {} > >protected: > handler(); > virtual ~handler(); > >private: > int unicode_; >}; > >void focus_handler(const handler* ptr); >void cycle_focus(); > >bool has_focus(const handler* ptr); ># 62 "widgets/../events.hpp" >struct event_context >{ > event_context(bool create=true); > ~event_context(); > >private: > bool create_; >}; > > >void pump(); > >void raise_process_event(); >void raise_draw_event(); >void raise_volatile_draw_event(); >void raise_volatile_undraw_event(); >void raise_help_string_event(int mousex, int mousey); >} ># 5 "widgets/widget.hpp" 2 > ># 1 "widgets/../sdl_utils.hpp" 1 ># 7 "widgets/widget.hpp" 2 > ># 1 "/usr/include/SDL/SDL.h" 1 ># 9 "widgets/widget.hpp" 2 > >class display; > >namespace gui { > >class widget : public events::handler >{ >public: > const SDL_Rect& location() const; > void set_location(const SDL_Rect& rect); > void set_location(int x, int y); > void set_width(int w); > void set_height(int h); > > size_t width() const; > size_t height() const; > > virtual bool focus() const; > void set_focus(bool focus); > > void hide(bool value=true); > bool hidden() const; > > void bg_backup(); ># 42 "widgets/widget.hpp" > void set_volatile(bool val=true); > > void set_dirty(bool dirty=true); > const bool dirty() const; > > void set_help_string(const std::string& str); > > virtual void process_help_string(int mousex, int mousey); > >protected: > widget(const widget &o); > widget(display& disp); > widget(display& disp, const SDL_Rect& rect); > virtual ~widget() { restorer_.cancel(); } > > void bg_restore() const; > > display& disp() const { return *disp_; } > > virtual void handle_event(const SDL_Event& event); > >private: > void volatile_draw(); > void volatile_undraw(); > > mutable display* disp_; > mutable surface_restorer restorer_; > SDL_Rect rect_; > bool focus_; > bool dirty_; > mutable bool needs_restore_; > > bool hidden_; > > bool volatile_; > > std::string help_text_; > int help_string_; >}; > >} ># 19 "widgets/button.hpp" 2 > > > > > > > >class display; > >namespace gui { > >class button : public widget >{ >public: > struct error {}; > > enum TYPE { TYPE_PRESS, TYPE_CHECK }; > > enum SPACE_CONSUMPTION { DEFAULT_SPACE, MINIMUM_SPACE }; > > button(display& disp, const std::string& label, TYPE type=TYPE_PRESS, > std::string button_image="", SPACE_CONSUMPTION spacing=DEFAULT_SPACE); > > virtual ~button() {} > > void set_check(bool check); > bool checked() const; > > void draw(); > > void set_label(const std::string& val); > > bool process(int mousex, int mousey, bool button); > bool pressed(); > > void enable(bool new_val); > bool enabled() const; > >protected: > virtual void handle_event(const SDL_Event& event); > virtual void mouse_motion(const SDL_MouseMotionEvent& event); > virtual void mouse_down(const SDL_MouseButtonEvent& event); > virtual void mouse_up(const SDL_MouseButtonEvent& event); > >private: > > std::string label_; > display* display_; > surface image_, pressedImage_, activeImage_, pressedActiveImage_; > SDL_Rect textRect_; > > bool button_; > > enum STATE { UNINIT, NORMAL, ACTIVE, PRESSED, PRESSED_ACTIVE }; > STATE state_; > > TYPE type_; > > bool enabled_; > > bool pressed_; > > bool hit(int x, int y) const; >}; > >} ># 30 "display.hpp" 2 > ># 1 "/usr/include/SDL/SDL.h" 1 ># 32 "display.hpp" 2 ># 50 "display.hpp" >class display >{ >public: > typedef std::map<gamemap::location,unit> unit_map; > > display(unit_map& units, CVideo& video, > const gamemap& map, const gamestatus& status, > const std::vector<team>& t, const config& theme_cfg, > const config& built_terrains); > ~display(); > > Uint32 rgb(Uint8 red, Uint8 green, Uint8 blue); > > > > void new_turn(); > > > > void adjust_colours(int r, int g, int b); > > > > > > gamemap::location hide_unit(const gamemap::location& loc, bool hide_energy=false); > > > > void scroll(int xmov, int ymov); > > > > double zoom(int amount=0); > > > void default_zoom(); > > > > int hex_size() const; > > > > int hex_width() const; > > enum SCROLL_TYPE { SCROLL, WARP }; > > > void scroll_to_tile(int x, int y, SCROLL_TYPE scroll_type=SCROLL, bool check_fogged=true); > > > > > void scroll_to_tiles(int x1, int y1, int x2, int y2, > SCROLL_TYPE scroll_type=SCROLL, bool check_fogged=true); > > > void redraw_everything(); > > > > > void draw(bool update=true,bool force=false); > > > > > int x() const; > int mapx() const; > int y() const; > > const SDL_Rect& map_area() const; > const SDL_Rect& minimap_area() const; > > SDL_Rect screen_area() const; > > > > > void select_hex(gamemap::location hex); > > > > > > void highlight_hex(gamemap::location hex); > > > > > gamemap::location hex_clicked_on(int x, int y); > > > > > gamemap::location minimap_location_on(int x, int y); > > > > > > void set_paths(const paths* paths_list); > > > > > void set_route(const paths::route* route); > > > int get_location_x(const gamemap::location& loc) const; > int get_location_y(const gamemap::location& loc) const; > > > void get_visible_hex_bounds(gamemap::location &topleft, gamemap::location &bottomright) const; > > > void remove_footstep(const gamemap::location& loc); > > > > > > void draw_tile(int x, int y, surface unit_image=surface(__null), > double alpha=1.0, Uint32 blend_to=0); > > > void float_label(const gamemap::location& loc, const std::string& text, > int red, int green, int blue); > >private: > enum ADJACENT_TERRAIN_TYPE { ADJACENT_BACKGROUND, ADJACENT_FOREGROUND, ADJACENT_FOGSHROUD }; > > > void draw_terrain_on_tile(int x, int y, image::TYPE image_type, ADJACENT_TERRAIN_TYPE type); > > void draw_unit_on_tile(int x, int y, surface unit_image=surface(__null), > double alpha=1.0, Uint32 blend_to=0); > > void draw_halo_on_tile(int x, int y); > > > > >public: > > > > > void draw_footstep(const gamemap::location& loc, int xloc, int yloc); > > > CVideo& video() { return screen_; } > > > void blit_surface(int x, int y, surface surface, SDL_Rect* srcrect=__null, SDL_Rect* clip_rect=__null); > > > void invalidate_all(); > > > void invalidate(const gamemap::location& loc); > > > void invalidate_game_status(); > > > void invalidate_unit(); > > > void invalidate_animations(); > > > > void recalculate_minimap(); > > > > void redraw_minimap(); > > > > > void add_overlay(const gamemap::location& loc, const std::string& image, const std::string& halo=""); > void remove_overlay(const gamemap::location& loc); > > > void write_overlays(config& cfg) const; > > > > > > > void draw_unit_details(int x, int y, const gamemap::location& loc, > const unit& u, SDL_Rect& description_rect, > int xprofile,int yprofile,SDL_Rect* clip_rect=__null); > > > void update_display(); > > > > gamemap::TERRAIN get_terrain_on(int palx, int paly, int x, int y); > > > > > void set_team(size_t team); > void set_playing_team(size_t team); > > > > > void set_advancing_unit(const gamemap::location& loc, double amount); > > > > > > > void lock_updates(bool value); > bool update_locked() const; > > > > bool turbo() const; > void set_turbo(bool turbo); > > > > void set_grid(bool grid); > > > > static void debug_highlight(const gamemap::location& loc, double amount); > static void clear_debug_highlights(); > > > bool shrouded(int x, int y) const; > > bool fogged(int x, int y) const; > > > > size_t viewing_team() const; > size_t playing_team() const; > > const theme& get_theme() const; > > const theme::menu* menu_pressed(int mousex, int mousey, bool button_pressed); > > void add_observer(const std::string& name); > void remove_observer(const std::string& name); > > map_labels& labels() { return map_labels_; } > const map_labels& labels() const { return map_labels_; } > > void set_diagnostic(const std::string& msg); > > enum MESSAGE_TYPE { MESSAGE_PUBLIC, MESSAGE_PRIVATE }; > void add_chat_message(const std::string& speaker, int side, const std::string& msg, MESSAGE_TYPE type); > void clear_chat_messages(); ># 324 "display.hpp" > void draw_unit(int x, int y, surface image, > bool upside_down=false,double alpha=1.0, Uint32 blendto=0, double submerged=0.0, > surface ellipse_back=surface(__null), > surface ellipse_front=surface(__null)); > > > void rebuild_terrain(const gamemap::location &location); > > void rebuild_all(); > > > > > void add_highlighted_loc(const gamemap::location &hex); > > void clear_highlighted_locs(); > > void remove_highlighted_loc(const gamemap::location &hex); > > void begin_game(); > > bool in_game() const { return in_game_; } > > > > > int set_help_string(const std::string& str); > void clear_help_string(int handle); > void clear_all_help_strings(); > >private: > display(const display&); > void operator=(const display&); > > void draw_sidebar(); > void draw_minimap(int x, int y, int w, int h); > void draw_game_status(int x, int y); > > SDL_Rect gameStatusRect_; > SDL_Rect unitDescriptionRect_; > SDL_Rect unitProfileRect_; > > void draw_image_for_report(surface& img, > surface& surf, SDL_Rect& rect); > void draw_report(reports::TYPE report_num); > SDL_Rect reportRects_[reports::NUM_REPORTS]; > surface reportSurfaces_[reports::NUM_REPORTS]; > reports::report reports_[reports::NUM_REPORTS]; > > void bounds_check_position(); > > > std::vector<surface> get_terrain_images(int x, int y, image::TYPE type, ADJACENT_TERRAIN_TYPE terrain_type); > std::vector<std::string> get_fog_shroud_graphics(const gamemap::location& loc); > > > > > > > surface get_terrain(const image::locator &image, image::TYPE type, > int x, int y); > > > surface get_flag(gamemap::TERRAIN, int x, int y); > > > surface get_minimap(int w, int h); > > CVideo& screen_; > mutable CKey keys_; > int xpos_, ypos_, zoom_; > const gamemap& map_; > > gamemap::location selectedHex_; > gamemap::location mouseoverHex_; > > unit_map& units_; > > void draw_bar(const std::string& image, int xpos, int ypos, size_t height, double filled, const SDL_Color& col, double alpha); > > > > const SDL_Rect& calculate_energy_bar(surface surf); > std::map<surface,SDL_Rect> energy_bar_rects_; > > surface minimap_; > bool redrawMinimap_; > > const paths* pathsList_; > paths::route route_; > > const gamestatus& status_; > > bool team_valid() const; > > const std::vector<team>& teams_; > > int lastDraw_; > int drawSkips_; > > void invalidate_route(); > > std::set<gamemap::location> invalidated_; > bool invalidateAll_; > bool invalidateUnit_; > bool invalidateGameStatus_; > > struct overlay { > overlay(const std::string& img, const std::string& halo_img, > int handle) : image(img), halo(halo_img), > halo_handle(handle) {} > std::string image; > std::string halo; > int halo_handle; > }; > > typedef std::multimap<gamemap::location,overlay> overlay_map; > > overlay_map overlays_; > > bool panelsDrawn_; > > size_t currentTeam_, activeTeam_; > > > > gamemap::location hiddenUnit_; > bool hideEnergy_; > > > gamemap::location deadUnit_; > double deadAmount_; > > > gamemap::location advancingUnit_; > double advancingAmount_; > > int updatesLocked_; > > bool turbo_, grid_; > double sidebarScaling_; > > theme theme_; > terrain_builder builder_; > > void create_buttons(); > std::vector<gui::button> buttons_; > > bool first_turn_, in_game_; > > std::set<std::string> observers_; > > map_labels map_labels_; > > struct chat_message > { > chat_message(int speaker, int h) : speaker_handle(speaker), handle(h), created_at(SDL_GetTicks()) > {} > > int speaker_handle; > int handle; > int created_at; > }; > > void prune_chat_messages(bool remove_all=false); > > std::vector<chat_message> chat_messages_; > > > > surface tod_hex_mask1, tod_hex_mask2; > > typedef std::map<gamemap::location,int> halo_map; > halo_map haloes_; > > > static std::map<gamemap::location,double> debugHighlights_; > > std::set<gamemap::location> highlighted_locations_; > > int diagnostic_label_; > > > int help_string_; > > > std::vector<animated<image::locator> > flags_; >}; > > >struct update_locker >{ > update_locker(display& d, bool lock=true) : disp(d), unlock(lock) { > if(lock) { > disp.lock_updates(true); > } > } > > ~update_locker() { > unlock_update(); > } > > void unlock_update() { > if(unlock) { > disp.lock_updates(false); > unlock = false; > } > } > >private: > display& disp; > bool unlock; >}; > >bool angle_is_northern(size_t n); >const std::string& get_angle_direction(size_t n); ># 18 "actions.hpp" 2 > > ># 1 "replay.hpp" 1 ># 21 "replay.hpp" >struct verification_manager >{ > verification_manager(const unit_map& units); > ~verification_manager(); >}; > >int get_random(); > >const config* get_random_results(); >void set_random_results(const config& cfg); > >class replay >{ >public: > replay(); > explicit replay(const config& cfg); > > config& get_config(); > > void set_save_info(const game_state& save); > const game_state& get_save_info() const; > > void set_skip(int turns_to_skip); > void next_skip(); > bool skipping() const; > > void save_game(game_data& data, const std::string& label, const config& snapshot, const config& starting_pos, bool include_replay=true); > > void add_recruit(int unit_index, const gamemap::location& loc); > void add_recall(int unit_index, const gamemap::location& loc); > void add_movement(const gamemap::location& a, const gamemap::location& b); > void add_attack(const gamemap::location& a, const gamemap::location& b, > int weapon); > void choose_option(int index); > void add_label(const std::string& text, const gamemap::location& loc); > void end_turn(); > > void speak(const config& cfg); > std::string build_chat_log(const std::string& team) const; ># 68 "replay.hpp" > enum DATA_TYPE { ALL_DATA, NON_UNDO_DATA }; > config get_data_range(int cmd_start, int cmd_end, DATA_TYPE data_type=ALL_DATA); > config get_last_turn(int num_turns=1); > > void undo(); > > int get_random(); > const config* get_random_results() const; > void set_random_results(const config& cfg); > > void start_replay(); > config* get_next_action(); > > bool at_end() const; > void set_to_end(); > > void clear(); > bool empty(); > > enum MARK_SENT { MARK_AS_UNSENT, MARK_AS_SENT }; > void add_config(const config& cfg, MARK_SENT mark=MARK_AS_UNSENT); > > int ncommands(); > > void mark_current(); > > struct error {}; > >private: > > void add_pos(const std::string& type, > const gamemap::location& a, const gamemap::location& b); > > void add_value(const std::string& type, int value); > > const config::child_list& commands() const; > config* add_command(); > config cfg_; > unsigned int pos_; > > config* current_; > config* random_; > > game_state saveInfo_; > > int skip_; >}; > >replay& get_replay_source(); > >extern replay recorder; > > > >bool do_replay(display& disp, const gamemap& map, const game_data& gameinfo, > std::map<gamemap::location,unit>& units, > std::vector<team>& teams, int team_num, const gamestatus& state, > game_state& state_of_game, replay* obj=__null); > > > >struct replay_undo >{ > replay_undo(replay& obj) : obj_(&obj) {} > ~replay_undo() { if(obj_) obj_->undo(); } > void confirm_transaction() { obj_ = __null; } > >private: > replay* obj_; >}; > >class replay_network_sender >{ >public: > replay_network_sender(replay& obj); > ~replay_network_sender(); > > void sync_non_undoable(); > void commit_and_sync(); >private: > replay& obj_; > int upto_; >}; ># 21 "actions.hpp" 2 > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/deque" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/deque" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/deque" 3 > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 1 3 ># 36 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/functexcept.h" 3 >namespace std >{ > > void > __throw_bad_exception(void); > > > void > __throw_bad_alloc(void); > > > void > __throw_bad_cast(void); > > void > __throw_bad_typeid(void); > > > void > __throw_logic_error(const char* __s); > > void > __throw_domain_error(const char* __s); > > void > __throw_invalid_argument(const char* __s); > > void > __throw_length_error(const char* __s); > > void > __throw_out_of_range(const char* __s); > > void > __throw_runtime_error(const char* __s); > > void > __throw_range_error(const char* __s); > > void > __throw_overflow_error(const char* __s); > > void > __throw_underflow_error(const char* __s); > > > void > __throw_ios_failure(const char* __s); >} ># 67 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/deque" 2 3 > > > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 1 3 ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 >namespace std >{ ># 82 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > inline size_t > __deque_buf_size(size_t __size) > { return __size < 512 ? size_t(512 / __size) : size_t(1); } ># 99 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _Tp, typename _Ref, typename _Ptr> > struct _Deque_iterator > { > typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; > typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator; > > static size_t _S_buffer_size() > { return __deque_buf_size(sizeof(_Tp)); } > > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef _Ptr pointer; > typedef _Ref reference; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp** _Map_pointer; > typedef _Deque_iterator _Self; > > _Tp* _M_cur; > _Tp* _M_first; > _Tp* _M_last; > _Map_pointer _M_node; > > _Deque_iterator(_Tp* __x, _Map_pointer __y) > : _M_cur(__x), _M_first(*__y), > _M_last(*__y + _S_buffer_size()), _M_node(__y) {} > > _Deque_iterator() : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) {} > > _Deque_iterator(const iterator& __x) > : _M_cur(__x._M_cur), _M_first(__x._M_first), > _M_last(__x._M_last), _M_node(__x._M_node) {} > > reference > operator*() const > { return *_M_cur; } > > pointer > operator->() const > { return _M_cur; } > > _Self& > operator++() > { > ++_M_cur; > if (_M_cur == _M_last) > { > _M_set_node(_M_node + 1); > _M_cur = _M_first; > } > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > ++*this; > return __tmp; > } > > _Self& > operator--() > { > if (_M_cur == _M_first) > { > _M_set_node(_M_node - 1); > _M_cur = _M_last; > } > --_M_cur; > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > --*this; > return __tmp; > } > > _Self& > operator+=(difference_type __n) > { > const difference_type __offset = __n + (_M_cur - _M_first); > if (__offset >= 0 && __offset < difference_type(_S_buffer_size())) > _M_cur += __n; > else > { > const difference_type __node_offset = > __offset > 0 ? __offset / difference_type(_S_buffer_size()) > : -difference_type((-__offset - 1) > / _S_buffer_size()) - 1; > _M_set_node(_M_node + __node_offset); > _M_cur = _M_first + (__offset - __node_offset > * difference_type(_S_buffer_size())); > } > return *this; > } > > _Self > operator+(difference_type __n) const > { > _Self __tmp = *this; > return __tmp += __n; > } > > _Self& > operator-=(difference_type __n) > { return *this += -__n; } > > _Self > operator-(difference_type __n) const > { > _Self __tmp = *this; > return __tmp -= __n; > } > > reference > operator[](difference_type __n) const > { return *(*this + __n); } > > > > > > > > void > _M_set_node(_Map_pointer __new_node) > { > _M_node = __new_node; > _M_first = *__new_node; > _M_last = _M_first + difference_type(_S_buffer_size()); > } > }; > > > > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return __x._M_cur == __y._M_cur; } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return __x._M_cur == __y._M_cur; } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return !(__x == __y); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return !(__x == __y); } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) > : (__x._M_node < __y._M_node); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) > : (__x._M_node < __y._M_node); } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return __y < __x; } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return __y < __x; } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return !(__y < __x); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return !(__y < __x); } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return !(__x < __y); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return !(__x < __y); } > > > > > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type > operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { > return typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type > (_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size()) > * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) > + (__y._M_last - __y._M_cur); > } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline _Deque_iterator<_Tp, _Ref, _Ptr> > operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x) > { return __x + __n; } ># 352 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > class _Deque_base > { > public: > typedef _Alloc allocator_type; > > allocator_type > get_allocator() const > { return *static_cast<const _Alloc*>(&this->_M_impl); } > > typedef _Deque_iterator<_Tp,_Tp&,_Tp*> iterator; > typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*> const_iterator; > > _Deque_base(const allocator_type& __a, size_t __num_elements) > : _M_impl(__a) > { _M_initialize_map(__num_elements); } > > _Deque_base(const allocator_type& __a) > : _M_impl(__a) > { } > > ~_Deque_base(); > > protected: > > > > struct _Deque_impl > : public _Alloc { > _Tp** _M_map; > size_t _M_map_size; > iterator _M_start; > iterator _M_finish; > > _Deque_impl(const _Alloc& __a) > : _Alloc(__a), _M_map(0), _M_map_size(0), _M_start(), _M_finish() > { } > }; > > typedef typename _Alloc::template rebind<_Tp*>::other _Map_alloc_type; > _Map_alloc_type _M_get_map_allocator() const > { return _Map_alloc_type(this->get_allocator()); } > > _Tp* > _M_allocate_node() > { return _M_impl._Alloc::allocate(__deque_buf_size(sizeof(_Tp))); } > > void > _M_deallocate_node(_Tp* __p) > { _M_impl._Alloc::deallocate(__p, __deque_buf_size(sizeof(_Tp))); } > > _Tp** > _M_allocate_map(size_t __n) > { return _M_get_map_allocator().allocate(__n); } > > void > _M_deallocate_map(_Tp** __p, size_t __n) > { _M_get_map_allocator().deallocate(__p, __n); } > > protected: > void _M_initialize_map(size_t); > void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish); > void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish); > enum { _S_initial_map_size = 8 }; > > _Deque_impl _M_impl; > }; > > template<typename _Tp, typename _Alloc> > _Deque_base<_Tp,_Alloc>::~_Deque_base() > { > if (this->_M_impl._M_map) > { > _M_destroy_nodes(this->_M_impl._M_start._M_node, this->_M_impl._M_finish._M_node + 1); > _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); > } > } ># 440 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > void > _Deque_base<_Tp,_Alloc>::_M_initialize_map(size_t __num_elements) > { > size_t __num_nodes = __num_elements / __deque_buf_size(sizeof(_Tp)) + 1; > > this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size, > __num_nodes + 2); > this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size); > > > > > > > _Tp** __nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size - __num_nodes) / 2; > _Tp** __nfinish = __nstart + __num_nodes; > > try > { _M_create_nodes(__nstart, __nfinish); } > catch(...) > { > _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); > this->_M_impl._M_map = 0; > this->_M_impl._M_map_size = 0; > throw; > } > > this->_M_impl._M_start._M_set_node(__nstart); > this->_M_impl._M_finish._M_set_node(__nfinish - 1); > this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first; > this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first + __num_elements > % __deque_buf_size(sizeof(_Tp)); > } > > template<typename _Tp, typename _Alloc> > void > _Deque_base<_Tp,_Alloc>::_M_create_nodes(_Tp** __nstart, _Tp** __nfinish) > { > _Tp** __cur; > try > { > for (__cur = __nstart; __cur < __nfinish; ++__cur) > *__cur = this->_M_allocate_node(); > } > catch(...) > { > _M_destroy_nodes(__nstart, __cur); > throw; > } > } > > template<typename _Tp, typename _Alloc> > void > _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish) > { > for (_Tp** __n = __nstart; __n < __nfinish; ++__n) > _M_deallocate_node(*__n); > } ># 584 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc = allocator<_Tp> > > class deque : protected _Deque_base<_Tp, _Alloc> > { > > > > typedef _Deque_base<_Tp, _Alloc> _Base; > > public: > typedef _Tp value_type; > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef typename _Base::iterator iterator; > typedef typename _Base::const_iterator const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef typename _Base::allocator_type allocator_type; > > protected: > typedef pointer* _Map_pointer; > > static size_t _S_buffer_size() > { return __deque_buf_size(sizeof(_Tp)); } > > > using _Base::_M_initialize_map; > using _Base::_M_create_nodes; > using _Base::_M_destroy_nodes; > using _Base::_M_allocate_node; > using _Base::_M_deallocate_node; > using _Base::_M_allocate_map; > using _Base::_M_deallocate_map; > > > > > > > using _Base::_M_impl; > > public: > > > > > > explicit > deque(const allocator_type& __a = allocator_type()) > : _Base(__a, 0) {} ># 645 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > deque(size_type __n, const value_type& __value, > const allocator_type& __a = allocator_type()) > : _Base(__a, __n) > { _M_fill_initialize(__value); } ># 657 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > explicit > deque(size_type __n) > : _Base(allocator_type(), __n) > { _M_fill_initialize(value_type()); } ># 669 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > deque(const deque& __x) > : _Base(__x.get_allocator(), __x.size()) > { std::uninitialized_copy(__x.begin(), __x.end(), this->_M_impl._M_start); } ># 687 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _InputIterator> > deque(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Base(__a) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_initialize_dispatch(__first, __last, _Integral()); > } > > > > > > > ~deque() > { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); } ># 712 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > deque& > operator=(const deque& __x); ># 725 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > assign(size_type __n, const value_type& __val) > { _M_fill_assign(__n, __val); } ># 741 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } > > > allocator_type > get_allocator() const > { return _Base::get_allocator(); } > > > > > > > iterator > begin() > { return this->_M_impl._M_start; } > > > > > > const_iterator > begin() const > { return this->_M_impl._M_start; } > > > > > > iterator > end() > { return this->_M_impl._M_finish; } > > > > > > const_iterator > end() const > { return this->_M_impl._M_finish; } > > > > > > reverse_iterator > rbegin() > { return reverse_iterator(this->_M_impl._M_finish); } > > > > > > > const_reverse_iterator > rbegin() const > { return const_reverse_iterator(this->_M_impl._M_finish); } > > > > > > > reverse_iterator > rend() { return reverse_iterator(this->_M_impl._M_start); } > > > > > > > const_reverse_iterator > rend() const > { return const_reverse_iterator(this->_M_impl._M_start); } > > > > size_type > size() const > { return this->_M_impl._M_finish - this->_M_impl._M_start; } > > > size_type > max_size() const > { return size_type(-1); } ># 842 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > resize(size_type __new_size, const value_type& __x) > { > const size_type __len = size(); > if (__new_size < __len) > erase(this->_M_impl._M_start + __new_size, this->_M_impl._M_finish); > else > insert(this->_M_impl._M_finish, __new_size - __len, __x); > } ># 861 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > resize(size_type new_size) > { resize(new_size, value_type()); } > > > > > bool > empty() const > { return this->_M_impl._M_finish == this->_M_impl._M_start; } ># 882 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > reference > operator[](size_type __n) > { return this->_M_impl._M_start[difference_type(__n)]; } ># 895 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > const_reference > operator[](size_type __n) const > { return this->_M_impl._M_start[difference_type(__n)]; } > > protected: > > void > _M_range_check(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("deque::_M_range_check")); > } > > public: ># 919 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > reference > at(size_type __n) > { _M_range_check(__n); return (*this)[__n]; } ># 933 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > const_reference > at(size_type __n) const > { > _M_range_check(__n); > return (*this)[__n]; > } > > > > > > reference > front() > { return *this->_M_impl._M_start; } > > > > > > const_reference > front() const > { return *this->_M_impl._M_start; } > > > > > > reference > back() > { > iterator __tmp = this->_M_impl._M_finish; > --__tmp; > return *__tmp; > } > > > > > > const_reference > back() const > { > const_iterator __tmp = this->_M_impl._M_finish; > --__tmp; > return *__tmp; > } ># 989 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > push_front(const value_type& __x) > { > if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) > { > std::_Construct(this->_M_impl._M_start._M_cur - 1, __x); > --this->_M_impl._M_start._M_cur; > } > else > _M_push_front_aux(__x); > } ># 1009 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > push_back(const value_type& __x) > { > if (this->_M_impl._M_finish._M_cur != this->_M_impl._M_finish._M_last - 1) > { > std::_Construct(this->_M_impl._M_finish._M_cur, __x); > ++this->_M_impl._M_finish._M_cur; > } > else > _M_push_back_aux(__x); > } ># 1029 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > pop_front() > { > if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_last - 1) > { > std::_Destroy(this->_M_impl._M_start._M_cur); > ++this->_M_impl._M_start._M_cur; > } > else > _M_pop_front_aux(); > } ># 1049 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > pop_back() > { > if (this->_M_impl._M_finish._M_cur != this->_M_impl._M_finish._M_first) > { > --this->_M_impl._M_finish._M_cur; > std::_Destroy(this->_M_impl._M_finish._M_cur); > } > else > _M_pop_back_aux(); > } ># 1070 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > iterator > insert(iterator position, const value_type& __x); ># 1082 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > insert(iterator __position, size_type __n, const value_type& __x) > { _M_fill_insert(__position, __n, __x); } ># 1096 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _InputIterator> > void > insert(iterator __position, _InputIterator __first, > _InputIterator __last) > { > > typedef typename _Is_integer<_InputIterator>::_Integral _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } ># 1119 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > iterator > erase(iterator __position); ># 1138 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > iterator > erase(iterator __first, iterator __last); ># 1150 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > swap(deque& __x) > { > std::swap(this->_M_impl._M_start, __x._M_impl._M_start); > std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); > std::swap(this->_M_impl._M_map, __x._M_impl._M_map); > std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size); > } > > > > > > > > void clear(); > > protected: > > > > template<typename _Integer> > void > _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) > { > _M_initialize_map(__n); > _M_fill_initialize(__x); > } > > > template<typename _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename iterator_traits<_InputIterator>::iterator_category > _IterCategory; > _M_range_initialize(__first, __last, _IterCategory()); > } ># 1204 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _InputIterator> > void > _M_range_initialize(_InputIterator __first, _InputIterator __last, > input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag); ># 1228 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > _M_fill_initialize(const value_type& __value); > > > > > > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { > _M_fill_assign(static_cast<size_type>(__n), > static_cast<value_type>(__val)); > } > > > template<typename _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename iterator_traits<_InputIterator>::iterator_category > _IterCategory; > _M_assign_aux(__first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_assign_aux(_InputIterator __first, _InputIterator __last, > input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag) > { > const size_type __len = std::distance(__first, __last); > if (__len > size()) > { > _ForwardIterator __mid = __first; > std::advance(__mid, size()); > std::copy(__first, __mid, begin()); > insert(end(), __mid, __last); > } > else > erase(std::copy(__first, __last, begin()), end()); > } > > > > void > _M_fill_assign(size_type __n, const value_type& __val) > { > if (__n > size()) > { > std::fill(begin(), end(), __val); > insert(end(), __n - size(), __val); > } > else > { > erase(begin() + __n, end()); > std::fill(begin(), end(), __val); > } > } > > > > > > > > void _M_push_back_aux(const value_type&); > void _M_push_front_aux(const value_type&); > void _M_pop_back_aux(); > void _M_pop_front_aux(); > > > > > > > template<typename _Integer> > void > _M_insert_dispatch(iterator __pos, > _Integer __n, _Integer __x, __true_type) > { > _M_fill_insert(__pos, static_cast<size_type>(__n), > static_cast<value_type>(__x)); > } > > > template<typename _InputIterator> > void > _M_insert_dispatch(iterator __pos, > _InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename iterator_traits<_InputIterator>::iterator_category > _IterCategory; > _M_range_insert_aux(__pos, __first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_range_insert_aux(iterator __pos, _InputIterator __first, > _InputIterator __last, input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_range_insert_aux(iterator __pos, _ForwardIterator __first, > _ForwardIterator __last, forward_iterator_tag); > > > > > void > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); > > > iterator > _M_insert_aux(iterator __pos, const value_type& __x); > > > void > _M_insert_aux(iterator __pos, size_type __n, const value_type& __x); > > > template<typename _ForwardIterator> > void > _M_insert_aux(iterator __pos, > _ForwardIterator __first, _ForwardIterator __last, > size_type __n); ># 1372 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > iterator > _M_reserve_elements_at_front(size_type __n) > { > const size_type __vacancies = this->_M_impl._M_start._M_cur > - this->_M_impl._M_start._M_first; > if (__n > __vacancies) > _M_new_elements_at_front(__n - __vacancies); > return this->_M_impl._M_start - difference_type(__n); > } > > iterator > _M_reserve_elements_at_back(size_type __n) > { > const size_type __vacancies = (this->_M_impl._M_finish._M_last > - this->_M_impl._M_finish._M_cur) - 1; > if (__n > __vacancies) > _M_new_elements_at_back(__n - __vacancies); > return this->_M_impl._M_finish + difference_type(__n); > } > > void > _M_new_elements_at_front(size_type __new_elements); > > void > _M_new_elements_at_back(size_type __new_elements); ># 1410 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > void > _M_reserve_map_at_back (size_type __nodes_to_add = 1) > { > if (__nodes_to_add + 1 > this->_M_impl._M_map_size > - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map)) > _M_reallocate_map(__nodes_to_add, false); > } > > void > _M_reserve_map_at_front (size_type __nodes_to_add = 1) > { > if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node - this->_M_impl._M_map)) > _M_reallocate_map(__nodes_to_add, true); > } > > void > _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); > > }; ># 1441 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator==(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return __x.size() == __y.size() > && std::equal(__x.begin(), __x.end(), __y.begin()); } ># 1459 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator<(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator!=(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Tp, typename _Alloc> > inline bool > operator<=(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>=(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Tp, typename _Alloc> > inline void > swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) > { __x.swap(__y); } >} ># 72 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/deque" 2 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/deque.tcc" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/deque.tcc" 3 >namespace std >{ > template <typename _Tp, typename _Alloc> > deque<_Tp,_Alloc>& > deque<_Tp,_Alloc>:: > operator=(const deque& __x) > { > const size_type __len = size(); > if (&__x != this) > { > if (__len >= __x.size()) > erase(std::copy(__x.begin(), __x.end(), this->_M_impl._M_start), > this->_M_impl._M_finish); > else > { > const_iterator __mid = __x.begin() + difference_type(__len); > std::copy(__x.begin(), __mid, this->_M_impl._M_start); > insert(this->_M_impl._M_finish, __mid, __x.end()); > } > } > return *this; > } > > template <typename _Tp, typename _Alloc> > typename deque<_Tp,_Alloc>::iterator > deque<_Tp,_Alloc>:: > insert(iterator position, const value_type& __x) > { > if (position._M_cur == this->_M_impl._M_start._M_cur) > { > push_front(__x); > return this->_M_impl._M_start; > } > else if (position._M_cur == this->_M_impl._M_finish._M_cur) > { > push_back(__x); > iterator __tmp = this->_M_impl._M_finish; > --__tmp; > return __tmp; > } > else > return _M_insert_aux(position, __x); > } > > template <typename _Tp, typename _Alloc> > typename deque<_Tp,_Alloc>::iterator > deque<_Tp,_Alloc>:: > erase(iterator __position) > { > iterator __next = __position; > ++__next; > size_type __index = __position - this->_M_impl._M_start; > if (__index < (size() >> 1)) > { > std::copy_backward(this->_M_impl._M_start, __position, __next); > pop_front(); > } > else > { > std::copy(__next, this->_M_impl._M_finish, __position); > pop_back(); > } > return this->_M_impl._M_start + __index; > } > > template <typename _Tp, typename _Alloc> > typename deque<_Tp,_Alloc>::iterator > deque<_Tp,_Alloc>:: > erase(iterator __first, iterator __last) > { > if (__first == this->_M_impl._M_start && __last == this->_M_impl._M_finish) > { > clear(); > return this->_M_impl._M_finish; > } > else > { > const difference_type __n = __last - __first; > const difference_type __elems_before = __first - this->_M_impl._M_start; > if (static_cast<size_type>(__elems_before) < (size() - __n) / 2) > { > std::copy_backward(this->_M_impl._M_start, __first, __last); > iterator __new_start = this->_M_impl._M_start + __n; > std::_Destroy(this->_M_impl._M_start, __new_start); > _M_destroy_nodes(this->_M_impl._M_start._M_node, __new_start._M_node); > this->_M_impl._M_start = __new_start; > } > else > { > std::copy(__last, this->_M_impl._M_finish, __first); > iterator __new_finish = this->_M_impl._M_finish - __n; > std::_Destroy(__new_finish, this->_M_impl._M_finish); > _M_destroy_nodes(__new_finish._M_node + 1, > this->_M_impl._M_finish._M_node + 1); > this->_M_impl._M_finish = __new_finish; > } > return this->_M_impl._M_start + __elems_before; > } > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > clear() > { > for (_Map_pointer __node = this->_M_impl._M_start._M_node + 1; > __node < this->_M_impl._M_finish._M_node; > ++__node) > { > std::_Destroy(*__node, *__node + _S_buffer_size()); > _M_deallocate_node(*__node); > } > > if (this->_M_impl._M_start._M_node != this->_M_impl._M_finish._M_node) > { > std::_Destroy(this->_M_impl._M_start._M_cur, this->_M_impl._M_start._M_last); > std::_Destroy(this->_M_impl._M_finish._M_first, this->_M_impl._M_finish._M_cur); > _M_deallocate_node(this->_M_impl._M_finish._M_first); > } > else > std::_Destroy(this->_M_impl._M_start._M_cur, this->_M_impl._M_finish._M_cur); > > this->_M_impl._M_finish = this->_M_impl._M_start; > } > > template <typename _Tp, class _Alloc> > template <typename _InputIterator> > void > deque<_Tp,_Alloc> > ::_M_assign_aux(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > iterator __cur = begin(); > for ( ; __first != __last && __cur != end(); ++__cur, ++__first) > *__cur = *__first; > if (__first == __last) > erase(__cur, end()); > else > insert(end(), __first, __last); > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) > { > if (__pos._M_cur == this->_M_impl._M_start._M_cur) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > try > { > std::uninitialized_fill(__new_start, this->_M_impl._M_start, __x); > this->_M_impl._M_start = __new_start; > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, this->_M_impl._M_start._M_node); > throw; > } > } > else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > try > { > std::uninitialized_fill(this->_M_impl._M_finish, __new_finish, __x); > this->_M_impl._M_finish = __new_finish; > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > else > _M_insert_aux(__pos, __n, __x); > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_fill_initialize(const value_type& __value) > { > _Map_pointer __cur; > try > { > for (__cur = this->_M_impl._M_start._M_node; > __cur < this->_M_impl._M_finish._M_node; > ++__cur) > std::uninitialized_fill(*__cur, *__cur + _S_buffer_size(), __value); > std::uninitialized_fill(this->_M_impl._M_finish._M_first, > this->_M_impl._M_finish._M_cur, > __value); > } > catch(...) > { > std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur)); > throw; > } > } > > template <typename _Tp, typename _Alloc> > template <typename _InputIterator> > void > deque<_Tp,_Alloc>:: > _M_range_initialize(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > this->_M_initialize_map(0); > try > { > for ( ; __first != __last; ++__first) > push_back(*__first); > } > catch(...) > { > clear(); > throw; > } > } > > template <typename _Tp, typename _Alloc> > template <typename _ForwardIterator> > void > deque<_Tp,_Alloc>:: > _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag) > { > const size_type __n = std::distance(__first, __last); > this->_M_initialize_map(__n); > > _Map_pointer __cur_node; > try > { > for (__cur_node = this->_M_impl._M_start._M_node; > __cur_node < this->_M_impl._M_finish._M_node; > ++__cur_node) > { > _ForwardIterator __mid = __first; > std::advance(__mid, _S_buffer_size()); > std::uninitialized_copy(__first, __mid, *__cur_node); > __first = __mid; > } > std::uninitialized_copy(__first, __last, this->_M_impl._M_finish._M_first); > } > catch(...) > { > std::_Destroy(this->_M_impl._M_start, iterator(*__cur_node, __cur_node)); > throw; > } > } > > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_push_back_aux(const value_type& __t) > { > value_type __t_copy = __t; > _M_reserve_map_at_back(); > *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); > try > { > std::_Construct(this->_M_impl._M_finish._M_cur, __t_copy); > this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node + 1); > this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; > } > catch(...) > { > _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); > throw; > } > } > > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_push_front_aux(const value_type& __t) > { > value_type __t_copy = __t; > _M_reserve_map_at_front(); > *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); > try > { > this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node - 1); > this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; > std::_Construct(this->_M_impl._M_start._M_cur, __t_copy); > } > catch(...) > { > ++this->_M_impl._M_start; > _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); > throw; > } > } > > > template <typename _Tp, typename _Alloc> > void deque<_Tp,_Alloc>:: > _M_pop_back_aux() > { > _M_deallocate_node(this->_M_impl._M_finish._M_first); > this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); > this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; > std::_Destroy(this->_M_impl._M_finish._M_cur); > } > > > > > > template <typename _Tp, typename _Alloc> > void deque<_Tp,_Alloc>:: > _M_pop_front_aux() > { > std::_Destroy(this->_M_impl._M_start._M_cur); > _M_deallocate_node(this->_M_impl._M_start._M_first); > this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); > this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; > } > > template <typename _Tp, typename _Alloc> > template <typename _InputIterator> > void > deque<_Tp,_Alloc>:: > _M_range_insert_aux(iterator __pos, > _InputIterator __first, _InputIterator __last, > input_iterator_tag) > { std::copy(__first, __last, std::inserter(*this, __pos)); } > > template <typename _Tp, typename _Alloc> > template <typename _ForwardIterator> > void > deque<_Tp,_Alloc>:: > _M_range_insert_aux(iterator __pos, > _ForwardIterator __first, _ForwardIterator __last, > forward_iterator_tag) > { > size_type __n = std::distance(__first, __last); > if (__pos._M_cur == this->_M_impl._M_start._M_cur) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > try > { > std::uninitialized_copy(__first, __last, __new_start); > this->_M_impl._M_start = __new_start; > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, this->_M_impl._M_start._M_node); > throw; > } > } > else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > try > { > std::uninitialized_copy(__first, __last, this->_M_impl._M_finish); > this->_M_impl._M_finish = __new_finish; > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > else > _M_insert_aux(__pos, __first, __last, __n); > } > > template <typename _Tp, typename _Alloc> > typename deque<_Tp, _Alloc>::iterator > deque<_Tp,_Alloc>:: > _M_insert_aux(iterator __pos, const value_type& __x) > { > difference_type __index = __pos - this->_M_impl._M_start; > value_type __x_copy = __x; > if (static_cast<size_type>(__index) < size() / 2) > { > push_front(front()); > iterator __front1 = this->_M_impl._M_start; > ++__front1; > iterator __front2 = __front1; > ++__front2; > __pos = this->_M_impl._M_start + __index; > iterator __pos1 = __pos; > ++__pos1; > std::copy(__front2, __pos1, __front1); > } > else > { > push_back(back()); > iterator __back1 = this->_M_impl._M_finish; > --__back1; > iterator __back2 = __back1; > --__back2; > __pos = this->_M_impl._M_start + __index; > std::copy_backward(__pos, __back2, __back1); > } > *__pos = __x_copy; > return __pos; > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) > { > const difference_type __elems_before = __pos - this->_M_impl._M_start; > size_type __length = this->size(); > value_type __x_copy = __x; > if (__elems_before < difference_type(__length / 2)) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > iterator __old_start = this->_M_impl._M_start; > __pos = this->_M_impl._M_start + __elems_before; > try > { > if (__elems_before >= difference_type(__n)) > { > iterator __start_n = this->_M_impl._M_start + difference_type(__n); > std::uninitialized_copy(this->_M_impl._M_start, __start_n, > __new_start); > this->_M_impl._M_start = __new_start; > std::copy(__start_n, __pos, __old_start); > fill(__pos - difference_type(__n), __pos, __x_copy); > } > else > { > std::__uninitialized_copy_fill(this->_M_impl._M_start, __pos, > __new_start, > this->_M_impl._M_start, __x_copy); > this->_M_impl._M_start = __new_start; > std::fill(__old_start, __pos, __x_copy); > } > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, this->_M_impl._M_start._M_node); > throw; > } > } > else > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > iterator __old_finish = this->_M_impl._M_finish; > const difference_type __elems_after = > difference_type(__length) - __elems_before; > __pos = this->_M_impl._M_finish - __elems_after; > try > { > if (__elems_after > difference_type(__n)) > { > iterator __finish_n = this->_M_impl._M_finish - difference_type(__n); > std::uninitialized_copy(__finish_n, this->_M_impl._M_finish, > this->_M_impl._M_finish); > this->_M_impl._M_finish = __new_finish; > std::copy_backward(__pos, __finish_n, __old_finish); > std::fill(__pos, __pos + difference_type(__n), __x_copy); > } > else > { > std::__uninitialized_fill_copy(this->_M_impl._M_finish, > __pos + difference_type(__n), > __x_copy, __pos, > this->_M_impl._M_finish); > this->_M_impl._M_finish = __new_finish; > std::fill(__pos, __old_finish, __x_copy); > } > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > } > > template <typename _Tp, typename _Alloc> > template <typename _ForwardIterator> > void > deque<_Tp,_Alloc>:: > _M_insert_aux(iterator __pos, > _ForwardIterator __first, _ForwardIterator __last, > size_type __n) > { > const difference_type __elemsbefore = __pos - this->_M_impl._M_start; > size_type __length = size(); > if (static_cast<size_type>(__elemsbefore) < __length / 2) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > iterator __old_start = this->_M_impl._M_start; > __pos = this->_M_impl._M_start + __elemsbefore; > try > { > if (__elemsbefore >= difference_type(__n)) > { > iterator __start_n = this->_M_impl._M_start + difference_type(__n); > std::uninitialized_copy(this->_M_impl._M_start, __start_n, > __new_start); > this->_M_impl._M_start = __new_start; > std::copy(__start_n, __pos, __old_start); > std::copy(__first, __last, __pos - difference_type(__n)); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, difference_type(__n) - __elemsbefore); > std::__uninitialized_copy_copy(this->_M_impl._M_start, __pos, > __first, __mid, __new_start); > this->_M_impl._M_start = __new_start; > std::copy(__mid, __last, __old_start); > } > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, this->_M_impl._M_start._M_node); > throw; > } > } > else > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > iterator __old_finish = this->_M_impl._M_finish; > const difference_type __elemsafter = > difference_type(__length) - __elemsbefore; > __pos = this->_M_impl._M_finish - __elemsafter; > try > { > if (__elemsafter > difference_type(__n)) > { > iterator __finish_n = this->_M_impl._M_finish - difference_type(__n); > std::uninitialized_copy(__finish_n, > this->_M_impl._M_finish, > this->_M_impl._M_finish); > this->_M_impl._M_finish = __new_finish; > std::copy_backward(__pos, __finish_n, __old_finish); > std::copy(__first, __last, __pos); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, __elemsafter); > std::__uninitialized_copy_copy(__mid, __last, __pos, > this->_M_impl._M_finish, > this->_M_impl._M_finish); > this->_M_impl._M_finish = __new_finish; > std::copy(__first, __mid, __pos); > } > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_new_elements_at_front(size_type __new_elems) > { > size_type __new_nodes > = (__new_elems + _S_buffer_size() - 1) / _S_buffer_size(); > _M_reserve_map_at_front(__new_nodes); > size_type __i; > try > { > for (__i = 1; __i <= __new_nodes; ++__i) > *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); > } > catch(...) > { > for (size_type __j = 1; __j < __i; ++__j) > _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); > throw; > } > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_new_elements_at_back(size_type __new_elems) > { > size_type __new_nodes > = (__new_elems + _S_buffer_size() - 1) / _S_buffer_size(); > _M_reserve_map_at_back(__new_nodes); > size_type __i; > try > { > for (__i = 1; __i <= __new_nodes; ++__i) > *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); > } > catch(...) > { > for (size_type __j = 1; __j < __i; ++__j) > _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); > throw; > } > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp,_Alloc>:: > _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) > { > size_type __old_num_nodes > = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; > size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; > > _Map_pointer __new_nstart; > if (this->_M_impl._M_map_size > 2 * __new_num_nodes) > { > __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size > - __new_num_nodes) / 2 > + (__add_at_front ? __nodes_to_add : 0); > if (__new_nstart < this->_M_impl._M_start._M_node) > std::copy(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1, > __new_nstart); > else > std::copy_backward(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1, > __new_nstart + __old_num_nodes); > } > else > { > size_type __new_map_size = this->_M_impl._M_map_size > + std::max(this->_M_impl._M_map_size, > __nodes_to_add) + 2; > > _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); > __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 > + (__add_at_front ? __nodes_to_add : 0); > std::copy(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1, > __new_nstart); > _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); > > this->_M_impl._M_map = __new_map; > this->_M_impl._M_map_size = __new_map_size; > } > > this->_M_impl._M_start._M_set_node(__new_nstart); > this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); > } >} ># 75 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/deque" 2 3 ># 25 "actions.hpp" 2 ># 42 "actions.hpp" >std::string recruit_unit(const gamemap& map, int team, unit_map& units, > unit& u, gamemap::location& recruit_location, > display *disp=__null, bool need_castle=true, bool full_movement=false); > > > >struct battle_stats >{ > std::string attack_name, defend_name; > std::string attack_type, defend_type; > std::string attack_special, defend_special; > std::string range; > std::string attack_icon, defend_icon; > int chance_to_hit_attacker, chance_to_hit_defender; > int damage_attacker_takes, damage_defender_takes; > int amount_attacker_drains, amount_defender_drains; > int ndefends, nattacks; > int attack_with, defend_with; > bool attacker_plague, defender_plague; > bool attacker_slows, defender_slows; > std::vector<std::string> attack_calculations, defend_calculations; > bool to_the_death, defender_strikes_first; >}; ># 79 "actions.hpp" >battle_stats evaluate_battle_stats( > const gamemap& map, > const gamemap::location& attacker, > const gamemap::location& defender, > int attack_with, > std::map<gamemap::location,unit>& units, > const gamestatus& state, > const game_data& info, > gamemap::TERRAIN attacker_terrain_override=0, > bool include_strings=true); > > >void attack(display& gui, const gamemap& map, > std::vector<team>& teams, > gamemap::location attacker, > gamemap::location defender, > int attack_with, > std::map<gamemap::location,unit>& units, > const gamestatus& state, > const game_data& info, bool player_is_attacker); > > > >int village_owner(const gamemap::location& loc, const std::vector<team>& teams); > > > >void get_village(const gamemap::location& loc, std::vector<team>& teams, > size_t team_num, const unit_map& units); > > > >unit_map::iterator find_leader(unit_map& units, int side); > >unit_map::const_iterator find_leader(const unit_map& units, int side); > > > >void calculate_healing(display& disp, const gamestatus& status, const gamemap& map, > std::map<gamemap::location,unit>& units, int side, > const std::vector<team>& teams); > > > > >unit get_advanced_unit(const game_data& info, > std::map<gamemap::location,unit>& units, > const gamemap::location& loc, const std::string& advance_to); > > > > > >void advance_unit(const game_data& info, > std::map<gamemap::location,unit>& units, > gamemap::location loc, const std::string& advance_to); > > > > > > >gamemap::location under_leadership(const std::map<gamemap::location,unit>& units, > const gamemap::location& loc, int* bonus=__null); > > > >void check_victory(std::map<gamemap::location,unit>& units, > std::vector<team>& teams); > > > > >const time_of_day& timeofday_at(const gamestatus& status, > const std::map<gamemap::location,unit>& units, > const gamemap::location& loc); > > > >int combat_modifier(const gamestatus& status, > const std::map<gamemap::location,unit>& units, > const gamemap::location& loc, > unit_type::ALIGNMENT alignment); > > >struct undo_action { > undo_action(unit u,const std::vector<gamemap::location>& rt,int sm,int orig=-1) > : affected_unit(u), route(rt), starting_moves(sm), original_village_owner(orig), recall_pos(-1) {} > undo_action(unit u,const gamemap::location& loc, int pos) > : affected_unit(u), recall_loc(loc), recall_pos(pos) {} > std::vector<gamemap::location> route; > int starting_moves; > int original_village_owner; > gamemap::location recall_loc; > int recall_pos; > unit affected_unit; > bool is_recall() const { return recall_pos >= 0; } >}; > >typedef std::deque<undo_action> undo_list; > > > > > >size_t move_unit(display* disp, const game_data& gamedata, > const gamestatus& status, const gamemap& map, > unit_map& units, std::vector<team>& teams, > std::vector<gamemap::location> steps, > replay* move_recorder, undo_list* undos, > gamemap::location *next_unit = __null, > bool continue_move = false); > > >void recalculate_fog(const gamemap& map, const gamestatus& status, > const game_data& gamedata, > const unit_map& units, std::vector<team>& teams, int team); > > > >bool clear_shroud(display& disp, const gamestatus& status, > const gamemap& map, const game_data& gamedata, > const unit_map& units, std::vector<team>& teams, int team); > > > >void apply_shroud_changes(undo_list& undos, display* disp, const gamestatus& status, const gamemap& map, > const game_data& gamedata, const unit_map& units, std::vector<team>& teams, int team); > > > >bool unit_can_move(const gamemap::location& loc, const unit_map& units, > const gamemap& map, const std::vector<team>& teams); > > >namespace victory_conditions { > void set_victory_when_enemies_defeated(bool on); > bool victory_when_enemies_defeated(); >} ># 15 "display.cpp" 2 > ># 1 "events.hpp" 1 ># 17 "display.cpp" 2 ># 1 "font.hpp" 1 ># 16 "font.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 17 "font.hpp" 2 > > > > > > >namespace font { > > >struct manager { > manager(); > ~manager(); > struct error {}; >}; > > >void set_font(const std::string& name); > > >extern const SDL_Color NORMAL_COLOUR, GOOD_COLOUR, BAD_COLOUR, BLACK_COLOUR, > DARK_COLOUR, YELLOW_COLOUR, BUTTON_COLOUR; > >enum MARKUP { USE_MARKUP, NO_MARKUP }; > > >extern const char LARGE_TEXT, SMALL_TEXT, GOOD_TEXT, BAD_TEXT, NORMAL_TEXT, BLACK_TEXT, BOLD_TEXT, IMAGE, NULL_MARKUP; ># 62 "font.hpp" >SDL_Rect draw_text(display* gui, const SDL_Rect& area, int size, > const SDL_Color& colour, const std::string& text, > int x, int y, surface bg=__null, > bool use_tooltips=false, MARKUP use_markup=USE_MARKUP, int style=0); > > >SDL_Rect text_area(const std::string& text, int size, int style=0); > > >surface get_rendered_text(const std::string& text, int size, const SDL_Color& colour, int style=0); > > >int get_max_height(int size); > >bool is_format_char(char c); > > > > > >int line_width(const std::string line, int font_size); > > > > > > >std::string word_wrap_text(const std::string& unwrapped_text, int font_size, int max_width); > > > > >std::string make_text_ellipsis(const std::string& text, int font_size, int max_width); ># 106 "font.hpp" >SDL_Rect draw_wrapped_text(display* gui, const SDL_Rect& area, int font_size, > const SDL_Color& colour, const std::string& text, > int x, int y, int max_width, surface bg = __null); > > > > >struct floating_label_context >{ > floating_label_context(); > ~floating_label_context(); >}; > >enum ALIGN { LEFT_ALIGN, CENTER_ALIGN, RIGHT_ALIGN }; > >enum LABEL_SCROLL_MODE { ANCHOR_LABEL_SCREEN, ANCHOR_LABEL_MAP }; ># 133 "font.hpp" >int add_floating_label(const std::string& text, int font_size, const SDL_Color& colour, > double xpos, double ypos, double xmove, double ymove, int lifetime, const SDL_Rect& clip_rect, ALIGN alignment=CENTER_ALIGN, > const SDL_Color* bg_colour=__null, int border_size=0, LABEL_SCROLL_MODE scroll_mode=ANCHOR_LABEL_SCREEN); > > >void move_floating_label(int handle, double xmove, double ymove); > > >void scroll_floating_labels(double xmove, double ymove); > > >void remove_floating_label(int handle); > > >void show_floating_label(int handle, bool show); > >const std::string& get_floating_label_text(int handle); > >SDL_Rect get_floating_label_rect(int handle); > >void draw_floating_labels(surface screen); >void undraw_floating_labels(surface screen); > >} ># 18 "display.cpp" 2 ># 1 "game.hpp" 1 ># 19 "display.cpp" 2 ># 1 "game_config.hpp" 1 ># 21 "game_config.hpp" >namespace game_config >{ > extern int base_income; > extern int village_income; > extern int heal_amount; > extern int healer_heals_per_turn; > extern int cure_amount; > extern int curer_heals_per_turn; > extern int rest_heal_amount; > extern int recall_cost; > extern int kill_experience; > extern int leadership_bonus; > extern const std::string version; > > extern bool debug, editor; > > extern std::string path; > > extern std::string game_icon, game_title, game_logo, title_music, map_image, rightside_image, rightside_image_bot, > moved_energy_image, unmoved_energy_image, partmoved_energy_image, > enemy_energy_image,ally_energy_image,flag_image, > dot_image,cross_image, > foot_left_nw,foot_left_n,foot_right_nw,foot_right_n, > missile_n_image,missile_ne_image,terrain_mask_image,observer_image, > checked_menu_image,unchecked_menu_image; > > extern int title_logo_x, title_logo_y, title_buttons_x, title_buttons_y, title_buttons_padding, title_tip_x, title_tip_y, title_tip_width, title_tip_padding; > > namespace sounds { > extern const std::string turn_bell, receive_message, user_arrive, user_leave; > } > > void load_config(const config* cfg); >} ># 20 "display.cpp" 2 ># 1 "halo.hpp" 1 ># 9 "halo.hpp" >namespace halo >{ > >struct manager >{ > manager(display& disp); > ~manager(); > >private: > display* const old; >}; > >struct halo_hider >{ > halo_hider(); > ~halo_hider(); >private: > bool old; >}; > >enum ORIENTATION { NORMAL, REVERSE }; > > > > >int add(int x, int y, const std::string& image, ORIENTATION orientation=NORMAL, int lifetime_cycles=-1); > > > >void set_location(int handle, int x, int y); > > >void remove(int handle); > >struct remover >{ > void operator()(int handle) const { remove(handle); } >}; > > > >void render(); >void unrender(); > >} ># 21 "display.cpp" 2 ># 1 "hotkeys.hpp" 1 ># 24 "hotkeys.hpp" >namespace hotkey { > >enum HOTKEY_COMMAND { HOTKEY_CYCLE_UNITS, HOTKEY_END_UNIT_TURN, HOTKEY_LEADER, > HOTKEY_UNDO, HOTKEY_REDO, > HOTKEY_ZOOM_IN, HOTKEY_ZOOM_OUT, HOTKEY_ZOOM_DEFAULT, > HOTKEY_FULLSCREEN, HOTKEY_ACCELERATED, > HOTKEY_TERRAIN_TABLE, HOTKEY_ATTACK_RESISTANCE, > HOTKEY_UNIT_DESCRIPTION, HOTKEY_RENAME_UNIT, HOTKEY_SAVE_GAME, HOTKEY_LOAD_GAME, > HOTKEY_RECRUIT, HOTKEY_REPEAT_RECRUIT, HOTKEY_RECALL, HOTKEY_ENDTURN, > HOTKEY_TOGGLE_GRID, HOTKEY_STATUS_TABLE, HOTKEY_MUTE, > HOTKEY_SPEAK, HOTKEY_CREATE_UNIT, HOTKEY_CHANGE_UNIT_SIDE, HOTKEY_PREFERENCES, > HOTKEY_OBJECTIVES, HOTKEY_UNIT_LIST, HOTKEY_STATISTICS, HOTKEY_QUIT_GAME, > HOTKEY_LABEL_TERRAIN, HOTKEY_SHOW_ENEMY_MOVES, HOTKEY_BEST_ENEMY_MOVES, > HOTKEY_DELAY_SHROUD, HOTKEY_UPDATE_SHROUD, HOTKEY_CONTINUE_MOVE, > HOTKEY_SEARCH, HOTKEY_SPEAK_ALLY, HOTKEY_SPEAK_ALL, HOTKEY_HELP, > HOTKEY_CHAT_LOG, > > > HOTKEY_EDIT_SET_TERRAIN, > HOTKEY_EDIT_QUIT, HOTKEY_EDIT_SAVE_MAP, > HOTKEY_EDIT_SAVE_AS, HOTKEY_EDIT_SET_START_POS, > HOTKEY_EDIT_NEW_MAP, HOTKEY_EDIT_LOAD_MAP, HOTKEY_EDIT_FLOOD_FILL, > HOTKEY_EDIT_FILL_SELECTION, HOTKEY_EDIT_CUT, HOTKEY_EDIT_COPY, > HOTKEY_EDIT_PASTE, HOTKEY_EDIT_REVERT, HOTKEY_EDIT_RESIZE, > HOTKEY_EDIT_FLIP, HOTKEY_EDIT_SELECT_ALL, HOTKEY_EDIT_DRAW, > HOTKEY_USER_CMD, > HOTKEY_NULL }; > >struct hotkey_item { > explicit hotkey_item(const config& cfg); > > HOTKEY_COMMAND action; > int keycode; > bool alt, ctrl, shift, command; > mutable bool lastres; >}; ># 72 "hotkeys.hpp" >void add_hotkeys(config& cfg, bool overwrite); > >void change_hotkey(hotkey_item& item); > >void save_hotkeys(config& cfg); > > >std::vector<hotkey_item>& get_hotkeys(); > > >std::string get_hotkey_name(hotkey_item item); > >std::string command_to_string(const HOTKEY_COMMAND &command); >HOTKEY_COMMAND string_to_command(const std::string& str); > >enum ACTION_STATE { ACTION_STATELESS, ACTION_ON, ACTION_OFF }; > > > >class command_executor >{ >public: > > virtual void cycle_units() {} > virtual void end_turn() {} > virtual void goto_leader() {} > virtual void end_unit_turn() {} > virtual void undo() {} > virtual void redo() {} > virtual void terrain_table() {} > virtual void attack_resistance() {} > virtual void unit_description() {} > virtual void rename_unit() {} > virtual void save_game() {} > virtual void load_game() {} > virtual void toggle_grid() {} > virtual void status_table() {} > virtual void recall() {} > virtual void recruit() {} > virtual void repeat_recruit() {} > virtual void speak() {} > virtual void create_unit() {} > virtual void change_unit_side() {} > virtual void preferences() {} > virtual void objectives() {} > virtual void unit_list() {} > virtual void show_statistics() {} > virtual void label_terrain() {} > virtual void show_enemy_moves(bool ) {} > virtual void toggle_shroud_updates() {} > virtual void update_shroud_now() {} > virtual void continue_move() {} > virtual void search() {} > virtual void show_help() {} > virtual void show_chat_log() {} > virtual void user_command() {} > > > virtual void edit_set_terrain() {} > virtual void edit_quit() {} > virtual void edit_new_map() {} > virtual void edit_load_map() {} > virtual void edit_save_map() {} > virtual void edit_save_as() {} > virtual void edit_set_start_pos() {} > virtual void edit_flood_fill() {} > virtual void edit_fill_selection() {} > virtual void edit_cut() {} > virtual void edit_copy() {} > virtual void edit_paste() {} > virtual void edit_revert() {} > virtual void edit_resize() {} > virtual void edit_flip() {} > virtual void edit_select_all() {} > virtual void edit_draw() {} > > > virtual std::string get_action_image(hotkey::HOTKEY_COMMAND command) const { return ""; } > > virtual ACTION_STATE get_action_state(hotkey::HOTKEY_COMMAND command) const { return ACTION_STATELESS; } > > std::string get_menu_image(hotkey::HOTKEY_COMMAND command) const; > > virtual bool can_execute_command(HOTKEY_COMMAND command) const = 0; >}; > > > > > >void key_event(display& disp, const SDL_KeyboardEvent& event, command_executor* executor); > >void key_event_execute(display& disp, const SDL_KeyboardEvent& event, command_executor* executor); > >void execute_command(display& disp, HOTKEY_COMMAND command, command_executor* executor); > > > >struct basic_handler : public events::handler { > basic_handler(display* disp, command_executor* exec=__null); > > void handle_event(const SDL_Event& event); > >private: > display* disp_; > command_executor* exec_; >}; > >} ># 22 "display.cpp" 2 > > ># 1 "log.hpp" 1 ># 23 "log.hpp" ># 1 "/usr/include/SDL/SDL.h" 1 ># 24 "log.hpp" 2 > >struct scope_logger >{ > scope_logger(const std::string& str) : ticks_(SDL_GetTicks()), str_(str) { > do_indent(); > std::cerr << "BEGIN: " << str_ << "\n"; > do_indent(); > ++indent; > } > > ~scope_logger() { > const int ticks = SDL_GetTicks() - ticks_; > --indent; > do_indent(); > do_indent(); > std::cerr << "END: " << str_ << " (took " << ticks << "ms)\n"; > } > > void do_indent() > { > for(int i = 0; i != indent; ++i) > std::cerr << " "; > } > >private: > int ticks_; > std::string str_; > static int indent; >}; ># 25 "display.cpp" 2 ># 1 "preferences.hpp" 1 ># 20 "preferences.hpp" ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/utility" 1 3 ># 64 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/utility" 3 > ># 65 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/utility" 3 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_relops.h" 1 3 ># 74 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_relops.h" 3 >namespace std >{ > namespace rel_ops > { ># 90 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator!=(const _Tp& __x, const _Tp& __y) > { return !(__x == __y); } ># 103 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator>(const _Tp& __x, const _Tp& __y) > { return __y < __x; } ># 116 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator<=(const _Tp& __x, const _Tp& __y) > { return !(__y < __x); } ># 129 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator>=(const _Tp& __x, const _Tp& __y) > { return !(__x < __y); } > > } >} ># 68 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/utility" 2 3 ># 21 "preferences.hpp" 2 > > >namespace preferences { > > struct manager > { > manager(); > ~manager(); > }; > > struct display_manager > { > display_manager(display* disp); > ~display_manager(); > }; > > bool fullscreen(); > void set_fullscreen(bool ison); > > std::pair<int,int> resolution(); > void set_resolution(const std::pair<int,int>& res); > > bool turbo(); > void set_turbo(bool ison); > > const std::string& locale(); > void set_locale(const std::string& s); > > int music_volume(); > void set_music_volume(int vol); > > int sound_volume(); > void set_sound_volume(int vol); > > void mute(bool muted); > bool is_muted(); > > bool adjust_gamma(); > void set_adjust_gamma(bool val); > > int gamma(); > void set_gamma(int gamma); > > bool grid(); > void set_grid(bool ison); > > const std::string& official_network_host(); > > const std::string& network_host(); > void set_network_host(const std::string& host); > > const std::string& login(); > void set_login(const std::string& username); > > int scroll_speed(); > void set_scroll_speed(int scroll); > > bool turn_bell(); > void set_turn_bell(bool ison); > > bool message_bell(); > void set_message_bell(bool ison); > > bool turn_dialog(); > void set_turn_dialog(bool ison); > > bool show_combat(); > > bool show_ai_moves(); > void set_show_ai_moves(bool value); > > void set_show_side_colours(bool value); > bool show_side_colours(); > > void set_ask_delete_saves(bool value); > bool ask_delete_saves(); > > bool use_colour_cursors(); > void set_colour_cursors(bool value); > > bool show_floating_labels(); > void set_show_floating_labels(bool value); > > bool message_private(); > void set_message_private(bool value); > > bool show_tip_of_day(); > void set_show_tip_of_day(bool value); > > bool show_haloes(); > void set_show_haloes(bool value); > > std::set<std::string> &encountered_units(); > std::set<std::string> &encountered_terrains(); > > enum CACHE_SAVES_METHOD { CACHE_SAVES_ASK, CACHE_SAVES_NEVER, CACHE_SAVES_ALWAYS }; > CACHE_SAVES_METHOD cache_saves(); > void set_cache_saves(CACHE_SAVES_METHOD method); > > std::string client_type(); > > void set_theme(const std::string& theme); > const std::string& theme(); > > void show_preferences_dialog(display& disp); > bool show_video_mode_dialog(display& disp); > > > void show_hotkeys_dialog (display & disp, config *prefs=__null); > > > bool yellow_confirm(); > bool green_confirm(); > bool confirm_no_moves(); >} ># 26 "display.cpp" 2 > ># 1 "show_dialog.hpp" 1 ># 18 "show_dialog.hpp" ># 1 "cursor.hpp" 1 > > > ># 1 "/usr/include/SDL/SDL.h" 1 ># 5 "cursor.hpp" 2 > > >namespace cursor >{ > >struct manager >{ > manager(); > ~manager(); >}; > >enum CURSOR_TYPE { NORMAL, WAIT, MOVE, ATTACK, HYPERLINK, NUM_CURSORS }; > >void use_colour(bool value); > >void set(CURSOR_TYPE type); > >void draw(surface screen); >void undraw(surface screen); > >void set_focus(bool focus); > >struct setter >{ > setter(CURSOR_TYPE type); > ~setter(); > >private: > CURSOR_TYPE old_; >}; > >} ># 19 "show_dialog.hpp" 2 > > > ># 1 "network.hpp" 1 > > > > > ># 1 "/usr/include/SDL/SDL_net.h" 1 ># 28 "/usr/include/SDL/SDL_net.h" ># 1 "/usr/include/SDL/SDL.h" 1 ># 29 "/usr/include/SDL/SDL_net.h" 2 ># 1 "/usr/include/SDL/SDL_endian.h" 1 ># 47 "/usr/include/SDL/SDL_endian.h" ># 1 "/usr/include/SDL/SDL_types.h" 1 ># 48 "/usr/include/SDL/SDL_endian.h" 2 ># 1 "/usr/include/SDL/SDL_rwops.h" 1 ># 49 "/usr/include/SDL/SDL_endian.h" 2 ># 1 "/usr/include/SDL/SDL_byteorder.h" 1 ># 50 "/usr/include/SDL/SDL_endian.h" 2 > ># 1 "/usr/include/SDL/begin_code.h" 1 ># 52 "/usr/include/SDL/SDL_endian.h" 2 > > >extern "C" { > > > > > ># 1 "/usr/include/asm/byteorder.h" 1 3 4 > > > > > ># 1 "/usr/include/asm/types.h" 1 3 4 > > > > > >typedef unsigned short umode_t; > > > > > > >typedef __signed__ char __s8; >typedef unsigned char __u8; > >typedef __signed__ short __s16; >typedef unsigned short __u16; > >typedef __signed__ int __s32; >typedef unsigned int __u32; > > > > > > > >__extension__ typedef __signed__ long long __s64; >__extension__ typedef unsigned long long __u64; ># 7 "/usr/include/asm/byteorder.h" 2 3 4 ># 1 "/usr/include/linux/compiler.h" 1 3 4 ># 8 "/usr/include/asm/byteorder.h" 2 3 4 ># 16 "/usr/include/asm/byteorder.h" 3 4 >static __inline__ __attribute__((__const__)) __u32 ___arch__swab32(__u32 x) >{ > > > > __asm__("xchgb %b0,%h0\n\t" > "rorl $16,%0\n\t" > "xchgb %b0,%h0" > :"=q" (x) > : "0" (x)); > > return x; >} > >static __inline__ __attribute__((__const__)) __u64 ___arch__swab64(__u64 val) >{ > union { > struct { __u32 a,b; } s; > __u64 u; > } v; > v.u = val; > > > > > > v.s.a = ___arch__swab32(v.s.a); > v.s.b = ___arch__swab32(v.s.b); > __asm__("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b)); > > return v.u; >} ># 59 "/usr/include/asm/byteorder.h" 3 4 ># 1 "/usr/include/linux/byteorder/little_endian.h" 1 3 4 ># 11 "/usr/include/linux/byteorder/little_endian.h" 3 4 ># 1 "/usr/include/linux/byteorder/swab.h" 1 3 4 ># 134 "/usr/include/linux/byteorder/swab.h" 3 4 >static __inline__ __attribute__((__const__)) __u16 __fswab16(__u16 x) >{ > return ({ __u16 __tmp = (x) ; ({ __u16 __x = (__tmp); ((__u16)( (((__u16)(__x) & (__u16)0x00ffU) << 8) | (((__u16)(__x) & (__u16)0xff00U) >> 8) )); }); }); >} >static __inline__ __u16 __swab16p(const __u16 *x) >{ > return ({ __u16 __tmp = (*(x)) ; ({ __u16 __x = (__tmp); ((__u16)( (((__u16)(__x) & (__u16)0x00ffU) << 8) | (((__u16)(__x) & (__u16)0xff00U) >> 8) )); }); }); >} >static __inline__ void __swab16s(__u16 *addr) >{ > do { *(addr) = ({ __u16 __tmp = (*((addr))) ; ({ __u16 __x = (__tmp); ((__u16)( (((__u16)(__x) & (__u16)0x00ffU) << 8) | (((__u16)(__x) & (__u16)0xff00U) >> 8) )); }); }); } while (0); >} > >static __inline__ __attribute__((__const__)) __u32 __fswab32(__u32 x) >{ > return ___arch__swab32(x); >} >static __inline__ __u32 __swab32p(const __u32 *x) >{ > return ___arch__swab32(*(x)); >} >static __inline__ void __swab32s(__u32 *addr) >{ > do { *(addr) = ___arch__swab32(*((addr))); } while (0); >} > > >static __inline__ __attribute__((__const__)) __u64 __fswab64(__u64 x) >{ > > > > > > return ___arch__swab64(x); > >} >static __inline__ __u64 __swab64p(const __u64 *x) >{ > return ___arch__swab64(*(x)); >} >static __inline__ void __swab64s(__u64 *addr) >{ > do { *(addr) = ___arch__swab64(*((addr))); } while (0); >} ># 12 "/usr/include/linux/byteorder/little_endian.h" 2 3 4 ># 66 "/usr/include/linux/byteorder/little_endian.h" 3 4 ># 1 "/usr/include/linux/byteorder/generic.h" 1 3 4 ># 67 "/usr/include/linux/byteorder/little_endian.h" 2 3 4 ># 60 "/usr/include/asm/byteorder.h" 2 3 4 ># 61 "/usr/include/SDL/SDL_endian.h" 2 ># 85 "/usr/include/SDL/SDL_endian.h" >static __inline__ Uint64 SDL_Swap64(Uint64 val) { > Uint32 hi, lo; > > > lo = (Uint32)(val&0xFFFFFFFF); > val >>= 32; > hi = (Uint32)(val&0xFFFFFFFF); > val = ___arch__swab32(lo); > val <<= 32; > val |= ___arch__swab32(hi); > return(val); >} ># 127 "/usr/include/SDL/SDL_endian.h" >extern Uint16 SDL_ReadLE16(SDL_RWops *src); >extern Uint16 SDL_ReadBE16(SDL_RWops *src); >extern Uint32 SDL_ReadLE32(SDL_RWops *src); >extern Uint32 SDL_ReadBE32(SDL_RWops *src); >extern Uint64 SDL_ReadLE64(SDL_RWops *src); >extern Uint64 SDL_ReadBE64(SDL_RWops *src); > > >extern int SDL_WriteLE16(SDL_RWops *dst, Uint16 value); >extern int SDL_WriteBE16(SDL_RWops *dst, Uint16 value); >extern int SDL_WriteLE32(SDL_RWops *dst, Uint32 value); >extern int SDL_WriteBE32(SDL_RWops *dst, Uint32 value); >extern int SDL_WriteLE64(SDL_RWops *dst, Uint64 value); >extern int SDL_WriteBE64(SDL_RWops *dst, Uint64 value); > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 148 "/usr/include/SDL/SDL_endian.h" 2 ># 30 "/usr/include/SDL/SDL_net.h" 2 ># 1 "/usr/include/SDL/begin_code.h" 1 ># 31 "/usr/include/SDL/SDL_net.h" 2 > > > > > >extern "C" { > > > > > > >extern int SDLNet_Init(void); >extern void SDLNet_Quit(void); > > > > > >typedef struct { > Uint32 host; > Uint16 port; >} IPaddress; ># 70 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_ResolveHost(IPaddress *address, const char *host, Uint16 port); > > > > > > >extern const char * SDLNet_ResolveIP(IPaddress *ip); > > > > > > >typedef struct _TCPsocket *TCPsocket; ># 94 "/usr/include/SDL/SDL_net.h" >extern TCPsocket SDLNet_TCP_Open(IPaddress *ip); > > > > >extern TCPsocket SDLNet_TCP_Accept(TCPsocket server); > > > > >extern IPaddress * SDLNet_TCP_GetPeerAddress(TCPsocket sock); > > > > > > >extern int SDLNet_TCP_Send(TCPsocket sock, void *data, int len); > > > > > > > >extern int SDLNet_TCP_Recv(TCPsocket sock, void *data, int maxlen); > > >extern void SDLNet_TCP_Close(TCPsocket sock); ># 134 "/usr/include/SDL/SDL_net.h" >typedef struct _UDPsocket *UDPsocket; >typedef struct { > int channel; > Uint8 *data; > int len; > int maxlen; > int status; > IPaddress address; >} UDPpacket; > > > > >extern UDPpacket * SDLNet_AllocPacket(int size); >extern int SDLNet_ResizePacket(UDPpacket *packet, int newsize); >extern void SDLNet_FreePacket(UDPpacket *packet); > > > > > > >extern UDPpacket ** SDLNet_AllocPacketV(int howmany, int size); >extern void SDLNet_FreePacketV(UDPpacket **packetV); ># 166 "/usr/include/SDL/SDL_net.h" >extern UDPsocket SDLNet_UDP_Open(Uint16 port); ># 177 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_UDP_Bind(UDPsocket sock, int channel, IPaddress *address); > > >extern void SDLNet_UDP_Unbind(UDPsocket sock, int channel); > > > > > > > >extern IPaddress * SDLNet_UDP_GetPeerAddress(UDPsocket sock, int channel); ># 197 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_UDP_SendV(UDPsocket sock, UDPpacket **packets, int npackets); ># 211 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_UDP_Send(UDPsocket sock, int channel, UDPpacket *packet); ># 223 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_UDP_RecvV(UDPsocket sock, UDPpacket **packets); ># 235 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_UDP_Recv(UDPsocket sock, UDPpacket *packet); > > >extern void SDLNet_UDP_Close(UDPsocket sock); > > > > > > >typedef struct _SDLNet_SocketSet *SDLNet_SocketSet; > > >typedef struct { > int ready; >} *SDLNet_GenericSocket; > > > > > >extern SDLNet_SocketSet SDLNet_AllocSocketSet(int maxsockets); > > > > > > >extern int SDLNet_AddSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock); > > > > > > >extern int SDLNet_DelSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock); ># 279 "/usr/include/SDL/SDL_net.h" >extern int SDLNet_CheckSockets(SDLNet_SocketSet set, Uint32 timeout); ># 289 "/usr/include/SDL/SDL_net.h" >extern void SDLNet_FreeSocketSet(SDLNet_SocketSet set); > > > > > > > >extern void SDLNet_Write16(Uint16 value, void *area); >extern void SDLNet_Write32(Uint32 value, void *area); > > >extern Uint16 SDLNet_Read16(void *area); >extern Uint32 SDLNet_Read32(void *area); ># 416 "/usr/include/SDL/SDL_net.h" >}; > ># 1 "/usr/include/SDL/close_code.h" 1 ># 419 "/usr/include/SDL/SDL_net.h" 2 ># 7 "network.hpp" 2 > > > > > >namespace network { > > > >struct manager { > manager(); > ~manager(); > >private: > bool free_; >}; > > > >struct server_manager { > > > server_manager(int port, bool create_server=true); > ~server_manager(); > >private: > bool free_; >}; > >typedef int connection; > >extern const connection null_connection; > > >size_t nconnections(); > > >bool is_server(); > > > > >connection connect(const std::string& host, int port=15000); > > > > > >connection accept_connection(); > > > >void disconnect(connection connection_num=0); > > > > > >void queue_disconnect(connection connection_num); > > > > > > >connection receive_data(config& cfg, connection connection_num=0, int timeout=0); > > >void set_default_send_size(size_t send_size); > >enum SEND_TYPE { SEND_DATA, QUEUE_ONLY }; ># 92 "network.hpp" >void send_data(const config& cfg, connection connection_num=0, size_t max_size=0, SEND_TYPE mode=SEND_DATA); > > >void queue_data(const config& cfg, connection connection_num=0); > > > >void process_send_queue(connection connection_num=0, size_t max_size=0); > > >void send_data_all_except(const config& cfg, connection connection_num, size_t max_size=0); > > >std::string ip_address(connection connection_num); > > >std::pair<int,int> current_transfer_stats(); > >struct connection_stats >{ > connection_stats(int sent, int received, int connected_at); > > int bytes_sent, bytes_received; > int time_connected; >}; > >connection_stats get_connection_stats(connection connection_num); > >struct error >{ > error(const std::string& msg="", connection sock=0); > std::string message; > connection socket; > > void disconnect(); >}; > >} ># 23 "show_dialog.hpp" 2 ># 1 "tooltips.hpp" 1 > > > > > > ># 1 "/usr/include/SDL/SDL.h" 1 ># 8 "tooltips.hpp" 2 > >namespace tooltips { > >struct manager >{ > manager(display& disp); > ~manager(); >}; > >void clear_tooltips(); >void clear_tooltips(const SDL_Rect& rect); >void add_tooltip(const SDL_Rect& rect, const std::string& message); >void process(int mousex, int mousey, bool lbutton); > > > > >SDL_Rect draw_text(display* gui, const SDL_Rect& area, int size, > const SDL_Color& colour, const std::string& text, > int x, int y, surface bg=__null); > >} ># 24 "show_dialog.hpp" 2 > > > > > ># 1 "/usr/include/SDL/SDL.h" 1 ># 30 "show_dialog.hpp" 2 > > > > >namespace gui >{ > >extern const int ButtonHPadding; >extern const int ButtonVPadding; > >bool in_dialog(); > >struct dialog_manager : private cursor::setter, private font::floating_label_context, private halo::halo_hider { > dialog_manager(); > ~dialog_manager(); > >private: > bool reset_to; >}; > >void draw_dialog_frame(int x, int y, int w, int h, display& disp, const std::string* dialog_style=__null, surface_restorer* restorer=__null); > >void draw_dialog_background(int x, int y, int w, int h, display& disp, const std::string& dialog_style); > >void draw_rectangle(int x, int y, int w, int h, Uint32 colour, surface tg); > >void draw_solid_tinted_rectangle(int x, int y, int w, int h, > int r, int g, int b, > double alpha, surface target); > > > >SDL_Rect draw_dialog_title(int x, int y, display* disp, const std::string& text); ># 73 "show_dialog.hpp" >void draw_dialog(int x, int y, int w, int h, display& disp, const std::string& title, > const std::string* dialog_style=__null, std::vector<button*>* buttons=__null, > surface_restorer* restorer=__null, button* help_button=__null); > >class dialog_action >{ >public: > virtual ~dialog_action() {} > > virtual int do_action() = 0; > > enum { CONTINUE_DIALOG=-2 }; >}; > >class dialog_button_action >{ >public: > virtual ~dialog_button_action() {} > > enum RESULT { DELETE_ITEM, NO_EFFECT, CLOSE_DIALOG }; > > virtual RESULT button_pressed(int menu_selection) = 0; >}; > >struct dialog_button >{ > dialog_button(dialog_button_action* handler, const std::string& label) : handler(handler), label(label) > {} > > dialog_button_action* handler; > std::string label; >}; > >enum { ESCAPE_DIALOG=-3 }; > >enum DIALOG_TYPE { MESSAGE, OK_ONLY, YES_NO, OK_CANCEL, CANCEL_ONLY, CLOSE_ONLY, NULL_DIALOG }; > >struct check_item { > check_item(const std::string& label, bool checked) : label(label), checked(checked) {} > std::string label; > bool checked; >}; > > > >class preview_pane : public widget { >public: > preview_pane(display& disp) : widget(disp) {} > virtual ~preview_pane() { tooltips::clear_tooltips(location()); } > > virtual bool show_above() const { return false; } > virtual bool left_side() const = 0; > virtual void set_selection(int index) = 0; >}; > > >size_t text_to_lines(std::string& text, size_t max_length); > > > > >int show_dialog(display& screen, surface image, > const std::string& caption, const std::string& message, > DIALOG_TYPE type=MESSAGE, > const std::vector<std::string>* menu_items=__null, > const std::vector<preview_pane*>* preview_panes=__null, > const std::string& text_widget_label="", > std::string* text_widget_text=__null, > dialog_action* action=__null, > std::vector<check_item>* options=__null, int xloc=-1, int yloc=-1, > const std::string* dialog_style=__null, > std::vector<dialog_button>* buttons=__null, > const std::string& help_topic="" > ); > >network::connection network_data_dialog(display& disp, const std::string& msg, config& cfg, network::connection connection_num=0); > >void check_quit(display& screen); > >} ># 28 "display.cpp" 2 ># 1 "sound.hpp" 1 ># 18 "sound.hpp" >namespace sound { > >struct manager { > manager(); > ~manager(); >}; > >void play_music(const std::string& file); >void play_sound(const std::string& file); > >void set_music_volume(double vol); >void set_sound_volume(double vol); > >} ># 29 "display.cpp" 2 > > ># 1 "unit_display.hpp" 1 ># 10 "unit_display.hpp" >namespace unit_display >{ >bool unit_visible_on_path(display& disp, const gamemap& map, const std::vector<gamemap::location>& path, unit& u, const time_of_day& tod, const unit_map& units, const std::vector<team>& teams); > > >void move_unit(display& disp, const gamemap& map, const std::vector<gamemap::location>& path, unit& u, const time_of_day& tod, const unit_map& units, const std::vector<team>& teams); > > > >void unit_die(display& disp, const gamemap::location& loc, const unit& u); > > > > > > >bool unit_attack(display& disp, unit_map& units, const gamemap& map, > const gamemap::location& a, const gamemap::location& b, int damage, > const attack_type& attack); > >} ># 32 "display.cpp" 2 > > ># 1 "/usr/include/SDL/SDL_image.h" 1 ># 30 "/usr/include/SDL/SDL_image.h" ># 1 "/usr/include/SDL/SDL.h" 1 ># 31 "/usr/include/SDL/SDL_image.h" 2 ># 1 "/usr/include/SDL/begin_code.h" 1 ># 32 "/usr/include/SDL/SDL_image.h" 2 > > > >extern "C" { ># 46 "/usr/include/SDL/SDL_image.h" >extern SDL_Surface * IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type); > >extern SDL_Surface * IMG_Load(const char *file); >extern SDL_Surface * IMG_Load_RW(SDL_RWops *src, int freesrc); > > > > >extern int IMG_InvertAlpha(int on); > > >extern int IMG_isBMP(SDL_RWops *src); >extern int IMG_isPNM(SDL_RWops *src); >extern int IMG_isXPM(SDL_RWops *src); >extern int IMG_isXCF(SDL_RWops *src); >extern int IMG_isPCX(SDL_RWops *src); >extern int IMG_isGIF(SDL_RWops *src); >extern int IMG_isJPG(SDL_RWops *src); >extern int IMG_isTIF(SDL_RWops *src); >extern int IMG_isPNG(SDL_RWops *src); >extern int IMG_isLBM(SDL_RWops *src); > > >extern SDL_Surface * IMG_LoadBMP_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadPNM_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadXPM_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadXCF_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadPCX_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadGIF_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadJPG_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadTIF_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadPNG_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadTGA_RW(SDL_RWops *src); >extern SDL_Surface * IMG_LoadLBM_RW(SDL_RWops *src); > >extern SDL_Surface * IMG_ReadXPMFromArray(char **xpm); > > > > > > > >} > ># 1 "/usr/include/SDL/close_code.h" 1 ># 92 "/usr/include/SDL/SDL_image.h" 2 ># 35 "display.cpp" 2 > > ># 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 1 3 ># 46 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 47 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 3 > ># 1 "/usr/include/assert.h" 1 3 4 ># 65 "/usr/include/assert.h" 3 4 >extern "C" { > > >extern void __assert_fail (__const char *__assertion, __const char *__file, > unsigned int __line, __const char *__function) > throw () __attribute__ ((__noreturn__)); > > >extern void __assert_perror_fail (int __errnum, __const char *__file, > unsigned int __line, > __const char *__function) > throw () __attribute__ ((__noreturn__)); > > > > >extern void __assert (const char *__assertion, const char *__file, int __line) > throw () __attribute__ ((__noreturn__)); > > >} ># 49 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3/cassert" 2 3 ># 38 "display.cpp" 2 > > > > >std::map<gamemap::location,double> display::debugHighlights_; > >namespace { > const int MinZoom = 36; > const int DefaultZoom = 72; > const int MaxZoom = 200; > > const size_t SideBarGameStatus_x = 16; > const size_t SideBarGameStatus_y = 220; > > const SDL_Rect empty_rect = {0,0,0,0}; >} > >display::display(unit_map& units, CVideo& video, const gamemap& map, > const gamestatus& status, const std::vector<team>& t, const config& theme_cfg, > const config& built_terrains) : > screen_(video), xpos_(0), ypos_(0), > zoom_(DefaultZoom), map_(map), units_(units), > minimap_(__null), redrawMinimap_(false), > pathsList_(__null), status_(status), > teams_(t), lastDraw_(0), drawSkips_(0), > invalidateAll_(true), invalidateUnit_(true), > invalidateGameStatus_(true), panelsDrawn_(false), > currentTeam_(0), activeTeam_(0), hideEnergy_(false), > deadAmount_(0.0), advancingAmount_(0.0), updatesLocked_(0), > turbo_(false), grid_(false), sidebarScaling_(1.0), > theme_(theme_cfg,screen_area()), builder_(built_terrains, map), > first_turn_(true), in_game_(false), map_labels_(*this,map), > tod_hex_mask1(__null), tod_hex_mask2(__null), diagnostic_label_(0), > help_string_(0) >{ > if(non_interactive()) > updatesLocked_++; > > std::fill(reportRects_,reportRects_+reports::NUM_REPORTS,empty_rect); > > image::set_zoom(zoom_); > > gameStatusRect_.w = 0; > unitDescriptionRect_.w = 0; > unitProfileRect_.w = 0; > > > flags_.reserve(teams_.size()); > for(size_t i = 0; i != teams_.size(); ++i) { > std::string flag; > if(teams_[i].flag().empty()) { > flag = game_config::flag_image; > std::string::size_type pos; > while((pos = flag.find("%d")) != std::string::npos) { > std::ostringstream s; > s << int(i+1); > flag.replace(pos, 2, s.str()); > } > } else { > flag = teams_[i].flag(); > } > > std::cerr << "Adding flag for team " << i << " from animation " << flag << "\n"; > flags_.push_back(animated<image::locator>(flag)); > flags_.back().start_animation(0, animated<image::locator>::INFINITE_CYCLES); > } > > > surface const disp(screen_.getSurface()); > SDL_Rect area = screen_area(); > SDL_FillRect(disp,&area,SDL_MapRGB(disp->format,0,0,0)); >} > >display::~display() >{ > > prune_chat_messages(true); >} > >Uint32 display::rgb(Uint8 red, Uint8 green, Uint8 blue) >{ > return 0xFF000000 | (red << 16) | (green << 8) | blue; >} > >void display::new_turn() >{ > const time_of_day& tod = status_.get_time_of_day(); > > if(!turbo() && !first_turn_) { > image::set_image_mask(""); > > const time_of_day& old_tod = status_.get_previous_time_of_day(); > > if(old_tod.image_mask != tod.image_mask) { > const surface old_mask(image::get_image(old_tod.image_mask,image::UNMASKED)); > const surface new_mask(image::get_image(tod.image_mask,image::UNMASKED)); > > const int niterations = 10; > const int frame_time = 30; > const int starting_ticks = SDL_GetTicks(); > for(int i = 0; i != niterations; ++i) { > > if(old_mask != __null) { > const double proportion = 1.0 - double(i)/double(niterations); > tod_hex_mask1.assign(adjust_surface_alpha(old_mask,proportion)); > } > > if(new_mask != __null) { > const double proportion = double(i)/double(niterations); > tod_hex_mask2.assign(adjust_surface_alpha(new_mask,proportion)); > } > > invalidate_all(); > draw(); > > const int cur_ticks = SDL_GetTicks(); > const int wanted_ticks = starting_ticks + i*frame_time; > if(cur_ticks < wanted_ticks) { > SDL_Delay(wanted_ticks - cur_ticks); > } > } > } > > tod_hex_mask1.assign(__null); > tod_hex_mask2.assign(__null); > } > > first_turn_ = false; > > image::set_colour_adjustment(tod.red,tod.green,tod.blue); > image::set_image_mask(tod.image_mask); >} > >void display::adjust_colours(int r, int g, int b) >{ > const time_of_day& tod = status_.get_time_of_day(); > image::set_colour_adjustment(tod.red+r,tod.green+g,tod.blue+b); >} > >gamemap::location display::hide_unit(const gamemap::location& loc, bool hide_energy) >{ > const gamemap::location res = hiddenUnit_; > hiddenUnit_ = loc; > hideEnergy_ = hide_energy; > return res; >} > >int display::x() const { return screen_.getx(); } >int display::mapx() const { return x() - 140; } >int display::y() const { return screen_.gety(); } > >const SDL_Rect& display::map_area() const >{ > return theme_.main_map_location(screen_area()); >} > >const SDL_Rect& display::minimap_area() const >{ > return theme_.mini_map_location(screen_area()); >} > >SDL_Rect display::screen_area() const >{ > const SDL_Rect res = {0,0,x(),y()}; > return res; >} > >void display::select_hex(gamemap::location hex) >{ > if(team_valid() && teams_[currentTeam_].fogged(hex.x,hex.y)) { > return; > } > > invalidate(selectedHex_); > selectedHex_ = hex; > invalidate(selectedHex_); > invalidate_unit(); >} > >void display::highlight_hex(gamemap::location hex) >{ > const int has_unit = units_.count(mouseoverHex_) + units_.count(hex); > > invalidate(mouseoverHex_); > mouseoverHex_ = hex; > invalidate(mouseoverHex_); > invalidate_game_status(); > > if(has_unit) > invalidate_unit(); >} > >gamemap::location display::hex_clicked_on(int xclick, int yclick) >{ > const SDL_Rect& rect = map_area(); > if(point_in_rect(xclick,yclick,rect) == false) { > return gamemap::location(); > } > > xclick -= rect.x; > yclick -= rect.y; > > const int tile_width = hex_width(); > > const int xtile = (xpos_ + xclick)/tile_width; > const int ytile = (ypos_ + yclick - (is_odd(xtile) ? zoom_/2 : 0))/zoom_; > > return gamemap::location(xtile,ytile); >} > >int display::get_location_x(const gamemap::location& loc) const >{ > return map_area().x + loc.x*hex_width() - xpos_; >} > >int display::get_location_y(const gamemap::location& loc) const >{ > return map_area().y + loc.y*zoom_ - ypos_ + (is_odd(loc.x) ? zoom_/2 : 0); >} > >void display::get_visible_hex_bounds(gamemap::location &topleft, gamemap::location &bottomright) const >{ > const SDL_Rect& rect = map_area(); > const int tile_width = hex_width(); > > topleft.x = xpos_ / tile_width; > topleft.y = (ypos_ - (is_odd(topleft.x) ? zoom_/2 : 0)) / zoom_; > > bottomright.x = (xpos_ + rect.w) / tile_width; > bottomright.y = ((ypos_ + rect.h) - (is_odd(bottomright.x) ? zoom_/2 : 0)) / zoom_; > > if(topleft.x > -1) > topleft.x--; > if(topleft.y > -1) > topleft.y--; > if(bottomright.x < map_.x()) > bottomright.x++; > if(bottomright.y < map_.y()) > bottomright.y++; >} > >gamemap::location display::minimap_location_on(int x, int y) >{ > const SDL_Rect rect = minimap_area(); > > if(x < rect.x || y < rect.y || > x >= rect.x + rect.w || y >= rect.y + rect.h) { > return gamemap::location(); > } > > const double xdiv = double(rect.w) / double(map_.x()); > const double ydiv = double(rect.h) / double(map_.y()); > > return gamemap::location(int((x - rect.x)/xdiv),int((y-rect.y)/ydiv)); >} > >void display::scroll(int xmove, int ymove) >{ > const int orig_x = xpos_; > const int orig_y = ypos_; > xpos_ += xmove; > ypos_ += ymove; > bounds_check_position(); > > > if(orig_x != xpos_ || orig_y != ypos_) { > map_labels_.scroll(orig_x - xpos_, orig_y - ypos_); > font::scroll_floating_labels(orig_x - xpos_, orig_y - ypos_); > invalidate_all(); > } >} > >int display::hex_size() const >{ > return zoom_; >} > >int display::hex_width() const >{ > return (zoom_*3)/4; >} > >double display::zoom(int amount) >{ > if(amount == 0 || !team_valid()) { > return double(zoom_)/double(DefaultZoom); > } > > const int orig_xpos = xpos_; > const int orig_ypos = ypos_; > > xpos_ /= zoom_; > ypos_ /= zoom_; > > const int orig_zoom = zoom_; > > zoom_ += amount; > if(zoom_ < MinZoom || zoom_ > MaxZoom) { > zoom_ = orig_zoom; > xpos_ = orig_xpos; > ypos_ = orig_ypos; > return double(zoom_)/double(DefaultZoom); > } > > xpos_ *= zoom_; > ypos_ *= zoom_; > > xpos_ += amount*2; > ypos_ += amount*2; > > const int prev_zoom = zoom_; > > bounds_check_position(); > > if(zoom_ != prev_zoom) { > xpos_ = orig_xpos; > ypos_ = orig_ypos; > zoom_ = orig_zoom; > return double(zoom_)/double(DefaultZoom); > } > > energy_bar_rects_.clear(); > > image::set_zoom(zoom_); > map_labels_.recalculate_labels(); > invalidate_all(); > > return double(zoom_)/double(DefaultZoom); >} > >void display::default_zoom() >{ > zoom(DefaultZoom - zoom_); >} > >void display::scroll_to_tile(int x, int y, SCROLL_TYPE scroll_type, bool check_fogged) >{ > if(update_locked() || (check_fogged && fogged(x,y))) > return; > > const gamemap::location loc(x,y); > > if(map_.on_board(loc) == false) > return; > > const int xpos = get_location_x(loc); > const int ypos = get_location_y(loc); > > const int speed = preferences::scroll_speed()*2; > > const SDL_Rect& area = map_area(); > const int desiredxpos = area.w/2 - zoom_/2; > const int desiredypos = area.h/2 - zoom_/2; > > const int xmove = xpos - desiredxpos; > const int ymove = ypos - desiredypos; > > int num_moves = (abs(xmove) > abs(ymove) ? abs(xmove):abs(ymove))/speed; > > if(scroll_type == WARP || turbo()) > num_moves = 1; > > for(int i = 0; i != num_moves; ++i) { > events::pump(); > > > if((i%4) != 0 && i != num_moves-1 && turbo()) { > continue; > } > > scroll(xmove/num_moves,ymove/num_moves); > draw(); > } > > invalidate_all(); > draw(); >} > >void display::scroll_to_tiles(int x1, int y1, int x2, int y2, > SCROLL_TYPE scroll_type, bool check_fogged) >{ > const gamemap::location loc1(x1,y1), loc2(x2,y2); > const int xpos1 = get_location_x(loc1); > const int ypos1 = get_location_y(loc1); > const int xpos2 = get_location_x(loc2);; > const int ypos2 = get_location_y(loc2);; > > const int diffx = abs(xpos1 - xpos2); > const int diffy = abs(ypos1 - ypos2); > > if(diffx > map_area().w/hex_width() || diffy > map_area().h/zoom_) { > scroll_to_tile(x1,y1,scroll_type,check_fogged); > } else { > scroll_to_tile((x1+x2)/2,(y1+y2)/2,scroll_type,check_fogged); > } >} > >void display::bounds_check_position() >{ > const int min_zoom1 = map_area().w/((map_.x()*3)/4); > const int min_zoom2 = map_area().h/map_.y(); > const int min_zoom = maximum<int>(min_zoom1,min_zoom2); > > const int orig_zoom = zoom_; > > if(zoom_ < min_zoom) { > zoom_ = min_zoom; > } > > if(zoom_ > MaxZoom) { > zoom_ = MaxZoom; > } > > const int tile_width = hex_width(); > > const int xend = tile_width*map_.x() + tile_width/3; > const int yend = zoom_*map_.y() + zoom_/2; > > if(xpos_ + map_area().w > xend) > xpos_ -= xpos_ + map_area().w - xend; > > if(ypos_ + map_area().h > yend) > ypos_ -= ypos_ + map_area().h - yend; > > if(xpos_ < 0) > xpos_ = 0; > > if(ypos_ < 0) > ypos_ = 0; > > if(zoom_ != orig_zoom) > image::set_zoom(zoom_); >} > >void display::redraw_everything() >{ > if(update_locked() || teams_.empty()) > return; > > bounds_check_position(); > > for(size_t n = 0; n != reports::NUM_REPORTS; ++n) { > reportRects_[n] = empty_rect; > reportSurfaces_[n].assign(__null); > reports_[n] = reports::report(); > } > > tooltips::clear_tooltips(); > > theme_.set_resolution(screen_area()); > > if(buttons_.empty() == false) { > create_buttons(); > } > > panelsDrawn_ = false; > > map_labels_.recalculate_labels(); > > invalidate_all(); > draw(true,true); >} > >namespace { > >void draw_panel(display& disp, const theme::panel& panel, std::vector<gui::button>& buttons) >{ > scope_logger scope_logging_object__("draw panel");; > surface surf(image::get_image(panel.image(),image::UNSCALED)); > > const SDL_Rect screen = disp.screen_area(); > SDL_Rect& loc = panel.location(screen); > if(surf->w != loc.w || surf->h != loc.h) { > surf.assign(scale_surface(surf,loc.w,loc.h)); > } > > disp.blit_surface(loc.x,loc.y,surf); > update_rect(loc); > > for(std::vector<gui::button>::iterator b = buttons.begin(); b != buttons.end(); ++b) { > if(rects_overlap(b->location(),loc)) { > b->set_dirty(true); > } > } >} > >void draw_label(display& disp, surface target, const theme::label& label) >{ > scope_logger scope_logging_object__("draw label");; > > const std::string& text = label.text(); > const std::string& icon = label.icon(); > SDL_Rect& loc = label.location(disp.screen_area()); > > if(icon.empty() == false) { > surface surf(image::get_image(icon,image::UNSCALED)); > if(surf->w != loc.w || surf->h != loc.h) { > surf.assign(scale_surface(surf,loc.w,loc.h)); > } > > SDL_UpperBlit(surf,__null,target,&loc); > > if(text.empty() == false) { > tooltips::add_tooltip(loc,text); > } > } else if(text.empty() == false) { > font::draw_text(&disp,loc,label.font_size(),font::NORMAL_COLOUR,text,loc.x,loc.y); > } > > > update_rect(loc); >} > >} > >void display::draw(bool update,bool force) >{ > bool changed = false; > > > invalidate_animations(); > > if(!panelsDrawn_) { > surface const screen(screen_.getSurface()); > > const std::vector<theme::panel>& panels = theme_.panels(); > for(std::vector<theme::panel>::const_iterator p = panels.begin(); p != panels.end(); ++p) { > draw_panel(*this,*p,buttons_); > } > > const std::vector<theme::label>& labels = theme_.labels(); > for(std::vector<theme::label>::const_iterator i = labels.begin(); i != labels.end(); ++i) { > draw_label(*this,screen,*i); > } > > > std::fill(reports_,reports_+sizeof(reports_)/sizeof(*reports_),reports::report()); > invalidateGameStatus_ = true; > panelsDrawn_ = true; > > changed = true; > } > > if(invalidateAll_ && !map_.empty()) { > gamemap::location topleft; > gamemap::location bottomright; > get_visible_hex_bounds(topleft, bottomright); > for(int x = topleft.x; x <= bottomright.x; ++x) > for(int y = topleft.y; y <= bottomright.y; ++y) > draw_tile(x,y); > invalidateAll_ = false; > > redrawMinimap_ = true; > changed = true; > } else if(!map_.empty()) { > if(!invalidated_.empty()) > changed = true; > > for(std::set<gamemap::location>::const_iterator it = > invalidated_.begin(); it != invalidated_.end(); ++it) { > draw_tile(it->x,it->y); > } > > invalidated_.clear(); > } > > if(redrawMinimap_) { > redrawMinimap_ = false; > const SDL_Rect area = minimap_area(); > draw_minimap(area.x,area.y,area.w,area.h); > changed = true; > } > > > if(!map_.empty()) { > draw_sidebar(); > changed = true; > } > > prune_chat_messages(); > > const int max_skips = 5; > const int time_between_draws = 20; > const int current_time = SDL_GetTicks(); > const int wait_time = lastDraw_ + time_between_draws - current_time; > > > > SDL_Delay(maximum<int>(10,wait_time)); > > if(update) { > lastDraw_ = SDL_GetTicks(); > > if(wait_time >= 0 || drawSkips_ >= max_skips || force) { > if(changed) > update_display(); > } else { > drawSkips_++; > } > } >} > >void display::update_display() >{ > if(updatesLocked_ > 0) > return; > > screen_.flip(); >} > >void display::draw_sidebar() >{ > if(teams_.empty()) > return; > > if(invalidateUnit_) { > > > std::map<gamemap::location,unit>::const_iterator i = > find_visible_unit(units_,mouseoverHex_, > map_, > status_.get_time_of_day().lawful_bonus, > teams_,teams_[viewing_team()]); > > if(i == units_.end() || fogged(i->first.x,i->first.y)) { > i = find_visible_unit(units_,selectedHex_, > map_, > status_.get_time_of_day().lawful_bonus, > teams_,teams_[viewing_team()]); > } > > if(i != units_.end() && !fogged(i->first.x,i->first.y)) > for(size_t r = reports::UNIT_REPORTS_BEGIN; r != reports::UNIT_REPORTS_END; ++r) > draw_report(reports::TYPE(r)); > > invalidateUnit_ = false; > } > > if(invalidateGameStatus_) { > draw_game_status(mapx()+SideBarGameStatus_x,SideBarGameStatus_y); > invalidateGameStatus_ = false; > } >} > >void display::draw_game_status(int x, int y) >{ > if(teams_.empty()) > return; > > for(size_t r = reports::STATUS_REPORTS_BEGIN; r != reports::STATUS_REPORTS_END; ++r) { > draw_report(reports::TYPE(r)); > } >} > >void display::draw_image_for_report(surface& img, surface& surf, SDL_Rect& rect) >{ > SDL_Rect visible_area = get_non_transperant_portion(img); > SDL_Rect target = rect; > if(visible_area.x != 0 || visible_area.y != 0 || visible_area.w != img->w || visible_area.h != img->h) { > if(visible_area.w == 0 || visible_area.h == 0) { > return; > } > > if(visible_area.w > rect.w || visible_area.h > rect.h) { > img.assign(get_surface_portion(img,visible_area)); > img.assign(scale_surface(img,rect.w,rect.h)); > visible_area.x = 0; > visible_area.y = 0; > visible_area.w = img->w; > visible_area.h = img->h; > } else { > target.x = rect.x + (rect.w - visible_area.w)/2; > target.y = rect.y + (rect.h - visible_area.h)/2; > target.w = visible_area.w; > target.h = visible_area.h; > } > > SDL_UpperBlit(img,&visible_area,screen_.getSurface(),&target); > } else { > if(img->w != rect.w || img->h != rect.h) { > img.assign(scale_surface(img,rect.w,rect.h)); > } > > SDL_UpperBlit(img,__null,screen_.getSurface(),&target); > } >} > >void display::draw_report(reports::TYPE report_num) >{ > if(!team_valid()) > return; > > const theme::status_item* const item = theme_.get_status_item(reports::report_name(report_num)); > if(item != __null) { > > reports::report report = reports::generate_report(report_num,map_, > units_, teams_, > teams_[viewing_team()], > currentTeam_+1,activeTeam_+1, > selectedHex_,mouseoverHex_,status_,observers_); > > SDL_Rect& rect = reportRects_[report_num]; > const SDL_Rect& new_rect = item->location(screen_area()); > > > if(rect == new_rect && reports_[report_num] == report) { > return; > } > > reports_[report_num] = report; > > surface& surf = reportSurfaces_[report_num]; > > if(surf != __null) { > SDL_UpperBlit(surf,__null,screen_.getSurface(),&rect); > update_rect(rect); > } > > > if(new_rect != rect || surf == __null) { > surf.assign(__null); > rect = new_rect; > > > > > if(rect.w > 0 && rect.h > 0) { > surf.assign(get_surface_portion(screen_.getSurface(),rect)); > if(reportSurfaces_[report_num] == __null) { > std::cerr << "Could not backup background for report!\n"; > } > } > > update_rect(rect); > } > > tooltips::clear_tooltips(rect); > > SDL_Rect area = rect; > > int x = rect.x, y = rect.y; > if(!report.empty()) { > > > std::string str = item->prefix(); > if(str.empty() == false) { > report.insert(report.begin(), reports::element(str,"",report.begin()->tooltip)); > } > str = item->postfix(); > if(str.empty() == false) { > report.push_back(reports::element(str,"",report.end()->tooltip)); > } > > > size_t tallest = 0; > for(reports::report::iterator i = report.begin(); i != report.end(); ++i) { > if(i->text.empty() == false) { > > area = font::draw_text(this,rect,item->font_size(),font::NORMAL_COLOUR,i->text,x,y); > if(area.h > tallest) tallest = area.h; > if(i->text[i->text.size() - 1] == '\n') { > x = rect.x; > y += tallest; > tallest = 0; > } else { > x += area.w; > } > } else if(i->image.empty() == false) { > > surface img(image::get_image(i->image,image::UNSCALED)); > > if(img == __null) { > std::cerr << "could not find image for report: '" << i->image << "'\n"; > continue; > } > > area.x = x; > area.y = y; > area.w = minimum<int>(rect.w + rect.x - x, img->w); > area.h = minimum<int>(rect.h + rect.y - y, img->h); > draw_image_for_report(img,surf,area); > > if(area.h > tallest) tallest = area.h; > x += area.w; > } else { > > continue; > } > if(i->tooltip.empty() == false) { > tooltips::add_tooltip(area,i->tooltip); > } > } > } > } else { > reportSurfaces_[report_num].assign(__null); > } >} > >void display::draw_unit_details(int x, int y, const gamemap::location& loc, > const unit& u, SDL_Rect& description_rect, int profilex, int profiley, > SDL_Rect* clip_rect) >{ > if(teams_.empty()) > return; > > tooltips::clear_tooltips(description_rect); > > SDL_Rect clipRect = clip_rect != __null ? *clip_rect : screen_area(); > > const surface background(image::get_image(game_config::rightside_image,image::UNSCALED)); > const surface background_bot(image::get_image(game_config::rightside_image_bot,image::UNSCALED)); > > if(background == __null || background_bot == __null) > return; > > surface const screen(screen_.getSurface()); > > if(description_rect.w > 0 && description_rect.x >= mapx()) { > SDL_Rect srcrect = description_rect; > srcrect.y -= background->h; > srcrect.x -= mapx(); > > SDL_UpperBlit(background_bot,&srcrect,screen,&description_rect); > update_rect(description_rect); > } > > std::string status = string_table["healthy"]; > if(map_.on_board(loc) && > u.invisible(map_.underlying_terrain(map_[loc.x][loc.y]), > status_.get_time_of_day().lawful_bonus,loc, > units_,teams_)) { > status = font::GOOD_TEXT + string_table["invisible"]; > } > > if(u.has_flag("slowed")) { > status = font::BAD_TEXT + string_table["slowed"]; > } > > if(u.has_flag("poisoned")) { > status = font::BAD_TEXT + string_table["poisoned"]; > } > > std::stringstream details; > details << font::LARGE_TEXT << u.description() << "\n" > << font::LARGE_TEXT << u.type().language_name() > << "\n" << font::SMALL_TEXT << "(" << string_table["level"] << " " > << u.type().level() << ")\n" > << status << "\n" > << translate_string(unit_type::alignment_description(u.type().alignment())) > << "\n" > << u.traits_description() << "\n"; > > const std::vector<std::string>& abilities = u.type().abilities(); > for(std::vector<std::string>::const_iterator a = abilities.begin(); a != abilities.end(); ++a) { > details << translate_string_default("ability_" + *a, *a) << "\n"; > } > > > if(u.hitpoints() <= u.max_hitpoints()/3) > details << font::BAD_TEXT; > else if(u.hitpoints() > 2*(u.max_hitpoints()/3)) > details << font::GOOD_TEXT; > > details << string_table["hp"] << ": " << u.hitpoints() > << "/" << u.max_hitpoints() << "\n"; > > if(u.can_advance() == false) { > details << string_table["xp"] << ": " << u.experience() << "/-"; > } else { > > > if(u.max_experience() - u.experience() < game_config::kill_experience) { > details << font::GOOD_TEXT; > } > > details << string_table["xp"] << ": " << u.experience() << "/" << u.max_experience(); > } > > details << "\n" > << string_table["moves"] << ": " << u.movement_left() << "/" > << u.total_movement() > << "\n"; > > const std::vector<attack_type>& attacks = u.attacks(); > for(std::vector<attack_type>::const_iterator at_it = attacks.begin(); > at_it != attacks.end(); ++at_it) { > > const std::string& lang_weapon = string_table["weapon_name_" + at_it->name()]; > const std::string& lang_type = string_table["weapon_type_" + at_it->type()]; > const std::string& lang_special = string_table["weapon_special_" + at_it->special()]; > details << "\n" > << (lang_weapon.empty() ? at_it->name():lang_weapon) << " (" > << (lang_type.empty() ? at_it->type():lang_type) << ")\n" > << (lang_special.empty() ? at_it->special():lang_special)<<"\n" > << at_it->damage() << "-" << at_it->num_attacks() << " -- " > << (at_it->range() == attack_type::SHORT_RANGE ? > string_table["short_range"] : > string_table["long_range"]); > > if(at_it->hexes() > 1) { > details << " (" << at_it->hexes() << ")"; > } > > details << "\n\n"; > } > > > > const size_t font_size = this->y() >= 700 ? 13 : 10; > > description_rect = font::draw_text(this,clipRect,font_size,font::NORMAL_COLOUR, > details.str(),x,y); > > update_rect(description_rect); > > y += description_rect.h; > > const surface profile(image::get_image(u.type().image(),image::UNSCALED)); > > if(profile == __null) > return; > > > { > const size_t profilew = 50; > const size_t profileh = 50; > SDL_Rect srcrect = { (profile->w-profilew)/2,(profile->h-profileh)/2, > profilew,profileh }; > SDL_Rect dstrect = srcrect; > dstrect.x = profilex; > dstrect.y = profiley; > SDL_UpperBlit(profile,&srcrect,video().getSurface(),&dstrect); > > update_rect(profilex,profiley,profilew,profileh); > } >} > >void display::draw_minimap(int x, int y, int w, int h) >{ > const surface surf(get_minimap(w,h)); > if(surf == __null) > return; > > SDL_Rect minimap_location = {x,y,w,h}; > > clip_rect_setter clip_setter(video().getSurface(),minimap_location); > > SDL_Rect loc = minimap_location; > SDL_UpperBlit(surf,__null,video().getSurface(),&loc); > > for(unit_map::const_iterator u = units_.begin(); u != units_.end(); ++u) { > if(fogged(u->first.x,u->first.y) || > (teams_[currentTeam_].is_enemy(u->second.side()) && > u->second.invisible(map_.underlying_terrain(map_[u->first.x][u->first.y]), > status_.get_time_of_day().lawful_bonus,u->first, > units_,teams_))) > continue; > > const int side = u->second.side(); > const SDL_Color& col = team::get_side_colour(side); > const Uint32 mapped_col = SDL_MapRGB(video().getSurface()->format,col.r,col.g,col.b); > SDL_Rect rect = {x + (u->first.x*w)/map_.x(), > y + (u->first.y*h)/map_.y(), > w/map_.x(), h/map_.y() }; > SDL_FillRect(video().getSurface(),&rect,mapped_col); > } > > const double xscaling = double(surf->w)/double(map_.x()); > const double yscaling = double(surf->h)/double(map_.y()); > > const int xbox = static_cast<int>(xscaling*xpos_/(zoom_*0.75)); > const int ybox = static_cast<int>(yscaling*ypos_/zoom_); > > const int wbox = static_cast<int>(xscaling*map_area().w/(zoom_*0.75) - xscaling) + 3; > const int hbox = static_cast<int>(yscaling*map_area().h/zoom_ - yscaling) + 3; > > const Uint32 boxcolour = SDL_MapRGB(surf->format,0xFF,0xFF,0xFF); > const surface screen(screen_.getSurface()); > > gui::draw_rectangle(x+xbox,y+ybox,wbox,hbox,boxcolour,screen); > > update_rect(minimap_location); >} > >gamemap::TERRAIN display::get_terrain_on(int palx, int paly, int x, int y) >{ > const int height = 37; > if(y < paly || x < palx) > return 0; > > const std::vector<gamemap::TERRAIN>& terrains=map_.get_terrain_precedence(); > if(static_cast<size_t>(y) > paly+terrains.size()*height) > return 0; > > const size_t index = (y - paly)/height; > if(index >= terrains.size()) > return 0; > > return terrains[index]; >} > >void display::draw_halo_on_tile(int x, int y) >{ > const gamemap::location loc(x,y); > int xpos = get_location_x(loc); > int ypos = get_location_y(loc); > > const halo_map::iterator halo_it = haloes_.find(loc); > > > const unit_map::const_iterator it = fogged(x,y) ? units_.end() : units_.find(gamemap::location(x,y)); > > if(halo_it != haloes_.end() && it == units_.end()) { > halo::remove(halo_it->second); > haloes_.erase(halo_it); > } else if(halo_it == haloes_.end() && it != units_.end()) { > const std::string& halo = it->second.type().image_halo(); > if(halo.empty() == false) { > haloes_.insert(std::pair<gamemap::location,int>(loc,halo::add(xpos+hex_width()/2,ypos+hex_size()/2,halo))); > } > } >} > >void display::draw_unit_on_tile(int x, int y, surface unit_image_override, > double highlight_ratio, Uint32 blend_with) >{ > if(updatesLocked_) > return; > > const gamemap::location loc(x,y); > int xpos = get_location_x(loc); > int ypos = get_location_y(loc); > > > const unit_map::const_iterator it = units_.find(loc); > > if(it == units_.end()) { > return; > } > > SDL_Rect clip_rect = map_area(); > > if(xpos > clip_rect.x + clip_rect.w || ypos > clip_rect.y + clip_rect.h || > xpos + zoom_ < clip_rect.x || ypos + zoom_ < clip_rect.y) { > return; > } > > surface const dst(screen_.getSurface()); > > clip_rect_setter set_clip_rect(dst,clip_rect); > > double unit_energy = 0.0; > > SDL_Color energy_colour = {0,0,0,0}; > > surface unit_image(unit_image_override); > > const std::string* energy_file = __null; > > const unit& u = it->second; > > if(loc != hiddenUnit_ || !hideEnergy_) { > if(unit_image == __null) { > unit_image.assign(image::get_image(it->second.image(),it->second.stone() ? image::GREYED : image::SCALED)); > } > > if(unit_image == __null) { > return; > } > > const int unit_move = it->second.movement_left(); > const int unit_total_move = it->second.total_movement(); > > if(size_t(u.side()) != currentTeam_+1) { > if(team_valid() && > teams_[currentTeam_].is_enemy(it->second.side())) { > energy_file = &game_config::enemy_energy_image; > } else { > energy_file = &game_config::ally_energy_image; > } > } else { > if(activeTeam_ == currentTeam_ && unit_move == unit_total_move && !it->second.user_end_turn()) { > energy_file = &game_config::unmoved_energy_image; > } else if(activeTeam_ == currentTeam_ && unit_can_move(loc,units_,map_,teams_) && !it->second.user_end_turn()) { > energy_file = &game_config::partmoved_energy_image; > } else { > energy_file = &game_config::moved_energy_image; > } > } > > (static_cast<void> (__builtin_expect (!!(energy_file != __null), 1) ? 0 : (__assert_fail ("energy_file != __null", "display.cpp", 1128, __PRETTY_FUNCTION__), 0))); > if(energy_file == __null) { > std::cerr << "energy file is NULL\n"; > return; > } > > if(highlight_ratio == 1.0) > highlight_ratio = it->second.alpha(); > > if(u.invisible(map_.underlying_terrain(map_[x][y]), > status_.get_time_of_day().lawful_bonus,loc, > units_,teams_) && > highlight_ratio > 0.5) { > highlight_ratio = 0.5; > } > > if(loc == selectedHex_ && highlight_ratio == 1.0) { > highlight_ratio = 1.5; > blend_with = rgb(255,255,255); > } > > if(u.max_hitpoints() > 0) { > unit_energy = double(u.hitpoints())/double(u.max_hitpoints()); > } > > if(unit_energy < 0.33) { > energy_colour.r = 200; > energy_colour.g = 0; > energy_colour.b = 0; > } else if(unit_energy < 0.66) { > energy_colour.r = 200; > energy_colour.g = 200; > energy_colour.b = 0; > } else { > energy_colour.r = 0; > energy_colour.g = 200; > energy_colour.b = 0; > } > > if(u.facing_left() == false) { > > > > > if(unit_image_override == __null) { > unit_image.assign(image::reverse_image(unit_image)); > } else { > unit_image.assign(flip_surface(unit_image)); > } > } > } > > if(deadUnit_ == gamemap::location(x,y)) { > highlight_ratio = deadAmount_; > } > > if(unit_image == __null || fogged(x,y) || > (teams_[currentTeam_].is_enemy(it->second.side()) && > it->second.invisible(map_.underlying_terrain(map_[x][y]), > status_.get_time_of_day().lawful_bonus,loc, > units_,teams_))) { > return; > } > > const gamemap::TERRAIN terrain = map_.get_terrain(loc); > const int height_adjust = it->second.is_flying() ? 0 : int(map_.get_terrain_info(terrain).unit_height_adjust()*zoom()); > const double submerge = it->second.is_flying() ? 0.0 : map_.get_terrain_info(terrain).unit_submerge(); > > if(loc == advancingUnit_ && it != units_.end()) { > > > blend_with = it->second.type().alignment() == unit_type::CHAOTIC ? > rgb(16,16,16) : rgb(255,255,255); > highlight_ratio = advancingAmount_; > } else if(it->second.poisoned() && highlight_ratio == 1.0) { > > blend_with = rgb(0,255,0); > highlight_ratio = 0.75; > } > > if(loc != hiddenUnit_) { > surface ellipse_front(__null); > surface ellipse_back(__null); > > if(preferences::show_side_colours()) { > const char* const selected = selectedHex_ == loc ? "selected-" : ""; > char buf[50]; > sprintf(buf,"misc/%sellipse-%d-top.png",selected,team::get_side_colour_index(it->second.side())); > ellipse_back.assign(image::get_image(buf)); > sprintf(buf,"misc/%sellipse-%d-bottom.png",selected,team::get_side_colour_index(it->second.side())); > ellipse_front.assign(image::get_image(buf)); > } > > draw_unit(xpos,ypos - height_adjust,unit_image,false, > highlight_ratio,blend_with,submerge,ellipse_back,ellipse_front); > } > > const double bar_alpha = highlight_ratio < 1.0 && blend_with == 0 ? highlight_ratio : 1.0; > if(energy_file != __null) { > draw_bar(*energy_file,xpos,ypos,(u.max_hitpoints()*2)/3,unit_energy,energy_colour,bar_alpha); > } > > if(u.experience() > 0 && u.can_advance()) { > const double filled = double(u.experience())/double(u.max_experience()); > const int level = maximum<int>(u.type().level(),1); > const SDL_Color normal_colour = {02,153,255,0}, near_advance_colour = {255,255,255,0}; > const bool near_advance = u.max_experience() - u.experience() <= game_config::kill_experience*level; > const SDL_Color colour = near_advance ? near_advance_colour : normal_colour; > > draw_bar("misc/bar-energy-enemy.png",xpos+5,ypos,u.max_experience()/(level*2),filled,colour,bar_alpha); > } > > const std::vector<std::string>& overlays = it->second.overlays(); > for(std::vector<std::string>::const_iterator ov = overlays.begin(); ov != overlays.end(); ++ov) { > const surface img(image::get_image(*ov)); > if(img != __null) { > draw_unit(xpos,ypos,img); > } > } >} > >void display::draw_bar(const std::string& image, int xpos, int ypos, size_t height, double filled, const SDL_Color& col, double alpha) >{ > filled = minimum<double>(maximum<double>(filled,0.0),1.0); > > surface surf(image::get_image(image,image::SCALED,image::NO_ADJUST_COLOUR)); > surface unmoved_surf(image::get_image("misc/bar-energy-unmoved.png",image::SCALED,image::NO_ADJUST_COLOUR)); > if(surf == __null || unmoved_surf == __null) { > return; > } > > const SDL_Rect& bar_loc = calculate_energy_bar(unmoved_surf); > if(height > bar_loc.h) { > height = bar_loc.h; > } > > if(alpha != 1.0) { > surf.assign(adjust_surface_alpha(surf,alpha)); > if(surf == __null) { > return; > } > } > > const size_t skip_rows = bar_loc.h - height; > > SDL_Rect top = {0,0,surf->w,bar_loc.y}; > SDL_Rect bot = {0,bar_loc.y+skip_rows,surf->w,0}; > bot.h = surf->w - bot.y; > > blit_surface(xpos,ypos,surf,&top); > blit_surface(xpos,ypos+top.h,surf,&bot); > > const size_t unfilled = (const size_t)(height*(1.0 - filled)); > > if(unfilled < height && alpha >= 0.3) { > SDL_Rect filled_area = {xpos+bar_loc.x,ypos+bar_loc.y+unfilled,bar_loc.w,height-unfilled}; > const Uint32 colour = SDL_MapRGB(video().getSurface()->format,col.r,col.g,col.b); > SDL_FillRect(video().getSurface(),&filled_area,colour); > } >} > >void display::draw_terrain_on_tile(int x, int y, image::TYPE image_type, ADJACENT_TERRAIN_TYPE type) >{ > > const gamemap::location loc(x,y); > int xpos = int(get_location_x(loc)); > int ypos = int(get_location_y(loc)); > > SDL_Rect clip_rect = map_area(); > > if(xpos > clip_rect.x + clip_rect.w || ypos > clip_rect.y + clip_rect.h || > xpos + zoom_ < clip_rect.x || ypos + zoom_ < clip_rect.y) { > return; > } > > surface const dst(screen_.getSurface()); > > clip_rect_setter set_clip_rect(dst,clip_rect); > > const std::vector<surface>& images = get_terrain_images(x,y,image_type,type); > > std::vector<surface>::const_iterator itor; > for(itor = images.begin(); itor != images.end(); ++itor) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(*itor,__null,dst,&dstrect); > } >} > >void display::draw_tile(int x, int y, surface unit_image, double alpha, Uint32 blend_to) >{ > if(updatesLocked_) > return; > > draw_halo_on_tile(x,y); > > const gamemap::location loc(x,y); > int xpos = int(get_location_x(loc)); > int ypos = int(get_location_y(loc)); > > SDL_Rect clip_rect = map_area(); > > if(xpos >= clip_rect.x + clip_rect.w || ypos >= clip_rect.y + clip_rect.h || > xpos + zoom_ < clip_rect.x || ypos + zoom_ < clip_rect.y) { > return; > } > > surface const dst(screen_.getSurface()); > > clip_rect_setter set_clip_rect(dst,clip_rect); > > const bool is_shrouded = shrouded(x,y); > gamemap::TERRAIN terrain = gamemap::VOID_TERRAIN; > > if(!is_shrouded) { > terrain = map_.get_terrain(loc); > } > > image::TYPE image_type = image::SCALED; > > const time_of_day& tod = status_.get_time_of_day(); > const time_of_day& tod_at = timeofday_at(status_,units_,loc); > std::string mask = tod_at.image_mask; > if(tod_hex_mask1 != __null || tod_hex_mask2 != __null || tod.image_mask != tod_at.image_mask) { > image_type = image::UNMASKED; > mask = tod_at.image_mask; > } > > > if(pathsList_ != __null && pathsList_->routes.find(gamemap::location(x,y)) == > pathsList_->routes.end()) { > image_type = image::GREYED; > } > > unit_map::iterator un = find_visible_unit(units_, loc, map_, > status_.get_time_of_day().lawful_bonus,teams_,teams_[currentTeam_]); > > if(loc == mouseoverHex_ && map_.on_board(mouseoverHex_) || > loc == selectedHex_ && (un != units_.end())) { > image_type = image::BRIGHTENED; > } > else if (highlighted_locations_.find(loc) != highlighted_locations_.end()) { > image_type = image::SEMI_BRIGHTENED; > } > > if(!is_shrouded) { > draw_terrain_on_tile(x,y,image_type,ADJACENT_BACKGROUND); > > surface flag(get_flag(terrain,x,y)); > if(flag != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(flag,__null,dst,&dstrect); > } > > typedef overlay_map::const_iterator Itor; > > for(std::pair<Itor,Itor> overlays = overlays_.equal_range(loc); > overlays.first != overlays.second; ++overlays.first) { > > surface overlay_surface(image::get_image(overlays.first->second.image,image_type)); > > > > > if(overlay_surface != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(overlay_surface,__null,dst,&dstrect); > } > } > draw_footstep(loc,xpos,ypos); > } else { > > surface surface(image::get_image("terrain/void.png")); > > if(surface == __null) { > std::cerr << "Could not get void surface!\n"; > return; > } > > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(surface,__null,dst,&dstrect); > } > > draw_unit_on_tile(x,y,unit_image,alpha,blend_to); > > if(!shrouded(x,y)) { > draw_terrain_on_tile(x,y,image_type,ADJACENT_FOREGROUND); > } > > if(fogged(x,y) && shrouded(x,y) == false) { > const surface fog_surface(image::get_image("terrain/fog.png")); > if(fog_surface != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(fog_surface,__null,dst,&dstrect); > } > } > > if(!shrouded(x,y)) { > draw_terrain_on_tile(x,y,image_type,ADJACENT_FOGSHROUD); > } > > > if(tod_hex_mask1 != __null || tod_hex_mask2 != __null) { > if(tod_hex_mask1 != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(tod_hex_mask1,__null,dst,&dstrect); > } > > if(tod_hex_mask2 != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(tod_hex_mask2,__null,dst,&dstrect); > } > } else if(mask != "") { > const surface img(image::get_image(mask,image::UNMASKED,image::NO_ADJUST_COLOUR)); > if(img != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(img,__null,dst,&dstrect); > } > } > > if(grid_) { > surface grid_surface(image::get_image("terrain/grid.png")); > if(grid_surface != __null) { > SDL_Rect dstrect = { xpos, ypos, 0, 0 }; > SDL_UpperBlit(grid_surface,__null,dst,&dstrect); > } > } > > if(game_config::debug && debugHighlights_.count(gamemap::location(x,y))) { > const surface cross(image::get_image(game_config::cross_image)); > if(cross != __null) > draw_unit(xpos,ypos,cross,false,debugHighlights_[loc],0); > } > > update_rect(xpos,ypos,zoom_,zoom_); >} > >void display::draw_footstep(const gamemap::location& loc, int xloc, int yloc) >{ > std::vector<gamemap::location>::const_iterator i = > std::find(route_.steps.begin(),route_.steps.end(),loc); > > if(i == route_.steps.begin() || i == route_.steps.end()) > return; > > const bool show_time = (i+1 == route_.steps.end()); > > const bool left_foot = is_even(i - route_.steps.begin()); > > > > > > if(i+1 == route_.steps.end() && i != route_.steps.begin()) > --i; > > gamemap::location::DIRECTION direction = gamemap::location::NORTH; > > if(i+1 != route_.steps.end()) { > for(int n = 0; n != 6; ++n) { > direction = gamemap::location::DIRECTION(n); > if(i->get_direction(direction) == *(i+1)) { > break; > } > } > } > > static const std::string left_nw(game_config::foot_left_nw); > static const std::string left_n(game_config::foot_left_n); > static const std::string right_nw(game_config::foot_right_nw); > static const std::string right_n(game_config::foot_right_n); > > const std::string* image_str = &left_nw; > > if(left_foot) { > if(direction == gamemap::location::NORTH || > direction == gamemap::location::SOUTH) { > image_str = &left_n; > } else { > image_str = &left_nw; > } > } else { > if(direction == gamemap::location::NORTH || > direction == gamemap::location::SOUTH) { > image_str = &right_n; > } else { > image_str = &right_nw; > } > } > > surface image(image::get_image(*image_str)); > if(image == __null) { > std::cerr << "Could not find image: " << *image_str << "\n"; > return; > } > > const bool hflip = !(direction > gamemap::location::NORTH && > direction <= gamemap::location::SOUTH); > const bool vflip = (direction >= gamemap::location::SOUTH_EAST && > direction <= gamemap::location::SOUTH_WEST); > > if(!hflip) { > image.assign(image::reverse_image(image)); > } > > draw_unit(xloc,yloc,image,vflip,0.5); > > if(show_time && route_.move_left > 0 && route_.move_left < 10) { > > gamemap::TERRAIN terrain = map_.get_terrain(loc); > > const SDL_Rect& rect = map_area(); > std::string str(1,'x'); > str[0] = '1' + route_.move_left; > const SDL_Rect& text_area = font::text_area(str,18); > const int x = xloc + zoom_/2 - text_area.w/2; > const int y = yloc + zoom_/2 - text_area.h/2; > > > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x-1,y-1); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x-1,y); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x-1,y+1); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x,y-1); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x+1,y-1); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x+1,y); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x+1,y+1); > font::draw_text(this,rect,18,font::DARK_COLOUR,str,x,y+1); > font::draw_text(this,rect,18,font::YELLOW_COLOUR,str,x,y); > } >} > >namespace { >const std::string& get_direction(size_t n) >{ > const static std::string dirs[6] = {"-n","-ne","-se","-s","-sw","-nw"}; > return dirs[n >= sizeof(dirs)/sizeof(*dirs) ? 0 : n]; >} > >} > >bool angle_is_northern(size_t n) >{ > const static bool results[6] = {true,false,false,false,false,true}; > return results[n >= sizeof(results)/sizeof(*results) ? 0 : n]; >} > >const std::string& get_angle_direction(size_t n) >{ > const static std::string dirs[6] = {"-ne","-e","-se","-sw","-w","-nw"}; > return dirs[n >= sizeof(dirs)/sizeof(*dirs) ? 0 : n]; >} > >std::vector<std::string> display::get_fog_shroud_graphics(const gamemap::location& loc) >{ > std::vector<std::string> res; > > gamemap::location adjacent[6]; > bool transition_done[6]; > get_adjacent_tiles(loc,adjacent); > int tiles[6]; > static const int terrain_types[] = { gamemap::FOGGED, gamemap::VOID_TERRAIN, 0 }; > > for(int i = 0; i != 6; ++i) { > if(shrouded(adjacent[i].x,adjacent[i].y)) > tiles[i] = gamemap::VOID_TERRAIN; > else if(!fogged(loc.x,loc.y) && fogged(adjacent[i].x,adjacent[i].y)) > tiles[i] = gamemap::FOGGED; > else > tiles[i] = 0; > } > > > for(const int * terrain = terrain_types; *terrain != 0; terrain ++) { > > int start; > for(start = 0; start != 6; ++start) { > if(tiles[start] != *terrain) > break; > } > > if(start == 6) { > start = 0; > } > > > for(int i = (start+1)%6, n = 0; i != start && n != 6; ++n) { > if(tiles[i] == *terrain) { > std::ostringstream stream; > std::string name; > > > > > stream << "terrain/" << map_.get_terrain_info(*terrain).default_image(); > > for(int n = 0; *terrain == tiles[i] && n != 6; i = (i+1)%6, ++n) { > stream << get_direction(i); > > if(!image::exists(stream.str() + ".png")) { > > > if(name.empty()) > i = (i+1)%6; > break; > } else { > name = stream.str(); > } > } > > if(!name.empty()) { > res.push_back(name + ".png"); > } > } else { > i = (i+1)%6; > } > } > } > > return res; >} > >std::vector<surface> display::get_terrain_images(int x, int y, image::TYPE image_type, ADJACENT_TERRAIN_TYPE terrain_type) >{ > std::vector<surface> res; > gamemap::location loc(x,y); > > if(terrain_type == ADJACENT_FOGSHROUD) { > const std::vector<std::string> fog_shroud = get_fog_shroud_graphics(gamemap::location(x,y)); > > if(!fog_shroud.empty()) { > for(std::vector<std::string>::const_iterator it = fog_shroud.begin(); it != fog_shroud.end(); ++it) { > image::locator image(*it); > > > const surface surface(get_terrain(image,image_type,x,y)); > if(surface != __null) { > res.push_back(surface); > } > } > > } > > return res; > } > > const time_of_day& tod = status_.get_time_of_day(); > > > terrain_builder::ADJACENT_TERRAIN_TYPE builder_terrain_type = > (terrain_type == ADJACENT_FOREGROUND ? > terrain_builder::ADJACENT_FOREGROUND : terrain_builder::ADJACENT_BACKGROUND); > const terrain_builder::imagelist* const terrains = builder_.get_terrain_at(loc, > tod.id, builder_terrain_type); > > if(terrains != __null) { > for(std::vector<animated<image::locator> >::const_iterator it = terrains->begin(); it != terrains->end(); ++it) { > > image::locator image = it->get_current_frame(); > > > const surface surface(get_terrain(image,image_type,x,y)); > if(surface != __null) { > res.push_back(surface); > } > } > } > > return res; >} > >surface display::get_terrain(const image::locator& image, image::TYPE image_type, > int x, int y) >{ ># 1718 "display.cpp" > const surface im(image::get_image(image, image_type)); > if(im == __null) { > return im; > } ># 1738 "display.cpp" > return im; >} > >surface display::get_flag(gamemap::TERRAIN terrain, int x, int y) >{ > const bool village = map_.is_village(terrain); > if(!village) > return surface(__null); > > const gamemap::location loc(x,y); > > for(size_t i = 0; i != teams_.size(); ++i) { > if(teams_[i].owns_village(loc) && (!fogged(x,y) || !shrouded(x,y) && !teams_[currentTeam_].is_enemy(i+1))) { > return image::get_image(flags_[i].get_current_frame()); > } > } > > return surface(__null); >} > >void display::blit_surface(int x, int y, surface surf, SDL_Rect* srcrect, SDL_Rect* clip_rect) >{ > const surface target(video().getSurface()); > SDL_Rect dst = {x,y,0,0}; > > if(clip_rect != __null) { > const clip_rect_setter clip_setter(target,*clip_rect); > SDL_UpperBlit(surf,srcrect,target,&dst); > } else { > SDL_UpperBlit(surf,srcrect,target,&dst); > } >} > >surface display::get_minimap(int w, int h) >{ > if(minimap_ != __null && (minimap_->w != w || minimap_->h != h)) { > minimap_ = __null; > } > > if(minimap_ == __null) { > minimap_ = image::getMinimap(w,h,map_, > status_.get_time_of_day().lawful_bonus, > team_valid() ? &teams_[currentTeam_] : __null); > } > > return minimap_; >} > >void display::set_paths(const paths* paths_list) >{ > pathsList_ = paths_list; > invalidate_all(); >} > >void display::invalidate_route() >{ > for(std::vector<gamemap::location>::const_iterator i = route_.steps.begin(); > i != route_.steps.end(); ++i) { > invalidate(*i); > } >} > >void display::set_route(const paths::route* route) >{ > invalidate_route(); > > if(route != __null) > route_ = *route; > else > route_.steps.clear(); > > invalidate_route(); >} > >void display::remove_footstep(const gamemap::location& loc) >{ > const std::vector<gamemap::location>::iterator it = std::find(route_.steps.begin(),route_.steps.end(),loc); > if(it != route_.steps.end()) > route_.steps.erase(it); >} > >void display::float_label(const gamemap::location& loc, const std::string& text, > int red, int green, int blue) >{ > if(preferences::show_floating_labels() == false || fogged(loc.x,loc.y)) { > return; > } > > const SDL_Color colour = {red,green,blue,255}; > font::add_floating_label(text,24,colour,get_location_x(loc)+zoom_/2,get_location_y(loc), > 0,-2,60,screen_area(),font::CENTER_ALIGN,__null,0,font::ANCHOR_LABEL_MAP); >} > >void display::draw_unit(int x, int y, surface image, > bool upside_down, double alpha, Uint32 blendto, double submerged, > surface ellipse_back, surface ellipse_front) >{ > > > const int ellipse_ypos = y - (ellipse_back != __null && submerged > 0.0 ? int(double(ellipse_back->h)*submerged) : 0)/2; > if(ellipse_back != __null) { > draw_unit(x,ellipse_ypos,ellipse_back,false,blendto == 0 ? alpha : 1.0,0,0.0); > } > > surface surf(image); > > if(upside_down) { > surf.assign(flop_surface(surf)); > } > > if(alpha > 1.0) { > surf.assign(brighten_image(surf,alpha)); > } else if(alpha != 1.0 && blendto != 0) { > surf.assign(blend_surface(surf,1.0-alpha,blendto)); > } else if(alpha != 1.0) { > surf.assign(adjust_surface_alpha(surf,alpha)); > } > > if(surf == __null) { > std::cerr << "surface lost...\n"; > return; > } > > const int submerge_height = minimum<int>(surf->h,maximum<int>(0,int(surf->h*(1.0-submerged)))); > > SDL_Rect clip_rect = map_area(); > SDL_Rect srcrect = {0,0,surf->w,submerge_height}; > blit_surface(x,y,surf,&srcrect,&clip_rect); > > if(submerge_height != surf->h) { > surf.assign(adjust_surface_alpha(surf,0.2)); > > srcrect.y = submerge_height; > srcrect.h = surf->h-submerge_height; > y += submerge_height; > > blit_surface(x,y,surf,&srcrect,&clip_rect); > } > > if(ellipse_front != __null) { > draw_unit(x,ellipse_ypos,ellipse_front,false,blendto == 0 ? alpha : 1.0,0,0.0); > } >} > >struct is_energy_colour { > bool operator()(Uint32 colour) const { return (colour&0xFF000000) < 0x50000000 && > (colour&0x00FF0000) > 0x00990000 && > (colour&0x0000FF00) > 0x00009900 && > (colour&0x000000FF) > 0x00000099; } >}; > >const SDL_Rect& display::calculate_energy_bar(surface surf) >{ > const std::map<surface,SDL_Rect>::const_iterator i = energy_bar_rects_.find(surf); > if(i != energy_bar_rects_.end()) { > return i->second; > } > > int first_row = -1, last_row = -1, first_col = -1, last_col = -1; > > surface image(make_neutral_surface(surf)); > > surface_lock image_lock(image); > const Uint32* const begin = image_lock.pixels(); > > for(int y = 0; y != image->h; ++y) { > const Uint32* const i1 = begin + image->w*y; > const Uint32* const i2 = i1 + image->w; > const Uint32* const itor = std::find_if(i1,i2,is_energy_colour()); > const int count = std::count_if(itor,i2,is_energy_colour()); > > if(itor != i2) { > if(first_row == -1) > first_row = y; > > first_col = itor - i1; > last_col = first_col + count; > last_row = y; > } > } > > const SDL_Rect res = {first_col,first_row,last_col-first_col,last_row+1-first_row}; > energy_bar_rects_.insert(std::pair<surface,SDL_Rect>(surf,res)); > return calculate_energy_bar(surf); >} > >void display::invalidate(const gamemap::location& loc) >{ > if(!invalidateAll_) { > invalidated_.insert(loc); > } >} > >void display::invalidate_all() >{ > invalidateAll_ = true; > invalidated_.clear(); > update_rect(map_area()); >} > >void display::invalidate_unit() >{ > invalidateUnit_ = true; >} > >void display::invalidate_animations() >{ > bool animate_flags = false; > gamemap::location topleft; > gamemap::location bottomright; > get_visible_hex_bounds(topleft, bottomright); > > for(int i = 0; i < flags_.size(); ++i) { > flags_[i].update_current_frame(); > if(flags_[i].frame_changed()) > animate_flags = true; > } > > for(int x = topleft.x; x <= bottomright.x; ++x) { > for(int y = topleft.y; y <= bottomright.y; ++y) { > gamemap::location loc(x,y); > if(builder_.update_animation(loc) || (map_.is_village(loc) && animate_flags)) > invalidated_.insert(loc); > } > } >} > >void display::recalculate_minimap() >{ > if(minimap_ != __null) { > minimap_.assign(__null); > } > > redraw_minimap(); >} > >void display::redraw_minimap() >{ > redrawMinimap_ = true; >} > >void display::invalidate_game_status() >{ > invalidateGameStatus_ = true; >} > >void display::add_overlay(const gamemap::location& loc, const std::string& img, const std::string& halo) >{ > const int halo_handle = halo::add(get_location_x(loc)+hex_size()/2,get_location_y(loc)+hex_size()/2,halo); > const overlay item(img,halo,halo_handle); > overlays_.insert(overlay_map::value_type(loc,item)); >} > >void display::remove_overlay(const gamemap::location& loc) >{ > typedef overlay_map::const_iterator Itor; > std::pair<Itor,Itor> itors = overlays_.equal_range(loc); > while(itors.first != itors.second) { > halo::remove(itors.first->second.halo_handle); > ++itors.first; > } > > overlays_.erase(loc); >} > >void display::write_overlays(config& cfg) const >{ > for(overlay_map::const_iterator i = overlays_.begin(); i != overlays_.end(); ++i) { > config& item = cfg.add_child("item"); > i->first.write(item); > item["image"] = i->second.image; > item["halo"] = i->second.halo; > } >} > >void display::set_team(size_t team) >{ > (static_cast<void> (__builtin_expect (!!(team < teams_.size()), 1) ? 0 : (__assert_fail ("team < teams_.size()", "display.cpp", 2015, __PRETTY_FUNCTION__), 0))); > currentTeam_ = team; > > labels().recalculate_shroud(); >} > >void display::set_playing_team(size_t team) >{ > (static_cast<void> (__builtin_expect (!!(team < teams_.size()), 1) ? 0 : (__assert_fail ("team < teams_.size()", "display.cpp", 2023, __PRETTY_FUNCTION__), 0))); > activeTeam_ = team; > invalidate_game_status(); >} > >void display::set_advancing_unit(const gamemap::location& loc, double amount) >{ > advancingUnit_ = loc; > advancingAmount_ = amount; > draw_tile(loc.x,loc.y); >} > >void display::lock_updates(bool value) >{ > if(value == true) > ++updatesLocked_; > else > --updatesLocked_; >} > >bool display::update_locked() const >{ > return updatesLocked_ > 0; >} > >bool display::turbo() const >{ > bool res = turbo_; > if(keys_[SDLK_LSHIFT] || keys_[SDLK_RSHIFT]) > res = !res; > > return res; >} > >void display::set_turbo(bool turbo) >{ > turbo_ = turbo; >} > >void display::set_grid(bool grid) >{ > grid_ = grid; >} > >void display::debug_highlight(const gamemap::location& loc, double amount) >{ > (static_cast<void> (__builtin_expect (!!(game_config::debug), 1) ? 0 : (__assert_fail ("game_config::debug", "display.cpp", 2069, __PRETTY_FUNCTION__), 0))); > debugHighlights_[loc] += amount; >} > >void display::clear_debug_highlights() >{ > debugHighlights_.clear(); >} > >bool display::shrouded(int x, int y) const >{ > if(team_valid()) > return teams_[currentTeam_].shrouded(x,y); > else > return false; >} > >bool display::fogged(int x, int y) const >{ > if(team_valid()) > return teams_[currentTeam_].fogged(x,y); > else > return false; >} > >bool display::team_valid() const >{ > return currentTeam_ < teams_.size(); >} > >size_t display::viewing_team() const >{ > return currentTeam_; >} > >size_t display::playing_team() const >{ > return activeTeam_; >} > >const theme& display::get_theme() const >{ > return theme_; >} > >const theme::menu* display::menu_pressed(int mousex, int mousey, bool button_pressed) >{ > > for(std::vector<gui::button>::iterator i = buttons_.begin(); i != buttons_.end(); ++i) { > if(i->pressed()) { > const size_t index = i - buttons_.begin(); > (static_cast<void> (__builtin_expect (!!(index < theme_.menus().size()), 1) ? 0 : (__assert_fail ("index < theme_.menus().size()", "display.cpp", 2120, __PRETTY_FUNCTION__), 0))); > return &theme_.menus()[index]; > } > } > > return __null; >} > >void display::begin_game() >{ > in_game_ = true; > create_buttons(); >} > >int display::set_help_string(const std::string& str) >{ > font::remove_floating_label(help_string_); > > const SDL_Color colour = {0x0,0x00,0x00,0x77}; > help_string_ = font::add_floating_label(str,18,font::NORMAL_COLOUR,x()/2,y(),0.0,0.0,-1,screen_area(),font::CENTER_ALIGN,&colour,5); > const SDL_Rect& rect = font::get_floating_label_rect(help_string_); > font::move_floating_label(help_string_,0.0,-double(rect.h)); > return help_string_; >} > >void display::clear_help_string(int handle) >{ > if(handle == help_string_) { > font::remove_floating_label(handle); > help_string_ = 0; > } >} > >void display::clear_all_help_strings() >{ > clear_help_string(help_string_); >} > >void display::create_buttons() >{ > buttons_.clear(); > > const std::vector<theme::menu>& buttons = theme_.menus(); > for(std::vector<theme::menu>::const_iterator i = buttons.begin(); i != buttons.end(); ++i) { > gui::button b(*this,i->title(),gui::button::TYPE_PRESS,i->image()); > const SDL_Rect& loc = i->location(screen_area()); > b.set_location(loc.x,loc.y); > > if(rects_overlap(b.location(),map_area())) { > b.set_volatile(true); > } > > buttons_.push_back(b); > } >} > >void display::add_observer(const std::string& name) >{ > observers_.insert(name); >} > >void display::remove_observer(const std::string& name) >{ > observers_.erase(name); >} > >namespace { > const int max_chat_messages = 6; > const int chat_message_border = 5; > const int chat_message_x = 10; > const int chat_message_y = 10; > const SDL_Color chat_message_colour = {200,200,200,200}; > const SDL_Color chat_message_bg = {0,0,0,100}; >} > >void display::add_chat_message(const std::string& speaker, int side, const std::string& message, display::MESSAGE_TYPE type) >{ > std::string msg = message; > gui::text_to_lines(msg,80); > > int ypos = chat_message_x; > for(std::vector<chat_message>::const_iterator m = chat_messages_.begin(); m != chat_messages_.end(); ++m) { > ypos += font::get_floating_label_rect(m->handle).h; > } > > std::stringstream str; > if(type == MESSAGE_PUBLIC) { > str << "<" << speaker << ">"; > } else { > str << "*" << speaker << "*"; > } > > std::stringstream message_str; > message_str << msg; > > SDL_Color speaker_colour = {255,255,255,255}; > if(side >= 1) { > speaker_colour = team::get_side_colour(side); > } > > const SDL_Rect rect = map_area(); > const int speaker_handle = font::add_floating_label(str.str(),12,speaker_colour, > rect.x+chat_message_x,rect.y+ypos, > 0,0,-1,rect,font::LEFT_ALIGN,&chat_message_bg,chat_message_border); > > const int message_handle = font::add_floating_label(message_str.str(),12,chat_message_colour, > rect.x + chat_message_x + font::get_floating_label_rect(speaker_handle).w,rect.y+ypos, > 0,0,-1,rect,font::LEFT_ALIGN,&chat_message_bg,chat_message_border); > > chat_messages_.push_back(chat_message(speaker_handle,message_handle)); > > prune_chat_messages(); >} > >void display::clear_chat_messages() >{ > prune_chat_messages(true); >} > >void display::prune_chat_messages(bool remove_all) >{ > const int message_ttl = remove_all ? 0 : 1200000; > if(chat_messages_.empty() == false && (chat_messages_.front().created_at+message_ttl < SDL_GetTicks() || chat_messages_.size() > max_chat_messages)) { > const int movement = font::get_floating_label_rect(chat_messages_.front().handle).h; > > font::remove_floating_label(chat_messages_.front().speaker_handle); > font::remove_floating_label(chat_messages_.front().handle); > chat_messages_.erase(chat_messages_.begin()); > > for(std::vector<chat_message>::const_iterator i = chat_messages_.begin(); i != chat_messages_.end(); ++i) { > font::move_floating_label(i->speaker_handle,0,-movement); > font::move_floating_label(i->handle,0,-movement); > } > > prune_chat_messages(remove_all); > } >} > >void display::set_diagnostic(const std::string& msg) >{ > if(diagnostic_label_ != 0) { > font::remove_floating_label(diagnostic_label_); > diagnostic_label_ = 0; > } > > if(msg != "") { > diagnostic_label_ = font::add_floating_label(msg,16,font::YELLOW_COLOUR,300.0,50.0,0.0,0.0,-1,map_area()); > } >} > >void display::rebuild_terrain(const gamemap::location &loc) { > builder_.rebuild_terrain(loc); >} > >void display::rebuild_all() { > builder_.rebuild_all(); >} > >void display::add_highlighted_loc(const gamemap::location &hex) { > > > if (highlighted_locations_.find(hex) == highlighted_locations_.end()) { > highlighted_locations_.insert(hex); > invalidate(hex); > } >} > >void display::clear_highlighted_locs() { > for (std::set<gamemap::location>::const_iterator it = highlighted_locations_.begin(); > it != highlighted_locations_.end(); it++) { > invalidate(*it); > } > highlighted_locations_.clear(); >} > >void display::remove_highlighted_loc(const gamemap::location &hex) { > std::set<gamemap::location>::iterator it = highlighted_locations_.find(hex); > > if (it != highlighted_locations_.end()) { > highlighted_locations_.erase(it); > invalidate(hex); > } >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 63100
: 39115