Prepare headers for use in ISO C++ compliant implementations.

This commit is contained in:
Ulrich Drepper 2002-08-28 08:01:11 +00:00
parent a3f9038c87
commit 7a5affebe8
12 changed files with 368 additions and 101 deletions

View File

@ -85,6 +85,8 @@ extern __const __int32_t *__ctype_toupper; /* Case conversions. */
#define __exctype(name) extern int name (int) __THROW #define __exctype(name) extern int name (int) __THROW
__BEGIN_NAMESPACE_STD
/* The following names are all functions: /* The following names are all functions:
int isCHARACTERISTIC(int c); int isCHARACTERISTIC(int c);
which return nonzero iff C has CHARACTERISTIC. which return nonzero iff C has CHARACTERISTIC.
@ -101,10 +103,6 @@ __exctype (isspace);
__exctype (isupper); __exctype (isupper);
__exctype (isxdigit); __exctype (isxdigit);
#ifdef __USE_ISOC99
__exctype (isblank);
#endif
/* Return the lowercase version of C. */ /* Return the lowercase version of C. */
extern int tolower (int __c) __THROW; extern int tolower (int __c) __THROW;
@ -112,6 +110,17 @@ extern int tolower (int __c) __THROW;
/* Return the uppercase version of C. */ /* Return the uppercase version of C. */
extern int toupper (int __c) __THROW; extern int toupper (int __c) __THROW;
__END_NAMESPACE_STD
/* ISO C99 introduced one new function. */
#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
__exctype (isblank);
__END_NAMESPACE_C99
#endif
#if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
@ -147,7 +156,7 @@ __exctype (_tolower);
__res = a[(int) (c)]; \ __res = a[(int) (c)]; \
__res; })) __res; }))
#ifndef __NO_CTYPE #if !defined __NO_CTYPE && !defined __cplusplus
# define isalnum(c) __isctype((c), _ISalnum) # define isalnum(c) __isctype((c), _ISalnum)
# define isalpha(c) __isctype((c), _ISalpha) # define isalpha(c) __isctype((c), _ISalpha)
# define iscntrl(c) __isctype((c), _IScntrl) # define iscntrl(c) __isctype((c), _IScntrl)

View File

