| #ifndef _WCHAR_H_ |
| #define _WCHAR_H_ |
| |
| #include <_ansi.h> |
| |
| #include <sys/reent.h> |
| |
| #define __need_size_t |
| #define __need_wchar_t |
| #define __need_wint_t |
| #define __need_NULL |
| #include <stddef.h> |
| |
| /* For _mbstate_t definition. */ |
| #include <sys/_types.h> |
| #include <sys/cdefs.h> |
| /* For __STDC_ISO_10646__ */ |
| #include <sys/features.h> |
| |
| /* typedef only __gnuc_va_list, used throughout the header */ |
| #define __need___va_list |
| #include <stdarg.h> |
| |
| /* typedef va_list only when required */ |
| #if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE |
| #ifdef __GNUC__ |
| #ifndef _VA_LIST_DEFINED |
| typedef __gnuc_va_list va_list; |
| #define _VA_LIST_DEFINED |
| #endif |
| #else /* !__GNUC__ */ |
| #include <stdarg.h> |
| #endif |
| #endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */ |
| |
| #if __XSI_VISIBLE /* && __XSI_VISIBLE < 800 */ && !__GNU_VISIBLE |
| #include <wctype.h> |
| #endif |
| |
| #ifndef WEOF |
| # define WEOF ((wint_t)-1) |
| #endif |
| |
| /* This must match definition in <stdint.h> */ |
| #ifndef WCHAR_MIN |
| #ifdef __WCHAR_MIN__ |
| #define WCHAR_MIN __WCHAR_MIN__ |
| #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) |
| #define WCHAR_MIN (0 + L'\0') |
| #else |
| #define WCHAR_MIN (-0x7fffffff - 1 + L'\0') |
| #endif |
| #endif |
| |
| /* This must match definition in <stdint.h> */ |
| #ifndef WCHAR_MAX |
| #ifdef __WCHAR_MAX__ |
| #define WCHAR_MAX __WCHAR_MAX__ |
| #elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) |
| #define WCHAR_MAX (0xffffffffu + L'\0') |
| #else |
| #define WCHAR_MAX (0x7fffffff + L'\0') |
| #endif |
| #endif |
| |
| #if __POSIX_VISIBLE >= 200809 |
| #include <sys/_locale.h> |
| #endif |
| |
| _BEGIN_STD_C |
| |
| #if __POSIX_VISIBLE >= 200809 || _XSI_VISIBLE |
| /* As in stdio.h, <sys/reent.h> defines __FILE. */ |
| #if !defined(__FILE_defined) |
| typedef __FILE FILE; |
| # define __FILE_defined |
| #endif |
| #endif |
| |
| /* As required by POSIX.1-2008, declare tm as incomplete type. |
| The actual definition is in time.h. */ |
| struct tm; |
| |
| #ifndef _MBSTATE_T |
| #define _MBSTATE_T |
| typedef _mbstate_t mbstate_t; |
| #endif /* _MBSTATE_T */ |
| |
| wint_t btowc (int); |
| int wctob (wint_t); |
| size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict); |
| size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, |
| mbstate_t *__restrict); |
| size_t _mbrtowc_r (struct _reent *, wchar_t * , const char * , |
| size_t, mbstate_t *); |
| int mbsinit (const mbstate_t *); |
| #if __POSIX_VISIBLE >= 200809 |
| size_t mbsnrtowcs (wchar_t *__restrict, const char **__restrict, |
| size_t, size_t, mbstate_t *__restrict); |
| #endif |
| size_t _mbsnrtowcs_r (struct _reent *, wchar_t * , const char ** , |
| size_t, size_t, mbstate_t *); |
| size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, |
| mbstate_t *__restrict); |
| size_t _mbsrtowcs_r (struct _reent *, wchar_t * , const char ** , size_t, mbstate_t *); |
| size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict); |
| size_t _wcrtomb_r (struct _reent *, char * , wchar_t, mbstate_t *); |
| #if __POSIX_VISIBLE >= 200809 |
| size_t wcsnrtombs (char *__restrict, const wchar_t **__restrict, |
| size_t, size_t, mbstate_t *__restrict); |
| #endif |
| size_t _wcsnrtombs_r (struct _reent *, char * , const wchar_t ** , |
| size_t, size_t, mbstate_t *); |
| size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, |
| size_t, mbstate_t *__restrict); |
| size_t _wcsrtombs_r (struct _reent *, char * , const wchar_t ** , |
| size_t, mbstate_t *); |
| #if __POSIX_VISIBLE >= 200809 |
| int wcscasecmp (const wchar_t *, const wchar_t *); |
| #endif |
| wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict); |
| wchar_t *wcschr (const wchar_t *, wchar_t); |
| int wcscmp (const wchar_t *, const wchar_t *); |
| int wcscoll (const wchar_t *, const wchar_t *); |
| wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict); |
| #if __POSIX_VISIBLE >= 200809 |
| wchar_t *wcpcpy (wchar_t *__restrict, |
| const wchar_t *__restrict); |
| wchar_t *wcsdup (const wchar_t *) __malloc_like __result_use_check; |
| #endif |
| wchar_t *_wcsdup_r (struct _reent *, const wchar_t * ); |
| size_t wcscspn (const wchar_t *, const wchar_t *); |
| size_t wcsftime (wchar_t *__restrict, size_t, |
| const wchar_t *__restrict, const struct tm *__restrict); |
| #if __GNU_VISIBLE |
| size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict, |
| const struct tm *__restrict, locale_t); |
| #endif |
| size_t wcslcat (wchar_t *, const wchar_t *, size_t); |
| size_t wcslcpy (wchar_t *, const wchar_t *, size_t); |
| size_t wcslen (const wchar_t *); |
| #if __POSIX_VISIBLE >= 200809 |
| int wcsncasecmp (const wchar_t *, const wchar_t *, size_t); |
| #endif |
| wchar_t *wcsncat (wchar_t *__restrict, |
| const wchar_t *__restrict, size_t); |
| int wcsncmp (const wchar_t *, const wchar_t *, size_t); |
| wchar_t *wcsncpy (wchar_t *__restrict, |
| const wchar_t *__restrict, size_t); |
| #if __POSIX_VISIBLE >= 200809 |
| wchar_t *wcpncpy (wchar_t *__restrict, |
| const wchar_t *__restrict, size_t); |
| size_t wcsnlen (const wchar_t *, size_t); |
| #endif |
| wchar_t *wcspbrk (const wchar_t *, const wchar_t *); |
| wchar_t *wcsrchr (const wchar_t *, wchar_t); |
| size_t wcsspn (const wchar_t *, const wchar_t *); |
| wchar_t *wcsstr (const wchar_t *__restrict, |
| const wchar_t *__restrict); |
| wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, |
| wchar_t **__restrict); |
| double wcstod (const wchar_t *__restrict, wchar_t **__restrict); |
| double _wcstod_r (struct _reent *, const wchar_t *, wchar_t **); |
| #if __ISO_C_VISIBLE >= 1999 |
| float wcstof (const wchar_t *__restrict, wchar_t **__restrict); |
| #endif |
| float _wcstof_r (struct _reent *, const wchar_t *, wchar_t **); |
| #if __XSI_VISIBLE |
| int wcswidth (const wchar_t *, size_t); |
| #endif |
| size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, |
| size_t); |
| #if __POSIX_VISIBLE >= 200809 |
| extern int wcscasecmp_l (const wchar_t *, const wchar_t *, locale_t); |
| extern int wcsncasecmp_l (const wchar_t *, const wchar_t *, size_t, locale_t); |
| extern int wcscoll_l (const wchar_t *, const wchar_t *, locale_t); |
| extern size_t wcsxfrm_l (wchar_t *__restrict, const wchar_t *__restrict, size_t, |
| locale_t); |
| #endif |
| |
| #if __XSI_VISIBLE |
| int wcwidth (const wchar_t); |
| #endif |
| wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); |
| int wmemcmp (const wchar_t *, const wchar_t *, size_t); |
| wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, |
| size_t); |
| wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t); |
| #if __GNU_VISIBLE |
| wchar_t *wmempcpy (wchar_t *__restrict, const wchar_t *__restrict, |
| size_t); |
| #endif |
| wchar_t *wmemset (wchar_t *, wchar_t, size_t); |
| |
| long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int); |
| #if __ISO_C_VISIBLE >= 1999 |
| long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, |
| int); |
| #endif |
| unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, |
| int); |
| #if __ISO_C_VISIBLE >= 1999 |
| unsigned long long wcstoull (const wchar_t *__restrict, |
| wchar_t **__restrict, int); |
| #endif |
| long _wcstol_r (struct _reent *, const wchar_t *, wchar_t **, int); |
| long long _wcstoll_r (struct _reent *, const wchar_t *, wchar_t **, int); |
| unsigned long _wcstoul_r (struct _reent *, const wchar_t *, wchar_t **, int); |
| unsigned long long _wcstoull_r (struct _reent *, const wchar_t *, wchar_t **, int); |
| #if __ISO_C_VISIBLE >= 1999 |
| long double wcstold (const wchar_t *, wchar_t **); |
| #endif |
| |
| #if __GNU_VISIBLE |
| long wcstol_l (const wchar_t *__restrict, wchar_t **__restrict, int, locale_t); |
| long long wcstoll_l (const wchar_t *__restrict, wchar_t **__restrict, int, |
| locale_t); |
| unsigned long wcstoul_l (const wchar_t *__restrict, wchar_t **__restrict, int, |
| locale_t); |
| unsigned long long wcstoull_l (const wchar_t *__restrict, wchar_t **__restrict, |
| int, locale_t); |
| double wcstod_l (const wchar_t *, wchar_t **, locale_t); |
| float wcstof_l (const wchar_t *, wchar_t **, locale_t); |
| long double wcstold_l (const wchar_t *, wchar_t **, locale_t); |
| #endif |
| |
| wint_t fgetwc (__FILE *); |
| wchar_t *fgetws (wchar_t *__restrict, int, __FILE *__restrict); |
| wint_t fputwc (wchar_t, __FILE *); |
| int fputws (const wchar_t *__restrict, __FILE *__restrict); |
| #if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500 |
| int fwide (__FILE *, int); |
| #endif |
| wint_t getwc (__FILE *); |
| wint_t getwchar (void); |
| wint_t putwc (wchar_t, __FILE *); |
| wint_t putwchar (wchar_t); |
| wint_t ungetwc (wint_t wc, __FILE *); |
| |
| wint_t _fgetwc_r (struct _reent *, __FILE *); |
| wint_t _fgetwc_unlocked_r (struct _reent *, __FILE *); |
| wchar_t *_fgetws_r (struct _reent *, wchar_t *, int, __FILE *); |
| wchar_t *_fgetws_unlocked_r (struct _reent *, wchar_t *, int, __FILE *); |
| wint_t _fputwc_r (struct _reent *, wchar_t, __FILE *); |
| wint_t _fputwc_unlocked_r (struct _reent *, wchar_t, __FILE *); |
| int _fputws_r (struct _reent *, const wchar_t *, __FILE *); |
| int _fputws_unlocked_r (struct _reent *, const wchar_t *, __FILE *); |
| int _fwide_r (struct _reent *, __FILE *, int); |
| wint_t _getwc_r (struct _reent *, __FILE *); |
| wint_t _getwc_unlocked_r (struct _reent *, __FILE *); |
| wint_t _getwchar_r (struct _reent *); |
| wint_t _getwchar_unlocked_r (struct _reent *); |
| wint_t _putwc_r (struct _reent *, wchar_t, __FILE *); |
| wint_t _putwc_unlocked_r (struct _reent *, wchar_t, __FILE *); |
| wint_t _putwchar_r (struct _reent *, wchar_t); |
| wint_t _putwchar_unlocked_r (struct _reent *, wchar_t); |
| wint_t _ungetwc_r (struct _reent *, wint_t wc, __FILE *); |
| |
| #if __GNU_VISIBLE |
| wint_t fgetwc_unlocked (__FILE *); |
| wchar_t *fgetws_unlocked (wchar_t *__restrict, int, __FILE *__restrict); |
| wint_t fputwc_unlocked (wchar_t, __FILE *); |
| int fputws_unlocked (const wchar_t *__restrict, __FILE *__restrict); |
| wint_t getwc_unlocked (__FILE *); |
| wint_t getwchar_unlocked (void); |
| wint_t putwc_unlocked (wchar_t, __FILE *); |
| wint_t putwchar_unlocked (wchar_t); |
| #endif |
| |
| #if __POSIX_VISIBLE >= 200809 |
| __FILE *open_wmemstream (wchar_t **, size_t *); |
| #endif |
| __FILE *_open_wmemstream_r (struct _reent *, wchar_t **, size_t *); |
| |
| #ifndef __VALIST |
| #ifdef __GNUC__ |
| #define __VALIST __gnuc_va_list |
| #else |
| #define __VALIST char* |
| #endif |
| #endif |
| |
| #if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500 |
| int fwprintf (__FILE *__restrict, const wchar_t *__restrict, ...); |
| int swprintf (wchar_t *__restrict, size_t, |
| const wchar_t *__restrict, ...); |
| int vfwprintf (__FILE *__restrict, const wchar_t *__restrict, |
| __VALIST); |
| int vswprintf (wchar_t *__restrict, size_t, |
| const wchar_t *__restrict, __VALIST); |
| int vwprintf (const wchar_t *__restrict, __VALIST); |
| int wprintf (const wchar_t *__restrict, ...); |
| #endif |
| |
| int _fwprintf_r (struct _reent *, __FILE *, const wchar_t *, ...); |
| int _swprintf_r (struct _reent *, wchar_t *, size_t, const wchar_t *, ...); |
| int _vfwprintf_r (struct _reent *, __FILE *, const wchar_t *, __VALIST); |
| int _vswprintf_r (struct _reent *, wchar_t *, size_t, const wchar_t *, __VALIST); |
| int _vwprintf_r (struct _reent *, const wchar_t *, __VALIST); |
| int _wprintf_r (struct _reent *, const wchar_t *, ...); |
| |
| #if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500 |
| int fwscanf (__FILE *__restrict, const wchar_t *__restrict, ...); |
| int swscanf (const wchar_t *__restrict, |
| const wchar_t *__restrict, ...); |
| int vfwscanf (__FILE *__restrict, const wchar_t *__restrict, |
| __VALIST); |
| int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, |
| __VALIST); |
| int vwscanf (const wchar_t *__restrict, __VALIST); |
| int wscanf (const wchar_t *__restrict, ...); |
| #endif |
| |
| int _fwscanf_r (struct _reent *, __FILE *, const wchar_t *, ...); |
| int _swscanf_r (struct _reent *, const wchar_t *, const wchar_t *, ...); |
| int _vfwscanf_r (struct _reent *, __FILE *, const wchar_t *, __VALIST); |
| int _vswscanf_r (struct _reent *, const wchar_t *, const wchar_t *, __VALIST); |
| int _vwscanf_r (struct _reent *, const wchar_t *, __VALIST); |
| int _wscanf_r (struct _reent *, const wchar_t *, ...); |
| |
| #define getwc(fp) fgetwc(fp) |
| #define putwc(wc,fp) fputwc((wc), (fp)) |
| #define getwchar() fgetwc(_REENT->_stdin) |
| #define putwchar(wc) fputwc((wc), _REENT->_stdout) |
| |
| #if __GNU_VISIBLE |
| #define getwc_unlocked(fp) fgetwc_unlocked(fp) |
| #define putwc_unlocked(wc,fp) fputwc_unlocked((wc), (fp)) |
| #define getwchar_unlocked() fgetwc_unlocked(_REENT->_stdin) |
| #define putwchar_unlocked(wc) fputwc_unlocked((wc), _REENT->_stdout) |
| #endif |
| |
| _END_STD_C |
| |
| #if __SSP_FORTIFY_LEVEL > 0 |
| #include <ssp/wchar.h> |
| #endif |
| |
| #endif /* _WCHAR_H_ */ |