1. # 1 "./test.cpp"
  2. # 1 "<command-line>"
  3. # 1 "./test.cpp"
  4. # 1 "/usr/include/c++/4.7/iostream" 1 3
  5. # 37 "/usr/include/c++/4.7/iostream" 3
  6.        
  7. # 38 "/usr/include/c++/4.7/iostream" 3
  8.  
  9. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h" 1 3
  10. # 171 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h" 3
  11. namespace std
  12. {
  13.   typedef long unsigned int size_t;
  14.   typedef long int ptrdiff_t;
  15.  
  16.  
  17.  
  18.  
  19. }
  20. # 414 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h" 3
  21. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/os_defines.h" 1 3
  22. # 40 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/os_defines.h" 3
  23. # 1 "/usr/include/features.h" 1 3 4
  24. # 323 "/usr/include/features.h" 3 4
  25. # 1 "/usr/include/x86_64-linux-gnu/bits/predefs.h" 1 3 4
  26. # 324 "/usr/include/features.h" 2 3 4
  27. # 356 "/usr/include/features.h" 3 4
  28. # 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
  29. # 359 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
  30. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  31. # 360 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
  32. # 357 "/usr/include/features.h" 2 3 4
  33. # 388 "/usr/include/features.h" 3 4
  34. # 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4
  35.  
  36.  
  37.  
  38. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  39. # 5 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4
  40.  
  41.  
  42.  
  43.  
  44. # 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4
  45. # 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4
  46. # 389 "/usr/include/features.h" 2 3 4
  47. # 41 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/os_defines.h" 2 3
  48. # 415 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h" 2 3
  49.  
  50.  
  51. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/cpu_defines.h" 1 3
  52. # 418 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h" 2 3
  53. # 40 "/usr/include/c++/4.7/iostream" 2 3
  54. # 1 "/usr/include/c++/4.7/ostream" 1 3
  55. # 38 "/usr/include/c++/4.7/ostream" 3
  56.        
  57. # 39 "/usr/include/c++/4.7/ostream" 3
  58.  
  59. # 1 "/usr/include/c++/4.7/ios" 1 3
  60. # 37 "/usr/include/c++/4.7/ios" 3
  61.        
  62. # 38 "/usr/include/c++/4.7/ios" 3
  63.  
  64. # 1 "/usr/include/c++/4.7/iosfwd" 1 3
  65. # 38 "/usr/include/c++/4.7/iosfwd" 3
  66.        
  67. # 39 "/usr/include/c++/4.7/iosfwd" 3
  68.  
  69.  
  70. # 1 "/usr/include/c++/4.7/bits/stringfwd.h" 1 3
  71. # 39 "/usr/include/c++/4.7/bits/stringfwd.h" 3
  72.        
  73. # 40 "/usr/include/c++/4.7/bits/stringfwd.h" 3
  74.  
  75.  
  76.  
  77. namespace std __attribute__ ((__visibility__ ("default")))
  78. {
  79.  
  80.  
  81.   template<typename _Alloc>
  82.     class allocator;
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.   template<class _CharT>
  91.     struct char_traits;
  92.  
  93.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  94.            typename _Alloc = allocator<_CharT> >
  95.     class basic_string;
  96.  
  97.   template<> struct char_traits<char>;
  98.  
  99.   typedef basic_string<char> string;
  100.  
  101.  
  102.   template<> struct char_traits<wchar_t>;
  103.  
  104.   typedef basic_string<wchar_t> wstring;
  105. # 85 "/usr/include/c++/4.7/bits/stringfwd.h" 3
  106.  
  107. }
  108. # 42 "/usr/include/c++/4.7/iosfwd" 2 3
  109. # 1 "/usr/include/c++/4.7/bits/postypes.h" 1 3
  110. # 40 "/usr/include/c++/4.7/bits/postypes.h" 3
  111.        
  112. # 41 "/usr/include/c++/4.7/bits/postypes.h" 3
  113.  
  114. # 1 "/usr/include/c++/4.7/cwchar" 1 3
  115. # 41 "/usr/include/c++/4.7/cwchar" 3
  116.        
  117. # 42 "/usr/include/c++/4.7/cwchar" 3
  118.  
  119.  
  120.  
  121.  
  122. # 1 "/usr/include/wchar.h" 1 3 4
  123. # 37 "/usr/include/wchar.h" 3 4
  124. # 1 "/usr/include/stdio.h" 1 3 4
  125. # 45 "/usr/include/stdio.h" 3 4
  126. struct _IO_FILE;
  127.  
  128.  
  129.  
  130. typedef struct _IO_FILE FILE;
  131.  
  132.  
  133.  
  134.  
  135.  
  136. # 65 "/usr/include/stdio.h" 3 4
  137. typedef struct _IO_FILE __FILE;
  138. # 38 "/usr/include/wchar.h" 2 3 4
  139.  
  140.  
  141. # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdarg.h" 1 3 4
  142. # 40 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdarg.h" 3 4
  143. typedef __builtin_va_list __gnuc_va_list;
  144. # 41 "/usr/include/wchar.h" 2 3 4
  145.  
  146. # 1 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 1 3 4
  147. # 43 "/usr/include/wchar.h" 2 3 4
  148. # 52 "/usr/include/wchar.h" 3 4
  149. # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h" 1 3 4
  150. # 213 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h" 3 4
  151. typedef long unsigned int size_t;
  152. # 354 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h" 3 4
  153. typedef unsigned int wint_t;
  154. # 53 "/usr/include/wchar.h" 2 3 4
  155. # 83 "/usr/include/wchar.h" 3 4
  156. typedef struct
  157. {
  158.   int __count;
  159.   union
  160.   {
  161.  
  162.     unsigned int __wch;
  163.  
  164.  
  165.  
  166.     char __wchb[4];
  167.   } __value;
  168. } __mbstate_t;
  169. # 104 "/usr/include/wchar.h" 3 4
  170.  
  171.  
  172. typedef __mbstate_t mbstate_t;
  173.  
  174.  
  175.  
  176. # 129 "/usr/include/wchar.h" 3 4
  177. extern "C" {
  178.  
  179.  
  180.  
  181.  
  182. struct tm;
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192. extern wchar_t *wcscpy (wchar_t *__restrict __dest,
  193.    __const wchar_t *__restrict __src) throw ();
  194.  
  195. extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
  196.     __const wchar_t *__restrict __src, size_t __n)
  197.      throw ();
  198.  
  199.  
  200. extern wchar_t *wcscat (wchar_t *__restrict __dest,
  201.    __const wchar_t *__restrict __src) throw ();
  202.  
  203. extern wchar_t *wcsncat (wchar_t *__restrict __dest,
  204.     __const wchar_t *__restrict __src, size_t __n)
  205.      throw ();
  206.  
  207.  
  208. extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
  209.      throw () __attribute__ ((__pure__));
  210.  
  211. extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
  212.      throw () __attribute__ ((__pure__));
  213.  
  214.  
  215.  
  216.  
  217. extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
  218.  
  219.  
  220. extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
  221.    size_t __n) throw ();
  222.  
  223.  
  224.  
  225. # 1 "/usr/include/xlocale.h" 1 3 4
  226. # 28 "/usr/include/xlocale.h" 3 4
  227. typedef struct __locale_struct
  228. {
  229.  
  230.   struct __locale_data *__locales[13];
  231.  
  232.  
  233.   const unsigned short int *__ctype_b;
  234.   const int *__ctype_tolower;
  235.   const int *__ctype_toupper;
  236.  
  237.  
  238.   const char *__names[13];
  239. } *__locale_t;
  240.  
  241.  
  242. typedef __locale_t locale_t;
  243. # 178 "/usr/include/wchar.h" 2 3 4
  244.  
  245. extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
  246.     __locale_t __loc) throw ();
  247.  
  248. extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
  249.      size_t __n, __locale_t __loc) throw ();
  250.  
  251.  
  252.  
  253.  
  254.  
  255. extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();
  256.  
  257.  
  258.  
  259. extern size_t wcsxfrm (wchar_t *__restrict __s1,
  260.          __const wchar_t *__restrict __s2, size_t __n) throw ();
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269. extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
  270.         __locale_t __loc) throw ();
  271.  
  272.  
  273.  
  274.  
  275. extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
  276.     size_t __n, __locale_t __loc) throw ();
  277.  
  278.  
  279. extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__));
  280.  
  281.  
  282.  
  283.  
  284.  
  285. extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
  286.      throw () __asm ("wcschr") __attribute__ ((__pure__));
  287. extern "C++" __const wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
  288.      throw () __asm ("wcschr") __attribute__ ((__pure__));
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295. extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc)
  296.      throw () __asm ("wcsrchr") __attribute__ ((__pure__));
  297. extern "C++" __const wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
  298.      throw () __asm ("wcsrchr") __attribute__ ((__pure__));
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308. extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
  309.      throw () __attribute__ ((__pure__));
  310.  
  311.  
  312.  
  313.  
  314.  
  315. extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
  316.      throw () __attribute__ ((__pure__));
  317.  
  318.  
  319. extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
  320.      throw () __attribute__ ((__pure__));
  321.  
  322.  
  323. extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, __const wchar_t *__accept)
  324.      throw () __asm ("wcspbrk") __attribute__ ((__pure__));
  325. extern "C++" __const wchar_t *wcspbrk (__const wchar_t *__wcs,
  326.            __const wchar_t *__accept)
  327.      throw () __asm ("wcspbrk") __attribute__ ((__pure__));
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. extern "C++" wchar_t *wcsstr (wchar_t *__haystack, __const wchar_t *__needle)
  335.      throw () __asm ("wcsstr") __attribute__ ((__pure__));
  336. extern "C++" __const wchar_t *wcsstr (__const wchar_t *__haystack,
  337.           __const wchar_t *__needle)
  338.      throw () __asm ("wcsstr") __attribute__ ((__pure__));
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345. extern wchar_t *wcstok (wchar_t *__restrict __s,
  346.    __const wchar_t *__restrict __delim,
  347.    wchar_t **__restrict __ptr) throw ();
  348.  
  349.  
  350. extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__));
  351.  
  352.  
  353.  
  354.  
  355.  
  356. extern "C++" wchar_t *wcswcs (wchar_t *__haystack, __const wchar_t *__needle)
  357.      throw () __asm ("wcswcs") __attribute__ ((__pure__));
  358. extern "C++" __const wchar_t *wcswcs (__const wchar_t *__haystack,
  359.           __const wchar_t *__needle)
  360.      throw () __asm ("wcswcs") __attribute__ ((__pure__));
  361. # 303 "/usr/include/wchar.h" 3 4
  362. extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
  363.      throw () __attribute__ ((__pure__));
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370. extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n)
  371.      throw () __asm ("wmemchr") __attribute__ ((__pure__));
  372. extern "C++" __const wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c,
  373.            size_t __n)
  374.      throw () __asm ("wmemchr") __attribute__ ((__pure__));
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381. extern int wmemcmp (__const wchar_t *__restrict __s1,
  382.       __const wchar_t *__restrict __s2, size_t __n)
  383.      throw () __attribute__ ((__pure__));
  384.  
  385.  
  386. extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
  387.     __const wchar_t *__restrict __s2, size_t __n) throw ();
  388.  
  389.  
  390.  
  391. extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
  392.      throw ();
  393.  
  394.  
  395. extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();
  396.  
  397.  
  398.  
  399.  
  400.  
  401. extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
  402.      __const wchar_t *__restrict __s2, size_t __n)
  403.      throw ();
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410. extern wint_t btowc (int __c) throw ();
  411.  
  412.  
  413.  
  414. extern int wctob (wint_t __c) throw ();
  415.  
  416.  
  417.  
  418. extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__));
  419.  
  420.  
  421.  
  422. extern size_t mbrtowc (wchar_t *__restrict __pwc,
  423.          __const char *__restrict __s, size_t __n,
  424.          mbstate_t *__p) throw ();
  425.  
  426.  
  427. extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
  428.          mbstate_t *__restrict __ps) throw ();
  429.  
  430.  
  431. extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
  432.    mbstate_t *__restrict __ps) throw ();
  433. extern size_t mbrlen (__const char *__restrict __s, size_t __n,
  434.         mbstate_t *__restrict __ps) throw ();
  435.  
  436. # 403 "/usr/include/wchar.h" 3 4
  437.  
  438.  
  439.  
  440. extern size_t mbsrtowcs (wchar_t *__restrict __dst,
  441.     __const char **__restrict __src, size_t __len,
  442.     mbstate_t *__restrict __ps) throw ();
  443.  
  444.  
  445.  
  446. extern size_t wcsrtombs (char *__restrict __dst,
  447.     __const wchar_t **__restrict __src, size_t __len,
  448.     mbstate_t *__restrict __ps) throw ();
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455. extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
  456.      __const char **__restrict __src, size_t __nmc,
  457.      size_t __len, mbstate_t *__restrict __ps) throw ();
  458.  
  459.  
  460.  
  461. extern size_t wcsnrtombs (char *__restrict __dst,
  462.      __const wchar_t **__restrict __src,
  463.      size_t __nwc, size_t __len,
  464.      mbstate_t *__restrict __ps) throw ();
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471. extern int wcwidth (wchar_t __c) throw ();
  472.  
  473.  
  474.  
  475. extern int wcswidth (__const wchar_t *__s, size_t __n) throw ();
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482. extern double wcstod (__const wchar_t *__restrict __nptr,
  483.         wchar_t **__restrict __endptr) throw ();
  484.  
  485.  
  486.  
  487.  
  488.  
  489. extern float wcstof (__const wchar_t *__restrict __nptr,
  490.        wchar_t **__restrict __endptr) throw ();
  491. extern long double wcstold (__const wchar_t *__restrict __nptr,
  492.        wchar_t **__restrict __endptr) throw ();
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500. extern long int wcstol (__const wchar_t *__restrict __nptr,
  501.    wchar_t **__restrict __endptr, int __base) throw ();
  502.  
  503.  
  504.  
  505. extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
  506.       wchar_t **__restrict __endptr, int __base)
  507.      throw ();
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514. __extension__
  515. extern long long int wcstoll (__const wchar_t *__restrict __nptr,
  516.          wchar_t **__restrict __endptr, int __base)
  517.      throw ();
  518.  
  519.  
  520.  
  521. __extension__
  522. extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
  523.      wchar_t **__restrict __endptr,
  524.      int __base) throw ();
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531. __extension__
  532. extern long long int wcstoq (__const wchar_t *__restrict __nptr,
  533.         wchar_t **__restrict __endptr, int __base)
  534.      throw ();
  535.  
  536.  
  537.  
  538. __extension__
  539. extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
  540.            wchar_t **__restrict __endptr,
  541.            int __base) throw ();
  542. # 528 "/usr/include/wchar.h" 3 4
  543. extern long int wcstol_l (__const wchar_t *__restrict __nptr,
  544.      wchar_t **__restrict __endptr, int __base,
  545.      __locale_t __loc) throw ();
  546.  
  547. extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
  548.         wchar_t **__restrict __endptr,
  549.         int __base, __locale_t __loc) throw ();
  550.  
  551. __extension__
  552. extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
  553.     wchar_t **__restrict __endptr,
  554.     int __base, __locale_t __loc) throw ();
  555.  
  556. __extension__
  557. extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
  558.        wchar_t **__restrict __endptr,
  559.        int __base, __locale_t __loc)
  560.      throw ();
  561.  
  562. extern double wcstod_l (__const wchar_t *__restrict __nptr,
  563.    wchar_t **__restrict __endptr, __locale_t __loc)
  564.      throw ();
  565.  
  566. extern float wcstof_l (__const wchar_t *__restrict __nptr,
  567.          wchar_t **__restrict __endptr, __locale_t __loc)
  568.      throw ();
  569.  
  570. extern long double wcstold_l (__const wchar_t *__restrict __nptr,
  571.          wchar_t **__restrict __endptr,
  572.          __locale_t __loc) throw ();
  573.  
  574.  
  575.  
  576.  
  577. extern wchar_t *wcpcpy (wchar_t *__restrict __dest,
  578.    __const wchar_t *__restrict __src) throw ();
  579.  
  580.  
  581.  
  582. extern wchar_t *wcpncpy (wchar_t *__restrict __dest,
  583.     __const wchar_t *__restrict __src, size_t __n)
  584.      throw ();
  585. # 578 "/usr/include/wchar.h" 3 4
  586. extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw ();
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593. extern int fwide (__FILE *__fp, int __mode) throw ();
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600. extern int fwprintf (__FILE *__restrict __stream,
  601.        __const wchar_t *__restrict __format, ...)
  602.                                                            ;
  603.  
  604.  
  605.  
  606.  
  607. extern int wprintf (__const wchar_t *__restrict __format, ...)
  608.                                                            ;
  609.  
  610. extern int swprintf (wchar_t *__restrict __s, size_t __n,
  611.        __const wchar_t *__restrict __format, ...)
  612.      throw () ;
  613.  
  614.  
  615.  
  616.  
  617.  
  618. extern int vfwprintf (__FILE *__restrict __s,
  619.         __const wchar_t *__restrict __format,
  620.         __gnuc_va_list __arg)
  621.                                                            ;
  622.  
  623.  
  624.  
  625.  
  626. extern int vwprintf (__const wchar_t *__restrict __format,
  627.        __gnuc_va_list __arg)
  628.                                                            ;
  629.  
  630.  
  631. extern int vswprintf (wchar_t *__restrict __s, size_t __n,
  632.         __const wchar_t *__restrict __format,
  633.         __gnuc_va_list __arg)
  634.      throw () ;
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641. extern int fwscanf (__FILE *__restrict __stream,
  642.       __const wchar_t *__restrict __format, ...)
  643.                                                           ;
  644.  
  645.  
  646.  
  647.  
  648. extern int wscanf (__const wchar_t *__restrict __format, ...)
  649.                                                           ;
  650.  
  651. extern int swscanf (__const wchar_t *__restrict __s,
  652.       __const wchar_t *__restrict __format, ...)
  653.      throw () ;
  654. # 678 "/usr/include/wchar.h" 3 4
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. extern int vfwscanf (__FILE *__restrict __s,
  665.        __const wchar_t *__restrict __format,
  666.        __gnuc_va_list __arg)
  667.                                                           ;
  668.  
  669.  
  670.  
  671.  
  672. extern int vwscanf (__const wchar_t *__restrict __format,
  673.       __gnuc_va_list __arg)
  674.                                                           ;
  675.  
  676. extern int vswscanf (__const wchar_t *__restrict __s,
  677.        __const wchar_t *__restrict __format,
  678.        __gnuc_va_list __arg)
  679.      throw () ;
  680. # 734 "/usr/include/wchar.h" 3 4
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690. extern wint_t fgetwc (__FILE *__stream);
  691. extern wint_t getwc (__FILE *__stream);
  692.  
  693.  
  694.  
  695.  
  696.  
  697. extern wint_t getwchar (void);
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704. extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
  705. extern wint_t putwc (wchar_t __wc, __FILE *__stream);
  706.  
  707.  
  708.  
  709.  
  710.  
  711. extern wint_t putwchar (wchar_t __wc);
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719. extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
  720.    __FILE *__restrict __stream);
  721.  
  722.  
  723.  
  724.  
  725.  
  726. extern int fputws (__const wchar_t *__restrict __ws,
  727.      __FILE *__restrict __stream);
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734. extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
  735.  
  736. # 799 "/usr/include/wchar.h" 3 4
  737. extern wint_t getwc_unlocked (__FILE *__stream);
  738. extern wint_t getwchar_unlocked (void);
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746. extern wint_t fgetwc_unlocked (__FILE *__stream);
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754. extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
  755. # 825 "/usr/include/wchar.h" 3 4
  756. extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
  757. extern wint_t putwchar_unlocked (wchar_t __wc);
  758. # 835 "/usr/include/wchar.h" 3 4
  759. extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
  760.      __FILE *__restrict __stream);
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768. extern int fputws_unlocked (__const wchar_t *__restrict __ws,
  769.        __FILE *__restrict __stream);
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777. extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
  778.    __const wchar_t *__restrict __format,
  779.    __const struct tm *__restrict __tp) throw ();
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787. extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
  788.      __const wchar_t *__restrict __format,
  789.      __const struct tm *__restrict __tp,
  790.      __locale_t __loc) throw ();
  791. # 889 "/usr/include/wchar.h" 3 4
  792. }
  793. # 47 "/usr/include/c++/4.7/cwchar" 2 3
  794. # 64 "/usr/include/c++/4.7/cwchar" 3
  795. namespace std
  796. {
  797.   using ::mbstate_t;
  798. }
  799. # 137 "/usr/include/c++/4.7/cwchar" 3
  800. namespace std __attribute__ ((__visibility__ ("default")))
  801. {
  802.  
  803.  
  804.   using ::wint_t;
  805.  
  806.   using ::btowc;
  807.   using ::fgetwc;
  808.   using ::fgetws;
  809.   using ::fputwc;
  810.   using ::fputws;
  811.   using ::fwide;
  812.   using ::fwprintf;
  813.   using ::fwscanf;
  814.   using ::getwc;
  815.   using ::getwchar;
  816.   using ::mbrlen;
  817.   using ::mbrtowc;
  818.   using ::mbsinit;
  819.   using ::mbsrtowcs;
  820.   using ::putwc;
  821.   using ::putwchar;
  822.  
  823.   using ::swprintf;
  824.  
  825.   using ::swscanf;
  826.   using ::ungetwc;
  827.   using ::vfwprintf;
  828.  
  829.   using ::vfwscanf;
  830.  
  831.  
  832.   using ::vswprintf;
  833.  
  834.  
  835.   using ::vswscanf;
  836.  
  837.   using ::vwprintf;
  838.  
  839.   using ::vwscanf;
  840.  
  841.   using ::wcrtomb;
  842.   using ::wcscat;
  843.   using ::wcscmp;
  844.   using ::wcscoll;
  845.   using ::wcscpy;
  846.   using ::wcscspn;
  847.   using ::wcsftime;
  848.   using ::wcslen;
  849.   using ::wcsncat;
  850.   using ::wcsncmp;
  851.   using ::wcsncpy;
  852.   using ::wcsrtombs;
  853.   using ::wcsspn;
  854.   using ::wcstod;
  855.  
  856.   using ::wcstof;
  857.  
  858.   using ::wcstok;
  859.   using ::wcstol;
  860.   using ::wcstoul;
  861.   using ::wcsxfrm;
  862.   using ::wctob;
  863.   using ::wmemcmp;
  864.   using ::wmemcpy;
  865.   using ::wmemmove;
  866.   using ::wmemset;
  867.   using ::wprintf;
  868.   using ::wscanf;
  869.   using ::wcschr;
  870.   using ::wcspbrk;
  871.   using ::wcsrchr;
  872.   using ::wcsstr;
  873.   using ::wmemchr;
  874. # 234 "/usr/include/c++/4.7/cwchar" 3
  875.  
  876. }
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884. namespace __gnu_cxx
  885. {
  886.  
  887.  
  888.  
  889.  
  890.  
  891.   using ::wcstold;
  892. # 259 "/usr/include/c++/4.7/cwchar" 3
  893.   using ::wcstoll;
  894.   using ::wcstoull;
  895.  
  896. }
  897.  
  898. namespace std
  899. {
  900.   using ::__gnu_cxx::wcstold;
  901.   using ::__gnu_cxx::wcstoll;
  902.   using ::__gnu_cxx::wcstoull;
  903. }
  904. # 43 "/usr/include/c++/4.7/bits/postypes.h" 2 3
  905. # 70 "/usr/include/c++/4.7/bits/postypes.h" 3
  906. namespace std __attribute__ ((__visibility__ ("default")))
  907. {
  908.  
  909. # 90 "/usr/include/c++/4.7/bits/postypes.h" 3
  910.   typedef long streamoff;
  911. # 100 "/usr/include/c++/4.7/bits/postypes.h" 3
  912.   typedef ptrdiff_t streamsize;
  913. # 113 "/usr/include/c++/4.7/bits/postypes.h" 3
  914.   template<typename _StateT>
  915.     class fpos
  916.     {
  917.     private:
  918.       streamoff _M_off;
  919.       _StateT _M_state;
  920.  
  921.     public:
  922.  
  923.  
  924.  
  925.  
  926.       fpos()
  927.       : _M_off(0), _M_state() { }
  928. # 135 "/usr/include/c++/4.7/bits/postypes.h" 3
  929.       fpos(streamoff __off)
  930.       : _M_off(__off), _M_state() { }
  931.  
  932.  
  933.       operator streamoff() const { return _M_off; }
  934.  
  935.  
  936.       void
  937.       state(_StateT __st)
  938.       { _M_state = __st; }
  939.  
  940.  
  941.       _StateT
  942.       state() const
  943.       { return _M_state; }
  944.  
  945.  
  946.  
  947.  
  948.  
  949.       fpos&
  950.       operator+=(streamoff __off)
  951.       {
  952.  _M_off += __off;
  953.  return *this;
  954.       }
  955.  
  956.  
  957.  
  958.  
  959.  
  960.       fpos&
  961.       operator-=(streamoff __off)
  962.       {
  963.  _M_off -= __off;
  964.  return *this;
  965.       }
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.       fpos
  974.       operator+(streamoff __off) const
  975.       {
  976.  fpos __pos(*this);
  977.  __pos += __off;
  978.  return __pos;
  979.       }
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.       fpos
  988.       operator-(streamoff __off) const
  989.       {
  990.  fpos __pos(*this);
  991.  __pos -= __off;
  992.  return __pos;
  993.       }
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.       streamoff
  1001.       operator-(const fpos& __other) const
  1002.       { return _M_off - __other._M_off; }
  1003.     };
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.   template<typename _StateT>
  1011.     inline bool
  1012.     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
  1013.     { return streamoff(__lhs) == streamoff(__rhs); }
  1014.  
  1015.   template<typename _StateT>
  1016.     inline bool
  1017.     operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
  1018.     { return streamoff(__lhs) != streamoff(__rhs); }
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.   typedef fpos<mbstate_t> streampos;
  1025.  
  1026.   typedef fpos<mbstate_t> wstreampos;
  1027. # 241 "/usr/include/c++/4.7/bits/postypes.h" 3
  1028.  
  1029. }
  1030. # 43 "/usr/include/c++/4.7/iosfwd" 2 3
  1031.  
  1032. namespace std __attribute__ ((__visibility__ ("default")))
  1033. {
  1034.  
  1035. # 76 "/usr/include/c++/4.7/iosfwd" 3
  1036.   class ios_base;
  1037.  
  1038.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1039.     class basic_ios;
  1040.  
  1041.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1042.     class basic_streambuf;
  1043.  
  1044.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1045.     class basic_istream;
  1046.  
  1047.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1048.     class basic_ostream;
  1049.  
  1050.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1051.     class basic_iostream;
  1052.  
  1053.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1054.      typename _Alloc = allocator<_CharT> >
  1055.     class basic_stringbuf;
  1056.  
  1057.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1058.     typename _Alloc = allocator<_CharT> >
  1059.     class basic_istringstream;
  1060.  
  1061.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1062.     typename _Alloc = allocator<_CharT> >
  1063.     class basic_ostringstream;
  1064.  
  1065.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1066.     typename _Alloc = allocator<_CharT> >
  1067.     class basic_stringstream;
  1068.  
  1069.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1070.     class basic_filebuf;
  1071.  
  1072.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1073.     class basic_ifstream;
  1074.  
  1075.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1076.     class basic_ofstream;
  1077.  
  1078.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1079.     class basic_fstream;
  1080.  
  1081.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1082.     class istreambuf_iterator;
  1083.  
  1084.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1085.     class ostreambuf_iterator;
  1086.  
  1087.  
  1088.  
  1089.   typedef basic_ios<char> ios;
  1090.  
  1091.  
  1092.   typedef basic_streambuf<char> streambuf;
  1093.  
  1094.  
  1095.   typedef basic_istream<char> istream;
  1096.  
  1097.  
  1098.   typedef basic_ostream<char> ostream;
  1099.  
  1100.  
  1101.   typedef basic_iostream<char> iostream;
  1102.  
  1103.  
  1104.   typedef basic_stringbuf<char> stringbuf;
  1105.  
  1106.  
  1107.   typedef basic_istringstream<char> istringstream;
  1108.  
  1109.  
  1110.   typedef basic_ostringstream<char> ostringstream;
  1111.  
  1112.  
  1113.   typedef basic_stringstream<char> stringstream;
  1114.  
  1115.  
  1116.   typedef basic_filebuf<char> filebuf;
  1117.  
  1118.  
  1119.   typedef basic_ifstream<char> ifstream;
  1120.  
  1121.  
  1122.   typedef basic_ofstream<char> ofstream;
  1123.  
  1124.  
  1125.   typedef basic_fstream<char> fstream;
  1126.  
  1127.  
  1128.  
  1129.   typedef basic_ios<wchar_t> wios;
  1130.  
  1131.  
  1132.   typedef basic_streambuf<wchar_t> wstreambuf;
  1133.  
  1134.  
  1135.   typedef basic_istream<wchar_t> wistream;
  1136.  
  1137.  
  1138.   typedef basic_ostream<wchar_t> wostream;
  1139.  
  1140.  
  1141.   typedef basic_iostream<wchar_t> wiostream;
  1142.  
  1143.  
  1144.   typedef basic_stringbuf<wchar_t> wstringbuf;
  1145.  
  1146.  
  1147.   typedef basic_istringstream<wchar_t> wistringstream;
  1148.  
  1149.  
  1150.   typedef basic_ostringstream<wchar_t> wostringstream;
  1151.  
  1152.  
  1153.   typedef basic_stringstream<wchar_t> wstringstream;
  1154.  
  1155.  
  1156.   typedef basic_filebuf<wchar_t> wfilebuf;
  1157.  
  1158.  
  1159.   typedef basic_ifstream<wchar_t> wifstream;
  1160.  
  1161.  
  1162.   typedef basic_ofstream<wchar_t> wofstream;
  1163.  
  1164.  
  1165.   typedef basic_fstream<wchar_t> wfstream;
  1166.  
  1167.  
  1168.  
  1169.  
  1170. }
  1171. # 40 "/usr/include/c++/4.7/ios" 2 3
  1172. # 1 "/usr/include/c++/4.7/exception" 1 3
  1173. # 35 "/usr/include/c++/4.7/exception" 3
  1174.        
  1175. # 36 "/usr/include/c++/4.7/exception" 3
  1176.  
  1177. #pragma GCC visibility push(default)
  1178.  
  1179.  
  1180. # 1 "/usr/include/c++/4.7/bits/atomic_lockfree_defines.h" 1 3
  1181. # 33 "/usr/include/c++/4.7/bits/atomic_lockfree_defines.h" 3
  1182.        
  1183. # 34 "/usr/include/c++/4.7/bits/atomic_lockfree_defines.h" 3
  1184. # 41 "/usr/include/c++/4.7/exception" 2 3
  1185.  
  1186. extern "C++" {
  1187.  
  1188. namespace std
  1189. {
  1190. # 62 "/usr/include/c++/4.7/exception" 3
  1191.   class exception
  1192.   {
  1193.   public:
  1194.     exception() throw() { }
  1195.     virtual ~exception() throw();
  1196.  
  1197.  
  1198.  
  1199.     virtual const char* what() const throw();
  1200.   };
  1201.  
  1202.  
  1203.  
  1204.   class bad_exception : public exception
  1205.   {
  1206.   public:
  1207.     bad_exception() throw() { }
  1208.  
  1209.  
  1210.  
  1211.     virtual ~bad_exception() throw();
  1212.  
  1213.  
  1214.     virtual const char* what() const throw();
  1215.   };
  1216.  
  1217.  
  1218.   typedef void (*terminate_handler) ();
  1219.  
  1220.  
  1221.   typedef void (*unexpected_handler) ();
  1222.  
  1223.  
  1224.   terminate_handler set_terminate(terminate_handler) throw();
  1225.  
  1226.  
  1227.  
  1228.   void terminate() throw() __attribute__ ((__noreturn__));
  1229.  
  1230.  
  1231.   unexpected_handler set_unexpected(unexpected_handler) throw();
  1232.  
  1233.  
  1234.  
  1235.   void unexpected() __attribute__ ((__noreturn__));
  1236. # 119 "/usr/include/c++/4.7/exception" 3
  1237.   bool uncaught_exception() throw() __attribute__ ((__pure__));
  1238.  
  1239.  
  1240. }
  1241.  
  1242. namespace __gnu_cxx
  1243. {
  1244.  
  1245. # 144 "/usr/include/c++/4.7/exception" 3
  1246.   void __verbose_terminate_handler();
  1247.  
  1248.  
  1249. }
  1250.  
  1251. }
  1252.  
  1253. #pragma GCC visibility pop
  1254. # 41 "/usr/include/c++/4.7/ios" 2 3
  1255. # 1 "/usr/include/c++/4.7/bits/char_traits.h" 1 3
  1256. # 39 "/usr/include/c++/4.7/bits/char_traits.h" 3
  1257.        
  1258. # 40 "/usr/include/c++/4.7/bits/char_traits.h" 3
  1259.  
  1260. # 1 "/usr/include/c++/4.7/bits/stl_algobase.h" 1 3
  1261. # 61 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  1262. # 1 "/usr/include/c++/4.7/bits/functexcept.h" 1 3
  1263. # 41 "/usr/include/c++/4.7/bits/functexcept.h" 3
  1264. # 1 "/usr/include/c++/4.7/bits/exception_defines.h" 1 3
  1265. # 42 "/usr/include/c++/4.7/bits/functexcept.h" 2 3
  1266.  
  1267. namespace std __attribute__ ((__visibility__ ("default")))
  1268. {
  1269.  
  1270.  
  1271.  
  1272.   void
  1273.   __throw_bad_exception(void) __attribute__((__noreturn__));
  1274.  
  1275.  
  1276.   void
  1277.   __throw_bad_alloc(void) __attribute__((__noreturn__));
  1278.  
  1279.  
  1280.   void
  1281.   __throw_bad_cast(void) __attribute__((__noreturn__));
  1282.  
  1283.   void
  1284.   __throw_bad_typeid(void) __attribute__((__noreturn__));
  1285.  
  1286.  
  1287.   void
  1288.   __throw_logic_error(const char*) __attribute__((__noreturn__));
  1289.  
  1290.   void
  1291.   __throw_domain_error(const char*) __attribute__((__noreturn__));
  1292.  
  1293.   void
  1294.   __throw_invalid_argument(const char*) __attribute__((__noreturn__));
  1295.  
  1296.   void
  1297.   __throw_length_error(const char*) __attribute__((__noreturn__));
  1298.  
  1299.   void
  1300.   __throw_out_of_range(const char*) __attribute__((__noreturn__));
  1301.  
  1302.   void
  1303.   __throw_runtime_error(const char*) __attribute__((__noreturn__));
  1304.  
  1305.   void
  1306.   __throw_range_error(const char*) __attribute__((__noreturn__));
  1307.  
  1308.   void
  1309.   __throw_overflow_error(const char*) __attribute__((__noreturn__));
  1310.  
  1311.   void
  1312.   __throw_underflow_error(const char*) __attribute__((__noreturn__));
  1313.  
  1314.  
  1315.   void
  1316.   __throw_ios_failure(const char*) __attribute__((__noreturn__));
  1317.  
  1318.   void
  1319.   __throw_system_error(int) __attribute__((__noreturn__));
  1320.  
  1321.   void
  1322.   __throw_future_error(int) __attribute__((__noreturn__));
  1323.  
  1324.  
  1325.   void
  1326.   __throw_bad_function_call() __attribute__((__noreturn__));
  1327.  
  1328.  
  1329. }
  1330. # 62 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  1331. # 1 "/usr/include/c++/4.7/bits/cpp_type_traits.h" 1 3
  1332. # 36 "/usr/include/c++/4.7/bits/cpp_type_traits.h" 3
  1333.        
  1334. # 37 "/usr/include/c++/4.7/bits/cpp_type_traits.h" 3
  1335. # 69 "/usr/include/c++/4.7/bits/cpp_type_traits.h" 3
  1336. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  1337. {
  1338.  
  1339.  
  1340.   template<typename _Iterator, typename _Container>
  1341.     class __normal_iterator;
  1342.  
  1343.  
  1344. }
  1345.  
  1346. namespace std __attribute__ ((__visibility__ ("default")))
  1347. {
  1348.  
  1349.  
  1350.   struct __true_type { };
  1351.   struct __false_type { };
  1352.  
  1353.   template<bool>
  1354.     struct __truth_type
  1355.     { typedef __false_type __type; };
  1356.  
  1357.   template<>
  1358.     struct __truth_type<true>
  1359.     { typedef __true_type __type; };
  1360.  
  1361.  
  1362.  
  1363.   template<class _Sp, class _Tp>
  1364.     struct __traitor
  1365.     {
  1366.       enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
  1367.       typedef typename __truth_type<__value>::__type __type;
  1368.     };
  1369.  
  1370.  
  1371.   template<typename, typename>
  1372.     struct __are_same
  1373.     {
  1374.       enum { __value = 0 };
  1375.       typedef __false_type __type;
  1376.     };
  1377.  
  1378.   template<typename _Tp>
  1379.     struct __are_same<_Tp, _Tp>
  1380.     {
  1381.       enum { __value = 1 };
  1382.       typedef __true_type __type;
  1383.     };
  1384.  
  1385.  
  1386.   template<typename _Tp>
  1387.     struct __is_void
  1388.     {
  1389.       enum { __value = 0 };
  1390.       typedef __false_type __type;
  1391.     };
  1392.  
  1393.   template<>
  1394.     struct __is_void<void>
  1395.     {
  1396.       enum { __value = 1 };
  1397.       typedef __true_type __type;
  1398.     };
  1399.  
  1400.  
  1401.  
  1402.  
  1403.   template<typename _Tp>
  1404.     struct __is_integer
  1405.     {
  1406.       enum { __value = 0 };
  1407.       typedef __false_type __type;
  1408.     };
  1409.  
  1410.  
  1411.  
  1412.  
  1413.   template<>
  1414.     struct __is_integer<bool>
  1415.     {
  1416.       enum { __value = 1 };
  1417.       typedef __true_type __type;
  1418.     };
  1419.  
  1420.   template<>
  1421.     struct __is_integer<char>
  1422.     {
  1423.       enum { __value = 1 };
  1424.       typedef __true_type __type;
  1425.     };
  1426.  
  1427.   template<>
  1428.     struct __is_integer<signed char>
  1429.     {
  1430.       enum { __value = 1 };
  1431.       typedef __true_type __type;
  1432.     };
  1433.  
  1434.   template<>
  1435.     struct __is_integer<unsigned char>
  1436.     {
  1437.       enum { __value = 1 };
  1438.       typedef __true_type __type;
  1439.     };
  1440.  
  1441.  
  1442.   template<>
  1443.     struct __is_integer<wchar_t>
  1444.     {
  1445.       enum { __value = 1 };
  1446.       typedef __true_type __type;
  1447.     };
  1448. # 199 "/usr/include/c++/4.7/bits/cpp_type_traits.h" 3
  1449.   template<>
  1450.     struct __is_integer<short>
  1451.     {
  1452.       enum { __value = 1 };
  1453.       typedef __true_type __type;
  1454.     };
  1455.  
  1456.   template<>
  1457.     struct __is_integer<unsigned short>
  1458.     {
  1459.       enum { __value = 1 };
  1460.       typedef __true_type __type;
  1461.     };
  1462.  
  1463.   template<>
  1464.     struct __is_integer<int>
  1465.     {
  1466.       enum { __value = 1 };
  1467.       typedef __true_type __type;
  1468.     };
  1469.  
  1470.   template<>
  1471.     struct __is_integer<unsigned int>
  1472.     {
  1473.       enum { __value = 1 };
  1474.       typedef __true_type __type;
  1475.     };
  1476.  
  1477.   template<>
  1478.     struct __is_integer<long>
  1479.     {
  1480.       enum { __value = 1 };
  1481.       typedef __true_type __type;
  1482.     };
  1483.  
  1484.   template<>
  1485.     struct __is_integer<unsigned long>
  1486.     {
  1487.       enum { __value = 1 };
  1488.       typedef __true_type __type;
  1489.     };
  1490.  
  1491.   template<>
  1492.     struct __is_integer<long long>
  1493.     {
  1494.       enum { __value = 1 };
  1495.       typedef __true_type __type;
  1496.     };
  1497.  
  1498.   template<>
  1499.     struct __is_integer<unsigned long long>
  1500.     {
  1501.       enum { __value = 1 };
  1502.       typedef __true_type __type;
  1503.     };
  1504.  
  1505.  
  1506.  
  1507.  
  1508.   template<typename _Tp>
  1509.     struct __is_floating
  1510.     {
  1511.       enum { __value = 0 };
  1512.       typedef __false_type __type;
  1513.     };
  1514.  
  1515.  
  1516.   template<>
  1517.     struct __is_floating<float>
  1518.     {
  1519.       enum { __value = 1 };
  1520.       typedef __true_type __type;
  1521.     };
  1522.  
  1523.   template<>
  1524.     struct __is_floating<double>
  1525.     {
  1526.       enum { __value = 1 };
  1527.       typedef __true_type __type;
  1528.     };
  1529.  
  1530.   template<>
  1531.     struct __is_floating<long double>
  1532.     {
  1533.       enum { __value = 1 };
  1534.       typedef __true_type __type;
  1535.     };
  1536.  
  1537.  
  1538.  
  1539.  
  1540.   template<typename _Tp>
  1541.     struct __is_pointer
  1542.     {
  1543.       enum { __value = 0 };
  1544.       typedef __false_type __type;
  1545.     };
  1546.  
  1547.   template<typename _Tp>
  1548.     struct __is_pointer<_Tp*>
  1549.     {
  1550.       enum { __value = 1 };
  1551.       typedef __true_type __type;
  1552.     };
  1553.  
  1554.  
  1555.  
  1556.  
  1557.   template<typename _Tp>
  1558.     struct __is_normal_iterator
  1559.     {
  1560.       enum { __value = 0 };
  1561.       typedef __false_type __type;
  1562.     };
  1563.  
  1564.   template<typename _Iterator, typename _Container>
  1565.     struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
  1566.              _Container> >
  1567.     {
  1568.       enum { __value = 1 };
  1569.       typedef __true_type __type;
  1570.     };
  1571.  
  1572.  
  1573.  
  1574.  
  1575.   template<typename _Tp>
  1576.     struct __is_arithmetic
  1577.     : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
  1578.     { };
  1579.  
  1580.  
  1581.  
  1582.  
  1583.   template<typename _Tp>
  1584.     struct __is_fundamental
  1585.     : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
  1586.     { };
  1587.  
  1588.  
  1589.  
  1590.  
  1591.   template<typename _Tp>
  1592.     struct __is_scalar
  1593.     : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
  1594.     { };
  1595.  
  1596.  
  1597.  
  1598.  
  1599.   template<typename _Tp>
  1600.     struct __is_char
  1601.     {
  1602.       enum { __value = 0 };
  1603.       typedef __false_type __type;
  1604.     };
  1605.  
  1606.   template<>
  1607.     struct __is_char<char>
  1608.     {
  1609.       enum { __value = 1 };
  1610.       typedef __true_type __type;
  1611.     };
  1612.  
  1613.  
  1614.   template<>
  1615.     struct __is_char<wchar_t>
  1616.     {
  1617.       enum { __value = 1 };
  1618.       typedef __true_type __type;
  1619.     };
  1620.  
  1621.  
  1622.   template<typename _Tp>
  1623.     struct __is_byte
  1624.     {
  1625.       enum { __value = 0 };
  1626.       typedef __false_type __type;
  1627.     };
  1628.  
  1629.   template<>
  1630.     struct __is_byte<char>
  1631.     {
  1632.       enum { __value = 1 };
  1633.       typedef __true_type __type;
  1634.     };
  1635.  
  1636.   template<>
  1637.     struct __is_byte<signed char>
  1638.     {
  1639.       enum { __value = 1 };
  1640.       typedef __true_type __type;
  1641.     };
  1642.  
  1643.   template<>
  1644.     struct __is_byte<unsigned char>
  1645.     {
  1646.       enum { __value = 1 };
  1647.       typedef __true_type __type;
  1648.     };
  1649.  
  1650.  
  1651.  
  1652.  
  1653.   template<typename _Tp>
  1654.     struct __is_move_iterator
  1655.     {
  1656.       enum { __value = 0 };
  1657.       typedef __false_type __type;
  1658.     };
  1659. # 422 "/usr/include/c++/4.7/bits/cpp_type_traits.h" 3
  1660.  
  1661. }
  1662. # 63 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  1663. # 1 "/usr/include/c++/4.7/ext/type_traits.h" 1 3
  1664. # 32 "/usr/include/c++/4.7/ext/type_traits.h" 3
  1665.        
  1666. # 33 "/usr/include/c++/4.7/ext/type_traits.h" 3
  1667.  
  1668.  
  1669.  
  1670.  
  1671. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  1672. {
  1673.  
  1674.  
  1675.  
  1676.   template<bool, typename>
  1677.     struct __enable_if
  1678.     { };
  1679.  
  1680.   template<typename _Tp>
  1681.     struct __enable_if<true, _Tp>
  1682.     { typedef _Tp __type; };
  1683.  
  1684.  
  1685.  
  1686.   template<bool _Cond, typename _Iftrue, typename _Iffalse>
  1687.     struct __conditional_type
  1688.     { typedef _Iftrue __type; };
  1689.  
  1690.   template<typename _Iftrue, typename _Iffalse>
  1691.     struct __conditional_type<false, _Iftrue, _Iffalse>
  1692.     { typedef _Iffalse __type; };
  1693.  
  1694.  
  1695.  
  1696.   template<typename _Tp>
  1697.     struct __add_unsigned
  1698.     {
  1699.     private:
  1700.       typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
  1701.  
  1702.     public:
  1703.       typedef typename __if_type::__type __type;
  1704.     };
  1705.  
  1706.   template<>
  1707.     struct __add_unsigned<char>
  1708.     { typedef unsigned char __type; };
  1709.  
  1710.   template<>
  1711.     struct __add_unsigned<signed char>
  1712.     { typedef unsigned char __type; };
  1713.  
  1714.   template<>
  1715.     struct __add_unsigned<short>
  1716.     { typedef unsigned short __type; };
  1717.  
  1718.   template<>
  1719.     struct __add_unsigned<int>
  1720.     { typedef unsigned int __type; };
  1721.  
  1722.   template<>
  1723.     struct __add_unsigned<long>
  1724.     { typedef unsigned long __type; };
  1725.  
  1726.   template<>
  1727.     struct __add_unsigned<long long>
  1728.     { typedef unsigned long long __type; };
  1729.  
  1730.  
  1731.   template<>
  1732.     struct __add_unsigned<bool>;
  1733.  
  1734.   template<>
  1735.     struct __add_unsigned<wchar_t>;
  1736.  
  1737.  
  1738.  
  1739.   template<typename _Tp>
  1740.     struct __remove_unsigned
  1741.     {
  1742.     private:
  1743.       typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
  1744.  
  1745.     public:
  1746.       typedef typename __if_type::__type __type;
  1747.     };
  1748.  
  1749.   template<>
  1750.     struct __remove_unsigned<char>
  1751.     { typedef signed char __type; };
  1752.  
  1753.   template<>
  1754.     struct __remove_unsigned<unsigned char>
  1755.     { typedef signed char __type; };
  1756.  
  1757.   template<>
  1758.     struct __remove_unsigned<unsigned short>
  1759.     { typedef short __type; };
  1760.  
  1761.   template<>
  1762.     struct __remove_unsigned<unsigned int>
  1763.     { typedef int __type; };
  1764.  
  1765.   template<>
  1766.     struct __remove_unsigned<unsigned long>
  1767.     { typedef long __type; };
  1768.  
  1769.   template<>
  1770.     struct __remove_unsigned<unsigned long long>
  1771.     { typedef long long __type; };
  1772.  
  1773.  
  1774.   template<>
  1775.     struct __remove_unsigned<bool>;
  1776.  
  1777.   template<>
  1778.     struct __remove_unsigned<wchar_t>;
  1779.  
  1780.  
  1781.  
  1782.   template<typename _Type>
  1783.     inline bool
  1784.     __is_null_pointer(_Type* __ptr)
  1785.     { return __ptr == 0; }
  1786.  
  1787.   template<typename _Type>
  1788.     inline bool
  1789.     __is_null_pointer(_Type)
  1790.     { return false; }
  1791.  
  1792.  
  1793.  
  1794.   template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
  1795.     struct __promote
  1796.     { typedef double __type; };
  1797.  
  1798.  
  1799.  
  1800.  
  1801.   template<typename _Tp>
  1802.     struct __promote<_Tp, false>
  1803.     { };
  1804.  
  1805.   template<>
  1806.     struct __promote<long double>
  1807.     { typedef long double __type; };
  1808.  
  1809.   template<>
  1810.     struct __promote<double>
  1811.     { typedef double __type; };
  1812.  
  1813.   template<>
  1814.     struct __promote<float>
  1815.     { typedef float __type; };
  1816.  
  1817.   template<typename _Tp, typename _Up,
  1818.            typename _Tp2 = typename __promote<_Tp>::__type,
  1819.            typename _Up2 = typename __promote<_Up>::__type>
  1820.     struct __promote_2
  1821.     {
  1822.       typedef __typeof__(_Tp2() + _Up2()) __type;
  1823.     };
  1824.  
  1825.   template<typename _Tp, typename _Up, typename _Vp,
  1826.            typename _Tp2 = typename __promote<_Tp>::__type,
  1827.            typename _Up2 = typename __promote<_Up>::__type,
  1828.            typename _Vp2 = typename __promote<_Vp>::__type>
  1829.     struct __promote_3
  1830.     {
  1831.       typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type;
  1832.     };
  1833.  
  1834.   template<typename _Tp, typename _Up, typename _Vp, typename _Wp,
  1835.            typename _Tp2 = typename __promote<_Tp>::__type,
  1836.            typename _Up2 = typename __promote<_Up>::__type,
  1837.            typename _Vp2 = typename __promote<_Vp>::__type,
  1838.            typename _Wp2 = typename __promote<_Wp>::__type>
  1839.     struct __promote_4
  1840.     {
  1841.       typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type;
  1842.     };
  1843.  
  1844.  
  1845. }
  1846. # 64 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  1847. # 1 "/usr/include/c++/4.7/ext/numeric_traits.h" 1 3
  1848. # 32 "/usr/include/c++/4.7/ext/numeric_traits.h" 3
  1849.        
  1850. # 33 "/usr/include/c++/4.7/ext/numeric_traits.h" 3
  1851.  
  1852.  
  1853.  
  1854.  
  1855. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  1856. {
  1857.  
  1858. # 54 "/usr/include/c++/4.7/ext/numeric_traits.h" 3
  1859.   template<typename _Value>
  1860.     struct __numeric_traits_integer
  1861.     {
  1862.  
  1863.       static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0);
  1864.       static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0);
  1865.  
  1866.  
  1867.  
  1868.       static const bool __is_signed = ((_Value)(-1) < 0);
  1869.       static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0));
  1870.     };
  1871.  
  1872.   template<typename _Value>
  1873.     const _Value __numeric_traits_integer<_Value>::__min;
  1874.  
  1875.   template<typename _Value>
  1876.     const _Value __numeric_traits_integer<_Value>::__max;
  1877.  
  1878.   template<typename _Value>
  1879.     const bool __numeric_traits_integer<_Value>::__is_signed;
  1880.  
  1881.   template<typename _Value>
  1882.     const int __numeric_traits_integer<_Value>::__digits;
  1883. # 99 "/usr/include/c++/4.7/ext/numeric_traits.h" 3
  1884.   template<typename _Value>
  1885.     struct __numeric_traits_floating
  1886.     {
  1887.  
  1888.       static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 64) * 643L / 2136);
  1889.  
  1890.  
  1891.       static const bool __is_signed = true;
  1892.       static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 18);
  1893.       static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932);
  1894.     };
  1895.  
  1896.   template<typename _Value>
  1897.     const int __numeric_traits_floating<_Value>::__max_digits10;
  1898.  
  1899.   template<typename _Value>
  1900.     const bool __numeric_traits_floating<_Value>::__is_signed;
  1901.  
  1902.   template<typename _Value>
  1903.     const int __numeric_traits_floating<_Value>::__digits10;
  1904.  
  1905.   template<typename _Value>
  1906.     const int __numeric_traits_floating<_Value>::__max_exponent10;
  1907.  
  1908.   template<typename _Value>
  1909.     struct __numeric_traits
  1910.     : public __conditional_type<std::__is_integer<_Value>::__value,
  1911.     __numeric_traits_integer<_Value>,
  1912.     __numeric_traits_floating<_Value> >::__type
  1913.     { };
  1914.  
  1915.  
  1916. }
  1917. # 65 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  1918. # 1 "/usr/include/c++/4.7/bits/stl_pair.h" 1 3
  1919. # 61 "/usr/include/c++/4.7/bits/stl_pair.h" 3
  1920. # 1 "/usr/include/c++/4.7/bits/move.h" 1 3
  1921. # 34 "/usr/include/c++/4.7/bits/move.h" 3
  1922. # 1 "/usr/include/c++/4.7/bits/concept_check.h" 1 3
  1923. # 33 "/usr/include/c++/4.7/bits/concept_check.h" 3
  1924.        
  1925. # 34 "/usr/include/c++/4.7/bits/concept_check.h" 3
  1926. # 35 "/usr/include/c++/4.7/bits/move.h" 2 3
  1927.  
  1928. namespace std __attribute__ ((__visibility__ ("default")))
  1929. {
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.   template<typename _Tp>
  1938.     inline _Tp*
  1939.     __addressof(_Tp& __r)
  1940.     {
  1941.       return reinterpret_cast<_Tp*>
  1942.  (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
  1943.     }
  1944.  
  1945.  
  1946. }
  1947. # 150 "/usr/include/c++/4.7/bits/move.h" 3
  1948. namespace std __attribute__ ((__visibility__ ("default")))
  1949. {
  1950.  
  1951. # 165 "/usr/include/c++/4.7/bits/move.h" 3
  1952.   template<typename _Tp>
  1953.     inline void
  1954.     swap(_Tp& __a, _Tp& __b)
  1955.  
  1956.  
  1957.  
  1958.  
  1959.     {
  1960.  
  1961.      
  1962.  
  1963.       _Tp __tmp = (__a);
  1964.       __a = (__b);
  1965.       __b = (__tmp);
  1966.     }
  1967.  
  1968.  
  1969.  
  1970.  
  1971.   template<typename _Tp, size_t _Nm>
  1972.     inline void
  1973.     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
  1974.  
  1975.  
  1976.  
  1977.     {
  1978.       for (size_t __n = 0; __n < _Nm; ++__n)
  1979.  swap(__a[__n], __b[__n]);
  1980.     }
  1981.  
  1982.  
  1983.  
  1984. }
  1985. # 62 "/usr/include/c++/4.7/bits/stl_pair.h" 2 3
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991. namespace std __attribute__ ((__visibility__ ("default")))
  1992. {
  1993.  
  1994. # 87 "/usr/include/c++/4.7/bits/stl_pair.h" 3
  1995.   template<class _T1, class _T2>
  1996.     struct pair
  1997.     {
  1998.       typedef _T1 first_type;
  1999.       typedef _T2 second_type;
  2000.  
  2001.       _T1 first;
  2002.       _T2 second;
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.       pair()
  2009.       : first(), second() { }
  2010.  
  2011.  
  2012.       pair(const _T1& __a, const _T2& __b)
  2013.       : first(__a), second(__b) { }
  2014.  
  2015.  
  2016.  
  2017.       template<class _U1, class _U2>
  2018.  pair(const pair<_U1, _U2>& __p)
  2019.  : first(__p.first), second(__p.second) { }
  2020. # 201 "/usr/include/c++/4.7/bits/stl_pair.h" 3
  2021.     };
  2022.  
  2023.  
  2024.   template<class _T1, class _T2>
  2025.     inline bool
  2026.     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2027.     { return __x.first == __y.first && __x.second == __y.second; }
  2028.  
  2029.  
  2030.   template<class _T1, class _T2>
  2031.     inline bool
  2032.     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2033.     { return __x.first < __y.first
  2034.       || (!(__y.first < __x.first) && __x.second < __y.second); }
  2035.  
  2036.  
  2037.   template<class _T1, class _T2>
  2038.     inline bool
  2039.     operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2040.     { return !(__x == __y); }
  2041.  
  2042.  
  2043.   template<class _T1, class _T2>
  2044.     inline bool
  2045.     operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2046.     { return __y < __x; }
  2047.  
  2048.  
  2049.   template<class _T1, class _T2>
  2050.     inline bool
  2051.     operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2052.     { return !(__y < __x); }
  2053.  
  2054.  
  2055.   template<class _T1, class _T2>
  2056.     inline bool
  2057.     operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2058.     { return !(__x < __y); }
  2059. # 276 "/usr/include/c++/4.7/bits/stl_pair.h" 3
  2060.   template<class _T1, class _T2>
  2061.     inline pair<_T1, _T2>
  2062.     make_pair(_T1 __x, _T2 __y)
  2063.     { return pair<_T1, _T2>(__x, __y); }
  2064.  
  2065.  
  2066.  
  2067. }
  2068. # 66 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  2069. # 1 "/usr/include/c++/4.7/bits/stl_iterator_base_types.h" 1 3
  2070. # 63 "/usr/include/c++/4.7/bits/stl_iterator_base_types.h" 3
  2071.        
  2072. # 64 "/usr/include/c++/4.7/bits/stl_iterator_base_types.h" 3
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080. namespace std __attribute__ ((__visibility__ ("default")))
  2081. {
  2082.  
  2083. # 90 "/usr/include/c++/4.7/bits/stl_iterator_base_types.h" 3
  2084.   struct input_iterator_tag { };
  2085.  
  2086.  
  2087.   struct output_iterator_tag { };
  2088.  
  2089.  
  2090.   struct forward_iterator_tag : public input_iterator_tag { };
  2091.  
  2092.  
  2093.  
  2094.   struct bidirectional_iterator_tag : public forward_iterator_tag { };
  2095.  
  2096.  
  2097.  
  2098.   struct random_access_iterator_tag : public bidirectional_iterator_tag { };
  2099. # 117 "/usr/include/c++/4.7/bits/stl_iterator_base_types.h" 3
  2100.   template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
  2101.            typename _Pointer = _Tp*, typename _Reference = _Tp&>
  2102.     struct iterator
  2103.     {
  2104.  
  2105.       typedef _Category iterator_category;
  2106.  
  2107.       typedef _Tp value_type;
  2108.  
  2109.       typedef _Distance difference_type;
  2110.  
  2111.       typedef _Pointer pointer;
  2112.  
  2113.       typedef _Reference reference;
  2114.     };
  2115. # 163 "/usr/include/c++/4.7/bits/stl_iterator_base_types.h" 3
  2116.   template<typename _Iterator>
  2117.     struct iterator_traits
  2118.     {
  2119.       typedef typename _Iterator::iterator_category iterator_category;
  2120.       typedef typename _Iterator::value_type value_type;
  2121.       typedef typename _Iterator::difference_type difference_type;
  2122.       typedef typename _Iterator::pointer pointer;
  2123.       typedef typename _Iterator::reference reference;
  2124.     };
  2125.  
  2126.  
  2127.  
  2128.   template<typename _Tp>
  2129.     struct iterator_traits<_Tp*>
  2130.     {
  2131.       typedef random_access_iterator_tag iterator_category;
  2132.       typedef _Tp value_type;
  2133.       typedef ptrdiff_t difference_type;
  2134.       typedef _Tp* pointer;
  2135.       typedef _Tp& reference;
  2136.     };
  2137.  
  2138.  
  2139.   template<typename _Tp>
  2140.     struct iterator_traits<const _Tp*>
  2141.     {
  2142.       typedef random_access_iterator_tag iterator_category;
  2143.       typedef _Tp value_type;
  2144.       typedef ptrdiff_t difference_type;
  2145.       typedef const _Tp* pointer;
  2146.       typedef const _Tp& reference;
  2147.     };
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.   template<typename _Iter>
  2154.     inline typename iterator_traits<_Iter>::iterator_category
  2155.     __iterator_category(const _Iter&)
  2156.     { return typename iterator_traits<_Iter>::iterator_category(); }
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.   template<typename _Iterator, bool _HasBase>
  2163.     struct _Iter_base
  2164.     {
  2165.       typedef _Iterator iterator_type;
  2166.       static iterator_type _S_base(_Iterator __it)
  2167.       { return __it; }
  2168.     };
  2169.  
  2170.   template<typename _Iterator>
  2171.     struct _Iter_base<_Iterator, true>
  2172.     {
  2173.       typedef typename _Iterator::iterator_type iterator_type;
  2174.       static iterator_type _S_base(_Iterator __it)
  2175.       { return __it.base(); }
  2176.     };
  2177.  
  2178.  
  2179. }
  2180. # 67 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  2181. # 1 "/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h" 1 3
  2182. # 63 "/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h" 3
  2183.        
  2184. # 64 "/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h" 3
  2185.  
  2186.  
  2187.  
  2188. namespace std __attribute__ ((__visibility__ ("default")))
  2189. {
  2190.  
  2191.  
  2192.   template<typename _InputIterator>
  2193.     inline typename iterator_traits<_InputIterator>::difference_type
  2194.     __distance(_InputIterator __first, _InputIterator __last,
  2195.                input_iterator_tag)
  2196.     {
  2197.  
  2198.      
  2199.  
  2200.       typename iterator_traits<_InputIterator>::difference_type __n = 0;
  2201.       while (__first != __last)
  2202.  {
  2203.    ++__first;
  2204.    ++__n;
  2205.  }
  2206.       return __n;
  2207.     }
  2208.  
  2209.   template<typename _RandomAccessIterator>
  2210.     inline typename iterator_traits<_RandomAccessIterator>::difference_type
  2211.     __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
  2212.                random_access_iterator_tag)
  2213.     {
  2214.  
  2215.      
  2216.  
  2217.       return __last - __first;
  2218.     }
  2219. # 112 "/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h" 3
  2220.   template<typename _InputIterator>
  2221.     inline typename iterator_traits<_InputIterator>::difference_type
  2222.     distance(_InputIterator __first, _InputIterator __last)
  2223.     {
  2224.  
  2225.       return std::__distance(__first, __last,
  2226.         std::__iterator_category(__first));
  2227.     }
  2228.  
  2229.   template<typename _InputIterator, typename _Distance>
  2230.     inline void
  2231.     __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
  2232.     {
  2233.  
  2234.      
  2235.       while (__n--)
  2236.  ++__i;
  2237.     }
  2238.  
  2239.   template<typename _BidirectionalIterator, typename _Distance>
  2240.     inline void
  2241.     __advance(_BidirectionalIterator& __i, _Distance __n,
  2242.        bidirectional_iterator_tag)
  2243.     {
  2244.  
  2245.      
  2246.  
  2247.       if (__n > 0)
  2248.         while (__n--)
  2249.    ++__i;
  2250.       else
  2251.         while (__n++)
  2252.    --__i;
  2253.     }
  2254.  
  2255.   template<typename _RandomAccessIterator, typename _Distance>
  2256.     inline void
  2257.     __advance(_RandomAccessIterator& __i, _Distance __n,
  2258.               random_access_iterator_tag)
  2259.     {
  2260.  
  2261.      
  2262.  
  2263.       __i += __n;
  2264.     }
  2265. # 170 "/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h" 3
  2266.   template<typename _InputIterator, typename _Distance>
  2267.     inline void
  2268.     advance(_InputIterator& __i, _Distance __n)
  2269.     {
  2270.  
  2271.       typename iterator_traits<_InputIterator>::difference_type __d = __n;
  2272.       std::__advance(__i, __d, std::__iterator_category(__i));
  2273.     }
  2274. # 201 "/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h" 3
  2275.  
  2276. }
  2277. # 68 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  2278. # 1 "/usr/include/c++/4.7/bits/stl_iterator.h" 1 3
  2279. # 69 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2280. namespace std __attribute__ ((__visibility__ ("default")))
  2281. {
  2282.  
  2283. # 97 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2284.   template<typename _Iterator>
  2285.     class reverse_iterator
  2286.     : public iterator<typename iterator_traits<_Iterator>::iterator_category,
  2287.         typename iterator_traits<_Iterator>::value_type,
  2288.         typename iterator_traits<_Iterator>::difference_type,
  2289.         typename iterator_traits<_Iterator>::pointer,
  2290.                       typename iterator_traits<_Iterator>::reference>
  2291.     {
  2292.     protected:
  2293.       _Iterator current;
  2294.  
  2295.       typedef iterator_traits<_Iterator> __traits_type;
  2296.  
  2297.     public:
  2298.       typedef _Iterator iterator_type;
  2299.       typedef typename __traits_type::difference_type difference_type;
  2300.       typedef typename __traits_type::pointer pointer;
  2301.       typedef typename __traits_type::reference reference;
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.       reverse_iterator() : current() { }
  2310.  
  2311.  
  2312.  
  2313.  
  2314.       explicit
  2315.       reverse_iterator(iterator_type __x) : current(__x) { }
  2316.  
  2317.  
  2318.  
  2319.  
  2320.       reverse_iterator(const reverse_iterator& __x)
  2321.       : current(__x.current) { }
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.       template<typename _Iter>
  2328.         reverse_iterator(const reverse_iterator<_Iter>& __x)
  2329.  : current(__x.base()) { }
  2330.  
  2331.  
  2332.  
  2333.  
  2334.       iterator_type
  2335.       base() const
  2336.       { return current; }
  2337. # 161 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2338.       reference
  2339.       operator*() const
  2340.       {
  2341.  _Iterator __tmp = current;
  2342.  return *--__tmp;
  2343.       }
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.       pointer
  2351.       operator->() const
  2352.       { return &(operator*()); }
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.       reverse_iterator&
  2360.       operator++()
  2361.       {
  2362.  --current;
  2363.  return *this;
  2364.       }
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.       reverse_iterator
  2372.       operator++(int)
  2373.       {
  2374.  reverse_iterator __tmp = *this;
  2375.  --current;
  2376.  return __tmp;
  2377.       }
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.       reverse_iterator&
  2385.       operator--()
  2386.       {
  2387.  ++current;
  2388.  return *this;
  2389.       }
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.       reverse_iterator
  2397.       operator--(int)
  2398.       {
  2399.  reverse_iterator __tmp = *this;
  2400.  ++current;
  2401.  return __tmp;
  2402.       }
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.       reverse_iterator
  2410.       operator+(difference_type __n) const
  2411.       { return reverse_iterator(current - __n); }
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.       reverse_iterator&
  2420.       operator+=(difference_type __n)
  2421.       {
  2422.  current -= __n;
  2423.  return *this;
  2424.       }
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.       reverse_iterator
  2432.       operator-(difference_type __n) const
  2433.       { return reverse_iterator(current + __n); }
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.       reverse_iterator&
  2442.       operator-=(difference_type __n)
  2443.       {
  2444.  current += __n;
  2445.  return *this;
  2446.       }
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.       reference
  2454.       operator[](difference_type __n) const
  2455.       { return *(*this + __n); }
  2456.     };
  2457. # 291 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2458.   template<typename _Iterator>
  2459.     inline bool
  2460.     operator==(const reverse_iterator<_Iterator>& __x,
  2461.         const reverse_iterator<_Iterator>& __y)
  2462.     { return __x.base() == __y.base(); }
  2463.  
  2464.   template<typename _Iterator>
  2465.     inline bool
  2466.     operator<(const reverse_iterator<_Iterator>& __x,
  2467.        const reverse_iterator<_Iterator>& __y)
  2468.     { return __y.base() < __x.base(); }
  2469.  
  2470.   template<typename _Iterator>
  2471.     inline bool
  2472.     operator!=(const reverse_iterator<_Iterator>& __x,
  2473.         const reverse_iterator<_Iterator>& __y)
  2474.     { return !(__x == __y); }
  2475.  
  2476.   template<typename _Iterator>
  2477.     inline bool
  2478.     operator>(const reverse_iterator<_Iterator>& __x,
  2479.        const reverse_iterator<_Iterator>& __y)
  2480.     { return __y < __x; }
  2481.  
  2482.   template<typename _Iterator>
  2483.     inline bool
  2484.     operator<=(const reverse_iterator<_Iterator>& __x,
  2485.         const reverse_iterator<_Iterator>& __y)
  2486.     { return !(__y < __x); }
  2487.  
  2488.   template<typename _Iterator>
  2489.     inline bool
  2490.     operator>=(const reverse_iterator<_Iterator>& __x,
  2491.         const reverse_iterator<_Iterator>& __y)
  2492.     { return !(__x < __y); }
  2493.  
  2494.   template<typename _Iterator>
  2495.     inline typename reverse_iterator<_Iterator>::difference_type
  2496.     operator-(const reverse_iterator<_Iterator>& __x,
  2497.        const reverse_iterator<_Iterator>& __y)
  2498.     { return __y.base() - __x.base(); }
  2499.  
  2500.   template<typename _Iterator>
  2501.     inline reverse_iterator<_Iterator>
  2502.     operator+(typename reverse_iterator<_Iterator>::difference_type __n,
  2503.        const reverse_iterator<_Iterator>& __x)
  2504.     { return reverse_iterator<_Iterator>(__x.base() - __n); }
  2505.  
  2506.  
  2507.  
  2508.   template<typename _IteratorL, typename _IteratorR>
  2509.     inline bool
  2510.     operator==(const reverse_iterator<_IteratorL>& __x,
  2511.         const reverse_iterator<_IteratorR>& __y)
  2512.     { return __x.base() == __y.base(); }
  2513.  
  2514.   template<typename _IteratorL, typename _IteratorR>
  2515.     inline bool
  2516.     operator<(const reverse_iterator<_IteratorL>& __x,
  2517.        const reverse_iterator<_IteratorR>& __y)
  2518.     { return __y.base() < __x.base(); }
  2519.  
  2520.   template<typename _IteratorL, typename _IteratorR>
  2521.     inline bool
  2522.     operator!=(const reverse_iterator<_IteratorL>& __x,
  2523.         const reverse_iterator<_IteratorR>& __y)
  2524.     { return !(__x == __y); }
  2525.  
  2526.   template<typename _IteratorL, typename _IteratorR>
  2527.     inline bool
  2528.     operator>(const reverse_iterator<_IteratorL>& __x,
  2529.        const reverse_iterator<_IteratorR>& __y)
  2530.     { return __y < __x; }
  2531.  
  2532.   template<typename _IteratorL, typename _IteratorR>
  2533.     inline bool
  2534.     operator<=(const reverse_iterator<_IteratorL>& __x,
  2535.         const reverse_iterator<_IteratorR>& __y)
  2536.     { return !(__y < __x); }
  2537.  
  2538.   template<typename _IteratorL, typename _IteratorR>
  2539.     inline bool
  2540.     operator>=(const reverse_iterator<_IteratorL>& __x,
  2541.         const reverse_iterator<_IteratorR>& __y)
  2542.     { return !(__x < __y); }
  2543.  
  2544.   template<typename _IteratorL, typename _IteratorR>
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.     inline typename reverse_iterator<_IteratorL>::difference_type
  2553.     operator-(const reverse_iterator<_IteratorL>& __x,
  2554.        const reverse_iterator<_IteratorR>& __y)
  2555.  
  2556.     { return __y.base() - __x.base(); }
  2557. # 403 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2558.   template<typename _Container>
  2559.     class back_insert_iterator
  2560.     : public iterator<output_iterator_tag, void, void, void, void>
  2561.     {
  2562.     protected:
  2563.       _Container* container;
  2564.  
  2565.     public:
  2566.  
  2567.       typedef _Container container_type;
  2568.  
  2569.  
  2570.       explicit
  2571.       back_insert_iterator(_Container& __x) : container(&__x) { }
  2572. # 430 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2573.       back_insert_iterator&
  2574.       operator=(typename _Container::const_reference __value)
  2575.       {
  2576.  container->push_back(__value);
  2577.  return *this;
  2578.       }
  2579. # 453 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2580.       back_insert_iterator&
  2581.       operator*()
  2582.       { return *this; }
  2583.  
  2584.  
  2585.       back_insert_iterator&
  2586.       operator++()
  2587.       { return *this; }
  2588.  
  2589.  
  2590.       back_insert_iterator
  2591.       operator++(int)
  2592.       { return *this; }
  2593.     };
  2594. # 479 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2595.   template<typename _Container>
  2596.     inline back_insert_iterator<_Container>
  2597.     back_inserter(_Container& __x)
  2598.     { return back_insert_iterator<_Container>(__x); }
  2599. # 494 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2600.   template<typename _Container>
  2601.     class front_insert_iterator
  2602.     : public iterator<output_iterator_tag, void, void, void, void>
  2603.     {
  2604.     protected:
  2605.       _Container* container;
  2606.  
  2607.     public:
  2608.  
  2609.       typedef _Container container_type;
  2610.  
  2611.  
  2612.       explicit front_insert_iterator(_Container& __x) : container(&__x) { }
  2613. # 520 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2614.       front_insert_iterator&
  2615.       operator=(typename _Container::const_reference __value)
  2616.       {
  2617.  container->push_front(__value);
  2618.  return *this;
  2619.       }
  2620. # 543 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2621.       front_insert_iterator&
  2622.       operator*()
  2623.       { return *this; }
  2624.  
  2625.  
  2626.       front_insert_iterator&
  2627.       operator++()
  2628.       { return *this; }
  2629.  
  2630.  
  2631.       front_insert_iterator
  2632.       operator++(int)
  2633.       { return *this; }
  2634.     };
  2635. # 569 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2636.   template<typename _Container>
  2637.     inline front_insert_iterator<_Container>
  2638.     front_inserter(_Container& __x)
  2639.     { return front_insert_iterator<_Container>(__x); }
  2640. # 588 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2641.   template<typename _Container>
  2642.     class insert_iterator
  2643.     : public iterator<output_iterator_tag, void, void, void, void>
  2644.     {
  2645.     protected:
  2646.       _Container* container;
  2647.       typename _Container::iterator iter;
  2648.  
  2649.     public:
  2650.  
  2651.       typedef _Container container_type;
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.       insert_iterator(_Container& __x, typename _Container::iterator __i)
  2658.       : container(&__x), iter(__i) {}
  2659. # 631 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2660.       insert_iterator&
  2661.       operator=(typename _Container::const_reference __value)
  2662.       {
  2663.  iter = container->insert(iter, __value);
  2664.  ++iter;
  2665.  return *this;
  2666.       }
  2667. # 657 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2668.       insert_iterator&
  2669.       operator*()
  2670.       { return *this; }
  2671.  
  2672.  
  2673.       insert_iterator&
  2674.       operator++()
  2675.       { return *this; }
  2676.  
  2677.  
  2678.       insert_iterator&
  2679.       operator++(int)
  2680.       { return *this; }
  2681.     };
  2682. # 683 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2683.   template<typename _Container, typename _Iterator>
  2684.     inline insert_iterator<_Container>
  2685.     inserter(_Container& __x, _Iterator __i)
  2686.     {
  2687.       return insert_iterator<_Container>(__x,
  2688.       typename _Container::iterator(__i));
  2689.     }
  2690.  
  2691.  
  2692.  
  2693.  
  2694. }
  2695.  
  2696. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  2697. {
  2698.  
  2699. # 707 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2700.   using std::iterator_traits;
  2701.   using std::iterator;
  2702.   template<typename _Iterator, typename _Container>
  2703.     class __normal_iterator
  2704.     {
  2705.     protected:
  2706.       _Iterator _M_current;
  2707.  
  2708.       typedef iterator_traits<_Iterator> __traits_type;
  2709.  
  2710.     public:
  2711.       typedef _Iterator iterator_type;
  2712.       typedef typename __traits_type::iterator_category iterator_category;
  2713.       typedef typename __traits_type::value_type value_type;
  2714.       typedef typename __traits_type::difference_type difference_type;
  2715.       typedef typename __traits_type::reference reference;
  2716.       typedef typename __traits_type::pointer pointer;
  2717.  
  2718.       __normal_iterator() : _M_current(_Iterator()) { }
  2719.  
  2720.       explicit
  2721.       __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
  2722.  
  2723.  
  2724.       template<typename _Iter>
  2725.         __normal_iterator(const __normal_iterator<_Iter,
  2726.      typename __enable_if<
  2727.               (std::__are_same<_Iter, typename _Container::pointer>::__value),
  2728.         _Container>::__type>& __i)
  2729.         : _M_current(__i.base()) { }
  2730.  
  2731.  
  2732.       reference
  2733.       operator*() const
  2734.       { return *_M_current; }
  2735.  
  2736.       pointer
  2737.       operator->() const
  2738.       { return _M_current; }
  2739.  
  2740.       __normal_iterator&
  2741.       operator++()
  2742.       {
  2743.  ++_M_current;
  2744.  return *this;
  2745.       }
  2746.  
  2747.       __normal_iterator
  2748.       operator++(int)
  2749.       { return __normal_iterator(_M_current++); }
  2750.  
  2751.  
  2752.       __normal_iterator&
  2753.       operator--()
  2754.       {
  2755.  --_M_current;
  2756.  return *this;
  2757.       }
  2758.  
  2759.       __normal_iterator
  2760.       operator--(int)
  2761.       { return __normal_iterator(_M_current--); }
  2762.  
  2763.  
  2764.       reference
  2765.       operator[](const difference_type& __n) const
  2766.       { return _M_current[__n]; }
  2767.  
  2768.       __normal_iterator&
  2769.       operator+=(const difference_type& __n)
  2770.       { _M_current += __n; return *this; }
  2771.  
  2772.       __normal_iterator
  2773.       operator+(const difference_type& __n) const
  2774.       { return __normal_iterator(_M_current + __n); }
  2775.  
  2776.       __normal_iterator&
  2777.       operator-=(const difference_type& __n)
  2778.       { _M_current -= __n; return *this; }
  2779.  
  2780.       __normal_iterator
  2781.       operator-(const difference_type& __n) const
  2782.       { return __normal_iterator(_M_current - __n); }
  2783.  
  2784.       const _Iterator&
  2785.       base() const
  2786.       { return _M_current; }
  2787.     };
  2788. # 805 "/usr/include/c++/4.7/bits/stl_iterator.h" 3
  2789.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2790.     inline bool
  2791.     operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2792.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2793.     { return __lhs.base() == __rhs.base(); }
  2794.  
  2795.   template<typename _Iterator, typename _Container>
  2796.     inline bool
  2797.     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
  2798.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2799.     { return __lhs.base() == __rhs.base(); }
  2800.  
  2801.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2802.     inline bool
  2803.     operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2804.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2805.     { return __lhs.base() != __rhs.base(); }
  2806.  
  2807.   template<typename _Iterator, typename _Container>
  2808.     inline bool
  2809.     operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
  2810.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2811.     { return __lhs.base() != __rhs.base(); }
  2812.  
  2813.  
  2814.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2815.     inline bool
  2816.     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2817.        const __normal_iterator<_IteratorR, _Container>& __rhs)
  2818.     { return __lhs.base() < __rhs.base(); }
  2819.  
  2820.   template<typename _Iterator, typename _Container>
  2821.     inline bool
  2822.     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
  2823.        const __normal_iterator<_Iterator, _Container>& __rhs)
  2824.     { return __lhs.base() < __rhs.base(); }
  2825.  
  2826.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2827.     inline bool
  2828.     operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2829.        const __normal_iterator<_IteratorR, _Container>& __rhs)
  2830.     { return __lhs.base() > __rhs.base(); }
  2831.  
  2832.   template<typename _Iterator, typename _Container>
  2833.     inline bool
  2834.     operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
  2835.        const __normal_iterator<_Iterator, _Container>& __rhs)
  2836.     { return __lhs.base() > __rhs.base(); }
  2837.  
  2838.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2839.     inline bool
  2840.     operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2841.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2842.     { return __lhs.base() <= __rhs.base(); }
  2843.  
  2844.   template<typename _Iterator, typename _Container>
  2845.     inline bool
  2846.     operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
  2847.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2848.     { return __lhs.base() <= __rhs.base(); }
  2849.  
  2850.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2851.     inline bool
  2852.     operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2853.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2854.     { return __lhs.base() >= __rhs.base(); }
  2855.  
  2856.   template<typename _Iterator, typename _Container>
  2857.     inline bool
  2858.     operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
  2859.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2860.     { return __lhs.base() >= __rhs.base(); }
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.     inline typename __normal_iterator<_IteratorL, _Container>::difference_type
  2875.     operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2876.        const __normal_iterator<_IteratorR, _Container>& __rhs)
  2877.  
  2878.     { return __lhs.base() - __rhs.base(); }
  2879.  
  2880.   template<typename _Iterator, typename _Container>
  2881.     inline typename __normal_iterator<_Iterator, _Container>::difference_type
  2882.     operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
  2883.        const __normal_iterator<_Iterator, _Container>& __rhs)
  2884.     { return __lhs.base() - __rhs.base(); }
  2885.  
  2886.   template<typename _Iterator, typename _Container>
  2887.     inline __normal_iterator<_Iterator, _Container>
  2888.     operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
  2889.        __n, const __normal_iterator<_Iterator, _Container>& __i)
  2890.     { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
  2891.  
  2892.  
  2893. }
  2894. # 69 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  2895.  
  2896. # 1 "/usr/include/c++/4.7/debug/debug.h" 1 3
  2897. # 47 "/usr/include/c++/4.7/debug/debug.h" 3
  2898. namespace std
  2899. {
  2900.   namespace __debug { }
  2901. }
  2902.  
  2903.  
  2904.  
  2905.  
  2906. namespace __gnu_debug
  2907. {
  2908.   using namespace std::__debug;
  2909. }
  2910. # 71 "/usr/include/c++/4.7/bits/stl_algobase.h" 2 3
  2911.  
  2912.  
  2913. namespace std __attribute__ ((__visibility__ ("default")))
  2914. {
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.   template<bool _BoolType>
  2921.     struct __iter_swap
  2922.     {
  2923.       template<typename _ForwardIterator1, typename _ForwardIterator2>
  2924.         static void
  2925.         iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
  2926.         {
  2927.           typedef typename iterator_traits<_ForwardIterator1>::value_type
  2928.             _ValueType1;
  2929.           _ValueType1 __tmp = (*__a);
  2930.           *__a = (*__b);
  2931.           *__b = (__tmp);
  2932.  }
  2933.     };
  2934.  
  2935.   template<>
  2936.     struct __iter_swap<true>
  2937.     {
  2938.       template<typename _ForwardIterator1, typename _ForwardIterator2>
  2939.         static void
  2940.         iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
  2941.         {
  2942.           swap(*__a, *__b);
  2943.         }
  2944.     };
  2945. # 116 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  2946.   template<typename _ForwardIterator1, typename _ForwardIterator2>
  2947.     inline void
  2948.     iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
  2949.     {
  2950.       typedef typename iterator_traits<_ForwardIterator1>::value_type
  2951.  _ValueType1;
  2952.       typedef typename iterator_traits<_ForwardIterator2>::value_type
  2953.  _ValueType2;
  2954.  
  2955.  
  2956.      
  2957.  
  2958.      
  2959.  
  2960.      
  2961.  
  2962.      
  2963.  
  2964.  
  2965.       typedef typename iterator_traits<_ForwardIterator1>::reference
  2966.  _ReferenceType1;
  2967.       typedef typename iterator_traits<_ForwardIterator2>::reference
  2968.  _ReferenceType2;
  2969.       std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
  2970.  && __are_same<_ValueType1&, _ReferenceType1>::__value
  2971.  && __are_same<_ValueType2&, _ReferenceType2>::__value>::
  2972.  iter_swap(__a, __b);
  2973.     }
  2974. # 157 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  2975.   template<typename _ForwardIterator1, typename _ForwardIterator2>
  2976.     _ForwardIterator2
  2977.     swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
  2978.   _ForwardIterator2 __first2)
  2979.     {
  2980.  
  2981.      
  2982.  
  2983.      
  2984.  
  2985.       ;
  2986.  
  2987.       for (; __first1 != __last1; ++__first1, ++__first2)
  2988.  std::iter_swap(__first1, __first2);
  2989.       return __first2;
  2990.     }
  2991. # 185 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  2992.   template<typename _Tp>
  2993.     inline const _Tp&
  2994.     min(const _Tp& __a, const _Tp& __b)
  2995.     {
  2996.  
  2997.      
  2998.  
  2999.       if (__b < __a)
  3000.  return __b;
  3001.       return __a;
  3002.     }
  3003. # 208 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3004.   template<typename _Tp>
  3005.     inline const _Tp&
  3006.     max(const _Tp& __a, const _Tp& __b)
  3007.     {
  3008.  
  3009.      
  3010.  
  3011.       if (__a < __b)
  3012.  return __b;
  3013.       return __a;
  3014.     }
  3015. # 231 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3016.   template<typename _Tp, typename _Compare>
  3017.     inline const _Tp&
  3018.     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
  3019.     {
  3020.  
  3021.       if (__comp(__b, __a))
  3022.  return __b;
  3023.       return __a;
  3024.     }
  3025. # 252 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3026.   template<typename _Tp, typename _Compare>
  3027.     inline const _Tp&
  3028.     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
  3029.     {
  3030.  
  3031.       if (__comp(__a, __b))
  3032.  return __b;
  3033.       return __a;
  3034.     }
  3035.  
  3036.  
  3037.  
  3038.   template<typename _Iterator>
  3039.     struct _Niter_base
  3040.     : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value>
  3041.     { };
  3042.  
  3043.   template<typename _Iterator>
  3044.     inline typename _Niter_base<_Iterator>::iterator_type
  3045.     __niter_base(_Iterator __it)
  3046.     { return std::_Niter_base<_Iterator>::_S_base(__it); }
  3047.  
  3048.  
  3049.   template<typename _Iterator>
  3050.     struct _Miter_base
  3051.     : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value>
  3052.     { };
  3053.  
  3054.   template<typename _Iterator>
  3055.     inline typename _Miter_base<_Iterator>::iterator_type
  3056.     __miter_base(_Iterator __it)
  3057.     { return std::_Miter_base<_Iterator>::_S_base(__it); }
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.   template<bool, bool, typename>
  3066.     struct __copy_move
  3067.     {
  3068.       template<typename _II, typename _OI>
  3069.         static _OI
  3070.         __copy_m(_II __first, _II __last, _OI __result)
  3071.         {
  3072.    for (; __first != __last; ++__result, ++__first)
  3073.      *__result = *__first;
  3074.    return __result;
  3075.  }
  3076.     };
  3077. # 319 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3078.   template<>
  3079.     struct __copy_move<false, false, random_access_iterator_tag>
  3080.     {
  3081.       template<typename _II, typename _OI>
  3082.         static _OI
  3083.         __copy_m(_II __first, _II __last, _OI __result)
  3084.         {
  3085.    typedef typename iterator_traits<_II>::difference_type _Distance;
  3086.    for(_Distance __n = __last - __first; __n > 0; --__n)
  3087.      {
  3088.        *__result = *__first;
  3089.        ++__first;
  3090.        ++__result;
  3091.      }
  3092.    return __result;
  3093.  }
  3094.     };
  3095. # 357 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3096.   template<bool _IsMove>
  3097.     struct __copy_move<_IsMove, true, random_access_iterator_tag>
  3098.     {
  3099.       template<typename _Tp>
  3100.         static _Tp*
  3101.         __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
  3102.         {
  3103.    const ptrdiff_t _Num = __last - __first;
  3104.    if (_Num)
  3105.      __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
  3106.    return __result + _Num;
  3107.  }
  3108.     };
  3109.  
  3110.   template<bool _IsMove, typename _II, typename _OI>
  3111.     inline _OI
  3112.     __copy_move_a(_II __first, _II __last, _OI __result)
  3113.     {
  3114.       typedef typename iterator_traits<_II>::value_type _ValueTypeI;
  3115.       typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
  3116.       typedef typename iterator_traits<_II>::iterator_category _Category;
  3117.       const bool __simple = (__is_trivial(_ValueTypeI)
  3118.                       && __is_pointer<_II>::__value
  3119.                       && __is_pointer<_OI>::__value
  3120.         && __are_same<_ValueTypeI, _ValueTypeO>::__value);
  3121.  
  3122.       return std::__copy_move<_IsMove, __simple,
  3123.                        _Category>::__copy_m(__first, __last, __result);
  3124.     }
  3125.  
  3126.  
  3127.  
  3128.   template<typename _CharT>
  3129.     struct char_traits;
  3130.  
  3131.   template<typename _CharT, typename _Traits>
  3132.     class istreambuf_iterator;
  3133.  
  3134.   template<typename _CharT, typename _Traits>
  3135.     class ostreambuf_iterator;
  3136.  
  3137.   template<bool _IsMove, typename _CharT>
  3138.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  3139.       ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
  3140.     __copy_move_a2(_CharT*, _CharT*,
  3141.      ostreambuf_iterator<_CharT, char_traits<_CharT> >);
  3142.  
  3143.   template<bool _IsMove, typename _CharT>
  3144.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  3145.       ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
  3146.     __copy_move_a2(const _CharT*, const _CharT*,
  3147.      ostreambuf_iterator<_CharT, char_traits<_CharT> >);
  3148.  
  3149.   template<bool _IsMove, typename _CharT>
  3150.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  3151.         _CharT*>::__type
  3152.     __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
  3153.      istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
  3154.  
  3155.   template<bool _IsMove, typename _II, typename _OI>
  3156.     inline _OI
  3157.     __copy_move_a2(_II __first, _II __last, _OI __result)
  3158.     {
  3159.       return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first),
  3160.           std::__niter_base(__last),
  3161.           std::__niter_base(__result)));
  3162.     }
  3163. # 442 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3164.   template<typename _II, typename _OI>
  3165.     inline _OI
  3166.     copy(_II __first, _II __last, _OI __result)
  3167.     {
  3168.  
  3169.      
  3170.      
  3171.  
  3172.       ;
  3173.  
  3174.       return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
  3175.        (std::__miter_base(__first), std::__miter_base(__last),
  3176.         __result));
  3177.     }
  3178. # 494 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3179.   template<bool, bool, typename>
  3180.     struct __copy_move_backward
  3181.     {
  3182.       template<typename _BI1, typename _BI2>
  3183.         static _BI2
  3184.         __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
  3185.         {
  3186.    while (__first != __last)
  3187.      *--__result = *--__last;
  3188.    return __result;
  3189.  }
  3190.     };
  3191. # 522 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3192.   template<>
  3193.     struct __copy_move_backward<false, false, random_access_iterator_tag>
  3194.     {
  3195.       template<typename _BI1, typename _BI2>
  3196.         static _BI2
  3197.         __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
  3198.         {
  3199.    typename iterator_traits<_BI1>::difference_type __n;
  3200.    for (__n = __last - __first; __n > 0; --__n)
  3201.      *--__result = *--__last;
  3202.    return __result;
  3203.  }
  3204.     };
  3205. # 552 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3206.   template<bool _IsMove>
  3207.     struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
  3208.     {
  3209.       template<typename _Tp>
  3210.         static _Tp*
  3211.         __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
  3212.         {
  3213.    const ptrdiff_t _Num = __last - __first;
  3214.    if (_Num)
  3215.      __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
  3216.    return __result - _Num;
  3217.  }
  3218.     };
  3219.  
  3220.   template<bool _IsMove, typename _BI1, typename _BI2>
  3221.     inline _BI2
  3222.     __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
  3223.     {
  3224.       typedef typename iterator_traits<_BI1>::value_type _ValueType1;
  3225.       typedef typename iterator_traits<_BI2>::value_type _ValueType2;
  3226.       typedef typename iterator_traits<_BI1>::iterator_category _Category;
  3227.       const bool __simple = (__is_trivial(_ValueType1)
  3228.                       && __is_pointer<_BI1>::__value
  3229.                       && __is_pointer<_BI2>::__value
  3230.         && __are_same<_ValueType1, _ValueType2>::__value);
  3231.  
  3232.       return std::__copy_move_backward<_IsMove, __simple,
  3233.                                 _Category>::__copy_move_b(__first,
  3234.          __last,
  3235.          __result);
  3236.     }
  3237.  
  3238.   template<bool _IsMove, typename _BI1, typename _BI2>
  3239.     inline _BI2
  3240.     __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
  3241.     {
  3242.       return _BI2(std::__copy_move_backward_a<_IsMove>
  3243.     (std::__niter_base(__first), std::__niter_base(__last),
  3244.      std::__niter_base(__result)));
  3245.     }
  3246. # 611 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3247.   template<typename _BI1, typename _BI2>
  3248.     inline _BI2
  3249.     copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
  3250.     {
  3251.  
  3252.      
  3253.      
  3254.      
  3255.  
  3256.  
  3257.       ;
  3258.  
  3259.       return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
  3260.        (std::__miter_base(__first), std::__miter_base(__last),
  3261.         __result));
  3262.     }
  3263. # 669 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3264.   template<typename _ForwardIterator, typename _Tp>
  3265.     inline typename
  3266.     __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
  3267.     __fill_a(_ForwardIterator __first, _ForwardIterator __last,
  3268.        const _Tp& __value)
  3269.     {
  3270.       for (; __first != __last; ++__first)
  3271.  *__first = __value;
  3272.     }
  3273.  
  3274.   template<typename _ForwardIterator, typename _Tp>
  3275.     inline typename
  3276.     __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
  3277.     __fill_a(_ForwardIterator __first, _ForwardIterator __last,
  3278.       const _Tp& __value)
  3279.     {
  3280.       const _Tp __tmp = __value;
  3281.       for (; __first != __last; ++__first)
  3282.  *__first = __tmp;
  3283.     }
  3284.  
  3285.  
  3286.   template<typename _Tp>
  3287.     inline typename
  3288.     __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
  3289.     __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
  3290.     {
  3291.       const _Tp __tmp = __c;
  3292.       __builtin_memset(__first, static_cast<unsigned char>(__tmp),
  3293.          __last - __first);
  3294.     }
  3295. # 713 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3296.   template<typename _ForwardIterator, typename _Tp>
  3297.     inline void
  3298.     fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
  3299.     {
  3300.  
  3301.      
  3302.  
  3303.       ;
  3304.  
  3305.       std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),
  3306.       __value);
  3307.     }
  3308.  
  3309.   template<typename _OutputIterator, typename _Size, typename _Tp>
  3310.     inline typename
  3311.     __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
  3312.     __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
  3313.     {
  3314.       for (__decltype(__n + 0) __niter = __n;
  3315.     __niter > 0; --__niter, ++__first)
  3316.  *__first = __value;
  3317.       return __first;
  3318.     }
  3319.  
  3320.   template<typename _OutputIterator, typename _Size, typename _Tp>
  3321.     inline typename
  3322.     __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
  3323.     __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
  3324.     {
  3325.       const _Tp __tmp = __value;
  3326.       for (__decltype(__n + 0) __niter = __n;
  3327.     __niter > 0; --__niter, ++__first)
  3328.  *__first = __tmp;
  3329.       return __first;
  3330.     }
  3331.  
  3332.   template<typename _Size, typename _Tp>
  3333.     inline typename
  3334.     __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
  3335.     __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
  3336.     {
  3337.       std::__fill_a(__first, __first + __n, __c);
  3338.       return __first + __n;
  3339.     }
  3340. # 773 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3341.   template<typename _OI, typename _Size, typename _Tp>
  3342.     inline _OI
  3343.     fill_n(_OI __first, _Size __n, const _Tp& __value)
  3344.     {
  3345.  
  3346.      
  3347.  
  3348.       return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value));
  3349.     }
  3350.  
  3351.   template<bool _BoolType>
  3352.     struct __equal
  3353.     {
  3354.       template<typename _II1, typename _II2>
  3355.         static bool
  3356.         equal(_II1 __first1, _II1 __last1, _II2 __first2)
  3357.         {
  3358.    for (; __first1 != __last1; ++__first1, ++__first2)
  3359.      if (!(*__first1 == *__first2))
  3360.        return false;
  3361.    return true;
  3362.  }
  3363.     };
  3364.  
  3365.   template<>
  3366.     struct __equal<true>
  3367.     {
  3368.       template<typename _Tp>
  3369.         static bool
  3370.         equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
  3371.         {
  3372.    return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
  3373.        * (__last1 - __first1));
  3374.  }
  3375.     };
  3376.  
  3377.   template<typename _II1, typename _II2>
  3378.     inline bool
  3379.     __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
  3380.     {
  3381.       typedef typename iterator_traits<_II1>::value_type _ValueType1;
  3382.       typedef typename iterator_traits<_II2>::value_type _ValueType2;
  3383.       const bool __simple = ((__is_integer<_ValueType1>::__value
  3384.          || __is_pointer<_ValueType1>::__value)
  3385.                       && __is_pointer<_II1>::__value
  3386.                       && __is_pointer<_II2>::__value
  3387.         && __are_same<_ValueType1, _ValueType2>::__value);
  3388.  
  3389.       return std::__equal<__simple>::equal(__first1, __last1, __first2);
  3390.     }
  3391.  
  3392.  
  3393.   template<typename, typename>
  3394.     struct __lc_rai
  3395.     {
  3396.       template<typename _II1, typename _II2>
  3397.         static _II1
  3398.         __newlast1(_II1, _II1 __last1, _II2, _II2)
  3399.         { return __last1; }
  3400.  
  3401.       template<typename _II>
  3402.         static bool
  3403.         __cnd2(_II __first, _II __last)
  3404.         { return __first != __last; }
  3405.     };
  3406.  
  3407.   template<>
  3408.     struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
  3409.     {
  3410.       template<typename _RAI1, typename _RAI2>
  3411.         static _RAI1
  3412.         __newlast1(_RAI1 __first1, _RAI1 __last1,
  3413.      _RAI2 __first2, _RAI2 __last2)
  3414.         {
  3415.    const typename iterator_traits<_RAI1>::difference_type
  3416.      __diff1 = __last1 - __first1;
  3417.    const typename iterator_traits<_RAI2>::difference_type
  3418.      __diff2 = __last2 - __first2;
  3419.    return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
  3420.  }
  3421.  
  3422.       template<typename _RAI>
  3423.         static bool
  3424.         __cnd2(_RAI, _RAI)
  3425.         { return true; }
  3426.     };
  3427.  
  3428.   template<bool _BoolType>
  3429.     struct __lexicographical_compare
  3430.     {
  3431.       template<typename _II1, typename _II2>
  3432.         static bool __lc(_II1, _II1, _II2, _II2);
  3433.     };
  3434.  
  3435.   template<bool _BoolType>
  3436.     template<typename _II1, typename _II2>
  3437.       bool
  3438.       __lexicographical_compare<_BoolType>::
  3439.       __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
  3440.       {
  3441.  typedef typename iterator_traits<_II1>::iterator_category _Category1;
  3442.  typedef typename iterator_traits<_II2>::iterator_category _Category2;
  3443.  typedef std::__lc_rai<_Category1, _Category2> __rai_type;
  3444.  
  3445.  __last1 = __rai_type::__newlast1(__first1, __last1,
  3446.       __first2, __last2);
  3447.  for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
  3448.       ++__first1, ++__first2)
  3449.    {
  3450.      if (*__first1 < *__first2)
  3451.        return true;
  3452.      if (*__first2 < *__first1)
  3453.        return false;
  3454.    }
  3455.  return __first1 == __last1 && __first2 != __last2;
  3456.       }
  3457.  
  3458.   template<>
  3459.     struct __lexicographical_compare<true>
  3460.     {
  3461.       template<typename _Tp, typename _Up>
  3462.         static bool
  3463.         __lc(const _Tp* __first1, const _Tp* __last1,
  3464.       const _Up* __first2, const _Up* __last2)
  3465.  {
  3466.    const size_t __len1 = __last1 - __first1;
  3467.    const size_t __len2 = __last2 - __first2;
  3468.    const int __result = __builtin_memcmp(__first1, __first2,
  3469.       std::min(__len1, __len2));
  3470.    return __result != 0 ? __result < 0 : __len1 < __len2;
  3471.  }
  3472.     };
  3473.  
  3474.   template<typename _II1, typename _II2>
  3475.     inline bool
  3476.     __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
  3477.       _II2 __first2, _II2 __last2)
  3478.     {
  3479.       typedef typename iterator_traits<_II1>::value_type _ValueType1;
  3480.       typedef typename iterator_traits<_II2>::value_type _ValueType2;
  3481.       const bool __simple =
  3482.  (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
  3483.   && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
  3484.   && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
  3485.   && __is_pointer<_II1>::__value
  3486.   && __is_pointer<_II2>::__value);
  3487.  
  3488.       return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
  3489.            __first2, __last2);
  3490.     }
  3491. # 935 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3492.   template<typename _ForwardIterator, typename _Tp>
  3493.     _ForwardIterator
  3494.     lower_bound(_ForwardIterator __first, _ForwardIterator __last,
  3495.   const _Tp& __val)
  3496.     {
  3497.       typedef typename iterator_traits<_ForwardIterator>::value_type
  3498.  _ValueType;
  3499.       typedef typename iterator_traits<_ForwardIterator>::difference_type
  3500.  _DistanceType;
  3501.  
  3502.  
  3503.      
  3504.      
  3505.       ;
  3506.  
  3507.       _DistanceType __len = std::distance(__first, __last);
  3508.  
  3509.       while (__len > 0)
  3510.  {
  3511.    _DistanceType __half = __len >> 1;
  3512.    _ForwardIterator __middle = __first;
  3513.    std::advance(__middle, __half);
  3514.    if (*__middle < __val)
  3515.      {
  3516.        __first = __middle;
  3517.        ++__first;
  3518.        __len = __len - __half - 1;
  3519.      }
  3520.    else
  3521.      __len = __half;
  3522.  }
  3523.       return __first;
  3524.     }
  3525.  
  3526.  
  3527.  
  3528.   template<typename _Size>
  3529.     inline _Size
  3530.     __lg(_Size __n)
  3531.     {
  3532.       _Size __k;
  3533.       for (__k = 0; __n != 0; __n >>= 1)
  3534.  ++__k;
  3535.       return __k - 1;
  3536.     }
  3537.  
  3538.   inline int
  3539.   __lg(int __n)
  3540.   { return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
  3541.  
  3542.   inline unsigned
  3543.   __lg(unsigned __n)
  3544.   { return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
  3545.  
  3546.   inline long
  3547.   __lg(long __n)
  3548.   { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
  3549.  
  3550.   inline unsigned long
  3551.   __lg(unsigned long __n)
  3552.   { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
  3553.  
  3554.   inline long long
  3555.   __lg(long long __n)
  3556.   { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
  3557.  
  3558.   inline unsigned long long
  3559.   __lg(unsigned long long __n)
  3560.   { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
  3561.  
  3562.  
  3563.  
  3564.  
  3565. # 1021 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3566.   template<typename _II1, typename _II2>
  3567.     inline bool
  3568.     equal(_II1 __first1, _II1 __last1, _II2 __first2)
  3569.     {
  3570.  
  3571.      
  3572.      
  3573.      
  3574.  
  3575.  
  3576.       ;
  3577.  
  3578.       return std::__equal_aux(std::__niter_base(__first1),
  3579.          std::__niter_base(__last1),
  3580.          std::__niter_base(__first2));
  3581.     }
  3582. # 1053 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3583.   template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
  3584.     inline bool
  3585.     equal(_IIter1 __first1, _IIter1 __last1,
  3586.    _IIter2 __first2, _BinaryPredicate __binary_pred)
  3587.     {
  3588.  
  3589.      
  3590.      
  3591.       ;
  3592.  
  3593.       for (; __first1 != __last1; ++__first1, ++__first2)
  3594.  if (!bool(__binary_pred(*__first1, *__first2)))
  3595.    return false;
  3596.       return true;
  3597.     }
  3598. # 1084 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3599.   template<typename _II1, typename _II2>
  3600.     inline bool
  3601.     lexicographical_compare(_II1 __first1, _II1 __last1,
  3602.        _II2 __first2, _II2 __last2)
  3603.     {
  3604.  
  3605.       typedef typename iterator_traits<_II1>::value_type _ValueType1;
  3606.       typedef typename iterator_traits<_II2>::value_type _ValueType2;
  3607.      
  3608.      
  3609.      
  3610.      
  3611.       ;
  3612.       ;
  3613.  
  3614.       return std::__lexicographical_compare_aux(std::__niter_base(__first1),
  3615.       std::__niter_base(__last1),
  3616.       std::__niter_base(__first2),
  3617.       std::__niter_base(__last2));
  3618.     }
  3619. # 1118 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3620.   template<typename _II1, typename _II2, typename _Compare>
  3621.     bool
  3622.     lexicographical_compare(_II1 __first1, _II1 __last1,
  3623.        _II2 __first2, _II2 __last2, _Compare __comp)
  3624.     {
  3625.       typedef typename iterator_traits<_II1>::iterator_category _Category1;
  3626.       typedef typename iterator_traits<_II2>::iterator_category _Category2;
  3627.       typedef std::__lc_rai<_Category1, _Category2> __rai_type;
  3628.  
  3629.  
  3630.      
  3631.      
  3632.       ;
  3633.       ;
  3634.  
  3635.       __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
  3636.       for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
  3637.     ++__first1, ++__first2)
  3638.  {
  3639.    if (__comp(*__first1, *__first2))
  3640.      return true;
  3641.    if (__comp(*__first2, *__first1))
  3642.      return false;
  3643.  }
  3644.       return __first1 == __last1 && __first2 != __last2;
  3645.     }
  3646. # 1158 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3647.   template<typename _InputIterator1, typename _InputIterator2>
  3648.     pair<_InputIterator1, _InputIterator2>
  3649.     mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  3650.       _InputIterator2 __first2)
  3651.     {
  3652.  
  3653.      
  3654.      
  3655.      
  3656.  
  3657.  
  3658.       ;
  3659.  
  3660.       while (__first1 != __last1 && *__first1 == *__first2)
  3661.         {
  3662.    ++__first1;
  3663.    ++__first2;
  3664.         }
  3665.       return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
  3666.     }
  3667. # 1195 "/usr/include/c++/4.7/bits/stl_algobase.h" 3
  3668.   template<typename _InputIterator1, typename _InputIterator2,
  3669.     typename _BinaryPredicate>
  3670.     pair<_InputIterator1, _InputIterator2>
  3671.     mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  3672.       _InputIterator2 __first2, _BinaryPredicate __binary_pred)
  3673.     {
  3674.  
  3675.      
  3676.      
  3677.       ;
  3678.  
  3679.       while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2)))
  3680.         {
  3681.    ++__first1;
  3682.    ++__first2;
  3683.         }
  3684.       return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
  3685.     }
  3686.  
  3687.  
  3688. }
  3689. # 42 "/usr/include/c++/4.7/bits/char_traits.h" 2 3
  3690.  
  3691. # 1 "/usr/include/c++/4.7/cwchar" 1 3
  3692. # 41 "/usr/include/c++/4.7/cwchar" 3
  3693.        
  3694. # 42 "/usr/include/c++/4.7/cwchar" 3
  3695.  
  3696.  
  3697.  
  3698.  
  3699. # 1 "/usr/include/wchar.h" 1 3 4
  3700. # 47 "/usr/include/c++/4.7/cwchar" 2 3
  3701. # 44 "/usr/include/c++/4.7/bits/char_traits.h" 2 3
  3702.  
  3703. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  3704. {
  3705.  
  3706. # 59 "/usr/include/c++/4.7/bits/char_traits.h" 3
  3707.   template<typename _CharT>
  3708.     struct _Char_types
  3709.     {
  3710.       typedef unsigned long int_type;
  3711.       typedef std::streampos pos_type;
  3712.       typedef std::streamoff off_type;
  3713.       typedef std::mbstate_t state_type;
  3714.     };
  3715. # 84 "/usr/include/c++/4.7/bits/char_traits.h" 3
  3716.   template<typename _CharT>
  3717.     struct char_traits
  3718.     {
  3719.       typedef _CharT char_type;
  3720.       typedef typename _Char_types<_CharT>::int_type int_type;
  3721.       typedef typename _Char_types<_CharT>::pos_type pos_type;
  3722.       typedef typename _Char_types<_CharT>::off_type off_type;
  3723.       typedef typename _Char_types<_CharT>::state_type state_type;
  3724.  
  3725.       static void
  3726.       assign(char_type& __c1, const char_type& __c2)
  3727.       { __c1 = __c2; }
  3728.  
  3729.       static bool
  3730.       eq(const char_type& __c1, const char_type& __c2)
  3731.       { return __c1 == __c2; }
  3732.  
  3733.       static bool
  3734.       lt(const char_type& __c1, const char_type& __c2)
  3735.       { return __c1 < __c2; }
  3736.  
  3737.       static int
  3738.       compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
  3739.  
  3740.       static std::size_t
  3741.       length(const char_type* __s);
  3742.  
  3743.       static const char_type*
  3744.       find(const char_type* __s, std::size_t __n, const char_type& __a);
  3745.  
  3746.       static char_type*
  3747.       move(char_type* __s1, const char_type* __s2, std::size_t __n);
  3748.  
  3749.       static char_type*
  3750.       copy(char_type* __s1, const char_type* __s2, std::size_t __n);
  3751.  
  3752.       static char_type*
  3753.       assign(char_type* __s, std::size_t __n, char_type __a);
  3754.  
  3755.       static char_type
  3756.       to_char_type(const int_type& __c)
  3757.       { return static_cast<char_type>(__c); }
  3758.  
  3759.       static int_type
  3760.       to_int_type(const char_type& __c)
  3761.       { return static_cast<int_type>(__c); }
  3762.  
  3763.       static bool
  3764.       eq_int_type(const int_type& __c1, const int_type& __c2)
  3765.       { return __c1 == __c2; }
  3766.  
  3767.       static int_type
  3768.       eof()
  3769.       { return static_cast<int_type>(-1); }
  3770.  
  3771.       static int_type
  3772.       not_eof(const int_type& __c)
  3773.       { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
  3774.     };
  3775.  
  3776.   template<typename _CharT>
  3777.     int
  3778.     char_traits<_CharT>::
  3779.     compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
  3780.     {
  3781.       for (std::size_t __i = 0; __i < __n; ++__i)
  3782.  if (lt(__s1[__i], __s2[__i]))
  3783.    return -1;
  3784.  else if (lt(__s2[__i], __s1[__i]))
  3785.    return 1;
  3786.       return 0;
  3787.     }
  3788.  
  3789.   template<typename _CharT>
  3790.     std::size_t
  3791.     char_traits<_CharT>::
  3792.     length(const char_type* __p)
  3793.     {
  3794.       std::size_t __i = 0;
  3795.       while (!eq(__p[__i], char_type()))
  3796.         ++__i;
  3797.       return __i;
  3798.     }
  3799.  
  3800.   template<typename _CharT>
  3801.     const typename char_traits<_CharT>::char_type*
  3802.     char_traits<_CharT>::
  3803.     find(const char_type* __s, std::size_t __n, const char_type& __a)
  3804.     {
  3805.       for (std::size_t __i = 0; __i < __n; ++__i)
  3806.         if (eq(__s[__i], __a))
  3807.           return __s + __i;
  3808.       return 0;
  3809.     }
  3810.  
  3811.   template<typename _CharT>
  3812.     typename char_traits<_CharT>::char_type*
  3813.     char_traits<_CharT>::
  3814.     move(char_type* __s1, const char_type* __s2, std::size_t __n)
  3815.     {
  3816.       return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
  3817.           __n * sizeof(char_type)));
  3818.     }
  3819.  
  3820.   template<typename _CharT>
  3821.     typename char_traits<_CharT>::char_type*
  3822.     char_traits<_CharT>::
  3823.     copy(char_type* __s1, const char_type* __s2, std::size_t __n)
  3824.     {
  3825.  
  3826.       std::copy(__s2, __s2 + __n, __s1);
  3827.       return __s1;
  3828.     }
  3829.  
  3830.   template<typename _CharT>
  3831.     typename char_traits<_CharT>::char_type*
  3832.     char_traits<_CharT>::
  3833.     assign(char_type* __s, std::size_t __n, char_type __a)
  3834.     {
  3835.  
  3836.       std::fill_n(__s, __n, __a);
  3837.       return __s;
  3838.     }
  3839.  
  3840.  
  3841. }
  3842.  
  3843. namespace std __attribute__ ((__visibility__ ("default")))
  3844. {
  3845.  
  3846. # 228 "/usr/include/c++/4.7/bits/char_traits.h" 3
  3847.   template<class _CharT>
  3848.     struct char_traits : public __gnu_cxx::char_traits<_CharT>
  3849.     { };
  3850.  
  3851.  
  3852.  
  3853.   template<>
  3854.     struct char_traits<char>
  3855.     {
  3856.       typedef char char_type;
  3857.       typedef int int_type;
  3858.       typedef streampos pos_type;
  3859.       typedef streamoff off_type;
  3860.       typedef mbstate_t state_type;
  3861.  
  3862.       static void
  3863.       assign(char_type& __c1, const char_type& __c2)
  3864.       { __c1 = __c2; }
  3865.  
  3866.       static bool
  3867.       eq(const char_type& __c1, const char_type& __c2)
  3868.       { return __c1 == __c2; }
  3869.  
  3870.       static bool
  3871.       lt(const char_type& __c1, const char_type& __c2)
  3872.       { return __c1 < __c2; }
  3873.  
  3874.       static int
  3875.       compare(const char_type* __s1, const char_type* __s2, size_t __n)
  3876.       { return __builtin_memcmp(__s1, __s2, __n); }
  3877.  
  3878.       static size_t
  3879.       length(const char_type* __s)
  3880.       { return __builtin_strlen(__s); }
  3881.  
  3882.       static const char_type*
  3883.       find(const char_type* __s, size_t __n, const char_type& __a)
  3884.       { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); }
  3885.  
  3886.       static char_type*
  3887.       move(char_type* __s1, const char_type* __s2, size_t __n)
  3888.       { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); }
  3889.  
  3890.       static char_type*
  3891.       copy(char_type* __s1, const char_type* __s2, size_t __n)
  3892.       { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); }
  3893.  
  3894.       static char_type*
  3895.       assign(char_type* __s, size_t __n, char_type __a)
  3896.       { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); }
  3897.  
  3898.       static char_type
  3899.       to_char_type(const int_type& __c)
  3900.       { return static_cast<char_type>(__c); }
  3901.  
  3902.  
  3903.  
  3904.       static int_type
  3905.       to_int_type(const char_type& __c)
  3906.       { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
  3907.  
  3908.       static bool
  3909.       eq_int_type(const int_type& __c1, const int_type& __c2)
  3910.       { return __c1 == __c2; }
  3911.  
  3912.       static int_type
  3913.       eof()
  3914.       { return static_cast<int_type>(-1); }
  3915.  
  3916.       static int_type
  3917.       not_eof(const int_type& __c)
  3918.       { return (__c == eof()) ? 0 : __c; }
  3919.   };
  3920.  
  3921.  
  3922.  
  3923.  
  3924.   template<>
  3925.     struct char_traits<wchar_t>
  3926.     {
  3927.       typedef wchar_t char_type;
  3928.       typedef wint_t int_type;
  3929.       typedef streamoff off_type;
  3930.       typedef wstreampos pos_type;
  3931.       typedef mbstate_t state_type;
  3932.  
  3933.       static void
  3934.       assign(char_type& __c1, const char_type& __c2)
  3935.       { __c1 = __c2; }
  3936.  
  3937.       static bool
  3938.       eq(const char_type& __c1, const char_type& __c2)
  3939.       { return __c1 == __c2; }
  3940.  
  3941.       static bool
  3942.       lt(const char_type& __c1, const char_type& __c2)
  3943.       { return __c1 < __c2; }
  3944.  
  3945.       static int
  3946.       compare(const char_type* __s1, const char_type* __s2, size_t __n)
  3947.       { return wmemcmp(__s1, __s2, __n); }
  3948.  
  3949.       static size_t
  3950.       length(const char_type* __s)
  3951.       { return wcslen(__s); }
  3952.  
  3953.       static const char_type*
  3954.       find(const char_type* __s, size_t __n, const char_type& __a)
  3955.       { return wmemchr(__s, __a, __n); }
  3956.  
  3957.       static char_type*
  3958.       move(char_type* __s1, const char_type* __s2, size_t __n)
  3959.       { return wmemmove(__s1, __s2, __n); }
  3960.  
  3961.       static char_type*
  3962.       copy(char_type* __s1, const char_type* __s2, size_t __n)
  3963.       { return wmemcpy(__s1, __s2, __n); }
  3964.  
  3965.       static char_type*
  3966.       assign(char_type* __s, size_t __n, char_type __a)
  3967.       { return wmemset(__s, __a, __n); }
  3968.  
  3969.       static char_type
  3970.       to_char_type(const int_type& __c)
  3971.       { return char_type(__c); }
  3972.  
  3973.       static int_type
  3974.       to_int_type(const char_type& __c)
  3975.       { return int_type(__c); }
  3976.  
  3977.       static bool
  3978.       eq_int_type(const int_type& __c1, const int_type& __c2)
  3979.       { return __c1 == __c2; }
  3980.  
  3981.       static int_type
  3982.       eof()
  3983.       { return static_cast<int_type>((0xffffffffu)); }
  3984.  
  3985.       static int_type
  3986.       not_eof(const int_type& __c)
  3987.       { return eq_int_type(__c, eof()) ? 0 : __c; }
  3988.   };
  3989.  
  3990.  
  3991.  
  3992. }
  3993. # 42 "/usr/include/c++/4.7/ios" 2 3
  3994. # 1 "/usr/include/c++/4.7/bits/localefwd.h" 1 3
  3995. # 39 "/usr/include/c++/4.7/bits/localefwd.h" 3
  3996.        
  3997. # 40 "/usr/include/c++/4.7/bits/localefwd.h" 3
  3998.  
  3999.  
  4000. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++locale.h" 1 3
  4001. # 40 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++locale.h" 3
  4002.        
  4003. # 41 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++locale.h" 3
  4004.  
  4005. # 1 "/usr/include/c++/4.7/clocale" 1 3
  4006. # 41 "/usr/include/c++/4.7/clocale" 3
  4007.        
  4008. # 42 "/usr/include/c++/4.7/clocale" 3
  4009.  
  4010.  
  4011. # 1 "/usr/include/locale.h" 1 3 4
  4012. # 29 "/usr/include/locale.h" 3 4
  4013. # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h" 1 3 4
  4014. # 30 "/usr/include/locale.h" 2 3 4
  4015. # 1 "/usr/include/x86_64-linux-gnu/bits/locale.h" 1 3 4
  4016. # 27 "/usr/include/x86_64-linux-gnu/bits/locale.h" 3 4
  4017. enum
  4018. {
  4019.   __LC_CTYPE = 0,
  4020.   __LC_NUMERIC = 1,
  4021.   __LC_TIME = 2,
  4022.   __LC_COLLATE = 3,
  4023.   __LC_MONETARY = 4,
  4024.   __LC_MESSAGES = 5,
  4025.   __LC_ALL = 6,
  4026.   __LC_PAPER = 7,
  4027.   __LC_NAME = 8,
  4028.   __LC_ADDRESS = 9,
  4029.   __LC_TELEPHONE = 10,
  4030.   __LC_MEASUREMENT = 11,
  4031.   __LC_IDENTIFICATION = 12
  4032. };
  4033. # 31 "/usr/include/locale.h" 2 3 4
  4034.  
  4035. extern "C" {
  4036. # 51 "/usr/include/locale.h" 3 4
  4037.  
  4038.  
  4039.  
  4040. struct lconv
  4041. {
  4042.  
  4043.  
  4044.   char *decimal_point;
  4045.   char *thousands_sep;
  4046.  
  4047.  
  4048.  
  4049.  
  4050.  
  4051.   char *grouping;
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.   char *int_curr_symbol;
  4058.   char *currency_symbol;
  4059.   char *mon_decimal_point;
  4060.   char *mon_thousands_sep;
  4061.   char *mon_grouping;
  4062.   char *positive_sign;
  4063.   char *negative_sign;
  4064.   char int_frac_digits;
  4065.   char frac_digits;
  4066.  
  4067.   char p_cs_precedes;
  4068.  
  4069.   char p_sep_by_space;
  4070.  
  4071.   char n_cs_precedes;
  4072.  
  4073.   char n_sep_by_space;
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.   char p_sign_posn;
  4081.   char n_sign_posn;
  4082.  
  4083.  
  4084.   char int_p_cs_precedes;
  4085.  
  4086.   char int_p_sep_by_space;
  4087.  
  4088.   char int_n_cs_precedes;
  4089.  
  4090.   char int_n_sep_by_space;
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.   char int_p_sign_posn;
  4098.   char int_n_sign_posn;
  4099. # 121 "/usr/include/locale.h" 3 4
  4100. };
  4101.  
  4102.  
  4103.  
  4104. extern char *setlocale (int __category, __const char *__locale) throw ();
  4105.  
  4106.  
  4107. extern struct lconv *localeconv (void) throw ();
  4108.  
  4109.  
  4110. # 152 "/usr/include/locale.h" 3 4
  4111. extern __locale_t newlocale (int __category_mask, __const char *__locale,
  4112.         __locale_t __base) throw ();
  4113. # 187 "/usr/include/locale.h" 3 4
  4114. extern __locale_t duplocale (__locale_t __dataset) throw ();
  4115.  
  4116.  
  4117.  
  4118. extern void freelocale (__locale_t __dataset) throw ();
  4119.  
  4120.  
  4121.  
  4122.  
  4123.  
  4124.  
  4125. extern __locale_t uselocale (__locale_t __dataset) throw ();
  4126.  
  4127.  
  4128.  
  4129.  
  4130.  
  4131.  
  4132.  
  4133. }
  4134. # 45 "/usr/include/c++/4.7/clocale" 2 3
  4135. # 53 "/usr/include/c++/4.7/clocale" 3
  4136. namespace std
  4137. {
  4138.   using ::lconv;
  4139.   using ::setlocale;
  4140.   using ::localeconv;
  4141. }
  4142. # 43 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++locale.h" 2 3
  4143.  
  4144.  
  4145.  
  4146.  
  4147.  
  4148.  
  4149. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  4150. {
  4151.  
  4152.  
  4153.   extern "C" __typeof(uselocale) __uselocale;
  4154.  
  4155.  
  4156. }
  4157.  
  4158.  
  4159. namespace std __attribute__ ((__visibility__ ("default")))
  4160. {
  4161.  
  4162.  
  4163.   typedef __locale_t __c_locale;
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.   inline int
  4170.   __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
  4171.      char* __out,
  4172.      const int __size __attribute__ ((__unused__)),
  4173.      const char* __fmt, ...)
  4174.   {
  4175.  
  4176.     __c_locale __old = __gnu_cxx::__uselocale(__cloc);
  4177. # 89 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++locale.h" 3
  4178.     __builtin_va_list __args;
  4179.     __builtin_va_start(__args, __fmt);
  4180.  
  4181.  
  4182.     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
  4183.  
  4184.  
  4185.  
  4186.  
  4187.     __builtin_va_end(__args);
  4188.  
  4189.  
  4190.     __gnu_cxx::__uselocale(__old);
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.     return __ret;
  4199.   }
  4200.  
  4201.  
  4202. }
  4203. # 43 "/usr/include/c++/4.7/bits/localefwd.h" 2 3
  4204.  
  4205. # 1 "/usr/include/c++/4.7/cctype" 1 3
  4206. # 41 "/usr/include/c++/4.7/cctype" 3
  4207.        
  4208. # 42 "/usr/include/c++/4.7/cctype" 3
  4209.  
  4210.  
  4211. # 1 "/usr/include/ctype.h" 1 3 4
  4212. # 28 "/usr/include/ctype.h" 3 4
  4213. # 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3 4
  4214. # 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
  4215. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  4216. # 29 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4
  4217.  
  4218.  
  4219. typedef unsigned char __u_char;
  4220. typedef unsigned short int __u_short;
  4221. typedef unsigned int __u_int;
  4222. typedef unsigned long int __u_long;
  4223.  
  4224.  
  4225. typedef signed char __int8_t;
  4226. typedef unsigned char __uint8_t;
  4227. typedef signed short int __int16_t;
  4228. typedef unsigned short int __uint16_t;
  4229. typedef signed int __int32_t;
  4230. typedef unsigned int __uint32_t;
  4231.  
  4232. typedef signed long int __int64_t;
  4233. typedef unsigned long int __uint64_t;
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241. typedef long int __quad_t;
  4242. typedef unsigned long int __u_quad_t;
  4243. # 131 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
  4244. # 1 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 1 3 4
  4245. # 132 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4
  4246.  
  4247.  
  4248. typedef unsigned long int __dev_t;
  4249. typedef unsigned int __uid_t;
  4250. typedef unsigned int __gid_t;
  4251. typedef unsigned long int __ino_t;
  4252. typedef unsigned long int __ino64_t;
  4253. typedef unsigned int __mode_t;
  4254. typedef unsigned long int __nlink_t;
  4255. typedef long int __off_t;
  4256. typedef long int __off64_t;
  4257. typedef int __pid_t;
  4258. typedef struct { int __val[2]; } __fsid_t;
  4259. typedef long int __clock_t;
  4260. typedef unsigned long int __rlim_t;
  4261. typedef unsigned long int __rlim64_t;
  4262. typedef unsigned int __id_t;
  4263. typedef long int __time_t;
  4264. typedef unsigned int __useconds_t;
  4265. typedef long int __suseconds_t;
  4266.  
  4267. typedef int __daddr_t;
  4268. typedef long int __swblk_t;
  4269. typedef int __key_t;
  4270.  
  4271.  
  4272. typedef int __clockid_t;
  4273.  
  4274.  
  4275. typedef void * __timer_t;
  4276.  
  4277.  
  4278. typedef long int __blksize_t;
  4279.  
  4280.  
  4281.  
  4282.  
  4283. typedef long int __blkcnt_t;
  4284. typedef long int __blkcnt64_t;
  4285.  
  4286.  
  4287. typedef unsigned long int __fsblkcnt_t;
  4288. typedef unsigned long int __fsblkcnt64_t;
  4289.  
  4290.  
  4291. typedef unsigned long int __fsfilcnt_t;
  4292. typedef unsigned long int __fsfilcnt64_t;
  4293.  
  4294. typedef long int __ssize_t;
  4295.  
  4296.  
  4297.  
  4298. typedef __off64_t __loff_t;
  4299. typedef __quad_t *__qaddr_t;
  4300. typedef char *__caddr_t;
  4301.  
  4302.  
  4303. typedef long int __intptr_t;
  4304.  
  4305.  
  4306. typedef unsigned int __socklen_t;
  4307. # 29 "/usr/include/ctype.h" 2 3 4
  4308.  
  4309. extern "C" {
  4310. # 41 "/usr/include/ctype.h" 3 4
  4311. # 1 "/usr/include/endian.h" 1 3 4
  4312. # 37 "/usr/include/endian.h" 3 4
  4313. # 1 "/usr/include/x86_64-linux-gnu/bits/endian.h" 1 3 4
  4314. # 38 "/usr/include/endian.h" 2 3 4
  4315. # 61 "/usr/include/endian.h" 3 4
  4316. # 1 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 1 3 4
  4317. # 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4
  4318. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  4319. # 29 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4
  4320. # 62 "/usr/include/endian.h" 2 3 4
  4321. # 42 "/usr/include/ctype.h" 2 3 4
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328. enum
  4329. {
  4330.   _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
  4331.   _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
  4332.   _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
  4333.   _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
  4334.   _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
  4335.   _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
  4336.   _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
  4337.   _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
  4338.   _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
  4339.   _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
  4340.   _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
  4341.   _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
  4342. };
  4343. # 81 "/usr/include/ctype.h" 3 4
  4344. extern __const unsigned short int **__ctype_b_loc (void)
  4345.      throw () __attribute__ ((__const));
  4346. extern __const __int32_t **__ctype_tolower_loc (void)
  4347.      throw () __attribute__ ((__const));
  4348. extern __const __int32_t **__ctype_toupper_loc (void)
  4349.      throw () __attribute__ ((__const));
  4350. # 96 "/usr/include/ctype.h" 3 4
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357. extern int isalnum (int) throw ();
  4358. extern int isalpha (int) throw ();
  4359. extern int iscntrl (int) throw ();
  4360. extern int isdigit (int) throw ();
  4361. extern int islower (int) throw ();
  4362. extern int isgraph (int) throw ();
  4363. extern int isprint (int) throw ();
  4364. extern int ispunct (int) throw ();
  4365. extern int isspace (int) throw ();
  4366. extern int isupper (int) throw ();
  4367. extern int isxdigit (int) throw ();
  4368.  
  4369.  
  4370.  
  4371. extern int tolower (int __c) throw ();
  4372.  
  4373.  
  4374. extern int toupper (int __c) throw ();
  4375.  
  4376.  
  4377.  
  4378.  
  4379.  
  4380.  
  4381.  
  4382.  
  4383. extern int isblank (int) throw ();
  4384.  
  4385.  
  4386.  
  4387.  
  4388.  
  4389.  
  4390. extern int isctype (int __c, int __mask) throw ();
  4391.  
  4392.  
  4393.  
  4394.  
  4395.  
  4396.  
  4397. extern int isascii (int __c) throw ();
  4398.  
  4399.  
  4400.  
  4401. extern int toascii (int __c) throw ();
  4402.  
  4403.  
  4404.  
  4405. extern int _toupper (int) throw ();
  4406. extern int _tolower (int) throw ();
  4407. # 247 "/usr/include/ctype.h" 3 4
  4408. extern int isalnum_l (int, __locale_t) throw ();
  4409. extern int isalpha_l (int, __locale_t) throw ();
  4410. extern int iscntrl_l (int, __locale_t) throw ();
  4411. extern int isdigit_l (int, __locale_t) throw ();
  4412. extern int islower_l (int, __locale_t) throw ();
  4413. extern int isgraph_l (int, __locale_t) throw ();
  4414. extern int isprint_l (int, __locale_t) throw ();
  4415. extern int ispunct_l (int, __locale_t) throw ();
  4416. extern int isspace_l (int, __locale_t) throw ();
  4417. extern int isupper_l (int, __locale_t) throw ();
  4418. extern int isxdigit_l (int, __locale_t) throw ();
  4419.  
  4420. extern int isblank_l (int, __locale_t) throw ();
  4421.  
  4422.  
  4423.  
  4424. extern int __tolower_l (int __c, __locale_t __l) throw ();
  4425. extern int tolower_l (int __c, __locale_t __l) throw ();
  4426.  
  4427.  
  4428. extern int __toupper_l (int __c, __locale_t __l) throw ();
  4429. extern int toupper_l (int __c, __locale_t __l) throw ();
  4430. # 323 "/usr/include/ctype.h" 3 4
  4431. }
  4432. # 45 "/usr/include/c++/4.7/cctype" 2 3
  4433. # 64 "/usr/include/c++/4.7/cctype" 3
  4434. namespace std
  4435. {
  4436.   using ::isalnum;
  4437.   using ::isalpha;
  4438.   using ::iscntrl;
  4439.   using ::isdigit;
  4440.   using ::isgraph;
  4441.   using ::islower;
  4442.   using ::isprint;
  4443.   using ::ispunct;
  4444.   using ::isspace;
  4445.   using ::isupper;
  4446.   using ::isxdigit;
  4447.   using ::tolower;
  4448.   using ::toupper;
  4449. }
  4450. # 45 "/usr/include/c++/4.7/bits/localefwd.h" 2 3
  4451.  
  4452. namespace std __attribute__ ((__visibility__ ("default")))
  4453. {
  4454.  
  4455. # 57 "/usr/include/c++/4.7/bits/localefwd.h" 3
  4456.   class locale;
  4457.  
  4458.   template<typename _Facet>
  4459.     bool
  4460.     has_facet(const locale&) throw();
  4461.  
  4462.   template<typename _Facet>
  4463.     const _Facet&
  4464.     use_facet(const locale&);
  4465.  
  4466.  
  4467.   template<typename _CharT>
  4468.     bool
  4469.     isspace(_CharT, const locale&);
  4470.  
  4471.   template<typename _CharT>
  4472.     bool
  4473.     isprint(_CharT, const locale&);
  4474.  
  4475.   template<typename _CharT>
  4476.     bool
  4477.     iscntrl(_CharT, const locale&);
  4478.  
  4479.   template<typename _CharT>
  4480.     bool
  4481.     isupper(_CharT, const locale&);
  4482.  
  4483.   template<typename _CharT>
  4484.     bool
  4485.     islower(_CharT, const locale&);
  4486.  
  4487.   template<typename _CharT>
  4488.     bool
  4489.     isalpha(_CharT, const locale&);
  4490.  
  4491.   template<typename _CharT>
  4492.     bool
  4493.     isdigit(_CharT, const locale&);
  4494.  
  4495.   template<typename _CharT>
  4496.     bool
  4497.     ispunct(_CharT, const locale&);
  4498.  
  4499.   template<typename _CharT>
  4500.     bool
  4501.     isxdigit(_CharT, const locale&);
  4502.  
  4503.   template<typename _CharT>
  4504.     bool
  4505.     isalnum(_CharT, const locale&);
  4506.  
  4507.   template<typename _CharT>
  4508.     bool
  4509.     isgraph(_CharT, const locale&);
  4510.  
  4511.   template<typename _CharT>
  4512.     _CharT
  4513.     toupper(_CharT, const locale&);
  4514.  
  4515.   template<typename _CharT>
  4516.     _CharT
  4517.     tolower(_CharT, const locale&);
  4518.  
  4519.  
  4520.   class ctype_base;
  4521.   template<typename _CharT>
  4522.     class ctype;
  4523.   template<> class ctype<char>;
  4524.  
  4525.   template<> class ctype<wchar_t>;
  4526.  
  4527.   template<typename _CharT>
  4528.     class ctype_byname;
  4529.  
  4530.  
  4531.   class codecvt_base;
  4532.   template<typename _InternT, typename _ExternT, typename _StateT>
  4533.     class codecvt;
  4534.   template<> class codecvt<char, char, mbstate_t>;
  4535.  
  4536.   template<> class codecvt<wchar_t, char, mbstate_t>;
  4537.  
  4538.   template<typename _InternT, typename _ExternT, typename _StateT>
  4539.     class codecvt_byname;
  4540.  
  4541.  
  4542.  
  4543.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4544.     class num_get;
  4545.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  4546.     class num_put;
  4547.  
  4548.   template<typename _CharT> class numpunct;
  4549.   template<typename _CharT> class numpunct_byname;
  4550.  
  4551.  
  4552.   template<typename _CharT>
  4553.     class collate;
  4554.   template<typename _CharT> class
  4555.     collate_byname;
  4556.  
  4557.  
  4558.   class time_base;
  4559.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4560.     class time_get;
  4561.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4562.     class time_get_byname;
  4563.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  4564.     class time_put;
  4565.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  4566.     class time_put_byname;
  4567.  
  4568.  
  4569.   class money_base;
  4570.  
  4571.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4572.     class money_get;
  4573.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  4574.     class money_put;
  4575.  
  4576.   template<typename _CharT, bool _Intl = false>
  4577.     class moneypunct;
  4578.   template<typename _CharT, bool _Intl = false>
  4579.     class moneypunct_byname;
  4580.  
  4581.  
  4582.   class messages_base;
  4583.   template<typename _CharT>
  4584.     class messages;
  4585.   template<typename _CharT>
  4586.     class messages_byname;
  4587.  
  4588.  
  4589. }
  4590. # 43 "/usr/include/c++/4.7/ios" 2 3
  4591. # 1 "/usr/include/c++/4.7/bits/ios_base.h" 1 3
  4592. # 39 "/usr/include/c++/4.7/bits/ios_base.h" 3
  4593.        
  4594. # 40 "/usr/include/c++/4.7/bits/ios_base.h" 3
  4595.  
  4596. # 1 "/usr/include/c++/4.7/ext/atomicity.h" 1 3
  4597. # 34 "/usr/include/c++/4.7/ext/atomicity.h" 3
  4598. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr.h" 1 3
  4599. # 31 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr.h" 3
  4600. #pragma GCC visibility push(default)
  4601. # 150 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr.h" 3
  4602. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 1 3
  4603. # 41 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  4604. # 1 "/usr/include/pthread.h" 1 3 4
  4605. # 25 "/usr/include/pthread.h" 3 4
  4606. # 1 "/usr/include/sched.h" 1 3 4
  4607. # 30 "/usr/include/sched.h" 3 4
  4608. # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h" 1 3 4
  4609. # 31 "/usr/include/sched.h" 2 3 4
  4610.  
  4611.  
  4612.  
  4613. # 1 "/usr/include/time.h" 1 3 4
  4614. # 74 "/usr/include/time.h" 3 4
  4615.  
  4616.  
  4617. typedef __time_t time_t;
  4618.  
  4619.  
  4620.  
  4621. # 120 "/usr/include/time.h" 3 4
  4622. struct timespec
  4623.   {
  4624.     __time_t tv_sec;
  4625.     long int tv_nsec;
  4626.   };
  4627. # 35 "/usr/include/sched.h" 2 3 4
  4628.  
  4629.  
  4630. typedef __pid_t pid_t;
  4631.  
  4632.  
  4633.  
  4634.  
  4635.  
  4636. # 1 "/usr/include/x86_64-linux-gnu/bits/sched.h" 1 3 4
  4637. # 74 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4
  4638. struct sched_param
  4639.   {
  4640.     int __sched_priority;
  4641.   };
  4642.  
  4643. extern "C" {
  4644.  
  4645.  
  4646.  
  4647. extern int clone (int (*__fn) (void *__arg), void *__child_stack,
  4648.     int __flags, void *__arg, ...) throw ();
  4649.  
  4650.  
  4651. extern int unshare (int __flags) throw ();
  4652.  
  4653.  
  4654. extern int sched_getcpu (void) throw ();
  4655.  
  4656.  
  4657. }
  4658.  
  4659.  
  4660.  
  4661.  
  4662.  
  4663.  
  4664.  
  4665. struct __sched_param
  4666.   {
  4667.     int __sched_priority;
  4668.   };
  4669. # 116 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4
  4670. typedef unsigned long int __cpu_mask;
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677. typedef struct
  4678. {
  4679.   __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
  4680. } cpu_set_t;
  4681. # 199 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4
  4682. extern "C" {
  4683.  
  4684. extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
  4685.   throw ();
  4686. extern cpu_set_t *__sched_cpualloc (size_t __count) throw () ;
  4687. extern void __sched_cpufree (cpu_set_t *__set) throw ();
  4688.  
  4689. }
  4690. # 44 "/usr/include/sched.h" 2 3 4
  4691.  
  4692.  
  4693.  
  4694.  
  4695. extern "C" {
  4696.  
  4697.  
  4698. extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
  4699.      throw ();
  4700.  
  4701.  
  4702. extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
  4703.  
  4704.  
  4705. extern int sched_setscheduler (__pid_t __pid, int __policy,
  4706.           __const struct sched_param *__param) throw ();
  4707.  
  4708.  
  4709. extern int sched_getscheduler (__pid_t __pid) throw ();
  4710.  
  4711.  
  4712. extern int sched_yield (void) throw ();
  4713.  
  4714.  
  4715. extern int sched_get_priority_max (int __algorithm) throw ();
  4716.  
  4717.  
  4718. extern int sched_get_priority_min (int __algorithm) throw ();
  4719.  
  4720.  
  4721. extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
  4722. # 118 "/usr/include/sched.h" 3 4
  4723. extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
  4724.          __const cpu_set_t *__cpuset) throw ();
  4725.  
  4726.  
  4727. extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
  4728.          cpu_set_t *__cpuset) throw ();
  4729.  
  4730.  
  4731. }
  4732. # 26 "/usr/include/pthread.h" 2 3 4
  4733. # 1 "/usr/include/time.h" 1 3 4
  4734. # 30 "/usr/include/time.h" 3 4
  4735. extern "C" {
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743. # 1 "/usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h" 1 3 4
  4744. # 39 "/usr/include/time.h" 2 3 4
  4745.  
  4746.  
  4747.  
  4748. # 1 "/usr/include/x86_64-linux-gnu/bits/time.h" 1 3 4
  4749. # 43 "/usr/include/time.h" 2 3 4
  4750. # 58 "/usr/include/time.h" 3 4
  4751.  
  4752.  
  4753. typedef __clock_t clock_t;
  4754.  
  4755.  
  4756.  
  4757. # 92 "/usr/include/time.h" 3 4
  4758. typedef __clockid_t clockid_t;
  4759. # 104 "/usr/include/time.h" 3 4
  4760. typedef __timer_t timer_t;
  4761. # 131 "/usr/include/time.h" 3 4
  4762.  
  4763.  
  4764. struct tm
  4765. {
  4766.   int tm_sec;
  4767.   int tm_min;
  4768.   int tm_hour;
  4769.   int tm_mday;
  4770.   int tm_mon;
  4771.   int tm_year;
  4772.   int tm_wday;
  4773.   int tm_yday;
  4774.   int tm_isdst;
  4775.  
  4776.  
  4777.   long int tm_gmtoff;
  4778.   __const char *tm_zone;
  4779.  
  4780.  
  4781.  
  4782.  
  4783. };
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792. struct itimerspec
  4793.   {
  4794.     struct timespec it_interval;
  4795.     struct timespec it_value;
  4796.   };
  4797.  
  4798.  
  4799. struct sigevent;
  4800. # 180 "/usr/include/time.h" 3 4
  4801.  
  4802.  
  4803.  
  4804. extern clock_t clock (void) throw ();
  4805.  
  4806.  
  4807. extern time_t time (time_t *__timer) throw ();
  4808.  
  4809.  
  4810. extern double difftime (time_t __time1, time_t __time0)
  4811.      throw () __attribute__ ((__const__));
  4812.  
  4813.  
  4814. extern time_t mktime (struct tm *__tp) throw ();
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820. extern size_t strftime (char *__restrict __s, size_t __maxsize,
  4821.    __const char *__restrict __format,
  4822.    __const struct tm *__restrict __tp) throw ();
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828. extern char *strptime (__const char *__restrict __s,
  4829.          __const char *__restrict __fmt, struct tm *__tp)
  4830.      throw ();
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838. extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
  4839.      __const char *__restrict __format,
  4840.      __const struct tm *__restrict __tp,
  4841.      __locale_t __loc) throw ();
  4842.  
  4843.  
  4844.  
  4845. extern char *strptime_l (__const char *__restrict __s,
  4846.     __const char *__restrict __fmt, struct tm *__tp,
  4847.     __locale_t __loc) throw ();
  4848.  
  4849.  
  4850.  
  4851.  
  4852.  
  4853.  
  4854. extern struct tm *gmtime (__const time_t *__timer) throw ();
  4855.  
  4856.  
  4857.  
  4858. extern struct tm *localtime (__const time_t *__timer) throw ();
  4859.  
  4860.  
  4861.  
  4862.  
  4863.  
  4864. extern struct tm *gmtime_r (__const time_t *__restrict __timer,
  4865.        struct tm *__restrict __tp) throw ();
  4866.  
  4867.  
  4868.  
  4869. extern struct tm *localtime_r (__const time_t *__restrict __timer,
  4870.           struct tm *__restrict __tp) throw ();
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876. extern char *asctime (__const struct tm *__tp) throw ();
  4877.  
  4878.  
  4879. extern char *ctime (__const time_t *__timer) throw ();
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887. extern char *asctime_r (__const struct tm *__restrict __tp,
  4888.    char *__restrict __buf) throw ();
  4889.  
  4890.  
  4891. extern char *ctime_r (__const time_t *__restrict __timer,
  4892.         char *__restrict __buf) throw ();
  4893.  
  4894.  
  4895.  
  4896.  
  4897. extern char *__tzname[2];
  4898. extern int __daylight;
  4899. extern long int __timezone;
  4900.  
  4901.  
  4902.  
  4903.  
  4904. extern char *tzname[2];
  4905.  
  4906.  
  4907.  
  4908. extern void tzset (void) throw ();
  4909.  
  4910.  
  4911.  
  4912. extern int daylight;
  4913. extern long int timezone;
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919. extern int stime (__const time_t *__when) throw ();
  4920. # 313 "/usr/include/time.h" 3 4
  4921. extern time_t timegm (struct tm *__tp) throw ();
  4922.  
  4923.  
  4924. extern time_t timelocal (struct tm *__tp) throw ();
  4925.  
  4926.  
  4927. extern int dysize (int __year) throw () __attribute__ ((__const__));
  4928. # 328 "/usr/include/time.h" 3 4
  4929. extern int nanosleep (__const struct timespec *__requested_time,
  4930.         struct timespec *__remaining);
  4931.  
  4932.  
  4933.  
  4934. extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
  4935.  
  4936.  
  4937. extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
  4938.  
  4939.  
  4940. extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
  4941.      throw ();
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948. extern int clock_nanosleep (clockid_t __clock_id, int __flags,
  4949.        __const struct timespec *__req,
  4950.        struct timespec *__rem);
  4951.  
  4952.  
  4953. extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
  4954.  
  4955.  
  4956.  
  4957.  
  4958. extern int timer_create (clockid_t __clock_id,
  4959.     struct sigevent *__restrict __evp,
  4960.     timer_t *__restrict __timerid) throw ();
  4961.  
  4962.  
  4963. extern int timer_delete (timer_t __timerid) throw ();
  4964.  
  4965.  
  4966. extern int timer_settime (timer_t __timerid, int __flags,
  4967.      __const struct itimerspec *__restrict __value,
  4968.      struct itimerspec *__restrict __ovalue) throw ();
  4969.  
  4970.  
  4971. extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
  4972.      throw ();
  4973.  
  4974.  
  4975. extern int timer_getoverrun (timer_t __timerid) throw ();
  4976. # 390 "/usr/include/time.h" 3 4
  4977. extern int getdate_err;
  4978. # 399 "/usr/include/time.h" 3 4
  4979. extern struct tm *getdate (__const char *__string);
  4980. # 413 "/usr/include/time.h" 3 4
  4981. extern int getdate_r (__const char *__restrict __string,
  4982.         struct tm *__restrict __resbufp);
  4983.  
  4984.  
  4985. }
  4986. # 27 "/usr/include/pthread.h" 2 3 4
  4987.  
  4988. # 1 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 1 3 4
  4989. # 23 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  4990. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  4991. # 24 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 2 3 4
  4992. # 50 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  4993. typedef unsigned long int pthread_t;
  4994.  
  4995.  
  4996. typedef union
  4997. {
  4998.   char __size[56];
  4999.   long int __align;
  5000. } pthread_attr_t;
  5001.  
  5002.  
  5003.  
  5004. typedef struct __pthread_internal_list
  5005. {
  5006.   struct __pthread_internal_list *__prev;
  5007.   struct __pthread_internal_list *__next;
  5008. } __pthread_list_t;
  5009. # 76 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5010. typedef union
  5011. {
  5012.   struct __pthread_mutex_s
  5013.   {
  5014.     int __lock;
  5015.     unsigned int __count;
  5016.     int __owner;
  5017.  
  5018.     unsigned int __nusers;
  5019.  
  5020.  
  5021.  
  5022.     int __kind;
  5023.  
  5024.     int __spins;
  5025.     __pthread_list_t __list;
  5026. # 101 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5027.   } __data;
  5028.   char __size[40];
  5029.   long int __align;
  5030. } pthread_mutex_t;
  5031.  
  5032. typedef union
  5033. {
  5034.   char __size[4];
  5035.   int __align;
  5036. } pthread_mutexattr_t;
  5037.  
  5038.  
  5039.  
  5040.  
  5041. typedef union
  5042. {
  5043.   struct
  5044.   {
  5045.     int __lock;
  5046.     unsigned int __futex;
  5047.     __extension__ unsigned long long int __total_seq;
  5048.     __extension__ unsigned long long int __wakeup_seq;
  5049.     __extension__ unsigned long long int __woken_seq;
  5050.     void *__mutex;
  5051.     unsigned int __nwaiters;
  5052.     unsigned int __broadcast_seq;
  5053.   } __data;
  5054.   char __size[48];
  5055.   __extension__ long long int __align;
  5056. } pthread_cond_t;
  5057.  
  5058. typedef union
  5059. {
  5060.   char __size[4];
  5061.   int __align;
  5062. } pthread_condattr_t;
  5063.  
  5064.  
  5065.  
  5066. typedef unsigned int pthread_key_t;
  5067.  
  5068.  
  5069.  
  5070. typedef int pthread_once_t;
  5071.  
  5072.  
  5073.  
  5074.  
  5075.  
  5076. typedef union
  5077. {
  5078.  
  5079.   struct
  5080.   {
  5081.     int __lock;
  5082.     unsigned int __nr_readers;
  5083.     unsigned int __readers_wakeup;
  5084.     unsigned int __writer_wakeup;
  5085.     unsigned int __nr_readers_queued;
  5086.     unsigned int __nr_writers_queued;
  5087.     int __writer;
  5088.     int __shared;
  5089.     unsigned long int __pad1;
  5090.     unsigned long int __pad2;
  5091.  
  5092.  
  5093.     unsigned int __flags;
  5094.   } __data;
  5095. # 187 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5096.   char __size[56];
  5097.   long int __align;
  5098. } pthread_rwlock_t;
  5099.  
  5100. typedef union
  5101. {
  5102.   char __size[8];
  5103.   long int __align;
  5104. } pthread_rwlockattr_t;
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110. typedef volatile int pthread_spinlock_t;
  5111.  
  5112.  
  5113.  
  5114.  
  5115. typedef union
  5116. {
  5117.   char __size[32];
  5118.   long int __align;
  5119. } pthread_barrier_t;
  5120.  
  5121. typedef union
  5122. {
  5123.   char __size[4];
  5124.   int __align;
  5125. } pthread_barrierattr_t;
  5126. # 29 "/usr/include/pthread.h" 2 3 4
  5127. # 1 "/usr/include/x86_64-linux-gnu/bits/setjmp.h" 1 3 4
  5128. # 27 "/usr/include/x86_64-linux-gnu/bits/setjmp.h" 3 4
  5129. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  5130. # 28 "/usr/include/x86_64-linux-gnu/bits/setjmp.h" 2 3 4
  5131.  
  5132.  
  5133.  
  5134.  
  5135. typedef long int __jmp_buf[8];
  5136. # 30 "/usr/include/pthread.h" 2 3 4
  5137. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  5138. # 31 "/usr/include/pthread.h" 2 3 4
  5139.  
  5140.  
  5141.  
  5142. enum
  5143. {
  5144.   PTHREAD_CREATE_JOINABLE,
  5145.  
  5146.   PTHREAD_CREATE_DETACHED
  5147.  
  5148. };
  5149.  
  5150.  
  5151.  
  5152. enum
  5153. {
  5154.   PTHREAD_MUTEX_TIMED_NP,
  5155.   PTHREAD_MUTEX_RECURSIVE_NP,
  5156.   PTHREAD_MUTEX_ERRORCHECK_NP,
  5157.   PTHREAD_MUTEX_ADAPTIVE_NP
  5158.  
  5159.   ,
  5160.   PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
  5161.   PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  5162.   PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  5163.   PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
  5164.  
  5165.  
  5166.  
  5167.   , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
  5168.  
  5169. };
  5170.  
  5171.  
  5172.  
  5173.  
  5174. enum
  5175. {
  5176.   PTHREAD_MUTEX_STALLED,
  5177.   PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
  5178.   PTHREAD_MUTEX_ROBUST,
  5179.   PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
  5180. };
  5181.  
  5182.  
  5183.  
  5184.  
  5185.  
  5186. enum
  5187. {
  5188.   PTHREAD_PRIO_NONE,
  5189.   PTHREAD_PRIO_INHERIT,
  5190.   PTHREAD_PRIO_PROTECT
  5191. };
  5192. # 115 "/usr/include/pthread.h" 3 4
  5193. enum
  5194. {
  5195.   PTHREAD_RWLOCK_PREFER_READER_NP,
  5196.   PTHREAD_RWLOCK_PREFER_WRITER_NP,
  5197.   PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
  5198.   PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
  5199. };
  5200. # 147 "/usr/include/pthread.h" 3 4
  5201. enum
  5202. {
  5203.   PTHREAD_INHERIT_SCHED,
  5204.  
  5205.   PTHREAD_EXPLICIT_SCHED
  5206.  
  5207. };
  5208.  
  5209.  
  5210.  
  5211. enum
  5212. {
  5213.   PTHREAD_SCOPE_SYSTEM,
  5214.  
  5215.   PTHREAD_SCOPE_PROCESS
  5216.  
  5217. };
  5218.  
  5219.  
  5220.  
  5221. enum
  5222. {
  5223.   PTHREAD_PROCESS_PRIVATE,
  5224.  
  5225.   PTHREAD_PROCESS_SHARED
  5226.  
  5227. };
  5228. # 182 "/usr/include/pthread.h" 3 4
  5229. struct _pthread_cleanup_buffer
  5230. {
  5231.   void (*__routine) (void *);
  5232.   void *__arg;
  5233.   int __canceltype;
  5234.   struct _pthread_cleanup_buffer *__prev;
  5235. };
  5236.  
  5237.  
  5238. enum
  5239. {
  5240.   PTHREAD_CANCEL_ENABLE,
  5241.  
  5242.   PTHREAD_CANCEL_DISABLE
  5243.  
  5244. };
  5245. enum
  5246. {
  5247.   PTHREAD_CANCEL_DEFERRED,
  5248.  
  5249.   PTHREAD_CANCEL_ASYNCHRONOUS
  5250.  
  5251. };
  5252. # 220 "/usr/include/pthread.h" 3 4
  5253. extern "C" {
  5254.  
  5255.  
  5256.  
  5257.  
  5258. extern int pthread_create (pthread_t *__restrict __newthread,
  5259.       __const pthread_attr_t *__restrict __attr,
  5260.       void *(*__start_routine) (void *),
  5261.       void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3)));
  5262.  
  5263.  
  5264.  
  5265.  
  5266.  
  5267. extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
  5268.  
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.  
  5275. extern int pthread_join (pthread_t __th, void **__thread_return);
  5276.  
  5277.  
  5278.  
  5279.  
  5280. extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288. extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
  5289.      __const struct timespec *__abstime);
  5290.  
  5291.  
  5292.  
  5293.  
  5294.  
  5295.  
  5296. extern int pthread_detach (pthread_t __th) throw ();
  5297.  
  5298.  
  5299.  
  5300. extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));
  5301.  
  5302.  
  5303. extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();
  5304.  
  5305.  
  5306.  
  5307.  
  5308.  
  5309.  
  5310.  
  5311. extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));
  5312.  
  5313.  
  5314. extern int pthread_attr_destroy (pthread_attr_t *__attr)
  5315.      throw () __attribute__ ((__nonnull__ (1)));
  5316.  
  5317.  
  5318. extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  5319.      int *__detachstate)
  5320.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5321.  
  5322.  
  5323. extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
  5324.      int __detachstate)
  5325.      throw () __attribute__ ((__nonnull__ (1)));
  5326.  
  5327.  
  5328.  
  5329. extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
  5330.           size_t *__guardsize)
  5331.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5332.  
  5333.  
  5334. extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
  5335.           size_t __guardsize)
  5336.      throw () __attribute__ ((__nonnull__ (1)));
  5337.  
  5338.  
  5339.  
  5340. extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  5341.            __attr,
  5342.            struct sched_param *__restrict __param)
  5343.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5344.  
  5345.  
  5346. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  5347.            __const struct sched_param *__restrict
  5348.            __param) throw () __attribute__ ((__nonnull__ (1, 2)));
  5349.  
  5350.  
  5351. extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  5352.      __attr, int *__restrict __policy)
  5353.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5354.  
  5355.  
  5356. extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
  5357.      throw () __attribute__ ((__nonnull__ (1)));
  5358.  
  5359.  
  5360. extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  5361.       __attr, int *__restrict __inherit)
  5362.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5363.  
  5364.  
  5365. extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
  5366.       int __inherit)
  5367.      throw () __attribute__ ((__nonnull__ (1)));
  5368.  
  5369.  
  5370.  
  5371. extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  5372.       int *__restrict __scope)
  5373.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5374.  
  5375.  
  5376. extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
  5377.      throw () __attribute__ ((__nonnull__ (1)));
  5378.  
  5379.  
  5380. extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  5381.           __attr, void **__restrict __stackaddr)
  5382.      throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
  5383.  
  5384.  
  5385.  
  5386.  
  5387.  
  5388. extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
  5389.           void *__stackaddr)
  5390.      throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
  5391.  
  5392.  
  5393. extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  5394.           __attr, size_t *__restrict __stacksize)
  5395.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5396.  
  5397.  
  5398.  
  5399.  
  5400. extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
  5401.           size_t __stacksize)
  5402.      throw () __attribute__ ((__nonnull__ (1)));
  5403.  
  5404.  
  5405.  
  5406. extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  5407.       void **__restrict __stackaddr,
  5408.       size_t *__restrict __stacksize)
  5409.      throw () __attribute__ ((__nonnull__ (1, 2, 3)));
  5410.  
  5411.  
  5412.  
  5413.  
  5414. extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
  5415.       size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421. extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
  5422.      size_t __cpusetsize,
  5423.      __const cpu_set_t *__cpuset)
  5424.      throw () __attribute__ ((__nonnull__ (1, 3)));
  5425.  
  5426.  
  5427.  
  5428. extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
  5429.      size_t __cpusetsize,
  5430.      cpu_set_t *__cpuset)
  5431.      throw () __attribute__ ((__nonnull__ (1, 3)));
  5432.  
  5433.  
  5434.  
  5435.  
  5436.  
  5437. extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
  5438.      throw () __attribute__ ((__nonnull__ (2)));
  5439.  
  5440.  
  5441.  
  5442.  
  5443.  
  5444.  
  5445.  
  5446. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  5447.       __const struct sched_param *__param)
  5448.      throw () __attribute__ ((__nonnull__ (3)));
  5449.  
  5450.  
  5451. extern int pthread_getschedparam (pthread_t __target_thread,
  5452.       int *__restrict __policy,
  5453.       struct sched_param *__restrict __param)
  5454.      throw () __attribute__ ((__nonnull__ (2, 3)));
  5455.  
  5456.  
  5457. extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
  5458.      throw ();
  5459.  
  5460.  
  5461.  
  5462.  
  5463. extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
  5464.           size_t __buflen)
  5465.      throw () __attribute__ ((__nonnull__ (2)));
  5466.  
  5467.  
  5468. extern int pthread_setname_np (pthread_t __target_thread, __const char *__name)
  5469.      throw () __attribute__ ((__nonnull__ (2)));
  5470.  
  5471.  
  5472.  
  5473.  
  5474.  
  5475. extern int pthread_getconcurrency (void) throw ();
  5476.  
  5477.  
  5478. extern int pthread_setconcurrency (int __level) throw ();
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.  
  5486. extern int pthread_yield (void) throw ();
  5487.  
  5488.  
  5489.  
  5490.  
  5491. extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
  5492.        __const cpu_set_t *__cpuset)
  5493.      throw () __attribute__ ((__nonnull__ (3)));
  5494.  
  5495.  
  5496. extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
  5497.        cpu_set_t *__cpuset)
  5498.      throw () __attribute__ ((__nonnull__ (3)));
  5499. # 478 "/usr/include/pthread.h" 3 4
  5500. extern int pthread_once (pthread_once_t *__once_control,
  5501.     void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
  5502. # 490 "/usr/include/pthread.h" 3 4
  5503. extern int pthread_setcancelstate (int __state, int *__oldstate);
  5504.  
  5505.  
  5506.  
  5507. extern int pthread_setcanceltype (int __type, int *__oldtype);
  5508.  
  5509.  
  5510. extern int pthread_cancel (pthread_t __th);
  5511.  
  5512.  
  5513.  
  5514.  
  5515. extern void pthread_testcancel (void);
  5516.  
  5517.  
  5518.  
  5519.  
  5520. typedef struct
  5521. {
  5522.   struct
  5523.   {
  5524.     __jmp_buf __cancel_jmp_buf;
  5525.     int __mask_was_saved;
  5526.   } __cancel_jmp_buf[1];
  5527.   void *__pad[4];
  5528. } __pthread_unwind_buf_t __attribute__ ((__aligned__));
  5529. # 524 "/usr/include/pthread.h" 3 4
  5530. struct __pthread_cleanup_frame
  5531. {
  5532.   void (*__cancel_routine) (void *);
  5533.   void *__cancel_arg;
  5534.   int __do_it;
  5535.   int __cancel_type;
  5536. };
  5537.  
  5538.  
  5539.  
  5540.  
  5541. class __pthread_cleanup_class
  5542. {
  5543.   void (*__cancel_routine) (void *);
  5544.   void *__cancel_arg;
  5545.   int __do_it;
  5546.   int __cancel_type;
  5547.  
  5548.  public:
  5549.   __pthread_cleanup_class (void (*__fct) (void *), void *__arg)
  5550.     : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { }
  5551.   ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); }
  5552.   void __setdoit (int __newval) { __do_it = __newval; }
  5553.   void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED,
  5554.         &__cancel_type); }
  5555.   void __restore () const { pthread_setcanceltype (__cancel_type, 0); }
  5556. };
  5557. # 726 "/usr/include/pthread.h" 3 4
  5558. struct __jmp_buf_tag;
  5559. extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw ();
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565. extern int pthread_mutex_init (pthread_mutex_t *__mutex,
  5566.           __const pthread_mutexattr_t *__mutexattr)
  5567.      throw () __attribute__ ((__nonnull__ (1)));
  5568.  
  5569.  
  5570. extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
  5571.      throw () __attribute__ ((__nonnull__ (1)));
  5572.  
  5573.  
  5574. extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
  5575.      throw () __attribute__ ((__nonnull__ (1)));
  5576.  
  5577.  
  5578. extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
  5579.      throw () __attribute__ ((__nonnull__ (1)));
  5580.  
  5581.  
  5582.  
  5583. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  5584.         __const struct timespec *__restrict
  5585.         __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
  5586.  
  5587.  
  5588.  
  5589. extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
  5590.      throw () __attribute__ ((__nonnull__ (1)));
  5591.  
  5592.  
  5593.  
  5594. extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
  5595.       __restrict __mutex,
  5596.       int *__restrict __prioceiling)
  5597.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5598.  
  5599.  
  5600.  
  5601. extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
  5602.       int __prioceiling,
  5603.       int *__restrict __old_ceiling)
  5604.      throw () __attribute__ ((__nonnull__ (1, 3)));
  5605.  
  5606.  
  5607.  
  5608.  
  5609. extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
  5610.      throw () __attribute__ ((__nonnull__ (1)));
  5611.  
  5612. extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
  5613.      throw () __attribute__ ((__nonnull__ (1)));
  5614. # 790 "/usr/include/pthread.h" 3 4
  5615. extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
  5616.      throw () __attribute__ ((__nonnull__ (1)));
  5617.  
  5618.  
  5619. extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
  5620.      throw () __attribute__ ((__nonnull__ (1)));
  5621.  
  5622.  
  5623. extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  5624.       __restrict __attr,
  5625.       int *__restrict __pshared)
  5626.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5627.  
  5628.  
  5629. extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
  5630.       int __pshared)
  5631.      throw () __attribute__ ((__nonnull__ (1)));
  5632.  
  5633.  
  5634.  
  5635. extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  5636.           __attr, int *__restrict __kind)
  5637.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5638.  
  5639.  
  5640.  
  5641.  
  5642. extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
  5643.      throw () __attribute__ ((__nonnull__ (1)));
  5644.  
  5645.  
  5646.  
  5647. extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
  5648.        __restrict __attr,
  5649.        int *__restrict __protocol)
  5650.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5651.  
  5652.  
  5653.  
  5654. extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
  5655.        int __protocol)
  5656.      throw () __attribute__ ((__nonnull__ (1)));
  5657.  
  5658.  
  5659. extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
  5660.           __restrict __attr,
  5661.           int *__restrict __prioceiling)
  5662.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5663.  
  5664.  
  5665. extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
  5666.           int __prioceiling)
  5667.      throw () __attribute__ ((__nonnull__ (1)));
  5668.  
  5669.  
  5670.  
  5671. extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr,
  5672.      int *__robustness)
  5673.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5674.  
  5675. extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
  5676.         int *__robustness)
  5677.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5678.  
  5679.  
  5680.  
  5681. extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
  5682.      int __robustness)
  5683.      throw () __attribute__ ((__nonnull__ (1)));
  5684.  
  5685. extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
  5686.         int __robustness)
  5687.      throw () __attribute__ ((__nonnull__ (1)));
  5688. # 872 "/usr/include/pthread.h" 3 4
  5689. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  5690.     __const pthread_rwlockattr_t *__restrict
  5691.     __attr) throw () __attribute__ ((__nonnull__ (1)));
  5692.  
  5693.  
  5694. extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
  5695.      throw () __attribute__ ((__nonnull__ (1)));
  5696.  
  5697.  
  5698. extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
  5699.      throw () __attribute__ ((__nonnull__ (1)));
  5700.  
  5701.  
  5702. extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
  5703.   throw () __attribute__ ((__nonnull__ (1)));
  5704.  
  5705.  
  5706.  
  5707. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  5708.            __const struct timespec *__restrict
  5709.            __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
  5710.  
  5711.  
  5712.  
  5713. extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
  5714.      throw () __attribute__ ((__nonnull__ (1)));
  5715.  
  5716.  
  5717. extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
  5718.      throw () __attribute__ ((__nonnull__ (1)));
  5719.  
  5720.  
  5721.  
  5722. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  5723.            __const struct timespec *__restrict
  5724.            __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
  5725.  
  5726.  
  5727.  
  5728. extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
  5729.      throw () __attribute__ ((__nonnull__ (1)));
  5730.  
  5731.  
  5732.  
  5733.  
  5734.  
  5735. extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
  5736.      throw () __attribute__ ((__nonnull__ (1)));
  5737.  
  5738.  
  5739. extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
  5740.      throw () __attribute__ ((__nonnull__ (1)));
  5741.  
  5742.  
  5743. extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  5744.        __restrict __attr,
  5745.        int *__restrict __pshared)
  5746.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5747.  
  5748.  
  5749. extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
  5750.        int __pshared)
  5751.      throw () __attribute__ ((__nonnull__ (1)));
  5752.  
  5753.  
  5754. extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
  5755.        __restrict __attr,
  5756.        int *__restrict __pref)
  5757.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5758.  
  5759.  
  5760. extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
  5761.        int __pref) throw () __attribute__ ((__nonnull__ (1)));
  5762.  
  5763.  
  5764.  
  5765.  
  5766.  
  5767.  
  5768.  
  5769. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  5770.          __const pthread_condattr_t *__restrict
  5771.          __cond_attr) throw () __attribute__ ((__nonnull__ (1)));
  5772.  
  5773.  
  5774. extern int pthread_cond_destroy (pthread_cond_t *__cond)
  5775.      throw () __attribute__ ((__nonnull__ (1)));
  5776.  
  5777.  
  5778. extern int pthread_cond_signal (pthread_cond_t *__cond)
  5779.      throw () __attribute__ ((__nonnull__ (1)));
  5780.  
  5781.  
  5782. extern int pthread_cond_broadcast (pthread_cond_t *__cond)
  5783.      throw () __attribute__ ((__nonnull__ (1)));
  5784.  
  5785.  
  5786.  
  5787.  
  5788.  
  5789.  
  5790. extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
  5791.          pthread_mutex_t *__restrict __mutex)
  5792.      __attribute__ ((__nonnull__ (1, 2)));
  5793. # 984 "/usr/include/pthread.h" 3 4
  5794. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  5795.        pthread_mutex_t *__restrict __mutex,
  5796.        __const struct timespec *__restrict
  5797.        __abstime) __attribute__ ((__nonnull__ (1, 2, 3)));
  5798.  
  5799.  
  5800.  
  5801.  
  5802. extern int pthread_condattr_init (pthread_condattr_t *__attr)
  5803.      throw () __attribute__ ((__nonnull__ (1)));
  5804.  
  5805.  
  5806. extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
  5807.      throw () __attribute__ ((__nonnull__ (1)));
  5808.  
  5809.  
  5810. extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  5811.      __restrict __attr,
  5812.      int *__restrict __pshared)
  5813.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5814.  
  5815.  
  5816. extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
  5817.      int __pshared) throw () __attribute__ ((__nonnull__ (1)));
  5818.  
  5819.  
  5820.  
  5821. extern int pthread_condattr_getclock (__const pthread_condattr_t *
  5822.           __restrict __attr,
  5823.           __clockid_t *__restrict __clock_id)
  5824.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5825.  
  5826.  
  5827. extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
  5828.           __clockid_t __clock_id)
  5829.      throw () __attribute__ ((__nonnull__ (1)));
  5830. # 1028 "/usr/include/pthread.h" 3 4
  5831. extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
  5832.      throw () __attribute__ ((__nonnull__ (1)));
  5833.  
  5834.  
  5835. extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
  5836.      throw () __attribute__ ((__nonnull__ (1)));
  5837.  
  5838.  
  5839. extern int pthread_spin_lock (pthread_spinlock_t *__lock)
  5840.      throw () __attribute__ ((__nonnull__ (1)));
  5841.  
  5842.  
  5843. extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
  5844.      throw () __attribute__ ((__nonnull__ (1)));
  5845.  
  5846.  
  5847. extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
  5848.      throw () __attribute__ ((__nonnull__ (1)));
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  5856.      __const pthread_barrierattr_t *__restrict
  5857.      __attr, unsigned int __count)
  5858.      throw () __attribute__ ((__nonnull__ (1)));
  5859.  
  5860.  
  5861. extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
  5862.      throw () __attribute__ ((__nonnull__ (1)));
  5863.  
  5864.  
  5865. extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
  5866.      throw () __attribute__ ((__nonnull__ (1)));
  5867.  
  5868.  
  5869.  
  5870. extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
  5871.      throw () __attribute__ ((__nonnull__ (1)));
  5872.  
  5873.  
  5874. extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
  5875.      throw () __attribute__ ((__nonnull__ (1)));
  5876.  
  5877.  
  5878. extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  5879.         __restrict __attr,
  5880.         int *__restrict __pshared)
  5881.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5882.  
  5883.  
  5884. extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
  5885.         int __pshared)
  5886.      throw () __attribute__ ((__nonnull__ (1)));
  5887. # 1095 "/usr/include/pthread.h" 3 4
  5888. extern int pthread_key_create (pthread_key_t *__key,
  5889.           void (*__destr_function) (void *))
  5890.      throw () __attribute__ ((__nonnull__ (1)));
  5891.  
  5892.  
  5893. extern int pthread_key_delete (pthread_key_t __key) throw ();
  5894.  
  5895.  
  5896. extern void *pthread_getspecific (pthread_key_t __key) throw ();
  5897.  
  5898.  
  5899. extern int pthread_setspecific (pthread_key_t __key,
  5900.     __const void *__pointer) throw () ;
  5901.  
  5902.  
  5903.  
  5904.  
  5905. extern int pthread_getcpuclockid (pthread_t __thread_id,
  5906.       __clockid_t *__clock_id)
  5907.      throw () __attribute__ ((__nonnull__ (2)));
  5908. # 1129 "/usr/include/pthread.h" 3 4
  5909. extern int pthread_atfork (void (*__prepare) (void),
  5910.       void (*__parent) (void),
  5911.       void (*__child) (void)) throw ();
  5912. # 1143 "/usr/include/pthread.h" 3 4
  5913. }
  5914. # 42 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 2 3
  5915. # 53 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  5916. typedef pthread_t __gthread_t;
  5917. typedef pthread_key_t __gthread_key_t;
  5918. typedef pthread_once_t __gthread_once_t;
  5919. typedef pthread_mutex_t __gthread_mutex_t;
  5920. typedef pthread_mutex_t __gthread_recursive_mutex_t;
  5921. typedef pthread_cond_t __gthread_cond_t;
  5922. typedef struct timespec __gthread_time_t;
  5923. # 140 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  5924. static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
  5925. static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
  5926. static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
  5927.  
  5928. static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
  5929. static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join")));
  5930. static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal")));
  5931. static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self")));
  5932. static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach")));
  5933.  
  5934. static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
  5935.  
  5936. static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield")));
  5937.  
  5938. static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
  5939. static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
  5940.  
  5941. static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock")));
  5942.  
  5943. static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
  5944. static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
  5945. static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy")));
  5946.  
  5947. static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init")));
  5948. static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast")));
  5949. static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal")));
  5950. static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait")));
  5951. static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait")));
  5952. static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy")));
  5953.  
  5954.  
  5955. static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
  5956. static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
  5957. static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
  5958. static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
  5959. static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy")));
  5960. # 258 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  5961. static inline int
  5962. __gthread_active_p (void)
  5963. {
  5964.  
  5965.  
  5966.  
  5967.   static void *const __gthread_active_ptr
  5968.     = __extension__ (void *) &__gthrw_pthread_cancel;
  5969.  
  5970.  
  5971.  
  5972.  
  5973.   return __gthread_active_ptr != 0;
  5974. }
  5975. # 677 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  5976. static inline int
  5977. __gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
  5978.     void *__args)
  5979. {
  5980.   return __gthrw_pthread_create (__threadid, __null, __func, __args);
  5981. }
  5982.  
  5983. static inline int
  5984. __gthread_join (__gthread_t __threadid, void **__value_ptr)
  5985. {
  5986.   return __gthrw_pthread_join (__threadid, __value_ptr);
  5987. }
  5988.  
  5989. static inline int
  5990. __gthread_detach (__gthread_t __threadid)
  5991. {
  5992.   return __gthrw_pthread_detach (__threadid);
  5993. }
  5994.  
  5995. static inline int
  5996. __gthread_equal (__gthread_t __t1, __gthread_t __t2)
  5997. {
  5998.   return __gthrw_pthread_equal (__t1, __t2);
  5999. }
  6000.  
  6001. static inline __gthread_t
  6002. __gthread_self (void)
  6003. {
  6004.   return __gthrw_pthread_self ();
  6005. }
  6006.  
  6007. static inline int
  6008. __gthread_yield (void)
  6009. {
  6010.   return __gthrw_sched_yield ();
  6011. }
  6012.  
  6013. static inline int
  6014. __gthread_once (__gthread_once_t *__once, void (*__func) (void))
  6015. {
  6016.   if (__gthread_active_p ())
  6017.     return __gthrw_pthread_once (__once, __func);
  6018.   else
  6019.     return -1;
  6020. }
  6021.  
  6022. static inline int
  6023. __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
  6024. {
  6025.   return __gthrw_pthread_key_create (__key, __dtor);
  6026. }
  6027.  
  6028. static inline int
  6029. __gthread_key_delete (__gthread_key_t __key)
  6030. {
  6031.   return __gthrw_pthread_key_delete (__key);
  6032. }
  6033.  
  6034. static inline void *
  6035. __gthread_getspecific (__gthread_key_t __key)
  6036. {
  6037.   return __gthrw_pthread_getspecific (__key);
  6038. }
  6039.  
  6040. static inline int
  6041. __gthread_setspecific (__gthread_key_t __key, const void *__ptr)
  6042. {
  6043.   return __gthrw_pthread_setspecific (__key, __ptr);
  6044. }
  6045. # 756 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  6046. static inline int
  6047. __gthread_mutex_destroy (__gthread_mutex_t *__mutex)
  6048. {
  6049.   if (__gthread_active_p ())
  6050.     return __gthrw_pthread_mutex_destroy (__mutex);
  6051.   else
  6052.     return 0;
  6053. }
  6054.  
  6055. static inline int
  6056. __gthread_mutex_lock (__gthread_mutex_t *__mutex)
  6057. {
  6058.   if (__gthread_active_p ())
  6059.     return __gthrw_pthread_mutex_lock (__mutex);
  6060.   else
  6061.     return 0;
  6062. }
  6063.  
  6064. static inline int
  6065. __gthread_mutex_trylock (__gthread_mutex_t *__mutex)
  6066. {
  6067.   if (__gthread_active_p ())
  6068.     return __gthrw_pthread_mutex_trylock (__mutex);
  6069.   else
  6070.     return 0;
  6071. }
  6072.  
  6073.  
  6074. static inline int
  6075. __gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
  6076.       const __gthread_time_t *__abs_timeout)
  6077. {
  6078.   if (__gthread_active_p ())
  6079.     return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout);
  6080.   else
  6081.     return 0;
  6082. }
  6083.  
  6084.  
  6085. static inline int
  6086. __gthread_mutex_unlock (__gthread_mutex_t *__mutex)
  6087. {
  6088.   if (__gthread_active_p ())
  6089.     return __gthrw_pthread_mutex_unlock (__mutex);
  6090.   else
  6091.     return 0;
  6092. }
  6093. # 828 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  6094. static inline int
  6095. __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
  6096. {
  6097.   return __gthread_mutex_lock (__mutex);
  6098. }
  6099.  
  6100. static inline int
  6101. __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
  6102. {
  6103.   return __gthread_mutex_trylock (__mutex);
  6104. }
  6105.  
  6106.  
  6107. static inline int
  6108. __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
  6109.          const __gthread_time_t *__abs_timeout)
  6110. {
  6111.   return __gthread_mutex_timedlock (__mutex, __abs_timeout);
  6112. }
  6113.  
  6114.  
  6115. static inline int
  6116. __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
  6117. {
  6118.   return __gthread_mutex_unlock (__mutex);
  6119. }
  6120. # 864 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr-default.h" 3
  6121. static inline int
  6122. __gthread_cond_broadcast (__gthread_cond_t *__cond)
  6123. {
  6124.   return __gthrw_pthread_cond_broadcast (__cond);
  6125. }
  6126.  
  6127. static inline int
  6128. __gthread_cond_signal (__gthread_cond_t *__cond)
  6129. {
  6130.   return __gthrw_pthread_cond_signal (__cond);
  6131. }
  6132.  
  6133. static inline int
  6134. __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
  6135. {
  6136.   return __gthrw_pthread_cond_wait (__cond, __mutex);
  6137. }
  6138.  
  6139. static inline int
  6140. __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
  6141.      const __gthread_time_t *__abs_timeout)
  6142. {
  6143.   return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout);
  6144. }
  6145.  
  6146. static inline int
  6147. __gthread_cond_wait_recursive (__gthread_cond_t *__cond,
  6148.           __gthread_recursive_mutex_t *__mutex)
  6149. {
  6150.   return __gthread_cond_wait (__cond, __mutex);
  6151. }
  6152.  
  6153. static inline int
  6154. __gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
  6155.         __gthread_recursive_mutex_t *__mutex,
  6156.         const __gthread_time_t *__abs_timeout)
  6157. {
  6158.   return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
  6159. }
  6160.  
  6161. static inline int
  6162. __gthread_cond_destroy (__gthread_cond_t* __cond)
  6163. {
  6164.   return __gthrw_pthread_cond_destroy (__cond);
  6165. }
  6166. # 151 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/gthr.h" 2 3
  6167.  
  6168.  
  6169. #pragma GCC visibility pop
  6170. # 35 "/usr/include/c++/4.7/ext/atomicity.h" 2 3
  6171. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/atomic_word.h" 1 3
  6172. # 32 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/atomic_word.h" 3
  6173. typedef int _Atomic_word;
  6174. # 36 "/usr/include/c++/4.7/ext/atomicity.h" 2 3
  6175.  
  6176. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  6177. {
  6178.  
  6179.  
  6180.  
  6181.  
  6182.  
  6183.  
  6184.  
  6185.   static inline _Atomic_word
  6186.   __exchange_and_add(volatile _Atomic_word* __mem, int __val)
  6187.   { return __atomic_fetch_add(__mem, __val, 4); }
  6188.  
  6189.   static inline void
  6190.   __atomic_add(volatile _Atomic_word* __mem, int __val)
  6191.   { __atomic_fetch_add(__mem, __val, 4); }
  6192. # 63 "/usr/include/c++/4.7/ext/atomicity.h" 3
  6193.   static inline _Atomic_word
  6194.   __exchange_and_add_single(_Atomic_word* __mem, int __val)
  6195.   {
  6196.     _Atomic_word __result = *__mem;
  6197.     *__mem += __val;
  6198.     return __result;
  6199.   }
  6200.  
  6201.   static inline void
  6202.   __atomic_add_single(_Atomic_word* __mem, int __val)
  6203.   { *__mem += __val; }
  6204.  
  6205.   static inline _Atomic_word
  6206.   __attribute__ ((__unused__))
  6207.   __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
  6208.   {
  6209.  
  6210.     if (__gthread_active_p())
  6211.       return __exchange_and_add(__mem, __val);
  6212.     else
  6213.       return __exchange_and_add_single(__mem, __val);
  6214.  
  6215.  
  6216.  
  6217.   }
  6218.  
  6219.   static inline void
  6220.   __attribute__ ((__unused__))
  6221.   __atomic_add_dispatch(_Atomic_word* __mem, int __val)
  6222.   {
  6223.  
  6224.     if (__gthread_active_p())
  6225.       __atomic_add(__mem, __val);
  6226.     else
  6227.       __atomic_add_single(__mem, __val);
  6228.  
  6229.  
  6230.  
  6231.   }
  6232.  
  6233.  
  6234. }
  6235. # 42 "/usr/include/c++/4.7/bits/ios_base.h" 2 3
  6236.  
  6237. # 1 "/usr/include/c++/4.7/bits/locale_classes.h" 1 3
  6238. # 39 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  6239.        
  6240. # 40 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  6241.  
  6242.  
  6243. # 1 "/usr/include/c++/4.7/string" 1 3
  6244. # 38 "/usr/include/c++/4.7/string" 3
  6245.        
  6246. # 39 "/usr/include/c++/4.7/string" 3
  6247.  
  6248.  
  6249.  
  6250.  
  6251. # 1 "/usr/include/c++/4.7/bits/allocator.h" 1 3
  6252. # 48 "/usr/include/c++/4.7/bits/allocator.h" 3
  6253. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h" 1 3
  6254. # 34 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h" 3
  6255. # 1 "/usr/include/c++/4.7/ext/new_allocator.h" 1 3
  6256. # 34 "/usr/include/c++/4.7/ext/new_allocator.h" 3
  6257. # 1 "/usr/include/c++/4.7/new" 1 3
  6258. # 39 "/usr/include/c++/4.7/new" 3
  6259.        
  6260. # 40 "/usr/include/c++/4.7/new" 3
  6261.  
  6262.  
  6263.  
  6264.  
  6265. #pragma GCC visibility push(default)
  6266.  
  6267. extern "C++" {
  6268.  
  6269. namespace std
  6270. {
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.   class bad_alloc : public exception
  6278.   {
  6279.   public:
  6280.     bad_alloc() throw() { }
  6281.  
  6282.  
  6283.  
  6284.     virtual ~bad_alloc() throw();
  6285.  
  6286.  
  6287.     virtual const char* what() const throw();
  6288.   };
  6289.  
  6290.   struct nothrow_t { };
  6291.  
  6292.   extern const nothrow_t nothrow;
  6293.  
  6294.  
  6295.  
  6296.   typedef void (*new_handler)();
  6297.  
  6298.  
  6299.  
  6300.   new_handler set_new_handler(new_handler) throw();
  6301. }
  6302. # 93 "/usr/include/c++/4.7/new" 3
  6303. void* operator new(std::size_t) throw(std::bad_alloc)
  6304.   __attribute__((__externally_visible__));
  6305. void* operator new[](std::size_t) throw(std::bad_alloc)
  6306.   __attribute__((__externally_visible__));
  6307. void operator delete(void*) throw()
  6308.   __attribute__((__externally_visible__));
  6309. void operator delete[](void*) throw()
  6310.   __attribute__((__externally_visible__));
  6311. void* operator new(std::size_t, const std::nothrow_t&) throw()
  6312.   __attribute__((__externally_visible__));
  6313. void* operator new[](std::size_t, const std::nothrow_t&) throw()
  6314.   __attribute__((__externally_visible__));
  6315. void operator delete(void*, const std::nothrow_t&) throw()
  6316.   __attribute__((__externally_visible__));
  6317. void operator delete[](void*, const std::nothrow_t&) throw()
  6318.   __attribute__((__externally_visible__));
  6319.  
  6320.  
  6321. inline void* operator new(std::size_t, void* __p) throw()
  6322. { return __p; }
  6323. inline void* operator new[](std::size_t, void* __p) throw()
  6324. { return __p; }
  6325.  
  6326.  
  6327. inline void operator delete (void*, void*) throw() { }
  6328. inline void operator delete[](void*, void*) throw() { }
  6329.  
  6330. }
  6331.  
  6332. #pragma GCC visibility pop
  6333. # 35 "/usr/include/c++/4.7/ext/new_allocator.h" 2 3
  6334.  
  6335.  
  6336.  
  6337. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  6338. {
  6339.  
  6340.  
  6341.   using std::size_t;
  6342.   using std::ptrdiff_t;
  6343. # 53 "/usr/include/c++/4.7/ext/new_allocator.h" 3
  6344.   template<typename _Tp>
  6345.     class new_allocator
  6346.     {
  6347.     public:
  6348.       typedef size_t size_type;
  6349.       typedef ptrdiff_t difference_type;
  6350.       typedef _Tp* pointer;
  6351.       typedef const _Tp* const_pointer;
  6352.       typedef _Tp& reference;
  6353.       typedef const _Tp& const_reference;
  6354.       typedef _Tp value_type;
  6355.  
  6356.       template<typename _Tp1>
  6357.         struct rebind
  6358.         { typedef new_allocator<_Tp1> other; };
  6359.  
  6360.       new_allocator() throw() { }
  6361.  
  6362.       new_allocator(const new_allocator&) throw() { }
  6363.  
  6364.       template<typename _Tp1>
  6365.         new_allocator(const new_allocator<_Tp1>&) throw() { }
  6366.  
  6367.       ~new_allocator() throw() { }
  6368.  
  6369.       pointer
  6370.       address(reference __x) const
  6371.       { return std::__addressof(__x); }
  6372.  
  6373.       const_pointer
  6374.       address(const_reference __x) const
  6375.       { return std::__addressof(__x); }
  6376.  
  6377.  
  6378.  
  6379.       pointer
  6380.       allocate(size_type __n, const void* = 0)
  6381.       {
  6382.  if (__n > this->max_size())
  6383.    std::__throw_bad_alloc();
  6384.  
  6385.  return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
  6386.       }
  6387.  
  6388.  
  6389.       void
  6390.       deallocate(pointer __p, size_type)
  6391.       { ::operator delete(__p); }
  6392.  
  6393.       size_type
  6394.       max_size() const throw()
  6395.       { return size_t(-1) / sizeof(_Tp); }
  6396. # 118 "/usr/include/c++/4.7/ext/new_allocator.h" 3
  6397.       void
  6398.       construct(pointer __p, const _Tp& __val)
  6399.       { ::new((void *)__p) _Tp(__val); }
  6400.  
  6401.       void
  6402.       destroy(pointer __p) { __p->~_Tp(); }
  6403.  
  6404.     };
  6405.  
  6406.   template<typename _Tp>
  6407.     inline bool
  6408.     operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
  6409.     { return true; }
  6410.  
  6411.   template<typename _Tp>
  6412.     inline bool
  6413.     operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
  6414.     { return false; }
  6415.  
  6416.  
  6417. }
  6418. # 35 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h" 2 3
  6419. # 49 "/usr/include/c++/4.7/bits/allocator.h" 2 3
  6420.  
  6421. namespace std __attribute__ ((__visibility__ ("default")))
  6422. {
  6423.  
  6424. # 63 "/usr/include/c++/4.7/bits/allocator.h" 3
  6425.   template<typename _Tp>
  6426.     class allocator;
  6427.  
  6428.  
  6429.   template<>
  6430.     class allocator<void>
  6431.     {
  6432.     public:
  6433.       typedef size_t size_type;
  6434.       typedef ptrdiff_t difference_type;
  6435.       typedef void* pointer;
  6436.       typedef const void* const_pointer;
  6437.       typedef void value_type;
  6438.  
  6439.       template<typename _Tp1>
  6440.         struct rebind
  6441.         { typedef allocator<_Tp1> other; };
  6442.     };
  6443.  
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.   template<typename _Tp>
  6451.     class allocator: public __gnu_cxx::new_allocator<_Tp>
  6452.     {
  6453.    public:
  6454.       typedef size_t size_type;
  6455.       typedef ptrdiff_t difference_type;
  6456.       typedef _Tp* pointer;
  6457.       typedef const _Tp* const_pointer;
  6458.       typedef _Tp& reference;
  6459.       typedef const _Tp& const_reference;
  6460.       typedef _Tp value_type;
  6461.  
  6462.       template<typename _Tp1>
  6463.         struct rebind
  6464.         { typedef allocator<_Tp1> other; };
  6465.  
  6466.       allocator() throw() { }
  6467.  
  6468.       allocator(const allocator& __a) throw()
  6469.       : __gnu_cxx::new_allocator<_Tp>(__a) { }
  6470.  
  6471.       template<typename _Tp1>
  6472.         allocator(const allocator<_Tp1>&) throw() { }
  6473.  
  6474.       ~allocator() throw() { }
  6475.  
  6476.  
  6477.     };
  6478.  
  6479.   template<typename _T1, typename _T2>
  6480.     inline bool
  6481.     operator==(const allocator<_T1>&, const allocator<_T2>&)
  6482.     { return true; }
  6483.  
  6484.   template<typename _Tp>
  6485.     inline bool
  6486.     operator==(const allocator<_Tp>&, const allocator<_Tp>&)
  6487.     { return true; }
  6488.  
  6489.   template<typename _T1, typename _T2>
  6490.     inline bool
  6491.     operator!=(const allocator<_T1>&, const allocator<_T2>&)
  6492.     { return false; }
  6493.  
  6494.   template<typename _Tp>
  6495.     inline bool
  6496.     operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
  6497.     { return false; }
  6498. # 144 "/usr/include/c++/4.7/bits/allocator.h" 3
  6499.   extern template class allocator<char>;
  6500.   extern template class allocator<wchar_t>;
  6501.  
  6502.  
  6503.  
  6504.  
  6505.  
  6506.  
  6507.   template<typename _Alloc, bool = __is_empty(_Alloc)>
  6508.     struct __alloc_swap
  6509.     { static void _S_do_it(_Alloc&, _Alloc&) { } };
  6510.  
  6511.   template<typename _Alloc>
  6512.     struct __alloc_swap<_Alloc, false>
  6513.     {
  6514.       static void
  6515.       _S_do_it(_Alloc& __one, _Alloc& __two)
  6516.       {
  6517.  
  6518.  if (__one != __two)
  6519.    swap(__one, __two);
  6520.       }
  6521.     };
  6522.  
  6523.  
  6524.   template<typename _Alloc, bool = __is_empty(_Alloc)>
  6525.     struct __alloc_neq
  6526.     {
  6527.       static bool
  6528.       _S_do_it(const _Alloc&, const _Alloc&)
  6529.       { return false; }
  6530.     };
  6531.  
  6532.   template<typename _Alloc>
  6533.     struct __alloc_neq<_Alloc, false>
  6534.     {
  6535.       static bool
  6536.       _S_do_it(const _Alloc& __one, const _Alloc& __two)
  6537.       { return __one != __two; }
  6538.     };
  6539. # 215 "/usr/include/c++/4.7/bits/allocator.h" 3
  6540.  
  6541. }
  6542. # 44 "/usr/include/c++/4.7/string" 2 3
  6543.  
  6544.  
  6545. # 1 "/usr/include/c++/4.7/bits/ostream_insert.h" 1 3
  6546. # 33 "/usr/include/c++/4.7/bits/ostream_insert.h" 3
  6547.        
  6548. # 34 "/usr/include/c++/4.7/bits/ostream_insert.h" 3
  6549.  
  6550.  
  6551. # 1 "/usr/include/c++/4.7/bits/cxxabi_forced.h" 1 3
  6552. # 34 "/usr/include/c++/4.7/bits/cxxabi_forced.h" 3
  6553.        
  6554. # 35 "/usr/include/c++/4.7/bits/cxxabi_forced.h" 3
  6555.  
  6556. #pragma GCC visibility push(default)
  6557.  
  6558.  
  6559. namespace __cxxabiv1
  6560. {
  6561.  
  6562.  
  6563.  
  6564.  
  6565.  
  6566.  
  6567.  
  6568.   class __forced_unwind
  6569.   {
  6570.     virtual ~__forced_unwind() throw();
  6571.  
  6572.  
  6573.     virtual void __pure_dummy() = 0;
  6574.   };
  6575. }
  6576.  
  6577.  
  6578. #pragma GCC visibility pop
  6579. # 37 "/usr/include/c++/4.7/bits/ostream_insert.h" 2 3
  6580.  
  6581. namespace std __attribute__ ((__visibility__ ("default")))
  6582. {
  6583.  
  6584.  
  6585.   template<typename _CharT, typename _Traits>
  6586.     inline void
  6587.     __ostream_write(basic_ostream<_CharT, _Traits>& __out,
  6588.       const _CharT* __s, streamsize __n)
  6589.     {
  6590.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  6591.       typedef typename __ostream_type::ios_base __ios_base;
  6592.  
  6593.       const streamsize __put = __out.rdbuf()->sputn(__s, __n);
  6594.       if (__put != __n)
  6595.  __out.setstate(__ios_base::badbit);
  6596.     }
  6597.  
  6598.   template<typename _CharT, typename _Traits>
  6599.     inline void
  6600.     __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
  6601.     {
  6602.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  6603.       typedef typename __ostream_type::ios_base __ios_base;
  6604.  
  6605.       const _CharT __c = __out.fill();
  6606.       for (; __n > 0; --__n)
  6607.  {
  6608.    const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
  6609.    if (_Traits::eq_int_type(__put, _Traits::eof()))
  6610.      {
  6611.        __out.setstate(__ios_base::badbit);
  6612.        break;
  6613.      }
  6614.  }
  6615.     }
  6616.  
  6617.   template<typename _CharT, typename _Traits>
  6618.     basic_ostream<_CharT, _Traits>&
  6619.     __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
  6620.        const _CharT* __s, streamsize __n)
  6621.     {
  6622.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  6623.       typedef typename __ostream_type::ios_base __ios_base;
  6624.  
  6625.       typename __ostream_type::sentry __cerb(__out);
  6626.       if (__cerb)
  6627.  {
  6628.    try
  6629.      {
  6630.        const streamsize __w = __out.width();
  6631.        if (__w > __n)
  6632.   {
  6633.     const bool __left = ((__out.flags()
  6634.      & __ios_base::adjustfield)
  6635.            == __ios_base::left);
  6636.     if (!__left)
  6637.       __ostream_fill(__out, __w - __n);
  6638.     if (__out.good())
  6639.       __ostream_write(__out, __s, __n);
  6640.     if (__left && __out.good())
  6641.       __ostream_fill(__out, __w - __n);
  6642.   }
  6643.        else
  6644.   __ostream_write(__out, __s, __n);
  6645.        __out.width(0);
  6646.      }
  6647.    catch(__cxxabiv1::__forced_unwind&)
  6648.      {
  6649.        __out._M_setstate(__ios_base::badbit);
  6650.        throw;
  6651.      }
  6652.    catch(...)
  6653.      { __out._M_setstate(__ios_base::badbit); }
  6654.  }
  6655.       return __out;
  6656.     }
  6657.  
  6658.  
  6659.  
  6660.  
  6661.   extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
  6662.  
  6663.  
  6664.   extern template wostream& __ostream_insert(wostream&, const wchar_t*,
  6665.           streamsize);
  6666.  
  6667.  
  6668.  
  6669.  
  6670. }
  6671. # 47 "/usr/include/c++/4.7/string" 2 3
  6672.  
  6673.  
  6674.  
  6675. # 1 "/usr/include/c++/4.7/bits/stl_function.h" 1 3
  6676. # 61 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6677. namespace std __attribute__ ((__visibility__ ("default")))
  6678. {
  6679.  
  6680. # 102 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6681.   template<typename _Arg, typename _Result>
  6682.     struct unary_function
  6683.     {
  6684.  
  6685.       typedef _Arg argument_type;
  6686.  
  6687.  
  6688.       typedef _Result result_type;
  6689.     };
  6690.  
  6691.  
  6692.  
  6693.  
  6694.   template<typename _Arg1, typename _Arg2, typename _Result>
  6695.     struct binary_function
  6696.     {
  6697.  
  6698.       typedef _Arg1 first_argument_type;
  6699.  
  6700.  
  6701.       typedef _Arg2 second_argument_type;
  6702.  
  6703.  
  6704.       typedef _Result result_type;
  6705.     };
  6706. # 141 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6707.   template<typename _Tp>
  6708.     struct plus : public binary_function<_Tp, _Tp, _Tp>
  6709.     {
  6710.       _Tp
  6711.       operator()(const _Tp& __x, const _Tp& __y) const
  6712.       { return __x + __y; }
  6713.     };
  6714.  
  6715.  
  6716.   template<typename _Tp>
  6717.     struct minus : public binary_function<_Tp, _Tp, _Tp>
  6718.     {
  6719.       _Tp
  6720.       operator()(const _Tp& __x, const _Tp& __y) const
  6721.       { return __x - __y; }
  6722.     };
  6723.  
  6724.  
  6725.   template<typename _Tp>
  6726.     struct multiplies : public binary_function<_Tp, _Tp, _Tp>
  6727.     {
  6728.       _Tp
  6729.       operator()(const _Tp& __x, const _Tp& __y) const
  6730.       { return __x * __y; }
  6731.     };
  6732.  
  6733.  
  6734.   template<typename _Tp>
  6735.     struct divides : public binary_function<_Tp, _Tp, _Tp>
  6736.     {
  6737.       _Tp
  6738.       operator()(const _Tp& __x, const _Tp& __y) const
  6739.       { return __x / __y; }
  6740.     };
  6741.  
  6742.  
  6743.   template<typename _Tp>
  6744.     struct modulus : public binary_function<_Tp, _Tp, _Tp>
  6745.     {
  6746.       _Tp
  6747.       operator()(const _Tp& __x, const _Tp& __y) const
  6748.       { return __x % __y; }
  6749.     };
  6750.  
  6751.  
  6752.   template<typename _Tp>
  6753.     struct negate : public unary_function<_Tp, _Tp>
  6754.     {
  6755.       _Tp
  6756.       operator()(const _Tp& __x) const
  6757.       { return -__x; }
  6758.     };
  6759. # 205 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6760.   template<typename _Tp>
  6761.     struct equal_to : public binary_function<_Tp, _Tp, bool>
  6762.     {
  6763.       bool
  6764.       operator()(const _Tp& __x, const _Tp& __y) const
  6765.       { return __x == __y; }
  6766.     };
  6767.  
  6768.  
  6769.   template<typename _Tp>
  6770.     struct not_equal_to : public binary_function<_Tp, _Tp, bool>
  6771.     {
  6772.       bool
  6773.       operator()(const _Tp& __x, const _Tp& __y) const
  6774.       { return __x != __y; }
  6775.     };
  6776.  
  6777.  
  6778.   template<typename _Tp>
  6779.     struct greater : public binary_function<_Tp, _Tp, bool>
  6780.     {
  6781.       bool
  6782.       operator()(const _Tp& __x, const _Tp& __y) const
  6783.       { return __x > __y; }
  6784.     };
  6785.  
  6786.  
  6787.   template<typename _Tp>
  6788.     struct less : public binary_function<_Tp, _Tp, bool>
  6789.     {
  6790.       bool
  6791.       operator()(const _Tp& __x, const _Tp& __y) const
  6792.       { return __x < __y; }
  6793.     };
  6794.  
  6795.  
  6796.   template<typename _Tp>
  6797.     struct greater_equal : public binary_function<_Tp, _Tp, bool>
  6798.     {
  6799.       bool
  6800.       operator()(const _Tp& __x, const _Tp& __y) const
  6801.       { return __x >= __y; }
  6802.     };
  6803.  
  6804.  
  6805.   template<typename _Tp>
  6806.     struct less_equal : public binary_function<_Tp, _Tp, bool>
  6807.     {
  6808.       bool
  6809.       operator()(const _Tp& __x, const _Tp& __y) const
  6810.       { return __x <= __y; }
  6811.     };
  6812. # 269 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6813.   template<typename _Tp>
  6814.     struct logical_and : public binary_function<_Tp, _Tp, bool>
  6815.     {
  6816.       bool
  6817.       operator()(const _Tp& __x, const _Tp& __y) const
  6818.       { return __x && __y; }
  6819.     };
  6820.  
  6821.  
  6822.   template<typename _Tp>
  6823.     struct logical_or : public binary_function<_Tp, _Tp, bool>
  6824.     {
  6825.       bool
  6826.       operator()(const _Tp& __x, const _Tp& __y) const
  6827.       { return __x || __y; }
  6828.     };
  6829.  
  6830.  
  6831.   template<typename _Tp>
  6832.     struct logical_not : public unary_function<_Tp, bool>
  6833.     {
  6834.       bool
  6835.       operator()(const _Tp& __x) const
  6836.       { return !__x; }
  6837.     };
  6838.  
  6839.  
  6840.  
  6841.  
  6842.   template<typename _Tp>
  6843.     struct bit_and : public binary_function<_Tp, _Tp, _Tp>
  6844.     {
  6845.       _Tp
  6846.       operator()(const _Tp& __x, const _Tp& __y) const
  6847.       { return __x & __y; }
  6848.     };
  6849.  
  6850.   template<typename _Tp>
  6851.     struct bit_or : public binary_function<_Tp, _Tp, _Tp>
  6852.     {
  6853.       _Tp
  6854.       operator()(const _Tp& __x, const _Tp& __y) const
  6855.       { return __x | __y; }
  6856.     };
  6857.  
  6858.   template<typename _Tp>
  6859.     struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
  6860.     {
  6861.       _Tp
  6862.       operator()(const _Tp& __x, const _Tp& __y) const
  6863.       { return __x ^ __y; }
  6864.     };
  6865. # 352 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6866.   template<typename _Predicate>
  6867.     class unary_negate
  6868.     : public unary_function<typename _Predicate::argument_type, bool>
  6869.     {
  6870.     protected:
  6871.       _Predicate _M_pred;
  6872.  
  6873.     public:
  6874.       explicit
  6875.       unary_negate(const _Predicate& __x) : _M_pred(__x) { }
  6876.  
  6877.       bool
  6878.       operator()(const typename _Predicate::argument_type& __x) const
  6879.       { return !_M_pred(__x); }
  6880.     };
  6881.  
  6882.  
  6883.   template<typename _Predicate>
  6884.     inline unary_negate<_Predicate>
  6885.     not1(const _Predicate& __pred)
  6886.     { return unary_negate<_Predicate>(__pred); }
  6887.  
  6888.  
  6889.   template<typename _Predicate>
  6890.     class binary_negate
  6891.     : public binary_function<typename _Predicate::first_argument_type,
  6892.         typename _Predicate::second_argument_type, bool>
  6893.     {
  6894.     protected:
  6895.       _Predicate _M_pred;
  6896.  
  6897.     public:
  6898.       explicit
  6899.       binary_negate(const _Predicate& __x) : _M_pred(__x) { }
  6900.  
  6901.       bool
  6902.       operator()(const typename _Predicate::first_argument_type& __x,
  6903.    const typename _Predicate::second_argument_type& __y) const
  6904.       { return !_M_pred(__x, __y); }
  6905.     };
  6906.  
  6907.  
  6908.   template<typename _Predicate>
  6909.     inline binary_negate<_Predicate>
  6910.     not2(const _Predicate& __pred)
  6911.     { return binary_negate<_Predicate>(__pred); }
  6912. # 423 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6913.   template<typename _Arg, typename _Result>
  6914.     class pointer_to_unary_function : public unary_function<_Arg, _Result>
  6915.     {
  6916.     protected:
  6917.       _Result (*_M_ptr)(_Arg);
  6918.  
  6919.     public:
  6920.       pointer_to_unary_function() { }
  6921.  
  6922.       explicit
  6923.       pointer_to_unary_function(_Result (*__x)(_Arg))
  6924.       : _M_ptr(__x) { }
  6925.  
  6926.       _Result
  6927.       operator()(_Arg __x) const
  6928.       { return _M_ptr(__x); }
  6929.     };
  6930.  
  6931.  
  6932.   template<typename _Arg, typename _Result>
  6933.     inline pointer_to_unary_function<_Arg, _Result>
  6934.     ptr_fun(_Result (*__x)(_Arg))
  6935.     { return pointer_to_unary_function<_Arg, _Result>(__x); }
  6936.  
  6937.  
  6938.   template<typename _Arg1, typename _Arg2, typename _Result>
  6939.     class pointer_to_binary_function
  6940.     : public binary_function<_Arg1, _Arg2, _Result>
  6941.     {
  6942.     protected:
  6943.       _Result (*_M_ptr)(_Arg1, _Arg2);
  6944.  
  6945.     public:
  6946.       pointer_to_binary_function() { }
  6947.  
  6948.       explicit
  6949.       pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
  6950.       : _M_ptr(__x) { }
  6951.  
  6952.       _Result
  6953.       operator()(_Arg1 __x, _Arg2 __y) const
  6954.       { return _M_ptr(__x, __y); }
  6955.     };
  6956.  
  6957.  
  6958.   template<typename _Arg1, typename _Arg2, typename _Result>
  6959.     inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
  6960.     ptr_fun(_Result (*__x)(_Arg1, _Arg2))
  6961.     { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
  6962.  
  6963.  
  6964.   template<typename _Tp>
  6965.     struct _Identity
  6966.  
  6967.  
  6968.  
  6969.     : public unary_function<_Tp,_Tp>
  6970.  
  6971.     {
  6972.       _Tp&
  6973.       operator()(_Tp& __x) const
  6974.       { return __x; }
  6975.  
  6976.       const _Tp&
  6977.       operator()(const _Tp& __x) const
  6978.       { return __x; }
  6979.     };
  6980.  
  6981.   template<typename _Pair>
  6982.     struct _Select1st
  6983.  
  6984.     : public unary_function<_Pair, typename _Pair::first_type>
  6985.  
  6986.     {
  6987.       typename _Pair::first_type&
  6988.       operator()(_Pair& __x) const
  6989.       { return __x.first; }
  6990.  
  6991.       const typename _Pair::first_type&
  6992.       operator()(const _Pair& __x) const
  6993.       { return __x.first; }
  6994. # 516 "/usr/include/c++/4.7/bits/stl_function.h" 3
  6995.     };
  6996.  
  6997.   template<typename _Pair>
  6998.     struct _Select2nd
  6999.  
  7000.     : public unary_function<_Pair, typename _Pair::second_type>
  7001.  
  7002.     {
  7003.       typename _Pair::second_type&
  7004.       operator()(_Pair& __x) const
  7005.       { return __x.second; }
  7006.  
  7007.       const typename _Pair::second_type&
  7008.       operator()(const _Pair& __x) const
  7009.       { return __x.second; }
  7010.     };
  7011. # 551 "/usr/include/c++/4.7/bits/stl_function.h" 3
  7012.   template<typename _Ret, typename _Tp>
  7013.     class mem_fun_t : public unary_function<_Tp*, _Ret>
  7014.     {
  7015.     public:
  7016.       explicit
  7017.       mem_fun_t(_Ret (_Tp::*__pf)())
  7018.       : _M_f(__pf) { }
  7019.  
  7020.       _Ret
  7021.       operator()(_Tp* __p) const
  7022.       { return (__p->*_M_f)(); }
  7023.  
  7024.     private:
  7025.       _Ret (_Tp::*_M_f)();
  7026.     };
  7027.  
  7028.  
  7029.  
  7030.   template<typename _Ret, typename _Tp>
  7031.     class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
  7032.     {
  7033.     public:
  7034.       explicit
  7035.       const_mem_fun_t(_Ret (_Tp::*__pf)() const)
  7036.       : _M_f(__pf) { }
  7037.  
  7038.       _Ret
  7039.       operator()(const _Tp* __p) const
  7040.       { return (__p->*_M_f)(); }
  7041.  
  7042.     private:
  7043.       _Ret (_Tp::*_M_f)() const;
  7044.     };
  7045.  
  7046.  
  7047.  
  7048.   template<typename _Ret, typename _Tp>
  7049.     class mem_fun_ref_t : public unary_function<_Tp, _Ret>
  7050.     {
  7051.     public:
  7052.       explicit
  7053.       mem_fun_ref_t(_Ret (_Tp::*__pf)())
  7054.       : _M_f(__pf) { }
  7055.  
  7056.       _Ret
  7057.       operator()(_Tp& __r) const
  7058.       { return (__r.*_M_f)(); }
  7059.  
  7060.     private:
  7061.       _Ret (_Tp::*_M_f)();
  7062.   };
  7063.  
  7064.  
  7065.  
  7066.   template<typename _Ret, typename _Tp>
  7067.     class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
  7068.     {
  7069.     public:
  7070.       explicit
  7071.       const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
  7072.       : _M_f(__pf) { }
  7073.  
  7074.       _Ret
  7075.       operator()(const _Tp& __r) const
  7076.       { return (__r.*_M_f)(); }
  7077.  
  7078.     private:
  7079.       _Ret (_Tp::*_M_f)() const;
  7080.     };
  7081.  
  7082.  
  7083.  
  7084.   template<typename _Ret, typename _Tp, typename _Arg>
  7085.     class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
  7086.     {
  7087.     public:
  7088.       explicit
  7089.       mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
  7090.       : _M_f(__pf) { }
  7091.  
  7092.       _Ret
  7093.       operator()(_Tp* __p, _Arg __x) const
  7094.       { return (__p->*_M_f)(__x); }
  7095.  
  7096.     private:
  7097.       _Ret (_Tp::*_M_f)(_Arg);
  7098.     };
  7099.  
  7100.  
  7101.  
  7102.   template<typename _Ret, typename _Tp, typename _Arg>
  7103.     class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
  7104.     {
  7105.     public:
  7106.       explicit
  7107.       const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
  7108.       : _M_f(__pf) { }
  7109.  
  7110.       _Ret
  7111.       operator()(const _Tp* __p, _Arg __x) const
  7112.       { return (__p->*_M_f)(__x); }
  7113.  
  7114.     private:
  7115.       _Ret (_Tp::*_M_f)(_Arg) const;
  7116.     };
  7117.  
  7118.  
  7119.  
  7120.   template<typename _Ret, typename _Tp, typename _Arg>
  7121.     class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
  7122.     {
  7123.     public:
  7124.       explicit
  7125.       mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
  7126.       : _M_f(__pf) { }
  7127.  
  7128.       _Ret
  7129.       operator()(_Tp& __r, _Arg __x) const
  7130.       { return (__r.*_M_f)(__x); }
  7131.  
  7132.     private:
  7133.       _Ret (_Tp::*_M_f)(_Arg);
  7134.     };
  7135.  
  7136.  
  7137.  
  7138.   template<typename _Ret, typename _Tp, typename _Arg>
  7139.     class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
  7140.     {
  7141.     public:
  7142.       explicit
  7143.       const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
  7144.       : _M_f(__pf) { }
  7145.  
  7146.       _Ret
  7147.       operator()(const _Tp& __r, _Arg __x) const
  7148.       { return (__r.*_M_f)(__x); }
  7149.  
  7150.     private:
  7151.       _Ret (_Tp::*_M_f)(_Arg) const;
  7152.     };
  7153.  
  7154.  
  7155.  
  7156.   template<typename _Ret, typename _Tp>
  7157.     inline mem_fun_t<_Ret, _Tp>
  7158.     mem_fun(_Ret (_Tp::*__f)())
  7159.     { return mem_fun_t<_Ret, _Tp>(__f); }
  7160.  
  7161.   template<typename _Ret, typename _Tp>
  7162.     inline const_mem_fun_t<_Ret, _Tp>
  7163.     mem_fun(_Ret (_Tp::*__f)() const)
  7164.     { return const_mem_fun_t<_Ret, _Tp>(__f); }
  7165.  
  7166.   template<typename _Ret, typename _Tp>
  7167.     inline mem_fun_ref_t<_Ret, _Tp>
  7168.     mem_fun_ref(_Ret (_Tp::*__f)())
  7169.     { return mem_fun_ref_t<_Ret, _Tp>(__f); }
  7170.  
  7171.   template<typename _Ret, typename _Tp>
  7172.     inline const_mem_fun_ref_t<_Ret, _Tp>
  7173.     mem_fun_ref(_Ret (_Tp::*__f)() const)
  7174.     { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
  7175.  
  7176.   template<typename _Ret, typename _Tp, typename _Arg>
  7177.     inline mem_fun1_t<_Ret, _Tp, _Arg>
  7178.     mem_fun(_Ret (_Tp::*__f)(_Arg))
  7179.     { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
  7180.  
  7181.   template<typename _Ret, typename _Tp, typename _Arg>
  7182.     inline const_mem_fun1_t<_Ret, _Tp, _Arg>
  7183.     mem_fun(_Ret (_Tp::*__f)(_Arg) const)
  7184.     { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
  7185.  
  7186.   template<typename _Ret, typename _Tp, typename _Arg>
  7187.     inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
  7188.     mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
  7189.     { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
  7190.  
  7191.   template<typename _Ret, typename _Tp, typename _Arg>
  7192.     inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
  7193.     mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
  7194.     { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
  7195.  
  7196.  
  7197.  
  7198.  
  7199. }
  7200.  
  7201.  
  7202. # 1 "/usr/include/c++/4.7/backward/binders.h" 1 3
  7203. # 60 "/usr/include/c++/4.7/backward/binders.h" 3
  7204. namespace std __attribute__ ((__visibility__ ("default")))
  7205. {
  7206.  
  7207. # 104 "/usr/include/c++/4.7/backward/binders.h" 3
  7208.   template<typename _Operation>
  7209.     class binder1st
  7210.     : public unary_function<typename _Operation::second_argument_type,
  7211.        typename _Operation::result_type>
  7212.     {
  7213.     protected:
  7214.       _Operation op;
  7215.       typename _Operation::first_argument_type value;
  7216.  
  7217.     public:
  7218.       binder1st(const _Operation& __x,
  7219.   const typename _Operation::first_argument_type& __y)
  7220.       : op(__x), value(__y) { }
  7221.  
  7222.       typename _Operation::result_type
  7223.       operator()(const typename _Operation::second_argument_type& __x) const
  7224.       { return op(value, __x); }
  7225.  
  7226.  
  7227.  
  7228.       typename _Operation::result_type
  7229.       operator()(typename _Operation::second_argument_type& __x) const
  7230.       { return op(value, __x); }
  7231.     } ;
  7232.  
  7233.  
  7234.   template<typename _Operation, typename _Tp>
  7235.     inline binder1st<_Operation>
  7236.     bind1st(const _Operation& __fn, const _Tp& __x)
  7237.     {
  7238.       typedef typename _Operation::first_argument_type _Arg1_type;
  7239.       return binder1st<_Operation>(__fn, _Arg1_type(__x));
  7240.     }
  7241.  
  7242.  
  7243.   template<typename _Operation>
  7244.     class binder2nd
  7245.     : public unary_function<typename _Operation::first_argument_type,
  7246.        typename _Operation::result_type>
  7247.     {
  7248.     protected:
  7249.       _Operation op;
  7250.       typename _Operation::second_argument_type value;
  7251.  
  7252.     public:
  7253.       binder2nd(const _Operation& __x,
  7254.   const typename _Operation::second_argument_type& __y)
  7255.       : op(__x), value(__y) { }
  7256.  
  7257.       typename _Operation::result_type
  7258.       operator()(const typename _Operation::first_argument_type& __x) const
  7259.       { return op(__x, value); }
  7260.  
  7261.  
  7262.  
  7263.       typename _Operation::result_type
  7264.       operator()(typename _Operation::first_argument_type& __x) const
  7265.       { return op(__x, value); }
  7266.     } ;
  7267.  
  7268.  
  7269.   template<typename _Operation, typename _Tp>
  7270.     inline binder2nd<_Operation>
  7271.     bind2nd(const _Operation& __fn, const _Tp& __x)
  7272.     {
  7273.       typedef typename _Operation::second_argument_type _Arg2_type;
  7274.       return binder2nd<_Operation>(__fn, _Arg2_type(__x));
  7275.     }
  7276.  
  7277.  
  7278.  
  7279. }
  7280. # 742 "/usr/include/c++/4.7/bits/stl_function.h" 2 3
  7281. # 51 "/usr/include/c++/4.7/string" 2 3
  7282.  
  7283.  
  7284. # 1 "/usr/include/c++/4.7/bits/range_access.h" 1 3
  7285. # 33 "/usr/include/c++/4.7/bits/range_access.h" 3
  7286.        
  7287. # 34 "/usr/include/c++/4.7/bits/range_access.h" 3
  7288. # 54 "/usr/include/c++/4.7/string" 2 3
  7289. # 1 "/usr/include/c++/4.7/bits/basic_string.h" 1 3
  7290. # 39 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7291.        
  7292. # 40 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7293.  
  7294.  
  7295.  
  7296.  
  7297.  
  7298.  
  7299.  
  7300. namespace std __attribute__ ((__visibility__ ("default")))
  7301. {
  7302.  
  7303. # 108 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7304.   template<typename _CharT, typename _Traits, typename _Alloc>
  7305.     class basic_string
  7306.     {
  7307.       typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
  7308.  
  7309.  
  7310.     public:
  7311.       typedef _Traits traits_type;
  7312.       typedef typename _Traits::char_type value_type;
  7313.       typedef _Alloc allocator_type;
  7314.       typedef typename _CharT_alloc_type::size_type size_type;
  7315.       typedef typename _CharT_alloc_type::difference_type difference_type;
  7316.       typedef typename _CharT_alloc_type::reference reference;
  7317.       typedef typename _CharT_alloc_type::const_reference const_reference;
  7318.       typedef typename _CharT_alloc_type::pointer pointer;
  7319.       typedef typename _CharT_alloc_type::const_pointer const_pointer;
  7320.       typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
  7321.       typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
  7322.                                                             const_iterator;
  7323.       typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
  7324.       typedef std::reverse_iterator<iterator> reverse_iterator;
  7325.  
  7326.     private:
  7327. # 145 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7328.       struct _Rep_base
  7329.       {
  7330.  size_type _M_length;
  7331.  size_type _M_capacity;
  7332.  _Atomic_word _M_refcount;
  7333.       };
  7334.  
  7335.       struct _Rep : _Rep_base
  7336.       {
  7337.  
  7338.  typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
  7339. # 170 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7340.  static const size_type _S_max_size;
  7341.  static const _CharT _S_terminal;
  7342.  
  7343.  
  7344.  
  7345.         static size_type _S_empty_rep_storage[];
  7346.  
  7347.         static _Rep&
  7348.         _S_empty_rep()
  7349.         {
  7350.  
  7351.  
  7352.  
  7353.    void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
  7354.    return *reinterpret_cast<_Rep*>(__p);
  7355.  }
  7356.  
  7357.         bool
  7358.  _M_is_leaked() const
  7359.         { return this->_M_refcount < 0; }
  7360.  
  7361.         bool
  7362.  _M_is_shared() const
  7363.         { return this->_M_refcount > 0; }
  7364.  
  7365.         void
  7366.  _M_set_leaked()
  7367.         { this->_M_refcount = -1; }
  7368.  
  7369.         void
  7370.  _M_set_sharable()
  7371.         { this->_M_refcount = 0; }
  7372.  
  7373.  void
  7374.  _M_set_length_and_sharable(size_type __n)
  7375.  {
  7376.  
  7377.    if (__builtin_expect(this != &_S_empty_rep(), false))
  7378.  
  7379.      {
  7380.        this->_M_set_sharable();
  7381.        this->_M_length = __n;
  7382.        traits_type::assign(this->_M_refdata()[__n], _S_terminal);
  7383.  
  7384.  
  7385.      }
  7386.  }
  7387.  
  7388.  _CharT*
  7389.  _M_refdata() throw()
  7390.  { return reinterpret_cast<_CharT*>(this + 1); }
  7391.  
  7392.  _CharT*
  7393.  _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
  7394.  {
  7395.    return (!_M_is_leaked() && __alloc1 == __alloc2)
  7396.            ? _M_refcopy() : _M_clone(__alloc1);
  7397.  }
  7398.  
  7399.  
  7400.  static _Rep*
  7401.  _S_create(size_type, size_type, const _Alloc&);
  7402.  
  7403.  void
  7404.  _M_dispose(const _Alloc& __a)
  7405.  {
  7406.  
  7407.    if (__builtin_expect(this != &_S_empty_rep(), false))
  7408.  
  7409.      {
  7410.  
  7411.        ;
  7412.        if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
  7413.         -1) <= 0)
  7414.   {
  7415.     ;
  7416.     _M_destroy(__a);
  7417.   }
  7418.      }
  7419.  }
  7420.  
  7421.  void
  7422.  _M_destroy(const _Alloc&) throw();
  7423.  
  7424.  _CharT*
  7425.  _M_refcopy() throw()
  7426.  {
  7427.  
  7428.    if (__builtin_expect(this != &_S_empty_rep(), false))
  7429.  
  7430.             __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
  7431.    return _M_refdata();
  7432.  }
  7433.  
  7434.  _CharT*
  7435.  _M_clone(const _Alloc&, size_type __res = 0);
  7436.       };
  7437.  
  7438.  
  7439.       struct _Alloc_hider : _Alloc
  7440.       {
  7441.  _Alloc_hider(_CharT* __dat, const _Alloc& __a)
  7442.  : _Alloc(__a), _M_p(__dat) { }
  7443.  
  7444.  _CharT* _M_p;
  7445.       };
  7446.  
  7447.     public:
  7448.  
  7449.  
  7450.  
  7451.  
  7452.       static const size_type npos = static_cast<size_type>(-1);
  7453.  
  7454.     private:
  7455.  
  7456.       mutable _Alloc_hider _M_dataplus;
  7457.  
  7458.       _CharT*
  7459.       _M_data() const
  7460.       { return _M_dataplus._M_p; }
  7461.  
  7462.       _CharT*
  7463.       _M_data(_CharT* __p)
  7464.       { return (_M_dataplus._M_p = __p); }
  7465.  
  7466.       _Rep*
  7467.       _M_rep() const
  7468.       { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
  7469.  
  7470.  
  7471.  
  7472.       iterator
  7473.       _M_ibegin() const
  7474.       { return iterator(_M_data()); }
  7475.  
  7476.       iterator
  7477.       _M_iend() const
  7478.       { return iterator(_M_data() + this->size()); }
  7479.  
  7480.       void
  7481.       _M_leak()
  7482.       {
  7483.  if (!_M_rep()->_M_is_leaked())
  7484.    _M_leak_hard();
  7485.       }
  7486.  
  7487.       size_type
  7488.       _M_check(size_type __pos, const char* __s) const
  7489.       {
  7490.  if (__pos > this->size())
  7491.    __throw_out_of_range((__s));
  7492.  return __pos;
  7493.       }
  7494.  
  7495.       void
  7496.       _M_check_length(size_type __n1, size_type __n2, const char* __s) const
  7497.       {
  7498.  if (this->max_size() - (this->size() - __n1) < __n2)
  7499.    __throw_length_error((__s));
  7500.       }
  7501.  
  7502.  
  7503.       size_type
  7504.       _M_limit(size_type __pos, size_type __off) const
  7505.       {
  7506.  const bool __testoff = __off < this->size() - __pos;
  7507.  return __testoff ? __off : this->size() - __pos;
  7508.       }
  7509.  
  7510.  
  7511.       bool
  7512.       _M_disjunct(const _CharT* __s) const
  7513.       {
  7514.  return (less<const _CharT*>()(__s, _M_data())
  7515.   || less<const _CharT*>()(_M_data() + this->size(), __s));
  7516.       }
  7517.  
  7518.  
  7519.  
  7520.       static void
  7521.       _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
  7522.       {
  7523.  if (__n == 1)
  7524.    traits_type::assign(*__d, *__s);
  7525.  else
  7526.    traits_type::copy(__d, __s, __n);
  7527.       }
  7528.  
  7529.       static void
  7530.       _M_move(_CharT* __d, const _CharT* __s, size_type __n)
  7531.       {
  7532.  if (__n == 1)
  7533.    traits_type::assign(*__d, *__s);
  7534.  else
  7535.    traits_type::move(__d, __s, __n);
  7536.       }
  7537.  
  7538.       static void
  7539.       _M_assign(_CharT* __d, size_type __n, _CharT __c)
  7540.       {
  7541.  if (__n == 1)
  7542.    traits_type::assign(*__d, __c);
  7543.  else
  7544.    traits_type::assign(__d, __n, __c);
  7545.       }
  7546.  
  7547.  
  7548.  
  7549.       template<class _Iterator>
  7550.         static void
  7551.         _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
  7552.         {
  7553.    for (; __k1 != __k2; ++__k1, ++__p)
  7554.      traits_type::assign(*__p, *__k1);
  7555.  }
  7556.  
  7557.       static void
  7558.       _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
  7559.       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
  7560.  
  7561.       static void
  7562.       _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
  7563.       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
  7564.  
  7565.       static void
  7566.       _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
  7567.       { _M_copy(__p, __k1, __k2 - __k1); }
  7568.  
  7569.       static void
  7570.       _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
  7571.       { _M_copy(__p, __k1, __k2 - __k1); }
  7572.  
  7573.       static int
  7574.       _S_compare(size_type __n1, size_type __n2)
  7575.       {
  7576.  const difference_type __d = difference_type(__n1 - __n2);
  7577.  
  7578.  if (__d > __gnu_cxx::__numeric_traits<int>::__max)
  7579.    return __gnu_cxx::__numeric_traits<int>::__max;
  7580.  else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
  7581.    return __gnu_cxx::__numeric_traits<int>::__min;
  7582.  else
  7583.    return int(__d);
  7584.       }
  7585.  
  7586.       void
  7587.       _M_mutate(size_type __pos, size_type __len1, size_type __len2);
  7588.  
  7589.       void
  7590.       _M_leak_hard();
  7591.  
  7592.       static _Rep&
  7593.       _S_empty_rep()
  7594.       { return _Rep::_S_empty_rep(); }
  7595.  
  7596.     public:
  7597.  
  7598.  
  7599.  
  7600.  
  7601.  
  7602.  
  7603.  
  7604.       basic_string()
  7605.  
  7606.       : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
  7607.  
  7608.  
  7609.  
  7610.  
  7611.  
  7612.  
  7613.  
  7614.       explicit
  7615.       basic_string(const _Alloc& __a);
  7616.  
  7617.  
  7618.  
  7619.  
  7620.  
  7621.  
  7622.       basic_string(const basic_string& __str);
  7623.  
  7624.  
  7625.  
  7626.  
  7627.  
  7628.  
  7629.       basic_string(const basic_string& __str, size_type __pos,
  7630.      size_type __n = npos);
  7631.  
  7632.  
  7633.  
  7634.  
  7635.  
  7636.  
  7637.  
  7638.       basic_string(const basic_string& __str, size_type __pos,
  7639.      size_type __n, const _Alloc& __a);
  7640. # 480 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7641.       basic_string(const _CharT* __s, size_type __n,
  7642.      const _Alloc& __a = _Alloc());
  7643.  
  7644.  
  7645.  
  7646.  
  7647.  
  7648.       basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
  7649.  
  7650.  
  7651.  
  7652.  
  7653.  
  7654.  
  7655.       basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
  7656. # 528 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7657.       template<class _InputIterator>
  7658.         basic_string(_InputIterator __beg, _InputIterator __end,
  7659.        const _Alloc& __a = _Alloc());
  7660.  
  7661.  
  7662.  
  7663.  
  7664.       ~basic_string()
  7665.       { _M_rep()->_M_dispose(this->get_allocator()); }
  7666.  
  7667.  
  7668.  
  7669.  
  7670.  
  7671.       basic_string&
  7672.       operator=(const basic_string& __str)
  7673.       { return this->assign(__str); }
  7674.  
  7675.  
  7676.  
  7677.  
  7678.  
  7679.       basic_string&
  7680.       operator=(const _CharT* __s)
  7681.       { return this->assign(__s); }
  7682. # 561 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7683.       basic_string&
  7684.       operator=(_CharT __c)
  7685.       {
  7686.  this->assign(1, __c);
  7687.  return *this;
  7688.       }
  7689. # 601 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7690.       iterator
  7691.       begin()
  7692.       {
  7693.  _M_leak();
  7694.  return iterator(_M_data());
  7695.       }
  7696.  
  7697.  
  7698.  
  7699.  
  7700.  
  7701.       const_iterator
  7702.       begin() const
  7703.       { return const_iterator(_M_data()); }
  7704.  
  7705.  
  7706.  
  7707.  
  7708.  
  7709.       iterator
  7710.       end()
  7711.       {
  7712.  _M_leak();
  7713.  return iterator(_M_data() + this->size());
  7714.       }
  7715.  
  7716.  
  7717.  
  7718.  
  7719.  
  7720.       const_iterator
  7721.       end() const
  7722.       { return const_iterator(_M_data() + this->size()); }
  7723.  
  7724.  
  7725.  
  7726.  
  7727.  
  7728.  
  7729.       reverse_iterator
  7730.       rbegin()
  7731.       { return reverse_iterator(this->end()); }
  7732.  
  7733.  
  7734.  
  7735.  
  7736.  
  7737.  
  7738.       const_reverse_iterator
  7739.       rbegin() const
  7740.       { return const_reverse_iterator(this->end()); }
  7741.  
  7742.  
  7743.  
  7744.  
  7745.  
  7746.  
  7747.       reverse_iterator
  7748.       rend()
  7749.       { return reverse_iterator(this->begin()); }
  7750.  
  7751.  
  7752.  
  7753.  
  7754.  
  7755.  
  7756.       const_reverse_iterator
  7757.       rend() const
  7758.       { return const_reverse_iterator(this->begin()); }
  7759. # 707 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7760.     public:
  7761.  
  7762.  
  7763.  
  7764.       size_type
  7765.       size() const
  7766.       { return _M_rep()->_M_length; }
  7767.  
  7768.  
  7769.  
  7770.       size_type
  7771.       length() const
  7772.       { return _M_rep()->_M_length; }
  7773.  
  7774.  
  7775.       size_type
  7776.       max_size() const
  7777.       { return _Rep::_S_max_size; }
  7778. # 736 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7779.       void
  7780.       resize(size_type __n, _CharT __c);
  7781. # 749 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7782.       void
  7783.       resize(size_type __n)
  7784.       { this->resize(__n, _CharT()); }
  7785. # 772 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7786.       size_type
  7787.       capacity() const
  7788.       { return _M_rep()->_M_capacity; }
  7789. # 793 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7790.       void
  7791.       reserve(size_type __res_arg = 0);
  7792.  
  7793.  
  7794.  
  7795.  
  7796.       void
  7797.       clear()
  7798.       { _M_mutate(0, this->size(), 0); }
  7799.  
  7800.  
  7801.  
  7802.  
  7803.  
  7804.       bool
  7805.       empty() const
  7806.       { return this->size() == 0; }
  7807. # 822 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7808.       const_reference
  7809.       operator[] (size_type __pos) const
  7810.       {
  7811.  ;
  7812.  return _M_data()[__pos];
  7813.       }
  7814. # 839 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7815.       reference
  7816.       operator[](size_type __pos)
  7817.       {
  7818.  
  7819.  ;
  7820.  
  7821.  ;
  7822.  _M_leak();
  7823.  return _M_data()[__pos];
  7824.       }
  7825. # 860 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7826.       const_reference
  7827.       at(size_type __n) const
  7828.       {
  7829.  if (__n >= this->size())
  7830.    __throw_out_of_range(("basic_string::at"));
  7831.  return _M_data()[__n];
  7832.       }
  7833. # 879 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7834.       reference
  7835.       at(size_type __n)
  7836.       {
  7837.  if (__n >= size())
  7838.    __throw_out_of_range(("basic_string::at"));
  7839.  _M_leak();
  7840.  return _M_data()[__n];
  7841.       }
  7842. # 928 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7843.       basic_string&
  7844.       operator+=(const basic_string& __str)
  7845.       { return this->append(__str); }
  7846.  
  7847.  
  7848.  
  7849.  
  7850.  
  7851.  
  7852.       basic_string&
  7853.       operator+=(const _CharT* __s)
  7854.       { return this->append(__s); }
  7855.  
  7856.  
  7857.  
  7858.  
  7859.  
  7860.  
  7861.       basic_string&
  7862.       operator+=(_CharT __c)
  7863.       {
  7864.  this->push_back(__c);
  7865.  return *this;
  7866.       }
  7867. # 969 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7868.       basic_string&
  7869.       append(const basic_string& __str);
  7870. # 985 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7871.       basic_string&
  7872.       append(const basic_string& __str, size_type __pos, size_type __n);
  7873.  
  7874.  
  7875.  
  7876.  
  7877.  
  7878.  
  7879.  
  7880.       basic_string&
  7881.       append(const _CharT* __s, size_type __n);
  7882.  
  7883.  
  7884.  
  7885.  
  7886.  
  7887.  
  7888.       basic_string&
  7889.       append(const _CharT* __s)
  7890.       {
  7891.  ;
  7892.  return this->append(__s, traits_type::length(__s));
  7893.       }
  7894. # 1017 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7895.       basic_string&
  7896.       append(size_type __n, _CharT __c);
  7897. # 1039 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7898.       template<class _InputIterator>
  7899.         basic_string&
  7900.         append(_InputIterator __first, _InputIterator __last)
  7901.         { return this->replace(_M_iend(), _M_iend(), __first, __last); }
  7902.  
  7903.  
  7904.  
  7905.  
  7906.  
  7907.       void
  7908.       push_back(_CharT __c)
  7909.       {
  7910.  const size_type __len = 1 + this->size();
  7911.  if (__len > this->capacity() || _M_rep()->_M_is_shared())
  7912.    this->reserve(__len);
  7913.  traits_type::assign(_M_data()[this->size()], __c);
  7914.  _M_rep()->_M_set_length_and_sharable(__len);
  7915.       }
  7916.  
  7917.  
  7918.  
  7919.  
  7920.  
  7921.  
  7922.       basic_string&
  7923.       assign(const basic_string& __str);
  7924. # 1096 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7925.       basic_string&
  7926.       assign(const basic_string& __str, size_type __pos, size_type __n)
  7927.       { return this->assign(__str._M_data()
  7928.        + __str._M_check(__pos, "basic_string::assign"),
  7929.        __str._M_limit(__pos, __n)); }
  7930. # 1112 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7931.       basic_string&
  7932.       assign(const _CharT* __s, size_type __n);
  7933. # 1124 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7934.       basic_string&
  7935.       assign(const _CharT* __s)
  7936.       {
  7937.  ;
  7938.  return this->assign(__s, traits_type::length(__s));
  7939.       }
  7940. # 1140 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7941.       basic_string&
  7942.       assign(size_type __n, _CharT __c)
  7943.       { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
  7944. # 1152 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7945.       template<class _InputIterator>
  7946.         basic_string&
  7947.         assign(_InputIterator __first, _InputIterator __last)
  7948.         { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
  7949. # 1181 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7950.       void
  7951.       insert(iterator __p, size_type __n, _CharT __c)
  7952.       { this->replace(__p, __p, __n, __c); }
  7953. # 1197 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7954.       template<class _InputIterator>
  7955.         void
  7956.         insert(iterator __p, _InputIterator __beg, _InputIterator __end)
  7957.         { this->replace(__p, __p, __beg, __end); }
  7958. # 1229 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7959.       basic_string&
  7960.       insert(size_type __pos1, const basic_string& __str)
  7961.       { return this->insert(__pos1, __str, size_type(0), __str.size()); }
  7962. # 1251 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7963.       basic_string&
  7964.       insert(size_type __pos1, const basic_string& __str,
  7965.       size_type __pos2, size_type __n)
  7966.       { return this->insert(__pos1, __str._M_data()
  7967.        + __str._M_check(__pos2, "basic_string::insert"),
  7968.        __str._M_limit(__pos2, __n)); }
  7969. # 1274 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7970.       basic_string&
  7971.       insert(size_type __pos, const _CharT* __s, size_type __n);
  7972. # 1292 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7973.       basic_string&
  7974.       insert(size_type __pos, const _CharT* __s)
  7975.       {
  7976.  ;
  7977.  return this->insert(__pos, __s, traits_type::length(__s));
  7978.       }
  7979. # 1315 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7980.       basic_string&
  7981.       insert(size_type __pos, size_type __n, _CharT __c)
  7982.       { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
  7983.          size_type(0), __n, __c); }
  7984. # 1333 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7985.       iterator
  7986.       insert(iterator __p, _CharT __c)
  7987.       {
  7988.  ;
  7989.  const size_type __pos = __p - _M_ibegin();
  7990.  _M_replace_aux(__pos, size_type(0), size_type(1), __c);
  7991.  _M_rep()->_M_set_leaked();
  7992.  return iterator(_M_data() + __pos);
  7993.       }
  7994. # 1358 "/usr/include/c++/4.7/bits/basic_string.h" 3
  7995.       basic_string&
  7996.       erase(size_type __pos = 0, size_type __n = npos)
  7997.       {
  7998.  _M_mutate(_M_check(__pos, "basic_string::erase"),
  7999.     _M_limit(__pos, __n), size_type(0));
  8000.  return *this;
  8001.       }
  8002. # 1374 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8003.       iterator
  8004.       erase(iterator __position)
  8005.       {
  8006.  
  8007.                                ;
  8008.  const size_type __pos = __position - _M_ibegin();
  8009.  _M_mutate(__pos, size_type(1), size_type(0));
  8010.  _M_rep()->_M_set_leaked();
  8011.  return iterator(_M_data() + __pos);
  8012.       }
  8013. # 1394 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8014.       iterator
  8015.       erase(iterator __first, iterator __last);
  8016. # 1425 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8017.       basic_string&
  8018.       replace(size_type __pos, size_type __n, const basic_string& __str)
  8019.       { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
  8020. # 1447 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8021.       basic_string&
  8022.       replace(size_type __pos1, size_type __n1, const basic_string& __str,
  8023.        size_type __pos2, size_type __n2)
  8024.       { return this->replace(__pos1, __n1, __str._M_data()
  8025.         + __str._M_check(__pos2, "basic_string::replace"),
  8026.         __str._M_limit(__pos2, __n2)); }
  8027. # 1472 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8028.       basic_string&
  8029.       replace(size_type __pos, size_type __n1, const _CharT* __s,
  8030.        size_type __n2);
  8031. # 1492 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8032.       basic_string&
  8033.       replace(size_type __pos, size_type __n1, const _CharT* __s)
  8034.       {
  8035.  ;
  8036.  return this->replace(__pos, __n1, __s, traits_type::length(__s));
  8037.       }
  8038. # 1516 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8039.       basic_string&
  8040.       replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
  8041.       { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
  8042.          _M_limit(__pos, __n1), __n2, __c); }
  8043. # 1534 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8044.       basic_string&
  8045.       replace(iterator __i1, iterator __i2, const basic_string& __str)
  8046.       { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
  8047. # 1553 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8048.       basic_string&
  8049.       replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
  8050.       {
  8051.  
  8052.                           ;
  8053.  return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
  8054.       }
  8055. # 1574 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8056.       basic_string&
  8057.       replace(iterator __i1, iterator __i2, const _CharT* __s)
  8058.       {
  8059.  ;
  8060.  return this->replace(__i1, __i2, __s, traits_type::length(__s));
  8061.       }
  8062. # 1595 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8063.       basic_string&
  8064.       replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
  8065.       {
  8066.  
  8067.                           ;
  8068.  return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
  8069.       }
  8070. # 1618 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8071.       template<class _InputIterator>
  8072.         basic_string&
  8073.         replace(iterator __i1, iterator __i2,
  8074.   _InputIterator __k1, _InputIterator __k2)
  8075.         {
  8076.  
  8077.                             ;
  8078.    ;
  8079.    typedef typename std::__is_integer<_InputIterator>::__type _Integral;
  8080.    return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
  8081.  }
  8082.  
  8083.  
  8084.  
  8085.       basic_string&
  8086.       replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
  8087.       {
  8088.  
  8089.                           ;
  8090.  ;
  8091.  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
  8092.         __k1, __k2 - __k1);
  8093.       }
  8094.  
  8095.       basic_string&
  8096.       replace(iterator __i1, iterator __i2,
  8097.        const _CharT* __k1, const _CharT* __k2)
  8098.       {
  8099.  
  8100.                           ;
  8101.  ;
  8102.  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
  8103.         __k1, __k2 - __k1);
  8104.       }
  8105.  
  8106.       basic_string&
  8107.       replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
  8108.       {
  8109.  
  8110.                           ;
  8111.  ;
  8112.  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
  8113.         __k1.base(), __k2 - __k1);
  8114.       }
  8115.  
  8116.       basic_string&
  8117.       replace(iterator __i1, iterator __i2,
  8118.        const_iterator __k1, const_iterator __k2)
  8119.       {
  8120.  
  8121.                           ;
  8122.  ;
  8123.  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
  8124.         __k1.base(), __k2 - __k1);
  8125.       }
  8126. # 1694 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8127.     private:
  8128.       template<class _Integer>
  8129.  basic_string&
  8130.  _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
  8131.        _Integer __val, __true_type)
  8132.         { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
  8133.  
  8134.       template<class _InputIterator>
  8135.  basic_string&
  8136.  _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
  8137.        _InputIterator __k2, __false_type);
  8138.  
  8139.       basic_string&
  8140.       _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
  8141.        _CharT __c);
  8142.  
  8143.       basic_string&
  8144.       _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
  8145.         size_type __n2);
  8146.  
  8147.  
  8148.  
  8149.       template<class _InIterator>
  8150.         static _CharT*
  8151.         _S_construct_aux(_InIterator __beg, _InIterator __end,
  8152.     const _Alloc& __a, __false_type)
  8153.  {
  8154.           typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
  8155.           return _S_construct(__beg, __end, __a, _Tag());
  8156.  }
  8157.  
  8158.  
  8159.  
  8160.       template<class _Integer>
  8161.         static _CharT*
  8162.         _S_construct_aux(_Integer __beg, _Integer __end,
  8163.     const _Alloc& __a, __true_type)
  8164.         { return _S_construct_aux_2(static_cast<size_type>(__beg),
  8165.         __end, __a); }
  8166.  
  8167.       static _CharT*
  8168.       _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
  8169.       { return _S_construct(__req, __c, __a); }
  8170.  
  8171.       template<class _InIterator>
  8172.         static _CharT*
  8173.         _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
  8174.  {
  8175.    typedef typename std::__is_integer<_InIterator>::__type _Integral;
  8176.    return _S_construct_aux(__beg, __end, __a, _Integral());
  8177.         }
  8178.  
  8179.  
  8180.       template<class _InIterator>
  8181.         static _CharT*
  8182.          _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
  8183.         input_iterator_tag);
  8184.  
  8185.  
  8186.  
  8187.       template<class _FwdIterator>
  8188.         static _CharT*
  8189.         _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
  8190.        forward_iterator_tag);
  8191.  
  8192.       static _CharT*
  8193.       _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
  8194.  
  8195.     public:
  8196. # 1776 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8197.       size_type
  8198.       copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
  8199. # 1786 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8200.       void
  8201.       swap(basic_string& __s);
  8202. # 1796 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8203.       const _CharT*
  8204.       c_str() const
  8205.       { return _M_data(); }
  8206.  
  8207.  
  8208.  
  8209.  
  8210.  
  8211.  
  8212.  
  8213.       const _CharT*
  8214.       data() const
  8215.       { return _M_data(); }
  8216.  
  8217.  
  8218.  
  8219.  
  8220.       allocator_type
  8221.       get_allocator() const
  8222.       { return _M_dataplus; }
  8223. # 1829 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8224.       size_type
  8225.       find(const _CharT* __s, size_type __pos, size_type __n) const;
  8226. # 1842 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8227.       size_type
  8228.       find(const basic_string& __str, size_type __pos = 0) const
  8229.  
  8230.       { return this->find(__str.data(), __pos, __str.size()); }
  8231. # 1857 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8232.       size_type
  8233.       find(const _CharT* __s, size_type __pos = 0) const
  8234.       {
  8235.  ;
  8236.  return this->find(__s, __pos, traits_type::length(__s));
  8237.       }
  8238. # 1874 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8239.       size_type
  8240.       find(_CharT __c, size_type __pos = 0) const ;
  8241. # 1887 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8242.       size_type
  8243.       rfind(const basic_string& __str, size_type __pos = npos) const
  8244.  
  8245.       { return this->rfind(__str.data(), __pos, __str.size()); }
  8246. # 1904 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8247.       size_type
  8248.       rfind(const _CharT* __s, size_type __pos, size_type __n) const;
  8249. # 1917 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8250.       size_type
  8251.       rfind(const _CharT* __s, size_type __pos = npos) const
  8252.       {
  8253.  ;
  8254.  return this->rfind(__s, __pos, traits_type::length(__s));
  8255.       }
  8256. # 1934 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8257.       size_type
  8258.       rfind(_CharT __c, size_type __pos = npos) const ;
  8259. # 1948 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8260.       size_type
  8261.       find_first_of(const basic_string& __str, size_type __pos = 0) const
  8262.  
  8263.       { return this->find_first_of(__str.data(), __pos, __str.size()); }
  8264. # 1965 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8265.       size_type
  8266.       find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
  8267. # 1978 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8268.       size_type
  8269.       find_first_of(const _CharT* __s, size_type __pos = 0) const
  8270.       {
  8271.  ;
  8272.  return this->find_first_of(__s, __pos, traits_type::length(__s));
  8273.       }
  8274. # 1997 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8275.       size_type
  8276.       find_first_of(_CharT __c, size_type __pos = 0) const
  8277.       { return this->find(__c, __pos); }
  8278. # 2012 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8279.       size_type
  8280.       find_last_of(const basic_string& __str, size_type __pos = npos) const
  8281.  
  8282.       { return this->find_last_of(__str.data(), __pos, __str.size()); }
  8283. # 2029 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8284.       size_type
  8285.       find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
  8286. # 2042 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8287.       size_type
  8288.       find_last_of(const _CharT* __s, size_type __pos = npos) const
  8289.       {
  8290.  ;
  8291.  return this->find_last_of(__s, __pos, traits_type::length(__s));
  8292.       }
  8293. # 2061 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8294.       size_type
  8295.       find_last_of(_CharT __c, size_type __pos = npos) const
  8296.       { return this->rfind(__c, __pos); }
  8297. # 2075 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8298.       size_type
  8299.       find_first_not_of(const basic_string& __str, size_type __pos = 0) const
  8300.  
  8301.       { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
  8302. # 2092 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8303.       size_type
  8304.       find_first_not_of(const _CharT* __s, size_type __pos,
  8305.    size_type __n) const;
  8306. # 2106 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8307.       size_type
  8308.       find_first_not_of(const _CharT* __s, size_type __pos = 0) const
  8309.       {
  8310.  ;
  8311.  return this->find_first_not_of(__s, __pos, traits_type::length(__s));
  8312.       }
  8313. # 2123 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8314.       size_type
  8315.       find_first_not_of(_CharT __c, size_type __pos = 0) const
  8316.  ;
  8317. # 2138 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8318.       size_type
  8319.       find_last_not_of(const basic_string& __str, size_type __pos = npos) const
  8320.  
  8321.       { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
  8322. # 2155 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8323.       size_type
  8324.       find_last_not_of(const _CharT* __s, size_type __pos,
  8325.          size_type __n) const;
  8326. # 2169 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8327.       size_type
  8328.       find_last_not_of(const _CharT* __s, size_type __pos = npos) const
  8329.       {
  8330.  ;
  8331.  return this->find_last_not_of(__s, __pos, traits_type::length(__s));
  8332.       }
  8333. # 2186 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8334.       size_type
  8335.       find_last_not_of(_CharT __c, size_type __pos = npos) const
  8336.  ;
  8337. # 2202 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8338.       basic_string
  8339.       substr(size_type __pos = 0, size_type __n = npos) const
  8340.       { return basic_string(*this,
  8341.        _M_check(__pos, "basic_string::substr"), __n); }
  8342. # 2221 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8343.       int
  8344.       compare(const basic_string& __str) const
  8345.       {
  8346.  const size_type __size = this->size();
  8347.  const size_type __osize = __str.size();
  8348.  const size_type __len = std::min(__size, __osize);
  8349.  
  8350.  int __r = traits_type::compare(_M_data(), __str.data(), __len);
  8351.  if (!__r)
  8352.    __r = _S_compare(__size, __osize);
  8353.  return __r;
  8354.       }
  8355. # 2253 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8356.       int
  8357.       compare(size_type __pos, size_type __n, const basic_string& __str) const;
  8358. # 2279 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8359.       int
  8360.       compare(size_type __pos1, size_type __n1, const basic_string& __str,
  8361.        size_type __pos2, size_type __n2) const;
  8362. # 2297 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8363.       int
  8364.       compare(const _CharT* __s) const;
  8365. # 2321 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8366.       int
  8367.       compare(size_type __pos, size_type __n1, const _CharT* __s) const;
  8368. # 2348 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8369.       int
  8370.       compare(size_type __pos, size_type __n1, const _CharT* __s,
  8371.        size_type __n2) const;
  8372.   };
  8373. # 2360 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8374.   template<typename _CharT, typename _Traits, typename _Alloc>
  8375.     basic_string<_CharT, _Traits, _Alloc>
  8376.     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8377.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8378.     {
  8379.       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
  8380.       __str.append(__rhs);
  8381.       return __str;
  8382.     }
  8383.  
  8384.  
  8385.  
  8386.  
  8387.  
  8388.  
  8389.  
  8390.   template<typename _CharT, typename _Traits, typename _Alloc>
  8391.     basic_string<_CharT,_Traits,_Alloc>
  8392.     operator+(const _CharT* __lhs,
  8393.        const basic_string<_CharT,_Traits,_Alloc>& __rhs);
  8394.  
  8395.  
  8396.  
  8397.  
  8398.  
  8399.  
  8400.  
  8401.   template<typename _CharT, typename _Traits, typename _Alloc>
  8402.     basic_string<_CharT,_Traits,_Alloc>
  8403.     operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
  8404.  
  8405.  
  8406.  
  8407.  
  8408.  
  8409.  
  8410.  
  8411.   template<typename _CharT, typename _Traits, typename _Alloc>
  8412.     inline basic_string<_CharT, _Traits, _Alloc>
  8413.     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8414.       const _CharT* __rhs)
  8415.     {
  8416.       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
  8417.       __str.append(__rhs);
  8418.       return __str;
  8419.     }
  8420.  
  8421.  
  8422.  
  8423.  
  8424.  
  8425.  
  8426.  
  8427.   template<typename _CharT, typename _Traits, typename _Alloc>
  8428.     inline basic_string<_CharT, _Traits, _Alloc>
  8429.     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
  8430.     {
  8431.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  8432.       typedef typename __string_type::size_type __size_type;
  8433.       __string_type __str(__lhs);
  8434.       __str.append(__size_type(1), __rhs);
  8435.       return __str;
  8436.     }
  8437. # 2481 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8438.   template<typename _CharT, typename _Traits, typename _Alloc>
  8439.     inline bool
  8440.     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8441.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8442.     { return __lhs.compare(__rhs) == 0; }
  8443.  
  8444.   template<typename _CharT>
  8445.     inline
  8446.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
  8447.     operator==(const basic_string<_CharT>& __lhs,
  8448.         const basic_string<_CharT>& __rhs)
  8449.     { return (__lhs.size() == __rhs.size()
  8450.        && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
  8451.           __lhs.size())); }
  8452.  
  8453.  
  8454.  
  8455.  
  8456.  
  8457.  
  8458.  
  8459.   template<typename _CharT, typename _Traits, typename _Alloc>
  8460.     inline bool
  8461.     operator==(const _CharT* __lhs,
  8462.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8463.     { return __rhs.compare(__lhs) == 0; }
  8464.  
  8465.  
  8466.  
  8467.  
  8468.  
  8469.  
  8470.  
  8471.   template<typename _CharT, typename _Traits, typename _Alloc>
  8472.     inline bool
  8473.     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8474.         const _CharT* __rhs)
  8475.     { return __lhs.compare(__rhs) == 0; }
  8476. # 2527 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8477.   template<typename _CharT, typename _Traits, typename _Alloc>
  8478.     inline bool
  8479.     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8480.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8481.     { return !(__lhs == __rhs); }
  8482.  
  8483.  
  8484.  
  8485.  
  8486.  
  8487.  
  8488.  
  8489.   template<typename _CharT, typename _Traits, typename _Alloc>
  8490.     inline bool
  8491.     operator!=(const _CharT* __lhs,
  8492.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8493.     { return !(__lhs == __rhs); }
  8494.  
  8495.  
  8496.  
  8497.  
  8498.  
  8499.  
  8500.  
  8501.   template<typename _CharT, typename _Traits, typename _Alloc>
  8502.     inline bool
  8503.     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8504.         const _CharT* __rhs)
  8505.     { return !(__lhs == __rhs); }
  8506. # 2564 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8507.   template<typename _CharT, typename _Traits, typename _Alloc>
  8508.     inline bool
  8509.     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8510.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8511.     { return __lhs.compare(__rhs) < 0; }
  8512.  
  8513.  
  8514.  
  8515.  
  8516.  
  8517.  
  8518.  
  8519.   template<typename _CharT, typename _Traits, typename _Alloc>
  8520.     inline bool
  8521.     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8522.        const _CharT* __rhs)
  8523.     { return __lhs.compare(__rhs) < 0; }
  8524.  
  8525.  
  8526.  
  8527.  
  8528.  
  8529.  
  8530.  
  8531.   template<typename _CharT, typename _Traits, typename _Alloc>
  8532.     inline bool
  8533.     operator<(const _CharT* __lhs,
  8534.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8535.     { return __rhs.compare(__lhs) > 0; }
  8536. # 2601 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8537.   template<typename _CharT, typename _Traits, typename _Alloc>
  8538.     inline bool
  8539.     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8540.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8541.     { return __lhs.compare(__rhs) > 0; }
  8542.  
  8543.  
  8544.  
  8545.  
  8546.  
  8547.  
  8548.  
  8549.   template<typename _CharT, typename _Traits, typename _Alloc>
  8550.     inline bool
  8551.     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8552.        const _CharT* __rhs)
  8553.     { return __lhs.compare(__rhs) > 0; }
  8554.  
  8555.  
  8556.  
  8557.  
  8558.  
  8559.  
  8560.  
  8561.   template<typename _CharT, typename _Traits, typename _Alloc>
  8562.     inline bool
  8563.     operator>(const _CharT* __lhs,
  8564.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8565.     { return __rhs.compare(__lhs) < 0; }
  8566. # 2638 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8567.   template<typename _CharT, typename _Traits, typename _Alloc>
  8568.     inline bool
  8569.     operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8570.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8571.     { return __lhs.compare(__rhs) <= 0; }
  8572.  
  8573.  
  8574.  
  8575.  
  8576.  
  8577.  
  8578.  
  8579.   template<typename _CharT, typename _Traits, typename _Alloc>
  8580.     inline bool
  8581.     operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8582.         const _CharT* __rhs)
  8583.     { return __lhs.compare(__rhs) <= 0; }
  8584.  
  8585.  
  8586.  
  8587.  
  8588.  
  8589.  
  8590.  
  8591.   template<typename _CharT, typename _Traits, typename _Alloc>
  8592.     inline bool
  8593.     operator<=(const _CharT* __lhs,
  8594.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8595.     { return __rhs.compare(__lhs) >= 0; }
  8596. # 2675 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8597.   template<typename _CharT, typename _Traits, typename _Alloc>
  8598.     inline bool
  8599.     operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8600.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8601.     { return __lhs.compare(__rhs) >= 0; }
  8602.  
  8603.  
  8604.  
  8605.  
  8606.  
  8607.  
  8608.  
  8609.   template<typename _CharT, typename _Traits, typename _Alloc>
  8610.     inline bool
  8611.     operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8612.         const _CharT* __rhs)
  8613.     { return __lhs.compare(__rhs) >= 0; }
  8614.  
  8615.  
  8616.  
  8617.  
  8618.  
  8619.  
  8620.  
  8621.   template<typename _CharT, typename _Traits, typename _Alloc>
  8622.     inline bool
  8623.     operator>=(const _CharT* __lhs,
  8624.       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8625.     { return __rhs.compare(__lhs) <= 0; }
  8626. # 2712 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8627.   template<typename _CharT, typename _Traits, typename _Alloc>
  8628.     inline void
  8629.     swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
  8630.   basic_string<_CharT, _Traits, _Alloc>& __rhs)
  8631.     { __lhs.swap(__rhs); }
  8632. # 2730 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8633.   template<typename _CharT, typename _Traits, typename _Alloc>
  8634.     basic_istream<_CharT, _Traits>&
  8635.     operator>>(basic_istream<_CharT, _Traits>& __is,
  8636.         basic_string<_CharT, _Traits, _Alloc>& __str);
  8637.  
  8638.   template<>
  8639.     basic_istream<char>&
  8640.     operator>>(basic_istream<char>& __is, basic_string<char>& __str);
  8641. # 2748 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8642.   template<typename _CharT, typename _Traits, typename _Alloc>
  8643.     inline basic_ostream<_CharT, _Traits>&
  8644.     operator<<(basic_ostream<_CharT, _Traits>& __os,
  8645.         const basic_string<_CharT, _Traits, _Alloc>& __str)
  8646.     {
  8647.  
  8648.  
  8649.       return __ostream_insert(__os, __str.data(), __str.size());
  8650.     }
  8651. # 2772 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8652.   template<typename _CharT, typename _Traits, typename _Alloc>
  8653.     basic_istream<_CharT, _Traits>&
  8654.     getline(basic_istream<_CharT, _Traits>& __is,
  8655.      basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
  8656. # 2790 "/usr/include/c++/4.7/bits/basic_string.h" 3
  8657.   template<typename _CharT, typename _Traits, typename _Alloc>
  8658.     inline basic_istream<_CharT, _Traits>&
  8659.     getline(basic_istream<_CharT, _Traits>& __is,
  8660.      basic_string<_CharT, _Traits, _Alloc>& __str)
  8661.     { return getline(__is, __str, __is.widen('\n')); }
  8662.  
  8663.   template<>
  8664.     basic_istream<char>&
  8665.     getline(basic_istream<char>& __in, basic_string<char>& __str,
  8666.      char __delim);
  8667.  
  8668.  
  8669.   template<>
  8670.     basic_istream<wchar_t>&
  8671.     getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
  8672.      wchar_t __delim);
  8673.  
  8674.  
  8675.  
  8676. }
  8677. # 55 "/usr/include/c++/4.7/string" 2 3
  8678. # 1 "/usr/include/c++/4.7/bits/basic_string.tcc" 1 3
  8679. # 42 "/usr/include/c++/4.7/bits/basic_string.tcc" 3
  8680.        
  8681. # 43 "/usr/include/c++/4.7/bits/basic_string.tcc" 3
  8682.  
  8683.  
  8684.  
  8685. namespace std __attribute__ ((__visibility__ ("default")))
  8686. {
  8687.  
  8688.  
  8689.   template<typename _CharT, typename _Traits, typename _Alloc>
  8690.     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  8691.     basic_string<_CharT, _Traits, _Alloc>::
  8692.     _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
  8693.  
  8694.   template<typename _CharT, typename _Traits, typename _Alloc>
  8695.     const _CharT
  8696.     basic_string<_CharT, _Traits, _Alloc>::
  8697.     _Rep::_S_terminal = _CharT();
  8698.  
  8699.   template<typename _CharT, typename _Traits, typename _Alloc>
  8700.     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  8701.     basic_string<_CharT, _Traits, _Alloc>::npos;
  8702.  
  8703.  
  8704.  
  8705.   template<typename _CharT, typename _Traits, typename _Alloc>
  8706.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  8707.     basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
  8708.     (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
  8709.       sizeof(size_type)];
  8710.  
  8711.  
  8712.  
  8713.  
  8714.  
  8715.   template<typename _CharT, typename _Traits, typename _Alloc>
  8716.     template<typename _InIterator>
  8717.       _CharT*
  8718.       basic_string<_CharT, _Traits, _Alloc>::
  8719.       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
  8720.      input_iterator_tag)
  8721.       {
  8722.  
  8723.  if (__beg == __end && __a == _Alloc())
  8724.    return _S_empty_rep()._M_refdata();
  8725.  
  8726.  
  8727.  _CharT __buf[128];
  8728.  size_type __len = 0;
  8729.  while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
  8730.    {
  8731.      __buf[__len++] = *__beg;
  8732.      ++__beg;
  8733.    }
  8734.  _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
  8735.  _M_copy(__r->_M_refdata(), __buf, __len);
  8736.  try
  8737.    {
  8738.      while (__beg != __end)
  8739.        {
  8740.   if (__len == __r->_M_capacity)
  8741.     {
  8742.  
  8743.       _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
  8744.       _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
  8745.       __r->_M_destroy(__a);
  8746.       __r = __another;
  8747.     }
  8748.   __r->_M_refdata()[__len++] = *__beg;
  8749.   ++__beg;
  8750.        }
  8751.    }
  8752.  catch(...)
  8753.    {
  8754.      __r->_M_destroy(__a);
  8755.      throw;
  8756.    }
  8757.  __r->_M_set_length_and_sharable(__len);
  8758.  return __r->_M_refdata();
  8759.       }
  8760.  
  8761.   template<typename _CharT, typename _Traits, typename _Alloc>
  8762.     template <typename _InIterator>
  8763.       _CharT*
  8764.       basic_string<_CharT, _Traits, _Alloc>::
  8765.       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
  8766.      forward_iterator_tag)
  8767.       {
  8768.  
  8769.  if (__beg == __end && __a == _Alloc())
  8770.    return _S_empty_rep()._M_refdata();
  8771.  
  8772.  
  8773.  if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
  8774.    __throw_logic_error(("basic_string::_S_construct null not valid"));
  8775.  
  8776.  const size_type __dnew = static_cast<size_type>(std::distance(__beg,
  8777.               __end));
  8778.  
  8779.  _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
  8780.  try
  8781.    { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
  8782.  catch(...)
  8783.    {
  8784.      __r->_M_destroy(__a);
  8785.      throw;
  8786.    }
  8787.  __r->_M_set_length_and_sharable(__dnew);
  8788.  return __r->_M_refdata();
  8789.       }
  8790.  
  8791.   template<typename _CharT, typename _Traits, typename _Alloc>
  8792.     _CharT*
  8793.     basic_string<_CharT, _Traits, _Alloc>::
  8794.     _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
  8795.     {
  8796.  
  8797.       if (__n == 0 && __a == _Alloc())
  8798.  return _S_empty_rep()._M_refdata();
  8799.  
  8800.  
  8801.       _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
  8802.       if (__n)
  8803.  _M_assign(__r->_M_refdata(), __n, __c);
  8804.  
  8805.       __r->_M_set_length_and_sharable(__n);
  8806.       return __r->_M_refdata();
  8807.     }
  8808.  
  8809.   template<typename _CharT, typename _Traits, typename _Alloc>
  8810.     basic_string<_CharT, _Traits, _Alloc>::
  8811.     basic_string(const basic_string& __str)
  8812.     : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
  8813.        __str.get_allocator()),
  8814.     __str.get_allocator())
  8815.     { }
  8816.  
  8817.   template<typename _CharT, typename _Traits, typename _Alloc>
  8818.     basic_string<_CharT, _Traits, _Alloc>::
  8819.     basic_string(const _Alloc& __a)
  8820.     : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
  8821.     { }
  8822.  
  8823.   template<typename _CharT, typename _Traits, typename _Alloc>
  8824.     basic_string<_CharT, _Traits, _Alloc>::
  8825.     basic_string(const basic_string& __str, size_type __pos, size_type __n)
  8826.     : _M_dataplus(_S_construct(__str._M_data()
  8827.           + __str._M_check(__pos,
  8828.       "basic_string::basic_string"),
  8829.           __str._M_data() + __str._M_limit(__pos, __n)
  8830.           + __pos, _Alloc()), _Alloc())
  8831.     { }
  8832.  
  8833.   template<typename _CharT, typename _Traits, typename _Alloc>
  8834.     basic_string<_CharT, _Traits, _Alloc>::
  8835.     basic_string(const basic_string& __str, size_type __pos,
  8836.    size_type __n, const _Alloc& __a)
  8837.     : _M_dataplus(_S_construct(__str._M_data()
  8838.           + __str._M_check(__pos,
  8839.       "basic_string::basic_string"),
  8840.           __str._M_data() + __str._M_limit(__pos, __n)
  8841.           + __pos, __a), __a)
  8842.     { }
  8843.  
  8844.  
  8845.   template<typename _CharT, typename _Traits, typename _Alloc>
  8846.     basic_string<_CharT, _Traits, _Alloc>::
  8847.     basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
  8848.     : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
  8849.     { }
  8850.  
  8851.  
  8852.   template<typename _CharT, typename _Traits, typename _Alloc>
  8853.     basic_string<_CharT, _Traits, _Alloc>::
  8854.     basic_string(const _CharT* __s, const _Alloc& __a)
  8855.     : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
  8856.           __s + npos, __a), __a)
  8857.     { }
  8858.  
  8859.   template<typename _CharT, typename _Traits, typename _Alloc>
  8860.     basic_string<_CharT, _Traits, _Alloc>::
  8861.     basic_string(size_type __n, _CharT __c, const _Alloc& __a)
  8862.     : _M_dataplus(_S_construct(__n, __c, __a), __a)
  8863.     { }
  8864.  
  8865.  
  8866.   template<typename _CharT, typename _Traits, typename _Alloc>
  8867.     template<typename _InputIterator>
  8868.     basic_string<_CharT, _Traits, _Alloc>::
  8869.     basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
  8870.     : _M_dataplus(_S_construct(__beg, __end, __a), __a)
  8871.     { }
  8872. # 242 "/usr/include/c++/4.7/bits/basic_string.tcc" 3
  8873.   template<typename _CharT, typename _Traits, typename _Alloc>
  8874.     basic_string<_CharT, _Traits, _Alloc>&
  8875.     basic_string<_CharT, _Traits, _Alloc>::
  8876.     assign(const basic_string& __str)
  8877.     {
  8878.       if (_M_rep() != __str._M_rep())
  8879.  {
  8880.  
  8881.    const allocator_type __a = this->get_allocator();
  8882.    _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
  8883.    _M_rep()->_M_dispose(__a);
  8884.    _M_data(__tmp);
  8885.  }
  8886.       return *this;
  8887.     }
  8888.  
  8889.   template<typename _CharT, typename _Traits, typename _Alloc>
  8890.     basic_string<_CharT, _Traits, _Alloc>&
  8891.     basic_string<_CharT, _Traits, _Alloc>::
  8892.     assign(const _CharT* __s, size_type __n)
  8893.     {
  8894.       ;
  8895.       _M_check_length(this->size(), __n, "basic_string::assign");
  8896.       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
  8897.  return _M_replace_safe(size_type(0), this->size(), __s, __n);
  8898.       else
  8899.  {
  8900.  
  8901.    const size_type __pos = __s - _M_data();
  8902.    if (__pos >= __n)
  8903.      _M_copy(_M_data(), __s, __n);
  8904.    else if (__pos)
  8905.      _M_move(_M_data(), __s, __n);
  8906.    _M_rep()->_M_set_length_and_sharable(__n);
  8907.    return *this;
  8908.  }
  8909.      }
  8910.  
  8911.   template<typename _CharT, typename _Traits, typename _Alloc>
  8912.     basic_string<_CharT, _Traits, _Alloc>&
  8913.     basic_string<_CharT, _Traits, _Alloc>::
  8914.     append(size_type __n, _CharT __c)
  8915.     {
  8916.       if (__n)
  8917.  {
  8918.    _M_check_length(size_type(0), __n, "basic_string::append");
  8919.    const size_type __len = __n + this->size();
  8920.    if (__len > this->capacity() || _M_rep()->_M_is_shared())
  8921.      this->reserve(__len);
  8922.    _M_assign(_M_data() + this->size(), __n, __c);
  8923.    _M_rep()->_M_set_length_and_sharable(__len);
  8924.  }
  8925.       return *this;
  8926.     }
  8927.  
  8928.   template<typename _CharT, typename _Traits, typename _Alloc>
  8929.     basic_string<_CharT, _Traits, _Alloc>&
  8930.     basic_string<_CharT, _Traits, _Alloc>::
  8931.     append(const _CharT* __s, size_type __n)
  8932.     {
  8933.       ;
  8934.       if (__n)
  8935.  {
  8936.    _M_check_length(size_type(0), __n, "basic_string::append");
  8937.    const size_type __len = __n + this->size();
  8938.    if (__len > this->capacity() || _M_rep()->_M_is_shared())
  8939.      {
  8940.        if (_M_disjunct(__s))
  8941.   this->reserve(__len);
  8942.        else
  8943.   {
  8944.     const size_type __off = __s - _M_data();
  8945.     this->reserve(__len);
  8946.     __s = _M_data() + __off;
  8947.   }
  8948.      }
  8949.    _M_copy(_M_data() + this->size(), __s, __n);
  8950.    _M_rep()->_M_set_length_and_sharable(__len);
  8951.  }
  8952.       return *this;
  8953.     }
  8954.  
  8955.   template<typename _CharT, typename _Traits, typename _Alloc>
  8956.     basic_string<_CharT, _Traits, _Alloc>&
  8957.     basic_string<_CharT, _Traits, _Alloc>::
  8958.     append(const basic_string& __str)
  8959.     {
  8960.       const size_type __size = __str.size();
  8961.       if (__size)
  8962.  {
  8963.    const size_type __len = __size + this->size();
  8964.    if (__len > this->capacity() || _M_rep()->_M_is_shared())
  8965.      this->reserve(__len);
  8966.    _M_copy(_M_data() + this->size(), __str._M_data(), __size);
  8967.    _M_rep()->_M_set_length_and_sharable(__len);
  8968.  }
  8969.       return *this;
  8970.     }
  8971.  
  8972.   template<typename _CharT, typename _Traits, typename _Alloc>
  8973.     basic_string<_CharT, _Traits, _Alloc>&
  8974.     basic_string<_CharT, _Traits, _Alloc>::
  8975.     append(const basic_string& __str, size_type __pos, size_type __n)
  8976.     {
  8977.       __str._M_check(__pos, "basic_string::append");
  8978.       __n = __str._M_limit(__pos, __n);
  8979.       if (__n)
  8980.  {
  8981.    const size_type __len = __n + this->size();
  8982.    if (__len > this->capacity() || _M_rep()->_M_is_shared())
  8983.      this->reserve(__len);
  8984.    _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
  8985.    _M_rep()->_M_set_length_and_sharable(__len);
  8986.  }
  8987.       return *this;
  8988.     }
  8989.  
  8990.    template<typename _CharT, typename _Traits, typename _Alloc>
  8991.      basic_string<_CharT, _Traits, _Alloc>&
  8992.      basic_string<_CharT, _Traits, _Alloc>::
  8993.      insert(size_type __pos, const _CharT* __s, size_type __n)
  8994.      {
  8995.        ;
  8996.        _M_check(__pos, "basic_string::insert");
  8997.        _M_check_length(size_type(0), __n, "basic_string::insert");
  8998.        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
  8999.          return _M_replace_safe(__pos, size_type(0), __s, __n);
  9000.        else
  9001.          {
  9002.  
  9003.            const size_type __off = __s - _M_data();
  9004.            _M_mutate(__pos, 0, __n);
  9005.            __s = _M_data() + __off;
  9006.            _CharT* __p = _M_data() + __pos;
  9007.            if (__s + __n <= __p)
  9008.              _M_copy(__p, __s, __n);
  9009.            else if (__s >= __p)
  9010.              _M_copy(__p, __s + __n, __n);
  9011.            else
  9012.              {
  9013.         const size_type __nleft = __p - __s;
  9014.                _M_copy(__p, __s, __nleft);
  9015.                _M_copy(__p + __nleft, __p + __n, __n - __nleft);
  9016.              }
  9017.            return *this;
  9018.          }
  9019.      }
  9020.  
  9021.    template<typename _CharT, typename _Traits, typename _Alloc>
  9022.      typename basic_string<_CharT, _Traits, _Alloc>::iterator
  9023.      basic_string<_CharT, _Traits, _Alloc>::
  9024.      erase(iterator __first, iterator __last)
  9025.      {
  9026.      
  9027.                            ;
  9028.  
  9029.  
  9030.  
  9031.  
  9032.        const size_type __size = __last - __first;
  9033.        if (__size)
  9034.   {
  9035.     const size_type __pos = __first - _M_ibegin();
  9036.     _M_mutate(__pos, __size, size_type(0));
  9037.     _M_rep()->_M_set_leaked();
  9038.     return iterator(_M_data() + __pos);
  9039.   }
  9040.        else
  9041.   return __first;
  9042.      }
  9043.  
  9044.    template<typename _CharT, typename _Traits, typename _Alloc>
  9045.      basic_string<_CharT, _Traits, _Alloc>&
  9046.      basic_string<_CharT, _Traits, _Alloc>::
  9047.      replace(size_type __pos, size_type __n1, const _CharT* __s,
  9048.       size_type __n2)
  9049.      {
  9050.        ;
  9051.        _M_check(__pos, "basic_string::replace");
  9052.        __n1 = _M_limit(__pos, __n1);
  9053.        _M_check_length(__n1, __n2, "basic_string::replace");
  9054.        bool __left;
  9055.        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
  9056.          return _M_replace_safe(__pos, __n1, __s, __n2);
  9057.        else if ((__left = __s + __n2 <= _M_data() + __pos)
  9058.   || _M_data() + __pos + __n1 <= __s)
  9059.   {
  9060.  
  9061.     size_type __off = __s - _M_data();
  9062.     __left ? __off : (__off += __n2 - __n1);
  9063.     _M_mutate(__pos, __n1, __n2);
  9064.     _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
  9065.     return *this;
  9066.   }
  9067.        else
  9068.   {
  9069.  
  9070.     const basic_string __tmp(__s, __n2);
  9071.     return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
  9072.   }
  9073.      }
  9074.  
  9075.   template<typename _CharT, typename _Traits, typename _Alloc>
  9076.     void
  9077.     basic_string<_CharT, _Traits, _Alloc>::_Rep::
  9078.     _M_destroy(const _Alloc& __a) throw ()
  9079.     {
  9080.       const size_type __size = sizeof(_Rep_base) +
  9081.                         (this->_M_capacity + 1) * sizeof(_CharT);
  9082.       _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
  9083.     }
  9084.  
  9085.   template<typename _CharT, typename _Traits, typename _Alloc>
  9086.     void
  9087.     basic_string<_CharT, _Traits, _Alloc>::
  9088.     _M_leak_hard()
  9089.     {
  9090.  
  9091.       if (_M_rep() == &_S_empty_rep())
  9092.  return;
  9093.  
  9094.       if (_M_rep()->_M_is_shared())
  9095.  _M_mutate(0, 0, 0);
  9096.       _M_rep()->_M_set_leaked();
  9097.     }
  9098.  
  9099.   template<typename _CharT, typename _Traits, typename _Alloc>
  9100.     void
  9101.     basic_string<_CharT, _Traits, _Alloc>::
  9102.     _M_mutate(size_type __pos, size_type __len1, size_type __len2)
  9103.     {
  9104.       const size_type __old_size = this->size();
  9105.       const size_type __new_size = __old_size + __len2 - __len1;
  9106.       const size_type __how_much = __old_size - __pos - __len1;
  9107.  
  9108.       if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
  9109.  {
  9110.  
  9111.    const allocator_type __a = get_allocator();
  9112.    _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
  9113.  
  9114.    if (__pos)
  9115.      _M_copy(__r->_M_refdata(), _M_data(), __pos);
  9116.    if (__how_much)
  9117.      _M_copy(__r->_M_refdata() + __pos + __len2,
  9118.       _M_data() + __pos + __len1, __how_much);
  9119.  
  9120.    _M_rep()->_M_dispose(__a);
  9121.    _M_data(__r->_M_refdata());
  9122.  }
  9123.       else if (__how_much && __len1 != __len2)
  9124.  {
  9125.  
  9126.    _M_move(_M_data() + __pos + __len2,
  9127.     _M_data() + __pos + __len1, __how_much);
  9128.  }
  9129.       _M_rep()->_M_set_length_and_sharable(__new_size);
  9130.     }
  9131.  
  9132.   template<typename _CharT, typename _Traits, typename _Alloc>
  9133.     void
  9134.     basic_string<_CharT, _Traits, _Alloc>::
  9135.     reserve(size_type __res)
  9136.     {
  9137.       if (__res != this->capacity() || _M_rep()->_M_is_shared())
  9138.         {
  9139.  
  9140.    if (__res < this->size())
  9141.      __res = this->size();
  9142.    const allocator_type __a = get_allocator();
  9143.    _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
  9144.    _M_rep()->_M_dispose(__a);
  9145.    _M_data(__tmp);
  9146.         }
  9147.     }
  9148.  
  9149.   template<typename _CharT, typename _Traits, typename _Alloc>
  9150.     void
  9151.     basic_string<_CharT, _Traits, _Alloc>::
  9152.     swap(basic_string& __s)
  9153.     {
  9154.       if (_M_rep()->_M_is_leaked())
  9155.  _M_rep()->_M_set_sharable();
  9156.       if (__s._M_rep()->_M_is_leaked())
  9157.  __s._M_rep()->_M_set_sharable();
  9158.       if (this->get_allocator() == __s.get_allocator())
  9159.  {
  9160.    _CharT* __tmp = _M_data();
  9161.    _M_data(__s._M_data());
  9162.    __s._M_data(__tmp);
  9163.  }
  9164.  
  9165.       else
  9166.  {
  9167.    const basic_string __tmp1(_M_ibegin(), _M_iend(),
  9168.         __s.get_allocator());
  9169.    const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
  9170.         this->get_allocator());
  9171.    *this = __tmp2;
  9172.    __s = __tmp1;
  9173.  }
  9174.     }
  9175.  
  9176.   template<typename _CharT, typename _Traits, typename _Alloc>
  9177.     typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
  9178.     basic_string<_CharT, _Traits, _Alloc>::_Rep::
  9179.     _S_create(size_type __capacity, size_type __old_capacity,
  9180.        const _Alloc& __alloc)
  9181.     {
  9182.  
  9183.  
  9184.       if (__capacity > _S_max_size)
  9185.  __throw_length_error(("basic_string::_S_create"));
  9186. # 579 "/usr/include/c++/4.7/bits/basic_string.tcc" 3
  9187.       const size_type __pagesize = 4096;
  9188.       const size_type __malloc_header_size = 4 * sizeof(void*);
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.  
  9196.       if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
  9197.  __capacity = 2 * __old_capacity;
  9198.  
  9199.  
  9200.  
  9201.  
  9202.       size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
  9203.  
  9204.       const size_type __adj_size = __size + __malloc_header_size;
  9205.       if (__adj_size > __pagesize && __capacity > __old_capacity)
  9206.  {
  9207.    const size_type __extra = __pagesize - __adj_size % __pagesize;
  9208.    __capacity += __extra / sizeof(_CharT);
  9209.  
  9210.    if (__capacity > _S_max_size)
  9211.      __capacity = _S_max_size;
  9212.    __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
  9213.  }
  9214.  
  9215.  
  9216.  
  9217.       void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
  9218.       _Rep *__p = new (__place) _Rep;
  9219.       __p->_M_capacity = __capacity;
  9220.  
  9221.  
  9222.  
  9223.  
  9224.  
  9225.  
  9226.  
  9227.       __p->_M_set_sharable();
  9228.       return __p;
  9229.     }
  9230.  
  9231.   template<typename _CharT, typename _Traits, typename _Alloc>
  9232.     _CharT*
  9233.     basic_string<_CharT, _Traits, _Alloc>::_Rep::
  9234.     _M_clone(const _Alloc& __alloc, size_type __res)
  9235.     {
  9236.  
  9237.       const size_type __requested_cap = this->_M_length + __res;
  9238.       _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
  9239.       __alloc);
  9240.       if (this->_M_length)
  9241.  _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
  9242.  
  9243.       __r->_M_set_length_and_sharable(this->_M_length);
  9244.       return __r->_M_refdata();
  9245.     }
  9246.  
  9247.   template<typename _CharT, typename _Traits, typename _Alloc>
  9248.     void
  9249.     basic_string<_CharT, _Traits, _Alloc>::
  9250.     resize(size_type __n, _CharT __c)
  9251.     {
  9252.       const size_type __size = this->size();
  9253.       _M_check_length(__size, __n, "basic_string::resize");
  9254.       if (__size < __n)
  9255.  this->append(__n - __size, __c);
  9256.       else if (__n < __size)
  9257.  this->erase(__n);
  9258.  
  9259.     }
  9260.  
  9261.   template<typename _CharT, typename _Traits, typename _Alloc>
  9262.     template<typename _InputIterator>
  9263.       basic_string<_CharT, _Traits, _Alloc>&
  9264.       basic_string<_CharT, _Traits, _Alloc>::
  9265.       _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
  9266.      _InputIterator __k2, __false_type)
  9267.       {
  9268.  const basic_string __s(__k1, __k2);
  9269.  const size_type __n1 = __i2 - __i1;
  9270.  _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
  9271.  return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
  9272.           __s.size());
  9273.       }
  9274.  
  9275.   template<typename _CharT, typename _Traits, typename _Alloc>
  9276.     basic_string<_CharT, _Traits, _Alloc>&
  9277.     basic_string<_CharT, _Traits, _Alloc>::
  9278.     _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
  9279.      _CharT __c)
  9280.     {
  9281.       _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
  9282.       _M_mutate(__pos1, __n1, __n2);
  9283.       if (__n2)
  9284.  _M_assign(_M_data() + __pos1, __n2, __c);
  9285.       return *this;
  9286.     }
  9287.  
  9288.   template<typename _CharT, typename _Traits, typename _Alloc>
  9289.     basic_string<_CharT, _Traits, _Alloc>&
  9290.     basic_string<_CharT, _Traits, _Alloc>::
  9291.     _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
  9292.       size_type __n2)
  9293.     {
  9294.       _M_mutate(__pos1, __n1, __n2);
  9295.       if (__n2)
  9296.  _M_copy(_M_data() + __pos1, __s, __n2);
  9297.       return *this;
  9298.     }
  9299.  
  9300.   template<typename _CharT, typename _Traits, typename _Alloc>
  9301.     basic_string<_CharT, _Traits, _Alloc>
  9302.     operator+(const _CharT* __lhs,
  9303.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9304.     {
  9305.       ;
  9306.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9307.       typedef typename __string_type::size_type __size_type;
  9308.       const __size_type __len = _Traits::length(__lhs);
  9309.       __string_type __str;
  9310.       __str.reserve(__len + __rhs.size());
  9311.       __str.append(__lhs, __len);
  9312.       __str.append(__rhs);
  9313.       return __str;
  9314.     }
  9315.  
  9316.   template<typename _CharT, typename _Traits, typename _Alloc>
  9317.     basic_string<_CharT, _Traits, _Alloc>
  9318.     operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9319.     {
  9320.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9321.       typedef typename __string_type::size_type __size_type;
  9322.       __string_type __str;
  9323.       const __size_type __len = __rhs.size();
  9324.       __str.reserve(__len + 1);
  9325.       __str.append(__size_type(1), __lhs);
  9326.       __str.append(__rhs);
  9327.       return __str;
  9328.     }
  9329.  
  9330.   template<typename _CharT, typename _Traits, typename _Alloc>
  9331.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9332.     basic_string<_CharT, _Traits, _Alloc>::
  9333.     copy(_CharT* __s, size_type __n, size_type __pos) const
  9334.     {
  9335.       _M_check(__pos, "basic_string::copy");
  9336.       __n = _M_limit(__pos, __n);
  9337.       ;
  9338.       if (__n)
  9339.  _M_copy(__s, _M_data() + __pos, __n);
  9340.  
  9341.       return __n;
  9342.     }
  9343.  
  9344.   template<typename _CharT, typename _Traits, typename _Alloc>
  9345.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9346.     basic_string<_CharT, _Traits, _Alloc>::
  9347.     find(const _CharT* __s, size_type __pos, size_type __n) const
  9348.     {
  9349.       ;
  9350.       const size_type __size = this->size();
  9351.       const _CharT* __data = _M_data();
  9352.  
  9353.       if (__n == 0)
  9354.  return __pos <= __size ? __pos : npos;
  9355.  
  9356.       if (__n <= __size)
  9357.  {
  9358.    for (; __pos <= __size - __n; ++__pos)
  9359.      if (traits_type::eq(__data[__pos], __s[0])
  9360.   && traits_type::compare(__data + __pos + 1,
  9361.      __s + 1, __n - 1) == 0)
  9362.        return __pos;
  9363.  }
  9364.       return npos;
  9365.     }
  9366.  
  9367.   template<typename _CharT, typename _Traits, typename _Alloc>
  9368.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9369.     basic_string<_CharT, _Traits, _Alloc>::
  9370.     find(_CharT __c, size_type __pos) const
  9371.     {
  9372.       size_type __ret = npos;
  9373.       const size_type __size = this->size();
  9374.       if (__pos < __size)
  9375.  {
  9376.    const _CharT* __data = _M_data();
  9377.    const size_type __n = __size - __pos;
  9378.    const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
  9379.    if (__p)
  9380.      __ret = __p - __data;
  9381.  }
  9382.       return __ret;
  9383.     }
  9384.  
  9385.   template<typename _CharT, typename _Traits, typename _Alloc>
  9386.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9387.     basic_string<_CharT, _Traits, _Alloc>::
  9388.     rfind(const _CharT* __s, size_type __pos, size_type __n) const
  9389.     {
  9390.       ;
  9391.       const size_type __size = this->size();
  9392.       if (__n <= __size)
  9393.  {
  9394.    __pos = std::min(size_type(__size - __n), __pos);
  9395.    const _CharT* __data = _M_data();
  9396.    do
  9397.      {
  9398.        if (traits_type::compare(__data + __pos, __s, __n) == 0)
  9399.   return __pos;
  9400.      }
  9401.    while (__pos-- > 0);
  9402.  }
  9403.       return npos;
  9404.     }
  9405.  
  9406.   template<typename _CharT, typename _Traits, typename _Alloc>
  9407.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9408.     basic_string<_CharT, _Traits, _Alloc>::
  9409.     rfind(_CharT __c, size_type __pos) const
  9410.     {
  9411.       size_type __size = this->size();
  9412.       if (__size)
  9413.  {
  9414.    if (--__size > __pos)
  9415.      __size = __pos;
  9416.    for (++__size; __size-- > 0; )
  9417.      if (traits_type::eq(_M_data()[__size], __c))
  9418.        return __size;
  9419.  }
  9420.       return npos;
  9421.     }
  9422.  
  9423.   template<typename _CharT, typename _Traits, typename _Alloc>
  9424.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9425.     basic_string<_CharT, _Traits, _Alloc>::
  9426.     find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
  9427.     {
  9428.       ;
  9429.       for (; __n && __pos < this->size(); ++__pos)
  9430.  {
  9431.    const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
  9432.    if (__p)
  9433.      return __pos;
  9434.  }
  9435.       return npos;
  9436.     }
  9437.  
  9438.   template<typename _CharT, typename _Traits, typename _Alloc>
  9439.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9440.     basic_string<_CharT, _Traits, _Alloc>::
  9441.     find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
  9442.     {
  9443.       ;
  9444.       size_type __size = this->size();
  9445.       if (__size && __n)
  9446.  {
  9447.    if (--__size > __pos)
  9448.      __size = __pos;
  9449.    do
  9450.      {
  9451.        if (traits_type::find(__s, __n, _M_data()[__size]))
  9452.   return __size;
  9453.      }
  9454.    while (__size-- != 0);
  9455.  }
  9456.       return npos;
  9457.     }
  9458.  
  9459.   template<typename _CharT, typename _Traits, typename _Alloc>
  9460.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9461.     basic_string<_CharT, _Traits, _Alloc>::
  9462.     find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
  9463.     {
  9464.       ;
  9465.       for (; __pos < this->size(); ++__pos)
  9466.  if (!traits_type::find(__s, __n, _M_data()[__pos]))
  9467.    return __pos;
  9468.       return npos;
  9469.     }
  9470.  
  9471.   template<typename _CharT, typename _Traits, typename _Alloc>
  9472.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9473.     basic_string<_CharT, _Traits, _Alloc>::
  9474.     find_first_not_of(_CharT __c, size_type __pos) const
  9475.     {
  9476.       for (; __pos < this->size(); ++__pos)
  9477.  if (!traits_type::eq(_M_data()[__pos], __c))
  9478.    return __pos;
  9479.       return npos;
  9480.     }
  9481.  
  9482.   template<typename _CharT, typename _Traits, typename _Alloc>
  9483.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9484.     basic_string<_CharT, _Traits, _Alloc>::
  9485.     find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
  9486.     {
  9487.       ;
  9488.       size_type __size = this->size();
  9489.       if (__size)
  9490.  {
  9491.    if (--__size > __pos)
  9492.      __size = __pos;
  9493.    do
  9494.      {
  9495.        if (!traits_type::find(__s, __n, _M_data()[__size]))
  9496.   return __size;
  9497.      }
  9498.    while (__size--);
  9499.  }
  9500.       return npos;
  9501.     }
  9502.  
  9503.   template<typename _CharT, typename _Traits, typename _Alloc>
  9504.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9505.     basic_string<_CharT, _Traits, _Alloc>::
  9506.     find_last_not_of(_CharT __c, size_type __pos) const
  9507.     {
  9508.       size_type __size = this->size();
  9509.       if (__size)
  9510.  {
  9511.    if (--__size > __pos)
  9512.      __size = __pos;
  9513.    do
  9514.      {
  9515.        if (!traits_type::eq(_M_data()[__size], __c))
  9516.   return __size;
  9517.      }
  9518.    while (__size--);
  9519.  }
  9520.       return npos;
  9521.     }
  9522.  
  9523.   template<typename _CharT, typename _Traits, typename _Alloc>
  9524.     int
  9525.     basic_string<_CharT, _Traits, _Alloc>::
  9526.     compare(size_type __pos, size_type __n, const basic_string& __str) const
  9527.     {
  9528.       _M_check(__pos, "basic_string::compare");
  9529.       __n = _M_limit(__pos, __n);
  9530.       const size_type __osize = __str.size();
  9531.       const size_type __len = std::min(__n, __osize);
  9532.       int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
  9533.       if (!__r)
  9534.  __r = _S_compare(__n, __osize);
  9535.       return __r;
  9536.     }
  9537.  
  9538.   template<typename _CharT, typename _Traits, typename _Alloc>
  9539.     int
  9540.     basic_string<_CharT, _Traits, _Alloc>::
  9541.     compare(size_type __pos1, size_type __n1, const basic_string& __str,
  9542.      size_type __pos2, size_type __n2) const
  9543.     {
  9544.       _M_check(__pos1, "basic_string::compare");
  9545.       __str._M_check(__pos2, "basic_string::compare");
  9546.       __n1 = _M_limit(__pos1, __n1);
  9547.       __n2 = __str._M_limit(__pos2, __n2);
  9548.       const size_type __len = std::min(__n1, __n2);
  9549.       int __r = traits_type::compare(_M_data() + __pos1,
  9550.          __str.data() + __pos2, __len);
  9551.       if (!__r)
  9552.  __r = _S_compare(__n1, __n2);
  9553.       return __r;
  9554.     }
  9555.  
  9556.   template<typename _CharT, typename _Traits, typename _Alloc>
  9557.     int
  9558.     basic_string<_CharT, _Traits, _Alloc>::
  9559.     compare(const _CharT* __s) const
  9560.     {
  9561.       ;
  9562.       const size_type __size = this->size();
  9563.       const size_type __osize = traits_type::length(__s);
  9564.       const size_type __len = std::min(__size, __osize);
  9565.       int __r = traits_type::compare(_M_data(), __s, __len);
  9566.       if (!__r)
  9567.  __r = _S_compare(__size, __osize);
  9568.       return __r;
  9569.     }
  9570.  
  9571.   template<typename _CharT, typename _Traits, typename _Alloc>
  9572.     int
  9573.     basic_string <_CharT, _Traits, _Alloc>::
  9574.     compare(size_type __pos, size_type __n1, const _CharT* __s) const
  9575.     {
  9576.       ;
  9577.       _M_check(__pos, "basic_string::compare");
  9578.       __n1 = _M_limit(__pos, __n1);
  9579.       const size_type __osize = traits_type::length(__s);
  9580.       const size_type __len = std::min(__n1, __osize);
  9581.       int __r = traits_type::compare(_M_data() + __pos, __s, __len);
  9582.       if (!__r)
  9583.  __r = _S_compare(__n1, __osize);
  9584.       return __r;
  9585.     }
  9586.  
  9587.   template<typename _CharT, typename _Traits, typename _Alloc>
  9588.     int
  9589.     basic_string <_CharT, _Traits, _Alloc>::
  9590.     compare(size_type __pos, size_type __n1, const _CharT* __s,
  9591.      size_type __n2) const
  9592.     {
  9593.       ;
  9594.       _M_check(__pos, "basic_string::compare");
  9595.       __n1 = _M_limit(__pos, __n1);
  9596.       const size_type __len = std::min(__n1, __n2);
  9597.       int __r = traits_type::compare(_M_data() + __pos, __s, __len);
  9598.       if (!__r)
  9599.  __r = _S_compare(__n1, __n2);
  9600.       return __r;
  9601.     }
  9602.  
  9603.  
  9604.   template<typename _CharT, typename _Traits, typename _Alloc>
  9605.     basic_istream<_CharT, _Traits>&
  9606.     operator>>(basic_istream<_CharT, _Traits>& __in,
  9607.         basic_string<_CharT, _Traits, _Alloc>& __str)
  9608.     {
  9609.       typedef basic_istream<_CharT, _Traits> __istream_type;
  9610.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9611.       typedef typename __istream_type::ios_base __ios_base;
  9612.       typedef typename __istream_type::int_type __int_type;
  9613.       typedef typename __string_type::size_type __size_type;
  9614.       typedef ctype<_CharT> __ctype_type;
  9615.       typedef typename __ctype_type::ctype_base __ctype_base;
  9616.  
  9617.       __size_type __extracted = 0;
  9618.       typename __ios_base::iostate __err = __ios_base::goodbit;
  9619.       typename __istream_type::sentry __cerb(__in, false);
  9620.       if (__cerb)
  9621.  {
  9622.    try
  9623.      {
  9624.  
  9625.        __str.erase();
  9626.        _CharT __buf[128];
  9627.        __size_type __len = 0;
  9628.        const streamsize __w = __in.width();
  9629.        const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
  9630.                                 : __str.max_size();
  9631.        const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
  9632.        const __int_type __eof = _Traits::eof();
  9633.        __int_type __c = __in.rdbuf()->sgetc();
  9634.  
  9635.        while (__extracted < __n
  9636.        && !_Traits::eq_int_type(__c, __eof)
  9637.        && !__ct.is(__ctype_base::space,
  9638.      _Traits::to_char_type(__c)))
  9639.   {
  9640.     if (__len == sizeof(__buf) / sizeof(_CharT))
  9641.       {
  9642.         __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
  9643.         __len = 0;
  9644.       }
  9645.     __buf[__len++] = _Traits::to_char_type(__c);
  9646.     ++__extracted;
  9647.     __c = __in.rdbuf()->snextc();
  9648.   }
  9649.        __str.append(__buf, __len);
  9650.  
  9651.        if (_Traits::eq_int_type(__c, __eof))
  9652.   __err |= __ios_base::eofbit;
  9653.        __in.width(0);
  9654.      }
  9655.    catch(__cxxabiv1::__forced_unwind&)
  9656.      {
  9657.        __in._M_setstate(__ios_base::badbit);
  9658.        throw;
  9659.      }
  9660.    catch(...)
  9661.      {
  9662.  
  9663.  
  9664.  
  9665.        __in._M_setstate(__ios_base::badbit);
  9666.      }
  9667.  }
  9668.  
  9669.       if (!__extracted)
  9670.  __err |= __ios_base::failbit;
  9671.       if (__err)
  9672.  __in.setstate(__err);
  9673.       return __in;
  9674.     }
  9675.  
  9676.   template<typename _CharT, typename _Traits, typename _Alloc>
  9677.     basic_istream<_CharT, _Traits>&
  9678.     getline(basic_istream<_CharT, _Traits>& __in,
  9679.      basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
  9680.     {
  9681.       typedef basic_istream<_CharT, _Traits> __istream_type;
  9682.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9683.       typedef typename __istream_type::ios_base __ios_base;
  9684.       typedef typename __istream_type::int_type __int_type;
  9685.       typedef typename __string_type::size_type __size_type;
  9686.  
  9687.       __size_type __extracted = 0;
  9688.       const __size_type __n = __str.max_size();
  9689.       typename __ios_base::iostate __err = __ios_base::goodbit;
  9690.       typename __istream_type::sentry __cerb(__in, true);
  9691.       if (__cerb)
  9692.  {
  9693.    try
  9694.      {
  9695.        __str.erase();
  9696.        const __int_type __idelim = _Traits::to_int_type(__delim);
  9697.        const __int_type __eof = _Traits::eof();
  9698.        __int_type __c = __in.rdbuf()->sgetc();
  9699.  
  9700.        while (__extracted < __n
  9701.        && !_Traits::eq_int_type(__c, __eof)
  9702.        && !_Traits::eq_int_type(__c, __idelim))
  9703.   {
  9704.     __str += _Traits::to_char_type(__c);
  9705.     ++__extracted;
  9706.     __c = __in.rdbuf()->snextc();
  9707.   }
  9708.  
  9709.        if (_Traits::eq_int_type(__c, __eof))
  9710.   __err |= __ios_base::eofbit;
  9711.        else if (_Traits::eq_int_type(__c, __idelim))
  9712.   {
  9713.     ++__extracted;
  9714.     __in.rdbuf()->sbumpc();
  9715.   }
  9716.        else
  9717.   __err |= __ios_base::failbit;
  9718.      }
  9719.    catch(__cxxabiv1::__forced_unwind&)
  9720.      {
  9721.        __in._M_setstate(__ios_base::badbit);
  9722.        throw;
  9723.      }
  9724.    catch(...)
  9725.      {
  9726.  
  9727.  
  9728.  
  9729.        __in._M_setstate(__ios_base::badbit);
  9730.      }
  9731.  }
  9732.       if (!__extracted)
  9733.  __err |= __ios_base::failbit;
  9734.       if (__err)
  9735.  __in.setstate(__err);
  9736.       return __in;
  9737.     }
  9738.  
  9739.  
  9740.  
  9741.  
  9742.   extern template class basic_string<char>;
  9743.   extern template
  9744.     basic_istream<char>&
  9745.     operator>>(basic_istream<char>&, string&);
  9746.   extern template
  9747.     basic_ostream<char>&
  9748.     operator<<(basic_ostream<char>&, const string&);
  9749.   extern template
  9750.     basic_istream<char>&
  9751.     getline(basic_istream<char>&, string&, char);
  9752.   extern template
  9753.     basic_istream<char>&
  9754.     getline(basic_istream<char>&, string&);
  9755.  
  9756.  
  9757.   extern template class basic_string<wchar_t>;
  9758.   extern template
  9759.     basic_istream<wchar_t>&
  9760.     operator>>(basic_istream<wchar_t>&, wstring&);
  9761.   extern template
  9762.     basic_ostream<wchar_t>&
  9763.     operator<<(basic_ostream<wchar_t>&, const wstring&);
  9764.   extern template
  9765.     basic_istream<wchar_t>&
  9766.     getline(basic_istream<wchar_t>&, wstring&, wchar_t);
  9767.   extern template
  9768.     basic_istream<wchar_t>&
  9769.     getline(basic_istream<wchar_t>&, wstring&);
  9770.  
  9771.  
  9772.  
  9773.  
  9774. }
  9775. # 56 "/usr/include/c++/4.7/string" 2 3
  9776. # 43 "/usr/include/c++/4.7/bits/locale_classes.h" 2 3
  9777.  
  9778.  
  9779. namespace std __attribute__ ((__visibility__ ("default")))
  9780. {
  9781.  
  9782. # 64 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9783.   class locale
  9784.   {
  9785.   public:
  9786.  
  9787.  
  9788.     typedef int category;
  9789.  
  9790.  
  9791.     class facet;
  9792.     class id;
  9793.     class _Impl;
  9794.  
  9795.     friend class facet;
  9796.     friend class _Impl;
  9797.  
  9798.     template<typename _Facet>
  9799.       friend bool
  9800.       has_facet(const locale&) throw();
  9801.  
  9802.     template<typename _Facet>
  9803.       friend const _Facet&
  9804.       use_facet(const locale&);
  9805.  
  9806.     template<typename _Cache>
  9807.       friend struct __use_cache;
  9808. # 100 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9809.     static const category none = 0;
  9810.     static const category ctype = 1L << 0;
  9811.     static const category numeric = 1L << 1;
  9812.     static const category collate = 1L << 2;
  9813.     static const category time = 1L << 3;
  9814.     static const category monetary = 1L << 4;
  9815.     static const category messages = 1L << 5;
  9816.     static const category all = (ctype | numeric | collate |
  9817.         time | monetary | messages);
  9818. # 119 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9819.     locale() throw();
  9820. # 128 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9821.     locale(const locale& __other) throw();
  9822. # 138 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9823.     explicit
  9824.     locale(const char* __s);
  9825. # 153 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9826.     locale(const locale& __base, const char* __s, category __cat);
  9827. # 166 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9828.     locale(const locale& __base, const locale& __add, category __cat);
  9829. # 179 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9830.     template<typename _Facet>
  9831.       locale(const locale& __other, _Facet* __f);
  9832.  
  9833.  
  9834.     ~locale() throw();
  9835. # 193 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9836.     const locale&
  9837.     operator=(const locale& __other) throw();
  9838. # 208 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9839.     template<typename _Facet>
  9840.       locale
  9841.       combine(const locale& __other) const;
  9842.  
  9843.  
  9844.  
  9845.  
  9846.  
  9847.  
  9848.     string
  9849.     name() const;
  9850. # 227 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9851.     bool
  9852.     operator==(const locale& __other) const throw();
  9853.  
  9854.  
  9855.  
  9856.  
  9857.  
  9858.  
  9859.  
  9860.     bool
  9861.     operator!=(const locale& __other) const throw()
  9862.     { return !(this->operator==(__other)); }
  9863. # 255 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9864.     template<typename _Char, typename _Traits, typename _Alloc>
  9865.       bool
  9866.       operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
  9867.    const basic_string<_Char, _Traits, _Alloc>& __s2) const;
  9868. # 271 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9869.     static locale
  9870.     global(const locale& __loc);
  9871.  
  9872.  
  9873.  
  9874.  
  9875.     static const locale&
  9876.     classic();
  9877.  
  9878.   private:
  9879.  
  9880.     _Impl* _M_impl;
  9881.  
  9882.  
  9883.     static _Impl* _S_classic;
  9884.  
  9885.  
  9886.     static _Impl* _S_global;
  9887.  
  9888.  
  9889.  
  9890.  
  9891.  
  9892.     static const char* const* const _S_categories;
  9893. # 306 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9894.     enum { _S_categories_size = 6 + 6 };
  9895.  
  9896.  
  9897.     static __gthread_once_t _S_once;
  9898.  
  9899.  
  9900.     explicit
  9901.     locale(_Impl*) throw();
  9902.  
  9903.     static void
  9904.     _S_initialize();
  9905.  
  9906.     static void
  9907.     _S_initialize_once() throw();
  9908.  
  9909.     static category
  9910.     _S_normalize_category(category);
  9911.  
  9912.     void
  9913.     _M_coalesce(const locale& __base, const locale& __add, category __cat);
  9914.   };
  9915. # 340 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9916.   class locale::facet
  9917.   {
  9918.   private:
  9919.     friend class locale;
  9920.     friend class locale::_Impl;
  9921.  
  9922.     mutable _Atomic_word _M_refcount;
  9923.  
  9924.  
  9925.     static __c_locale _S_c_locale;
  9926.  
  9927.  
  9928.     static const char _S_c_name[2];
  9929.  
  9930.  
  9931.     static __gthread_once_t _S_once;
  9932.  
  9933.  
  9934.     static void
  9935.     _S_initialize_once();
  9936.  
  9937.   protected:
  9938. # 371 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9939.     explicit
  9940.     facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
  9941.     { }
  9942.  
  9943.  
  9944.     virtual
  9945.     ~facet();
  9946.  
  9947.     static void
  9948.     _S_create_c_locale(__c_locale& __cloc, const char* __s,
  9949.          __c_locale __old = 0);
  9950.  
  9951.     static __c_locale
  9952.     _S_clone_c_locale(__c_locale& __cloc) throw();
  9953.  
  9954.     static void
  9955.     _S_destroy_c_locale(__c_locale& __cloc);
  9956.  
  9957.     static __c_locale
  9958.     _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s);
  9959.  
  9960.  
  9961.  
  9962.     static __c_locale
  9963.     _S_get_c_locale();
  9964.  
  9965.     __attribute__ ((__const__)) static const char*
  9966.     _S_get_c_name() throw();
  9967.  
  9968.   private:
  9969.     void
  9970.     _M_add_reference() const throw()
  9971.     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
  9972.  
  9973.     void
  9974.     _M_remove_reference() const throw()
  9975.     {
  9976.  
  9977.       ;
  9978.       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
  9979.  {
  9980.           ;
  9981.    try
  9982.      { delete this; }
  9983.    catch(...)
  9984.      { }
  9985.  }
  9986.     }
  9987.  
  9988.     facet(const facet&);
  9989.  
  9990.     facet&
  9991.     operator=(const facet&);
  9992.   };
  9993. # 438 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  9994.   class locale::id
  9995.   {
  9996.   private:
  9997.     friend class locale;
  9998.     friend class locale::_Impl;
  9999.  
  10000.     template<typename _Facet>
  10001.       friend const _Facet&
  10002.       use_facet(const locale&);
  10003.  
  10004.     template<typename _Facet>
  10005.       friend bool
  10006.       has_facet(const locale&) throw();
  10007.  
  10008.  
  10009.  
  10010.  
  10011.     mutable size_t _M_index;
  10012.  
  10013.  
  10014.     static _Atomic_word _S_refcount;
  10015.  
  10016.     void
  10017.     operator=(const id&);
  10018.  
  10019.     id(const id&);
  10020.  
  10021.   public:
  10022.  
  10023.  
  10024.  
  10025.     id() { }
  10026.  
  10027.     size_t
  10028.     _M_id() const throw();
  10029.   };
  10030.  
  10031.  
  10032.  
  10033.   class locale::_Impl
  10034.   {
  10035.   public:
  10036.  
  10037.     friend class locale;
  10038.     friend class locale::facet;
  10039.  
  10040.     template<typename _Facet>
  10041.       friend bool
  10042.       has_facet(const locale&) throw();
  10043.  
  10044.     template<typename _Facet>
  10045.       friend const _Facet&
  10046.       use_facet(const locale&);
  10047.  
  10048.     template<typename _Cache>
  10049.       friend struct __use_cache;
  10050.  
  10051.   private:
  10052.  
  10053.     _Atomic_word _M_refcount;
  10054.     const facet** _M_facets;
  10055.     size_t _M_facets_size;
  10056.     const facet** _M_caches;
  10057.     char** _M_names;
  10058.     static const locale::id* const _S_id_ctype[];
  10059.     static const locale::id* const _S_id_numeric[];
  10060.     static const locale::id* const _S_id_collate[];
  10061.     static const locale::id* const _S_id_time[];
  10062.     static const locale::id* const _S_id_monetary[];
  10063.     static const locale::id* const _S_id_messages[];
  10064.     static const locale::id* const* const _S_facet_categories[];
  10065.  
  10066.     void
  10067.     _M_add_reference() throw()
  10068.     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
  10069.  
  10070.     void
  10071.     _M_remove_reference() throw()
  10072.     {
  10073.  
  10074.       ;
  10075.       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
  10076.  {
  10077.           ;
  10078.    try
  10079.      { delete this; }
  10080.    catch(...)
  10081.      { }
  10082.  }
  10083.     }
  10084.  
  10085.     _Impl(const _Impl&, size_t);
  10086.     _Impl(const char*, size_t);
  10087.     _Impl(size_t) throw();
  10088.  
  10089.    ~_Impl() throw();
  10090.  
  10091.     _Impl(const _Impl&);
  10092.  
  10093.     void
  10094.     operator=(const _Impl&);
  10095.  
  10096.     bool
  10097.     _M_check_same_name()
  10098.     {
  10099.       bool __ret = true;
  10100.       if (_M_names[1])
  10101.  
  10102.  for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
  10103.    __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
  10104.       return __ret;
  10105.     }
  10106.  
  10107.     void
  10108.     _M_replace_categories(const _Impl*, category);
  10109.  
  10110.     void
  10111.     _M_replace_category(const _Impl*, const locale::id* const*);
  10112.  
  10113.     void
  10114.     _M_replace_facet(const _Impl*, const locale::id*);
  10115.  
  10116.     void
  10117.     _M_install_facet(const locale::id*, const facet*);
  10118.  
  10119.     template<typename _Facet>
  10120.       void
  10121.       _M_init_facet(_Facet* __facet)
  10122.       { _M_install_facet(&_Facet::id, __facet); }
  10123.  
  10124.     void
  10125.     _M_install_cache(const facet*, size_t);
  10126.   };
  10127. # 585 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10128.   template<typename _CharT>
  10129.     class collate : public locale::facet
  10130.     {
  10131.     public:
  10132.  
  10133.  
  10134.  
  10135.       typedef _CharT char_type;
  10136.       typedef basic_string<_CharT> string_type;
  10137.  
  10138.  
  10139.     protected:
  10140.  
  10141.  
  10142.       __c_locale _M_c_locale_collate;
  10143.  
  10144.     public:
  10145.  
  10146.       static locale::id id;
  10147. # 612 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10148.       explicit
  10149.       collate(size_t __refs = 0)
  10150.       : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
  10151.       { }
  10152. # 626 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10153.       explicit
  10154.       collate(__c_locale __cloc, size_t __refs = 0)
  10155.       : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
  10156.       { }
  10157. # 643 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10158.       int
  10159.       compare(const _CharT* __lo1, const _CharT* __hi1,
  10160.        const _CharT* __lo2, const _CharT* __hi2) const
  10161.       { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
  10162. # 662 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10163.       string_type
  10164.       transform(const _CharT* __lo, const _CharT* __hi) const
  10165.       { return this->do_transform(__lo, __hi); }
  10166. # 676 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10167.       long
  10168.       hash(const _CharT* __lo, const _CharT* __hi) const
  10169.       { return this->do_hash(__lo, __hi); }
  10170.  
  10171.  
  10172.       int
  10173.       _M_compare(const _CharT*, const _CharT*) const throw();
  10174.  
  10175.       size_t
  10176.       _M_transform(_CharT*, const _CharT*, size_t) const throw();
  10177.  
  10178.   protected:
  10179.  
  10180.       virtual
  10181.       ~collate()
  10182.       { _S_destroy_c_locale(_M_c_locale_collate); }
  10183. # 705 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10184.       virtual int
  10185.       do_compare(const _CharT* __lo1, const _CharT* __hi1,
  10186.    const _CharT* __lo2, const _CharT* __hi2) const;
  10187. # 719 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10188.       virtual string_type
  10189.       do_transform(const _CharT* __lo, const _CharT* __hi) const;
  10190. # 732 "/usr/include/c++/4.7/bits/locale_classes.h" 3
  10191.       virtual long
  10192.       do_hash(const _CharT* __lo, const _CharT* __hi) const;
  10193.     };
  10194.  
  10195.   template<typename _CharT>
  10196.     locale::id collate<_CharT>::id;
  10197.  
  10198.  
  10199.   template<>
  10200.     int
  10201.     collate<char>::_M_compare(const char*, const char*) const throw();
  10202.  
  10203.   template<>
  10204.     size_t
  10205.     collate<char>::_M_transform(char*, const char*, size_t) const throw();
  10206.  
  10207.  
  10208.   template<>
  10209.     int
  10210.     collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw();
  10211.  
  10212.   template<>
  10213.     size_t
  10214.     collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw();
  10215.  
  10216.  
  10217.  
  10218.   template<typename _CharT>
  10219.     class collate_byname : public collate<_CharT>
  10220.     {
  10221.     public:
  10222.  
  10223.  
  10224.       typedef _CharT char_type;
  10225.       typedef basic_string<_CharT> string_type;
  10226.  
  10227.  
  10228.       explicit
  10229.       collate_byname(const char* __s, size_t __refs = 0)
  10230.       : collate<_CharT>(__refs)
  10231.       {
  10232.  if (__builtin_strcmp(__s, "C") != 0
  10233.      && __builtin_strcmp(__s, "POSIX") != 0)
  10234.    {
  10235.      this->_S_destroy_c_locale(this->_M_c_locale_collate);
  10236.      this->_S_create_c_locale(this->_M_c_locale_collate, __s);
  10237.    }
  10238.       }
  10239.  
  10240.     protected:
  10241.       virtual
  10242.       ~collate_byname() { }
  10243.     };
  10244.  
  10245.  
  10246. }
  10247.  
  10248. # 1 "/usr/include/c++/4.7/bits/locale_classes.tcc" 1 3
  10249. # 37 "/usr/include/c++/4.7/bits/locale_classes.tcc" 3
  10250.        
  10251. # 38 "/usr/include/c++/4.7/bits/locale_classes.tcc" 3
  10252.  
  10253. namespace std __attribute__ ((__visibility__ ("default")))
  10254. {
  10255.  
  10256.  
  10257.   template<typename _Facet>
  10258.     locale::
  10259.     locale(const locale& __other, _Facet* __f)
  10260.     {
  10261.       _M_impl = new _Impl(*__other._M_impl, 1);
  10262.  
  10263.       try
  10264.  { _M_impl->_M_install_facet(&_Facet::id, __f); }
  10265.       catch(...)
  10266.  {
  10267.    _M_impl->_M_remove_reference();
  10268.    throw;
  10269.  }
  10270.       delete [] _M_impl->_M_names[0];
  10271.       _M_impl->_M_names[0] = 0;
  10272.     }
  10273.  
  10274.   template<typename _Facet>
  10275.     locale
  10276.     locale::
  10277.     combine(const locale& __other) const
  10278.     {
  10279.       _Impl* __tmp = new _Impl(*_M_impl, 1);
  10280.       try
  10281.  {
  10282.    __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
  10283.  }
  10284.       catch(...)
  10285.  {
  10286.    __tmp->_M_remove_reference();
  10287.    throw;
  10288.  }
  10289.       return locale(__tmp);
  10290.     }
  10291.  
  10292.   template<typename _CharT, typename _Traits, typename _Alloc>
  10293.     bool
  10294.     locale::
  10295.     operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
  10296.         const basic_string<_CharT, _Traits, _Alloc>& __s2) const
  10297.     {
  10298.       typedef std::collate<_CharT> __collate_type;
  10299.       const __collate_type& __collate = use_facet<__collate_type>(*this);
  10300.       return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
  10301.     __s2.data(), __s2.data() + __s2.length()) < 0);
  10302.     }
  10303. # 101 "/usr/include/c++/4.7/bits/locale_classes.tcc" 3
  10304.   template<typename _Facet>
  10305.     bool
  10306.     has_facet(const locale& __loc) throw()
  10307.     {
  10308.       const size_t __i = _Facet::id._M_id();
  10309.       const locale::facet** __facets = __loc._M_impl->_M_facets;
  10310.       return (__i < __loc._M_impl->_M_facets_size
  10311.  
  10312.        && dynamic_cast<const _Facet*>(__facets[__i]));
  10313.  
  10314.  
  10315.  
  10316.     }
  10317. # 128 "/usr/include/c++/4.7/bits/locale_classes.tcc" 3
  10318.   template<typename _Facet>
  10319.     const _Facet&
  10320.     use_facet(const locale& __loc)
  10321.     {
  10322.       const size_t __i = _Facet::id._M_id();
  10323.       const locale::facet** __facets = __loc._M_impl->_M_facets;
  10324.       if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
  10325.         __throw_bad_cast();
  10326.  
  10327.       return dynamic_cast<const _Facet&>(*__facets[__i]);
  10328.  
  10329.  
  10330.  
  10331.     }
  10332.  
  10333.  
  10334.  
  10335.   template<typename _CharT>
  10336.     int
  10337.     collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw ()
  10338.     { return 0; }
  10339.  
  10340.  
  10341.   template<typename _CharT>
  10342.     size_t
  10343.     collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw ()
  10344.     { return 0; }
  10345.  
  10346.   template<typename _CharT>
  10347.     int
  10348.     collate<_CharT>::
  10349.     do_compare(const _CharT* __lo1, const _CharT* __hi1,
  10350.         const _CharT* __lo2, const _CharT* __hi2) const
  10351.     {
  10352.  
  10353.  
  10354.       const string_type __one(__lo1, __hi1);
  10355.       const string_type __two(__lo2, __hi2);
  10356.  
  10357.       const _CharT* __p = __one.c_str();
  10358.       const _CharT* __pend = __one.data() + __one.length();
  10359.       const _CharT* __q = __two.c_str();
  10360.       const _CharT* __qend = __two.data() + __two.length();
  10361.  
  10362.  
  10363.  
  10364.  
  10365.       for (;;)
  10366.  {
  10367.    const int __res = _M_compare(__p, __q);
  10368.    if (__res)
  10369.      return __res;
  10370.  
  10371.    __p += char_traits<_CharT>::length(__p);
  10372.    __q += char_traits<_CharT>::length(__q);
  10373.    if (__p == __pend && __q == __qend)
  10374.      return 0;
  10375.    else if (__p == __pend)
  10376.      return -1;
  10377.    else if (__q == __qend)
  10378.      return 1;
  10379.  
  10380.    __p++;
  10381.    __q++;
  10382.  }
  10383.     }
  10384.  
  10385.   template<typename _CharT>
  10386.     typename collate<_CharT>::string_type
  10387.     collate<_CharT>::
  10388.     do_transform(const _CharT* __lo, const _CharT* __hi) const
  10389.     {
  10390.       string_type __ret;
  10391.  
  10392.  
  10393.       const string_type __str(__lo, __hi);
  10394.  
  10395.       const _CharT* __p = __str.c_str();
  10396.       const _CharT* __pend = __str.data() + __str.length();
  10397.  
  10398.       size_t __len = (__hi - __lo) * 2;
  10399.  
  10400.       _CharT* __c = new _CharT[__len];
  10401.  
  10402.       try
  10403.  {
  10404.  
  10405.  
  10406.  
  10407.    for (;;)
  10408.      {
  10409.  
  10410.        size_t __res = _M_transform(__c, __p, __len);
  10411.  
  10412.  
  10413.        if (__res >= __len)
  10414.   {
  10415.     __len = __res + 1;
  10416.     delete [] __c, __c = 0;
  10417.     __c = new _CharT[__len];
  10418.     __res = _M_transform(__c, __p, __len);
  10419.   }
  10420.  
  10421.        __ret.append(__c, __res);
  10422.        __p += char_traits<_CharT>::length(__p);
  10423.        if (__p == __pend)
  10424.   break;
  10425.  
  10426.        __p++;
  10427.        __ret.push_back(_CharT());
  10428.      }
  10429.  }
  10430.       catch(...)
  10431.  {
  10432.    delete [] __c;
  10433.    throw;
  10434.  }
  10435.  
  10436.       delete [] __c;
  10437.  
  10438.       return __ret;
  10439.     }
  10440.  
  10441.   template<typename _CharT>
  10442.     long
  10443.     collate<_CharT>::
  10444.     do_hash(const _CharT* __lo, const _CharT* __hi) const
  10445.     {
  10446.       unsigned long __val = 0;
  10447.       for (; __lo < __hi; ++__lo)
  10448.  __val =
  10449.    *__lo + ((__val << 7)
  10450.      | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
  10451.     __digits - 7)));
  10452.       return static_cast<long>(__val);
  10453.     }
  10454.  
  10455.  
  10456.  
  10457.  
  10458.   extern template class collate<char>;
  10459.   extern template class collate_byname<char>;
  10460.  
  10461.   extern template
  10462.     const collate<char>&
  10463.     use_facet<collate<char> >(const locale&);
  10464.  
  10465.   extern template
  10466.     bool
  10467.     has_facet<collate<char> >(const locale&);
  10468.  
  10469.  
  10470.   extern template class collate<wchar_t>;
  10471.   extern template class collate_byname<wchar_t>;
  10472.  
  10473.   extern template
  10474.     const collate<wchar_t>&
  10475.     use_facet<collate<wchar_t> >(const locale&);
  10476.  
  10477.   extern template
  10478.     bool
  10479.     has_facet<collate<wchar_t> >(const locale&);
  10480.  
  10481.  
  10482.  
  10483.  
  10484. }
  10485. # 790 "/usr/include/c++/4.7/bits/locale_classes.h" 2 3
  10486. # 44 "/usr/include/c++/4.7/bits/ios_base.h" 2 3
  10487.  
  10488. namespace std __attribute__ ((__visibility__ ("default")))
  10489. {
  10490.  
  10491.  
  10492.  
  10493.  
  10494.  
  10495.  
  10496.   enum _Ios_Fmtflags
  10497.     {
  10498.       _S_boolalpha = 1L << 0,
  10499.       _S_dec = 1L << 1,
  10500.       _S_fixed = 1L << 2,
  10501.       _S_hex = 1L << 3,
  10502.       _S_internal = 1L << 4,
  10503.       _S_left = 1L << 5,
  10504.       _S_oct = 1L << 6,
  10505.       _S_right = 1L << 7,
  10506.       _S_scientific = 1L << 8,
  10507.       _S_showbase = 1L << 9,
  10508.       _S_showpoint = 1L << 10,
  10509.       _S_showpos = 1L << 11,
  10510.       _S_skipws = 1L << 12,
  10511.       _S_unitbuf = 1L << 13,
  10512.       _S_uppercase = 1L << 14,
  10513.       _S_adjustfield = _S_left | _S_right | _S_internal,
  10514.       _S_basefield = _S_dec | _S_oct | _S_hex,
  10515.       _S_floatfield = _S_scientific | _S_fixed,
  10516.       _S_ios_fmtflags_end = 1L << 16
  10517.     };
  10518.  
  10519.   inline _Ios_Fmtflags
  10520.   operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  10521.   { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
  10522.  
  10523.   inline _Ios_Fmtflags
  10524.   operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  10525.   { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
  10526.  
  10527.   inline _Ios_Fmtflags
  10528.   operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  10529.   { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
  10530.  
  10531.   inline _Ios_Fmtflags
  10532.   operator~(_Ios_Fmtflags __a)
  10533.   { return _Ios_Fmtflags(~static_cast<int>(__a)); }
  10534.  
  10535.   inline const _Ios_Fmtflags&
  10536.   operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
  10537.   { return __a = __a | __b; }
  10538.  
  10539.   inline const _Ios_Fmtflags&
  10540.   operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
  10541.   { return __a = __a & __b; }
  10542.  
  10543.   inline const _Ios_Fmtflags&
  10544.   operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
  10545.   { return __a = __a ^ __b; }
  10546.  
  10547.  
  10548.   enum _Ios_Openmode
  10549.     {
  10550.       _S_app = 1L << 0,
  10551.       _S_ate = 1L << 1,
  10552.       _S_bin = 1L << 2,
  10553.       _S_in = 1L << 3,
  10554.       _S_out = 1L << 4,
  10555.       _S_trunc = 1L << 5,
  10556.       _S_ios_openmode_end = 1L << 16
  10557.     };
  10558.  
  10559.   inline _Ios_Openmode
  10560.   operator&(_Ios_Openmode __a, _Ios_Openmode __b)
  10561.   { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
  10562.  
  10563.   inline _Ios_Openmode
  10564.   operator|(_Ios_Openmode __a, _Ios_Openmode __b)
  10565.   { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
  10566.  
  10567.   inline _Ios_Openmode
  10568.   operator^(_Ios_Openmode __a, _Ios_Openmode __b)
  10569.   { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
  10570.  
  10571.   inline _Ios_Openmode
  10572.   operator~(_Ios_Openmode __a)
  10573.   { return _Ios_Openmode(~static_cast<int>(__a)); }
  10574.  
  10575.   inline const _Ios_Openmode&
  10576.   operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
  10577.   { return __a = __a | __b; }
  10578.  
  10579.   inline const _Ios_Openmode&
  10580.   operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
  10581.   { return __a = __a & __b; }
  10582.  
  10583.   inline const _Ios_Openmode&
  10584.   operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
  10585.   { return __a = __a ^ __b; }
  10586.  
  10587.  
  10588.   enum _Ios_Iostate
  10589.     {
  10590.       _S_goodbit = 0,
  10591.       _S_badbit = 1L << 0,
  10592.       _S_eofbit = 1L << 1,
  10593.       _S_failbit = 1L << 2,
  10594.       _S_ios_iostate_end = 1L << 16
  10595.     };
  10596.  
  10597.   inline _Ios_Iostate
  10598.   operator&(_Ios_Iostate __a, _Ios_Iostate __b)
  10599.   { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
  10600.  
  10601.   inline _Ios_Iostate
  10602.   operator|(_Ios_Iostate __a, _Ios_Iostate __b)
  10603.   { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
  10604.  
  10605.   inline _Ios_Iostate
  10606.   operator^(_Ios_Iostate __a, _Ios_Iostate __b)
  10607.   { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
  10608.  
  10609.   inline _Ios_Iostate
  10610.   operator~(_Ios_Iostate __a)
  10611.   { return _Ios_Iostate(~static_cast<int>(__a)); }
  10612.  
  10613.   inline const _Ios_Iostate&
  10614.   operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
  10615.   { return __a = __a | __b; }
  10616.  
  10617.   inline const _Ios_Iostate&
  10618.   operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
  10619.   { return __a = __a & __b; }
  10620.  
  10621.   inline const _Ios_Iostate&
  10622.   operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
  10623.   { return __a = __a ^ __b; }
  10624.  
  10625.  
  10626.   enum _Ios_Seekdir
  10627.     {
  10628.       _S_beg = 0,
  10629.       _S_cur = 1,
  10630.       _S_end = 2,
  10631.       _S_ios_seekdir_end = 1L << 16
  10632.     };
  10633. # 201 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10634.   class ios_base
  10635.   {
  10636.   public:
  10637.  
  10638.  
  10639.  
  10640.  
  10641.  
  10642.  
  10643.  
  10644.     class failure : public exception
  10645.     {
  10646.     public:
  10647.  
  10648.  
  10649.       explicit
  10650.       failure(const string& __str) throw();
  10651.  
  10652.  
  10653.  
  10654.       virtual
  10655.       ~failure() throw();
  10656.  
  10657.       virtual const char*
  10658.       what() const throw();
  10659.  
  10660.     private:
  10661.       string _M_msg;
  10662.     };
  10663. # 257 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10664.     typedef _Ios_Fmtflags fmtflags;
  10665.  
  10666.  
  10667.     static const fmtflags boolalpha = _S_boolalpha;
  10668.  
  10669.  
  10670.     static const fmtflags dec = _S_dec;
  10671.  
  10672.  
  10673.     static const fmtflags fixed = _S_fixed;
  10674.  
  10675.  
  10676.     static const fmtflags hex = _S_hex;
  10677.  
  10678.  
  10679.  
  10680.  
  10681.     static const fmtflags internal = _S_internal;
  10682.  
  10683.  
  10684.  
  10685.     static const fmtflags left = _S_left;
  10686.  
  10687.  
  10688.     static const fmtflags oct = _S_oct;
  10689.  
  10690.  
  10691.  
  10692.     static const fmtflags right = _S_right;
  10693.  
  10694.  
  10695.     static const fmtflags scientific = _S_scientific;
  10696.  
  10697.  
  10698.  
  10699.     static const fmtflags showbase = _S_showbase;
  10700.  
  10701.  
  10702.  
  10703.     static const fmtflags showpoint = _S_showpoint;
  10704.  
  10705.  
  10706.     static const fmtflags showpos = _S_showpos;
  10707.  
  10708.  
  10709.     static const fmtflags skipws = _S_skipws;
  10710.  
  10711.  
  10712.     static const fmtflags unitbuf = _S_unitbuf;
  10713.  
  10714.  
  10715.  
  10716.     static const fmtflags uppercase = _S_uppercase;
  10717.  
  10718.  
  10719.     static const fmtflags adjustfield = _S_adjustfield;
  10720.  
  10721.  
  10722.     static const fmtflags basefield = _S_basefield;
  10723.  
  10724.  
  10725.     static const fmtflags floatfield = _S_floatfield;
  10726. # 332 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10727.     typedef _Ios_Iostate iostate;
  10728.  
  10729.  
  10730.  
  10731.     static const iostate badbit = _S_badbit;
  10732.  
  10733.  
  10734.     static const iostate eofbit = _S_eofbit;
  10735.  
  10736.  
  10737.  
  10738.  
  10739.     static const iostate failbit = _S_failbit;
  10740.  
  10741.  
  10742.     static const iostate goodbit = _S_goodbit;
  10743. # 363 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10744.     typedef _Ios_Openmode openmode;
  10745.  
  10746.  
  10747.     static const openmode app = _S_app;
  10748.  
  10749.  
  10750.     static const openmode ate = _S_ate;
  10751.  
  10752.  
  10753.  
  10754.  
  10755.     static const openmode binary = _S_bin;
  10756.  
  10757.  
  10758.     static const openmode in = _S_in;
  10759.  
  10760.  
  10761.     static const openmode out = _S_out;
  10762.  
  10763.  
  10764.     static const openmode trunc = _S_trunc;
  10765. # 395 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10766.     typedef _Ios_Seekdir seekdir;
  10767.  
  10768.  
  10769.     static const seekdir beg = _S_beg;
  10770.  
  10771.  
  10772.     static const seekdir cur = _S_cur;
  10773.  
  10774.  
  10775.     static const seekdir end = _S_end;
  10776.  
  10777.  
  10778.     typedef int io_state;
  10779.     typedef int open_mode;
  10780.     typedef int seek_dir;
  10781.  
  10782.     typedef std::streampos streampos;
  10783.     typedef std::streamoff streamoff;
  10784. # 421 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10785.     enum event
  10786.     {
  10787.       erase_event,
  10788.       imbue_event,
  10789.       copyfmt_event
  10790.     };
  10791. # 438 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10792.     typedef void (*event_callback) (event __e, ios_base& __b, int __i);
  10793. # 450 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10794.     void
  10795.     register_callback(event_callback __fn, int __index);
  10796.  
  10797.   protected:
  10798.     streamsize _M_precision;
  10799.     streamsize _M_width;
  10800.     fmtflags _M_flags;
  10801.     iostate _M_exception;
  10802.     iostate _M_streambuf_state;
  10803.  
  10804.  
  10805.  
  10806.     struct _Callback_list
  10807.     {
  10808.  
  10809.       _Callback_list* _M_next;
  10810.       ios_base::event_callback _M_fn;
  10811.       int _M_index;
  10812.       _Atomic_word _M_refcount;
  10813.  
  10814.       _Callback_list(ios_base::event_callback __fn, int __index,
  10815.        _Callback_list* __cb)
  10816.       : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
  10817.  
  10818.       void
  10819.       _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
  10820.  
  10821.  
  10822.       int
  10823.       _M_remove_reference()
  10824.       {
  10825.  
  10826.         ;
  10827.         int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1);
  10828.         if (__res == 0)
  10829.           {
  10830.             ;
  10831.           }
  10832.         return __res;
  10833.       }
  10834.     };
  10835.  
  10836.      _Callback_list* _M_callbacks;
  10837.  
  10838.     void
  10839.     _M_call_callbacks(event __ev) throw();
  10840.  
  10841.     void
  10842.     _M_dispose_callbacks(void) throw();
  10843.  
  10844.  
  10845.     struct _Words
  10846.     {
  10847.       void* _M_pword;
  10848.       long _M_iword;
  10849.       _Words() : _M_pword(0), _M_iword(0) { }
  10850.     };
  10851.  
  10852.  
  10853.     _Words _M_word_zero;
  10854.  
  10855.  
  10856.  
  10857.     enum { _S_local_word_size = 8 };
  10858.     _Words _M_local_word[_S_local_word_size];
  10859.  
  10860.  
  10861.     int _M_word_size;
  10862.     _Words* _M_word;
  10863.  
  10864.     _Words&
  10865.     _M_grow_words(int __index, bool __iword);
  10866.  
  10867.  
  10868.     locale _M_ios_locale;
  10869.  
  10870.     void
  10871.     _M_init() throw();
  10872.  
  10873.   public:
  10874.  
  10875.  
  10876.  
  10877.  
  10878.  
  10879.     class Init
  10880.     {
  10881.       friend class ios_base;
  10882.     public:
  10883.       Init();
  10884.       ~Init();
  10885.  
  10886.     private:
  10887.       static _Atomic_word _S_refcount;
  10888.       static bool _S_synced_with_stdio;
  10889.     };
  10890.  
  10891.  
  10892.  
  10893.  
  10894.  
  10895.  
  10896.     fmtflags
  10897.     flags() const
  10898.     { return _M_flags; }
  10899. # 563 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10900.     fmtflags
  10901.     flags(fmtflags __fmtfl)
  10902.     {
  10903.       fmtflags __old = _M_flags;
  10904.       _M_flags = __fmtfl;
  10905.       return __old;
  10906.     }
  10907. # 579 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10908.     fmtflags
  10909.     setf(fmtflags __fmtfl)
  10910.     {
  10911.       fmtflags __old = _M_flags;
  10912.       _M_flags |= __fmtfl;
  10913.       return __old;
  10914.     }
  10915. # 596 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10916.     fmtflags
  10917.     setf(fmtflags __fmtfl, fmtflags __mask)
  10918.     {
  10919.       fmtflags __old = _M_flags;
  10920.       _M_flags &= ~__mask;
  10921.       _M_flags |= (__fmtfl & __mask);
  10922.       return __old;
  10923.     }
  10924.  
  10925.  
  10926.  
  10927.  
  10928.  
  10929.  
  10930.  
  10931.     void
  10932.     unsetf(fmtflags __mask)
  10933.     { _M_flags &= ~__mask; }
  10934. # 622 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10935.     streamsize
  10936.     precision() const
  10937.     { return _M_precision; }
  10938.  
  10939.  
  10940.  
  10941.  
  10942.  
  10943.  
  10944.     streamsize
  10945.     precision(streamsize __prec)
  10946.     {
  10947.       streamsize __old = _M_precision;
  10948.       _M_precision = __prec;
  10949.       return __old;
  10950.     }
  10951.  
  10952.  
  10953.  
  10954.  
  10955.  
  10956.  
  10957.  
  10958.     streamsize
  10959.     width() const
  10960.     { return _M_width; }
  10961.  
  10962.  
  10963.  
  10964.  
  10965.  
  10966.  
  10967.     streamsize
  10968.     width(streamsize __wide)
  10969.     {
  10970.       streamsize __old = _M_width;
  10971.       _M_width = __wide;
  10972.       return __old;
  10973.     }
  10974. # 673 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10975.     static bool
  10976.     sync_with_stdio(bool __sync = true);
  10977. # 685 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10978.     locale
  10979.     imbue(const locale& __loc) throw();
  10980. # 696 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10981.     locale
  10982.     getloc() const
  10983.     { return _M_ios_locale; }
  10984. # 707 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10985.     const locale&
  10986.     _M_getloc() const
  10987.     { return _M_ios_locale; }
  10988. # 726 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10989.     static int
  10990.     xalloc() throw();
  10991. # 742 "/usr/include/c++/4.7/bits/ios_base.h" 3
  10992.     long&
  10993.     iword(int __ix)
  10994.     {
  10995.       _Words& __word = (__ix < _M_word_size)
  10996.    ? _M_word[__ix] : _M_grow_words(__ix, true);
  10997.       return __word._M_iword;
  10998.     }
  10999. # 763 "/usr/include/c++/4.7/bits/ios_base.h" 3
  11000.     void*&
  11001.     pword(int __ix)
  11002.     {
  11003.       _Words& __word = (__ix < _M_word_size)
  11004.    ? _M_word[__ix] : _M_grow_words(__ix, false);
  11005.       return __word._M_pword;
  11006.     }
  11007. # 780 "/usr/include/c++/4.7/bits/ios_base.h" 3
  11008.     virtual ~ios_base();
  11009.  
  11010.   protected:
  11011.     ios_base() throw ();
  11012.  
  11013.  
  11014.  
  11015.   private:
  11016.     ios_base(const ios_base&);
  11017.  
  11018.     ios_base&
  11019.     operator=(const ios_base&);
  11020.   };
  11021.  
  11022.  
  11023.  
  11024.   inline ios_base&
  11025.   boolalpha(ios_base& __base)
  11026.   {
  11027.     __base.setf(ios_base::boolalpha);
  11028.     return __base;
  11029.   }
  11030.  
  11031.  
  11032.   inline ios_base&
  11033.   noboolalpha(ios_base& __base)
  11034.   {
  11035.     __base.unsetf(ios_base::boolalpha);
  11036.     return __base;
  11037.   }
  11038.  
  11039.  
  11040.   inline ios_base&
  11041.   showbase(ios_base& __base)
  11042.   {
  11043.     __base.setf(ios_base::showbase);
  11044.     return __base;
  11045.   }
  11046.  
  11047.  
  11048.   inline ios_base&
  11049.   noshowbase(ios_base& __base)
  11050.   {
  11051.     __base.unsetf(ios_base::showbase);
  11052.     return __base;
  11053.   }
  11054.  
  11055.  
  11056.   inline ios_base&
  11057.   showpoint(ios_base& __base)
  11058.   {
  11059.     __base.setf(ios_base::showpoint);
  11060.     return __base;
  11061.   }
  11062.  
  11063.  
  11064.   inline ios_base&
  11065.   noshowpoint(ios_base& __base)
  11066.   {
  11067.     __base.unsetf(ios_base::showpoint);
  11068.     return __base;
  11069.   }
  11070.  
  11071.  
  11072.   inline ios_base&
  11073.   showpos(ios_base& __base)
  11074.   {
  11075.     __base.setf(ios_base::showpos);
  11076.     return __base;
  11077.   }
  11078.  
  11079.  
  11080.   inline ios_base&
  11081.   noshowpos(ios_base& __base)
  11082.   {
  11083.     __base.unsetf(ios_base::showpos);
  11084.     return __base;
  11085.   }
  11086.  
  11087.  
  11088.   inline ios_base&
  11089.   skipws(ios_base& __base)
  11090.   {
  11091.     __base.setf(ios_base::skipws);
  11092.     return __base;
  11093.   }
  11094.  
  11095.  
  11096.   inline ios_base&
  11097.   noskipws(ios_base& __base)
  11098.   {
  11099.     __base.unsetf(ios_base::skipws);
  11100.     return __base;
  11101.   }
  11102.  
  11103.  
  11104.   inline ios_base&
  11105.   uppercase(ios_base& __base)
  11106.   {
  11107.     __base.setf(ios_base::uppercase);
  11108.     return __base;
  11109.   }
  11110.  
  11111.  
  11112.   inline ios_base&
  11113.   nouppercase(ios_base& __base)
  11114.   {
  11115.     __base.unsetf(ios_base::uppercase);
  11116.     return __base;
  11117.   }
  11118.  
  11119.  
  11120.   inline ios_base&
  11121.   unitbuf(ios_base& __base)
  11122.   {
  11123.      __base.setf(ios_base::unitbuf);
  11124.      return __base;
  11125.   }
  11126.  
  11127.  
  11128.   inline ios_base&
  11129.   nounitbuf(ios_base& __base)
  11130.   {
  11131.      __base.unsetf(ios_base::unitbuf);
  11132.      return __base;
  11133.   }
  11134.  
  11135.  
  11136.  
  11137.   inline ios_base&
  11138.   internal(ios_base& __base)
  11139.   {
  11140.      __base.setf(ios_base::internal, ios_base::adjustfield);
  11141.      return __base;
  11142.   }
  11143.  
  11144.  
  11145.   inline ios_base&
  11146.   left(ios_base& __base)
  11147.   {
  11148.     __base.setf(ios_base::left, ios_base::adjustfield);
  11149.     return __base;
  11150.   }
  11151.  
  11152.  
  11153.   inline ios_base&
  11154.   right(ios_base& __base)
  11155.   {
  11156.     __base.setf(ios_base::right, ios_base::adjustfield);
  11157.     return __base;
  11158.   }
  11159.  
  11160.  
  11161.  
  11162.   inline ios_base&
  11163.   dec(ios_base& __base)
  11164.   {
  11165.     __base.setf(ios_base::dec, ios_base::basefield);
  11166.     return __base;
  11167.   }
  11168.  
  11169.  
  11170.   inline ios_base&
  11171.   hex(ios_base& __base)
  11172.   {
  11173.     __base.setf(ios_base::hex, ios_base::basefield);
  11174.     return __base;
  11175.   }
  11176.  
  11177.  
  11178.   inline ios_base&
  11179.   oct(ios_base& __base)
  11180.   {
  11181.     __base.setf(ios_base::oct, ios_base::basefield);
  11182.     return __base;
  11183.   }
  11184.  
  11185.  
  11186.  
  11187.   inline ios_base&
  11188.   fixed(ios_base& __base)
  11189.   {
  11190.     __base.setf(ios_base::fixed, ios_base::floatfield);
  11191.     return __base;
  11192.   }
  11193.  
  11194.  
  11195.   inline ios_base&
  11196.   scientific(ios_base& __base)
  11197.   {
  11198.     __base.setf(ios_base::scientific, ios_base::floatfield);
  11199.     return __base;
  11200.   }
  11201.  
  11202.  
  11203. }
  11204. # 44 "/usr/include/c++/4.7/ios" 2 3
  11205. # 1 "/usr/include/c++/4.7/streambuf" 1 3
  11206. # 37 "/usr/include/c++/4.7/streambuf" 3
  11207.        
  11208. # 38 "/usr/include/c++/4.7/streambuf" 3
  11209. # 46 "/usr/include/c++/4.7/streambuf" 3
  11210. namespace std __attribute__ ((__visibility__ ("default")))
  11211. {
  11212.  
  11213.  
  11214.   template<typename _CharT, typename _Traits>
  11215.     streamsize
  11216.     __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
  11217.      basic_streambuf<_CharT, _Traits>*, bool&);
  11218. # 116 "/usr/include/c++/4.7/streambuf" 3
  11219.   template<typename _CharT, typename _Traits>
  11220.     class basic_streambuf
  11221.     {
  11222.     public:
  11223.  
  11224.  
  11225.  
  11226.  
  11227.  
  11228.  
  11229.       typedef _CharT char_type;
  11230.       typedef _Traits traits_type;
  11231.       typedef typename traits_type::int_type int_type;
  11232.       typedef typename traits_type::pos_type pos_type;
  11233.       typedef typename traits_type::off_type off_type;
  11234.  
  11235.  
  11236.  
  11237.  
  11238.       typedef basic_streambuf<char_type, traits_type> __streambuf_type;
  11239.  
  11240.  
  11241.       friend class basic_ios<char_type, traits_type>;
  11242.       friend class basic_istream<char_type, traits_type>;
  11243.       friend class basic_ostream<char_type, traits_type>;
  11244.       friend class istreambuf_iterator<char_type, traits_type>;
  11245.       friend class ostreambuf_iterator<char_type, traits_type>;
  11246.  
  11247.       friend streamsize
  11248.       __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);
  11249.  
  11250.       template<bool _IsMove, typename _CharT2>
  11251.         friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  11252.             _CharT2*>::__type
  11253.         __copy_move_a2(istreambuf_iterator<_CharT2>,
  11254.          istreambuf_iterator<_CharT2>, _CharT2*);
  11255.  
  11256.       template<typename _CharT2>
  11257.         friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  11258.       istreambuf_iterator<_CharT2> >::__type
  11259.         find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  11260.       const _CharT2&);
  11261.  
  11262.       template<typename _CharT2, typename _Traits2>
  11263.         friend basic_istream<_CharT2, _Traits2>&
  11264.         operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
  11265.  
  11266.       template<typename _CharT2, typename _Traits2, typename _Alloc>
  11267.         friend basic_istream<_CharT2, _Traits2>&
  11268.         operator>>(basic_istream<_CharT2, _Traits2>&,
  11269.      basic_string<_CharT2, _Traits2, _Alloc>&);
  11270.  
  11271.       template<typename _CharT2, typename _Traits2, typename _Alloc>
  11272.         friend basic_istream<_CharT2, _Traits2>&
  11273.         getline(basic_istream<_CharT2, _Traits2>&,
  11274.   basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
  11275.  
  11276.     protected:
  11277. # 182 "/usr/include/c++/4.7/streambuf" 3
  11278.       char_type* _M_in_beg;
  11279.       char_type* _M_in_cur;
  11280.       char_type* _M_in_end;
  11281.       char_type* _M_out_beg;
  11282.       char_type* _M_out_cur;
  11283.       char_type* _M_out_end;
  11284.  
  11285.  
  11286.       locale _M_buf_locale;
  11287.  
  11288.   public:
  11289.  
  11290.       virtual
  11291.       ~basic_streambuf()
  11292.       { }
  11293. # 206 "/usr/include/c++/4.7/streambuf" 3
  11294.       locale
  11295.       pubimbue(const locale& __loc)
  11296.       {
  11297.  locale __tmp(this->getloc());
  11298.  this->imbue(__loc);
  11299.  _M_buf_locale = __loc;
  11300.  return __tmp;
  11301.       }
  11302. # 223 "/usr/include/c++/4.7/streambuf" 3
  11303.       locale
  11304.       getloc() const
  11305.       { return _M_buf_locale; }
  11306. # 236 "/usr/include/c++/4.7/streambuf" 3
  11307.       __streambuf_type*
  11308.       pubsetbuf(char_type* __s, streamsize __n)
  11309.       { return this->setbuf(__s, __n); }
  11310. # 248 "/usr/include/c++/4.7/streambuf" 3
  11311.       pos_type
  11312.       pubseekoff(off_type __off, ios_base::seekdir __way,
  11313.    ios_base::openmode __mode = ios_base::in | ios_base::out)
  11314.       { return this->seekoff(__off, __way, __mode); }
  11315. # 260 "/usr/include/c++/4.7/streambuf" 3
  11316.       pos_type
  11317.       pubseekpos(pos_type __sp,
  11318.    ios_base::openmode __mode = ios_base::in | ios_base::out)
  11319.       { return this->seekpos(__sp, __mode); }
  11320.  
  11321.  
  11322.  
  11323.  
  11324.       int
  11325.       pubsync() { return this->sync(); }
  11326. # 281 "/usr/include/c++/4.7/streambuf" 3
  11327.       streamsize
  11328.       in_avail()
  11329.       {
  11330.  const streamsize __ret = this->egptr() - this->gptr();
  11331.  return __ret ? __ret : this->showmanyc();
  11332.       }
  11333. # 295 "/usr/include/c++/4.7/streambuf" 3
  11334.       int_type
  11335.       snextc()
  11336.       {
  11337.  int_type __ret = traits_type::eof();
  11338.  if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
  11339.              __ret), true))
  11340.    __ret = this->sgetc();
  11341.  return __ret;
  11342.       }
  11343. # 313 "/usr/include/c++/4.7/streambuf" 3
  11344.       int_type
  11345.       sbumpc()
  11346.       {
  11347.  int_type __ret;
  11348.  if (__builtin_expect(this->gptr() < this->egptr(), true))
  11349.    {
  11350.      __ret = traits_type::to_int_type(*this->gptr());
  11351.      this->gbump(1);
  11352.    }
  11353.  else
  11354.    __ret = this->uflow();
  11355.  return __ret;
  11356.       }
  11357. # 335 "/usr/include/c++/4.7/streambuf" 3
  11358.       int_type
  11359.       sgetc()
  11360.       {
  11361.  int_type __ret;
  11362.  if (__builtin_expect(this->gptr() < this->egptr(), true))
  11363.    __ret = traits_type::to_int_type(*this->gptr());
  11364.  else
  11365.    __ret = this->underflow();
  11366.  return __ret;
  11367.       }
  11368. # 354 "/usr/include/c++/4.7/streambuf" 3
  11369.       streamsize
  11370.       sgetn(char_type* __s, streamsize __n)
  11371.       { return this->xsgetn(__s, __n); }
  11372. # 369 "/usr/include/c++/4.7/streambuf" 3
  11373.       int_type
  11374.       sputbackc(char_type __c)
  11375.       {
  11376.  int_type __ret;
  11377.  const bool __testpos = this->eback() < this->gptr();
  11378.  if (__builtin_expect(!__testpos ||
  11379.         !traits_type::eq(__c, this->gptr()[-1]), false))
  11380.    __ret = this->pbackfail(traits_type::to_int_type(__c));
  11381.  else
  11382.    {
  11383.      this->gbump(-1);
  11384.      __ret = traits_type::to_int_type(*this->gptr());
  11385.    }
  11386.  return __ret;
  11387.       }
  11388. # 394 "/usr/include/c++/4.7/streambuf" 3
  11389.       int_type
  11390.       sungetc()
  11391.       {
  11392.  int_type __ret;
  11393.  if (__builtin_expect(this->eback() < this->gptr(), true))
  11394.    {
  11395.      this->gbump(-1);
  11396.      __ret = traits_type::to_int_type(*this->gptr());
  11397.    }
  11398.  else
  11399.    __ret = this->pbackfail();
  11400.  return __ret;
  11401.       }
  11402. # 421 "/usr/include/c++/4.7/streambuf" 3
  11403.       int_type
  11404.       sputc(char_type __c)
  11405.       {
  11406.  int_type __ret;
  11407.  if (__builtin_expect(this->pptr() < this->epptr(), true))
  11408.    {
  11409.      *this->pptr() = __c;
  11410.      this->pbump(1);
  11411.      __ret = traits_type::to_int_type(__c);
  11412.    }
  11413.  else
  11414.    __ret = this->overflow(traits_type::to_int_type(__c));
  11415.  return __ret;
  11416.       }
  11417. # 447 "/usr/include/c++/4.7/streambuf" 3
  11418.       streamsize
  11419.       sputn(const char_type* __s, streamsize __n)
  11420.       { return this->xsputn(__s, __n); }
  11421.  
  11422.     protected:
  11423. # 461 "/usr/include/c++/4.7/streambuf" 3
  11424.       basic_streambuf()
  11425.       : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
  11426.       _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
  11427.       _M_buf_locale(locale())
  11428.       { }
  11429. # 479 "/usr/include/c++/4.7/streambuf" 3
  11430.       char_type*
  11431.       eback() const { return _M_in_beg; }
  11432.  
  11433.       char_type*
  11434.       gptr() const { return _M_in_cur; }
  11435.  
  11436.       char_type*
  11437.       egptr() const { return _M_in_end; }
  11438. # 495 "/usr/include/c++/4.7/streambuf" 3
  11439.       void
  11440.       gbump(int __n) { _M_in_cur += __n; }
  11441. # 506 "/usr/include/c++/4.7/streambuf" 3
  11442.       void
  11443.       setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
  11444.       {
  11445.  _M_in_beg = __gbeg;
  11446.  _M_in_cur = __gnext;
  11447.  _M_in_end = __gend;
  11448.       }
  11449. # 526 "/usr/include/c++/4.7/streambuf" 3
  11450.       char_type*
  11451.       pbase() const { return _M_out_beg; }
  11452.  
  11453.       char_type*
  11454.       pptr() const { return _M_out_cur; }
  11455.  
  11456.       char_type*
  11457.       epptr() const { return _M_out_end; }
  11458. # 542 "/usr/include/c++/4.7/streambuf" 3
  11459.       void
  11460.       pbump(int __n) { _M_out_cur += __n; }
  11461. # 552 "/usr/include/c++/4.7/streambuf" 3
  11462.       void
  11463.       setp(char_type* __pbeg, char_type* __pend)
  11464.       {
  11465.  _M_out_beg = _M_out_cur = __pbeg;
  11466.  _M_out_end = __pend;
  11467.       }
  11468. # 573 "/usr/include/c++/4.7/streambuf" 3
  11469.       virtual void
  11470.       imbue(const locale& __loc)
  11471.       { }
  11472. # 588 "/usr/include/c++/4.7/streambuf" 3
  11473.       virtual basic_streambuf<char_type,_Traits>*
  11474.       setbuf(char_type*, streamsize)
  11475.       { return this; }
  11476. # 599 "/usr/include/c++/4.7/streambuf" 3
  11477.       virtual pos_type
  11478.       seekoff(off_type, ios_base::seekdir,
  11479.        ios_base::openmode = ios_base::in | ios_base::out)
  11480.       { return pos_type(off_type(-1)); }
  11481. # 611 "/usr/include/c++/4.7/streambuf" 3
  11482.       virtual pos_type
  11483.       seekpos(pos_type,
  11484.        ios_base::openmode = ios_base::in | ios_base::out)
  11485.       { return pos_type(off_type(-1)); }
  11486. # 624 "/usr/include/c++/4.7/streambuf" 3
  11487.       virtual int
  11488.       sync() { return 0; }
  11489. # 646 "/usr/include/c++/4.7/streambuf" 3
  11490.       virtual streamsize
  11491.       showmanyc() { return 0; }
  11492. # 662 "/usr/include/c++/4.7/streambuf" 3
  11493.       virtual streamsize
  11494.       xsgetn(char_type* __s, streamsize __n);
  11495. # 684 "/usr/include/c++/4.7/streambuf" 3
  11496.       virtual int_type
  11497.       underflow()
  11498.       { return traits_type::eof(); }
  11499. # 697 "/usr/include/c++/4.7/streambuf" 3
  11500.       virtual int_type
  11501.       uflow()
  11502.       {
  11503.  int_type __ret = traits_type::eof();
  11504.  const bool __testeof = traits_type::eq_int_type(this->underflow(),
  11505.        __ret);
  11506.  if (!__testeof)
  11507.    {
  11508.      __ret = traits_type::to_int_type(*this->gptr());
  11509.      this->gbump(1);
  11510.    }
  11511.  return __ret;
  11512.       }
  11513. # 721 "/usr/include/c++/4.7/streambuf" 3
  11514.       virtual int_type
  11515.       pbackfail(int_type __c = traits_type::eof())
  11516.       { return traits_type::eof(); }
  11517. # 739 "/usr/include/c++/4.7/streambuf" 3
  11518.       virtual streamsize
  11519.       xsputn(const char_type* __s, streamsize __n);
  11520. # 765 "/usr/include/c++/4.7/streambuf" 3
  11521.       virtual int_type
  11522.       overflow(int_type __c = traits_type::eof())
  11523.       { return traits_type::eof(); }
  11524.  
  11525.  
  11526.  
  11527.     public:
  11528. # 780 "/usr/include/c++/4.7/streambuf" 3
  11529.       void
  11530.       stossc()
  11531.       {
  11532.  if (this->gptr() < this->egptr())
  11533.    this->gbump(1);
  11534.  else
  11535.    this->uflow();
  11536.       }
  11537.  
  11538.  
  11539.  
  11540.       void
  11541.       __safe_gbump(streamsize __n) { _M_in_cur += __n; }
  11542.  
  11543.       void
  11544.       __safe_pbump(streamsize __n) { _M_out_cur += __n; }
  11545.  
  11546.     private:
  11547.  
  11548.  
  11549.       basic_streambuf(const __streambuf_type& __sb)
  11550.       : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),
  11551.       _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),
  11552.       _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
  11553.       _M_buf_locale(__sb._M_buf_locale)
  11554.       { }
  11555.  
  11556.       __streambuf_type&
  11557.       operator=(const __streambuf_type&) { return *this; };
  11558.     };
  11559.  
  11560.  
  11561.   template<>
  11562.     streamsize
  11563.     __copy_streambufs_eof(basic_streambuf<char>* __sbin,
  11564.      basic_streambuf<char>* __sbout, bool& __ineof);
  11565.  
  11566.   template<>
  11567.     streamsize
  11568.     __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
  11569.      basic_streambuf<wchar_t>* __sbout, bool& __ineof);
  11570.  
  11571.  
  11572.  
  11573. }
  11574.  
  11575. # 1 "/usr/include/c++/4.7/bits/streambuf.tcc" 1 3
  11576. # 38 "/usr/include/c++/4.7/bits/streambuf.tcc" 3
  11577.        
  11578. # 39 "/usr/include/c++/4.7/bits/streambuf.tcc" 3
  11579.  
  11580. namespace std __attribute__ ((__visibility__ ("default")))
  11581. {
  11582.  
  11583.  
  11584.   template<typename _CharT, typename _Traits>
  11585.     streamsize
  11586.     basic_streambuf<_CharT, _Traits>::
  11587.     xsgetn(char_type* __s, streamsize __n)
  11588.     {
  11589.       streamsize __ret = 0;
  11590.       while (__ret < __n)
  11591.  {
  11592.    const streamsize __buf_len = this->egptr() - this->gptr();
  11593.    if (__buf_len)
  11594.      {
  11595.        const streamsize __remaining = __n - __ret;
  11596.        const streamsize __len = std::min(__buf_len, __remaining);
  11597.        traits_type::copy(__s, this->gptr(), __len);
  11598.        __ret += __len;
  11599.        __s += __len;
  11600.        this->__safe_gbump(__len);
  11601.      }
  11602.  
  11603.    if (__ret < __n)
  11604.      {
  11605.        const int_type __c = this->uflow();
  11606.        if (!traits_type::eq_int_type(__c, traits_type::eof()))
  11607.   {
  11608.     traits_type::assign(*__s++, traits_type::to_char_type(__c));
  11609.     ++__ret;
  11610.   }
  11611.        else
  11612.   break;
  11613.      }
  11614.  }
  11615.       return __ret;
  11616.     }
  11617.  
  11618.   template<typename _CharT, typename _Traits>
  11619.     streamsize
  11620.     basic_streambuf<_CharT, _Traits>::
  11621.     xsputn(const char_type* __s, streamsize __n)
  11622.     {
  11623.       streamsize __ret = 0;
  11624.       while (__ret < __n)
  11625.  {
  11626.    const streamsize __buf_len = this->epptr() - this->pptr();
  11627.    if (__buf_len)
  11628.      {
  11629.        const streamsize __remaining = __n - __ret;
  11630.        const streamsize __len = std::min(__buf_len, __remaining);
  11631.        traits_type::copy(this->pptr(), __s, __len);
  11632.        __ret += __len;
  11633.        __s += __len;
  11634.        this->__safe_pbump(__len);
  11635.      }
  11636.  
  11637.    if (__ret < __n)
  11638.      {
  11639.        int_type __c = this->overflow(traits_type::to_int_type(*__s));
  11640.        if (!traits_type::eq_int_type(__c, traits_type::eof()))
  11641.   {
  11642.     ++__ret;
  11643.     ++__s;
  11644.   }
  11645.        else
  11646.   break;
  11647.      }
  11648.  }
  11649.       return __ret;
  11650.     }
  11651.  
  11652.  
  11653.  
  11654.  
  11655.   template<typename _CharT, typename _Traits>
  11656.     streamsize
  11657.     __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
  11658.      basic_streambuf<_CharT, _Traits>* __sbout,
  11659.      bool& __ineof)
  11660.     {
  11661.       streamsize __ret = 0;
  11662.       __ineof = true;
  11663.       typename _Traits::int_type __c = __sbin->sgetc();
  11664.       while (!_Traits::eq_int_type(__c, _Traits::eof()))
  11665.  {
  11666.    __c = __sbout->sputc(_Traits::to_char_type(__c));
  11667.    if (_Traits::eq_int_type(__c, _Traits::eof()))
  11668.      {
  11669.        __ineof = false;
  11670.        break;
  11671.      }
  11672.    ++__ret;
  11673.    __c = __sbin->snextc();
  11674.  }
  11675.       return __ret;
  11676.     }
  11677.  
  11678.   template<typename _CharT, typename _Traits>
  11679.     inline streamsize
  11680.     __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
  11681.         basic_streambuf<_CharT, _Traits>* __sbout)
  11682.     {
  11683.       bool __ineof;
  11684.       return __copy_streambufs_eof(__sbin, __sbout, __ineof);
  11685.     }
  11686.  
  11687.  
  11688.  
  11689.  
  11690.   extern template class basic_streambuf<char>;
  11691.   extern template
  11692.     streamsize
  11693.     __copy_streambufs(basic_streambuf<char>*,
  11694.         basic_streambuf<char>*);
  11695.   extern template
  11696.     streamsize
  11697.     __copy_streambufs_eof(basic_streambuf<char>*,
  11698.      basic_streambuf<char>*, bool&);
  11699.  
  11700.  
  11701.   extern template class basic_streambuf<wchar_t>;
  11702.   extern template
  11703.     streamsize
  11704.     __copy_streambufs(basic_streambuf<wchar_t>*,
  11705.         basic_streambuf<wchar_t>*);
  11706.   extern template
  11707.     streamsize
  11708.     __copy_streambufs_eof(basic_streambuf<wchar_t>*,
  11709.      basic_streambuf<wchar_t>*, bool&);
  11710.  
  11711.  
  11712.  
  11713.  
  11714. }
  11715. # 827 "/usr/include/c++/4.7/streambuf" 2 3
  11716. # 45 "/usr/include/c++/4.7/ios" 2 3
  11717. # 1 "/usr/include/c++/4.7/bits/basic_ios.h" 1 3
  11718. # 35 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  11719.        
  11720. # 36 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  11721.  
  11722.  
  11723.  
  11724. # 1 "/usr/include/c++/4.7/bits/locale_facets.h" 1 3
  11725. # 39 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  11726.        
  11727. # 40 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  11728.  
  11729. # 1 "/usr/include/c++/4.7/cwctype" 1 3
  11730. # 41 "/usr/include/c++/4.7/cwctype" 3
  11731.        
  11732. # 42 "/usr/include/c++/4.7/cwctype" 3
  11733. # 52 "/usr/include/c++/4.7/cwctype" 3
  11734. # 1 "/usr/include/wctype.h" 1 3 4
  11735. # 34 "/usr/include/wctype.h" 3 4
  11736. # 1 "/usr/include/wchar.h" 1 3 4
  11737. # 35 "/usr/include/wctype.h" 2 3 4
  11738. # 50 "/usr/include/wctype.h" 3 4
  11739.  
  11740.  
  11741.  
  11742. typedef unsigned long int wctype_t;
  11743.  
  11744. # 72 "/usr/include/wctype.h" 3 4
  11745. enum
  11746. {
  11747.   __ISwupper = 0,
  11748.   __ISwlower = 1,
  11749.   __ISwalpha = 2,
  11750.   __ISwdigit = 3,
  11751.   __ISwxdigit = 4,
  11752.   __ISwspace = 5,
  11753.   __ISwprint = 6,
  11754.   __ISwgraph = 7,
  11755.   __ISwblank = 8,
  11756.   __ISwcntrl = 9,
  11757.   __ISwpunct = 10,
  11758.   __ISwalnum = 11,
  11759.  
  11760.   _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))),
  11761.   _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))),
  11762.   _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))),
  11763.   _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))),
  11764.   _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))),
  11765.   _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))),
  11766.   _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))),
  11767.   _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))),
  11768.   _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))),
  11769.   _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))),
  11770.   _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))),
  11771.   _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24))))
  11772. };
  11773.  
  11774.  
  11775.  
  11776. extern "C" {
  11777.  
  11778.  
  11779.  
  11780.  
  11781.  
  11782.  
  11783.  
  11784.  
  11785. extern int iswalnum (wint_t __wc) throw ();
  11786.  
  11787.  
  11788.  
  11789.  
  11790.  
  11791. extern int iswalpha (wint_t __wc) throw ();
  11792.  
  11793.  
  11794. extern int iswcntrl (wint_t __wc) throw ();
  11795.  
  11796.  
  11797.  
  11798. extern int iswdigit (wint_t __wc) throw ();
  11799.  
  11800.  
  11801.  
  11802. extern int iswgraph (wint_t __wc) throw ();
  11803.  
  11804.  
  11805.  
  11806.  
  11807. extern int iswlower (wint_t __wc) throw ();
  11808.  
  11809.  
  11810. extern int iswprint (wint_t __wc) throw ();
  11811.  
  11812.  
  11813.  
  11814.  
  11815. extern int iswpunct (wint_t __wc) throw ();
  11816.  
  11817.  
  11818.  
  11819.  
  11820. extern int iswspace (wint_t __wc) throw ();
  11821.  
  11822.  
  11823.  
  11824.  
  11825. extern int iswupper (wint_t __wc) throw ();
  11826.  
  11827.  
  11828.  
  11829.  
  11830. extern int iswxdigit (wint_t __wc) throw ();
  11831.  
  11832.  
  11833.  
  11834.  
  11835.  
  11836. extern int iswblank (wint_t __wc) throw ();
  11837. # 172 "/usr/include/wctype.h" 3 4
  11838. extern wctype_t wctype (__const char *__property) throw ();
  11839.  
  11840.  
  11841.  
  11842. extern int iswctype (wint_t __wc, wctype_t __desc) throw ();
  11843.  
  11844.  
  11845.  
  11846.  
  11847.  
  11848.  
  11849.  
  11850.  
  11851.  
  11852.  
  11853. typedef __const __int32_t *wctrans_t;
  11854.  
  11855.  
  11856.  
  11857.  
  11858.  
  11859.  
  11860.  
  11861. extern wint_t towlower (wint_t __wc) throw ();
  11862.  
  11863.  
  11864. extern wint_t towupper (wint_t __wc) throw ();
  11865.  
  11866.  
  11867. }
  11868. # 214 "/usr/include/wctype.h" 3 4
  11869. extern "C" {
  11870.  
  11871.  
  11872.  
  11873.  
  11874. extern wctrans_t wctrans (__const char *__property) throw ();
  11875.  
  11876.  
  11877. extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw ();
  11878.  
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  
  11885.  
  11886. extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw ();
  11887.  
  11888.  
  11889.  
  11890.  
  11891.  
  11892. extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw ();
  11893.  
  11894.  
  11895. extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw ();
  11896.  
  11897.  
  11898.  
  11899. extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw ();
  11900.  
  11901.  
  11902.  
  11903. extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw ();
  11904.  
  11905.  
  11906.  
  11907.  
  11908. extern int iswlower_l (wint_t __wc, __locale_t __locale) throw ();
  11909.  
  11910.  
  11911. extern int iswprint_l (wint_t __wc, __locale_t __locale) throw ();
  11912.  
  11913.  
  11914.  
  11915.  
  11916. extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw ();
  11917.  
  11918.  
  11919.  
  11920.  
  11921. extern int iswspace_l (wint_t __wc, __locale_t __locale) throw ();
  11922.  
  11923.  
  11924.  
  11925.  
  11926. extern int iswupper_l (wint_t __wc, __locale_t __locale) throw ();
  11927.  
  11928.  
  11929.  
  11930.  
  11931. extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw ();
  11932.  
  11933.  
  11934.  
  11935.  
  11936. extern int iswblank_l (wint_t __wc, __locale_t __locale) throw ();
  11937.  
  11938.  
  11939.  
  11940. extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
  11941.      throw ();
  11942.  
  11943.  
  11944.  
  11945. extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
  11946.      throw ();
  11947.  
  11948.  
  11949.  
  11950.  
  11951.  
  11952.  
  11953.  
  11954. extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw ();
  11955.  
  11956.  
  11957. extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw ();
  11958.  
  11959.  
  11960.  
  11961. extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
  11962.      throw ();
  11963.  
  11964.  
  11965. extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
  11966.       __locale_t __locale) throw ();
  11967.  
  11968.  
  11969.  
  11970. }
  11971. # 53 "/usr/include/c++/4.7/cwctype" 2 3
  11972. # 82 "/usr/include/c++/4.7/cwctype" 3
  11973. namespace std
  11974. {
  11975.   using ::wctrans_t;
  11976.   using ::wctype_t;
  11977.   using ::wint_t;
  11978.  
  11979.   using ::iswalnum;
  11980.   using ::iswalpha;
  11981.  
  11982.   using ::iswblank;
  11983.  
  11984.   using ::iswcntrl;
  11985.   using ::iswctype;
  11986.   using ::iswdigit;
  11987.   using ::iswgraph;
  11988.   using ::iswlower;
  11989.   using ::iswprint;
  11990.   using ::iswpunct;
  11991.   using ::iswspace;
  11992.   using ::iswupper;
  11993.   using ::iswxdigit;
  11994.   using ::towctrans;
  11995.   using ::towlower;
  11996.   using ::towupper;
  11997.   using ::wctrans;
  11998.   using ::wctype;
  11999. }
  12000. # 42 "/usr/include/c++/4.7/bits/locale_facets.h" 2 3
  12001. # 1 "/usr/include/c++/4.7/cctype" 1 3
  12002. # 41 "/usr/include/c++/4.7/cctype" 3
  12003.        
  12004. # 42 "/usr/include/c++/4.7/cctype" 3
  12005. # 43 "/usr/include/c++/4.7/bits/locale_facets.h" 2 3
  12006. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/ctype_base.h" 1 3
  12007. # 37 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/ctype_base.h" 3
  12008. namespace std __attribute__ ((__visibility__ ("default")))
  12009. {
  12010.  
  12011.  
  12012.  
  12013.   struct ctype_base
  12014.   {
  12015.  
  12016.     typedef const int* __to_type;
  12017.  
  12018.  
  12019.  
  12020.     typedef unsigned short mask;
  12021.     static const mask upper = _ISupper;
  12022.     static const mask lower = _ISlower;
  12023.     static const mask alpha = _ISalpha;
  12024.     static const mask digit = _ISdigit;
  12025.     static const mask xdigit = _ISxdigit;
  12026.     static const mask space = _ISspace;
  12027.     static const mask print = _ISprint;
  12028.     static const mask graph = _ISalpha | _ISdigit | _ISpunct;
  12029.     static const mask cntrl = _IScntrl;
  12030.     static const mask punct = _ISpunct;
  12031.     static const mask alnum = _ISalpha | _ISdigit;
  12032.   };
  12033.  
  12034.  
  12035. }
  12036. # 44 "/usr/include/c++/4.7/bits/locale_facets.h" 2 3
  12037.  
  12038.  
  12039.  
  12040.  
  12041.  
  12042.  
  12043. # 1 "/usr/include/c++/4.7/bits/streambuf_iterator.h" 1 3
  12044. # 35 "/usr/include/c++/4.7/bits/streambuf_iterator.h" 3
  12045.        
  12046. # 36 "/usr/include/c++/4.7/bits/streambuf_iterator.h" 3
  12047.  
  12048.  
  12049.  
  12050.  
  12051. namespace std __attribute__ ((__visibility__ ("default")))
  12052. {
  12053.  
  12054. # 51 "/usr/include/c++/4.7/bits/streambuf_iterator.h" 3
  12055.   template<typename _CharT, typename _Traits>
  12056.     class istreambuf_iterator
  12057.     : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
  12058.                       _CharT*,
  12059.  
  12060.  
  12061.  
  12062.  
  12063.         _CharT&>
  12064.  
  12065.     {
  12066.     public:
  12067.  
  12068.  
  12069.  
  12070.       typedef _CharT char_type;
  12071.       typedef _Traits traits_type;
  12072.       typedef typename _Traits::int_type int_type;
  12073.       typedef basic_streambuf<_CharT, _Traits> streambuf_type;
  12074.       typedef basic_istream<_CharT, _Traits> istream_type;
  12075.  
  12076.  
  12077.       template<typename _CharT2>
  12078.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12079.                       ostreambuf_iterator<_CharT2> >::__type
  12080.  copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  12081.       ostreambuf_iterator<_CharT2>);
  12082.  
  12083.       template<bool _IsMove, typename _CharT2>
  12084.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12085.             _CharT2*>::__type
  12086.  __copy_move_a2(istreambuf_iterator<_CharT2>,
  12087.          istreambuf_iterator<_CharT2>, _CharT2*);
  12088.  
  12089.       template<typename _CharT2>
  12090.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12091.                istreambuf_iterator<_CharT2> >::__type
  12092.  find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  12093.       const _CharT2&);
  12094.  
  12095.     private:
  12096.  
  12097.  
  12098.  
  12099.  
  12100.  
  12101.  
  12102.  
  12103.       mutable streambuf_type* _M_sbuf;
  12104.       mutable int_type _M_c;
  12105.  
  12106.     public:
  12107.  
  12108.       istreambuf_iterator() throw()
  12109.       : _M_sbuf(0), _M_c(traits_type::eof()) { }
  12110. # 114 "/usr/include/c++/4.7/bits/streambuf_iterator.h" 3
  12111.       istreambuf_iterator(istream_type& __s) throw()
  12112.       : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
  12113.  
  12114.  
  12115.       istreambuf_iterator(streambuf_type* __s) throw()
  12116.       : _M_sbuf(__s), _M_c(traits_type::eof()) { }
  12117.  
  12118.  
  12119.  
  12120.  
  12121.       char_type
  12122.       operator*() const
  12123.       {
  12124.  
  12125.  
  12126.  
  12127.  
  12128.  
  12129.  
  12130.  
  12131.  return traits_type::to_char_type(_M_get());
  12132.       }
  12133.  
  12134.  
  12135.       istreambuf_iterator&
  12136.       operator++()
  12137.       {
  12138.  
  12139.  
  12140.                         ;
  12141.  if (_M_sbuf)
  12142.    {
  12143.      _M_sbuf->sbumpc();
  12144.      _M_c = traits_type::eof();
  12145.    }
  12146.  return *this;
  12147.       }
  12148.  
  12149.  
  12150.       istreambuf_iterator
  12151.       operator++(int)
  12152.       {
  12153.  
  12154.  
  12155.                         ;
  12156.  
  12157.  istreambuf_iterator __old = *this;
  12158.  if (_M_sbuf)
  12159.    {
  12160.      __old._M_c = _M_sbuf->sbumpc();
  12161.      _M_c = traits_type::eof();
  12162.    }
  12163.  return __old;
  12164.       }
  12165.  
  12166.  
  12167.  
  12168.  
  12169.  
  12170.       bool
  12171.       equal(const istreambuf_iterator& __b) const
  12172.       { return _M_at_eof() == __b._M_at_eof(); }
  12173.  
  12174.     private:
  12175.       int_type
  12176.       _M_get() const
  12177.       {
  12178.  const int_type __eof = traits_type::eof();
  12179.  int_type __ret = __eof;
  12180.  if (_M_sbuf)
  12181.    {
  12182.      if (!traits_type::eq_int_type(_M_c, __eof))
  12183.        __ret = _M_c;
  12184.      else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
  12185.             __eof))
  12186.        _M_c = __ret;
  12187.      else
  12188.        _M_sbuf = 0;
  12189.    }
  12190.  return __ret;
  12191.       }
  12192.  
  12193.       bool
  12194.       _M_at_eof() const
  12195.       {
  12196.  const int_type __eof = traits_type::eof();
  12197.  return traits_type::eq_int_type(_M_get(), __eof);
  12198.       }
  12199.     };
  12200.  
  12201.   template<typename _CharT, typename _Traits>
  12202.     inline bool
  12203.     operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
  12204.         const istreambuf_iterator<_CharT, _Traits>& __b)
  12205.     { return __a.equal(__b); }
  12206.  
  12207.   template<typename _CharT, typename _Traits>
  12208.     inline bool
  12209.     operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
  12210.         const istreambuf_iterator<_CharT, _Traits>& __b)
  12211.     { return !__a.equal(__b); }
  12212.  
  12213.  
  12214.   template<typename _CharT, typename _Traits>
  12215.     class ostreambuf_iterator
  12216.     : public iterator<output_iterator_tag, void, void, void, void>
  12217.     {
  12218.     public:
  12219.  
  12220.  
  12221.  
  12222.       typedef _CharT char_type;
  12223.       typedef _Traits traits_type;
  12224.       typedef basic_streambuf<_CharT, _Traits> streambuf_type;
  12225.       typedef basic_ostream<_CharT, _Traits> ostream_type;
  12226.  
  12227.  
  12228.       template<typename _CharT2>
  12229.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12230.                       ostreambuf_iterator<_CharT2> >::__type
  12231.  copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  12232.       ostreambuf_iterator<_CharT2>);
  12233.  
  12234.     private:
  12235.       streambuf_type* _M_sbuf;
  12236.       bool _M_failed;
  12237.  
  12238.     public:
  12239.  
  12240.       ostreambuf_iterator(ostream_type& __s) throw()
  12241.       : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
  12242.  
  12243.  
  12244.       ostreambuf_iterator(streambuf_type* __s) throw()
  12245.       : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
  12246.  
  12247.  
  12248.       ostreambuf_iterator&
  12249.       operator=(_CharT __c)
  12250.       {
  12251.  if (!_M_failed &&
  12252.      _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
  12253.    _M_failed = true;
  12254.  return *this;
  12255.       }
  12256.  
  12257.  
  12258.       ostreambuf_iterator&
  12259.       operator*()
  12260.       { return *this; }
  12261.  
  12262.  
  12263.       ostreambuf_iterator&
  12264.       operator++(int)
  12265.       { return *this; }
  12266.  
  12267.  
  12268.       ostreambuf_iterator&
  12269.       operator++()
  12270.       { return *this; }
  12271.  
  12272.  
  12273.       bool
  12274.       failed() const throw()
  12275.       { return _M_failed; }
  12276.  
  12277.       ostreambuf_iterator&
  12278.       _M_put(const _CharT* __ws, streamsize __len)
  12279.       {
  12280.  if (__builtin_expect(!_M_failed, true)
  12281.      && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
  12282.     false))
  12283.    _M_failed = true;
  12284.  return *this;
  12285.       }
  12286.     };
  12287.  
  12288.  
  12289.   template<typename _CharT>
  12290.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  12291.                            ostreambuf_iterator<_CharT> >::__type
  12292.     copy(istreambuf_iterator<_CharT> __first,
  12293.   istreambuf_iterator<_CharT> __last,
  12294.   ostreambuf_iterator<_CharT> __result)
  12295.     {
  12296.       if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
  12297.  {
  12298.    bool __ineof;
  12299.    __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
  12300.    if (!__ineof)
  12301.      __result._M_failed = true;
  12302.  }
  12303.       return __result;
  12304.     }
  12305.  
  12306.   template<bool _IsMove, typename _CharT>
  12307.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  12308.             ostreambuf_iterator<_CharT> >::__type
  12309.     __copy_move_a2(_CharT* __first, _CharT* __last,
  12310.      ostreambuf_iterator<_CharT> __result)
  12311.     {
  12312.       const streamsize __num = __last - __first;
  12313.       if (__num > 0)
  12314.  __result._M_put(__first, __num);
  12315.       return __result;
  12316.     }
  12317.  
  12318.   template<bool _IsMove, typename _CharT>
  12319.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  12320.         ostreambuf_iterator<_CharT> >::__type
  12321.     __copy_move_a2(const _CharT* __first, const _CharT* __last,
  12322.      ostreambuf_iterator<_CharT> __result)
  12323.     {
  12324.       const streamsize __num = __last - __first;
  12325.       if (__num > 0)
  12326.  __result._M_put(__first, __num);
  12327.       return __result;
  12328.     }
  12329.  
  12330.   template<bool _IsMove, typename _CharT>
  12331.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  12332.             _CharT*>::__type
  12333.     __copy_move_a2(istreambuf_iterator<_CharT> __first,
  12334.      istreambuf_iterator<_CharT> __last, _CharT* __result)
  12335.     {
  12336.       typedef istreambuf_iterator<_CharT> __is_iterator_type;
  12337.       typedef typename __is_iterator_type::traits_type traits_type;
  12338.       typedef typename __is_iterator_type::streambuf_type streambuf_type;
  12339.       typedef typename traits_type::int_type int_type;
  12340.  
  12341.       if (__first._M_sbuf && !__last._M_sbuf)
  12342.  {
  12343.    streambuf_type* __sb = __first._M_sbuf;
  12344.    int_type __c = __sb->sgetc();
  12345.    while (!traits_type::eq_int_type(__c, traits_type::eof()))
  12346.      {
  12347.        const streamsize __n = __sb->egptr() - __sb->gptr();
  12348.        if (__n > 1)
  12349.   {
  12350.     traits_type::copy(__result, __sb->gptr(), __n);
  12351.     __sb->__safe_gbump(__n);
  12352.     __result += __n;
  12353.     __c = __sb->underflow();
  12354.   }
  12355.        else
  12356.   {
  12357.     *__result++ = traits_type::to_char_type(__c);
  12358.     __c = __sb->snextc();
  12359.   }
  12360.      }
  12361.  }
  12362.       return __result;
  12363.     }
  12364.  
  12365.   template<typename _CharT>
  12366.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  12367.           istreambuf_iterator<_CharT> >::__type
  12368.     find(istreambuf_iterator<_CharT> __first,
  12369.   istreambuf_iterator<_CharT> __last, const _CharT& __val)
  12370.     {
  12371.       typedef istreambuf_iterator<_CharT> __is_iterator_type;
  12372.       typedef typename __is_iterator_type::traits_type traits_type;
  12373.       typedef typename __is_iterator_type::streambuf_type streambuf_type;
  12374.       typedef typename traits_type::int_type int_type;
  12375.  
  12376.       if (__first._M_sbuf && !__last._M_sbuf)
  12377.  {
  12378.    const int_type __ival = traits_type::to_int_type(__val);
  12379.    streambuf_type* __sb = __first._M_sbuf;
  12380.    int_type __c = __sb->sgetc();
  12381.    while (!traits_type::eq_int_type(__c, traits_type::eof())
  12382.    && !traits_type::eq_int_type(__c, __ival))
  12383.      {
  12384.        streamsize __n = __sb->egptr() - __sb->gptr();
  12385.        if (__n > 1)
  12386.   {
  12387.     const _CharT* __p = traits_type::find(__sb->gptr(),
  12388.        __n, __val);
  12389.     if (__p)
  12390.       __n = __p - __sb->gptr();
  12391.     __sb->__safe_gbump(__n);
  12392.     __c = __sb->sgetc();
  12393.   }
  12394.        else
  12395.   __c = __sb->snextc();
  12396.      }
  12397.  
  12398.    if (!traits_type::eq_int_type(__c, traits_type::eof()))
  12399.      __first._M_c = __c;
  12400.    else
  12401.      __first._M_sbuf = 0;
  12402.  }
  12403.       return __first;
  12404.     }
  12405.  
  12406.  
  12407.  
  12408.  
  12409. }
  12410. # 51 "/usr/include/c++/4.7/bits/locale_facets.h" 2 3
  12411.  
  12412. namespace std __attribute__ ((__visibility__ ("default")))
  12413. {
  12414.  
  12415. # 66 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12416.   template<typename _Tp>
  12417.     void
  12418.     __convert_to_v(const char*, _Tp&, ios_base::iostate&,
  12419.      const __c_locale&) throw();
  12420.  
  12421.  
  12422.   template<>
  12423.     void
  12424.     __convert_to_v(const char*, float&, ios_base::iostate&,
  12425.      const __c_locale&) throw();
  12426.  
  12427.   template<>
  12428.     void
  12429.     __convert_to_v(const char*, double&, ios_base::iostate&,
  12430.      const __c_locale&) throw();
  12431.  
  12432.   template<>
  12433.     void
  12434.     __convert_to_v(const char*, long double&, ios_base::iostate&,
  12435.      const __c_locale&) throw();
  12436.  
  12437.  
  12438.  
  12439.   template<typename _CharT, typename _Traits>
  12440.     struct __pad
  12441.     {
  12442.       static void
  12443.       _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
  12444.       const _CharT* __olds, streamsize __newlen, streamsize __oldlen);
  12445.     };
  12446.  
  12447.  
  12448.  
  12449.  
  12450.  
  12451.  
  12452.   template<typename _CharT>
  12453.     _CharT*
  12454.     __add_grouping(_CharT* __s, _CharT __sep,
  12455.      const char* __gbeg, size_t __gsize,
  12456.      const _CharT* __first, const _CharT* __last);
  12457.  
  12458.  
  12459.  
  12460.  
  12461.   template<typename _CharT>
  12462.     inline
  12463.     ostreambuf_iterator<_CharT>
  12464.     __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
  12465.     {
  12466.       __s._M_put(__ws, __len);
  12467.       return __s;
  12468.     }
  12469.  
  12470.  
  12471.   template<typename _CharT, typename _OutIter>
  12472.     inline
  12473.     _OutIter
  12474.     __write(_OutIter __s, const _CharT* __ws, int __len)
  12475.     {
  12476.       for (int __j = 0; __j < __len; __j++, ++__s)
  12477.  *__s = __ws[__j];
  12478.       return __s;
  12479.     }
  12480. # 144 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12481.   template<typename _CharT>
  12482.     class __ctype_abstract_base : public locale::facet, public ctype_base
  12483.     {
  12484.     public:
  12485.  
  12486.  
  12487.       typedef _CharT char_type;
  12488. # 163 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12489.       bool
  12490.       is(mask __m, char_type __c) const
  12491.       { return this->do_is(__m, __c); }
  12492. # 180 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12493.       const char_type*
  12494.       is(const char_type *__lo, const char_type *__hi, mask *__vec) const
  12495.       { return this->do_is(__lo, __hi, __vec); }
  12496. # 196 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12497.       const char_type*
  12498.       scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
  12499.       { return this->do_scan_is(__m, __lo, __hi); }
  12500. # 212 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12501.       const char_type*
  12502.       scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
  12503.       { return this->do_scan_not(__m, __lo, __hi); }
  12504. # 226 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12505.       char_type
  12506.       toupper(char_type __c) const
  12507.       { return this->do_toupper(__c); }
  12508. # 241 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12509.       const char_type*
  12510.       toupper(char_type *__lo, const char_type* __hi) const
  12511.       { return this->do_toupper(__lo, __hi); }
  12512. # 255 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12513.       char_type
  12514.       tolower(char_type __c) const
  12515.       { return this->do_tolower(__c); }
  12516. # 270 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12517.       const char_type*
  12518.       tolower(char_type* __lo, const char_type* __hi) const
  12519.       { return this->do_tolower(__lo, __hi); }
  12520. # 287 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12521.       char_type
  12522.       widen(char __c) const
  12523.       { return this->do_widen(__c); }
  12524. # 306 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12525.       const char*
  12526.       widen(const char* __lo, const char* __hi, char_type* __to) const
  12527.       { return this->do_widen(__lo, __hi, __to); }
  12528. # 325 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12529.       char
  12530.       narrow(char_type __c, char __dfault) const
  12531.       { return this->do_narrow(__c, __dfault); }
  12532. # 347 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12533.       const char_type*
  12534.       narrow(const char_type* __lo, const char_type* __hi,
  12535.        char __dfault, char* __to) const
  12536.       { return this->do_narrow(__lo, __hi, __dfault, __to); }
  12537.  
  12538.     protected:
  12539.       explicit
  12540.       __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
  12541.  
  12542.       virtual
  12543.       ~__ctype_abstract_base() { }
  12544. # 372 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12545.       virtual bool
  12546.       do_is(mask __m, char_type __c) const = 0;
  12547. # 391 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12548.       virtual const char_type*
  12549.       do_is(const char_type* __lo, const char_type* __hi,
  12550.      mask* __vec) const = 0;
  12551. # 410 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12552.       virtual const char_type*
  12553.       do_scan_is(mask __m, const char_type* __lo,
  12554.    const char_type* __hi) const = 0;
  12555. # 429 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12556.       virtual const char_type*
  12557.       do_scan_not(mask __m, const char_type* __lo,
  12558.     const char_type* __hi) const = 0;
  12559. # 447 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12560.       virtual char_type
  12561.       do_toupper(char_type __c) const = 0;
  12562. # 464 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12563.       virtual const char_type*
  12564.       do_toupper(char_type* __lo, const char_type* __hi) const = 0;
  12565. # 480 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12566.       virtual char_type
  12567.       do_tolower(char_type __c) const = 0;
  12568. # 497 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12569.       virtual const char_type*
  12570.       do_tolower(char_type* __lo, const char_type* __hi) const = 0;
  12571. # 516 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12572.       virtual char_type
  12573.       do_widen(char __c) const = 0;
  12574. # 537 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12575.       virtual const char*
  12576.       do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0;
  12577. # 558 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12578.       virtual char
  12579.       do_narrow(char_type __c, char __dfault) const = 0;
  12580. # 583 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12581.       virtual const char_type*
  12582.       do_narrow(const char_type* __lo, const char_type* __hi,
  12583.   char __dfault, char* __to) const = 0;
  12584.     };
  12585. # 606 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12586.   template<typename _CharT>
  12587.     class ctype : public __ctype_abstract_base<_CharT>
  12588.     {
  12589.     public:
  12590.  
  12591.       typedef _CharT char_type;
  12592.       typedef typename __ctype_abstract_base<_CharT>::mask mask;
  12593.  
  12594.  
  12595.       static locale::id id;
  12596.  
  12597.       explicit
  12598.       ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
  12599.  
  12600.    protected:
  12601.       virtual
  12602.       ~ctype();
  12603.  
  12604.       virtual bool
  12605.       do_is(mask __m, char_type __c) const;
  12606.  
  12607.       virtual const char_type*
  12608.       do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
  12609.  
  12610.       virtual const char_type*
  12611.       do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
  12612.  
  12613.       virtual const char_type*
  12614.       do_scan_not(mask __m, const char_type* __lo,
  12615.     const char_type* __hi) const;
  12616.  
  12617.       virtual char_type
  12618.       do_toupper(char_type __c) const;
  12619.  
  12620.       virtual const char_type*
  12621.       do_toupper(char_type* __lo, const char_type* __hi) const;
  12622.  
  12623.       virtual char_type
  12624.       do_tolower(char_type __c) const;
  12625.  
  12626.       virtual const char_type*
  12627.       do_tolower(char_type* __lo, const char_type* __hi) const;
  12628.  
  12629.       virtual char_type
  12630.       do_widen(char __c) const;
  12631.  
  12632.       virtual const char*
  12633.       do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
  12634.  
  12635.       virtual char
  12636.       do_narrow(char_type, char __dfault) const;
  12637.  
  12638.       virtual const char_type*
  12639.       do_narrow(const char_type* __lo, const char_type* __hi,
  12640.   char __dfault, char* __to) const;
  12641.     };
  12642.  
  12643.   template<typename _CharT>
  12644.     locale::id ctype<_CharT>::id;
  12645. # 675 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12646.   template<>
  12647.     class ctype<char> : public locale::facet, public ctype_base
  12648.     {
  12649.     public:
  12650.  
  12651.  
  12652.       typedef char char_type;
  12653.  
  12654.     protected:
  12655.  
  12656.       __c_locale _M_c_locale_ctype;
  12657.       bool _M_del;
  12658.       __to_type _M_toupper;
  12659.       __to_type _M_tolower;
  12660.       const mask* _M_table;
  12661.       mutable char _M_widen_ok;
  12662.       mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
  12663.       mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
  12664.       mutable char _M_narrow_ok;
  12665.  
  12666.  
  12667.     public:
  12668.  
  12669.       static locale::id id;
  12670.  
  12671.       static const size_t table_size = 1 + static_cast<unsigned char>(-1);
  12672. # 712 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12673.       explicit
  12674.       ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
  12675. # 725 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12676.       explicit
  12677.       ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
  12678.      size_t __refs = 0);
  12679. # 738 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12680.       inline bool
  12681.       is(mask __m, char __c) const;
  12682. # 753 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12683.       inline const char*
  12684.       is(const char* __lo, const char* __hi, mask* __vec) const;
  12685. # 767 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12686.       inline const char*
  12687.       scan_is(mask __m, const char* __lo, const char* __hi) const;
  12688. # 781 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12689.       inline const char*
  12690.       scan_not(mask __m, const char* __lo, const char* __hi) const;
  12691. # 796 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12692.       char_type
  12693.       toupper(char_type __c) const
  12694.       { return this->do_toupper(__c); }
  12695. # 813 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12696.       const char_type*
  12697.       toupper(char_type *__lo, const char_type* __hi) const
  12698.       { return this->do_toupper(__lo, __hi); }
  12699. # 829 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12700.       char_type
  12701.       tolower(char_type __c) const
  12702.       { return this->do_tolower(__c); }
  12703. # 846 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12704.       const char_type*
  12705.       tolower(char_type* __lo, const char_type* __hi) const
  12706.       { return this->do_tolower(__lo, __hi); }
  12707. # 866 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12708.       char_type
  12709.       widen(char __c) const
  12710.       {
  12711.  if (_M_widen_ok)
  12712.    return _M_widen[static_cast<unsigned char>(__c)];
  12713.  this->_M_widen_init();
  12714.  return this->do_widen(__c);
  12715.       }
  12716. # 893 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12717.       const char*
  12718.       widen(const char* __lo, const char* __hi, char_type* __to) const
  12719.       {
  12720.  if (_M_widen_ok == 1)
  12721.    {
  12722.      __builtin_memcpy(__to, __lo, __hi - __lo);
  12723.      return __hi;
  12724.    }
  12725.  if (!_M_widen_ok)
  12726.    _M_widen_init();
  12727.  return this->do_widen(__lo, __hi, __to);
  12728.       }
  12729. # 924 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12730.       char
  12731.       narrow(char_type __c, char __dfault) const
  12732.       {
  12733.  if (_M_narrow[static_cast<unsigned char>(__c)])
  12734.    return _M_narrow[static_cast<unsigned char>(__c)];
  12735.  const char __t = do_narrow(__c, __dfault);
  12736.  if (__t != __dfault)
  12737.    _M_narrow[static_cast<unsigned char>(__c)] = __t;
  12738.  return __t;
  12739.       }
  12740. # 957 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12741.       const char_type*
  12742.       narrow(const char_type* __lo, const char_type* __hi,
  12743.       char __dfault, char* __to) const
  12744.       {
  12745.  if (__builtin_expect(_M_narrow_ok == 1, true))
  12746.    {
  12747.      __builtin_memcpy(__to, __lo, __hi - __lo);
  12748.      return __hi;
  12749.    }
  12750.  if (!_M_narrow_ok)
  12751.    _M_narrow_init();
  12752.  return this->do_narrow(__lo, __hi, __dfault, __to);
  12753.       }
  12754.  
  12755.  
  12756.  
  12757.  
  12758.  
  12759.       const mask*
  12760.       table() const throw()
  12761.       { return _M_table; }
  12762.  
  12763.  
  12764.       static const mask*
  12765.       classic_table() throw();
  12766.     protected:
  12767.  
  12768.  
  12769.  
  12770.  
  12771.  
  12772.  
  12773.  
  12774.       virtual
  12775.       ~ctype();
  12776. # 1006 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12777.       virtual char_type
  12778.       do_toupper(char_type __c) const;
  12779. # 1023 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12780.       virtual const char_type*
  12781.       do_toupper(char_type* __lo, const char_type* __hi) const;
  12782. # 1039 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12783.       virtual char_type
  12784.       do_tolower(char_type __c) const;
  12785. # 1056 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12786.       virtual const char_type*
  12787.       do_tolower(char_type* __lo, const char_type* __hi) const;
  12788. # 1076 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12789.       virtual char_type
  12790.       do_widen(char __c) const
  12791.       { return __c; }
  12792. # 1099 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12793.       virtual const char*
  12794.       do_widen(const char* __lo, const char* __hi, char_type* __to) const
  12795.       {
  12796.  __builtin_memcpy(__to, __lo, __hi - __lo);
  12797.  return __hi;
  12798.       }
  12799. # 1125 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12800.       virtual char
  12801.       do_narrow(char_type __c, char __dfault) const
  12802.       { return __c; }
  12803. # 1151 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12804.       virtual const char_type*
  12805.       do_narrow(const char_type* __lo, const char_type* __hi,
  12806.   char __dfault, char* __to) const
  12807.       {
  12808.  __builtin_memcpy(__to, __lo, __hi - __lo);
  12809.  return __hi;
  12810.       }
  12811.  
  12812.     private:
  12813.       void _M_narrow_init() const;
  12814.       void _M_widen_init() const;
  12815.     };
  12816. # 1176 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12817.   template<>
  12818.     class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>
  12819.     {
  12820.     public:
  12821.  
  12822.  
  12823.       typedef wchar_t char_type;
  12824.       typedef wctype_t __wmask_type;
  12825.  
  12826.     protected:
  12827.       __c_locale _M_c_locale_ctype;
  12828.  
  12829.  
  12830.       bool _M_narrow_ok;
  12831.       char _M_narrow[128];
  12832.       wint_t _M_widen[1 + static_cast<unsigned char>(-1)];
  12833.  
  12834.  
  12835.       mask _M_bit[16];
  12836.       __wmask_type _M_wmask[16];
  12837.  
  12838.     public:
  12839.  
  12840.  
  12841.       static locale::id id;
  12842. # 1209 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12843.       explicit
  12844.       ctype(size_t __refs = 0);
  12845. # 1220 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12846.       explicit
  12847.       ctype(__c_locale __cloc, size_t __refs = 0);
  12848.  
  12849.     protected:
  12850.       __wmask_type
  12851.       _M_convert_to_wmask(const mask __m) const throw();
  12852.  
  12853.  
  12854.       virtual
  12855.       ~ctype();
  12856. # 1244 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12857.       virtual bool
  12858.       do_is(mask __m, char_type __c) const;
  12859. # 1263 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12860.       virtual const char_type*
  12861.       do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
  12862. # 1281 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12863.       virtual const char_type*
  12864.       do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
  12865. # 1299 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12866.       virtual const char_type*
  12867.       do_scan_not(mask __m, const char_type* __lo,
  12868.     const char_type* __hi) const;
  12869. # 1316 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12870.       virtual char_type
  12871.       do_toupper(char_type __c) const;
  12872. # 1333 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12873.       virtual const char_type*
  12874.       do_toupper(char_type* __lo, const char_type* __hi) const;
  12875. # 1349 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12876.       virtual char_type
  12877.       do_tolower(char_type __c) const;
  12878. # 1366 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12879.       virtual const char_type*
  12880.       do_tolower(char_type* __lo, const char_type* __hi) const;
  12881. # 1386 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12882.       virtual char_type
  12883.       do_widen(char __c) const;
  12884. # 1408 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12885.       virtual const char*
  12886.       do_widen(const char* __lo, const char* __hi, char_type* __to) const;
  12887. # 1431 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12888.       virtual char
  12889.       do_narrow(char_type __c, char __dfault) const;
  12890. # 1457 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  12891.       virtual const char_type*
  12892.       do_narrow(const char_type* __lo, const char_type* __hi,
  12893.   char __dfault, char* __to) const;
  12894.  
  12895.  
  12896.       void
  12897.       _M_initialize_ctype() throw();
  12898.     };
  12899.  
  12900.  
  12901.  
  12902.   template<typename _CharT>
  12903.     class ctype_byname : public ctype<_CharT>
  12904.     {
  12905.     public:
  12906.       typedef typename ctype<_CharT>::mask mask;
  12907.  
  12908.       explicit
  12909.       ctype_byname(const char* __s, size_t __refs = 0);
  12910.  
  12911.     protected:
  12912.       virtual
  12913.       ~ctype_byname() { };
  12914.     };
  12915.  
  12916.  
  12917.   template<>
  12918.     class ctype_byname<char> : public ctype<char>
  12919.     {
  12920.     public:
  12921.       explicit
  12922.       ctype_byname(const char* __s, size_t __refs = 0);
  12923.  
  12924.     protected:
  12925.       virtual
  12926.       ~ctype_byname();
  12927.     };
  12928.  
  12929.  
  12930.   template<>
  12931.     class ctype_byname<wchar_t> : public ctype<wchar_t>
  12932.     {
  12933.     public:
  12934.       explicit
  12935.       ctype_byname(const char* __s, size_t __refs = 0);
  12936.  
  12937.     protected:
  12938.       virtual
  12939.       ~ctype_byname();
  12940.     };
  12941.  
  12942.  
  12943.  
  12944. }
  12945.  
  12946.  
  12947. # 1 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/ctype_inline.h" 1 3
  12948. # 37 "/usr/include/c++/4.7/x86_64-linux-gnu/bits/ctype_inline.h" 3
  12949. namespace std __attribute__ ((__visibility__ ("default")))
  12950. {
  12951.  
  12952.  
  12953.   bool
  12954.   ctype<char>::
  12955.   is(mask __m, char __c) const
  12956.   { return _M_table[static_cast<unsigned char>(__c)] & __m; }
  12957.  
  12958.   const char*
  12959.   ctype<char>::
  12960.   is(const char* __low, const char* __high, mask* __vec) const
  12961.   {
  12962.     while (__low < __high)
  12963.       *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
  12964.     return __high;
  12965.   }
  12966.  
  12967.   const char*
  12968.   ctype<char>::
  12969.   scan_is(mask __m, const char* __low, const char* __high) const
  12970.   {
  12971.     while (__low < __high
  12972.     && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
  12973.       ++__low;
  12974.     return __low;
  12975.   }
  12976.  
  12977.   const char*
  12978.   ctype<char>::
  12979.   scan_not(mask __m, const char* __low, const char* __high) const
  12980.   {
  12981.     while (__low < __high
  12982.     && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
  12983.       ++__low;
  12984.     return __low;
  12985.   }
  12986.  
  12987.  
  12988. }
  12989. # 1514 "/usr/include/c++/4.7/bits/locale_facets.h" 2 3
  12990.  
  12991. namespace std __attribute__ ((__visibility__ ("default")))
  12992. {
  12993.  
  12994.  
  12995.  
  12996.   class __num_base
  12997.   {
  12998.   public:
  12999.  
  13000.  
  13001.     enum
  13002.       {
  13003.         _S_ominus,
  13004.         _S_oplus,
  13005.         _S_ox,
  13006.         _S_oX,
  13007.         _S_odigits,
  13008.         _S_odigits_end = _S_odigits + 16,
  13009.         _S_oudigits = _S_odigits_end,
  13010.         _S_oudigits_end = _S_oudigits + 16,
  13011.         _S_oe = _S_odigits + 14,
  13012.         _S_oE = _S_oudigits + 14,
  13013.  _S_oend = _S_oudigits_end
  13014.       };
  13015.  
  13016.  
  13017.  
  13018.  
  13019.  
  13020.  
  13021.     static const char* _S_atoms_out;
  13022.  
  13023.  
  13024.  
  13025.     static const char* _S_atoms_in;
  13026.  
  13027.     enum
  13028.     {
  13029.       _S_iminus,
  13030.       _S_iplus,
  13031.       _S_ix,
  13032.       _S_iX,
  13033.       _S_izero,
  13034.       _S_ie = _S_izero + 14,
  13035.       _S_iE = _S_izero + 20,
  13036.       _S_iend = 26
  13037.     };
  13038.  
  13039.  
  13040.  
  13041.     static void
  13042.     _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();
  13043.   };
  13044.  
  13045.   template<typename _CharT>
  13046.     struct __numpunct_cache : public locale::facet
  13047.     {
  13048.       const char* _M_grouping;
  13049.       size_t _M_grouping_size;
  13050.       bool _M_use_grouping;
  13051.       const _CharT* _M_truename;
  13052.       size_t _M_truename_size;
  13053.       const _CharT* _M_falsename;
  13054.       size_t _M_falsename_size;
  13055.       _CharT _M_decimal_point;
  13056.       _CharT _M_thousands_sep;
  13057.  
  13058.  
  13059.  
  13060.  
  13061.  
  13062.       _CharT _M_atoms_out[__num_base::_S_oend];
  13063.  
  13064.  
  13065.  
  13066.  
  13067.  
  13068.       _CharT _M_atoms_in[__num_base::_S_iend];
  13069.  
  13070.       bool _M_allocated;
  13071.  
  13072.       __numpunct_cache(size_t __refs = 0)
  13073.       : facet(__refs), _M_grouping(0), _M_grouping_size(0),
  13074.  _M_use_grouping(false),
  13075.  _M_truename(0), _M_truename_size(0), _M_falsename(0),
  13076.  _M_falsename_size(0), _M_decimal_point(_CharT()),
  13077.  _M_thousands_sep(_CharT()), _M_allocated(false)
  13078.         { }
  13079.  
  13080.       ~__numpunct_cache();
  13081.  
  13082.       void
  13083.       _M_cache(const locale& __loc);
  13084.  
  13085.     private:
  13086.       __numpunct_cache&
  13087.       operator=(const __numpunct_cache&);
  13088.  
  13089.       explicit
  13090.       __numpunct_cache(const __numpunct_cache&);
  13091.     };
  13092.  
  13093.   template<typename _CharT>
  13094.     __numpunct_cache<_CharT>::~__numpunct_cache()
  13095.     {
  13096.       if (_M_allocated)
  13097.  {
  13098.    delete [] _M_grouping;
  13099.    delete [] _M_truename;
  13100.    delete [] _M_falsename;
  13101.  }
  13102.     }
  13103. # 1642 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13104.   template<typename _CharT>
  13105.     class numpunct : public locale::facet
  13106.     {
  13107.     public:
  13108.  
  13109.  
  13110.  
  13111.       typedef _CharT char_type;
  13112.       typedef basic_string<_CharT> string_type;
  13113.  
  13114.       typedef __numpunct_cache<_CharT> __cache_type;
  13115.  
  13116.     protected:
  13117.       __cache_type* _M_data;
  13118.  
  13119.     public:
  13120.  
  13121.       static locale::id id;
  13122.  
  13123.  
  13124.  
  13125.  
  13126.  
  13127.  
  13128.       explicit
  13129.       numpunct(size_t __refs = 0)
  13130.       : facet(__refs), _M_data(0)
  13131.       { _M_initialize_numpunct(); }
  13132. # 1680 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13133.       explicit
  13134.       numpunct(__cache_type* __cache, size_t __refs = 0)
  13135.       : facet(__refs), _M_data(__cache)
  13136.       { _M_initialize_numpunct(); }
  13137. # 1694 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13138.       explicit
  13139.       numpunct(__c_locale __cloc, size_t __refs = 0)
  13140.       : facet(__refs), _M_data(0)
  13141.       { _M_initialize_numpunct(__cloc); }
  13142. # 1708 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13143.       char_type
  13144.       decimal_point() const
  13145.       { return this->do_decimal_point(); }
  13146. # 1721 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13147.       char_type
  13148.       thousands_sep() const
  13149.       { return this->do_thousands_sep(); }
  13150. # 1752 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13151.       string
  13152.       grouping() const
  13153.       { return this->do_grouping(); }
  13154. # 1765 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13155.       string_type
  13156.       truename() const
  13157.       { return this->do_truename(); }
  13158. # 1778 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13159.       string_type
  13160.       falsename() const
  13161.       { return this->do_falsename(); }
  13162.  
  13163.     protected:
  13164.  
  13165.       virtual
  13166.       ~numpunct();
  13167. # 1795 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13168.       virtual char_type
  13169.       do_decimal_point() const
  13170.       { return _M_data->_M_decimal_point; }
  13171. # 1807 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13172.       virtual char_type
  13173.       do_thousands_sep() const
  13174.       { return _M_data->_M_thousands_sep; }
  13175. # 1820 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13176.       virtual string
  13177.       do_grouping() const
  13178.       { return _M_data->_M_grouping; }
  13179. # 1833 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13180.       virtual string_type
  13181.       do_truename() const
  13182.       { return _M_data->_M_truename; }
  13183. # 1846 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13184.       virtual string_type
  13185.       do_falsename() const
  13186.       { return _M_data->_M_falsename; }
  13187.  
  13188.  
  13189.       void
  13190.       _M_initialize_numpunct(__c_locale __cloc = 0);
  13191.     };
  13192.  
  13193.   template<typename _CharT>
  13194.     locale::id numpunct<_CharT>::id;
  13195.  
  13196.   template<>
  13197.     numpunct<char>::~numpunct();
  13198.  
  13199.   template<>
  13200.     void
  13201.     numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
  13202.  
  13203.  
  13204.   template<>
  13205.     numpunct<wchar_t>::~numpunct();
  13206.  
  13207.   template<>
  13208.     void
  13209.     numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);
  13210.  
  13211.  
  13212.  
  13213.   template<typename _CharT>
  13214.     class numpunct_byname : public numpunct<_CharT>
  13215.     {
  13216.     public:
  13217.       typedef _CharT char_type;
  13218.       typedef basic_string<_CharT> string_type;
  13219.  
  13220.       explicit
  13221.       numpunct_byname(const char* __s, size_t __refs = 0)
  13222.       : numpunct<_CharT>(__refs)
  13223.       {
  13224.  if (__builtin_strcmp(__s, "C") != 0
  13225.      && __builtin_strcmp(__s, "POSIX") != 0)
  13226.    {
  13227.      __c_locale __tmp;
  13228.      this->_S_create_c_locale(__tmp, __s);
  13229.      this->_M_initialize_numpunct(__tmp);
  13230.      this->_S_destroy_c_locale(__tmp);
  13231.    }
  13232.       }
  13233.  
  13234.     protected:
  13235.       virtual
  13236.       ~numpunct_byname() { }
  13237.     };
  13238.  
  13239.  
  13240. # 1916 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13241.   template<typename _CharT, typename _InIter>
  13242.     class num_get : public locale::facet
  13243.     {
  13244.     public:
  13245.  
  13246.  
  13247.  
  13248.       typedef _CharT char_type;
  13249.       typedef _InIter iter_type;
  13250.  
  13251.  
  13252.  
  13253.       static locale::id id;
  13254. # 1937 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13255.       explicit
  13256.       num_get(size_t __refs = 0) : facet(__refs) { }
  13257. # 1963 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13258.       iter_type
  13259.       get(iter_type __in, iter_type __end, ios_base& __io,
  13260.    ios_base::iostate& __err, bool& __v) const
  13261.       { return this->do_get(__in, __end, __io, __err, __v); }
  13262. # 1999 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13263.       iter_type
  13264.       get(iter_type __in, iter_type __end, ios_base& __io,
  13265.    ios_base::iostate& __err, long& __v) const
  13266.       { return this->do_get(__in, __end, __io, __err, __v); }
  13267.  
  13268.       iter_type
  13269.       get(iter_type __in, iter_type __end, ios_base& __io,
  13270.    ios_base::iostate& __err, unsigned short& __v) const
  13271.       { return this->do_get(__in, __end, __io, __err, __v); }
  13272.  
  13273.       iter_type
  13274.       get(iter_type __in, iter_type __end, ios_base& __io,
  13275.    ios_base::iostate& __err, unsigned int& __v) const
  13276.       { return this->do_get(__in, __end, __io, __err, __v); }
  13277.  
  13278.       iter_type
  13279.       get(iter_type __in, iter_type __end, ios_base& __io,
  13280.    ios_base::iostate& __err, unsigned long& __v) const
  13281.       { return this->do_get(__in, __end, __io, __err, __v); }
  13282.  
  13283.  
  13284.       iter_type
  13285.       get(iter_type __in, iter_type __end, ios_base& __io,
  13286.    ios_base::iostate& __err, long long& __v) const
  13287.       { return this->do_get(__in, __end, __io, __err, __v); }
  13288.  
  13289.       iter_type
  13290.       get(iter_type __in, iter_type __end, ios_base& __io,
  13291.    ios_base::iostate& __err, unsigned long long& __v) const
  13292.       { return this->do_get(__in, __end, __io, __err, __v); }
  13293. # 2058 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13294.       iter_type
  13295.       get(iter_type __in, iter_type __end, ios_base& __io,
  13296.    ios_base::iostate& __err, float& __v) const
  13297.       { return this->do_get(__in, __end, __io, __err, __v); }
  13298.  
  13299.       iter_type
  13300.       get(iter_type __in, iter_type __end, ios_base& __io,
  13301.    ios_base::iostate& __err, double& __v) const
  13302.       { return this->do_get(__in, __end, __io, __err, __v); }
  13303.  
  13304.       iter_type
  13305.       get(iter_type __in, iter_type __end, ios_base& __io,
  13306.    ios_base::iostate& __err, long double& __v) const
  13307.       { return this->do_get(__in, __end, __io, __err, __v); }
  13308. # 2100 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13309.       iter_type
  13310.       get(iter_type __in, iter_type __end, ios_base& __io,
  13311.    ios_base::iostate& __err, void*& __v) const
  13312.       { return this->do_get(__in, __end, __io, __err, __v); }
  13313.  
  13314.     protected:
  13315.  
  13316.       virtual ~num_get() { }
  13317.  
  13318.       iter_type
  13319.       _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
  13320.          string&) const;
  13321.  
  13322.       template<typename _ValueT>
  13323.         iter_type
  13324.         _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
  13325.          _ValueT&) const;
  13326.  
  13327.       template<typename _CharT2>
  13328.       typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
  13329.         _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
  13330.         {
  13331.    int __ret = -1;
  13332.    if (__len <= 10)
  13333.      {
  13334.        if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
  13335.   __ret = __c - _CharT2('0');
  13336.      }
  13337.    else
  13338.      {
  13339.        if (__c >= _CharT2('0') && __c <= _CharT2('9'))
  13340.   __ret = __c - _CharT2('0');
  13341.        else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
  13342.   __ret = 10 + (__c - _CharT2('a'));
  13343.        else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
  13344.   __ret = 10 + (__c - _CharT2('A'));
  13345.      }
  13346.    return __ret;
  13347.  }
  13348.  
  13349.       template<typename _CharT2>
  13350.       typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
  13351.           int>::__type
  13352.         _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
  13353.         {
  13354.    int __ret = -1;
  13355.    const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
  13356.    if (__q)
  13357.      {
  13358.        __ret = __q - __zero;
  13359.        if (__ret > 15)
  13360.   __ret -= 6;
  13361.      }
  13362.    return __ret;
  13363.  }
  13364. # 2171 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13365.       virtual iter_type
  13366.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
  13367.  
  13368.       virtual iter_type
  13369.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  13370.       ios_base::iostate& __err, long& __v) const
  13371.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  13372.  
  13373.       virtual iter_type
  13374.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  13375.       ios_base::iostate& __err, unsigned short& __v) const
  13376.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  13377.  
  13378.       virtual iter_type
  13379.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  13380.       ios_base::iostate& __err, unsigned int& __v) const
  13381.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  13382.  
  13383.       virtual iter_type
  13384.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  13385.       ios_base::iostate& __err, unsigned long& __v) const
  13386.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  13387.  
  13388.  
  13389.       virtual iter_type
  13390.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  13391.       ios_base::iostate& __err, long long& __v) const
  13392.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  13393.  
  13394.       virtual iter_type
  13395.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  13396.       ios_base::iostate& __err, unsigned long long& __v) const
  13397.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  13398.  
  13399.  
  13400.       virtual iter_type
  13401.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const;
  13402.  
  13403.       virtual iter_type
  13404.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
  13405.       double&) const;
  13406.  
  13407.  
  13408.  
  13409.  
  13410.  
  13411.  
  13412.  
  13413.       virtual iter_type
  13414.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
  13415.       long double&) const;
  13416.  
  13417.  
  13418.       virtual iter_type
  13419.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const;
  13420. # 2234 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13421.     };
  13422.  
  13423.   template<typename _CharT, typename _InIter>
  13424.     locale::id num_get<_CharT, _InIter>::id;
  13425. # 2252 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13426.   template<typename _CharT, typename _OutIter>
  13427.     class num_put : public locale::facet
  13428.     {
  13429.     public:
  13430.  
  13431.  
  13432.  
  13433.       typedef _CharT char_type;
  13434.       typedef _OutIter iter_type;
  13435.  
  13436.  
  13437.  
  13438.       static locale::id id;
  13439. # 2273 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13440.       explicit
  13441.       num_put(size_t __refs = 0) : facet(__refs) { }
  13442. # 2291 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13443.       iter_type
  13444.       put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
  13445.       { return this->do_put(__s, __io, __fill, __v); }
  13446. # 2333 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13447.       iter_type
  13448.       put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
  13449.       { return this->do_put(__s, __io, __fill, __v); }
  13450.  
  13451.       iter_type
  13452.       put(iter_type __s, ios_base& __io, char_type __fill,
  13453.    unsigned long __v) const
  13454.       { return this->do_put(__s, __io, __fill, __v); }
  13455.  
  13456.  
  13457.       iter_type
  13458.       put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const
  13459.       { return this->do_put(__s, __io, __fill, __v); }
  13460.  
  13461.       iter_type
  13462.       put(iter_type __s, ios_base& __io, char_type __fill,
  13463.    unsigned long long __v) const
  13464.       { return this->do_put(__s, __io, __fill, __v); }
  13465. # 2396 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13466.       iter_type
  13467.       put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
  13468.       { return this->do_put(__s, __io, __fill, __v); }
  13469.  
  13470.       iter_type
  13471.       put(iter_type __s, ios_base& __io, char_type __fill,
  13472.    long double __v) const
  13473.       { return this->do_put(__s, __io, __fill, __v); }
  13474. # 2421 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13475.       iter_type
  13476.       put(iter_type __s, ios_base& __io, char_type __fill,
  13477.    const void* __v) const
  13478.       { return this->do_put(__s, __io, __fill, __v); }
  13479.  
  13480.     protected:
  13481.       template<typename _ValueT>
  13482.         iter_type
  13483.         _M_insert_float(iter_type, ios_base& __io, char_type __fill,
  13484.    char __mod, _ValueT __v) const;
  13485.  
  13486.       void
  13487.       _M_group_float(const char* __grouping, size_t __grouping_size,
  13488.        char_type __sep, const char_type* __p, char_type* __new,
  13489.        char_type* __cs, int& __len) const;
  13490.  
  13491.       template<typename _ValueT>
  13492.         iter_type
  13493.         _M_insert_int(iter_type, ios_base& __io, char_type __fill,
  13494.         _ValueT __v) const;
  13495.  
  13496.       void
  13497.       _M_group_int(const char* __grouping, size_t __grouping_size,
  13498.      char_type __sep, ios_base& __io, char_type* __new,
  13499.      char_type* __cs, int& __len) const;
  13500.  
  13501.       void
  13502.       _M_pad(char_type __fill, streamsize __w, ios_base& __io,
  13503.       char_type* __new, const char_type* __cs, int& __len) const;
  13504.  
  13505.  
  13506.       virtual
  13507.       ~num_put() { };
  13508. # 2469 "/usr/include/c++/4.7/bits/locale_facets.h" 3
  13509.       virtual iter_type
  13510.       do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const;
  13511.  
  13512.       virtual iter_type
  13513.       do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
  13514.       { return _M_insert_int(__s, __io, __fill, __v); }
  13515.  
  13516.       virtual iter_type
  13517.       do_put(iter_type __s, ios_base& __io, char_type __fill,
  13518.       unsigned long __v) const
  13519.       { return _M_insert_int(__s, __io, __fill, __v); }
  13520.  
  13521.  
  13522.       virtual iter_type
  13523.       do_put(iter_type __s, ios_base& __io, char_type __fill,
  13524.       long long __v) const
  13525.       { return _M_insert_int(__s, __io, __fill, __v); }
  13526.  
  13527.       virtual iter_type
  13528.       do_put(iter_type __s, ios_base& __io, char_type __fill,
  13529.       unsigned long long __v) const
  13530.       { return _M_insert_int(__s, __io, __fill, __v); }
  13531.  
  13532.  
  13533.       virtual iter_type
  13534.       do_put(iter_type, ios_base&, char_type, double) const;
  13535.  
  13536.  
  13537.  
  13538.  
  13539.  
  13540.  
  13541.       virtual iter_type
  13542.       do_put(iter_type, ios_base&, char_type, long double) const;
  13543.  
  13544.  
  13545.       virtual iter_type
  13546.       do_put(iter_type, ios_base&, char_type, const void*) const;
  13547.  
  13548.  
  13549.  
  13550.  
  13551.  
  13552.  
  13553.  
  13554.     };
  13555.  
  13556.   template <typename _CharT, typename _OutIter>
  13557.     locale::id num_put<_CharT, _OutIter>::id;
  13558.  
  13559.  
  13560.  
  13561.  
  13562.  
  13563.  
  13564.  
  13565.  
  13566.  
  13567.   template<typename _CharT>
  13568.     inline bool
  13569.     isspace(_CharT __c, const locale& __loc)
  13570.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
  13571.  
  13572.  
  13573.   template<typename _CharT>
  13574.     inline bool
  13575.     isprint(_CharT __c, const locale& __loc)
  13576.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
  13577.  
  13578.  
  13579.   template<typename _CharT>
  13580.     inline bool
  13581.     iscntrl(_CharT __c, const locale& __loc)
  13582.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
  13583.  
  13584.  
  13585.   template<typename _CharT>
  13586.     inline bool
  13587.     isupper(_CharT __c, const locale& __loc)
  13588.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
  13589.  
  13590.  
  13591.   template<typename _CharT>
  13592.     inline bool
  13593.     islower(_CharT __c, const locale& __loc)
  13594.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
  13595.  
  13596.  
  13597.   template<typename _CharT>
  13598.     inline bool
  13599.     isalpha(_CharT __c, const locale& __loc)
  13600.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
  13601.  
  13602.  
  13603.   template<typename _CharT>
  13604.     inline bool
  13605.     isdigit(_CharT __c, const locale& __loc)
  13606.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
  13607.  
  13608.  
  13609.   template<typename _CharT>
  13610.     inline bool
  13611.     ispunct(_CharT __c, const locale& __loc)
  13612.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
  13613.  
  13614.  
  13615.   template<typename _CharT>
  13616.     inline bool
  13617.     isxdigit(_CharT __c, const locale& __loc)
  13618.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
  13619.  
  13620.  
  13621.   template<typename _CharT>
  13622.     inline bool
  13623.     isalnum(_CharT __c, const locale& __loc)
  13624.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
  13625.  
  13626.  
  13627.   template<typename _CharT>
  13628.     inline bool
  13629.     isgraph(_CharT __c, const locale& __loc)
  13630.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
  13631.  
  13632.  
  13633.   template<typename _CharT>
  13634.     inline _CharT
  13635.     toupper(_CharT __c, const locale& __loc)
  13636.     { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
  13637.  
  13638.  
  13639.   template<typename _CharT>
  13640.     inline _CharT
  13641.     tolower(_CharT __c, const locale& __loc)
  13642.     { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
  13643.  
  13644.  
  13645. }
  13646.  
  13647. # 1 "/usr/include/c++/4.7/bits/locale_facets.tcc" 1 3
  13648. # 35 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  13649.        
  13650. # 36 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  13651.  
  13652. namespace std __attribute__ ((__visibility__ ("default")))
  13653. {
  13654.  
  13655.  
  13656.  
  13657.  
  13658.   template<typename _Facet>
  13659.     struct __use_cache
  13660.     {
  13661.       const _Facet*
  13662.       operator() (const locale& __loc) const;
  13663.     };
  13664.  
  13665.  
  13666.   template<typename _CharT>
  13667.     struct __use_cache<__numpunct_cache<_CharT> >
  13668.     {
  13669.       const __numpunct_cache<_CharT>*
  13670.       operator() (const locale& __loc) const
  13671.       {
  13672.  const size_t __i = numpunct<_CharT>::id._M_id();
  13673.  const locale::facet** __caches = __loc._M_impl->_M_caches;
  13674.  if (!__caches[__i])
  13675.    {
  13676.      __numpunct_cache<_CharT>* __tmp = 0;
  13677.      try
  13678.        {
  13679.   __tmp = new __numpunct_cache<_CharT>;
  13680.   __tmp->_M_cache(__loc);
  13681.        }
  13682.      catch(...)
  13683.        {
  13684.   delete __tmp;
  13685.   throw;
  13686.        }
  13687.      __loc._M_impl->_M_install_cache(__tmp, __i);
  13688.    }
  13689.  return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
  13690.       }
  13691.     };
  13692.  
  13693.   template<typename _CharT>
  13694.     void
  13695.     __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
  13696.     {
  13697.       _M_allocated = true;
  13698.  
  13699.       const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
  13700.  
  13701.       char* __grouping = 0;
  13702.       _CharT* __truename = 0;
  13703.       _CharT* __falsename = 0;
  13704.       try
  13705.  {
  13706.    _M_grouping_size = __np.grouping().size();
  13707.    __grouping = new char[_M_grouping_size];
  13708.    __np.grouping().copy(__grouping, _M_grouping_size);
  13709.    _M_grouping = __grouping;
  13710.    _M_use_grouping = (_M_grouping_size
  13711.         && static_cast<signed char>(_M_grouping[0]) > 0
  13712.         && (_M_grouping[0]
  13713.      != __gnu_cxx::__numeric_traits<char>::__max));
  13714.  
  13715.    _M_truename_size = __np.truename().size();
  13716.    __truename = new _CharT[_M_truename_size];
  13717.    __np.truename().copy(__truename, _M_truename_size);
  13718.    _M_truename = __truename;
  13719.  
  13720.    _M_falsename_size = __np.falsename().size();
  13721.    __falsename = new _CharT[_M_falsename_size];
  13722.    __np.falsename().copy(__falsename, _M_falsename_size);
  13723.    _M_falsename = __falsename;
  13724.  
  13725.    _M_decimal_point = __np.decimal_point();
  13726.    _M_thousands_sep = __np.thousands_sep();
  13727.  
  13728.    const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
  13729.    __ct.widen(__num_base::_S_atoms_out,
  13730.        __num_base::_S_atoms_out
  13731.        + __num_base::_S_oend, _M_atoms_out);
  13732.    __ct.widen(__num_base::_S_atoms_in,
  13733.        __num_base::_S_atoms_in
  13734.        + __num_base::_S_iend, _M_atoms_in);
  13735.  }
  13736.       catch(...)
  13737.  {
  13738.    delete [] __grouping;
  13739.    delete [] __truename;
  13740.    delete [] __falsename;
  13741.    throw;
  13742.  }
  13743.     }
  13744. # 138 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  13745.   __attribute__ ((__pure__)) bool
  13746.   __verify_grouping(const char* __grouping, size_t __grouping_size,
  13747.       const string& __grouping_tmp) throw ();
  13748.  
  13749.  
  13750.  
  13751.   template<typename _CharT, typename _InIter>
  13752.     _InIter
  13753.     num_get<_CharT, _InIter>::
  13754.     _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
  13755.        ios_base::iostate& __err, string& __xtrc) const
  13756.     {
  13757.       typedef char_traits<_CharT> __traits_type;
  13758.       typedef __numpunct_cache<_CharT> __cache_type;
  13759.       __use_cache<__cache_type> __uc;
  13760.       const locale& __loc = __io._M_getloc();
  13761.       const __cache_type* __lc = __uc(__loc);
  13762.       const _CharT* __lit = __lc->_M_atoms_in;
  13763.       char_type __c = char_type();
  13764.  
  13765.  
  13766.       bool __testeof = __beg == __end;
  13767.  
  13768.  
  13769.       if (!__testeof)
  13770.  {
  13771.    __c = *__beg;
  13772.    const bool __plus = __c == __lit[__num_base::_S_iplus];
  13773.    if ((__plus || __c == __lit[__num_base::_S_iminus])
  13774.        && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  13775.        && !(__c == __lc->_M_decimal_point))
  13776.      {
  13777.        __xtrc += __plus ? '+' : '-';
  13778.        if (++__beg != __end)
  13779.   __c = *__beg;
  13780.        else
  13781.   __testeof = true;
  13782.      }
  13783.  }
  13784.  
  13785.  
  13786.       bool __found_mantissa = false;
  13787.       int __sep_pos = 0;
  13788.       while (!__testeof)
  13789.  {
  13790.    if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  13791.        || __c == __lc->_M_decimal_point)
  13792.      break;
  13793.    else if (__c == __lit[__num_base::_S_izero])
  13794.      {
  13795.        if (!__found_mantissa)
  13796.   {
  13797.     __xtrc += '0';
  13798.     __found_mantissa = true;
  13799.   }
  13800.        ++__sep_pos;
  13801.  
  13802.        if (++__beg != __end)
  13803.   __c = *__beg;
  13804.        else
  13805.   __testeof = true;
  13806.      }
  13807.    else
  13808.      break;
  13809.  }
  13810.  
  13811.  
  13812.       bool __found_dec = false;
  13813.       bool __found_sci = false;
  13814.       string __found_grouping;
  13815.       if (__lc->_M_use_grouping)
  13816.  __found_grouping.reserve(32);
  13817.       const char_type* __lit_zero = __lit + __num_base::_S_izero;
  13818.  
  13819.       if (!__lc->_M_allocated)
  13820.  
  13821.  while (!__testeof)
  13822.    {
  13823.      const int __digit = _M_find(__lit_zero, 10, __c);
  13824.      if (__digit != -1)
  13825.        {
  13826.   __xtrc += '0' + __digit;
  13827.   __found_mantissa = true;
  13828.        }
  13829.      else if (__c == __lc->_M_decimal_point
  13830.        && !__found_dec && !__found_sci)
  13831.        {
  13832.   __xtrc += '.';
  13833.   __found_dec = true;
  13834.        }
  13835.      else if ((__c == __lit[__num_base::_S_ie]
  13836.         || __c == __lit[__num_base::_S_iE])
  13837.        && !__found_sci && __found_mantissa)
  13838.        {
  13839.  
  13840.   __xtrc += 'e';
  13841.   __found_sci = true;
  13842.  
  13843.  
  13844.   if (++__beg != __end)
  13845.     {
  13846.       __c = *__beg;
  13847.       const bool __plus = __c == __lit[__num_base::_S_iplus];
  13848.       if (__plus || __c == __lit[__num_base::_S_iminus])
  13849.         __xtrc += __plus ? '+' : '-';
  13850.       else
  13851.         continue;
  13852.     }
  13853.   else
  13854.     {
  13855.       __testeof = true;
  13856.       break;
  13857.     }
  13858.        }
  13859.      else
  13860.        break;
  13861.  
  13862.      if (++__beg != __end)
  13863.        __c = *__beg;
  13864.      else
  13865.        __testeof = true;
  13866.    }
  13867.       else
  13868.  while (!__testeof)
  13869.    {
  13870.  
  13871.  
  13872.      if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  13873.        {
  13874.   if (!__found_dec && !__found_sci)
  13875.     {
  13876.  
  13877.  
  13878.       if (__sep_pos)
  13879.         {
  13880.    __found_grouping += static_cast<char>(__sep_pos);
  13881.    __sep_pos = 0;
  13882.         }
  13883.       else
  13884.         {
  13885.  
  13886.  
  13887.    __xtrc.clear();
  13888.    break;
  13889.         }
  13890.     }
  13891.   else
  13892.     break;
  13893.        }
  13894.      else if (__c == __lc->_M_decimal_point)
  13895.        {
  13896.   if (!__found_dec && !__found_sci)
  13897.     {
  13898.  
  13899.  
  13900.  
  13901.       if (__found_grouping.size())
  13902.         __found_grouping += static_cast<char>(__sep_pos);
  13903.       __xtrc += '.';
  13904.       __found_dec = true;
  13905.     }
  13906.   else
  13907.     break;
  13908.        }
  13909.      else
  13910.        {
  13911.   const char_type* __q =
  13912.     __traits_type::find(__lit_zero, 10, __c);
  13913.   if (__q)
  13914.     {
  13915.       __xtrc += '0' + (__q - __lit_zero);
  13916.       __found_mantissa = true;
  13917.       ++__sep_pos;
  13918.     }
  13919.   else if ((__c == __lit[__num_base::_S_ie]
  13920.      || __c == __lit[__num_base::_S_iE])
  13921.     && !__found_sci && __found_mantissa)
  13922.     {
  13923.  
  13924.       if (__found_grouping.size() && !__found_dec)
  13925.         __found_grouping += static_cast<char>(__sep_pos);
  13926.       __xtrc += 'e';
  13927.       __found_sci = true;
  13928.  
  13929.  
  13930.       if (++__beg != __end)
  13931.         {
  13932.    __c = *__beg;
  13933.    const bool __plus = __c == __lit[__num_base::_S_iplus];
  13934.    if ((__plus || __c == __lit[__num_base::_S_iminus])
  13935.        && !(__lc->_M_use_grouping
  13936.      && __c == __lc->_M_thousands_sep)
  13937.        && !(__c == __lc->_M_decimal_point))
  13938.         __xtrc += __plus ? '+' : '-';
  13939.    else
  13940.      continue;
  13941.         }
  13942.       else
  13943.         {
  13944.    __testeof = true;
  13945.    break;
  13946.         }
  13947.     }
  13948.   else
  13949.     break;
  13950.        }
  13951.  
  13952.      if (++__beg != __end)
  13953.        __c = *__beg;
  13954.      else
  13955.        __testeof = true;
  13956.    }
  13957.  
  13958.  
  13959.  
  13960.       if (__found_grouping.size())
  13961.         {
  13962.  
  13963.    if (!__found_dec && !__found_sci)
  13964.      __found_grouping += static_cast<char>(__sep_pos);
  13965.  
  13966.           if (!std::__verify_grouping(__lc->_M_grouping,
  13967.           __lc->_M_grouping_size,
  13968.           __found_grouping))
  13969.      __err = ios_base::failbit;
  13970.         }
  13971.  
  13972.       return __beg;
  13973.     }
  13974.  
  13975.   template<typename _CharT, typename _InIter>
  13976.     template<typename _ValueT>
  13977.       _InIter
  13978.       num_get<_CharT, _InIter>::
  13979.       _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
  13980.        ios_base::iostate& __err, _ValueT& __v) const
  13981.       {
  13982.         typedef char_traits<_CharT> __traits_type;
  13983.  using __gnu_cxx::__add_unsigned;
  13984.  typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
  13985.  typedef __numpunct_cache<_CharT> __cache_type;
  13986.  __use_cache<__cache_type> __uc;
  13987.  const locale& __loc = __io._M_getloc();
  13988.  const __cache_type* __lc = __uc(__loc);
  13989.  const _CharT* __lit = __lc->_M_atoms_in;
  13990.  char_type __c = char_type();
  13991.  
  13992.  
  13993.  const ios_base::fmtflags __basefield = __io.flags()
  13994.                                         & ios_base::basefield;
  13995.  const bool __oct = __basefield == ios_base::oct;
  13996.  int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
  13997.  
  13998.  
  13999.  bool __testeof = __beg == __end;
  14000.  
  14001.  
  14002.  bool __negative = false;
  14003.  if (!__testeof)
  14004.    {
  14005.      __c = *__beg;
  14006.      __negative = __c == __lit[__num_base::_S_iminus];
  14007.      if ((__negative || __c == __lit[__num_base::_S_iplus])
  14008.   && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14009.   && !(__c == __lc->_M_decimal_point))
  14010.        {
  14011.   if (++__beg != __end)
  14012.     __c = *__beg;
  14013.   else
  14014.     __testeof = true;
  14015.        }
  14016.    }
  14017.  
  14018.  
  14019.  
  14020.  bool __found_zero = false;
  14021.  int __sep_pos = 0;
  14022.  while (!__testeof)
  14023.    {
  14024.      if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14025.   || __c == __lc->_M_decimal_point)
  14026.        break;
  14027.      else if (__c == __lit[__num_base::_S_izero]
  14028.        && (!__found_zero || __base == 10))
  14029.        {
  14030.   __found_zero = true;
  14031.   ++__sep_pos;
  14032.   if (__basefield == 0)
  14033.     __base = 8;
  14034.   if (__base == 8)
  14035.     __sep_pos = 0;
  14036.        }
  14037.      else if (__found_zero
  14038.        && (__c == __lit[__num_base::_S_ix]
  14039.     || __c == __lit[__num_base::_S_iX]))
  14040.        {
  14041.   if (__basefield == 0)
  14042.     __base = 16;
  14043.   if (__base == 16)
  14044.     {
  14045.       __found_zero = false;
  14046.       __sep_pos = 0;
  14047.     }
  14048.   else
  14049.     break;
  14050.        }
  14051.      else
  14052.        break;
  14053.  
  14054.      if (++__beg != __end)
  14055.        {
  14056.   __c = *__beg;
  14057.   if (!__found_zero)
  14058.     break;
  14059.        }
  14060.      else
  14061.        __testeof = true;
  14062.    }
  14063.  
  14064.  
  14065.  
  14066.  const size_t __len = (__base == 16 ? __num_base::_S_iend
  14067.          - __num_base::_S_izero : __base);
  14068.  
  14069.  
  14070.  string __found_grouping;
  14071.  if (__lc->_M_use_grouping)
  14072.    __found_grouping.reserve(32);
  14073.  bool __testfail = false;
  14074.  bool __testoverflow = false;
  14075.  const __unsigned_type __max =
  14076.    (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
  14077.    ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
  14078.    : __gnu_cxx::__numeric_traits<_ValueT>::__max;
  14079.  const __unsigned_type __smax = __max / __base;
  14080.  __unsigned_type __result = 0;
  14081.  int __digit = 0;
  14082.  const char_type* __lit_zero = __lit + __num_base::_S_izero;
  14083.  
  14084.  if (!__lc->_M_allocated)
  14085.  
  14086.    while (!__testeof)
  14087.      {
  14088.        __digit = _M_find(__lit_zero, __len, __c);
  14089.        if (__digit == -1)
  14090.   break;
  14091.  
  14092.        if (__result > __smax)
  14093.   __testoverflow = true;
  14094.        else
  14095.   {
  14096.     __result *= __base;
  14097.     __testoverflow |= __result > __max - __digit;
  14098.     __result += __digit;
  14099.     ++__sep_pos;
  14100.   }
  14101.  
  14102.        if (++__beg != __end)
  14103.   __c = *__beg;
  14104.        else
  14105.   __testeof = true;
  14106.      }
  14107.  else
  14108.    while (!__testeof)
  14109.      {
  14110.  
  14111.  
  14112.        if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14113.   {
  14114.  
  14115.  
  14116.     if (__sep_pos)
  14117.       {
  14118.         __found_grouping += static_cast<char>(__sep_pos);
  14119.         __sep_pos = 0;
  14120.       }
  14121.     else
  14122.       {
  14123.         __testfail = true;
  14124.         break;
  14125.       }
  14126.   }
  14127.        else if (__c == __lc->_M_decimal_point)
  14128.   break;
  14129.        else
  14130.   {
  14131.     const char_type* __q =
  14132.       __traits_type::find(__lit_zero, __len, __c);
  14133.     if (!__q)
  14134.       break;
  14135.  
  14136.     __digit = __q - __lit_zero;
  14137.     if (__digit > 15)
  14138.       __digit -= 6;
  14139.     if (__result > __smax)
  14140.       __testoverflow = true;
  14141.     else
  14142.       {
  14143.         __result *= __base;
  14144.         __testoverflow |= __result > __max - __digit;
  14145.         __result += __digit;
  14146.         ++__sep_pos;
  14147.       }
  14148.   }
  14149.  
  14150.        if (++__beg != __end)
  14151.   __c = *__beg;
  14152.        else
  14153.   __testeof = true;
  14154.      }
  14155.  
  14156.  
  14157.  
  14158.  if (__found_grouping.size())
  14159.    {
  14160.  
  14161.      __found_grouping += static_cast<char>(__sep_pos);
  14162.  
  14163.      if (!std::__verify_grouping(__lc->_M_grouping,
  14164.      __lc->_M_grouping_size,
  14165.      __found_grouping))
  14166.        __err = ios_base::failbit;
  14167.    }
  14168.  
  14169.  
  14170.  
  14171.  if ((!__sep_pos && !__found_zero && !__found_grouping.size())
  14172.      || __testfail)
  14173.    {
  14174.      __v = 0;
  14175.      __err = ios_base::failbit;
  14176.    }
  14177.  else if (__testoverflow)
  14178.    {
  14179.      if (__negative
  14180.   && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
  14181.        __v = __gnu_cxx::__numeric_traits<_ValueT>::__min;
  14182.      else
  14183.        __v = __gnu_cxx::__numeric_traits<_ValueT>::__max;
  14184.      __err = ios_base::failbit;
  14185.    }
  14186.  else
  14187.    __v = __negative ? -__result : __result;
  14188.  
  14189.  if (__testeof)
  14190.    __err |= ios_base::eofbit;
  14191.  return __beg;
  14192.       }
  14193.  
  14194.  
  14195.  
  14196.   template<typename _CharT, typename _InIter>
  14197.     _InIter
  14198.     num_get<_CharT, _InIter>::
  14199.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14200.            ios_base::iostate& __err, bool& __v) const
  14201.     {
  14202.       if (!(__io.flags() & ios_base::boolalpha))
  14203.         {
  14204.  
  14205.  
  14206.  
  14207.    long __l = -1;
  14208.           __beg = _M_extract_int(__beg, __end, __io, __err, __l);
  14209.    if (__l == 0 || __l == 1)
  14210.      __v = bool(__l);
  14211.    else
  14212.      {
  14213.  
  14214.  
  14215.        __v = true;
  14216.        __err = ios_base::failbit;
  14217.        if (__beg == __end)
  14218.   __err |= ios_base::eofbit;
  14219.      }
  14220.         }
  14221.       else
  14222.         {
  14223.  
  14224.    typedef __numpunct_cache<_CharT> __cache_type;
  14225.    __use_cache<__cache_type> __uc;
  14226.    const locale& __loc = __io._M_getloc();
  14227.    const __cache_type* __lc = __uc(__loc);
  14228.  
  14229.    bool __testf = true;
  14230.    bool __testt = true;
  14231.    bool __donef = __lc->_M_falsename_size == 0;
  14232.    bool __donet = __lc->_M_truename_size == 0;
  14233.    bool __testeof = false;
  14234.    size_t __n = 0;
  14235.    while (!__donef || !__donet)
  14236.      {
  14237.        if (__beg == __end)
  14238.   {
  14239.     __testeof = true;
  14240.     break;
  14241.   }
  14242.  
  14243.        const char_type __c = *__beg;
  14244.  
  14245.        if (!__donef)
  14246.   __testf = __c == __lc->_M_falsename[__n];
  14247.  
  14248.        if (!__testf && __donet)
  14249.   break;
  14250.  
  14251.        if (!__donet)
  14252.   __testt = __c == __lc->_M_truename[__n];
  14253.  
  14254.        if (!__testt && __donef)
  14255.   break;
  14256.  
  14257.        if (!__testt && !__testf)
  14258.   break;
  14259.  
  14260.        ++__n;
  14261.        ++__beg;
  14262.  
  14263.        __donef = !__testf || __n >= __lc->_M_falsename_size;
  14264.        __donet = !__testt || __n >= __lc->_M_truename_size;
  14265.      }
  14266.    if (__testf && __n == __lc->_M_falsename_size && __n)
  14267.      {
  14268.        __v = false;
  14269.        if (__testt && __n == __lc->_M_truename_size)
  14270.   __err = ios_base::failbit;
  14271.        else
  14272.   __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
  14273.      }
  14274.    else if (__testt && __n == __lc->_M_truename_size && __n)
  14275.      {
  14276.        __v = true;
  14277.        __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
  14278.      }
  14279.    else
  14280.      {
  14281.  
  14282.  
  14283.        __v = false;
  14284.        __err = ios_base::failbit;
  14285.        if (__testeof)
  14286.   __err |= ios_base::eofbit;
  14287.      }
  14288.  }
  14289.       return __beg;
  14290.     }
  14291.  
  14292.   template<typename _CharT, typename _InIter>
  14293.     _InIter
  14294.     num_get<_CharT, _InIter>::
  14295.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14296.     ios_base::iostate& __err, float& __v) const
  14297.     {
  14298.       string __xtrc;
  14299.       __xtrc.reserve(32);
  14300.       __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
  14301.       std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
  14302.       if (__beg == __end)
  14303.  __err |= ios_base::eofbit;
  14304.       return __beg;
  14305.     }
  14306.  
  14307.   template<typename _CharT, typename _InIter>
  14308.     _InIter
  14309.     num_get<_CharT, _InIter>::
  14310.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14311.            ios_base::iostate& __err, double& __v) const
  14312.     {
  14313.       string __xtrc;
  14314.       __xtrc.reserve(32);
  14315.       __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
  14316.       std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
  14317.       if (__beg == __end)
  14318.  __err |= ios_base::eofbit;
  14319.       return __beg;
  14320.     }
  14321. # 732 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  14322.   template<typename _CharT, typename _InIter>
  14323.     _InIter
  14324.     num_get<_CharT, _InIter>::
  14325.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14326.            ios_base::iostate& __err, long double& __v) const
  14327.     {
  14328.       string __xtrc;
  14329.       __xtrc.reserve(32);
  14330.       __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
  14331.       std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
  14332.       if (__beg == __end)
  14333.  __err |= ios_base::eofbit;
  14334.       return __beg;
  14335.     }
  14336.  
  14337.   template<typename _CharT, typename _InIter>
  14338.     _InIter
  14339.     num_get<_CharT, _InIter>::
  14340.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14341.            ios_base::iostate& __err, void*& __v) const
  14342.     {
  14343.  
  14344.       typedef ios_base::fmtflags fmtflags;
  14345.       const fmtflags __fmt = __io.flags();
  14346.       __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
  14347.  
  14348.       typedef __gnu_cxx::__conditional_type<(sizeof(void*)
  14349.           <= sizeof(unsigned long)),
  14350.  unsigned long, unsigned long long>::__type _UIntPtrType;
  14351.  
  14352.       _UIntPtrType __ul;
  14353.       __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
  14354.  
  14355.  
  14356.       __io.flags(__fmt);
  14357.  
  14358.       __v = reinterpret_cast<void*>(__ul);
  14359.       return __beg;
  14360.     }
  14361.  
  14362.  
  14363.  
  14364.   template<typename _CharT, typename _OutIter>
  14365.     void
  14366.     num_put<_CharT, _OutIter>::
  14367.     _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
  14368.     _CharT* __new, const _CharT* __cs, int& __len) const
  14369.     {
  14370.  
  14371.  
  14372.       __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
  14373.         __cs, __w, __len);
  14374.       __len = static_cast<int>(__w);
  14375.     }
  14376.  
  14377.  
  14378.  
  14379.   template<typename _CharT, typename _ValueT>
  14380.     int
  14381.     __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
  14382.     ios_base::fmtflags __flags, bool __dec)
  14383.     {
  14384.       _CharT* __buf = __bufend;
  14385.       if (__builtin_expect(__dec, true))
  14386.  {
  14387.  
  14388.    do
  14389.      {
  14390.        *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
  14391.        __v /= 10;
  14392.      }
  14393.    while (__v != 0);
  14394.  }
  14395.       else if ((__flags & ios_base::basefield) == ios_base::oct)
  14396.  {
  14397.  
  14398.    do
  14399.      {
  14400.        *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
  14401.        __v >>= 3;
  14402.      }
  14403.    while (__v != 0);
  14404.  }
  14405.       else
  14406.  {
  14407.  
  14408.    const bool __uppercase = __flags & ios_base::uppercase;
  14409.    const int __case_offset = __uppercase ? __num_base::_S_oudigits
  14410.                                          : __num_base::_S_odigits;
  14411.    do
  14412.      {
  14413.        *--__buf = __lit[(__v & 0xf) + __case_offset];
  14414.        __v >>= 4;
  14415.      }
  14416.    while (__v != 0);
  14417.  }
  14418.       return __bufend - __buf;
  14419.     }
  14420.  
  14421.  
  14422.  
  14423.   template<typename _CharT, typename _OutIter>
  14424.     void
  14425.     num_put<_CharT, _OutIter>::
  14426.     _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
  14427.    ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
  14428.     {
  14429.       _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
  14430.      __grouping_size, __cs, __cs + __len);
  14431.       __len = __p - __new;
  14432.     }
  14433.  
  14434.   template<typename _CharT, typename _OutIter>
  14435.     template<typename _ValueT>
  14436.       _OutIter
  14437.       num_put<_CharT, _OutIter>::
  14438.       _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
  14439.       _ValueT __v) const
  14440.       {
  14441.  using __gnu_cxx::__add_unsigned;
  14442.  typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
  14443.  typedef __numpunct_cache<_CharT> __cache_type;
  14444.  __use_cache<__cache_type> __uc;
  14445.  const locale& __loc = __io._M_getloc();
  14446.  const __cache_type* __lc = __uc(__loc);
  14447.  const _CharT* __lit = __lc->_M_atoms_out;
  14448.  const ios_base::fmtflags __flags = __io.flags();
  14449.  
  14450.  
  14451.  const int __ilen = 5 * sizeof(_ValueT);
  14452.  _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14453.             * __ilen));
  14454.  
  14455.  
  14456.  
  14457.  const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
  14458.  const bool __dec = (__basefield != ios_base::oct
  14459.        && __basefield != ios_base::hex);
  14460.  const __unsigned_type __u = ((__v > 0 || !__dec)
  14461.          ? __unsigned_type(__v)
  14462.          : -__unsigned_type(__v));
  14463.   int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
  14464.  __cs += __ilen - __len;
  14465.  
  14466.  
  14467.  if (__lc->_M_use_grouping)
  14468.    {
  14469.  
  14470.  
  14471.      _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14472.           * (__len + 1)
  14473.           * 2));
  14474.      _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
  14475.     __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
  14476.      __cs = __cs2 + 2;
  14477.    }
  14478.  
  14479.  
  14480.  if (__builtin_expect(__dec, true))
  14481.    {
  14482.  
  14483.      if (__v >= 0)
  14484.        {
  14485.   if (bool(__flags & ios_base::showpos)
  14486.       && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
  14487.     *--__cs = __lit[__num_base::_S_oplus], ++__len;
  14488.        }
  14489.      else
  14490.        *--__cs = __lit[__num_base::_S_ominus], ++__len;
  14491.    }
  14492.  else if (bool(__flags & ios_base::showbase) && __v)
  14493.    {
  14494.      if (__basefield == ios_base::oct)
  14495.        *--__cs = __lit[__num_base::_S_odigits], ++__len;
  14496.      else
  14497.        {
  14498.  
  14499.   const bool __uppercase = __flags & ios_base::uppercase;
  14500.   *--__cs = __lit[__num_base::_S_ox + __uppercase];
  14501.  
  14502.   *--__cs = __lit[__num_base::_S_odigits];
  14503.   __len += 2;
  14504.        }
  14505.    }
  14506.  
  14507.  
  14508.  const streamsize __w = __io.width();
  14509.  if (__w > static_cast<streamsize>(__len))
  14510.    {
  14511.      _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14512.           * __w));
  14513.      _M_pad(__fill, __w, __io, __cs3, __cs, __len);
  14514.      __cs = __cs3;
  14515.    }
  14516.  __io.width(0);
  14517.  
  14518.  
  14519.  
  14520.  return std::__write(__s, __cs, __len);
  14521.       }
  14522.  
  14523.   template<typename _CharT, typename _OutIter>
  14524.     void
  14525.     num_put<_CharT, _OutIter>::
  14526.     _M_group_float(const char* __grouping, size_t __grouping_size,
  14527.      _CharT __sep, const _CharT* __p, _CharT* __new,
  14528.      _CharT* __cs, int& __len) const
  14529.     {
  14530.  
  14531.  
  14532.  
  14533.       const int __declen = __p ? __p - __cs : __len;
  14534.       _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
  14535.       __grouping_size,
  14536.       __cs, __cs + __declen);
  14537.  
  14538.  
  14539.       int __newlen = __p2 - __new;
  14540.       if (__p)
  14541.  {
  14542.    char_traits<_CharT>::copy(__p2, __p, __len - __declen);
  14543.    __newlen += __len - __declen;
  14544.  }
  14545.       __len = __newlen;
  14546.     }
  14547. # 968 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  14548.   template<typename _CharT, typename _OutIter>
  14549.     template<typename _ValueT>
  14550.       _OutIter
  14551.       num_put<_CharT, _OutIter>::
  14552.       _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
  14553.          _ValueT __v) const
  14554.       {
  14555.  typedef __numpunct_cache<_CharT> __cache_type;
  14556.  __use_cache<__cache_type> __uc;
  14557.  const locale& __loc = __io._M_getloc();
  14558.  const __cache_type* __lc = __uc(__loc);
  14559.  
  14560.  
  14561.  const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
  14562.  
  14563.  const int __max_digits =
  14564.    __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
  14565.  
  14566.  
  14567.  int __len;
  14568.  
  14569.  char __fbuf[16];
  14570.  __num_base::_S_format_float(__io, __fbuf, __mod);
  14571.  
  14572.  
  14573.  
  14574.  
  14575.  int __cs_size = __max_digits * 3;
  14576.  char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
  14577.  __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
  14578.           __fbuf, __prec, __v);
  14579.  
  14580.  
  14581.  if (__len >= __cs_size)
  14582.    {
  14583.      __cs_size = __len + 1;
  14584.      __cs = static_cast<char*>(__builtin_alloca(__cs_size));
  14585.      __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
  14586.        __fbuf, __prec, __v);
  14587.    }
  14588. # 1029 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  14589.  const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
  14590.  
  14591.  _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14592.             * __len));
  14593.  __ctype.widen(__cs, __cs + __len, __ws);
  14594.  
  14595.  
  14596.  _CharT* __wp = 0;
  14597.  const char* __p = char_traits<char>::find(__cs, __len, '.');
  14598.  if (__p)
  14599.    {
  14600.      __wp = __ws + (__p - __cs);
  14601.      *__wp = __lc->_M_decimal_point;
  14602.    }
  14603.  
  14604.  
  14605.  
  14606.  
  14607.  if (__lc->_M_use_grouping
  14608.      && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
  14609.           && __cs[1] >= '0' && __cs[2] >= '0')))
  14610.    {
  14611.  
  14612.  
  14613.      _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14614.           * __len * 2));
  14615.  
  14616.      streamsize __off = 0;
  14617.      if (__cs[0] == '-' || __cs[0] == '+')
  14618.        {
  14619.   __off = 1;
  14620.   __ws2[0] = __ws[0];
  14621.   __len -= 1;
  14622.        }
  14623.  
  14624.      _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
  14625.       __lc->_M_thousands_sep, __wp, __ws2 + __off,
  14626.       __ws + __off, __len);
  14627.      __len += __off;
  14628.  
  14629.      __ws = __ws2;
  14630.    }
  14631.  
  14632.  
  14633.  const streamsize __w = __io.width();
  14634.  if (__w > static_cast<streamsize>(__len))
  14635.    {
  14636.      _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14637.           * __w));
  14638.      _M_pad(__fill, __w, __io, __ws3, __ws, __len);
  14639.      __ws = __ws3;
  14640.    }
  14641.  __io.width(0);
  14642.  
  14643.  
  14644.  
  14645.  return std::__write(__s, __ws, __len);
  14646.       }
  14647.  
  14648.   template<typename _CharT, typename _OutIter>
  14649.     _OutIter
  14650.     num_put<_CharT, _OutIter>::
  14651.     do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
  14652.     {
  14653.       const ios_base::fmtflags __flags = __io.flags();
  14654.       if ((__flags & ios_base::boolalpha) == 0)
  14655.         {
  14656.           const long __l = __v;
  14657.           __s = _M_insert_int(__s, __io, __fill, __l);
  14658.         }
  14659.       else
  14660.         {
  14661.    typedef __numpunct_cache<_CharT> __cache_type;
  14662.    __use_cache<__cache_type> __uc;
  14663.    const locale& __loc = __io._M_getloc();
  14664.    const __cache_type* __lc = __uc(__loc);
  14665.  
  14666.    const _CharT* __name = __v ? __lc->_M_truename
  14667.                               : __lc->_M_falsename;
  14668.    int __len = __v ? __lc->_M_truename_size
  14669.                    : __lc->_M_falsename_size;
  14670.  
  14671.    const streamsize __w = __io.width();
  14672.    if (__w > static_cast<streamsize>(__len))
  14673.      {
  14674.        const streamsize __plen = __w - __len;
  14675.        _CharT* __ps
  14676.   = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  14677.        * __plen));
  14678.  
  14679.        char_traits<_CharT>::assign(__ps, __plen, __fill);
  14680.        __io.width(0);
  14681.  
  14682.        if ((__flags & ios_base::adjustfield) == ios_base::left)
  14683.   {
  14684.     __s = std::__write(__s, __name, __len);
  14685.     __s = std::__write(__s, __ps, __plen);
  14686.   }
  14687.        else
  14688.   {
  14689.     __s = std::__write(__s, __ps, __plen);
  14690.     __s = std::__write(__s, __name, __len);
  14691.   }
  14692.        return __s;
  14693.      }
  14694.    __io.width(0);
  14695.    __s = std::__write(__s, __name, __len);
  14696.  }
  14697.       return __s;
  14698.     }
  14699.  
  14700.   template<typename _CharT, typename _OutIter>
  14701.     _OutIter
  14702.     num_put<_CharT, _OutIter>::
  14703.     do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
  14704.     { return _M_insert_float(__s, __io, __fill, char(), __v); }
  14705. # 1154 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  14706.   template<typename _CharT, typename _OutIter>
  14707.     _OutIter
  14708.     num_put<_CharT, _OutIter>::
  14709.     do_put(iter_type __s, ios_base& __io, char_type __fill,
  14710.     long double __v) const
  14711.     { return _M_insert_float(__s, __io, __fill, 'L', __v); }
  14712.  
  14713.   template<typename _CharT, typename _OutIter>
  14714.     _OutIter
  14715.     num_put<_CharT, _OutIter>::
  14716.     do_put(iter_type __s, ios_base& __io, char_type __fill,
  14717.            const void* __v) const
  14718.     {
  14719.       const ios_base::fmtflags __flags = __io.flags();
  14720.       const ios_base::fmtflags __fmt = ~(ios_base::basefield
  14721.       | ios_base::uppercase);
  14722.       __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
  14723.  
  14724.       typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
  14725.           <= sizeof(unsigned long)),
  14726.  unsigned long, unsigned long long>::__type _UIntPtrType;
  14727.  
  14728.       __s = _M_insert_int(__s, __io, __fill,
  14729.      reinterpret_cast<_UIntPtrType>(__v));
  14730.       __io.flags(__flags);
  14731.       return __s;
  14732.     }
  14733.  
  14734.  
  14735. # 1191 "/usr/include/c++/4.7/bits/locale_facets.tcc" 3
  14736.   template<typename _CharT, typename _Traits>
  14737.     void
  14738.     __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
  14739.        _CharT* __news, const _CharT* __olds,
  14740.        streamsize __newlen, streamsize __oldlen)
  14741.     {
  14742.       const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
  14743.       const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
  14744.  
  14745.  
  14746.       if (__adjust == ios_base::left)
  14747.  {
  14748.    _Traits::copy(__news, __olds, __oldlen);
  14749.    _Traits::assign(__news + __oldlen, __plen, __fill);
  14750.    return;
  14751.  }
  14752.  
  14753.       size_t __mod = 0;
  14754.       if (__adjust == ios_base::internal)
  14755.  {
  14756.  
  14757.  
  14758.  
  14759.           const locale& __loc = __io._M_getloc();
  14760.    const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
  14761.  
  14762.    if (__ctype.widen('-') == __olds[0]
  14763.        || __ctype.widen('+') == __olds[0])
  14764.      {
  14765.        __news[0] = __olds[0];
  14766.        __mod = 1;
  14767.        ++__news;
  14768.      }
  14769.    else if (__ctype.widen('0') == __olds[0]
  14770.      && __oldlen > 1
  14771.      && (__ctype.widen('x') == __olds[1]
  14772.          || __ctype.widen('X') == __olds[1]))
  14773.      {
  14774.        __news[0] = __olds[0];
  14775.        __news[1] = __olds[1];
  14776.        __mod = 2;
  14777.        __news += 2;
  14778.      }
  14779.  
  14780.  }
  14781.       _Traits::assign(__news, __plen, __fill);
  14782.       _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
  14783.     }
  14784.  
  14785.   template<typename _CharT>
  14786.     _CharT*
  14787.     __add_grouping(_CharT* __s, _CharT __sep,
  14788.      const char* __gbeg, size_t __gsize,
  14789.      const _CharT* __first, const _CharT* __last)
  14790.     {
  14791.       size_t __idx = 0;
  14792.       size_t __ctr = 0;
  14793.  
  14794.       while (__last - __first > __gbeg[__idx]
  14795.       && static_cast<signed char>(__gbeg[__idx]) > 0
  14796.       && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max)
  14797.  {
  14798.    __last -= __gbeg[__idx];
  14799.    __idx < __gsize - 1 ? ++__idx : ++__ctr;
  14800.  }
  14801.  
  14802.       while (__first != __last)
  14803.  *__s++ = *__first++;
  14804.  
  14805.       while (__ctr--)
  14806.  {
  14807.    *__s++ = __sep;
  14808.    for (char __i = __gbeg[__idx]; __i > 0; --__i)
  14809.      *__s++ = *__first++;
  14810.  }
  14811.  
  14812.       while (__idx--)
  14813.  {
  14814.    *__s++ = __sep;
  14815.    for (char __i = __gbeg[__idx]; __i > 0; --__i)
  14816.      *__s++ = *__first++;
  14817.  }
  14818.  
  14819.       return __s;
  14820.     }
  14821.  
  14822.  
  14823.  
  14824.  
  14825.   extern template class numpunct<char>;
  14826.   extern template class numpunct_byname<char>;
  14827.   extern template class num_get<char>;
  14828.   extern template class num_put<char>;
  14829.   extern template class ctype_byname<char>;
  14830.  
  14831.   extern template
  14832.     const ctype<char>&
  14833.     use_facet<ctype<char> >(const locale&);
  14834.  
  14835.   extern template
  14836.     const numpunct<char>&
  14837.     use_facet<numpunct<char> >(const locale&);
  14838.  
  14839.   extern template
  14840.     const num_put<char>&
  14841.     use_facet<num_put<char> >(const locale&);
  14842.  
  14843.   extern template
  14844.     const num_get<char>&
  14845.     use_facet<num_get<char> >(const locale&);
  14846.  
  14847.   extern template
  14848.     bool
  14849.     has_facet<ctype<char> >(const locale&);
  14850.  
  14851.   extern template
  14852.     bool
  14853.     has_facet<numpunct<char> >(const locale&);
  14854.  
  14855.   extern template
  14856.     bool
  14857.     has_facet<num_put<char> >(const locale&);
  14858.  
  14859.   extern template
  14860.     bool
  14861.     has_facet<num_get<char> >(const locale&);
  14862.  
  14863.  
  14864.   extern template class numpunct<wchar_t>;
  14865.   extern template class numpunct_byname<wchar_t>;
  14866.   extern template class num_get<wchar_t>;
  14867.   extern template class num_put<wchar_t>;
  14868.   extern template class ctype_byname<wchar_t>;
  14869.  
  14870.   extern template
  14871.     const ctype<wchar_t>&
  14872.     use_facet<ctype<wchar_t> >(const locale&);
  14873.  
  14874.   extern template
  14875.     const numpunct<wchar_t>&
  14876.     use_facet<numpunct<wchar_t> >(const locale&);
  14877.  
  14878.   extern template
  14879.     const num_put<wchar_t>&
  14880.     use_facet<num_put<wchar_t> >(const locale&);
  14881.  
  14882.   extern template
  14883.     const num_get<wchar_t>&
  14884.     use_facet<num_get<wchar_t> >(const locale&);
  14885.  
  14886.  extern template
  14887.     bool
  14888.     has_facet<ctype<wchar_t> >(const locale&);
  14889.  
  14890.   extern template
  14891.     bool
  14892.     has_facet<numpunct<wchar_t> >(const locale&);
  14893.  
  14894.   extern template
  14895.     bool
  14896.     has_facet<num_put<wchar_t> >(const locale&);
  14897.  
  14898.   extern template
  14899.     bool
  14900.     has_facet<num_get<wchar_t> >(const locale&);
  14901.  
  14902.  
  14903.  
  14904.  
  14905. }
  14906. # 2608 "/usr/include/c++/4.7/bits/locale_facets.h" 2 3
  14907. # 40 "/usr/include/c++/4.7/bits/basic_ios.h" 2 3
  14908.  
  14909.  
  14910. namespace std __attribute__ ((__visibility__ ("default")))
  14911. {
  14912.  
  14913.  
  14914.   template<typename _Facet>
  14915.     inline const _Facet&
  14916.     __check_facet(const _Facet* __f)
  14917.     {
  14918.       if (!__f)
  14919.  __throw_bad_cast();
  14920.       return *__f;
  14921.     }
  14922. # 63 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  14923.   template<typename _CharT, typename _Traits>
  14924.     class basic_ios : public ios_base
  14925.     {
  14926.     public:
  14927.  
  14928.  
  14929.  
  14930.  
  14931.  
  14932.  
  14933.       typedef _CharT char_type;
  14934.       typedef typename _Traits::int_type int_type;
  14935.       typedef typename _Traits::pos_type pos_type;
  14936.       typedef typename _Traits::off_type off_type;
  14937.       typedef _Traits traits_type;
  14938.  
  14939.  
  14940.  
  14941.  
  14942.  
  14943.  
  14944.       typedef ctype<_CharT> __ctype_type;
  14945.       typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
  14946.            __num_put_type;
  14947.       typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
  14948.            __num_get_type;
  14949.  
  14950.  
  14951.  
  14952.     protected:
  14953.       basic_ostream<_CharT, _Traits>* _M_tie;
  14954.       mutable char_type _M_fill;
  14955.       mutable bool _M_fill_init;
  14956.       basic_streambuf<_CharT, _Traits>* _M_streambuf;
  14957.  
  14958.  
  14959.       const __ctype_type* _M_ctype;
  14960.  
  14961.       const __num_put_type* _M_num_put;
  14962.  
  14963.       const __num_get_type* _M_num_get;
  14964.  
  14965.     public:
  14966.  
  14967.  
  14968.  
  14969.  
  14970.  
  14971.  
  14972.  
  14973.       operator void*() const
  14974.       { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
  14975.  
  14976.       bool
  14977.       operator!() const
  14978.       { return this->fail(); }
  14979. # 128 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  14980.       iostate
  14981.       rdstate() const
  14982.       { return _M_streambuf_state; }
  14983. # 139 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  14984.       void
  14985.       clear(iostate __state = goodbit);
  14986.  
  14987.  
  14988.  
  14989.  
  14990.  
  14991.  
  14992.  
  14993.       void
  14994.       setstate(iostate __state)
  14995.       { this->clear(this->rdstate() | __state); }
  14996.  
  14997.  
  14998.  
  14999.  
  15000.       void
  15001.       _M_setstate(iostate __state)
  15002.       {
  15003.  
  15004.  
  15005.  _M_streambuf_state |= __state;
  15006.  if (this->exceptions() & __state)
  15007.    throw;
  15008.       }
  15009.  
  15010.  
  15011.  
  15012.  
  15013.  
  15014.  
  15015.  
  15016.       bool
  15017.       good() const
  15018.       { return this->rdstate() == 0; }
  15019.  
  15020.  
  15021.  
  15022.  
  15023.  
  15024.  
  15025.  
  15026.       bool
  15027.       eof() const
  15028.       { return (this->rdstate() & eofbit) != 0; }
  15029. # 192 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15030.       bool
  15031.       fail() const
  15032.       { return (this->rdstate() & (badbit | failbit)) != 0; }
  15033.  
  15034.  
  15035.  
  15036.  
  15037.  
  15038.  
  15039.  
  15040.       bool
  15041.       bad() const
  15042.       { return (this->rdstate() & badbit) != 0; }
  15043. # 213 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15044.       iostate
  15045.       exceptions() const
  15046.       { return _M_exception; }
  15047. # 248 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15048.       void
  15049.       exceptions(iostate __except)
  15050.       {
  15051.         _M_exception = __except;
  15052.         this->clear(_M_streambuf_state);
  15053.       }
  15054.  
  15055.  
  15056.  
  15057.  
  15058.  
  15059.  
  15060.  
  15061.       explicit
  15062.       basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
  15063.       : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
  15064.  _M_ctype(0), _M_num_put(0), _M_num_get(0)
  15065.       { this->init(__sb); }
  15066.  
  15067.  
  15068.  
  15069.  
  15070.  
  15071.  
  15072.  
  15073.       virtual
  15074.       ~basic_ios() { }
  15075. # 286 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15076.       basic_ostream<_CharT, _Traits>*
  15077.       tie() const
  15078.       { return _M_tie; }
  15079. # 298 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15080.       basic_ostream<_CharT, _Traits>*
  15081.       tie(basic_ostream<_CharT, _Traits>* __tiestr)
  15082.       {
  15083.         basic_ostream<_CharT, _Traits>* __old = _M_tie;
  15084.         _M_tie = __tiestr;
  15085.         return __old;
  15086.       }
  15087.  
  15088.  
  15089.  
  15090.  
  15091.  
  15092.  
  15093.  
  15094.       basic_streambuf<_CharT, _Traits>*
  15095.       rdbuf() const
  15096.       { return _M_streambuf; }
  15097. # 338 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15098.       basic_streambuf<_CharT, _Traits>*
  15099.       rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
  15100. # 352 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15101.       basic_ios&
  15102.       copyfmt(const basic_ios& __rhs);
  15103.  
  15104.  
  15105.  
  15106.  
  15107.  
  15108.  
  15109.  
  15110.       char_type
  15111.       fill() const
  15112.       {
  15113.  if (!_M_fill_init)
  15114.    {
  15115.      _M_fill = this->widen(' ');
  15116.      _M_fill_init = true;
  15117.    }
  15118.  return _M_fill;
  15119.       }
  15120. # 381 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15121.       char_type
  15122.       fill(char_type __ch)
  15123.       {
  15124.  char_type __old = this->fill();
  15125.  _M_fill = __ch;
  15126.  return __old;
  15127.       }
  15128. # 401 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15129.       locale
  15130.       imbue(const locale& __loc);
  15131. # 421 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15132.       char
  15133.       narrow(char_type __c, char __dfault) const
  15134.       { return __check_facet(_M_ctype).narrow(__c, __dfault); }
  15135. # 440 "/usr/include/c++/4.7/bits/basic_ios.h" 3
  15136.       char_type
  15137.       widen(char __c) const
  15138.       { return __check_facet(_M_ctype).widen(__c); }
  15139.  
  15140.     protected:
  15141.  
  15142.  
  15143.  
  15144.  
  15145.  
  15146.  
  15147.  
  15148.       basic_ios()
  15149.       : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
  15150.  _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
  15151.       { }
  15152.  
  15153.  
  15154.  
  15155.  
  15156.  
  15157.  
  15158.  
  15159.       void
  15160.       init(basic_streambuf<_CharT, _Traits>* __sb);
  15161.  
  15162.       void
  15163.       _M_cache_locale(const locale& __loc);
  15164.     };
  15165.  
  15166.  
  15167. }
  15168.  
  15169. # 1 "/usr/include/c++/4.7/bits/basic_ios.tcc" 1 3
  15170. # 34 "/usr/include/c++/4.7/bits/basic_ios.tcc" 3
  15171.        
  15172. # 35 "/usr/include/c++/4.7/bits/basic_ios.tcc" 3
  15173.  
  15174. namespace std __attribute__ ((__visibility__ ("default")))
  15175. {
  15176.  
  15177.  
  15178.   template<typename _CharT, typename _Traits>
  15179.     void
  15180.     basic_ios<_CharT, _Traits>::clear(iostate __state)
  15181.     {
  15182.       if (this->rdbuf())
  15183.  _M_streambuf_state = __state;
  15184.       else
  15185.    _M_streambuf_state = __state | badbit;
  15186.       if (this->exceptions() & this->rdstate())
  15187.  __throw_ios_failure(("basic_ios::clear"));
  15188.     }
  15189.  
  15190.   template<typename _CharT, typename _Traits>
  15191.     basic_streambuf<_CharT, _Traits>*
  15192.     basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
  15193.     {
  15194.       basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
  15195.       _M_streambuf = __sb;
  15196.       this->clear();
  15197.       return __old;
  15198.     }
  15199.  
  15200.   template<typename _CharT, typename _Traits>
  15201.     basic_ios<_CharT, _Traits>&
  15202.     basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
  15203.     {
  15204.  
  15205.  
  15206.       if (this != &__rhs)
  15207.  {
  15208.  
  15209.  
  15210.  
  15211.  
  15212.    _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
  15213.                       _M_local_word : new _Words[__rhs._M_word_size];
  15214.  
  15215.  
  15216.    _Callback_list* __cb = __rhs._M_callbacks;
  15217.    if (__cb)
  15218.      __cb->_M_add_reference();
  15219.    _M_call_callbacks(erase_event);
  15220.    if (_M_word != _M_local_word)
  15221.      {
  15222.        delete [] _M_word;
  15223.        _M_word = 0;
  15224.      }
  15225.    _M_dispose_callbacks();
  15226.  
  15227.  
  15228.    _M_callbacks = __cb;
  15229.    for (int __i = 0; __i < __rhs._M_word_size; ++__i)
  15230.      __words[__i] = __rhs._M_word[__i];
  15231.    _M_word = __words;
  15232.    _M_word_size = __rhs._M_word_size;
  15233.  
  15234.    this->flags(__rhs.flags());
  15235.    this->width(__rhs.width());
  15236.    this->precision(__rhs.precision());
  15237.    this->tie(__rhs.tie());
  15238.    this->fill(__rhs.fill());
  15239.    _M_ios_locale = __rhs.getloc();
  15240.    _M_cache_locale(_M_ios_locale);
  15241.  
  15242.    _M_call_callbacks(copyfmt_event);
  15243.  
  15244.  
  15245.    this->exceptions(__rhs.exceptions());
  15246.  }
  15247.       return *this;
  15248.     }
  15249.  
  15250.  
  15251.   template<typename _CharT, typename _Traits>
  15252.     locale
  15253.     basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
  15254.     {
  15255.       locale __old(this->getloc());
  15256.       ios_base::imbue(__loc);
  15257.       _M_cache_locale(__loc);
  15258.       if (this->rdbuf() != 0)
  15259.  this->rdbuf()->pubimbue(__loc);
  15260.       return __old;
  15261.     }
  15262.  
  15263.   template<typename _CharT, typename _Traits>
  15264.     void
  15265.     basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
  15266.     {
  15267.  
  15268.       ios_base::_M_init();
  15269.  
  15270.  
  15271.       _M_cache_locale(_M_ios_locale);
  15272. # 147 "/usr/include/c++/4.7/bits/basic_ios.tcc" 3
  15273.       _M_fill = _CharT();
  15274.       _M_fill_init = false;
  15275.  
  15276.       _M_tie = 0;
  15277.       _M_exception = goodbit;
  15278.       _M_streambuf = __sb;
  15279.       _M_streambuf_state = __sb ? goodbit : badbit;
  15280.     }
  15281.  
  15282.   template<typename _CharT, typename _Traits>
  15283.     void
  15284.     basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
  15285.     {
  15286.       if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
  15287.  _M_ctype = &use_facet<__ctype_type>(__loc);
  15288.       else
  15289.  _M_ctype = 0;
  15290.  
  15291.       if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
  15292.  _M_num_put = &use_facet<__num_put_type>(__loc);
  15293.       else
  15294.  _M_num_put = 0;
  15295.  
  15296.       if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
  15297.  _M_num_get = &use_facet<__num_get_type>(__loc);
  15298.       else
  15299.  _M_num_get = 0;
  15300.     }
  15301.  
  15302.  
  15303.  
  15304.  
  15305.   extern template class basic_ios<char>;
  15306.  
  15307.  
  15308.   extern template class basic_ios<wchar_t>;
  15309.  
  15310.  
  15311.  
  15312.  
  15313. }
  15314. # 474 "/usr/include/c++/4.7/bits/basic_ios.h" 2 3
  15315. # 46 "/usr/include/c++/4.7/ios" 2 3
  15316. # 41 "/usr/include/c++/4.7/ostream" 2 3
  15317.  
  15318.  
  15319. namespace std __attribute__ ((__visibility__ ("default")))
  15320. {
  15321.  
  15322. # 55 "/usr/include/c++/4.7/ostream" 3
  15323.   template<typename _CharT, typename _Traits>
  15324.     class basic_ostream : virtual public basic_ios<_CharT, _Traits>
  15325.     {
  15326.     public:
  15327.  
  15328.       typedef _CharT char_type;
  15329.       typedef typename _Traits::int_type int_type;
  15330.       typedef typename _Traits::pos_type pos_type;
  15331.       typedef typename _Traits::off_type off_type;
  15332.       typedef _Traits traits_type;
  15333.  
  15334.  
  15335.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  15336.       typedef basic_ios<_CharT, _Traits> __ios_type;
  15337.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  15338.       typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
  15339.              __num_put_type;
  15340.       typedef ctype<_CharT> __ctype_type;
  15341. # 81 "/usr/include/c++/4.7/ostream" 3
  15342.       explicit
  15343.       basic_ostream(__streambuf_type* __sb)
  15344.       { this->init(__sb); }
  15345.  
  15346.  
  15347.  
  15348.  
  15349.  
  15350.  
  15351.       virtual
  15352.       ~basic_ostream() { }
  15353.  
  15354.  
  15355.       class sentry;
  15356.       friend class sentry;
  15357. # 105 "/usr/include/c++/4.7/ostream" 3
  15358.       __ostream_type&
  15359.       operator<<(__ostream_type& (*__pf)(__ostream_type&))
  15360.       {
  15361.  
  15362.  
  15363.  
  15364.  return __pf(*this);
  15365.       }
  15366.  
  15367.       __ostream_type&
  15368.       operator<<(__ios_type& (*__pf)(__ios_type&))
  15369.       {
  15370.  
  15371.  
  15372.  
  15373.  __pf(*this);
  15374.  return *this;
  15375.       }
  15376.  
  15377.       __ostream_type&
  15378.       operator<<(ios_base& (*__pf) (ios_base&))
  15379.       {
  15380.  
  15381.  
  15382.  
  15383.  __pf(*this);
  15384.  return *this;
  15385.       }
  15386. # 163 "/usr/include/c++/4.7/ostream" 3
  15387.       __ostream_type&
  15388.       operator<<(long __n)
  15389.       { return _M_insert(__n); }
  15390.  
  15391.       __ostream_type&
  15392.       operator<<(unsigned long __n)
  15393.       { return _M_insert(__n); }
  15394.  
  15395.       __ostream_type&
  15396.       operator<<(bool __n)
  15397.       { return _M_insert(__n); }
  15398.  
  15399.       __ostream_type&
  15400.       operator<<(short __n);
  15401.  
  15402.       __ostream_type&
  15403.       operator<<(unsigned short __n)
  15404.       {
  15405.  
  15406.  
  15407.  return _M_insert(static_cast<unsigned long>(__n));
  15408.       }
  15409.  
  15410.       __ostream_type&
  15411.       operator<<(int __n);
  15412.  
  15413.       __ostream_type&
  15414.       operator<<(unsigned int __n)
  15415.       {
  15416.  
  15417.  
  15418.  return _M_insert(static_cast<unsigned long>(__n));
  15419.       }
  15420.  
  15421.  
  15422.       __ostream_type&
  15423.       operator<<(long long __n)
  15424.       { return _M_insert(__n); }
  15425.  
  15426.       __ostream_type&
  15427.       operator<<(unsigned long long __n)
  15428.       { return _M_insert(__n); }
  15429. # 217 "/usr/include/c++/4.7/ostream" 3
  15430.       __ostream_type&
  15431.       operator<<(double __f)
  15432.       { return _M_insert(__f); }
  15433.  
  15434.       __ostream_type&
  15435.       operator<<(float __f)
  15436.       {
  15437.  
  15438.  
  15439.  return _M_insert(static_cast<double>(__f));
  15440.       }
  15441.  
  15442.       __ostream_type&
  15443.       operator<<(long double __f)
  15444.       { return _M_insert(__f); }
  15445. # 242 "/usr/include/c++/4.7/ostream" 3
  15446.       __ostream_type&
  15447.       operator<<(const void* __p)
  15448.       { return _M_insert(__p); }
  15449. # 267 "/usr/include/c++/4.7/ostream" 3
  15450.       __ostream_type&
  15451.       operator<<(__streambuf_type* __sb);
  15452. # 300 "/usr/include/c++/4.7/ostream" 3
  15453.       __ostream_type&
  15454.       put(char_type __c);
  15455.  
  15456.  
  15457.  
  15458.  
  15459.  
  15460.  
  15461.       void
  15462.       _M_write(const char_type* __s, streamsize __n)
  15463.       {
  15464.  const streamsize __put = this->rdbuf()->sputn(__s, __n);
  15465.  if (__put != __n)
  15466.    this->setstate(ios_base::badbit);
  15467.       }
  15468. # 332 "/usr/include/c++/4.7/ostream" 3
  15469.       __ostream_type&
  15470.       write(const char_type* __s, streamsize __n);
  15471. # 345 "/usr/include/c++/4.7/ostream" 3
  15472.       __ostream_type&
  15473.       flush();
  15474. # 355 "/usr/include/c++/4.7/ostream" 3
  15475.       pos_type
  15476.       tellp();
  15477. # 366 "/usr/include/c++/4.7/ostream" 3
  15478.       __ostream_type&
  15479.       seekp(pos_type);
  15480. # 378 "/usr/include/c++/4.7/ostream" 3
  15481.        __ostream_type&
  15482.       seekp(off_type, ios_base::seekdir);
  15483.  
  15484.     protected:
  15485.       basic_ostream()
  15486.       { this->init(0); }
  15487.  
  15488.       template<typename _ValueT>
  15489.  __ostream_type&
  15490.  _M_insert(_ValueT __v);
  15491.     };
  15492. # 397 "/usr/include/c++/4.7/ostream" 3
  15493.   template <typename _CharT, typename _Traits>
  15494.     class basic_ostream<_CharT, _Traits>::sentry
  15495.     {
  15496.  
  15497.       bool _M_ok;
  15498.       basic_ostream<_CharT, _Traits>& _M_os;
  15499.  
  15500.     public:
  15501. # 416 "/usr/include/c++/4.7/ostream" 3
  15502.       explicit
  15503.       sentry(basic_ostream<_CharT, _Traits>& __os);
  15504. # 426 "/usr/include/c++/4.7/ostream" 3
  15505.       ~sentry()
  15506.       {
  15507.  
  15508.  if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
  15509.    {
  15510.  
  15511.      if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
  15512.        _M_os.setstate(ios_base::badbit);
  15513.    }
  15514.       }
  15515. # 447 "/usr/include/c++/4.7/ostream" 3
  15516.       operator bool() const
  15517.       { return _M_ok; }
  15518.     };
  15519. # 467 "/usr/include/c++/4.7/ostream" 3
  15520.   template<typename _CharT, typename _Traits>
  15521.     inline basic_ostream<_CharT, _Traits>&
  15522.     operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
  15523.     { return __ostream_insert(__out, &__c, 1); }
  15524.  
  15525.   template<typename _CharT, typename _Traits>
  15526.     inline basic_ostream<_CharT, _Traits>&
  15527.     operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
  15528.     { return (__out << __out.widen(__c)); }
  15529.  
  15530.  
  15531.   template <class _Traits>
  15532.     inline basic_ostream<char, _Traits>&
  15533.     operator<<(basic_ostream<char, _Traits>& __out, char __c)
  15534.     { return __ostream_insert(__out, &__c, 1); }
  15535.  
  15536.  
  15537.   template<class _Traits>
  15538.     inline basic_ostream<char, _Traits>&
  15539.     operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
  15540.     { return (__out << static_cast<char>(__c)); }
  15541.  
  15542.   template<class _Traits>
  15543.     inline basic_ostream<char, _Traits>&
  15544.     operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
  15545.     { return (__out << static_cast<char>(__c)); }
  15546. # 509 "/usr/include/c++/4.7/ostream" 3
  15547.   template<typename _CharT, typename _Traits>
  15548.     inline basic_ostream<_CharT, _Traits>&
  15549.     operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
  15550.     {
  15551.       if (!__s)
  15552.  __out.setstate(ios_base::badbit);
  15553.       else
  15554.  __ostream_insert(__out, __s,
  15555.     static_cast<streamsize>(_Traits::length(__s)));
  15556.       return __out;
  15557.     }
  15558.  
  15559.   template<typename _CharT, typename _Traits>
  15560.     basic_ostream<_CharT, _Traits> &
  15561.     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
  15562.  
  15563.  
  15564.   template<class _Traits>
  15565.     inline basic_ostream<char, _Traits>&
  15566.     operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
  15567.     {
  15568.       if (!__s)
  15569.  __out.setstate(ios_base::badbit);
  15570.       else
  15571.  __ostream_insert(__out, __s,
  15572.     static_cast<streamsize>(_Traits::length(__s)));
  15573.       return __out;
  15574.     }
  15575.  
  15576.  
  15577.   template<class _Traits>
  15578.     inline basic_ostream<char, _Traits>&
  15579.     operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
  15580.     { return (__out << reinterpret_cast<const char*>(__s)); }
  15581.  
  15582.   template<class _Traits>
  15583.     inline basic_ostream<char, _Traits> &
  15584.     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
  15585.     { return (__out << reinterpret_cast<const char*>(__s)); }
  15586. # 560 "/usr/include/c++/4.7/ostream" 3
  15587.   template<typename _CharT, typename _Traits>
  15588.     inline basic_ostream<_CharT, _Traits>&
  15589.     endl(basic_ostream<_CharT, _Traits>& __os)
  15590.     { return flush(__os.put(__os.widen('\n'))); }
  15591. # 572 "/usr/include/c++/4.7/ostream" 3
  15592.   template<typename _CharT, typename _Traits>
  15593.     inline basic_ostream<_CharT, _Traits>&
  15594.     ends(basic_ostream<_CharT, _Traits>& __os)
  15595.     { return __os.put(_CharT()); }
  15596.  
  15597.  
  15598.  
  15599.  
  15600.  
  15601.  
  15602.   template<typename _CharT, typename _Traits>
  15603.     inline basic_ostream<_CharT, _Traits>&
  15604.     flush(basic_ostream<_CharT, _Traits>& __os)
  15605.     { return __os.flush(); }
  15606. # 604 "/usr/include/c++/4.7/ostream" 3
  15607.  
  15608. }
  15609.  
  15610. # 1 "/usr/include/c++/4.7/bits/ostream.tcc" 1 3
  15611. # 39 "/usr/include/c++/4.7/bits/ostream.tcc" 3
  15612.        
  15613. # 40 "/usr/include/c++/4.7/bits/ostream.tcc" 3
  15614.  
  15615.  
  15616.  
  15617. namespace std __attribute__ ((__visibility__ ("default")))
  15618. {
  15619.  
  15620.  
  15621.   template<typename _CharT, typename _Traits>
  15622.     basic_ostream<_CharT, _Traits>::sentry::
  15623.     sentry(basic_ostream<_CharT, _Traits>& __os)
  15624.     : _M_ok(false), _M_os(__os)
  15625.     {
  15626.  
  15627.       if (__os.tie() && __os.good())
  15628.  __os.tie()->flush();
  15629.  
  15630.       if (__os.good())
  15631.  _M_ok = true;
  15632.       else
  15633.  __os.setstate(ios_base::failbit);
  15634.     }
  15635.  
  15636.   template<typename _CharT, typename _Traits>
  15637.     template<typename _ValueT>
  15638.       basic_ostream<_CharT, _Traits>&
  15639.       basic_ostream<_CharT, _Traits>::
  15640.       _M_insert(_ValueT __v)
  15641.       {
  15642.  sentry __cerb(*this);
  15643.  if (__cerb)
  15644.    {
  15645.      ios_base::iostate __err = ios_base::goodbit;
  15646.      try
  15647.        {
  15648.   const __num_put_type& __np = __check_facet(this->_M_num_put);
  15649.   if (__np.put(*this, *this, this->fill(), __v).failed())
  15650.     __err |= ios_base::badbit;
  15651.        }
  15652.      catch(__cxxabiv1::__forced_unwind&)
  15653.        {
  15654.   this->_M_setstate(ios_base::badbit);
  15655.   throw;
  15656.        }
  15657.      catch(...)
  15658.        { this->_M_setstate(ios_base::badbit); }
  15659.      if (__err)
  15660.        this->setstate(__err);
  15661.    }
  15662.  return *this;
  15663.       }
  15664.  
  15665.   template<typename _CharT, typename _Traits>
  15666.     basic_ostream<_CharT, _Traits>&
  15667.     basic_ostream<_CharT, _Traits>::
  15668.     operator<<(short __n)
  15669.     {
  15670.  
  15671.  
  15672.       const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
  15673.       if (__fmt == ios_base::oct || __fmt == ios_base::hex)
  15674.  return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
  15675.       else
  15676.  return _M_insert(static_cast<long>(__n));
  15677.     }
  15678.  
  15679.   template<typename _CharT, typename _Traits>
  15680.     basic_ostream<_CharT, _Traits>&
  15681.     basic_ostream<_CharT, _Traits>::
  15682.     operator<<(int __n)
  15683.     {
  15684.  
  15685.  
  15686.       const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
  15687.       if (__fmt == ios_base::oct || __fmt == ios_base::hex)
  15688.  return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
  15689.       else
  15690.  return _M_insert(static_cast<long>(__n));
  15691.     }
  15692.  
  15693.   template<typename _CharT, typename _Traits>
  15694.     basic_ostream<_CharT, _Traits>&
  15695.     basic_ostream<_CharT, _Traits>::
  15696.     operator<<(__streambuf_type* __sbin)
  15697.     {
  15698.       ios_base::iostate __err = ios_base::goodbit;
  15699.       sentry __cerb(*this);
  15700.       if (__cerb && __sbin)
  15701.  {
  15702.    try
  15703.      {
  15704.        if (!__copy_streambufs(__sbin, this->rdbuf()))
  15705.   __err |= ios_base::failbit;
  15706.      }
  15707.    catch(__cxxabiv1::__forced_unwind&)
  15708.      {
  15709.        this->_M_setstate(ios_base::badbit);
  15710.        throw;
  15711.      }
  15712.    catch(...)
  15713.      { this->_M_setstate(ios_base::failbit); }
  15714.  }
  15715.       else if (!__sbin)
  15716.  __err |= ios_base::badbit;
  15717.       if (__err)
  15718.  this->setstate(__err);
  15719.       return *this;
  15720.     }
  15721.  
  15722.   template<typename _CharT, typename _Traits>
  15723.     basic_ostream<_CharT, _Traits>&
  15724.     basic_ostream<_CharT, _Traits>::
  15725.     put(char_type __c)
  15726.     {
  15727.  
  15728.  
  15729.  
  15730.  
  15731.  
  15732.  
  15733.       sentry __cerb(*this);
  15734.       if (__cerb)
  15735.  {
  15736.    ios_base::iostate __err = ios_base::goodbit;
  15737.    try
  15738.      {
  15739.        const int_type __put = this->rdbuf()->sputc(__c);
  15740.        if (traits_type::eq_int_type(__put, traits_type::eof()))
  15741.   __err |= ios_base::badbit;
  15742.      }
  15743.    catch(__cxxabiv1::__forced_unwind&)
  15744.      {
  15745.        this->_M_setstate(ios_base::badbit);
  15746.        throw;
  15747.      }
  15748.    catch(...)
  15749.      { this->_M_setstate(ios_base::badbit); }
  15750.    if (__err)
  15751.      this->setstate(__err);
  15752.  }
  15753.       return *this;
  15754.     }
  15755.  
  15756.   template<typename _CharT, typename _Traits>
  15757.     basic_ostream<_CharT, _Traits>&
  15758.     basic_ostream<_CharT, _Traits>::
  15759.     write(const _CharT* __s, streamsize __n)
  15760.     {
  15761.  
  15762.  
  15763.  
  15764.  
  15765.  
  15766.  
  15767.  
  15768.       sentry __cerb(*this);
  15769.       if (__cerb)
  15770.  {
  15771.    try
  15772.      { _M_write(__s, __n); }
  15773.    catch(__cxxabiv1::__forced_unwind&)
  15774.      {
  15775.        this->_M_setstate(ios_base::badbit);
  15776.        throw;
  15777.      }
  15778.    catch(...)
  15779.      { this->_M_setstate(ios_base::badbit); }
  15780.  }
  15781.       return *this;
  15782.     }
  15783.  
  15784.   template<typename _CharT, typename _Traits>
  15785.     basic_ostream<_CharT, _Traits>&
  15786.     basic_ostream<_CharT, _Traits>::
  15787.     flush()
  15788.     {
  15789.  
  15790.  
  15791.  
  15792.       ios_base::iostate __err = ios_base::goodbit;
  15793.       try
  15794.  {
  15795.    if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
  15796.      __err |= ios_base::badbit;
  15797.  }
  15798.       catch(__cxxabiv1::__forced_unwind&)
  15799.  {
  15800.    this->_M_setstate(ios_base::badbit);
  15801.    throw;
  15802.  }
  15803.       catch(...)
  15804.  { this->_M_setstate(ios_base::badbit); }
  15805.       if (__err)
  15806.  this->setstate(__err);
  15807.       return *this;
  15808.     }
  15809.  
  15810.   template<typename _CharT, typename _Traits>
  15811.     typename basic_ostream<_CharT, _Traits>::pos_type
  15812.     basic_ostream<_CharT, _Traits>::
  15813.     tellp()
  15814.     {
  15815.       pos_type __ret = pos_type(-1);
  15816.       try
  15817.  {
  15818.    if (!this->fail())
  15819.      __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
  15820.  }
  15821.       catch(__cxxabiv1::__forced_unwind&)
  15822.  {
  15823.    this->_M_setstate(ios_base::badbit);
  15824.    throw;
  15825.  }
  15826.       catch(...)
  15827.  { this->_M_setstate(ios_base::badbit); }
  15828.       return __ret;
  15829.     }
  15830.  
  15831.   template<typename _CharT, typename _Traits>
  15832.     basic_ostream<_CharT, _Traits>&
  15833.     basic_ostream<_CharT, _Traits>::
  15834.     seekp(pos_type __pos)
  15835.     {
  15836.       ios_base::iostate __err = ios_base::goodbit;
  15837.       try
  15838.  {
  15839.    if (!this->fail())
  15840.      {
  15841.  
  15842.  
  15843.        const pos_type __p = this->rdbuf()->pubseekpos(__pos,
  15844.             ios_base::out);
  15845.  
  15846.  
  15847.        if (__p == pos_type(off_type(-1)))
  15848.   __err |= ios_base::failbit;
  15849.      }
  15850.  }
  15851.       catch(__cxxabiv1::__forced_unwind&)
  15852.  {
  15853.    this->_M_setstate(ios_base::badbit);
  15854.    throw;
  15855.  }
  15856.       catch(...)
  15857.  { this->_M_setstate(ios_base::badbit); }
  15858.       if (__err)
  15859.  this->setstate(__err);
  15860.       return *this;
  15861.     }
  15862.  
  15863.   template<typename _CharT, typename _Traits>
  15864.     basic_ostream<_CharT, _Traits>&
  15865.     basic_ostream<_CharT, _Traits>::
  15866.     seekp(off_type __off, ios_base::seekdir __dir)
  15867.     {
  15868.       ios_base::iostate __err = ios_base::goodbit;
  15869.       try
  15870.  {
  15871.    if (!this->fail())
  15872.      {
  15873.  
  15874.  
  15875.        const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
  15876.             ios_base::out);
  15877.  
  15878.  
  15879.        if (__p == pos_type(off_type(-1)))
  15880.   __err |= ios_base::failbit;
  15881.      }
  15882.  }
  15883.       catch(__cxxabiv1::__forced_unwind&)
  15884.  {
  15885.    this->_M_setstate(ios_base::badbit);
  15886.    throw;
  15887.  }
  15888.       catch(...)
  15889.  { this->_M_setstate(ios_base::badbit); }
  15890.       if (__err)
  15891.  this->setstate(__err);
  15892.       return *this;
  15893.     }
  15894.  
  15895.   template<typename _CharT, typename _Traits>
  15896.     basic_ostream<_CharT, _Traits>&
  15897.     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
  15898.     {
  15899.       if (!__s)
  15900.  __out.setstate(ios_base::badbit);
  15901.       else
  15902.  {
  15903.  
  15904.  
  15905.    const size_t __clen = char_traits<char>::length(__s);
  15906.    try
  15907.      {
  15908.        struct __ptr_guard
  15909.        {
  15910.   _CharT *__p;
  15911.   __ptr_guard (_CharT *__ip): __p(__ip) { }
  15912.   ~__ptr_guard() { delete[] __p; }
  15913.   _CharT* __get() { return __p; }
  15914.        } __pg (new _CharT[__clen]);
  15915.  
  15916.        _CharT *__ws = __pg.__get();
  15917.        for (size_t __i = 0; __i < __clen; ++__i)
  15918.   __ws[__i] = __out.widen(__s[__i]);
  15919.        __ostream_insert(__out, __ws, __clen);
  15920.      }
  15921.    catch(__cxxabiv1::__forced_unwind&)
  15922.      {
  15923.        __out._M_setstate(ios_base::badbit);
  15924.        throw;
  15925.      }
  15926.    catch(...)
  15927.      { __out._M_setstate(ios_base::badbit); }
  15928.  }
  15929.       return __out;
  15930.     }
  15931.  
  15932.  
  15933.  
  15934.  
  15935.   extern template class basic_ostream<char>;
  15936.   extern template ostream& endl(ostream&);
  15937.   extern template ostream& ends(ostream&);
  15938.   extern template ostream& flush(ostream&);
  15939.   extern template ostream& operator<<(ostream&, char);
  15940.   extern template ostream& operator<<(ostream&, unsigned char);
  15941.   extern template ostream& operator<<(ostream&, signed char);
  15942.   extern template ostream& operator<<(ostream&, const char*);
  15943.   extern template ostream& operator<<(ostream&, const unsigned char*);
  15944.   extern template ostream& operator<<(ostream&, const signed char*);
  15945.  
  15946.   extern template ostream& ostream::_M_insert(long);
  15947.   extern template ostream& ostream::_M_insert(unsigned long);
  15948.   extern template ostream& ostream::_M_insert(bool);
  15949.  
  15950.   extern template ostream& ostream::_M_insert(long long);
  15951.   extern template ostream& ostream::_M_insert(unsigned long long);
  15952.  
  15953.   extern template ostream& ostream::_M_insert(double);
  15954.   extern template ostream& ostream::_M_insert(long double);
  15955.   extern template ostream& ostream::_M_insert(const void*);
  15956.  
  15957.  
  15958.   extern template class basic_ostream<wchar_t>;
  15959.   extern template wostream& endl(wostream&);
  15960.   extern template wostream& ends(wostream&);
  15961.   extern template wostream& flush(wostream&);
  15962.   extern template wostream& operator<<(wostream&, wchar_t);
  15963.   extern template wostream& operator<<(wostream&, char);
  15964.   extern template wostream& operator<<(wostream&, const wchar_t*);
  15965.   extern template wostream& operator<<(wostream&, const char*);
  15966.  
  15967.   extern template wostream& wostream::_M_insert(long);
  15968.   extern template wostream& wostream::_M_insert(unsigned long);
  15969.   extern template wostream& wostream::_M_insert(bool);
  15970.  
  15971.   extern template wostream& wostream::_M_insert(long long);
  15972.   extern template wostream& wostream::_M_insert(unsigned long long);
  15973.  
  15974.   extern template wostream& wostream::_M_insert(double);
  15975.   extern template wostream& wostream::_M_insert(long double);
  15976.   extern template wostream& wostream::_M_insert(const void*);
  15977.  
  15978.  
  15979.  
  15980.  
  15981. }
  15982. # 608 "/usr/include/c++/4.7/ostream" 2 3
  15983. # 41 "/usr/include/c++/4.7/iostream" 2 3
  15984. # 1 "/usr/include/c++/4.7/istream" 1 3
  15985. # 38 "/usr/include/c++/4.7/istream" 3
  15986.        
  15987. # 39 "/usr/include/c++/4.7/istream" 3
  15988.  
  15989.  
  15990.  
  15991.  
  15992. namespace std __attribute__ ((__visibility__ ("default")))
  15993. {
  15994.  
  15995. # 55 "/usr/include/c++/4.7/istream" 3
  15996.   template<typename _CharT, typename _Traits>
  15997.     class basic_istream : virtual public basic_ios<_CharT, _Traits>
  15998.     {
  15999.     public:
  16000.  
  16001.       typedef _CharT char_type;
  16002.       typedef typename _Traits::int_type int_type;
  16003.       typedef typename _Traits::pos_type pos_type;
  16004.       typedef typename _Traits::off_type off_type;
  16005.       typedef _Traits traits_type;
  16006.  
  16007.  
  16008.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  16009.       typedef basic_ios<_CharT, _Traits> __ios_type;
  16010.       typedef basic_istream<_CharT, _Traits> __istream_type;
  16011.       typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
  16012.         __num_get_type;
  16013.       typedef ctype<_CharT> __ctype_type;
  16014.  
  16015.     protected:
  16016.  
  16017.  
  16018.  
  16019.  
  16020.  
  16021.       streamsize _M_gcount;
  16022.  
  16023.     public:
  16024.  
  16025.  
  16026.  
  16027.  
  16028.  
  16029.  
  16030.  
  16031.       explicit
  16032.       basic_istream(__streambuf_type* __sb)
  16033.       : _M_gcount(streamsize(0))
  16034.       { this->init(__sb); }
  16035.  
  16036.  
  16037.  
  16038.  
  16039.  
  16040.  
  16041.       virtual
  16042.       ~basic_istream()
  16043.       { _M_gcount = streamsize(0); }
  16044.  
  16045.  
  16046.       class sentry;
  16047.       friend class sentry;
  16048. # 117 "/usr/include/c++/4.7/istream" 3
  16049.       __istream_type&
  16050.       operator>>(__istream_type& (*__pf)(__istream_type&))
  16051.       { return __pf(*this); }
  16052.  
  16053.       __istream_type&
  16054.       operator>>(__ios_type& (*__pf)(__ios_type&))
  16055.       {
  16056.  __pf(*this);
  16057.  return *this;
  16058.       }
  16059.  
  16060.       __istream_type&
  16061.       operator>>(ios_base& (*__pf)(ios_base&))
  16062.       {
  16063.  __pf(*this);
  16064.  return *this;
  16065.       }
  16066. # 165 "/usr/include/c++/4.7/istream" 3
  16067.       __istream_type&
  16068.       operator>>(bool& __n)
  16069.       { return _M_extract(__n); }
  16070.  
  16071.       __istream_type&
  16072.       operator>>(short& __n);
  16073.  
  16074.       __istream_type&
  16075.       operator>>(unsigned short& __n)
  16076.       { return _M_extract(__n); }
  16077.  
  16078.       __istream_type&
  16079.       operator>>(int& __n);
  16080.  
  16081.       __istream_type&
  16082.       operator>>(unsigned int& __n)
  16083.       { return _M_extract(__n); }
  16084.  
  16085.       __istream_type&
  16086.       operator>>(long& __n)
  16087.       { return _M_extract(__n); }
  16088.  
  16089.       __istream_type&
  16090.       operator>>(unsigned long& __n)
  16091.       { return _M_extract(__n); }
  16092.  
  16093.  
  16094.       __istream_type&
  16095.       operator>>(long long& __n)
  16096.       { return _M_extract(__n); }
  16097.  
  16098.       __istream_type&
  16099.       operator>>(unsigned long long& __n)
  16100.       { return _M_extract(__n); }
  16101. # 211 "/usr/include/c++/4.7/istream" 3
  16102.       __istream_type&
  16103.       operator>>(float& __f)
  16104.       { return _M_extract(__f); }
  16105.  
  16106.       __istream_type&
  16107.       operator>>(double& __f)
  16108.       { return _M_extract(__f); }
  16109.  
  16110.       __istream_type&
  16111.       operator>>(long double& __f)
  16112.       { return _M_extract(__f); }
  16113. # 232 "/usr/include/c++/4.7/istream" 3
  16114.       __istream_type&
  16115.       operator>>(void*& __p)
  16116.       { return _M_extract(__p); }
  16117. # 256 "/usr/include/c++/4.7/istream" 3
  16118.       __istream_type&
  16119.       operator>>(__streambuf_type* __sb);
  16120. # 266 "/usr/include/c++/4.7/istream" 3
  16121.       streamsize
  16122.       gcount() const
  16123.       { return _M_gcount; }
  16124. # 299 "/usr/include/c++/4.7/istream" 3
  16125.       int_type
  16126.       get();
  16127. # 313 "/usr/include/c++/4.7/istream" 3
  16128.       __istream_type&
  16129.       get(char_type& __c);
  16130. # 340 "/usr/include/c++/4.7/istream" 3
  16131.       __istream_type&
  16132.       get(char_type* __s, streamsize __n, char_type __delim);
  16133. # 351 "/usr/include/c++/4.7/istream" 3
  16134.       __istream_type&
  16135.       get(char_type* __s, streamsize __n)
  16136.       { return this->get(__s, __n, this->widen('\n')); }
  16137. # 374 "/usr/include/c++/4.7/istream" 3
  16138.       __istream_type&
  16139.       get(__streambuf_type& __sb, char_type __delim);
  16140. # 384 "/usr/include/c++/4.7/istream" 3
  16141.       __istream_type&
  16142.       get(__streambuf_type& __sb)
  16143.       { return this->get(__sb, this->widen('\n')); }
  16144. # 413 "/usr/include/c++/4.7/istream" 3
  16145.       __istream_type&
  16146.       getline(char_type* __s, streamsize __n, char_type __delim);
  16147. # 424 "/usr/include/c++/4.7/istream" 3
  16148.       __istream_type&
  16149.       getline(char_type* __s, streamsize __n)
  16150.       { return this->getline(__s, __n, this->widen('\n')); }
  16151. # 448 "/usr/include/c++/4.7/istream" 3
  16152.       __istream_type&
  16153.       ignore(streamsize __n, int_type __delim);
  16154.  
  16155.       __istream_type&
  16156.       ignore(streamsize __n);
  16157.  
  16158.       __istream_type&
  16159.       ignore();
  16160. # 465 "/usr/include/c++/4.7/istream" 3
  16161.       int_type
  16162.       peek();
  16163. # 483 "/usr/include/c++/4.7/istream" 3
  16164.       __istream_type&
  16165.       read(char_type* __s, streamsize __n);
  16166. # 502 "/usr/include/c++/4.7/istream" 3
  16167.       streamsize
  16168.       readsome(char_type* __s, streamsize __n);
  16169. # 519 "/usr/include/c++/4.7/istream" 3
  16170.       __istream_type&
  16171.       putback(char_type __c);
  16172. # 535 "/usr/include/c++/4.7/istream" 3
  16173.       __istream_type&
  16174.       unget();
  16175. # 553 "/usr/include/c++/4.7/istream" 3
  16176.       int
  16177.       sync();
  16178. # 568 "/usr/include/c++/4.7/istream" 3
  16179.       pos_type
  16180.       tellg();
  16181. # 583 "/usr/include/c++/4.7/istream" 3
  16182.       __istream_type&
  16183.       seekg(pos_type);
  16184. # 599 "/usr/include/c++/4.7/istream" 3
  16185.       __istream_type&
  16186.       seekg(off_type, ios_base::seekdir);
  16187.  
  16188.  
  16189.     protected:
  16190.       basic_istream()
  16191.       : _M_gcount(streamsize(0))
  16192.       { this->init(0); }
  16193.  
  16194.       template<typename _ValueT>
  16195.  __istream_type&
  16196.  _M_extract(_ValueT& __v);
  16197.     };
  16198.  
  16199.  
  16200.   template<>
  16201.     basic_istream<char>&
  16202.     basic_istream<char>::
  16203.     getline(char_type* __s, streamsize __n, char_type __delim);
  16204.  
  16205.   template<>
  16206.     basic_istream<char>&
  16207.     basic_istream<char>::
  16208.     ignore(streamsize __n);
  16209.  
  16210.   template<>
  16211.     basic_istream<char>&
  16212.     basic_istream<char>::
  16213.     ignore(streamsize __n, int_type __delim);
  16214.  
  16215.  
  16216.   template<>
  16217.     basic_istream<wchar_t>&
  16218.     basic_istream<wchar_t>::
  16219.     getline(char_type* __s, streamsize __n, char_type __delim);
  16220.  
  16221.   template<>
  16222.     basic_istream<wchar_t>&
  16223.     basic_istream<wchar_t>::
  16224.     ignore(streamsize __n);
  16225.  
  16226.   template<>
  16227.     basic_istream<wchar_t>&
  16228.     basic_istream<wchar_t>::
  16229.     ignore(streamsize __n, int_type __delim);
  16230. # 654 "/usr/include/c++/4.7/istream" 3
  16231.   template<typename _CharT, typename _Traits>
  16232.     class basic_istream<_CharT, _Traits>::sentry
  16233.     {
  16234.  
  16235.       bool _M_ok;
  16236.  
  16237.     public:
  16238.  
  16239.       typedef _Traits traits_type;
  16240.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  16241.       typedef basic_istream<_CharT, _Traits> __istream_type;
  16242.       typedef typename __istream_type::__ctype_type __ctype_type;
  16243.       typedef typename _Traits::int_type __int_type;
  16244. # 690 "/usr/include/c++/4.7/istream" 3
  16245.       explicit
  16246.       sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
  16247. # 703 "/usr/include/c++/4.7/istream" 3
  16248.       operator bool() const
  16249.       { return _M_ok; }
  16250.     };
  16251. # 719 "/usr/include/c++/4.7/istream" 3
  16252.   template<typename _CharT, typename _Traits>
  16253.     basic_istream<_CharT, _Traits>&
  16254.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
  16255.  
  16256.   template<class _Traits>
  16257.     inline basic_istream<char, _Traits>&
  16258.     operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
  16259.     { return (__in >> reinterpret_cast<char&>(__c)); }
  16260.  
  16261.   template<class _Traits>
  16262.     inline basic_istream<char, _Traits>&
  16263.     operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
  16264.     { return (__in >> reinterpret_cast<char&>(__c)); }
  16265. # 761 "/usr/include/c++/4.7/istream" 3
  16266.   template<typename _CharT, typename _Traits>
  16267.     basic_istream<_CharT, _Traits>&
  16268.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
  16269.  
  16270.  
  16271.   template<>
  16272.     basic_istream<char>&
  16273.     operator>>(basic_istream<char>& __in, char* __s);
  16274.  
  16275.   template<class _Traits>
  16276.     inline basic_istream<char, _Traits>&
  16277.     operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
  16278.     { return (__in >> reinterpret_cast<char*>(__s)); }
  16279.  
  16280.   template<class _Traits>
  16281.     inline basic_istream<char, _Traits>&
  16282.     operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
  16283.     { return (__in >> reinterpret_cast<char*>(__s)); }
  16284. # 788 "/usr/include/c++/4.7/istream" 3
  16285.   template<typename _CharT, typename _Traits>
  16286.     class basic_iostream
  16287.     : public basic_istream<_CharT, _Traits>,
  16288.       public basic_ostream<_CharT, _Traits>
  16289.     {
  16290.     public:
  16291.  
  16292.  
  16293.  
  16294.       typedef _CharT char_type;
  16295.       typedef typename _Traits::int_type int_type;
  16296.       typedef typename _Traits::pos_type pos_type;
  16297.       typedef typename _Traits::off_type off_type;
  16298.       typedef _Traits traits_type;
  16299.  
  16300.  
  16301.       typedef basic_istream<_CharT, _Traits> __istream_type;
  16302.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  16303.  
  16304.  
  16305.  
  16306.  
  16307.  
  16308.  
  16309.  
  16310.       explicit
  16311.       basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
  16312.       : __istream_type(__sb), __ostream_type(__sb) { }
  16313.  
  16314.  
  16315.  
  16316.  
  16317.       virtual
  16318.       ~basic_iostream() { }
  16319.  
  16320.     protected:
  16321.       basic_iostream()
  16322.       : __istream_type(), __ostream_type() { }
  16323.     };
  16324. # 848 "/usr/include/c++/4.7/istream" 3
  16325.   template<typename _CharT, typename _Traits>
  16326.     basic_istream<_CharT, _Traits>&
  16327.     ws(basic_istream<_CharT, _Traits>& __is);
  16328. # 870 "/usr/include/c++/4.7/istream" 3
  16329.  
  16330. }
  16331.  
  16332. # 1 "/usr/include/c++/4.7/bits/istream.tcc" 1 3
  16333. # 39 "/usr/include/c++/4.7/bits/istream.tcc" 3
  16334.        
  16335. # 40 "/usr/include/c++/4.7/bits/istream.tcc" 3
  16336.  
  16337.  
  16338.  
  16339. namespace std __attribute__ ((__visibility__ ("default")))
  16340. {
  16341.  
  16342.  
  16343.   template<typename _CharT, typename _Traits>
  16344.     basic_istream<_CharT, _Traits>::sentry::
  16345.     sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
  16346.     {
  16347.       ios_base::iostate __err = ios_base::goodbit;
  16348.       if (__in.good())
  16349.  {
  16350.    if (__in.tie())
  16351.      __in.tie()->flush();
  16352.    if (!__noskip && bool(__in.flags() & ios_base::skipws))
  16353.      {
  16354.        const __int_type __eof = traits_type::eof();
  16355.        __streambuf_type* __sb = __in.rdbuf();
  16356.        __int_type __c = __sb->sgetc();
  16357.  
  16358.        const __ctype_type& __ct = __check_facet(__in._M_ctype);
  16359.        while (!traits_type::eq_int_type(__c, __eof)
  16360.        && __ct.is(ctype_base::space,
  16361.     traits_type::to_char_type(__c)))
  16362.   __c = __sb->snextc();
  16363.  
  16364.  
  16365.  
  16366.  
  16367.        if (traits_type::eq_int_type(__c, __eof))
  16368.   __err |= ios_base::eofbit;
  16369.      }
  16370.  }
  16371.  
  16372.       if (__in.good() && __err == ios_base::goodbit)
  16373.  _M_ok = true;
  16374.       else
  16375.  {
  16376.    __err |= ios_base::failbit;
  16377.    __in.setstate(__err);
  16378.  }
  16379.     }
  16380.  
  16381.   template<typename _CharT, typename _Traits>
  16382.     template<typename _ValueT>
  16383.       basic_istream<_CharT, _Traits>&
  16384.       basic_istream<_CharT, _Traits>::
  16385.       _M_extract(_ValueT& __v)
  16386.       {
  16387.  sentry __cerb(*this, false);
  16388.  if (__cerb)
  16389.    {
  16390.      ios_base::iostate __err = ios_base::goodbit;
  16391.      try
  16392.        {
  16393.   const __num_get_type& __ng = __check_facet(this->_M_num_get);
  16394.   __ng.get(*this, 0, *this, __err, __v);
  16395.        }
  16396.      catch(__cxxabiv1::__forced_unwind&)
  16397.        {
  16398.   this->_M_setstate(ios_base::badbit);
  16399.   throw;
  16400.        }
  16401.      catch(...)
  16402.        { this->_M_setstate(ios_base::badbit); }
  16403.      if (__err)
  16404.        this->setstate(__err);
  16405.    }
  16406.  return *this;
  16407.       }
  16408.  
  16409.   template<typename _CharT, typename _Traits>
  16410.     basic_istream<_CharT, _Traits>&
  16411.     basic_istream<_CharT, _Traits>::
  16412.     operator>>(short& __n)
  16413.     {
  16414.  
  16415.  
  16416.       sentry __cerb(*this, false);
  16417.       if (__cerb)
  16418.  {
  16419.    ios_base::iostate __err = ios_base::goodbit;
  16420.    try
  16421.      {
  16422.        long __l;
  16423.        const __num_get_type& __ng = __check_facet(this->_M_num_get);
  16424.        __ng.get(*this, 0, *this, __err, __l);
  16425.  
  16426.  
  16427.  
  16428.        if (__l < __gnu_cxx::__numeric_traits<short>::__min)
  16429.   {
  16430.     __err |= ios_base::failbit;
  16431.     __n = __gnu_cxx::__numeric_traits<short>::__min;
  16432.   }
  16433.        else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
  16434.   {
  16435.     __err |= ios_base::failbit;
  16436.     __n = __gnu_cxx::__numeric_traits<short>::__max;
  16437.   }
  16438.        else
  16439.   __n = short(__l);
  16440.      }
  16441.    catch(__cxxabiv1::__forced_unwind&)
  16442.      {
  16443.        this->_M_setstate(ios_base::badbit);
  16444.        throw;
  16445.      }
  16446.    catch(...)
  16447.      { this->_M_setstate(ios_base::badbit); }
  16448.    if (__err)
  16449.      this->setstate(__err);
  16450.  }
  16451.       return *this;
  16452.     }
  16453.  
  16454.   template<typename _CharT, typename _Traits>
  16455.     basic_istream<_CharT, _Traits>&
  16456.     basic_istream<_CharT, _Traits>::
  16457.     operator>>(int& __n)
  16458.     {
  16459.  
  16460.  
  16461.       sentry __cerb(*this, false);
  16462.       if (__cerb)
  16463.  {
  16464.    ios_base::iostate __err = ios_base::goodbit;
  16465.    try
  16466.      {
  16467.        long __l;
  16468.        const __num_get_type& __ng = __check_facet(this->_M_num_get);
  16469.        __ng.get(*this, 0, *this, __err, __l);
  16470.  
  16471.  
  16472.  
  16473.        if (__l < __gnu_cxx::__numeric_traits<int>::__min)
  16474.   {
  16475.     __err |= ios_base::failbit;
  16476.     __n = __gnu_cxx::__numeric_traits<int>::__min;
  16477.   }
  16478.        else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
  16479.   {
  16480.     __err |= ios_base::failbit;
  16481.     __n = __gnu_cxx::__numeric_traits<int>::__max;
  16482.   }
  16483.        else
  16484.   __n = int(__l);
  16485.      }
  16486.    catch(__cxxabiv1::__forced_unwind&)
  16487.      {
  16488.        this->_M_setstate(ios_base::badbit);
  16489.        throw;
  16490.      }
  16491.    catch(...)
  16492.      { this->_M_setstate(ios_base::badbit); }
  16493.    if (__err)
  16494.      this->setstate(__err);
  16495.  }
  16496.       return *this;
  16497.     }
  16498.  
  16499.   template<typename _CharT, typename _Traits>
  16500.     basic_istream<_CharT, _Traits>&
  16501.     basic_istream<_CharT, _Traits>::
  16502.     operator>>(__streambuf_type* __sbout)
  16503.     {
  16504.       ios_base::iostate __err = ios_base::goodbit;
  16505.       sentry __cerb(*this, false);
  16506.       if (__cerb && __sbout)
  16507.  {
  16508.    try
  16509.      {
  16510.        bool __ineof;
  16511.        if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
  16512.   __err |= ios_base::failbit;
  16513.        if (__ineof)
  16514.   __err |= ios_base::eofbit;
  16515.      }
  16516.    catch(__cxxabiv1::__forced_unwind&)
  16517.      {
  16518.        this->_M_setstate(ios_base::failbit);
  16519.        throw;
  16520.      }
  16521.    catch(...)
  16522.      { this->_M_setstate(ios_base::failbit); }
  16523.  }
  16524.       else if (!__sbout)
  16525.  __err |= ios_base::failbit;
  16526.       if (__err)
  16527.  this->setstate(__err);
  16528.       return *this;
  16529.     }
  16530.  
  16531.   template<typename _CharT, typename _Traits>
  16532.     typename basic_istream<_CharT, _Traits>::int_type
  16533.     basic_istream<_CharT, _Traits>::
  16534.     get(void)
  16535.     {
  16536.       const int_type __eof = traits_type::eof();
  16537.       int_type __c = __eof;
  16538.       _M_gcount = 0;
  16539.       ios_base::iostate __err = ios_base::goodbit;
  16540.       sentry __cerb(*this, true);
  16541.       if (__cerb)
  16542.  {
  16543.    try
  16544.      {
  16545.        __c = this->rdbuf()->sbumpc();
  16546.  
  16547.        if (!traits_type::eq_int_type(__c, __eof))
  16548.   _M_gcount = 1;
  16549.        else
  16550.   __err |= ios_base::eofbit;
  16551.      }
  16552.    catch(__cxxabiv1::__forced_unwind&)
  16553.      {
  16554.        this->_M_setstate(ios_base::badbit);
  16555.        throw;
  16556.      }
  16557.    catch(...)
  16558.      { this->_M_setstate(ios_base::badbit); }
  16559.  }
  16560.       if (!_M_gcount)
  16561.  __err |= ios_base::failbit;
  16562.       if (__err)
  16563.  this->setstate(__err);
  16564.       return __c;
  16565.     }
  16566.  
  16567.   template<typename _CharT, typename _Traits>
  16568.     basic_istream<_CharT, _Traits>&
  16569.     basic_istream<_CharT, _Traits>::
  16570.     get(char_type& __c)
  16571.     {
  16572.       _M_gcount = 0;
  16573.       ios_base::iostate __err = ios_base::goodbit;
  16574.       sentry __cerb(*this, true);
  16575.       if (__cerb)
  16576.  {
  16577.    try
  16578.      {
  16579.        const int_type __cb = this->rdbuf()->sbumpc();
  16580.  
  16581.        if (!traits_type::eq_int_type(__cb, traits_type::eof()))
  16582.   {
  16583.     _M_gcount = 1;
  16584.     __c = traits_type::to_char_type(__cb);
  16585.   }
  16586.        else
  16587.   __err |= ios_base::eofbit;
  16588.      }
  16589.    catch(__cxxabiv1::__forced_unwind&)
  16590.      {
  16591.        this->_M_setstate(ios_base::badbit);
  16592.        throw;
  16593.      }
  16594.    catch(...)
  16595.      { this->_M_setstate(ios_base::badbit); }
  16596.  }
  16597.       if (!_M_gcount)
  16598.  __err |= ios_base::failbit;
  16599.       if (__err)
  16600.  this->setstate(__err);
  16601.       return *this;
  16602.     }
  16603.  
  16604.   template<typename _CharT, typename _Traits>
  16605.     basic_istream<_CharT, _Traits>&
  16606.     basic_istream<_CharT, _Traits>::
  16607.     get(char_type* __s, streamsize __n, char_type __delim)
  16608.     {
  16609.       _M_gcount = 0;
  16610.       ios_base::iostate __err = ios_base::goodbit;
  16611.       sentry __cerb(*this, true);
  16612.       if (__cerb)
  16613.  {
  16614.    try
  16615.      {
  16616.        const int_type __idelim = traits_type::to_int_type(__delim);
  16617.        const int_type __eof = traits_type::eof();
  16618.        __streambuf_type* __sb = this->rdbuf();
  16619.        int_type __c = __sb->sgetc();
  16620.  
  16621.        while (_M_gcount + 1 < __n
  16622.        && !traits_type::eq_int_type(__c, __eof)
  16623.        && !traits_type::eq_int_type(__c, __idelim))
  16624.   {
  16625.     *__s++ = traits_type::to_char_type(__c);
  16626.     ++_M_gcount;
  16627.     __c = __sb->snextc();
  16628.   }
  16629.        if (traits_type::eq_int_type(__c, __eof))
  16630.   __err |= ios_base::eofbit;
  16631.      }
  16632.    catch(__cxxabiv1::__forced_unwind&)
  16633.      {
  16634.        this->_M_setstate(ios_base::badbit);
  16635.        throw;
  16636.      }
  16637.    catch(...)
  16638.      { this->_M_setstate(ios_base::badbit); }
  16639.  }
  16640.  
  16641.  
  16642.       if (__n > 0)
  16643.  *__s = char_type();
  16644.       if (!_M_gcount)
  16645.  __err |= ios_base::failbit;
  16646.       if (__err)
  16647.  this->setstate(__err);
  16648.       return *this;
  16649.     }
  16650.  
  16651.   template<typename _CharT, typename _Traits>
  16652.     basic_istream<_CharT, _Traits>&
  16653.     basic_istream<_CharT, _Traits>::
  16654.     get(__streambuf_type& __sb, char_type __delim)
  16655.     {
  16656.       _M_gcount = 0;
  16657.       ios_base::iostate __err = ios_base::goodbit;
  16658.       sentry __cerb(*this, true);
  16659.       if (__cerb)
  16660.  {
  16661.    try
  16662.      {
  16663.        const int_type __idelim = traits_type::to_int_type(__delim);
  16664.        const int_type __eof = traits_type::eof();
  16665.        __streambuf_type* __this_sb = this->rdbuf();
  16666.        int_type __c = __this_sb->sgetc();
  16667.        char_type __c2 = traits_type::to_char_type(__c);
  16668.  
  16669.        while (!traits_type::eq_int_type(__c, __eof)
  16670.        && !traits_type::eq_int_type(__c, __idelim)
  16671.        && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
  16672.   {
  16673.     ++_M_gcount;
  16674.     __c = __this_sb->snextc();
  16675.     __c2 = traits_type::to_char_type(__c);
  16676.   }
  16677.        if (traits_type::eq_int_type(__c, __eof))
  16678.   __err |= ios_base::eofbit;
  16679.      }
  16680.    catch(__cxxabiv1::__forced_unwind&)
  16681.      {
  16682.        this->_M_setstate(ios_base::badbit);
  16683.        throw;
  16684.      }
  16685.    catch(...)
  16686.      { this->_M_setstate(ios_base::badbit); }
  16687.  }
  16688.       if (!_M_gcount)
  16689.  __err |= ios_base::failbit;
  16690.       if (__err)
  16691.  this->setstate(__err);
  16692.       return *this;
  16693.     }
  16694.  
  16695.   template<typename _CharT, typename _Traits>
  16696.     basic_istream<_CharT, _Traits>&
  16697.     basic_istream<_CharT, _Traits>::
  16698.     getline(char_type* __s, streamsize __n, char_type __delim)
  16699.     {
  16700.       _M_gcount = 0;
  16701.       ios_base::iostate __err = ios_base::goodbit;
  16702.       sentry __cerb(*this, true);
  16703.       if (__cerb)
  16704.         {
  16705.           try
  16706.             {
  16707.               const int_type __idelim = traits_type::to_int_type(__delim);
  16708.               const int_type __eof = traits_type::eof();
  16709.               __streambuf_type* __sb = this->rdbuf();
  16710.               int_type __c = __sb->sgetc();
  16711.  
  16712.               while (_M_gcount + 1 < __n
  16713.                      && !traits_type::eq_int_type(__c, __eof)
  16714.                      && !traits_type::eq_int_type(__c, __idelim))
  16715.                 {
  16716.                   *__s++ = traits_type::to_char_type(__c);
  16717.                   __c = __sb->snextc();
  16718.                   ++_M_gcount;
  16719.                 }
  16720.               if (traits_type::eq_int_type(__c, __eof))
  16721.                 __err |= ios_base::eofbit;
  16722.               else
  16723.                 {
  16724.                   if (traits_type::eq_int_type(__c, __idelim))
  16725.                     {
  16726.                       __sb->sbumpc();
  16727.                       ++_M_gcount;
  16728.                     }
  16729.                   else
  16730.                     __err |= ios_base::failbit;
  16731.                 }
  16732.             }
  16733.    catch(__cxxabiv1::__forced_unwind&)
  16734.      {
  16735.        this->_M_setstate(ios_base::badbit);
  16736.        throw;
  16737.      }
  16738.           catch(...)
  16739.             { this->_M_setstate(ios_base::badbit); }
  16740.         }
  16741.  
  16742.  
  16743.       if (__n > 0)
  16744.  *__s = char_type();
  16745.       if (!_M_gcount)
  16746.         __err |= ios_base::failbit;
  16747.       if (__err)
  16748.         this->setstate(__err);
  16749.       return *this;
  16750.     }
  16751.  
  16752.  
  16753.  
  16754.  
  16755.   template<typename _CharT, typename _Traits>
  16756.     basic_istream<_CharT, _Traits>&
  16757.     basic_istream<_CharT, _Traits>::
  16758.     ignore(void)
  16759.     {
  16760.       _M_gcount = 0;
  16761.       sentry __cerb(*this, true);
  16762.       if (__cerb)
  16763.  {
  16764.    ios_base::iostate __err = ios_base::goodbit;
  16765.    try
  16766.      {
  16767.        const int_type __eof = traits_type::eof();
  16768.        __streambuf_type* __sb = this->rdbuf();
  16769.  
  16770.        if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
  16771.   __err |= ios_base::eofbit;
  16772.        else
  16773.   _M_gcount = 1;
  16774.      }
  16775.    catch(__cxxabiv1::__forced_unwind&)
  16776.      {
  16777.        this->_M_setstate(ios_base::badbit);
  16778.        throw;
  16779.      }
  16780.    catch(...)
  16781.      { this->_M_setstate(ios_base::badbit); }
  16782.    if (__err)
  16783.      this->setstate(__err);
  16784.  }
  16785.       return *this;
  16786.     }
  16787.  
  16788.   template<typename _CharT, typename _Traits>
  16789.     basic_istream<_CharT, _Traits>&
  16790.     basic_istream<_CharT, _Traits>::
  16791.     ignore(streamsize __n)
  16792.     {
  16793.       _M_gcount = 0;
  16794.       sentry __cerb(*this, true);
  16795.       if (__cerb && __n > 0)
  16796.         {
  16797.           ios_base::iostate __err = ios_base::goodbit;
  16798.           try
  16799.             {
  16800.               const int_type __eof = traits_type::eof();
  16801.               __streambuf_type* __sb = this->rdbuf();
  16802.               int_type __c = __sb->sgetc();
  16803. # 515 "/usr/include/c++/4.7/bits/istream.tcc" 3
  16804.        bool __large_ignore = false;
  16805.        while (true)
  16806.   {
  16807.     while (_M_gcount < __n
  16808.     && !traits_type::eq_int_type(__c, __eof))
  16809.       {
  16810.         ++_M_gcount;
  16811.         __c = __sb->snextc();
  16812.       }
  16813.     if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
  16814.         && !traits_type::eq_int_type(__c, __eof))
  16815.       {
  16816.         _M_gcount =
  16817.    __gnu_cxx::__numeric_traits<streamsize>::__min;
  16818.         __large_ignore = true;
  16819.       }
  16820.     else
  16821.       break;
  16822.   }
  16823.  
  16824.        if (__large_ignore)
  16825.   _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
  16826.  
  16827.        if (traits_type::eq_int_type(__c, __eof))
  16828.                 __err |= ios_base::eofbit;
  16829.             }
  16830.    catch(__cxxabiv1::__forced_unwind&)
  16831.      {
  16832.        this->_M_setstate(ios_base::badbit);
  16833.        throw;
  16834.      }
  16835.           catch(...)
  16836.             { this->_M_setstate(ios_base::badbit); }
  16837.           if (__err)
  16838.             this->setstate(__err);
  16839.         }
  16840.       return *this;
  16841.     }
  16842.  
  16843.   template<typename _CharT, typename _Traits>
  16844.     basic_istream<_CharT, _Traits>&
  16845.     basic_istream<_CharT, _Traits>::
  16846.     ignore(streamsize __n, int_type __delim)
  16847.     {
  16848.       _M_gcount = 0;
  16849.       sentry __cerb(*this, true);
  16850.       if (__cerb && __n > 0)
  16851.         {
  16852.           ios_base::iostate __err = ios_base::goodbit;
  16853.           try
  16854.             {
  16855.               const int_type __eof = traits_type::eof();
  16856.               __streambuf_type* __sb = this->rdbuf();
  16857.               int_type __c = __sb->sgetc();
  16858.  
  16859.  
  16860.        bool __large_ignore = false;
  16861.        while (true)
  16862.   {
  16863.     while (_M_gcount < __n
  16864.     && !traits_type::eq_int_type(__c, __eof)
  16865.     && !traits_type::eq_int_type(__c, __delim))
  16866.       {
  16867.         ++_M_gcount;
  16868.         __c = __sb->snextc();
  16869.       }
  16870.     if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
  16871.         && !traits_type::eq_int_type(__c, __eof)
  16872.         && !traits_type::eq_int_type(__c, __delim))
  16873.       {
  16874.         _M_gcount =
  16875.    __gnu_cxx::__numeric_traits<streamsize>::__min;
  16876.         __large_ignore = true;
  16877.       }
  16878.     else
  16879.       break;
  16880.   }
  16881.  
  16882.        if (__large_ignore)
  16883.   _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
  16884.  
  16885.               if (traits_type::eq_int_type(__c, __eof))
  16886.                 __err |= ios_base::eofbit;
  16887.        else if (traits_type::eq_int_type(__c, __delim))
  16888.   {
  16889.     if (_M_gcount
  16890.         < __gnu_cxx::__numeric_traits<streamsize>::__max)
  16891.       ++_M_gcount;
  16892.     __sb->sbumpc();
  16893.   }
  16894.             }
  16895.    catch(__cxxabiv1::__forced_unwind&)
  16896.      {
  16897.        this->_M_setstate(ios_base::badbit);
  16898.        throw;
  16899.      }
  16900.           catch(...)
  16901.             { this->_M_setstate(ios_base::badbit); }
  16902.           if (__err)
  16903.             this->setstate(__err);
  16904.         }
  16905.       return *this;
  16906.     }
  16907.  
  16908.   template<typename _CharT, typename _Traits>
  16909.     typename basic_istream<_CharT, _Traits>::int_type
  16910.     basic_istream<_CharT, _Traits>::
  16911.     peek(void)
  16912.     {
  16913.       int_type __c = traits_type::eof();
  16914.       _M_gcount = 0;
  16915.       sentry __cerb(*this, true);
  16916.       if (__cerb)
  16917.  {
  16918.    ios_base::iostate __err = ios_base::goodbit;
  16919.    try
  16920.      {
  16921.        __c = this->rdbuf()->sgetc();
  16922.        if (traits_type::eq_int_type(__c, traits_type::eof()))
  16923.   __err |= ios_base::eofbit;
  16924.      }
  16925.    catch(__cxxabiv1::__forced_unwind&)
  16926.      {
  16927.        this->_M_setstate(ios_base::badbit);
  16928.        throw;
  16929.      }
  16930.    catch(...)
  16931.      { this->_M_setstate(ios_base::badbit); }
  16932.    if (__err)
  16933.      this->setstate(__err);
  16934.  }
  16935.       return __c;
  16936.     }
  16937.  
  16938.   template<typename _CharT, typename _Traits>
  16939.     basic_istream<_CharT, _Traits>&
  16940.     basic_istream<_CharT, _Traits>::
  16941.     read(char_type* __s, streamsize __n)
  16942.     {
  16943.       _M_gcount = 0;
  16944.       sentry __cerb(*this, true);
  16945.       if (__cerb)
  16946.  {
  16947.    ios_base::iostate __err = ios_base::goodbit;
  16948.    try
  16949.      {
  16950.        _M_gcount = this->rdbuf()->sgetn(__s, __n);
  16951.        if (_M_gcount != __n)
  16952.   __err |= (ios_base::eofbit | ios_base::failbit);
  16953.      }
  16954.    catch(__cxxabiv1::__forced_unwind&)
  16955.      {
  16956.        this->_M_setstate(ios_base::badbit);
  16957.        throw;
  16958.      }
  16959.    catch(...)
  16960.      { this->_M_setstate(ios_base::badbit); }
  16961.    if (__err)
  16962.      this->setstate(__err);
  16963.  }
  16964.       return *this;
  16965.     }
  16966.  
  16967.   template<typename _CharT, typename _Traits>
  16968.     streamsize
  16969.     basic_istream<_CharT, _Traits>::
  16970.     readsome(char_type* __s, streamsize __n)
  16971.     {
  16972.       _M_gcount = 0;
  16973.       sentry __cerb(*this, true);
  16974.       if (__cerb)
  16975.  {
  16976.    ios_base::iostate __err = ios_base::goodbit;
  16977.    try
  16978.      {
  16979.  
  16980.        const streamsize __num = this->rdbuf()->in_avail();
  16981.        if (__num > 0)
  16982.   _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
  16983.        else if (__num == -1)
  16984.   __err |= ios_base::eofbit;
  16985.      }
  16986.    catch(__cxxabiv1::__forced_unwind&)
  16987.      {
  16988.        this->_M_setstate(ios_base::badbit);
  16989.        throw;
  16990.      }
  16991.    catch(...)
  16992.      { this->_M_setstate(ios_base::badbit); }
  16993.    if (__err)
  16994.      this->setstate(__err);
  16995.  }
  16996.       return _M_gcount;
  16997.     }
  16998.  
  16999.   template<typename _CharT, typename _Traits>
  17000.     basic_istream<_CharT, _Traits>&
  17001.     basic_istream<_CharT, _Traits>::
  17002.     putback(char_type __c)
  17003.     {
  17004.  
  17005.  
  17006.       _M_gcount = 0;
  17007.  
  17008.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17009.       sentry __cerb(*this, true);
  17010.       if (__cerb)
  17011.  {
  17012.    ios_base::iostate __err = ios_base::goodbit;
  17013.    try
  17014.      {
  17015.        const int_type __eof = traits_type::eof();
  17016.        __streambuf_type* __sb = this->rdbuf();
  17017.        if (!__sb
  17018.     || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
  17019.   __err |= ios_base::badbit;
  17020.      }
  17021.    catch(__cxxabiv1::__forced_unwind&)
  17022.      {
  17023.        this->_M_setstate(ios_base::badbit);
  17024.        throw;
  17025.      }
  17026.    catch(...)
  17027.      { this->_M_setstate(ios_base::badbit); }
  17028.    if (__err)
  17029.      this->setstate(__err);
  17030.  }
  17031.       return *this;
  17032.     }
  17033.  
  17034.   template<typename _CharT, typename _Traits>
  17035.     basic_istream<_CharT, _Traits>&
  17036.     basic_istream<_CharT, _Traits>::
  17037.     unget(void)
  17038.     {
  17039.  
  17040.  
  17041.       _M_gcount = 0;
  17042.  
  17043.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17044.       sentry __cerb(*this, true);
  17045.       if (__cerb)
  17046.  {
  17047.    ios_base::iostate __err = ios_base::goodbit;
  17048.    try
  17049.      {
  17050.        const int_type __eof = traits_type::eof();
  17051.        __streambuf_type* __sb = this->rdbuf();
  17052.        if (!__sb
  17053.     || traits_type::eq_int_type(__sb->sungetc(), __eof))
  17054.   __err |= ios_base::badbit;
  17055.      }
  17056.    catch(__cxxabiv1::__forced_unwind&)
  17057.      {
  17058.        this->_M_setstate(ios_base::badbit);
  17059.        throw;
  17060.      }
  17061.    catch(...)
  17062.      { this->_M_setstate(ios_base::badbit); }
  17063.    if (__err)
  17064.      this->setstate(__err);
  17065.  }
  17066.       return *this;
  17067.     }
  17068.  
  17069.   template<typename _CharT, typename _Traits>
  17070.     int
  17071.     basic_istream<_CharT, _Traits>::
  17072.     sync(void)
  17073.     {
  17074.  
  17075.  
  17076.       int __ret = -1;
  17077.       sentry __cerb(*this, true);
  17078.       if (__cerb)
  17079.  {
  17080.    ios_base::iostate __err = ios_base::goodbit;
  17081.    try
  17082.      {
  17083.        __streambuf_type* __sb = this->rdbuf();
  17084.        if (__sb)
  17085.   {
  17086.     if (__sb->pubsync() == -1)
  17087.       __err |= ios_base::badbit;
  17088.     else
  17089.       __ret = 0;
  17090.   }
  17091.      }
  17092.    catch(__cxxabiv1::__forced_unwind&)
  17093.      {
  17094.        this->_M_setstate(ios_base::badbit);
  17095.        throw;
  17096.      }
  17097.    catch(...)
  17098.      { this->_M_setstate(ios_base::badbit); }
  17099.    if (__err)
  17100.      this->setstate(__err);
  17101.  }
  17102.       return __ret;
  17103.     }
  17104.  
  17105.   template<typename _CharT, typename _Traits>
  17106.     typename basic_istream<_CharT, _Traits>::pos_type
  17107.     basic_istream<_CharT, _Traits>::
  17108.     tellg(void)
  17109.     {
  17110.  
  17111.  
  17112.       pos_type __ret = pos_type(-1);
  17113.       sentry __cerb(*this, true);
  17114.       if (__cerb)
  17115.  {
  17116.    try
  17117.      {
  17118.        if (!this->fail())
  17119.   __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
  17120.         ios_base::in);
  17121.      }
  17122.    catch(__cxxabiv1::__forced_unwind&)
  17123.      {
  17124.        this->_M_setstate(ios_base::badbit);
  17125.        throw;
  17126.      }
  17127.    catch(...)
  17128.      { this->_M_setstate(ios_base::badbit); }
  17129.  }
  17130.       return __ret;
  17131.     }
  17132.  
  17133.   template<typename _CharT, typename _Traits>
  17134.     basic_istream<_CharT, _Traits>&
  17135.     basic_istream<_CharT, _Traits>::
  17136.     seekg(pos_type __pos)
  17137.     {
  17138.  
  17139.  
  17140.  
  17141.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17142.       sentry __cerb(*this, true);
  17143.       if (__cerb)
  17144.  {
  17145.    ios_base::iostate __err = ios_base::goodbit;
  17146.    try
  17147.      {
  17148.        if (!this->fail())
  17149.   {
  17150.  
  17151.     const pos_type __p = this->rdbuf()->pubseekpos(__pos,
  17152.          ios_base::in);
  17153.  
  17154.  
  17155.     if (__p == pos_type(off_type(-1)))
  17156.       __err |= ios_base::failbit;
  17157.   }
  17158.      }
  17159.    catch(__cxxabiv1::__forced_unwind&)
  17160.      {
  17161.        this->_M_setstate(ios_base::badbit);
  17162.        throw;
  17163.      }
  17164.    catch(...)
  17165.      { this->_M_setstate(ios_base::badbit); }
  17166.    if (__err)
  17167.      this->setstate(__err);
  17168.  }
  17169.       return *this;
  17170.     }
  17171.  
  17172.   template<typename _CharT, typename _Traits>
  17173.     basic_istream<_CharT, _Traits>&
  17174.     basic_istream<_CharT, _Traits>::
  17175.     seekg(off_type __off, ios_base::seekdir __dir)
  17176.     {
  17177.  
  17178.  
  17179.  
  17180.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17181.       sentry __cerb(*this, true);
  17182.       if (__cerb)
  17183.  {
  17184.    ios_base::iostate __err = ios_base::goodbit;
  17185.    try
  17186.      {
  17187.        if (!this->fail())
  17188.   {
  17189.  
  17190.     const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
  17191.          ios_base::in);
  17192.  
  17193.  
  17194.     if (__p == pos_type(off_type(-1)))
  17195.       __err |= ios_base::failbit;
  17196.   }
  17197.      }
  17198.    catch(__cxxabiv1::__forced_unwind&)
  17199.      {
  17200.        this->_M_setstate(ios_base::badbit);
  17201.        throw;
  17202.      }
  17203.    catch(...)
  17204.      { this->_M_setstate(ios_base::badbit); }
  17205.    if (__err)
  17206.      this->setstate(__err);
  17207.  }
  17208.       return *this;
  17209.     }
  17210.  
  17211.  
  17212.   template<typename _CharT, typename _Traits>
  17213.     basic_istream<_CharT, _Traits>&
  17214.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
  17215.     {
  17216.       typedef basic_istream<_CharT, _Traits> __istream_type;
  17217.       typedef typename __istream_type::int_type __int_type;
  17218.  
  17219.       typename __istream_type::sentry __cerb(__in, false);
  17220.       if (__cerb)
  17221.  {
  17222.    ios_base::iostate __err = ios_base::goodbit;
  17223.    try
  17224.      {
  17225.        const __int_type __cb = __in.rdbuf()->sbumpc();
  17226.        if (!_Traits::eq_int_type(__cb, _Traits::eof()))
  17227.   __c = _Traits::to_char_type(__cb);
  17228.        else
  17229.   __err |= (ios_base::eofbit | ios_base::failbit);
  17230.      }
  17231.    catch(__cxxabiv1::__forced_unwind&)
  17232.      {
  17233.        __in._M_setstate(ios_base::badbit);
  17234.        throw;
  17235.      }
  17236.    catch(...)
  17237.      { __in._M_setstate(ios_base::badbit); }
  17238.    if (__err)
  17239.      __in.setstate(__err);
  17240.  }
  17241.       return __in;
  17242.     }
  17243.  
  17244.   template<typename _CharT, typename _Traits>
  17245.     basic_istream<_CharT, _Traits>&
  17246.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
  17247.     {
  17248.       typedef basic_istream<_CharT, _Traits> __istream_type;
  17249.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  17250.       typedef typename _Traits::int_type int_type;
  17251.       typedef _CharT char_type;
  17252.       typedef ctype<_CharT> __ctype_type;
  17253.  
  17254.       streamsize __extracted = 0;
  17255.       ios_base::iostate __err = ios_base::goodbit;
  17256.       typename __istream_type::sentry __cerb(__in, false);
  17257.       if (__cerb)
  17258.  {
  17259.    try
  17260.      {
  17261.  
  17262.        streamsize __num = __in.width();
  17263.        if (__num <= 0)
  17264.   __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
  17265.  
  17266.        const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
  17267.  
  17268.        const int_type __eof = _Traits::eof();
  17269.        __streambuf_type* __sb = __in.rdbuf();
  17270.        int_type __c = __sb->sgetc();
  17271.  
  17272.        while (__extracted < __num - 1
  17273.        && !_Traits::eq_int_type(__c, __eof)
  17274.        && !__ct.is(ctype_base::space,
  17275.      _Traits::to_char_type(__c)))
  17276.   {
  17277.     *__s++ = _Traits::to_char_type(__c);
  17278.     ++__extracted;
  17279.     __c = __sb->snextc();
  17280.   }
  17281.        if (_Traits::eq_int_type(__c, __eof))
  17282.   __err |= ios_base::eofbit;
  17283.  
  17284.  
  17285.  
  17286.        *__s = char_type();
  17287.        __in.width(0);
  17288.      }
  17289.    catch(__cxxabiv1::__forced_unwind&)
  17290.      {
  17291.        __in._M_setstate(ios_base::badbit);
  17292.        throw;
  17293.      }
  17294.    catch(...)
  17295.      { __in._M_setstate(ios_base::badbit); }
  17296.  }
  17297.       if (!__extracted)
  17298.  __err |= ios_base::failbit;
  17299.       if (__err)
  17300.  __in.setstate(__err);
  17301.       return __in;
  17302.     }
  17303.  
  17304.  
  17305.   template<typename _CharT, typename _Traits>
  17306.     basic_istream<_CharT, _Traits>&
  17307.     ws(basic_istream<_CharT, _Traits>& __in)
  17308.     {
  17309.       typedef basic_istream<_CharT, _Traits> __istream_type;
  17310.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  17311.       typedef typename __istream_type::int_type __int_type;
  17312.       typedef ctype<_CharT> __ctype_type;
  17313.  
  17314.       const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
  17315.       const __int_type __eof = _Traits::eof();
  17316.       __streambuf_type* __sb = __in.rdbuf();
  17317.       __int_type __c = __sb->sgetc();
  17318.  
  17319.       while (!_Traits::eq_int_type(__c, __eof)
  17320.       && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
  17321.  __c = __sb->snextc();
  17322.  
  17323.        if (_Traits::eq_int_type(__c, __eof))
  17324.   __in.setstate(ios_base::eofbit);
  17325.       return __in;
  17326.     }
  17327.  
  17328.  
  17329.  
  17330.  
  17331.   extern template class basic_istream<char>;
  17332.   extern template istream& ws(istream&);
  17333.   extern template istream& operator>>(istream&, char&);
  17334.   extern template istream& operator>>(istream&, char*);
  17335.   extern template istream& operator>>(istream&, unsigned char&);
  17336.   extern template istream& operator>>(istream&, signed char&);
  17337.   extern template istream& operator>>(istream&, unsigned char*);
  17338.   extern template istream& operator>>(istream&, signed char*);
  17339.  
  17340.   extern template istream& istream::_M_extract(unsigned short&);
  17341.   extern template istream& istream::_M_extract(unsigned int&);
  17342.   extern template istream& istream::_M_extract(long&);
  17343.   extern template istream& istream::_M_extract(unsigned long&);
  17344.   extern template istream& istream::_M_extract(bool&);
  17345.  
  17346.   extern template istream& istream::_M_extract(long long&);
  17347.   extern template istream& istream::_M_extract(unsigned long long&);
  17348.  
  17349.   extern template istream& istream::_M_extract(float&);
  17350.   extern template istream& istream::_M_extract(double&);
  17351.   extern template istream& istream::_M_extract(long double&);
  17352.   extern template istream& istream::_M_extract(void*&);
  17353.  
  17354.   extern template class basic_iostream<char>;
  17355.  
  17356.  
  17357.   extern template class basic_istream<wchar_t>;
  17358.   extern template wistream& ws(wistream&);
  17359.   extern template wistream& operator>>(wistream&, wchar_t&);
  17360.   extern template wistream& operator>>(wistream&, wchar_t*);
  17361.  
  17362.   extern template wistream& wistream::_M_extract(unsigned short&);
  17363.   extern template wistream& wistream::_M_extract(unsigned int&);
  17364.   extern template wistream& wistream::_M_extract(long&);
  17365.   extern template wistream& wistream::_M_extract(unsigned long&);
  17366.   extern template wistream& wistream::_M_extract(bool&);
  17367.  
  17368.   extern template wistream& wistream::_M_extract(long long&);
  17369.   extern template wistream& wistream::_M_extract(unsigned long long&);
  17370.  
  17371.   extern template wistream& wistream::_M_extract(float&);
  17372.   extern template wistream& wistream::_M_extract(double&);
  17373.   extern template wistream& wistream::_M_extract(long double&);
  17374.   extern template wistream& wistream::_M_extract(void*&);
  17375.  
  17376.   extern template class basic_iostream<wchar_t>;
  17377.  
  17378.  
  17379.  
  17380.  
  17381. }
  17382. # 874 "/usr/include/c++/4.7/istream" 2 3
  17383. # 42 "/usr/include/c++/4.7/iostream" 2 3
  17384.  
  17385. namespace std __attribute__ ((__visibility__ ("default")))
  17386. {
  17387.  
  17388. # 61 "/usr/include/c++/4.7/iostream" 3
  17389.   extern istream cin;
  17390.   extern ostream cout;
  17391.   extern ostream cerr;
  17392.   extern ostream clog;
  17393.  
  17394.  
  17395.   extern wistream wcin;
  17396.   extern wostream wcout;
  17397.   extern wostream wcerr;
  17398.   extern wostream wclog;
  17399.  
  17400.  
  17401.  
  17402.  
  17403.   static ios_base::Init __ioinit;
  17404.  
  17405.  
  17406. }
  17407. # 2 "./test.cpp" 2
  17408.  
  17409. int main(int argc, char** argv) {
  17410.   std::cout << "lol";
  17411. }