@ -41,8 +41,15 @@ __BEGIN_DECLS
#if !defined __FILE_defined && defined __need_FILE #if !defined __FILE_defined && defined __need_FILE
__BEGIN_NAMESPACE_STD
/* The opaque type of streams. This is the definition used elsewhere. */ /* The opaque type of streams. This is the definition used elsewhere. */
typedef struct _IO_FILE FILE; typedef struct _IO_FILE FILE;
__END_NAMESPACE_STD
#if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \
|| defined __USE_BSD || defined __USE_ISOC99 || defined __USE_XOPEN \
|| defined __USE_POSIX2
__USING_NAMESPACE_STD(FILE)
#endif
# define __FILE_defined 1 # define __FILE_defined 1
#endif /* FILE not defined. */ #endif /* FILE not defined. */
@ -76,11 +83,13 @@ typedef _G_va_list va_list;
#endif #endif
/* The type of the second argument to `fgetpos' and `fsetpos'. */ /* The type of the second argument to `fgetpos' and `fsetpos'. */
__BEGIN_NAMESPACE_STD
#ifndef __USE_FILE_OFFSET64 #ifndef __USE_FILE_OFFSET64
typedef _G_fpos_t fpos_t; typedef _G_fpos_t fpos_t;
#else #else
typedef _G_fpos64_t fpos_t; typedef _G_fpos64_t fpos_t;
#endif #endif
__END_NAMESPACE_STD
#ifdef __USE_LARGEFILE64 #ifdef __USE_LARGEFILE64
typedef _G_fpos64_t fpos64_t; typedef _G_fpos64_t fpos64_t;
#endif #endif
@ -130,20 +139,23 @@ typedef _G_fpos64_t fpos64_t;
/* Standard streams. */ /* Standard streams. */
extern FILE *stdin; /* Standard input stream. */ extern struct _IO_FILE *stdin; /* Standard input stream. */
extern FILE *stdout; /* Standard output stream. */ extern struct _IO_FILE *stdout; /* Standard output stream. */
extern FILE *stderr; /* Standard error output stream. */ extern struct _IO_FILE *stderr; /* Standard error output stream. */
/* C89/C99 say they're macros. Make them happy. */ /* C89/C99 say they're macros. Make them happy. */
#define stdin stdin #define stdin stdin
#define stdout stdout #define stdout stdout
#define stderr stderr #define stderr stderr
__BEGIN_NAMESPACE_STD
/* Remove file FILENAME. */ /* Remove file FILENAME. */
extern int remove (__const char *__filename) __THROW; extern int remove (__const char *__filename) __THROW;
/* Rename file OLD to NEW. */ /* Rename file OLD to NEW. */
extern int rename (__const char *__old, __const char *__new) __THROW; extern int rename (__const char *__old, __const char *__new) __THROW;
__END_NAMESPACE_STD
__BEGIN_NAMESPACE_STD
/* Create a temporary file and open it read/write. */ /* Create a temporary file and open it read/write. */
#ifndef __USE_FILE_OFFSET64 #ifndef __USE_FILE_OFFSET64
extern FILE *tmpfile (void) __THROW; extern FILE *tmpfile (void) __THROW;
@ -154,11 +166,14 @@ extern FILE *__REDIRECT (tmpfile, (void) __THROW, tmpfile64);
# define tmpfile tmpfile64 # define tmpfile tmpfile64
# endif # endif
#endif #endif
/* Generate a temporary filename. */
extern char *tmpnam (char *__s) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_LARGEFILE64 #ifdef __USE_LARGEFILE64
extern FILE *tmpfile64 (void) __THROW; extern FILE *tmpfile64 (void) __THROW;
#endif #endif
/* Generate a temporary filename. */
extern char *tmpnam (char *__s) __THROW;
#ifdef __USE_MISC #ifdef __USE_MISC
/* This is the reentrant variant of `tmpnam'. The only difference is /* This is the reentrant variant of `tmpnam'. The only difference is
@ -180,10 +195,12 @@ extern char *tempnam (__const char *__dir, __const char *__pfx)
#endif #endif
__BEGIN_NAMESPACE_STD
/* Close STREAM. */ /* Close STREAM. */
extern int fclose (FILE *__stream) __THROW; extern int fclose (FILE *__stream) __THROW;
/* Flush STREAM, or all streams if STREAM is NULL. */ /* Flush STREAM, or all streams if STREAM is NULL. */
extern int fflush (FILE *__stream) __THROW; extern int fflush (FILE *__stream) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_MISC #ifdef __USE_MISC
/* Faster versions when locking is not required. */ /* Faster versions when locking is not required. */
@ -196,6 +213,7 @@ extern int fcloseall (void) __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
#ifndef __USE_FILE_OFFSET64 #ifndef __USE_FILE_OFFSET64
/* Open a file and create a new stream for it. */ /* Open a file and create a new stream for it. */
extern FILE *fopen (__const char *__restrict __filename, extern FILE *fopen (__const char *__restrict __filename,
@ -218,6 +236,7 @@ extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
# define freopen freopen64 # define freopen freopen64
# endif # endif
#endif #endif
__END_NAMESPACE_STD
#ifdef __USE_LARGEFILE64 #ifdef __USE_LARGEFILE64
extern FILE *fopen64 (__const char *__restrict __filename, extern FILE *fopen64 (__const char *__restrict __filename,
__const char *__restrict __modes) __THROW; __const char *__restrict __modes) __THROW;
@ -249,6 +268,7 @@ extern FILE *open_memstream (char **__restrict __bufloc,
#endif #endif
__BEGIN_NAMESPACE_STD
/* If BUF is NULL, make STREAM unbuffered. /* If BUF is NULL, make STREAM unbuffered.
Else make it use buffer BUF, of size BUFSIZ. */ Else make it use buffer BUF, of size BUFSIZ. */
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW; extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW;
@ -257,6 +277,7 @@ extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW;
else allocate an internal buffer N bytes long. */ else allocate an internal buffer N bytes long. */
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) __THROW; int __modes, size_t __n) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_BSD #ifdef __USE_BSD
/* If BUF is NULL, make STREAM unbuffered. /* If BUF is NULL, make STREAM unbuffered.
@ -269,6 +290,7 @@ extern void setlinebuf (FILE *__stream) __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Write formatted output to STREAM. */ /* Write formatted output to STREAM. */
extern int fprintf (FILE *__restrict __stream, extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...) __THROW; __const char *__restrict __format, ...) __THROW;
@ -287,8 +309,10 @@ extern int vprintf (__const char *__restrict __format, _G_va_list __arg)
/* Write formatted output to S from argument list ARG. */ /* Write formatted output to S from argument list ARG. */
extern int vsprintf (char *__restrict __s, __const char *__restrict __format, extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
_G_va_list __arg) __THROW; _G_va_list __arg) __THROW;
__END_NAMESPACE_STD
#if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98 #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
__BEGIN_NAMESPACE_C99
/* Maximum chars of output to write in MAXLEN. */ /* Maximum chars of output to write in MAXLEN. */
extern int snprintf (char *__restrict __s, size_t __maxlen, extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...) __const char *__restrict __format, ...)
@ -297,6 +321,7 @@ extern int snprintf (char *__restrict __s, size_t __maxlen,
extern int vsnprintf (char *__restrict __s, size_t __maxlen, extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, _G_va_list __arg) __const char *__restrict __format, _G_va_list __arg)
__THROW __attribute__ ((__format__ (__printf__, 3, 0))); __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
__END_NAMESPACE_C99
#endif #endif
#ifdef __USE_GNU #ifdef __USE_GNU
@ -321,6 +346,7 @@ extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
#endif #endif
__BEGIN_NAMESPACE_STD
/* Read formatted input from STREAM. */ /* Read formatted input from STREAM. */
extern int fscanf (FILE *__restrict __stream, extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...) __THROW; __const char *__restrict __format, ...) __THROW;
@ -329,8 +355,10 @@ extern int scanf (__const char *__restrict __format, ...) __THROW;
/* Read formatted input from S. */ /* Read formatted input from S. */
extern int sscanf (__const char *__restrict __s, extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) __THROW; __const char *__restrict __format, ...) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Read formatted input from S into argument list ARG. */ /* Read formatted input from S into argument list ARG. */
extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
_G_va_list __arg) _G_va_list __arg)
@ -344,15 +372,18 @@ extern int vscanf (__const char *__restrict __format, _G_va_list __arg)
extern int vsscanf (__const char *__restrict __s, extern int vsscanf (__const char *__restrict __s,
__const char *__restrict __format, _G_va_list __arg) __const char *__restrict __format, _G_va_list __arg)
__THROW __attribute__ ((__format__ (__scanf__, 2, 0))); __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
__END_NAMESPACE_C99
#endif /* Use ISO C9x. */ #endif /* Use ISO C9x. */
__BEGIN_NAMESPACE_STD
/* Read a character from STREAM. */ /* Read a character from STREAM. */
extern int fgetc (FILE *__stream) __THROW; extern int fgetc (FILE *__stream) __THROW;
extern int getc (FILE *__stream) __THROW; extern int getc (FILE *__stream) __THROW;
/* Read a character from stdin. */ /* Read a character from stdin. */
extern int getchar (void) __THROW; extern int getchar (void) __THROW;
__END_NAMESPACE_STD
/* The C standard explicitly says this is a macro, so we always do the /* The C standard explicitly says this is a macro, so we always do the
optimization for it. */ optimization for it. */
@ -370,12 +401,14 @@ extern int fgetc_unlocked (FILE *__stream) __THROW;
#endif /* Use MISC. */ #endif /* Use MISC. */
__BEGIN_NAMESPACE_STD
/* Write a character to STREAM. */ /* Write a character to STREAM. */
extern int fputc (int __c, FILE *__stream) __THROW; extern int fputc (int __c, FILE *__stream) __THROW;
extern int putc (int __c, FILE *__stream) __THROW; extern int putc (int __c, FILE *__stream) __THROW;
/* Write a character to stdout. */ /* Write a character to stdout. */
extern int putchar (int __c) __THROW; extern int putchar (int __c) __THROW;
__END_NAMESPACE_STD
/* The C standard explicitly says this can be a macro, /* The C standard explicitly says this can be a macro,
so we always do the optimization for it. */ so we always do the optimization for it. */
@ -402,20 +435,22 @@ extern int putw (int __w, FILE *__stream) __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Get a newline-terminated string of finite length from STREAM. */ /* Get a newline-terminated string of finite length from STREAM. */
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
__THROW; __THROW;
/* Get a newline-terminated string from stdin, removing the newline.
DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. */
extern char *gets (char *__s) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
/* This function does the same as `fgets' but does not lock the stream. */ /* This function does the same as `fgets' but does not lock the stream. */
extern char *fgets_unlocked (char *__restrict __s, int __n, extern char *fgets_unlocked (char *__restrict __s, int __n,
FILE *__restrict __stream) __THROW; FILE *__restrict __stream) __THROW;
#endif #endif
/* Get a newline-terminated string from stdin, removing the newline.
DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. */
extern char *gets (char *__s) __THROW;
#ifdef __USE_GNU #ifdef __USE_GNU
/* Read up to (and including) a DELIMITER from STREAM into *LINEPTR /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
@ -437,16 +472,11 @@ extern _IO_ssize_t getline (char **__restrict __lineptr,
#endif #endif
__BEGIN_NAMESPACE_STD
/* Write a string to STREAM. */ /* Write a string to STREAM. */
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
__THROW; __THROW;
#ifdef __USE_GNU
/* This function does the same as `fputs' but does not lock the stream. */
extern int fputs_unlocked (__const char *__restrict __s,
FILE *__restrict __stream) __THROW;
#endif
/* Write a string, followed by a newline, to stdout. */ /* Write a string, followed by a newline, to stdout. */
extern int puts (__const char *__s) __THROW; extern int puts (__const char *__s) __THROW;
@ -461,6 +491,13 @@ extern size_t fread (void *__restrict __ptr, size_t __size,
/* Write chunks of generic data to STREAM. */ /* Write chunks of generic data to STREAM. */
extern size_t fwrite (__const void *__restrict __ptr, size_t __size, extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s) __THROW; size_t __n, FILE *__restrict __s) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU
/* This function does the same as `fputs' but does not lock the stream. */
extern int fputs_unlocked (__const char *__restrict __s,
FILE *__restrict __stream) __THROW;
#endif
#ifdef __USE_MISC #ifdef __USE_MISC
/* Faster versions when locking is not necessary. */ /* Faster versions when locking is not necessary. */
@ -471,26 +508,41 @@ extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
#endif #endif
__BEGIN_NAMESPACE_STD
/* Seek to a certain position on STREAM. */ /* Seek to a certain position on STREAM. */
extern int fseek (FILE *__stream, long int __off, int __whence) __THROW; extern int fseek (FILE *__stream, long int __off, int __whence) __THROW;
/* Return the current position of STREAM. */ /* Return the current position of STREAM. */
extern long int ftell (FILE *__stream) __THROW; extern long int ftell (FILE *__stream) __THROW;
/* Rewind to the beginning of STREAM. */ /* Rewind to the beginning of STREAM. */
extern void rewind (FILE *__stream) __THROW; extern void rewind (FILE *__stream) __THROW;
__END_NAMESPACE_STD
/* The Single Unix Specification, Version 2, specifies an alternative, /* The Single Unix Specification, Version 2, specifies an alternative,
more adequate interface for the two functions above which deal with more adequate interface for the two functions above which deal with
file offset. `long int' is not the right type. These definitions file offset. `long int' is not the right type. These definitions
are originally defined in the Large File Support API. */ are originally defined in the Large File Support API. */
#ifndef __USE_FILE_OFFSET64 #ifdef __USE_LARGEFILE
# ifdef __USE_LARGEFILE # ifndef __USE_FILE_OFFSET64
/* Seek to a certain position on STREAM. */ /* Seek to a certain position on STREAM. */
extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW; extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW;
/* Return the current position of STREAM. */ /* Return the current position of STREAM. */
extern __off_t ftello (FILE *__stream) __THROW; extern __off_t ftello (FILE *__stream) __THROW;
# else
# ifdef __REDIRECT
extern int __REDIRECT (fseeko,
(FILE *__stream, __off64_t __off, int __whence) __THROW,
fseeko64);
extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64);
# else
# define fseeko fseeko64
# define ftello ftello64
# endif
# endif # endif
#endif
__BEGIN_NAMESPACE_STD
#ifndef __USE_FILE_OFFSET64
/* Get STREAM's position. */ /* Get STREAM's position. */
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
__THROW; __THROW;
@ -498,26 +550,17 @@ extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW; extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW;
#else #else
# ifdef __REDIRECT # ifdef __REDIRECT
# ifdef __USE_LARGEFILE
extern int __REDIRECT (fseeko,
(FILE *__stream, __off64_t __off, int __whence) __THROW,
fseeko64);
extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64);
# endif
extern int __REDIRECT (fgetpos, (FILE *__restrict __stream, extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
fpos_t *__restrict __pos) __THROW, fgetpos64); fpos_t *__restrict __pos) __THROW, fgetpos64);
extern int __REDIRECT (fsetpos, extern int __REDIRECT (fsetpos,
(FILE *__stream, __const fpos_t *__pos) __THROW, (FILE *__stream, __const fpos_t *__pos) __THROW,
fsetpos64); fsetpos64);
# else # else
# ifdef __USE_LARGEFILE
# define fseeko fseeko64
# define ftello ftello64
# endif
# define fgetpos fgetpos64 # define fgetpos fgetpos64
# define fsetpos fsetpos64 # define fsetpos fsetpos64
# endif # endif
#endif #endif
__END_NAMESPACE_STD
#ifdef __USE_LARGEFILE64 #ifdef __USE_LARGEFILE64
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW; extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW;
@ -527,12 +570,14 @@ extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos)
extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW; extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Clear the error and EOF indicators for STREAM. */ /* Clear the error and EOF indicators for STREAM. */
extern void clearerr (FILE *__stream) __THROW; extern void clearerr (FILE *__stream) __THROW;
/* Return the EOF indicator for STREAM. */ /* Return the EOF indicator for STREAM. */
extern int feof (FILE *__stream) __THROW; extern int feof (FILE *__stream) __THROW;
/* Return the error indicator for STREAM. */ /* Return the error indicator for STREAM. */
extern int ferror (FILE *__stream) __THROW; extern int ferror (FILE *__stream) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_MISC #ifdef __USE_MISC
/* Faster versions when locking is not required. */ /* Faster versions when locking is not required. */
@ -542,8 +587,10 @@ extern int ferror_unlocked (FILE *__stream) __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Print a message describing the meaning of the value of errno. */ /* Print a message describing the meaning of the value of errno. */
extern void perror (__const char *__s) __THROW; extern void perror (__const char *__s) __THROW;
__END_NAMESPACE_STD
/* Provide the declarations for `sys_errlist' and `sys_nerr' if they /* Provide the declarations for `sys_errlist' and `sys_nerr' if they
are available on this system. Even if available, these variables are available on this system. Even if available, these variables

View File

@ -119,12 +119,17 @@ struct lconv
}; };
__BEGIN_NAMESPACE_STD
/* Set and/or return the current locale. */ /* Set and/or return the current locale. */
extern char *setlocale (int __category, __const char *__locale) __THROW; extern char *setlocale (int __category, __const char *__locale) __THROW;
/* Return the numeric/monetary information for the current locale. */ /* Return the numeric/monetary information for the current locale. */
extern struct lconv *localeconv (void) __THROW; extern struct lconv *localeconv (void) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
/* The concept of one static locale per category is not very well /* The concept of one static locale per category is not very well
thought out. Many applications will need to process its data using thought out. Many applications will need to process its data using

View File

@ -1,5 +1,5 @@
/* Prototype declarations for math functions; helper file for <math.h>. /* Prototype declarations for math functions; helper file for <math.h>.
Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -44,12 +44,13 @@
NAME, to make token pasting work with -traditional. */ NAME, to make token pasting work with -traditional. */
#ifndef _MATH_H #ifndef _MATH_H
#error "Never include <bits/mathcalls.h> directly; include <math.h> instead." # error "Never include <bits/mathcalls.h> directly; include <math.h> instead."
#endif #endif
/* Trigonometric functions. */ /* Trigonometric functions. */
_Mdouble_BEGIN_NAMESPACE
/* Arc cosine of X. */ /* Arc cosine of X. */
__MATHCALL (acos,, (_Mdouble_ __x)); __MATHCALL (acos,, (_Mdouble_ __x));
/* Arc sine of X. */ /* Arc sine of X. */
@ -66,12 +67,6 @@ __MATHCALL (sin,, (_Mdouble_ __x));
/* Tangent of X. */ /* Tangent of X. */
__MATHCALL (tan,, (_Mdouble_ __x)); __MATHCALL (tan,, (_Mdouble_ __x));
#ifdef __USE_GNU
/* Cosine and sine of X. */
__MATHDECL (void,sincos,,
(_Mdouble_ __x, _Mdouble_ *__sinx, _Mdouble_ *__cosx));
#endif
/* Hyperbolic functions. */ /* Hyperbolic functions. */
/* Hyperbolic cosine of X. */ /* Hyperbolic cosine of X. */
@ -80,28 +75,31 @@ __MATHCALL (cosh,, (_Mdouble_ __x));
__MATHCALL (sinh,, (_Mdouble_ __x)); __MATHCALL (sinh,, (_Mdouble_ __x));
/* Hyperbolic tangent of X. */ /* Hyperbolic tangent of X. */
__MATHCALL (tanh,, (_Mdouble_ __x)); __MATHCALL (tanh,, (_Mdouble_ __x));
_Mdouble_END_NAMESPACE
#ifdef __USE_GNU
/* Cosine and sine of X. */
__MATHDECL (void,sincos,,
(_Mdouble_ __x, _Mdouble_ *__sinx, _Mdouble_ *__cosx));
#endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Hyperbolic arc cosine of X. */ /* Hyperbolic arc cosine of X. */
__MATHCALL (acosh,, (_Mdouble_ __x)); __MATHCALL (acosh,, (_Mdouble_ __x));
/* Hyperbolic arc sine of X. */ /* Hyperbolic arc sine of X. */
__MATHCALL (asinh,, (_Mdouble_ __x)); __MATHCALL (asinh,, (_Mdouble_ __x));
/* Hyperbolic arc tangent of X. */ /* Hyperbolic arc tangent of X. */
__MATHCALL (atanh,, (_Mdouble_ __x)); __MATHCALL (atanh,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif #endif
/* Exponential and logarithmic functions. */ /* Exponential and logarithmic functions. */
_Mdouble_BEGIN_NAMESPACE
/* Exponential function of X. */ /* Exponential function of X. */
__MATHCALL (exp,, (_Mdouble_ __x)); __MATHCALL (exp,, (_Mdouble_ __x));
#ifdef __USE_GNU
/* A function missing in all standards: compute exponent to base ten. */
__MATHCALL (exp10,, (_Mdouble_ __x));
/* Another name occasionally used. */
__MATHCALL (pow10,, (_Mdouble_ __x));
#endif
/* Break VALUE into a normalized fraction and an integral power of 2. */ /* Break VALUE into a normalized fraction and an integral power of 2. */
__MATHCALL (frexp,, (_Mdouble_ __x, int *__exponent)); __MATHCALL (frexp,, (_Mdouble_ __x, int *__exponent));
@ -116,8 +114,17 @@ __MATHCALL (log10,, (_Mdouble_ __x));
/* Break VALUE into integral and fractional parts. */ /* Break VALUE into integral and fractional parts. */
__MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)); __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr));
_Mdouble_END_NAMESPACE
#ifdef __USE_GNU
/* A function missing in all standards: compute exponent to base ten. */
__MATHCALL (exp10,, (_Mdouble_ __x));
/* Another name occasionally used. */
__MATHCALL (pow10,, (_Mdouble_ __x));
#endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return exp(X) - 1. */ /* Return exp(X) - 1. */
__MATHCALL (expm1,, (_Mdouble_ __x)); __MATHCALL (expm1,, (_Mdouble_ __x));
@ -126,38 +133,48 @@ __MATHCALL (log1p,, (_Mdouble_ __x));
/* Return the base 2 signed integral exponent of X. */ /* Return the base 2 signed integral exponent of X. */
__MATHCALL (logb,, (_Mdouble_ __x)); __MATHCALL (logb,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif #endif
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Compute base-2 exponential of X. */ /* Compute base-2 exponential of X. */
__MATHCALL (exp2,, (_Mdouble_ __x)); __MATHCALL (exp2,, (_Mdouble_ __x));
/* Compute base-2 logarithm of X. */ /* Compute base-2 logarithm of X. */
__MATHCALL (log2,, (_Mdouble_ __x)); __MATHCALL (log2,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif #endif
/* Power functions. */ /* Power functions. */
_Mdouble_BEGIN_NAMESPACE
/* Return X to the Y power. */ /* Return X to the Y power. */
__MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y)); __MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y));
/* Return the square root of X. */ /* Return the square root of X. */
__MATHCALL (sqrt,, (_Mdouble_ __x)); __MATHCALL (sqrt,, (_Mdouble_ __x));
_Mdouble_END_NAMESPACE
#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return `sqrt(X*X + Y*Y)'. */ /* Return `sqrt(X*X + Y*Y)'. */
__MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y)); __MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y));
__END_NAMESPACE_C99
#endif #endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return the cube root of X. */ /* Return the cube root of X. */
__MATHCALL (cbrt,, (_Mdouble_ __x)); __MATHCALL (cbrt,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif #endif
/* Nearest integer, absolute value, and remainder functions. */ /* Nearest integer, absolute value, and remainder functions. */
_Mdouble_BEGIN_NAMESPACE
/* Smallest integral value not less than X. */ /* Smallest integral value not less than X. */
__MATHCALLX (ceil,, (_Mdouble_ __x), (__const__)); __MATHCALLX (ceil,, (_Mdouble_ __x), (__const__));
@ -177,6 +194,7 @@ __MATHDECL_1 (int,__isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
/* Return nonzero if VALUE is finite and not NaN. */ /* Return nonzero if VALUE is finite and not NaN. */
__MATHDECL_1 (int,__finite,, (_Mdouble_ __value)) __attribute__ ((__const__)); __MATHDECL_1 (int,__finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
_Mdouble_END_NAMESPACE
#ifdef __USE_MISC #ifdef __USE_MISC
/* Return 0 if VALUE is finite or NaN, +1 if it /* Return 0 if VALUE is finite or NaN, +1 if it
@ -195,13 +213,17 @@ __MATHCALL (significand,, (_Mdouble_ __x));
#endif /* Use misc. */ #endif /* Use misc. */
#if defined __USE_MISC || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return X with its signed changed to Y's. */ /* Return X with its signed changed to Y's. */
__MATHCALLX (copysign,, (_Mdouble_ __x, _Mdouble_ __y), (__const__)); __MATHCALLX (copysign,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
__END_NAMESPACE_C99
#endif #endif
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return representation of NaN for double type. */ /* Return representation of NaN for double type. */
__MATHCALLX (nan,, (__const char *__tagb), (__const__)); __MATHCALLX (nan,, (__const char *__tagb), (__const__));
__END_NAMESPACE_C99
#endif #endif
@ -223,14 +245,19 @@ __MATHCALL (yn,, (int, _Mdouble_));
#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Error and gamma functions. */ /* Error and gamma functions. */
__MATHCALL (erf,, (_Mdouble_)); __MATHCALL (erf,, (_Mdouble_));
__MATHCALL (erfc,, (_Mdouble_)); __MATHCALL (erfc,, (_Mdouble_));
__MATHCALL (lgamma,, (_Mdouble_)); __MATHCALL (lgamma,, (_Mdouble_));
__END_NAMESPACE_C99
#endif #endif
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* True gamma function. */
__MATHCALL (tgamma,, (_Mdouble_)); __MATHCALL (tgamma,, (_Mdouble_));
__END_NAMESPACE_C99
#endif #endif
#if defined __USE_MISC || defined __USE_XOPEN #if defined __USE_MISC || defined __USE_XOPEN
@ -247,6 +274,7 @@ __MATHCALL (lgamma,_r, (_Mdouble_, int *__signgamp));
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return the integer nearest X in the direction of the /* Return the integer nearest X in the direction of the
prevailing rounding mode. */ prevailing rounding mode. */
__MATHCALL (rint,, (_Mdouble_ __x)); __MATHCALL (rint,, (_Mdouble_ __x));
@ -260,11 +288,6 @@ __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
/* Return the remainder of integer divison X / Y with infinite precision. */ /* Return the remainder of integer divison X / Y with infinite precision. */
__MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y)); __MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y));
# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
/* Return X times (2 to the Nth power). */
__MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));
# endif
# if defined __USE_MISC || defined __USE_ISOC99 # if defined __USE_MISC || defined __USE_ISOC99
/* Return X times (2 to the Nth power). */ /* Return X times (2 to the Nth power). */
__MATHCALL (scalbn,, (_Mdouble_ __x, int __n)); __MATHCALL (scalbn,, (_Mdouble_ __x, int __n));
@ -330,4 +353,10 @@ __MATHDECL_1 (int, __signbit,, (_Mdouble_ __value))
/* Multiply-add function computed as a ternary operation. */ /* Multiply-add function computed as a ternary operation. */
__MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z)); __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z));
__END_NAMESPACE_C99
# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
/* Return X times (2 to the Nth power). */
__MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));
# endif
#endif /* Use ISO C99. */ #endif /* Use ISO C99. */

