Update to Unicode 3.1.
[kopensolaris-gnu/glibc.git] / wcsmbs / wchar.h
index d33b0ea..4206c79 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,8 +17,8 @@
    Boston, MA 02111-1307, USA.  */
 
 /*
- *      ISO C Standard, Amendment 1, 7.16.4
- *     General wide-string utilities   <wchar.h>
+ *      ISO C99 Standard: 7.24
+ *     Extended multibyte and wide character utilities <wchar.h>
  */
 
 #ifndef _WCHAR_H
 
 #ifdef _WCHAR_H
 /* Get FILE definition.  */
-# define __need_FILE
+# define __need___FILE
+# ifdef __USE_UNIX98
+#  define __need_FILE
+# endif
 # include <stdio.h>
 /* Get va_list definition.  */
 # define __need___va_list
@@ -44,6 +47,8 @@
 #define __need_wint_t
 #include <stddef.h>
 
+#include <bits/wchar.h>
+
 /* We try to get wint_t from <stddef.h>, but not all GCC versions define it
    there.  So define it ourselves if it remains undefined.  */
 #ifndef _WINT_T
@@ -81,8 +86,8 @@ typedef __mbstate_t mbstate_t;
 
 #ifndef WCHAR_MIN
 /* These constants might also be defined in <inttypes.h>.  */
-# define WCHAR_MIN (0)
-# define WCHAR_MAX (0x7fffffff)
+# define WCHAR_MIN __WCHAR_MIN
+# define WCHAR_MAX __WCHAR_MAX
 #endif
 
 #ifndef WEOF
@@ -212,7 +217,6 @@ extern wchar_t *wcstok (wchar_t *__restrict __s,
                        wchar_t **__restrict __ptr) __THROW;
 
 /* 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__;
 
 #ifdef __USE_GNU
@@ -280,8 +284,7 @@ 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;
 
-#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \
-    && defined __USE_EXTERN_INLINES
+#ifdef __USE_EXTERN_INLINES
 /* Define inline function as optimization.  */
 extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
                               mbstate_t *__restrict __ps) __THROW
@@ -535,11 +538,11 @@ extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
 #if defined __USE_ISOC99 || defined __USE_UNIX98
 
 /* Select orientation for stream.  */
-extern int fwide (FILE *__fp, int __mode) __THROW;
+extern int fwide (__FILE *__fp, int __mode) __THROW;
 
 
 /* Write formatted output to STREAM.  */
-extern int fwprintf (FILE *__restrict __stream,
+extern int fwprintf (__FILE *__restrict __stream,
                     __const wchar_t *__restrict __format, ...)
      __THROW /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
 /* Write formatted output to stdout.  */
@@ -551,7 +554,7 @@ extern int swprintf (wchar_t *__restrict __s, size_t __n,
      __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
 
 /* Write formatted output to S from argument list ARG.  */
-extern int vfwprintf (FILE *__restrict __s,
+extern int vfwprintf (__FILE *__restrict __s,
                      __const wchar_t *__restrict __format,
                      __gnuc_va_list __arg)
      __THROW /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
@@ -568,7 +571,7 @@ extern int vswprintf (wchar_t *__restrict __s, size_t __n,
 
 
 /* Read formatted input from STREAM.  */
-extern int fwscanf (FILE *__restrict __stream,
+extern int fwscanf (__FILE *__restrict __stream,
                    __const wchar_t *__restrict __format, ...)
      __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
 /* Read formatted input from stdin.  */
@@ -582,7 +585,7 @@ extern int swscanf (__const wchar_t *__restrict __s,
 
 #ifdef __USE_ISOC99
 /* 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,
                     __gnuc_va_list __arg)
      __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
@@ -599,60 +602,60 @@ extern int vswscanf (__const wchar_t *__restrict __s,
 
 
 /* Read a character from STREAM.  */
-extern wint_t fgetwc (FILE *__stream);
-extern wint_t getwc (FILE *__stream);
+extern wint_t fgetwc (__FILE *__stream) __THROW;
+extern wint_t getwc (__FILE *__stream) __THROW;
 
 /* Read a character from stdin.  */
-extern wint_t getwchar (void);
+extern wint_t getwchar (void) __THROW;
 
 
 /* Write a character to STREAM.  */
-extern wint_t fputwc (wchar_t __wc, FILE *__stream);
-extern wint_t putwc (wchar_t __wc, FILE *__stream);
+extern wint_t fputwc (wchar_t __wc, __FILE *__stream) __THROW;
+extern wint_t putwc (wchar_t __wc, __FILE *__stream) __THROW;
 
 /* Write a character to stdout.  */
-extern wint_t putwchar (wchar_t __wc);
+extern wint_t putwchar (wchar_t __wc) __THROW;
 
 
 /* Get a newline-terminated wide character string of finite length
    from STREAM.  */
 extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
-                       FILE *__restrict __stream);
+                       __FILE *__restrict __stream) __THROW;
 
 /* Write a string to STREAM.  */
 extern int fputws (__const wchar_t *__restrict __ws,
-                  FILE *__restrict __stream);
+                  __FILE *__restrict __stream) __THROW;
 
 
 /* Push a character back onto the input buffer of STREAM.  */
-extern wint_t ungetwc (wint_t __wc, FILE *__stream);
+extern wint_t ungetwc (wint_t __wc, __FILE *__stream) __THROW;
 
 
 #ifdef __USE_GNU
 /* These are defined to be equivalent to the `char' functions defined
    in POSIX.1:1996.  */
-extern wint_t getwc_unlocked (FILE *__stream);
-extern wint_t getwchar_unlocked (void);
+extern wint_t getwc_unlocked (__FILE *__stream) __THROW;
+extern wint_t getwchar_unlocked (void) __THROW;
 
 /* This is the wide character version of a GNU extension.  */
-extern wint_t fgetwc_unlocked (FILE *__stream);
+extern wint_t fgetwc_unlocked (__FILE *__stream) __THROW;
 
 /* Faster version when locking is not necessary.  */
-extern wint_t fputwc_unlocked (wchar_t __wc, FILE *__stream);
+extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream) __THROW;
 
 /* These are defined to be equivalent to the `char' functions defined
    in POSIX.1:1996.  */
-extern wint_t putwc_unlocked (wchar_t __wc, FILE *__stream);
-extern wint_t putwchar_unlocked (wchar_t __wc);
+extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream) __THROW;
+extern wint_t putwchar_unlocked (wchar_t __wc) __THROW;
 
 
 /* This function does the same as `fgetws' but does not lock the stream.  */
 extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
-                                FILE *__restrict __stream);
+                                __FILE *__restrict __stream) __THROW;
 
 /* This function does the same as `fputws' but does not lock the stream.  */
 extern int fputws_unlocked (__const wchar_t *__restrict __ws,
-                           FILE *__restrict __stream);
+                           __FILE *__restrict __stream) __THROW;
 #endif
 
 
@@ -661,7 +664,7 @@ extern int fputws_unlocked (__const wchar_t *__restrict __ws,
    of wide characters written, or 0 if it would exceed MAXSIZE.  */
 extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
                        __const wchar_t *__restrict __format,
-                       __const struct tm *__restrict __tp);
+                       __const struct tm *__restrict __tp) __THROW;
 
 /* The X/Open standard demands that most of the functions defined in
    the <wctype.h> header must also appear here.  This is probably