This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c_std/ and throw()


Hi!

The c_std/ headers throw away the carefully maintained throw()
lists glibc maintains in its installed headers for functions which cannot
throw.
IMHO this is bad and results in worse code generation.
What do you think about following approach (just a RFC, not complete patch)?
libstdc++-v3 configure would check if glibc headers use throw() for
functions libstdc++-v3 expects (IMHO doing it on a per-function basis would
be overkill, so I think it is better to check always some category of
functions and if all have throw() specified, define some _GLIBCPP_*THROW
macro accordingly).
The attached patch uses 3 different categories, most functions, math
functions (e.g. glibc 2.1.x don't use throw() for them) and for wide
character functions (even glibc 2.2.2 doesn't declare them all with
throw()).
For testing, attached are 3 programs which if they give no errors/warnings
mean the corresponding _GLIBCPP_*_THROW should be defined to throw(),
otherwise to nothing. Some functions cannot be easily tested without
detailed libc knowledge (to test if glibc has throw() one must write
prototype with throw() before including the glibc header), but it is assumed
if the other similar functions which are tested are having throw() that they
do as well.
I wonder whether the tests should be put with cat <<EOF into acinclude.m4 or
whether they should be put into separate files and acinclude.m4 macros would
just compile them.

Also, I haven't seen __attribute__ used in libstdc++-v3 headers but
libsupc++, is it allowable to use them there? If yes, some functions could
be marked with __attribute__((pure)) or __attribute__((noreturn)).

	Jakub
--- libstdc++-v3/include/c_std/bits/std_cctype.h.jj	Wed Feb 14 01:40:34 2001
+++ libstdc++-v3/include/c_std/bits/std_cctype.h	Wed Apr 11 15:06:30 2001
@@ -59,20 +59,20 @@
 
 namespace std
 {
-  extern "C" int isalnum(int __c);
-  extern "C" int isalpha(int __c);
-  extern "C" int isblank(int __c);
-  extern "C" int iscntrl(int __c);
-  extern "C" int isdigit(int __c);
-  extern "C" int isgraph(int __c);
-  extern "C" int islower(int __c);
-  extern "C" int isprint(int __c);
-  extern "C" int ispunct(int __c);
-  extern "C" int isspace(int __c);
-  extern "C" int isupper(int __c);
-  extern "C" int isxdigit(int __c);
-  extern "C" int tolower(int __c);
-  extern "C" int toupper(int __c);
+  extern "C" int isalnum(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isalpha(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isblank(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int iscntrl(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isdigit(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isgraph(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int islower(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isprint(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int ispunct(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isspace(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isupper(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int isxdigit(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int tolower(int __c) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int toupper(int __c) _GLIBCPP_LIBC_NOTHROW;
 }
 
 #endif 
--- libstdc++-v3/include/c_std/bits/std_clocale.h.jj	Wed Feb 14 01:40:34 2001
+++ libstdc++-v3/include/c_std/bits/std_clocale.h	Wed Apr 11 15:14:51 2001
@@ -48,11 +48,8 @@
 namespace std
 {
   using ::lconv;
-  extern "C" char* setlocale(int, const char*); 
-  extern "C" struct lconv* localeconv(void);
+  extern "C" char* setlocale(int, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" struct lconv* localeconv(void) _GLIBCPP_LIBC_NOTHROW;
 }
 
 #endif
-
-
-
--- libstdc++-v3/include/c_std/bits/std_csetjmp.h.jj	Wed Feb 14 01:40:34 2001
+++ libstdc++-v3/include/c_std/bits/std_csetjmp.h	Wed Apr 11 15:09:55 2001
@@ -45,7 +45,8 @@
 namespace std
 {
   using ::jmp_buf;
-  extern "C" void longjmp(jmp_buf, int);
+  extern "C" void longjmp(jmp_buf, int)
+    _GLIBCPP_LIBC_NOTHROW __attribute__((noreturn));
 }
 
 #endif
--- libstdc++-v3/include/c_std/bits/std_csignal.h.jj	Wed Feb 14 01:40:34 2001
+++ libstdc++-v3/include/c_std/bits/std_csignal.h	Wed Apr 11 15:14:36 2001
@@ -45,8 +45,8 @@
 namespace std
 {
   using ::sig_atomic_t;
-  extern "C" void (*signal(int, void (*__func)(int)))(int); 
-  extern "C" int raise(int);
+  extern "C" void (*signal(int, void (*__func)(int)))(int);
+  extern "C" int raise(int) _GLIBCPP_LIBC_NOTHROW;
 }
 
 #endif
--- libstdc++-v3/include/c_std/bits/std_cstdio.h.jj	Wed Feb 14 01:40:34 2001
+++ libstdc++-v3/include/c_std/bits/std_cstdio.h	Wed Apr 11 15:14:23 2001
@@ -96,60 +96,57 @@ namespace std 
   using ::FILE;
   using ::fpos_t;
 
-  extern "C" int remove(const char*); 
-  extern "C" int rename(const char*, const char*); 
-  extern "C" FILE* tmpfile(void); 
-  extern "C" char* tmpnam(char*); 
-  extern "C" int fclose(FILE*); 
-  extern "C" int fflush(FILE*); 
-  extern "C" FILE* fopen(const char*, const char*); 
-  extern "C" FILE* freopen(const char*, const char*, FILE*); 
-  extern "C" void setbuf(FILE*, char*);
-  extern "C" int setvbuf(FILE*, char*, int, size_t); 
-  extern "C" int fprintf(FILE*, const char*, ...); 
-  extern "C" int fscanf(FILE*, const char*, ...); 
-  extern "C" int printf(const char*, ...); 
-  extern "C" int scanf(const char*, ...); 
-  extern "C" int snprintf(char *, size_t, const char*, ...);
-  extern "C" int sprintf(char *, const char*, ...); 
-  extern "C" int sscanf(const char*, const char*, ...); 
-  extern "C" int vfprintf(FILE*, const char*, va_list); 
-  extern "C" int vfscanf(FILE*, const char*, va_list); 
-  extern "C" int vprintf(const char*, va_list); 
-  extern "C" int vscanf(const char*, va_list); 
-  extern "C" int vsnprintf(char*, size_t, const char*, va_list); 
-  extern "C" int vsprintf(char*, const char*, va_list); 
-  extern "C" int vsscanf(const char*, const char*, va_list); 
-  extern "C" int fgetc(FILE *); 
-  extern "C" char *fgets(char*, int, FILE*); 
-  extern "C" int fputc(int, FILE*); 
-  extern "C" int fputs(const char*, FILE*); 
-  extern "C" int getc(FILE*); 
-  extern "C" int getchar(void); 
-  extern "C" char *gets(char*); 
-  extern "C" int putc(int, FILE*); 
-  extern "C" int putchar(int); 
-  extern "C" int puts(const char*); 
-  extern "C" int ungetc(int, FILE*);
-  extern "C" size_t fread(void*, size_t, size_t, FILE*); 
-  extern "C" size_t fwrite(const void*, size_t, size_t, FILE*); 
-  extern "C" int fgetpos(FILE*, fpos_t*); 
-  extern "C" int fseek(FILE*, long int, int); 
-  extern "C" int fsetpos(FILE*, const fpos_t*); 
-  extern "C" long int ftell(FILE*); 
-  extern "C" void rewind(FILE*); 
-  extern "C" void clearerr(FILE*); 
-  extern "C" int feof(FILE*); 
-  extern "C" int ferror(FILE*); 
-  extern "C" void perror(const char*);
+  extern "C" int remove(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int rename(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" FILE* tmpfile(void) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* tmpnam(char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fclose(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fflush(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" FILE* fopen(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" FILE* freopen(const char*, const char*, FILE*)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void setbuf(FILE*, char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int setvbuf(FILE*, char*, int, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fprintf(FILE*, const char*, ...) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fscanf(FILE*, const char*, ...) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int printf(const char*, ...) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int scanf(const char*, ...) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int snprintf(char *, size_t, const char*, ...)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int sprintf(char *, const char*, ...) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int sscanf(const char*, const char*, ...) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vfprintf(FILE*, const char*, va_list) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vfscanf(FILE*, const char*, va_list) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vprintf(const char*, va_list) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vscanf(const char*, va_list) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vsnprintf(char*, size_t, const char*, va_list)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vsprintf(char*, const char*, va_list) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int vsscanf(const char*, const char*, va_list)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fgetc(FILE *) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char *fgets(char*, int, FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fputc(int, FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fputs(const char*, FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int getc(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int getchar(void) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char *gets(char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int putc(int, FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int putchar(int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int puts(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int ungetc(int, FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t fread(void*, size_t, size_t, FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t fwrite(const void*, size_t, size_t, FILE*)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fgetpos(FILE*, fpos_t*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fseek(FILE*, long int, int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int fsetpos(FILE*, const fpos_t*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" long int ftell(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void rewind(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void clearerr(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int feof(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int ferror(FILE*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void perror(const char*) _GLIBCPP_LIBC_NOTHROW;
 }
 
 #endif
-
-
-
-
-
-
-
-
--- libstdc++-v3/include/c_std/bits/std_cstdlib.h.jj	Mon Mar 12 11:46:09 2001
+++ libstdc++-v3/include/c_std/bits/std_cstdlib.h	Wed Apr 11 15:19:59 2001
@@ -97,75 +97,73 @@ namespace std 
 # endif
 #endif 
 
-  extern "C" double atof(const char*); 
-  extern "C" int atoi(const char*); 
-  extern "C" long int atol(const char*); 
-  extern "C" double strtod(const char*, char**); 
-  extern "C" float strtof(const char*, char**); 
-  extern "C" long int strtol(const char*, char**, int); 
-  extern "C" unsigned long int strtoul(const char*, char**, int);
-  extern "C" int rand(void); 
-  extern "C" void srand(unsigned int); 
-  extern "C" void* calloc(size_t, size_t); 
-  extern "C" void free(void*); 
-  extern "C" void* malloc(size_t); 
-  extern "C" void* realloc(void*, size_t); 
-  extern "C" void abort(void); 
-  extern "C" int atexit(void (*func)(void)); 
-  extern "C" void exit(int); 
-  extern "C" void _Exit(int); 
-  extern "C" char*getenv(const char*); 
-  extern "C" int system(const char*); 
+  extern "C" double atof(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int atoi(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" long int atol(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" double strtod(const char*, char**) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" float strtof(const char*, char**) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" long int strtol(const char*, char**, int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" unsigned long int strtoul(const char*, char**, int)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int rand(void) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void srand(unsigned int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void* calloc(size_t, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void free(void*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void* malloc(size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void* realloc(void*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void abort(void);
+  extern "C" int atexit(void (*func)(void)) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void exit(int) _GLIBCPP_LIBC_NOTHROW __attribute__ ((noreturn));
+  extern "C" void _Exit(int) _GLIBCPP_LIBC_NOTHROW __attribute__ ((noreturn));
+  extern "C" char*getenv(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int system(const char*) _GLIBCPP_LIBC_NOTHROW;
   extern "C" void* bsearch(const void*, const void*, size_t, size_t, 
 			   int (*comp)(const void *, const void *)); 
   extern "C" void qsort(void*, size_t, size_t, 
 			int (*comp)(const void *, const void *)); 
-  extern "C" int abs(int); 
-  extern "C" long int labs(long int); 
-  extern "C" div_t div(int, int); 
-  extern "C" ldiv_t ldiv(long int, long int); 
-  extern "C" int mblen(const char*, size_t); 
-  extern "C" int mbtowc(wchar_t*, const char*, size_t); 
-  extern "C" int wctomb(char*, wchar_t); 
-  extern "C" size_t mbstowcs(wchar_t*, const char*, size_t); 
-  extern "C" size_t wcstombs(char*, const wchar_t*, size_t);
+  extern "C" int abs(int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" long int labs(long int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" div_t div(int, int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" ldiv_t ldiv(long int, long int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int mblen(const char*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int mbtowc(wchar_t*, const char*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int wctomb(char*, wchar_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t mbstowcs(wchar_t*, const char*, size_t)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t wcstombs(char*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_NOTHROW;
 
   inline long 
-  abs(long __i) { return ::labs(__i); }
+  abs(long __i) _GLIBCPP_LIBC_NOTHROW { return ::labs(__i); }
 
   inline ldiv_t
-  div(long __i, long __j) { return ::ldiv(__i, __j); }
+  div(long __i, long __j) _GLIBCPP_LIBC_NOTHROW { return ::ldiv(__i, __j); }
 
 #ifdef _GLIBCPP_USE_LONG_LONG
   inline long long 
-  abs(long long __x) { return __x >= 0 ? __x : -__x; }
+  abs(long long __x) _GLIBCPP_LIBC_NOTHROW { return __x >= 0 ? __x : -__x; }
 
   inline long long 
-  llabs(long long __x) { return __x >= 0 ? __x : -__x; }
+  llabs(long long __x) _GLIBCPP_LIBC_NOTHROW { return __x >= 0 ? __x : -__x; }
 
   inline lldiv_t 
-  div(long long __n, long long __d)
+  div(long long __n, long long __d) _GLIBCPP_LIBC_NOTHROW
   { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
 
   inline lldiv_t 
-  lldiv(long long __n, long long __d)
+  lldiv(long long __n, long long __d) _GLIBCPP_LIBC_NOTHROW
   { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
 
-  extern "C" long long int atoll(const char*); 
-  extern "C" long long int strtoll(const char*, char**, int); 
-  extern "C" unsigned long long int strtoull(const char*, char**, int); 
+  extern "C" long long int atoll(const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" long long int strtoll(const char*, char**, int)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" unsigned long long int strtoull(const char*, char**, int)
+    _GLIBCPP_LIBC_NOTHROW;
 #endif
 
 #ifdef _GLIBCPP_HAVE_STRTOLD
-  extern "C" long double strtold(const char*, char**); 
+  extern "C" long double strtold(const char*, char**) _GLIBCPP_LIBC_NOTHROW;
 #endif
 }
 
 #endif 
-
-
-
-
-
-
-
--- libstdc++-v3/include/c_std/bits/std_cstring.h.jj	Tue Apr  3 11:32:48 2001
+++ libstdc++-v3/include/c_std/bits/std_cstring.h	Wed Apr 11 15:21:51 2001
@@ -68,56 +68,57 @@
 
 namespace std 
 {
-  extern "C" void* memcpy(void*, const void*, size_t); 
-  extern "C" void* memmove(void*, const void*, size_t); 
-  extern "C" char* strcpy(char*, const char*); 
-  extern "C" char* strncpy(char*, const char*, size_t); 
-  extern "C" char* strcat(char*, const char*); 
-  extern "C" char* strncat(char*, const char*, size_t); 
-  extern "C" int memcmp(const void*, const void*, size_t); 
-  extern "C" int strcmp(const char*, const char*); 
-  extern "C" int strcoll(const char*, const char*); 
-  extern "C" int strncmp(const char*, const char*, size_t); 
-  extern "C" size_t strxfrm(char*, const char*, size_t); 
-  extern "C" const void* memchr(const void*, int, size_t); 
+  extern "C" void* memcpy(void*, const void*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void* memmove(void*, const void*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* strcpy(char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* strncpy(char*, const char*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* strcat(char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* strncat(char*, const char*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int memcmp(const void*, const void*, size_t)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int strcmp(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int strcoll(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" int strncmp(const char*, const char*, size_t)
+    _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t strxfrm(char*, const char*, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" const void* memchr(const void*, int, size_t)
+    _GLIBCPP_LIBC_NOTHROW;
   inline void*
-  memchr(void* __p, int __c, size_t __n)
+  memchr(void* __p, int __c, size_t __n) _GLIBCPP_LIBC_NOTHROW
   {
     return const_cast<void*>(memchr(const_cast<const void*>(__p), __c, __n));
   }
-  extern "C" const char* strchr(const char*, int); 
+  extern "C" const char* strchr(const char*, int) _GLIBCPP_LIBC_NOTHROW;
   inline char*
-  strchr(char* __s1, int __n)
+  strchr(char* __s1, int __n) _GLIBCPP_LIBC_NOTHROW
   {
     return const_cast<char*>(strchr(const_cast<const char*>(__s1), __n));
   }
-  extern "C" size_t strcspn(const char*, const char*); 
-  extern "C" const char* strpbrk(const char*, const char*); 
+  extern "C" size_t strcspn(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" const char* strpbrk(const char*, const char*)
+    _GLIBCPP_LIBC_NOTHROW;
   inline char*
-  strpbrk(char* __s1, const char* __s2)
+  strpbrk(char* __s1, const char* __s2) _GLIBCPP_LIBC_NOTHROW
   {
     return const_cast<char*>(strpbrk(const_cast<const char*>(__s1), __s2));
   }
-  extern "C" const char* strrchr(const char*, int); 
+  extern "C" const char* strrchr(const char*, int) _GLIBCPP_LIBC_NOTHROW;
   inline char*
-  strrchr(char* __s1, int __n)
+  strrchr(char* __s1, int __n) _GLIBCPP_LIBC_NOTHROW
   {
     return const_cast<char*>(strrchr(const_cast<const char*>(__s1), __n));
   }
-  extern "C" size_t strspn(const char*, const char*); 
-  extern "C" const char* strstr(const char*, const char*); 
+  extern "C" size_t strspn(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" const char* strstr(const char*, const char*) _GLIBCPP_LIBC_NOTHROW;
   inline char*
-  strstr(char* __s1, const char* __s2)
+  strstr(char* __s1, const char* __s2) _GLIBCPP_LIBC_NOTHROW
   {
     return const_cast<char*>(strstr(const_cast<const char*>(__s1), __s2));
   }
-  extern "C" char* strtok(char*, const char*); 
-  extern "C" void* memset(void*, int, size_t); 
-  extern "C" char* strerror(int); 
-  extern "C" size_t strlen(const char*);
+  extern "C" char* strtok(char*, const char*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" void* memset(void*, int, size_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* strerror(int) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t strlen(const char*) _GLIBCPP_LIBC_NOTHROW;
 }
 
 #endif
-
-
-
--- libstdc++-v3/include/c_std/bits/std_ctime.h.jj	Wed Feb 14 01:40:34 2001
+++ libstdc++-v3/include/c_std/bits/std_ctime.h	Wed Apr 11 15:22:39 2001
@@ -59,15 +59,16 @@ namespace std
   using ::time_t;
   using ::tm;
 
-  extern "C" clock_t clock(void); 
-  extern "C" double difftime(time_t, time_t); 
-  extern "C" time_t mktime(struct tm*); 
-  extern "C" time_t time(time_t*); 
-  extern "C" char* asctime(const struct tm*); 
-  extern "C" char* ctime(const time_t*); 
-  extern "C" struct tm* gmtime(const time_t*); 
-  extern "C" struct tm* localtime(const time_t*); 
-  extern "C" size_t strftime(char*, size_t, const char*, const struct tm*);
+  extern "C" clock_t clock(void) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" double difftime(time_t, time_t) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" time_t mktime(struct tm*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" time_t time(time_t*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* asctime(const struct tm*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" char* ctime(const time_t*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" struct tm* gmtime(const time_t*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" struct tm* localtime(const time_t*) _GLIBCPP_LIBC_NOTHROW;
+  extern "C" size_t strftime(char*, size_t, const char*, const struct tm*)
+    _GLIBCPP_LIBC_NOTHROW;
 }
 
 #endif
--- libstdc++-v3/include/c_std/bits/std_cwchar.h.jj	Tue Apr  3 11:32:48 2001
+++ libstdc++-v3/include/c_std/bits/std_cwchar.h	Wed Apr 11 15:27:58 2001
@@ -115,94 +115,134 @@ namespace std
 {
   using ::wint_t;
 
-  extern "C" wint_t btowc(int); 
-  extern "C" int wctob(wint_t); 
-  extern "C" wint_t fgetwc(FILE*); 
-  extern "C" wchar_t* fgetws(wchar_t*, int, FILE*); 
-  extern "C" wint_t fputwc(wchar_t, FILE*); 
-  extern "C" int fputws(const wchar_t*, FILE*); 
-  extern "C" int fwide(FILE*, int); 
-  extern "C" int fwprintf(FILE*, const wchar_t*, ...); 
-  extern "C" int fwscanf(FILE*, const wchar_t*, ...); 
-  extern "C" int swprintf(wchar_t*, size_t, const wchar_t*, ...); 
-  extern "C" int swscanf(const wchar_t*, const wchar_t*, ...); 
-  extern "C" int vfwprintf(FILE*, const wchar_t*, va_list); 
-  extern "C" int vfwscanf(FILE*, const wchar_t*, va_list); 
-  extern "C" int vswprintf(wchar_t*, size_t, const wchar_t*, va_list); 
-  extern "C" int vswscanf(const wchar_t*, const wchar_t*, va_list); 
-  extern "C" int vwprintf(const wchar_t*, va_list); 
-  extern "C" int vwscanf(const wchar_t*, va_list); 
-  extern "C" int wprintf(const wchar_t*, ...); 
-  extern "C" int wscanf(const wchar_t*, ...); 
-  extern "C" wint_t getwc(FILE* stream); 
-  extern "C" wint_t getwchar(void); 
-  extern "C" int mbsinit(const mbstate_t*); 
-  extern "C" size_t mbrlen(const char*, size_t, mbstate_t*); 
-  extern "C" size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*); 
-  extern "C" size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*); 
-  extern "C" size_t wcsrtombs(char*, const wchar_t **, size_t, mbstate_t*);
-  extern "C" wint_t putwc(wchar_t, FILE*); 
-  extern "C" wint_t putwchar(wchar_t); 
-  extern "C" wint_t ungetwc(wint_t, FILE*);
-  extern "C" size_t wcrtomb(char*, wchar_t, mbstate_t*); 
-  extern "C" double wcstod(const wchar_t*, wchar_t**); 
-  extern "C" float wcstof(const wchar_t*, wchar_t**); 
-  extern "C" long int wcstol(const wchar_t*, wchar_t**, int); 
-  extern "C" unsigned long int wcstoul(const wchar_t*, wchar_t**, int); 
-  extern "C" wchar_t* wcscpy(wchar_t* s1, const wchar_t*); 
-  extern "C" wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t); 
-  extern "C" wchar_t* wcscat(wchar_t*, const wchar_t*); 
-  extern "C" wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t); 
-  extern "C" int wcscmp(const wchar_t*, const wchar_t*); 
-  extern "C" int wcscoll(const wchar_t*, const wchar_t*); 
-  extern "C" int wcsncmp(const wchar_t*, const wchar_t*, size_t); 
-  extern "C" size_t wcsxfrm(wchar_t*, const wchar_t*, size_t); 
-  extern "C" const wchar_t* wcschr(const wchar_t*, wchar_t); 
+  extern "C" wint_t btowc(int) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int wctob(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t fgetwc(FILE*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* fgetws(wchar_t*, int, FILE*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t fputwc(wchar_t, FILE*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int fputws(const wchar_t*, FILE*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int fwide(FILE*, int) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int fwprintf(FILE*, const wchar_t*, ...)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int fwscanf(FILE*, const wchar_t*, ...) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int swprintf(wchar_t*, size_t, const wchar_t*, ...)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int swscanf(const wchar_t*, const wchar_t*, ...)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int vfwprintf(FILE*, const wchar_t*, va_list)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int vfwscanf(FILE*, const wchar_t*, va_list)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int vswprintf(wchar_t*, size_t, const wchar_t*, va_list)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int vswscanf(const wchar_t*, const wchar_t*, va_list)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int vwprintf(const wchar_t*, va_list) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int vwscanf(const wchar_t*, va_list) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int wprintf(const wchar_t*, ...) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int wscanf(const wchar_t*, ...) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t getwc(FILE* stream) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t getwchar(void) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int mbsinit(const mbstate_t*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t mbrlen(const char*, size_t, mbstate_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t wcsrtombs(char*, const wchar_t **, size_t, mbstate_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t putwc(wchar_t, FILE*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t putwchar(wchar_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t ungetwc(wint_t, FILE*) _GLIBCPP_WC_LIBC_NOTHROW;
+  extern "C" size_t wcrtomb(char*, wchar_t, mbstate_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" double wcstod(const wchar_t*, wchar_t**)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" float wcstof(const wchar_t*, wchar_t**) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" long int wcstol(const wchar_t*, wchar_t**, int)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" unsigned long int wcstoul(const wchar_t*, wchar_t**, int)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wcscpy(wchar_t* s1, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wcscat(wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int wcscmp(const wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int wcscoll(const wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int wcsncmp(const wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t wcsxfrm(wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" const wchar_t* wcschr(const wchar_t*, wchar_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
   inline wchar_t*
-  wcschr(wchar_t* __p, wchar_t __c)
+  wcschr(wchar_t* __p, wchar_t __c) _GLIBCPP_LIBC_WC_NOTHROW
   {
     return const_cast<wchar_t*>(wcschr(const_cast<const wchar_t*>(__p), __c));
   }
-  extern "C" size_t wcscspn(const wchar_t*, const wchar_t*); 
-  extern "C" size_t wcslen(const wchar_t*); 
-  extern "C" const wchar_t* wcspbrk(const wchar_t*, const wchar_t*); 
+  extern "C" size_t wcscspn(const wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t wcslen(const wchar_t*) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" const wchar_t* wcspbrk(const wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
   inline wchar_t*
-  wcspbrk(wchar_t* __s1, wchar_t* __s2)
+  wcspbrk(wchar_t* __s1, wchar_t* __s2) _GLIBCPP_LIBC_WC_NOTHROW
   {
     return const_cast<wchar_t*>(wcspbrk(const_cast<const wchar_t*>(__s1), __s2));
   }
-  extern "C" const wchar_t* wcsrchr(const wchar_t*, wchar_t); 
+  extern "C" const wchar_t* wcsrchr(const wchar_t*, wchar_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
   inline wchar_t*
-  wcsrchr(wchar_t* __p, wchar_t __c)
+  wcsrchr(wchar_t* __p, wchar_t __c) _GLIBCPP_LIBC_WC_NOTHROW
   {
     return const_cast<wchar_t*>(wcsrchr(const_cast<const wchar_t*>(__p), __c));
   }
-  extern "C" size_t wcsspn(const wchar_t*, const wchar_t*); 
-  extern "C" const wchar_t* wcsstr(const wchar_t*, const wchar_t*); 
+  extern "C" size_t wcsspn(const wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" const wchar_t* wcsstr(const wchar_t*, const wchar_t*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
   inline wchar_t*
-  wcsstr(wchar_t* __s1, wchar_t* __s2)
+  wcsstr(wchar_t* __s1, wchar_t* __s2) _GLIBCPP_LIBC_WC_NOTHROW
   {
     return const_cast<wchar_t*>(wcsstr(const_cast<const wchar_t*>(__s1), __s2));
   }
-  extern "C" wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**); 
-  extern "C" const wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
+  extern "C" wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" const wchar_t* wmemchr(const wchar_t*, wchar_t, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
   inline wchar_t*
-  wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
+  wmemchr(wchar_t* __p, wchar_t __c, size_t __n) _GLIBCPP_LIBC_WC_NOTHROW
   {
     return const_cast<wchar_t*>(wmemchr(const_cast<const wchar_t*>(__p), __c, __n));
   }
-  extern "C" int wmemcmp(const wchar_t*, const wchar_t*, size_t); 
-  //extern "C" int wmemcmp(wchar_t*, const wchar_t*, size_t); 
-  extern "C" wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t); 
-  extern "C" wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t); 
-  extern "C" wchar_t* wmemset(wchar_t*, wchar_t, size_t); 
-  extern "C" size_t wcsftime(wchar_t*, size_t, const wchar_t*, const struct tm*); 
+  extern "C" int wmemcmp(const wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  //extern "C" int wmemcmp(wchar_t*, const wchar_t*, size_t)
+  //  _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wchar_t* wmemset(wchar_t*, wchar_t, size_t)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" size_t wcsftime(wchar_t*, size_t, const wchar_t*, const struct tm*)
+    _GLIBCPP_LIBC_WC_NOTHROW;
 
 #if 0
   // Full C99 listing
-  extern "C" long double wcstold(const wchar_t*, wchar_t**); 
-  extern "C" long long int wcstoll(const wchar_t*, wchar_t**, int); 
-  extern "C" unsigned long long int wcstoull(const wchar_t*, wchar_t**, int); 
+  extern "C" long double wcstold(const wchar_t*, wchar_t**)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" long long int wcstoll(const wchar_t*, wchar_t**, int)
+    _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" unsigned long long int wcstoull(const wchar_t*, wchar_t**, int)
+    _GLIBCPP_LIBC_WC_NOTHROW;
 #endif
 }
 #endif //_GLIBCPP_USE_WCHAR_T
--- libstdc++-v3/include/c_std/bits/std_cwctype.h.jj	Sun Jan  7 12:31:06 2001
+++ libstdc++-v3/include/c_std/bits/std_cwctype.h	Wed Apr 11 15:29:18 2001
@@ -66,31 +66,24 @@ namespace std
   using ::wctype_t;
   using ::wctrans_t;
 
-  extern "C" int iswalnum(wint_t); 
-  extern "C" int iswalpha(wint_t); 
-  extern "C" int iswblank(wint_t); 
-  extern "C" int iswcntrl(wint_t); 
-  extern "C" int iswdigit(wint_t); 
-  extern "C" int iswgraph(wint_t); 
-  extern "C" int iswlower(wint_t); 
-  extern "C" int iswprint(wint_t); 
-  extern "C" int iswpunct(wint_t); 
-  extern "C" int iswspace(wint_t); 
-  extern "C" int iswupper(wint_t); 
-  extern "C" int iswxdigit(wint_t);
-  extern "C" int iswctype(wint_t, wctype_t); 
-  extern "C" wctype_t wctype(const char *); 
-  extern "C" wint_t towlower(wint_t); 
-  extern "C" wint_t towupper(wint_t); 
-  extern "C" wint_t towctrans(wint_t, wctrans_t); 
-  extern "C" wctrans_t wctrans(const char*);
+  extern "C" int iswalnum(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswalpha(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswblank(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswcntrl(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswdigit(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswgraph(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswlower(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswprint(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswpunct(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswspace(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswupper(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswxdigit(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" int iswctype(wint_t, wctype_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wctype_t wctype(const char *) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t towlower(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t towupper(wint_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wint_t towctrans(wint_t, wctrans_t) _GLIBCPP_LIBC_WC_NOTHROW;
+  extern "C" wctrans_t wctrans(const char*) _GLIBCPP_LIBC_WC_NOTHROW;
 }
 
 #endif 
-
-
-
-
-
-
-
--- libstdc++-v3/include/c_std/bits/std_cmath.h.jj	Tue Apr 10 17:42:52 2001
+++ libstdc++-v3/include/c_std/bits/std_cmath.h	Wed Apr 11 15:32:32 2001
@@ -38,7 +38,7 @@
 
 #include <bits/c++config.h>
 #include <bits/std_cstdlib.h>
- 
+
 #pragma GCC system_header
 #include <math.h>
 
@@ -85,7 +85,7 @@
 #undef islessgreater
 #undef isunordered
 
-namespace std 
+namespace std
 {
   // Forward declaration of a helper function.  This really should be
   // an `exported' forward declaration.
@@ -99,131 +99,131 @@ namespace std 
     }
 
 #if _GLIBCPP_HAVE___BUILTIN_FABSF
-  inline float 
+  inline float
   abs(float __x) { return __builtin_fabsf(__x); }
 #elif _GLIBCPP_HAVE_FABSF
-  inline float 
+  inline float
   abs(float __x) { return ::fabsf(__x); }
 #else
-  inline float 
+  inline float
   abs(float __x) { return __cmath_abs(__x); }
 #endif
 
 #if _GLIBCPP_HAVE_ACOSF
-  inline float 
+  inline float
   acos(float __x) { return ::acosf(__x); }
 #else
-  inline float 
+  inline float
   acos(float __x) { return ::acos(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_ASINF
-  inline float 
+  inline float
   asin(float __x) { return ::asinf(__x); }
 #else
-  inline float 
+  inline float
   asin(float __x) { return ::asin(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_ATANF
-  inline float 
+  inline float
   atan(float __x) { return ::atanf(__x); }
 #else
-  inline float 
+  inline float
   atan(float __x) { return ::atan(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_ATAN2F
-  inline float 
+  inline float
   atan2(float __y, float __x) { return ::atan2f(__y, __x); }
 #else
-  inline float 
+  inline float
   atan2(float __y, float __x)
   { return ::atan2(static_cast<double>(__y), static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_CEILF
-  inline float 
+  inline float
   ceil(float __x) { return ::ceilf(__x); }
 #else
-  inline float 
+  inline float
   ceil(float __x) { return ::ceil(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_COSF
-  inline float 
+  inline float
   cos(float __x) { return __builtin_cosf(__x); }
 #elif _GLIBCPP_HAVE_COSF
-  inline float 
+  inline float
   cos(float __x) { return ::cosf(__x); }
 #else
-  inline float 
+  inline float
   cos(float __x) { return ::cos(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_COSHF
-  inline float 
+  inline float
   cosh(float __x) { return ::coshf(__x); }
 #else
-  inline float 
+  inline float
   cosh(float __x) { return ::cosh(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_EXPF
-  inline float 
+  inline float
   exp(float __x) { return ::expf(__x); }
 #else
-  inline float 
+  inline float
   exp(float __x) { return ::exp(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_FABSF
-  inline float 
+  inline float
   fabs(float __x) { return __builtin_fabsf(__x); }
 #elif _GLIBCPP_HAVE_FABSF
-  inline float 
+  inline float
   fabs(float __x) { return ::fabsf(__x); }
 #else
-  inline float 
+  inline float
   fabs(float __x) { return __cmath_abs(__x); }
 #endif
 
 #if _GLIBCPP_HAVE_FLOORF
-  inline float 
+  inline float
   floor(float __x) { return ::floorf(__x); }
 #else
-  inline float 
+  inline float
   floor(float __x) { return ::floor(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_FMODF
-  inline float 
+  inline float
   fmod(float __x, float __y) { return ::fmodf(__x, __y); }
 #else
-  inline float 
+  inline float
   fmod(float __x, float __y)
   { return ::fmod(static_cast<double>(__x), static_cast<double>(__y)); }
 #endif
 
 #if _GLIBCPP_HAVE_FREXPF
-  inline float 
+  inline float
   frexp(float __x, int* __exp) { return ::frexpf(__x, __exp); }
 #else
-  inline float 
+  inline float
   frexp(float __x, int* __exp) { return ::frexp(__x, __exp); }
 #endif
 
 #if _GLIBCPP_HAVE_LDEXPF
-  inline float 
+  inline float
   ldexp(float __x, int __exp) { return ::ldexpf(__x, __exp); }
 #else
-  inline float 
+  inline float
   ldexp(float __x, int __exp)
   { return ::ldexp(static_cast<double>(__x), __exp); }
 #endif
 
 #if _GLIBCPP_HAVE_LOGF
-  inline float 
+  inline float
   log(float __x) { return ::logf(__x); }
 #else
   inline float log(float __x)
@@ -231,18 +231,18 @@ namespace std 
 #endif
 
 #if _GLIBCPP_HAVE_LOG10F
-  inline float 
+  inline float
   log10(float __x) { return ::log10f(__x); }
 #else
-  inline float 
+  inline float
   log10(float __x) { return ::log10(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_MODFF
-  inline float 
+  inline float
   modf(float __x, float* __iptr) { return ::modff(__x, __iptr); }
 #else
-  inline float 
+  inline float
   modf(float __x, float* __iptr)
   {
     double __tmp;
@@ -260,296 +260,297 @@ namespace std 
         ? _Tp(1)/__cmath_power(__x, -__n)
         : __cmath_power(__x, __n);
     }
-  
+ 
 #if _GLIBCPP_HAVE_POWF
-  inline float 
+  inline float
   pow(float __x, float __y) { return ::powf(__x, __y); }
 #else
-  inline float 
+  inline float
   pow(float __x, float __y)
   { return ::pow(static_cast<double>(__x), static_cast<double>(__y)); }
 #endif
 
-  inline float 
+  inline float
   pow(float __x, int __n)
   {
     return __pow_helper(__x, __n);
   }
 
 #if _GLIBCPP_HAVE___BUILTIN_SINF
-  inline float 
+  inline float
   sin(float __x) { return __builtin_sinf(__x); }
 #elif _GLIBCPP_HAVE_SINF
-  inline float 
+  inline float
   sin(float __x) { return ::sinf(__x); }
 #else
-  inline float 
+  inline float
   sin(float __x) { return ::sin(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_SINHF
-  inline float 
+  inline float
   sinh(float __x) { return ::sinhf(__x); }
 #else
-  inline float 
+  inline float
   sinh(float __x) { return ::sinh(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_SQRTF
-  inline float 
+  inline float
   sqrt(float __x) { return __builtin_sqrtf(__x); }
 #elif _GLIBCPP_HAVE_SQRTF
-  inline float 
+  inline float
   sqrt(float __x) { return ::sqrtf(__x); }
 #else
-  inline float 
+  inline float
   sqrt(float __x) { return ::sqrt(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_TANF
-  inline float 
+  inline float
   tan(float __x) { return ::tanf(__x); }
 #else
-  inline float 
+  inline float
   tan(float __x) { return ::tan(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_TANHF
-  inline float 
+  inline float
   tanh(float __x) { return ::tanhf(__x); }
 #else
-  inline float 
+  inline float
   tanh(float __x) { return ::tanh(static_cast<double>(__x)); }
 #endif
 
 
-  extern "C" double acos(double __x);
+  extern "C" double acos(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double asin(double __x);
+  extern "C" double asin(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double atan(double __x);
+  extern "C" double atan(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double atan2(double __y, double __x);
+  extern "C" double atan2(double __y, double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double ceil(double __x);
+  extern "C" double ceil(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
 #if _GLIBCPP_HAVE___BUILTIN_COS
-  inline double 
+  inline double
   cos(double __x) { return __builtin_cos(__x); }
 #else
-  extern "C" double cos(double __x);
+  extern "C" double cos(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 #endif
 
-  extern "C" double cosh(double __x);
+  extern "C" double cosh(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double exp(double __x);
+  extern "C" double exp(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
 #if _GLIBCPP_HAVE___BUILTIN_FABS
-  inline double 
+  inline double
   fabs(double __x) { return __builtin_fabs(__x); }
 #else
-  extern "C" double fabs(double __x);
+  extern "C" double fabs(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_FABS
-  inline double 
+  inline double
   abs(double __x) { return __builtin_fabs(__x); }
 #else
   inline double
   abs(double __x) { return fabs(__x); }
 #endif
 
-  extern "C" double floor(double __x);
+  extern "C" double floor(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double fmod(double __x, double __y);
+  extern "C" double fmod(double __x, double __y) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double frexp(double __x, int* __exp);
+  extern "C" double frexp(double __x, int* __exp) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double ldexp(double __x, int __exp);
+  extern "C" double ldexp(double __x, int __exp) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double log(double __x);
+  extern "C" double log(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double log10(double __x);
+  extern "C" double log10(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double modf(double __x, double* __iptr);
+  extern "C" double modf(double __x, double* __iptr)
+    _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double pow(double __x, double __y);
+  extern "C" double pow(double __x, double __y) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  inline double 
+  inline double
   pow(double __x, int __i)
   {
     return __pow_helper(__x, __i);
   }
 
 #if _GLIBCPP_HAVE___BUILTIN_SIN
-  inline double 
+  inline double
   sin(double __x) { return __builtin_sin(__x); }
 #else
-  extern "C" double sin(double __x);
+  extern "C" double sin(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 #endif
 
-  extern "C" double sinh(double __x);
+  extern "C" double sinh(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
 #if _GLIBCPP_HAVE___BUILTIN_SQRT
-  inline double 
+  inline double
   sqrt(double __x) { return __builtin_fsqrt(__x); }
 #else
-  extern "C" double sqrt(double __x);
+  extern "C" double sqrt(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 #endif
 
-  extern "C" double tan(double __x);
+  extern "C" double tan(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
-  extern "C" double tanh(double __x);
+  extern "C" double tanh(double __x) _GLIBCPP_LIBC_MATH_NOTHROW;
 
 
 #if _GLIBCPP_HAVE___BUILTIN_FABSL
-  inline long double 
+  inline long double
   abs(long double __x) { return __builtin_fabsl(__x); }
 #elif _GLIBCPP_HAVE_FABSL
-  inline long double 
+  inline long double
   abs(long double __x) { return ::fabsl(__x); }
 #else
-  inline long double 
+  inline long double
   abs(long double __x) { return __cmath_abs(__x); }
 #endif
 
 #if _GLIBCPP_HAVE_ACOSL
-  inline long double 
+  inline long double
   acos(long double __x) { return ::acosl(__x); }
 #else
-  inline long double 
+  inline long double
   acos(long double __x) { return ::acos(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_ASINL
-  inline long double 
+  inline long double
   asin(long double __x) { return ::asinl(__x); }
 #else
-  inline long double 
+  inline long double
   asin(long double __x) { return ::asin(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_ATANL
-  inline long double 
+  inline long double
   atan(long double __x) { return ::atanl(__x); }
 #else
-  inline long double 
+  inline long double
   atan(long double __x) { return ::atan(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_ATAN2L
-  inline long double 
+  inline long double
   atan2(long double __y, long double __x) { return ::atan2l(__y, __x); }
 #else
-  inline long double 
-  atan2(long double __y, long double __x) 
+  inline long double
+  atan2(long double __y, long double __x)
   { return ::atan2(static_cast<double>(__y), static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_CEILL
-  inline long double 
+  inline long double
   ceil(long double __x) { return ::ceill(__x); }
 #else
-  inline long double 
+  inline long double
   ceil(long double __x) { return ::ceil(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_COSL
-  inline long double 
+  inline long double
   cos(long double __x) { return __builtin_cosl(__x); }
 #elif _GLIBCPP_HAVE_COSL
-  inline long double 
+  inline long double
   cos(long double __x) { return ::cosl(__x); }
 #else
-  inline long double 
+  inline long double
   cos(long double __x) { return ::cos(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_COSHL
-  inline long double 
+  inline long double
   cosh(long double __x) { return ::coshl(__x); }
 #else
-  inline long double 
+  inline long double
   cosh(long double __x) { return ::cosh(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_EXPL
-  inline long double 
+  inline long double
   exp(long double __x) { return ::expl(__x); }
 #else
-  inline long double 
+  inline long double
   exp(long double __x) { return ::exp(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_FABSL
-  inline long double 
+  inline long double
   fabs(long double __x) { return __builtin_fabsl(__x); }
 #elif _GLIBCPP_HAVE_FABSL
-  inline long double 
+  inline long double
   fabs(long double __x) { return ::fabsl(__x); }
 #else
-  inline long double 
+  inline long double
   fabs(long double __x) { return __cmath_abs(__x); }
 #endif
 
 #if _GLIBCPP_HAVE_FLOORL
-  inline long double 
+  inline long double
   floor(long double __x) { return ::floorl(__x); }
 #else
-  inline long double 
+  inline long double
   floor(long double __x) { return ::floor(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_FMODL
-  inline long double 
+  inline long double
   fmod(long double __x, long double __y) { return ::fmodl(__x, __y); }
 #else
-  inline long double 
-  fmod(long double __x, long double __y) 
+  inline long double
+  fmod(long double __x, long double __y)
   { return ::fmod(static_cast<double>(__x), static_cast<double>(__y)); }
 #endif
 
 #if _GLIBCPP_HAVE_FREXPL
-  inline long double 
+  inline long double
   frexp(long double __x, int* __exp) { return ::frexpl(__x, __exp); }
 #else
-  inline long double 
-  frexp(long double __x, int* __exp) 
+  inline long double
+  frexp(long double __x, int* __exp)
   { return ::frexp(static_cast<double>(__x), __exp); }
 #endif
 
 #if _GLIBCPP_HAVE_LDEXPL
-  inline long double 
+  inline long double
   ldexp(long double __x, int __exp) { return ::ldexpl(__x, __exp); }
 #else
-  inline long double 
-  ldexp(long double __x, int __exp) 
+  inline long double
+  ldexp(long double __x, int __exp)
   { return ::ldexp(static_cast<double>(__x), __exp); }
 #endif
 
 #if _GLIBCPP_HAVE_LOGL
-  inline long double 
+  inline long double
   log(long double __x) { return ::logl(__x); }
 #else
-  inline long double 
+  inline long double
   log(long double __x) { return ::log(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_LOG10L
-  inline long double 
+  inline long double
   log10(long double __x) { return ::log10l(__x); }
 #else
-  inline long double 
+  inline long double
   log10(long double __x) { return ::log10(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_MODFL
-  inline long double 
+  inline long double
   modf(long double __x, long double* __iptr) { return ::modfl(__x, __iptr); }
 #else
-  inline long double 
-  modf(long double __x, long double* __iptr) 
-  { 
+  inline long double
+  modf(long double __x, long double* __iptr)
+  {
     double __tmp;
     double __res = ::modf(static_cast<double>(__x), &__tmp);
     * __iptr = static_cast<long double>(__tmp);
@@ -558,63 +559,63 @@ namespace std 
 #endif
 
 #if _GLIBCPP_HAVE_POWL
-  inline long double 
+  inline long double
   pow(long double __x, long double __y) { return ::powl(__x, __y); }
 #else
-  inline long double 
-  pow(long double __x, long double __y) 
+  inline long double
+  pow(long double __x, long double __y)
   { return ::pow(static_cast<double>(__x), static_cast<double>(__y)); }
 #endif
 
-  inline long double 
+  inline long double
   pow(long double __x, int __n)
   {
     return __pow_helper(__x, __n);
   }
 
 #if _GLIBCPP_HAVE___BUILTIN_SINL
-  inline long double 
+  inline long double
   sin(long double __x) { return __builtin_sinl(__x); }
 #elif _GLIBCPP_HAVE_SINL
-  inline long double 
+  inline long double
   sin(long double __x) { return ::sinl(__x); }
 #else
-  inline long double 
+  inline long double
   sin(long double __x) { return ::sin(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_SINHL
-  inline long double 
+  inline long double
   sinh(long double __x) { return ::sinhl(__x); }
 #else
-  inline long double 
+  inline long double
   sinh(long double __x) { return ::sinh(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE___BUILTIN_SQRTL
-  inline long double 
+  inline long double
   sqrt(long double __x) { return __builtin_sqrtl(__x); }
 #elif _GLIBCPP_HAVE_SQRTL
-  inline long double 
+  inline long double
   sqrt(long double __x) { return ::sqrtl(__x); }
 #else
-  inline long double 
+  inline long double
   sqrt(long double __x) { return ::sqrt(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_TANL
-  inline long double 
+  inline long double
   tan(long double __x) { return ::tanl(__x); }
 #else
-  inline long double 
+  inline long double
   tan(long double __x) { return ::tan(static_cast<double>(__x)); }
 #endif
 
 #if _GLIBCPP_HAVE_TANHL
-  inline long double 
+  inline long double
   tanh(long double __x) { return ::tanhl(__x); }
 #else
-  inline long double 
+  inline long double
   tanh(long double __x) { return ::tanh(static_cast<double>(__x)); }
 #endif
 } // std
#include <sys/types.h>
#include <stdarg.h>

extern "C" int isalnum(int __c) throw();
extern "C" int isalpha(int __c) throw();
extern "C" int isblank(int __c) throw();
extern "C" int iscntrl(int __c) throw();
extern "C" int isdigit(int __c) throw();
extern "C" int isgraph(int __c) throw();
extern "C" int islower(int __c) throw();
extern "C" int isprint(int __c) throw();
extern "C" int ispunct(int __c) throw();
extern "C" int isspace(int __c) throw();
extern "C" int isupper(int __c) throw();
extern "C" int isxdigit(int __c) throw();
extern "C" int tolower(int __c) throw();
extern "C" int toupper(int __c) throw();
extern "C" char* setlocale(int, const char*) throw();
extern "C" struct lconv* localeconv(void) throw();
// extern "C" void longjmp(jmp_buf, int) throw();
extern "C" int raise(int) throw();
extern "C" int remove(const char*) throw();
extern "C" int rename(const char*, const char*) throw();
// extern "C" FILE* tmpfile(void) throw();
extern "C" char* tmpnam(char*) throw();
// extern "C" int fclose(FILE*) throw();
// extern "C" int fflush(FILE*) throw();
// extern "C" FILE* fopen(const char*, const char*) throw();
// extern "C" FILE* freopen(const char*, const char*, FILE*) throw();
// extern "C" void setbuf(FILE*, char*) throw();
// extern "C" int setvbuf(FILE*, char*, int, size_t) throw();
// extern "C" int fprintf(FILE*, const char*, ...) throw();
// extern "C" int fscanf(FILE*, const char*, ...) throw();
extern "C" int printf(const char*, ...) throw();
extern "C" int scanf(const char*, ...) throw();
extern "C" int snprintf(char *, size_t, const char*, ...) throw();
extern "C" int sprintf(char *, const char*, ...) throw();
extern "C" int sscanf(const char*, const char*, ...) throw();
// extern "C" int vfprintf(FILE*, const char*, va_list) throw();
// extern "C" int vfscanf(FILE*, const char*, va_list) throw();
extern "C" int vprintf(const char*, va_list) throw();
extern "C" int vscanf(const char*, va_list) throw();
extern "C" int vsnprintf(char*, size_t, const char*, va_list) throw();
extern "C" int vsprintf(char*, const char*, va_list) throw();
extern "C" int vsscanf(const char*, const char*, va_list) throw();
// extern "C" int fgetc(FILE *) throw();
// extern "C" char *fgets(char*, int, FILE*) throw();
// extern "C" int fputc(int, FILE*) throw();
// extern "C" int fputs(const char*, FILE*) throw();
// extern "C" int getc(FILE*) throw();
extern "C" int getchar(void) throw();
extern "C" char *gets(char*) throw();
// extern "C" int putc(int, FILE*) throw();
extern "C" int putchar(int) throw();
extern "C" int puts(const char*) throw();
// extern "C" int ungetc(int, FILE*) throw();
// extern "C" size_t fread(void*, size_t, size_t, FILE*) throw();
// extern "C" size_t fwrite(const void*, size_t, size_t, FILE*) throw();
// extern "C" int fgetpos(FILE*, fpos_t*) throw();
// extern "C" int fseek(FILE*, long int, int) throw();
// extern "C" int fsetpos(FILE*, const fpos_t*) throw();
// extern "C" long int ftell(FILE*) throw();
// extern "C" void rewind(FILE*) throw();
// extern "C" void clearerr(FILE*) throw();
// extern "C" int feof(FILE*) throw();
// extern "C" int ferror(FILE*) throw();
extern "C" void perror(const char*) throw();
extern "C" double atof(const char*) throw();
extern "C" int atoi(const char*) throw();
extern "C" long int atol(const char*) throw();
extern "C" double strtod(const char*, char**) throw();
extern "C" float strtof(const char*, char**) throw();
extern "C" long int strtol(const char*, char**, int) throw();
extern "C" unsigned long int strtoul(const char*, char**, int) throw();
extern "C" int rand(void) throw();
extern "C" void srand(unsigned int) throw();
extern "C" void* calloc(size_t, size_t) throw();
extern "C" void free(void*) throw();
extern "C" void* malloc(size_t) throw();
extern "C" void* realloc(void*, size_t) throw();
extern "C" int atexit(void (*func)(void)) throw();
extern "C" void exit(int) throw();
extern "C" void _Exit(int) throw();
extern "C" char*getenv(const char*) throw();
extern "C" int system(const char*) throw();
extern "C" int abs(int) throw();
extern "C" long int labs(long int) throw();
// extern "C" div_t div(int, int) throw();
// extern "C" ldiv_t ldiv(long int, long int) throw();
extern "C" int mblen(const char*, size_t) throw();
extern "C" int mbtowc(wchar_t*, const char*, size_t) throw();
extern "C" int wctomb(char*, wchar_t) throw();
extern "C" size_t mbstowcs(wchar_t*, const char*, size_t) throw();
extern "C" size_t wcstombs(char*, const wchar_t*, size_t) throw();
extern "C" long long int atoll(const char*) throw();
extern "C" long long int strtoll(const char*, char**, int) throw();
extern "C" unsigned long long int strtoull(const char*, char**, int) throw();
extern "C" long double strtold(const char*, char**) throw();
extern "C" void* memcpy(void*, const void*, size_t) throw();
extern "C" void* memmove(void*, const void*, size_t) throw();
extern "C" char* strcpy(char*, const char*) throw();
extern "C" char* strncpy(char*, const char*, size_t) throw();
extern "C" char* strcat(char*, const char*) throw();
extern "C" char* strncat(char*, const char*, size_t) throw();
extern "C" int memcmp(const void*, const void*, size_t) throw();
extern "C" int strcmp(const char*, const char*) throw();
extern "C" int strcoll(const char*, const char*) throw();
extern "C" int strncmp(const char*, const char*, size_t) throw();
extern "C" size_t strxfrm(char*, const char*, size_t) throw();
extern "C" void* memchr(const void*, int, size_t) throw();
extern "C" char* strchr(const char*, int) throw();
extern "C" size_t strcspn(const char*, const char*) throw();
extern "C" char* strpbrk(const char*, const char*) throw();
extern "C" char* strrchr(const char*, int) throw();
extern "C" size_t strspn(const char*, const char*) throw();
extern "C" char* strstr(const char*, const char*) throw();
extern "C" char* strtok(char*, const char*) throw();
extern "C" void* memset(void*, int, size_t) throw();
extern "C" char* strerror(int) throw();
extern "C" size_t strlen(const char*) throw();
// extern "C" clock_t clock(void) throw();
extern "C" double difftime(time_t, time_t) throw();
extern "C" time_t mktime(struct tm*) throw();
extern "C" time_t time(time_t*) throw();
extern "C" char* asctime(const struct tm*) throw();
extern "C" char* ctime(const time_t*) throw();
extern "C" struct tm* gmtime(const time_t*) throw();
extern "C" struct tm* localtime(const time_t*) throw();
extern "C" size_t strftime(char*, size_t, const char*, const struct tm*) throw();

#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#include <setjmp.h>
#include <signal.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <stdarg.h>

extern "C" double acos(double __x) throw();
extern "C" double asin(double __x) throw();
extern "C" double atan(double __x) throw();
extern "C" double atan2(double __y, double __x) throw();
extern "C" double ceil(double __x) throw();
extern "C" double cos(double __x) throw();
extern "C" double cosh(double __x) throw();
extern "C" double exp(double __x) throw();
extern "C" double fabs(double __x) throw();
extern "C" double floor(double __x) throw();
extern "C" double fmod(double __x, double __y) throw();
extern "C" double frexp(double __x, int* __exp) throw();
extern "C" double ldexp(double __x, int __exp) throw();
extern "C" double log(double __x) throw();
extern "C" double log10(double __x) throw();
extern "C" double modf(double __x, double* __iptr) throw();
extern "C" double pow(double __x, double __y) throw();
extern "C" double sin(double __x) throw();
extern "C" double sinh(double __x) throw();
extern "C" double sqrt(double __x) throw();
extern "C" double tan(double __x) throw();
extern "C" double tanh(double __x) throw();

#include <math.h>
#include <sys/types.h>
#include <stdarg.h>
#define __need_wchar_t
#define __need_wint_t
#include <stddef.h>

extern "C" wint_t btowc(int) throw();
extern "C" int wctob(wint_t) throw();
// extern "C" wint_t fgetwc(FILE*) throw();
// extern "C" wchar_t* fgetws(wchar_t*, int, FILE*) throw();
// extern "C" wint_t fputwc(wchar_t, FILE*) throw();
// extern "C" int fputws(const wchar_t*, FILE*) throw();
// extern "C" int fwide(FILE*, int) throw();
// extern "C" int fwprintf(FILE*, const wchar_t*, ...) throw();
// extern "C" int fwscanf(FILE*, const wchar_t*, ...) throw();
extern "C" int swprintf(wchar_t*, size_t, const wchar_t*, ...) throw();
extern "C" int swscanf(const wchar_t*, const wchar_t*, ...) throw();
// extern "C" int vfwprintf(FILE*, const wchar_t*, va_list) throw();
// extern "C" int vfwscanf(FILE*, const wchar_t*, va_list) throw();
extern "C" int vswprintf(wchar_t*, size_t, const wchar_t*, va_list) throw();
extern "C" int vswscanf(const wchar_t*, const wchar_t*, va_list) throw();
extern "C" int vwprintf(const wchar_t*, va_list) throw();
extern "C" int vwscanf(const wchar_t*, va_list) throw();
extern "C" int wprintf(const wchar_t*, ...) throw();
extern "C" int wscanf(const wchar_t*, ...) throw();
// extern "C" wint_t getwc(FILE* stream) throw();
extern "C" wint_t getwchar(void) throw();
// extern "C" int mbsinit(const mbstate_t*) throw();
// extern "C" size_t mbrlen(const char*, size_t, mbstate_t*) throw();
// extern "C" size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) throw();
// extern "C" size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) throw();
// extern "C" size_t wcsrtombs(char*, const wchar_t **, size_t, mbstate_t*) throw();
// extern "C" wint_t putwc(wchar_t, FILE*) throw();
extern "C" wint_t putwchar(wchar_t) throw();
// extern "C" wint_t ungetwc(wint_t, FILE*) throw();
// extern "C" size_t wcrtomb(char*, wchar_t, mbstate_t*) throw();
extern "C" double wcstod(const wchar_t*, wchar_t**) throw();
extern "C" float wcstof(const wchar_t*, wchar_t**) throw();
extern "C" long int wcstol(const wchar_t*, wchar_t**, int) throw();
extern "C" unsigned long int wcstoul(const wchar_t*, wchar_t**, int) throw();
extern "C" wchar_t* wcscpy(wchar_t* s1, const wchar_t*) throw();
extern "C" wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) throw();
extern "C" wchar_t* wcscat(wchar_t*, const wchar_t*) throw();
extern "C" wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) throw();
extern "C" int wcscmp(const wchar_t*, const wchar_t*) throw();
extern "C" int wcscoll(const wchar_t*, const wchar_t*) throw();
extern "C" int wcsncmp(const wchar_t*, const wchar_t*, size_t) throw();
extern "C" size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) throw();
extern "C" wchar_t* wcschr(const wchar_t*, wchar_t) throw();
extern "C" size_t wcscspn(const wchar_t*, const wchar_t*) throw();
extern "C" size_t wcslen(const wchar_t*) throw();
extern "C" wchar_t* wcspbrk(const wchar_t*, const wchar_t*) throw();
extern "C" wchar_t* wcsrchr(const wchar_t*, wchar_t) throw();
extern "C" size_t wcsspn(const wchar_t*, const wchar_t*) throw();
extern "C" wchar_t* wcsstr(const wchar_t*, const wchar_t*) throw();
extern "C" wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) throw();
extern "C" wchar_t* wmemchr(const wchar_t*, wchar_t, size_t) throw();
extern "C" int wmemcmp(const wchar_t*, const wchar_t*, size_t) throw();
extern "C" wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) throw();
extern "C" wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) throw();
extern "C" wchar_t* wmemset(wchar_t*, wchar_t, size_t) throw();
extern "C" size_t wcsftime(wchar_t*, size_t, const wchar_t*, const struct tm*) throw();
extern "C" int iswalnum(wint_t) throw();
extern "C" int iswalpha(wint_t) throw();
extern "C" int iswblank(wint_t) throw();
extern "C" int iswcntrl(wint_t) throw();
extern "C" int iswdigit(wint_t) throw();
extern "C" int iswgraph(wint_t) throw();
extern "C" int iswlower(wint_t) throw();
extern "C" int iswprint(wint_t) throw();
extern "C" int iswpunct(wint_t) throw();
extern "C" int iswspace(wint_t) throw();
extern "C" int iswupper(wint_t) throw();
extern "C" int iswxdigit(wint_t) throw();
// extern "C" int iswctype(wint_t, wctype_t) throw();
// extern "C" wctype_t wctype(const char *) throw();
extern "C" wint_t towlower(wint_t) throw();
extern "C" wint_t towupper(wint_t) throw();
// extern "C" wint_t towctrans(wint_t, wctrans_t) throw();
// extern "C" wctrans_t wctrans(const char*) throw();

#include <wchar.h>
#include <wctype.h>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]