View File

@ -1,5 +1,5 @@
/* Declarations for math functions. /* Declarations for math functions.
Copyright (C) 1991,92,93,95,96,97,98,99,2001 Free Software Foundation, Inc. Copyright (C) 1991-1993,1995-1999,2001,2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -60,8 +60,12 @@ __BEGIN_DECLS
#define _Mdouble_ double #define _Mdouble_ double
#define __MATH_PRECNAME(name,r) __CONCAT(name,r) #define __MATH_PRECNAME(name,r) __CONCAT(name,r)
# define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_STD
# define _Mdouble_END_NAMESPACE __END_NAMESPACE_STD
#include <bits/mathcalls.h> #include <bits/mathcalls.h>
#undef _Mdouble_ #undef _Mdouble_
#undef _Mdouble_BEGIN_NAMESPACE
#undef _Mdouble_END_NAMESPACE
#undef __MATH_PRECNAME #undef __MATH_PRECNAME
#if defined __USE_MISC || defined __USE_ISOC99 #if defined __USE_MISC || defined __USE_ISOC99
@ -79,8 +83,12 @@ __BEGIN_DECLS
# else # else
# define __MATH_PRECNAME(name,r) name/**/f/**/r # define __MATH_PRECNAME(name,r) name/**/f/**/r
# endif # endif
# define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
# define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
# include <bits/mathcalls.h> # include <bits/mathcalls.h>
# undef _Mdouble_ # undef _Mdouble_
# undef _Mdouble_BEGIN_NAMESPACE
# undef _Mdouble_END_NAMESPACE
# undef __MATH_PRECNAME # undef __MATH_PRECNAME
# if (__STDC__ - 0 || __GNUC__ - 0) && !defined __NO_LONG_DOUBLE_MATH # if (__STDC__ - 0 || __GNUC__ - 0) && !defined __NO_LONG_DOUBLE_MATH
@ -96,8 +104,12 @@ __BEGIN_DECLS
# else # else
# define __MATH_PRECNAME(name,r) name/**/l/**/r # define __MATH_PRECNAME(name,r) name/**/l/**/r
# endif # endif
# define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
# define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
# include <bits/mathcalls.h> # include <bits/mathcalls.h>
# undef _Mdouble_ # undef _Mdouble_
# undef _Mdouble_BEGIN_NAMESPACE
# undef _Mdouble_END_NAMESPACE
# undef __MATH_PRECNAME # undef __MATH_PRECNAME
# endif /* __STDC__ || __GNUC__ */ # endif /* __STDC__ || __GNUC__ */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991-1999, 2001 Free Software Foundation, Inc. /* Copyright (C) 1991-1999, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -30,6 +30,8 @@ __BEGIN_DECLS
#include <bits/setjmp.h> /* Get `__jmp_buf'. */ #include <bits/setjmp.h> /* Get `__jmp_buf'. */
#include <bits/sigset.h> /* Get `__sigset_t'. */ #include <bits/sigset.h> /* Get `__sigset_t'. */
__BEGIN_NAMESPACE_STD
/* Calling environment, plus possibly a saved signal mask. */ /* Calling environment, plus possibly a saved signal mask. */
typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */ typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */
{ {
@ -47,16 +49,19 @@ typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */
Return 0. */ Return 0. */
extern int setjmp (jmp_buf __env) __THROW; extern int setjmp (jmp_buf __env) __THROW;
/* Store the calling environment in ENV, not saving the signal mask. __END_NAMESPACE_STD
Return 0. */ __USING_NAMESPACE_STD(__jmp_buf_tag)
extern int _setjmp (jmp_buf __env) __THROW;
/* Store the calling environment in ENV, also saving the /* Store the calling environment in ENV, also saving the
signal mask if SAVEMASK is nonzero. Return 0. signal mask if SAVEMASK is nonzero. Return 0.
This is the internal name for `sigsetjmp'. */ This is the internal name for `sigsetjmp'. */
extern int __sigsetjmp (jmp_buf __env, int __savemask) __THROW; extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW;
#ifndef __FAVOR_BSD #ifndef __FAVOR_BSD
/* Store the calling environment in ENV, not saving the signal mask.
Return 0. */
extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROW;
/* Do not save the signal mask. This is equivalent to the `_setjmp' /* Do not save the signal mask. This is equivalent to the `_setjmp'
BSD function. */ BSD function. */
# define setjmp(env) _setjmp (env) # define setjmp(env) _setjmp (env)
@ -68,15 +73,20 @@ extern int __sigsetjmp (jmp_buf __env, int __savemask) __THROW;
#endif /* Favor BSD. */ #endif /* Favor BSD. */
__BEGIN_NAMESPACE_STD
/* Jump to the environment saved in ENV, making the /* Jump to the environment saved in ENV, making the
`setjmp' call there return VAL, or 1 if VAL is 0. */ `setjmp' call there return VAL, or 1 if VAL is 0. */
extern void longjmp (jmp_buf __env, int __val) extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
__THROW __attribute__ ((__noreturn__)); __THROW __attribute__ ((__noreturn__));
__END_NAMESPACE_STD
#if defined __USE_BSD || defined __USE_XOPEN #if defined __USE_BSD || defined __USE_XOPEN
/* Same. Usually `_longjmp' is used with `_setjmp', which does not save /* Same. Usually `_longjmp' is used with `_setjmp', which does not save
the signal mask. But it is how ENV was saved that determines whether the signal mask. But it is how ENV was saved that determines whether
`longjmp' restores the mask; `_longjmp' is just an alias. */ `longjmp' restores the mask; `_longjmp' is just an alias. */
extern void _longjmp (jmp_buf __env, int __val) extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
__THROW __attribute__ ((__noreturn__)); __THROW __attribute__ ((__noreturn__));
#endif #endif
@ -85,7 +95,7 @@ extern void _longjmp (jmp_buf __env, int __val)
/* Use the same type for `jmp_buf' and `sigjmp_buf'. /* Use the same type for `jmp_buf' and `sigjmp_buf'.
The `__mask_was_saved' flag determines whether The `__mask_was_saved' flag determines whether
or not `longjmp' will restore the signal mask. */ or not `longjmp' will restore the signal mask. */
typedef jmp_buf sigjmp_buf; typedef struct __jmp_buf_tag sigjmp_buf[1];
/* Store the calling environment in ENV, also saving the /* Store the calling environment in ENV, also saving the
signal mask if SAVEMASK is nonzero. Return 0. */ signal mask if SAVEMASK is nonzero. Return 0. */

View File

@ -37,7 +37,9 @@ __BEGIN_DECLS
#if defined __need_sig_atomic_t || defined _SIGNAL_H #if defined __need_sig_atomic_t || defined _SIGNAL_H
# ifndef __sig_atomic_t_defined # ifndef __sig_atomic_t_defined
# define __sig_atomic_t_defined # define __sig_atomic_t_defined
__BEGIN_NAMESPACE_STD
typedef __sig_atomic_t sig_atomic_t; typedef __sig_atomic_t sig_atomic_t;
__END_NAMESPACE_STD
# endif # endif
# undef __need_sig_atomic_t # undef __need_sig_atomic_t
#endif #endif
@ -83,6 +85,7 @@ extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
/* Set the handler for the signal SIG to HANDLER, returning the old /* Set the handler for the signal SIG to HANDLER, returning the old
handler, or SIG_ERR on error. handler, or SIG_ERR on error.
By default `signal' has the BSD semantic. */ By default `signal' has the BSD semantic. */
__BEGIN_NAMESPACE_STD
#ifdef __USE_BSD #ifdef __USE_BSD
extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW; extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW;
#else #else
@ -96,6 +99,7 @@ extern __sighandler_t __REDIRECT (signal,
# define signal __sysv_signal # define signal __sysv_signal
# endif # endif
#endif #endif
__END_NAMESPACE_STD
#ifdef __USE_XOPEN #ifdef __USE_XOPEN
/* The X/Open definition of `signal' conflicts with the BSD version. /* The X/Open definition of `signal' conflicts with the BSD version.
@ -117,8 +121,10 @@ extern int kill (__pid_t __pid, int __sig) __THROW;
extern int killpg (__pid_t __pgrp, int __sig) __THROW; extern int killpg (__pid_t __pgrp, int __sig) __THROW;
#endif /* Use BSD || X/Open Unix. */ #endif /* Use BSD || X/Open Unix. */
__BEGIN_NAMESPACE_STD
/* Raise signal SIG, i.e., send SIG to yourself. */ /* Raise signal SIG, i.e., send SIG to yourself. */
extern int raise (int __sig) __THROW; extern int raise (int __sig) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_SVID #ifdef __USE_SVID
/* SVID names for the same things. */ /* SVID names for the same things. */

View File

@ -90,6 +90,7 @@ typedef union
# define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status)) # define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
#endif /* X/Open and <sys/wait.h> not included. */ #endif /* X/Open and <sys/wait.h> not included. */
__BEGIN_NAMESPACE_STD
/* Returned by `div'. */ /* Returned by `div'. */
typedef struct typedef struct
{ {
@ -106,8 +107,10 @@ typedef struct
} ldiv_t; } ldiv_t;
# define __ldiv_t_defined 1 # define __ldiv_t_defined 1
#endif #endif
__END_NAMESPACE_STD
#if defined __USE_ISOC99 && !defined __lldiv_t_defined #if defined __USE_ISOC99 && !defined __lldiv_t_defined
__BEGIN_NAMESPACE_C99
/* Returned by `lldiv'. */ /* Returned by `lldiv'. */
__extension__ typedef struct __extension__ typedef struct
{ {
@ -115,6 +118,7 @@ __extension__ typedef struct
long long int rem; /* Remainder. */ long long int rem; /* Remainder. */
} lldiv_t; } lldiv_t;
# define __lldiv_t_defined 1 # define __lldiv_t_defined 1
__END_NAMESPACE_C99
#endif #endif
@ -133,32 +137,41 @@ __extension__ typedef struct
extern size_t __ctype_get_mb_cur_max (void) __THROW; extern size_t __ctype_get_mb_cur_max (void) __THROW;
__BEGIN_NAMESPACE_STD
/* Convert a string to a floating-point number. */ /* Convert a string to a floating-point number. */
extern double atof (__const char *__nptr) __THROW __attribute_pure__; extern double atof (__const char *__nptr) __THROW __attribute_pure__;
/* Convert a string to an integer. */ /* Convert a string to an integer. */
extern int atoi (__const char *__nptr) __THROW __attribute_pure__; extern int atoi (__const char *__nptr) __THROW __attribute_pure__;
/* Convert a string to a long integer. */ /* Convert a string to a long integer. */
extern long int atol (__const char *__nptr) __THROW __attribute_pure__; extern long int atol (__const char *__nptr) __THROW __attribute_pure__;
__END_NAMESPACE_STD
#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC) #if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
__BEGIN_NAMESPACE_C99
/* Convert a string to a long long integer. */ /* Convert a string to a long long integer. */
__extension__ extern long long int atoll (__const char *__nptr) __extension__ extern long long int atoll (__const char *__nptr)
__THROW __attribute_pure__; __THROW __attribute_pure__;
__END_NAMESPACE_C99
#endif #endif
__BEGIN_NAMESPACE_STD
/* Convert a string to a floating-point number. */ /* Convert a string to a floating-point number. */
extern double strtod (__const char *__restrict __nptr, extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW; char **__restrict __endptr) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Likewise for `float' and `long double' sizes of floating-point numbers. */ /* Likewise for `float' and `long double' sizes of floating-point numbers. */
extern float strtof (__const char *__restrict __nptr, extern float strtof (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW; char **__restrict __endptr) __THROW;
extern long double strtold (__const char *__restrict __nptr, extern long double strtold (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW; char **__restrict __endptr) __THROW;
__END_NAMESPACE_C99
#endif #endif
__BEGIN_NAMESPACE_STD
/* Convert a string to a long integer. */ /* Convert a string to a long integer. */
extern long int strtol (__const char *__restrict __nptr, extern long int strtol (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) __THROW; char **__restrict __endptr, int __base) __THROW;
@ -166,6 +179,7 @@ extern long int strtol (__const char *__restrict __nptr,
extern unsigned long int strtoul (__const char *__restrict __nptr, extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) char **__restrict __endptr, int __base)
__THROW; __THROW;
__END_NAMESPACE_C99
#if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD #if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD
/* Convert a string to a quadword integer. */ /* Convert a string to a quadword integer. */
@ -180,8 +194,7 @@ extern unsigned long long int strtouq (__const char *__restrict __nptr,
#endif /* GCC and use BSD. */ #endif /* GCC and use BSD. */
#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC) #if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
/* These functions will part of the standard C library in ISO C99. */ __BEGIN_NAMESPACE_C99
/* Convert a string to a quadword integer. */ /* Convert a string to a quadword integer. */
__extension__ __extension__
extern long long int strtoll (__const char *__restrict __nptr, extern long long int strtoll (__const char *__restrict __nptr,
@ -191,6 +204,7 @@ __extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr, extern unsigned long long int strtoull (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) char **__restrict __endptr, int __base)
__THROW; __THROW;
__END_NAMESPACE_C99
#endif /* ISO C99 or GCC and use MISC. */ #endif /* ISO C99 or GCC and use MISC. */
@ -290,6 +304,7 @@ extern unsigned long long int __strtoull_internal (__const char *
#ifdef __USE_EXTERN_INLINES #ifdef __USE_EXTERN_INLINES
/* Define inline functions which call the internal entry points. */ /* Define inline functions which call the internal entry points. */
__BEGIN_NAMESPACE_STD
extern __inline double extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
{ {
@ -307,8 +322,10 @@ strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
{ {
return __strtoul_internal (__nptr, __endptr, __base, 0); return __strtoul_internal (__nptr, __endptr, __base, 0);
} }
__END_NAMESPACE_STD
# ifdef __USE_ISOC99 # ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
extern __inline float extern __inline float
strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
{ {
@ -319,6 +336,7 @@ strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
{ {
return __strtold_internal (__nptr, __endptr, 0); return __strtold_internal (__nptr, __endptr, 0);
} }
__END_NAMESPACE_C99
# endif # endif
# ifdef __USE_BSD # ifdef __USE_BSD
@ -337,6 +355,7 @@ strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
# endif # endif
# if defined __USE_MISC || defined __USE_ISOC99 # if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ extern __inline long long int __extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr, strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
int __base) __THROW int __base) __THROW
@ -349,8 +368,10 @@ strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
{ {
return __strtoull_internal (__nptr, __endptr, __base, 0); return __strtoull_internal (__nptr, __endptr, __base, 0);
} }
__END_NAMESPACE_C99
# endif # endif
__BEGIN_NAMESPACE_STD
extern __inline double extern __inline double
atof (__const char *__nptr) __THROW atof (__const char *__nptr) __THROW
{ {
@ -366,13 +387,16 @@ atol (__const char *__nptr) __THROW
{ {
return strtol (__nptr, (char **) NULL, 10); return strtol (__nptr, (char **) NULL, 10);
} }
__END_NAMESPACE_STD
# if defined __USE_MISC || defined __USE_ISOC99 # if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ extern __inline long long int __extension__ extern __inline long long int
atoll (__const char *__nptr) __THROW atoll (__const char *__nptr) __THROW
{ {
return strtoll (__nptr, (char **) NULL, 10); return strtoll (__nptr, (char **) NULL, 10);
} }
__END_NAMESPACE_C99
# endif # endif
#endif /* Optimizing and Inlining. */ #endif /* Optimizing and Inlining. */
@ -442,10 +466,12 @@ extern int setstate_r (char *__restrict __statebuf,
#endif /* Use SVID || extended X/Open. */ #endif /* Use SVID || extended X/Open. */
__BEGIN_NAMESPACE_STD
/* Return a random integer between 0 and RAND_MAX inclusive. */ /* Return a random integer between 0 and RAND_MAX inclusive. */
extern int rand (void) __THROW; extern int rand (void) __THROW;
/* Seed the random number generator with the given number. */ /* Seed the random number generator with the given number. */
extern void srand (unsigned int __seed) __THROW; extern void srand (unsigned int __seed) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_POSIX #ifdef __USE_POSIX
/* Reentrant interface according to POSIX.1. */ /* Reentrant interface according to POSIX.1. */
@ -522,20 +548,24 @@ extern int lcong48_r (unsigned short int __param[7],
#endif /* don't just need malloc and calloc */ #endif /* don't just need malloc and calloc */
#ifndef __malloc_and_calloc_defined #ifndef __malloc_and_calloc_defined
#define __malloc_and_calloc_defined # define __malloc_and_calloc_defined
__BEGIN_NAMESPACE_STD
/* Allocate SIZE bytes of memory. */ /* Allocate SIZE bytes of memory. */
extern void *malloc (size_t __size) __THROW __attribute_malloc__; extern void *malloc (size_t __size) __THROW __attribute_malloc__;
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
extern void *calloc (size_t __nmemb, size_t __size) extern void *calloc (size_t __nmemb, size_t __size)
__THROW __attribute_malloc__; __THROW __attribute_malloc__;
__END_NAMESPACE_STD
#endif #endif
#ifndef __need_malloc_and_calloc #ifndef __need_malloc_and_calloc
__BEGIN_NAMESPACE_STD
/* Re-allocate the previously allocated block /* Re-allocate the previously allocated block
in PTR, making the new block SIZE bytes long. */ in PTR, making the new block SIZE bytes long. */
extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__; extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__;
/* Free a block allocated by `malloc', `realloc' or `calloc'. */ /* Free a block allocated by `malloc', `realloc' or `calloc'. */
extern void free (void *__ptr) __THROW; extern void free (void *__ptr) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_MISC #ifdef __USE_MISC
/* Free a block. An alias for `free'. (Sun Unices). */ /* Free a block. An alias for `free'. (Sun Unices). */
@ -557,12 +587,14 @@ extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__THROW __attribute_malloc__; __THROW __attribute_malloc__;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Abort execution and generate a core-dump. */ /* Abort execution and generate a core-dump. */
extern void abort (void) __THROW __attribute__ ((__noreturn__)); extern void abort (void) __THROW __attribute__ ((__noreturn__));
/* Register a function to be called when `exit' is called. */ /* Register a function to be called when `exit' is called. */
extern int atexit (void (*__func) (void)) __THROW; extern int atexit (void (*__func) (void)) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_MISC #ifdef __USE_MISC
/* Register a function to be called with the status /* Register a function to be called with the status
@ -571,20 +603,26 @@ extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
__THROW; __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Call all functions registered with `atexit' and `on_exit', /* Call all functions registered with `atexit' and `on_exit',
in the reverse of the order in which they were registered in the reverse of the order in which they were registered
perform stdio cleanup, and terminate program execution with STATUS. */ perform stdio cleanup, and terminate program execution with STATUS. */
extern void exit (int __status) __THROW __attribute__ ((__noreturn__)); extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Terminate the program with STATUS without calling any of the /* Terminate the program with STATUS without calling any of the
functions registered with `atexit' or `on_exit'. */ functions registered with `atexit' or `on_exit'. */
extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__)); extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__));
__END_NAMESPACE_C99
#endif #endif
__BEGIN_NAMESPACE_STD
/* Return the value of envariable NAME, or NULL if it doesn't exist. */ /* Return the value of envariable NAME, or NULL if it doesn't exist. */
extern char *getenv (__const char *__name) __THROW; extern char *getenv (__const char *__name) __THROW;
__END_NAMESPACE_STD
/* This function is similar to the above but returns NULL if the /* This function is similar to the above but returns NULL if the
programs is running with SUID or SGID enabled. */ programs is running with SUID or SGID enabled. */
@ -651,8 +689,10 @@ extern char *mkdtemp (char *__template) __THROW;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Execute the given line as a shell command. */ /* Execute the given line as a shell command. */
extern int system (__const char *__command) __THROW; extern int system (__const char *__command) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
@ -684,6 +724,7 @@ typedef __compar_fn_t comparison_fn_t;
# endif # endif
#endif #endif
__BEGIN_NAMESPACE_STD
/* Do a binary search for KEY in BASE, which consists of NMEMB elements /* Do a binary search for KEY in BASE, which consists of NMEMB elements
of SIZE bytes each, using COMPAR to perform the comparisons. */ of SIZE bytes each, using COMPAR to perform the comparisons. */
extern void *bsearch (__const void *__key, __const void *__base, extern void *bsearch (__const void *__key, __const void *__base,
@ -698,12 +739,15 @@ extern void qsort (void *__base, size_t __nmemb, size_t __size,
/* Return the absolute value of X. */ /* Return the absolute value of X. */
extern int abs (int __x) __THROW __attribute__ ((__const__)); extern int abs (int __x) __THROW __attribute__ ((__const__));
extern long int labs (long int __x) __THROW __attribute__ ((__const__)); extern long int labs (long int __x) __THROW __attribute__ ((__const__));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__extension__ extern long long int llabs (long long int __x) __extension__ extern long long int llabs (long long int __x)
__THROW __attribute__ ((__const__)); __THROW __attribute__ ((__const__));
#endif #endif
__BEGIN_NAMESPACE_STD
/* Return the `div_t', `ldiv_t' or `lldiv_t' representation /* Return the `div_t', `ldiv_t' or `lldiv_t' representation
of the value of NUMER over DENOM. */ of the value of NUMER over DENOM. */
/* GCC may have built-ins for these someday. */ /* GCC may have built-ins for these someday. */
@ -711,10 +755,14 @@ extern div_t div (int __numer, int __denom)
__THROW __attribute__ ((__const__)); __THROW __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom) extern ldiv_t ldiv (long int __numer, long int __denom)
__THROW __attribute__ ((__const__)); __THROW __attribute__ ((__const__));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ extern lldiv_t lldiv (long long int __numer, __extension__ extern lldiv_t lldiv (long long int __numer,
long long int __denom) long long int __denom)
__THROW __attribute__ ((__const__)); __THROW __attribute__ ((__const__));
__END_NAMESPACE_C99
#endif #endif
@ -768,6 +816,7 @@ extern int qfcvt_r (long double __value, int __ndigit,
#endif /* use MISC || use X/Open Unix */ #endif /* use MISC || use X/Open Unix */
__BEGIN_NAMESPACE_STD
/* Return the length of the multibyte character /* Return the length of the multibyte character
in S, which is no longer than N. */ in S, which is no longer than N. */
extern int mblen (__const char *__s, size_t __n) __THROW; extern int mblen (__const char *__s, size_t __n) __THROW;
@ -787,6 +836,7 @@ extern size_t mbstowcs (wchar_t *__restrict __pwcs,
extern size_t wcstombs (char *__restrict __s, extern size_t wcstombs (char *__restrict __s,
__const wchar_t *__restrict __pwcs, size_t __n) __const wchar_t *__restrict __pwcs, size_t __n)
__THROW; __THROW;
__END_NAMESPACE_STD
#ifdef __USE_SVID #ifdef __USE_SVID

View File

@ -33,6 +33,7 @@ __BEGIN_DECLS
#include <stddef.h> #include <stddef.h>
__BEGIN_NAMESPACE_STD
/* Copy N bytes of SRC to DEST. */ /* Copy N bytes of SRC to DEST. */
extern void *memcpy (void *__restrict __dest, extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) __THROW; __const void *__restrict __src, size_t __n) __THROW;
@ -40,6 +41,7 @@ extern void *memcpy (void *__restrict __dest,
correct behavior for overlapping strings. */ correct behavior for overlapping strings. */
extern void *memmove (void *__dest, __const void *__src, size_t __n) extern void *memmove (void *__dest, __const void *__src, size_t __n)
__THROW; __THROW;
__END_NAMESPACE_STD
/* Copy no more than N bytes of SRC to DEST, stopping when C is found. /* Copy no more than N bytes of SRC to DEST, stopping when C is found.
Return the position in DEST one byte past where C was copied, Return the position in DEST one byte past where C was copied,
@ -51,6 +53,7 @@ extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
#endif /* SVID. */ #endif /* SVID. */
__BEGIN_NAMESPACE_STD
/* Set N bytes of S to C. */ /* Set N bytes of S to C. */
extern void *memset (void *__s, int __c, size_t __n) __THROW; extern void *memset (void *__s, int __c, size_t __n) __THROW;
@ -61,6 +64,7 @@ extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
/* Search N bytes of S for C. */ /* Search N bytes of S for C. */
extern void *memchr (__const void *__s, int __c, size_t __n) extern void *memchr (__const void *__s, int __c, size_t __n)
__THROW __attribute_pure__; __THROW __attribute_pure__;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
/* Search in S for C. This is similar to `memchr' but there is no /* Search in S for C. This is similar to `memchr' but there is no
@ -73,6 +77,7 @@ extern void *memrchr (__const void *__s, int __c, size_t __n)
#endif #endif
__BEGIN_NAMESPACE_STD
/* Copy SRC to DEST. */ /* Copy SRC to DEST. */
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
__THROW; __THROW;
@ -100,6 +105,7 @@ extern int strcoll (__const char *__s1, __const char *__s2)
/* Put a transformation of SRC into no more than N bytes of DEST. */ /* Put a transformation of SRC into no more than N bytes of DEST. */
extern size_t strxfrm (char *__restrict __dest, extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n) __THROW; __const char *__restrict __src, size_t __n) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
/* The following functions are equivalent to the both above but they /* The following functions are equivalent to the both above but they
@ -151,10 +157,12 @@ extern char *strndup (__const char *__string, size_t __n)
})) }))
#endif #endif
__BEGIN_NAMESPACE_STD
/* Find the first occurrence of C in S. */ /* Find the first occurrence of C in S. */
extern char *strchr (__const char *__s, int __c) __THROW __attribute_pure__; extern char *strchr (__const char *__s, int __c) __THROW __attribute_pure__;
/* Find the last occurrence of C in S. */ /* Find the last occurrence of C in S. */
extern char *strrchr (__const char *__s, int __c) __THROW __attribute_pure__; extern char *strrchr (__const char *__s, int __c) __THROW __attribute_pure__;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
/* This function is similar to `strchr'. But it returns a pointer to /* This function is similar to `strchr'. But it returns a pointer to
@ -162,6 +170,7 @@ extern char *strrchr (__const char *__s, int __c) __THROW __attribute_pure__;
extern char *strchrnul (__const char *__s, int __c) __THROW __attribute_pure__; extern char *strchrnul (__const char *__s, int __c) __THROW __attribute_pure__;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Return the length of the initial segment of S which /* Return the length of the initial segment of S which
consists entirely of characters not in REJECT. */ consists entirely of characters not in REJECT. */
extern size_t strcspn (__const char *__s, __const char *__reject) extern size_t strcspn (__const char *__s, __const char *__reject)
@ -177,15 +186,11 @@ extern char *strpbrk (__const char *__s, __const char *__accept)
extern char *strstr (__const char *__haystack, __const char *__needle) extern char *strstr (__const char *__haystack, __const char *__needle)
__THROW __attribute_pure__; __THROW __attribute_pure__;
#ifdef __USE_GNU
/* Similar to `strstr' but this function ignores the case of both strings. */
extern char *strcasestr (__const char *__haystack, __const char *__needle)
__THROW __attribute_pure__;
#endif
/* Divide S into tokens separated by characters in DELIM. */ /* Divide S into tokens separated by characters in DELIM. */
extern char *strtok (char *__restrict __s, __const char *__restrict __delim) extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
__THROW; __THROW;
__END_NAMESPACE_STD
/* Divide S into tokens separated by characters in DELIM. Information /* Divide S into tokens separated by characters in DELIM. Information
passed between calls are stored in SAVE_PTR. */ passed between calls are stored in SAVE_PTR. */
@ -197,6 +202,12 @@ extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr) __THROW; char **__restrict __save_ptr) __THROW;
#endif #endif
#ifdef __USE_GNU
/* Similar to `strstr' but this function ignores the case of both strings. */
extern char *strcasestr (__const char *__haystack, __const char *__needle)
__THROW __attribute_pure__;
#endif
#ifdef __USE_GNU #ifdef __USE_GNU
/* Find the first occurrence of NEEDLE in HAYSTACK. /* Find the first occurrence of NEEDLE in HAYSTACK.
NEEDLE is NEEDLELEN bytes long; NEEDLE is NEEDLELEN bytes long;
@ -214,8 +225,10 @@ extern void *mempcpy (void *__restrict __dest,
#endif #endif
__BEGIN_NAMESPACE_STD
/* Return the length of S. */ /* Return the length of S. */
extern size_t strlen (__const char *__s) __THROW __attribute_pure__; extern size_t strlen (__const char *__s) __THROW __attribute_pure__;
__END_NAMESPACE_STD
#ifdef __USE_GNU #ifdef __USE_GNU
/* Find the length of STRING, but scan at most MAXLEN characters. /* Find the length of STRING, but scan at most MAXLEN characters.
@ -225,8 +238,10 @@ extern size_t strnlen (__const char *__string, size_t __maxlen)
#endif #endif
__BEGIN_NAMESPACE_STD
/* Return a string describing the meaning of the `errno' code in ERRNUM. */ /* Return a string describing the meaning of the `errno' code in ERRNUM. */
extern char *strerror (int __errnum) __THROW; extern char *strerror (int __errnum) __THROW;
__END_NAMESPACE_STD
#if defined __USE_XOPEN2K || defined __USE_MISC #if defined __USE_XOPEN2K || defined __USE_MISC
/* Reentrant version of `strerror'. If a temporary buffer is required, at /* Reentrant version of `strerror'. If a temporary buffer is required, at
most BUFLEN bytes of BUF will be used. */ most BUFLEN bytes of BUF will be used. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991-1999,2000,01,02 Free Software Foundation, Inc. /* Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -55,8 +55,13 @@ __BEGIN_DECLS
# include <bits/types.h> # include <bits/types.h>
__BEGIN_NAMESPACE_STD
/* Returned by `clock'. */ /* Returned by `clock'. */
typedef __clock_t clock_t; typedef __clock_t clock_t;
__END_NAMESPACE_STD
#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC
__USING_NAMESPACE_STD(clock_t)
#endif
#endif /* clock_t not defined and <time.h> or need clock_t. */ #endif /* clock_t not defined and <time.h> or need clock_t. */
#undef __need_clock_t #undef __need_clock_t
@ -66,8 +71,13 @@ typedef __clock_t clock_t;
# include <bits/types.h> # include <bits/types.h>
__BEGIN_NAMESPACE_STD
/* Returned by `time'. */ /* Returned by `time'. */
typedef __time_t time_t; typedef __time_t time_t;
__END_NAMESPACE_STD
#if defined __USE_POSIX || defined __USE_MISC || defined __USE_SVID
__USING_NAMESPACE_STD(time_t)
#endif
#endif /* time_t not defined and <time.h> or need time_t. */ #endif /* time_t not defined and <time.h> or need time_t. */
#undef __need_time_t #undef __need_time_t
@ -114,6 +124,7 @@ struct timespec
#ifdef _TIME_H #ifdef _TIME_H
__BEGIN_NAMESPACE_STD
/* Used by other time functions. */ /* Used by other time functions. */
struct tm struct tm
{ {
@ -127,14 +138,18 @@ struct tm
int tm_yday; /* Days in year.[0-365] */ int tm_yday; /* Days in year.[0-365] */
int tm_isdst; /* DST. [-1/0/1]*/ int tm_isdst; /* DST. [-1/0/1]*/
# ifdef __USE_BSD #ifdef __USE_BSD
long int tm_gmtoff; /* Seconds east of UTC. */ long int tm_gmtoff; /* Seconds east of UTC. */
__const char *tm_zone; /* Timezone abbreviation. */ __const char *tm_zone; /* Timezone abbreviation. */
# else #else
long int __tm_gmtoff; /* Seconds east of UTC. */ long int __tm_gmtoff; /* Seconds east of UTC. */
__const char *__tm_zone; /* Timezone abbreviation. */ __const char *__tm_zone; /* Timezone abbreviation. */
# endif #endif
}; };
__END_NAMESPACE_STD
#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC
__USING_NAMESPACE_STD(tm)
#endif
#ifdef __USE_POSIX199309 #ifdef __USE_POSIX199309
@ -158,6 +173,7 @@ typedef __pid_t pid_t;
#endif #endif
__BEGIN_NAMESPACE_STD
/* Time used by the program so far (user time + system time). /* Time used by the program so far (user time + system time).
The result / CLOCKS_PER_SECOND is program time in seconds. */ The result / CLOCKS_PER_SECOND is program time in seconds. */
extern clock_t clock (void) __THROW; extern clock_t clock (void) __THROW;
@ -179,6 +195,7 @@ extern time_t mktime (struct tm *__tp) __THROW;
extern size_t strftime (char *__restrict __s, size_t __maxsize, extern size_t strftime (char *__restrict __s, size_t __maxsize,
__const char *__restrict __format, __const char *__restrict __format,
__const struct tm *__restrict __tp) __THROW; __const struct tm *__restrict __tp) __THROW;
__END_NAMESPACE_STD
# ifdef __USE_XOPEN # ifdef __USE_XOPEN
/* Parse S according to FORMAT and store binary time information in TP. /* Parse S according to FORMAT and store binary time information in TP.
@ -204,6 +221,7 @@ extern char *strptime_l (__const char *__restrict __s,
# endif # endif
__BEGIN_NAMESPACE_STD
/* Return the `struct tm' representation of *TIMER /* Return the `struct tm' representation of *TIMER
in Universal Coordinated Time (aka Greenwich Mean Time). */ in Universal Coordinated Time (aka Greenwich Mean Time). */
extern struct tm *gmtime (__const time_t *__timer) __THROW; extern struct tm *gmtime (__const time_t *__timer) __THROW;
@ -211,6 +229,7 @@ extern struct tm *gmtime (__const time_t *__timer) __THROW;
/* Return the `struct tm' representation /* Return the `struct tm' representation
of *TIMER in the local timezone. */ of *TIMER in the local timezone. */
extern struct tm *localtime (__const time_t *__timer) __THROW; extern struct tm *localtime (__const time_t *__timer) __THROW;
__END_NAMESPACE_STD
# if defined __USE_POSIX || defined __USE_MISC # if defined __USE_POSIX || defined __USE_MISC
/* Return the `struct tm' representation of *TIMER in UTC, /* Return the `struct tm' representation of *TIMER in UTC,
@ -224,12 +243,14 @@ extern struct tm *localtime_r (__const time_t *__restrict __timer,
struct tm *__restrict __tp) __THROW; struct tm *__restrict __tp) __THROW;
# endif /* POSIX or misc */ # endif /* POSIX or misc */
__BEGIN_NAMESPACE_STD
/* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
that is the representation of TP in this format. */ that is the representation of TP in this format. */
extern char *asctime (__const struct tm *__tp) __THROW; extern char *asctime (__const struct tm *__tp) __THROW;
/* Equivalent to `asctime (localtime (timer))'. */ /* Equivalent to `asctime (localtime (timer))'. */
extern char *ctime (__const time_t *__timer) __THROW; extern char *ctime (__const time_t *__timer) __THROW;
__END_NAMESPACE_STD
# if defined __USE_POSIX || defined __USE_MISC # if defined __USE_POSIX || defined __USE_MISC
/* Reentrant versions of the above functions. */ /* Reentrant versions of the above functions. */

View File

@ -58,6 +58,10 @@
member of the extended character set. */ member of the extended character set. */
# define _WINT_T # define _WINT_T
typedef unsigned int wint_t; typedef unsigned int wint_t;
#else
# ifdef __USE_GNU
__USING_NAMESPACE_STD(wint_t)
# endif
#endif #endif
@ -81,8 +85,13 @@ typedef struct
defined. */ defined. */
#ifdef _WCHAR_H #ifdef _WCHAR_H
__BEGIN_NAMESPACE_C99
/* Public type. */ /* Public type. */
typedef __mbstate_t mbstate_t; typedef __mbstate_t mbstate_t;
__END_NAMESPACE_C99
#ifdef __USE_GNU
__USING_NAMESPACE_C99(mbstate_t)
#endif
#ifndef WCHAR_MIN #ifndef WCHAR_MIN
/* These constants might also be defined in <inttypes.h>. */ /* These constants might also be defined in <inttypes.h>. */
@ -100,13 +109,21 @@ typedef __mbstate_t mbstate_t;
# include <wctype.h> # include <wctype.h>
#endif #endif
/* This incomplete type is defined in <time.h> but needed here because
of `wcsftime'. */
struct tm;
__BEGIN_DECLS __BEGIN_DECLS
__BEGIN_NAMESPACE_STD
/* This incomplete type is defined in <time.h> but needed here because
of `wcsftime'. */
struct tm;
/* XXX We have to clean this up at some point. Since tm is in the std
namespace but wcsftime is in __c99 the type wouldn't be found
without inserting it in the global namespace. */
__USING_NAMESPACE_STD(tm)
__END_NAMESPACE_STD
__BEGIN_NAMESPACE_C99
/* Copy SRC to DEST. */ /* Copy SRC to DEST. */
extern wchar_t *wcscpy (wchar_t *__restrict __dest, extern wchar_t *wcscpy (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src) __THROW; __const wchar_t *__restrict __src) __THROW;
@ -129,6 +146,7 @@ extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
/* Compare N wide-characters of S1 and S2. */ /* Compare N wide-characters of S1 and S2. */
extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
__THROW __attribute_pure__; __THROW __attribute_pure__;
__END_NAMESPACE_C99
#ifdef __USE_GNU #ifdef __USE_GNU
/* Compare S1 and S2, ignoring case. */ /* Compare S1 and S2, ignoring case. */
@ -149,6 +167,7 @@ extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
size_t __n, __locale_t __loc) __THROW; size_t __n, __locale_t __loc) __THROW;
#endif #endif
__BEGIN_NAMESPACE_C99
/* Compare S1 and S2, both interpreted as appropriate to the /* Compare S1 and S2, both interpreted as appropriate to the
LC_COLLATE category of the current locale. */ LC_COLLATE category of the current locale. */
extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW; extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
@ -157,6 +176,7 @@ extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
`wcscoll' to the original strings. */ `wcscoll' to the original strings. */
extern size_t wcsxfrm (wchar_t *__restrict __s1, extern size_t wcsxfrm (wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n) __THROW; __const wchar_t *__restrict __s2, size_t __n) __THROW;
__END_NAMESPACE_C99
#ifdef __USE_GNU #ifdef __USE_GNU
/* Similar to the two functions above but take the information from /* Similar to the two functions above but take the information from
@ -177,12 +197,14 @@ extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__; extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
#endif #endif
__BEGIN_NAMESPACE_C99
/* Find the first occurrence of WC in WCS. */ /* Find the first occurrence of WC in WCS. */
extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
__THROW __attribute_pure__; __THROW __attribute_pure__;
/* Find the last occurrence of WC in WCS. */ /* Find the last occurrence of WC in WCS. */
extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
__THROW __attribute_pure__; __THROW __attribute_pure__;
__END_NAMESPACE_C99
#ifdef __USE_GNU #ifdef __USE_GNU
/* This function is similar to `wcschr'. But it returns a pointer to /* This function is similar to `wcschr'. But it returns a pointer to
@ -191,6 +213,7 @@ extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
__THROW __attribute_pure__; __THROW __attribute_pure__;
#endif #endif
__BEGIN_NAMESPACE_C99
/* Return the length of the initial segmet of WCS which /* Return the length of the initial segmet of WCS which
consists entirely of wide characters not in REJECT. */ consists entirely of wide characters not in REJECT. */
extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
@ -206,12 +229,6 @@ extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__; __THROW __attribute_pure__;
#ifdef __USE_XOPEN
/* Another name for `wcsstr' from XPG4. */
extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__;
#endif
/* Divide WCS into tokens separated by characters in DELIM. */ /* Divide WCS into tokens separated by characters in DELIM. */
extern wchar_t *wcstok (wchar_t *__restrict __s, extern wchar_t *wcstok (wchar_t *__restrict __s,
__const wchar_t *__restrict __delim, __const wchar_t *__restrict __delim,
@ -219,6 +236,13 @@ extern wchar_t *wcstok (wchar_t *__restrict __s,
/* Return the number of wide characters in S. */ /* Return the number of wide characters in S. */
extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__; extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
__END_NAMESPACE_C99
#ifdef __USE_XOPEN
/* Another name for `wcsstr' from XPG4. */
extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__;
#endif
#ifdef __USE_GNU #ifdef __USE_GNU
/* Return the number of wide characters in S, but at most MAXLEN. */ /* Return the number of wide characters in S, but at most MAXLEN. */
@ -227,6 +251,7 @@ extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
#endif #endif
__BEGIN_NAMESPACE_C99
/* Search N wide characters of S for C. */ /* Search N wide characters of S for C. */
extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
__THROW __attribute_pure__; __THROW __attribute_pure__;
@ -247,6 +272,7 @@ extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
/* Set N wide characters of S to C. */ /* Set N wide characters of S to C. */
extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW; extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW;
__END_NAMESPACE_C99
#ifdef __USE_GNU #ifdef __USE_GNU
/* Copy N wide characters of SRC to DEST and return pointer to following /* Copy N wide characters of SRC to DEST and return pointer to following
@ -257,6 +283,7 @@ extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
#endif #endif
__BEGIN_NAMESPACE_C99
/* Determine whether C constitutes a valid (one-byte) multibyte /* Determine whether C constitutes a valid (one-byte) multibyte
character. */ character. */
extern wint_t btowc (int __c) __THROW; extern wint_t btowc (int __c) __THROW;
@ -284,6 +311,7 @@ extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW; mbstate_t *__restrict __ps) __THROW;
extern size_t mbrlen (__const char *__restrict __s, size_t __n, extern size_t mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW; mbstate_t *__restrict __ps) __THROW;
__END_NAMESPACE_C99
#ifdef __USE_EXTERN_INLINES #ifdef __USE_EXTERN_INLINES
/* Define inline function as optimization. */ /* Define inline function as optimization. */
@ -293,6 +321,7 @@ extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); } ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); }
#endif #endif
__BEGIN_NAMESPACE_C99
/* Write wide character representation of multibyte character string /* Write wide character representation of multibyte character string
SRC to DST. */ SRC to DST. */
extern size_t mbsrtowcs (wchar_t *__restrict __dst, extern size_t mbsrtowcs (wchar_t *__restrict __dst,
@ -304,6 +333,7 @@ extern size_t mbsrtowcs (wchar_t *__restrict __dst,
extern size_t wcsrtombs (char *__restrict __dst, extern size_t wcsrtombs (char *__restrict __dst,
__const wchar_t **__restrict __src, size_t __len, __const wchar_t **__restrict __src, size_t __len,
mbstate_t *__restrict __ps) __THROW; mbstate_t *__restrict __ps) __THROW;
__END_NAMESPACE_C99
#ifdef __USE_GNU #ifdef __USE_GNU
@ -333,6 +363,7 @@ extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW;
#endif /* Use X/Open. */ #endif /* Use X/Open. */
__BEGIN_NAMESPACE_C99
/* Convert initial portion of the wide string NPTR to `double' /* Convert initial portion of the wide string NPTR to `double'
representation. */ representation. */
extern double wcstod (__const wchar_t *__restrict __nptr, extern double wcstod (__const wchar_t *__restrict __nptr,
@ -358,22 +389,6 @@ extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, int __base) wchar_t **__restrict __endptr, int __base)
__THROW; __THROW;
#if defined __GNUC__ && defined __USE_GNU
/* Convert initial portion of wide string NPTR to `long int'
representation. */
__extension__
extern long long int wcstoq (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, int __base)
__THROW;
/* Convert initial portion of wide string NPTR to `unsigned long long int'
representation. */
__extension__
extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
int __base) __THROW;
#endif /* GCC and use GNU. */
#if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_GNU) #if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_GNU)
/* Convert initial portion of wide string NPTR to `long int' /* Convert initial portion of wide string NPTR to `long int'
representation. */ representation. */
@ -389,6 +404,23 @@ extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, wchar_t **__restrict __endptr,
int __base) __THROW; int __base) __THROW;
#endif /* ISO C99 or GCC and GNU. */ #endif /* ISO C99 or GCC and GNU. */
__END_NAMESPACE_C99
#if defined __GNUC__ && defined __USE_GNU
/* Convert initial portion of wide string NPTR to `long int'
representation. */
__extension__
extern long long int wcstoq (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, int __base)
__THROW;
/* Convert initial portion of wide string NPTR to `unsigned long long int'
representation. */
__extension__
extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
int __base) __THROW;
#endif /* GCC and use GNU. */
#ifdef __USE_GNU #ifdef __USE_GNU
/* The concept of one static locale per category is not very well /* The concept of one static locale per category is not very well
@ -486,6 +518,7 @@ extern unsigned long long int __wcstoull_internal (__const wchar_t *
#if defined __OPTIMIZE__ && __GNUC__ >= 2 #if defined __OPTIMIZE__ && __GNUC__ >= 2
/* Define inline functions which call the internal entry points. */ /* Define inline functions which call the internal entry points. */
__BEGIN_NAMESPACE_C99
extern __inline double wcstod (__const wchar_t *__restrict __nptr, extern __inline double wcstod (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr) __THROW wchar_t **__restrict __endptr) __THROW
@ -498,6 +531,7 @@ extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr, wchar_t **__restrict __endptr,
int __base) __THROW int __base) __THROW
{ return __wcstoul_internal (__nptr, __endptr, __base, 0); } { return __wcstoul_internal (__nptr, __endptr, __base, 0); }
__END_NAMESPACE_C99
# ifdef __USE_GNU # ifdef __USE_GNU
extern __inline float wcstof (__const wchar_t *__restrict __nptr, extern __inline float wcstof (__const wchar_t *__restrict __nptr,
@ -537,6 +571,7 @@ extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
/* Wide character I/O functions. */ /* Wide character I/O functions. */
#if defined __USE_ISOC99 || defined __USE_UNIX98 #if defined __USE_ISOC99 || defined __USE_UNIX98
__BEGIN_NAMESPACE_C99
/* Select orientation for stream. */ /* Select orientation for stream. */
extern int fwide (__FILE *__fp, int __mode) __THROW; extern int fwide (__FILE *__fp, int __mode) __THROW;
@ -582,9 +617,13 @@ extern int wscanf (__const wchar_t *__restrict __format, ...)
extern int swscanf (__const wchar_t *__restrict __s, extern int swscanf (__const wchar_t *__restrict __s,
__const wchar_t *__restrict __format, ...) __const wchar_t *__restrict __format, ...)
__THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
__END_NAMESPACE_C99
#endif /* Use ISO C99 and Unix98. */ #endif /* Use ISO C99 and Unix98. */
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Read formatted input from S into argument list ARG. */ /* Read formatted input from S into argument list ARG. */
extern int vfwscanf (__FILE *__restrict __s, extern int vfwscanf (__FILE *__restrict __s,
__const wchar_t *__restrict __format, __const wchar_t *__restrict __format,
@ -599,9 +638,12 @@ extern int vswscanf (__const wchar_t *__restrict __s,
__const wchar_t *__restrict __format, __const wchar_t *__restrict __format,
__gnuc_va_list __arg) __gnuc_va_list __arg)
__THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
__END_NAMESPACE_C99
#endif /* Use ISO C99. */ #endif /* Use ISO C99. */
__BEGIN_NAMESPACE_C99
/* Read a character from STREAM. */ /* Read a character from STREAM. */
extern wint_t fgetwc (__FILE *__stream) __THROW; extern wint_t fgetwc (__FILE *__stream) __THROW;
extern wint_t getwc (__FILE *__stream) __THROW; extern wint_t getwc (__FILE *__stream) __THROW;
@ -630,6 +672,7 @@ extern int fputws (__const wchar_t *__restrict __ws,
/* Push a character back onto the input buffer of STREAM. */ /* Push a character back onto the input buffer of STREAM. */
extern wint_t ungetwc (wint_t __wc, __FILE *__stream) __THROW; extern wint_t ungetwc (wint_t __wc, __FILE *__stream) __THROW;
__END_NAMESPACE_C99
#ifdef __USE_GNU #ifdef __USE_GNU
@ -660,12 +703,14 @@ extern int fputws_unlocked (__const wchar_t *__restrict __ws,
#endif #endif
__BEGIN_NAMESPACE_C99
/* Format TP into S according to FORMAT. /* Format TP into S according to FORMAT.
Write no more than MAXSIZE wide characters and return the number Write no more than MAXSIZE wide characters and return the number
of wide characters written, or 0 if it would exceed MAXSIZE. */ of wide characters written, or 0 if it would exceed MAXSIZE. */
extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
__const wchar_t *__restrict __format, __const wchar_t *__restrict __format,
__const struct tm *__restrict __tp) __THROW; __const struct tm *__restrict __tp) __THROW;
__END_NAMESPACE_C99
# ifdef __USE_GNU # ifdef __USE_GNU
# include <xlocale.h> # include <xlocale.h>

View File

@ -40,6 +40,11 @@
member of the extended character set. */ member of the extended character set. */
# define _WINT_T # define _WINT_T
typedef unsigned int wint_t; typedef unsigned int wint_t;
# else
# ifdef __USE_ISOC99
__USING_NAMESPACE_C99(wint_t)
# endif
__END_NAMESPACE_C99
# endif # endif
/* Constant expression of type `wint_t' whose value does not correspond /* Constant expression of type `wint_t' whose value does not correspond
@ -56,9 +61,11 @@ typedef unsigned int wint_t;
#ifndef __iswxxx_defined #ifndef __iswxxx_defined
# define __iswxxx_defined 1 # define __iswxxx_defined 1
__BEGIN_NAMESPACE_C99
/* Scalar type that can hold values which represent locale-specific /* Scalar type that can hold values which represent locale-specific
character classifications. */ character classifications. */
typedef unsigned long int wctype_t; typedef unsigned long int wctype_t;
__END_NAMESPACE_C99
# ifndef _ISwbit # ifndef _ISwbit
/* The characteristics are stored always in network byte order (big /* The characteristics are stored always in network byte order (big
@ -109,6 +116,7 @@ enum
__BEGIN_DECLS __BEGIN_DECLS
__BEGIN_NAMESPACE_C99
/* /*
* Wide-character classification functions: 7.15.2.1. * Wide-character classification functions: 7.15.2.1.
*/ */
@ -180,8 +188,9 @@ extern wctype_t wctype (__const char *__property) __THROW;
/* Determine whether the wide-character WC has the property described by /* Determine whether the wide-character WC has the property described by
DESC. */ DESC. */
extern int iswctype (wint_t __wc, wctype_t __desc) __THROW; extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
__END_NAMESPACE_C99
#if __GNUC__ >= 2 && defined __OPTIMIZE__ #if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus
/* The tables are always organized in a way which allows direct access /* The tables are always organized in a way which allows direct access
for single byte characters. */ for single byte characters. */
extern unsigned int *__ctype32_b; extern unsigned int *__ctype32_b;
@ -244,17 +253,24 @@ extern unsigned int *__ctype32_b;
* Wide-character case-mapping functions: 7.15.3.1. * Wide-character case-mapping functions: 7.15.3.1.
*/ */
__BEGIN_NAMESPACE_C99
/* Scalar type that can hold values which represent locale-specific /* Scalar type that can hold values which represent locale-specific
character mappings. */ character mappings. */
typedef __const __int32_t *wctrans_t; typedef __const __int32_t *wctrans_t;
__END_NAMESPACE_C99
#ifdef __USE_GNU
__USING_NAMESPACE_C99(wctrans_t)
#endif
__BEGIN_NAMESPACE_C99
/* Converts an uppercase letter to the corresponding lowercase letter. */ /* Converts an uppercase letter to the corresponding lowercase letter. */
extern wint_t towlower (wint_t __wc) __THROW; extern wint_t towlower (wint_t __wc) __THROW;
/* Converts an lowercase letter to the corresponding uppercase letter. */ /* Converts an lowercase letter to the corresponding uppercase letter. */
extern wint_t towupper (wint_t __wc) __THROW; extern wint_t towupper (wint_t __wc) __THROW;
__END_NAMESPACE_C99
#if __GNUC__ >= 2 && defined __OPTIMIZE__ #if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus
/* The tables are always organized in a way which allows direct access /* The tables are always organized in a way which allows direct access
for single byte characters. */ for single byte characters. */
extern const wint_t *__ctype32_tolower; extern const wint_t *__ctype32_tolower;
@ -287,12 +303,14 @@ __END_DECLS
__BEGIN_DECLS __BEGIN_DECLS
__BEGIN_NAMESPACE_C99
/* Construct value that describes a mapping between wide characters /* Construct value that describes a mapping between wide characters
identified by the string argument PROPERTY. */ identified by the string argument PROPERTY. */
extern wctrans_t wctrans (__const char *__property) __THROW; extern wctrans_t wctrans (__const char *__property) __THROW;
/* Map the wide character WC using the mapping described by DESC. */ /* Map the wide character WC using the mapping described by DESC. */
extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __THROW; extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __THROW;
__END_NAMESPACE_C99
# ifdef __USE_GNU # ifdef __USE_GNU
/* Declare the interface to extended locale model. */ /* Declare the interface to extended locale model. */