1#if !defined ISO && !defined POSIX && !defined XPG4 && !defined XPG42
2type wchar_t
3type wint_t
4# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
5type wctype_t
6# endif
7type mbstate_t
8# if !defined ISO99 && !defined ISO11
9type FILE
10# else
11#  define FILE __FILE
12# endif
13type size_t
14# if defined XOPEN2K8 || defined POSIX2008
15type locale_t
16# endif
17tag {struct tm}
18
19function wint_t btowc (int)
20function int fwprintf (FILE*, const wchar_t*, ...)
21function int fwscanf (FILE*, const wchar_t*, ...)
22# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
23function int iswalnum (wint_t)
24function int iswalpha (wint_t)
25function int iswcntrl (wint_t)
26function int iswdigit (wint_t)
27function int iswgraph (wint_t)
28function int iswlower (wint_t)
29function int iswprint (wint_t)
30function int iswpunct (wint_t)
31function int iswspace (wint_t)
32function int iswupper (wint_t)
33function int iswxdigit (wint_t)
34function int iswctype (wint_t, wctype_t)
35# endif
36function wint_t fgetwc (FILE*)
37function {wchar_t*} fgetws (wchar_t*, int, FILE*)
38function wint_t fputwc (wchar_t, FILE*)
39function int fputws (const wchar_t*, FILE*)
40function int fwide (FILE*, int)
41function wint_t getwc (FILE*)
42function wint_t getwchar (void)
43function int mbsinit (const mbstate_t*)
44function size_t mbrlen (const char*, size_t, mbstate_t*)
45function size_t mbrtowc (wchar_t*, const char*, size_t, mbstate_t*)
46# if defined XOPEN2K8 || defined POSIX2008
47function size_t mbsnrtowcs (wchar_t*, const char**, size_t, size_t, mbstate_t*)
48# endif
49function size_t mbsrtowcs (wchar_t*, const char**, size_t, mbstate_t*)
50# if defined XOPEN2K8 || defined POSIX2008
51function {FILE*} open_wmemstream (wchar_t**, size_t*)
52# endif
53function wint_t putwc (wchar_t, FILE*)
54function wint_t putwchar (wchar_t)
55function int swprintf (wchar_t*, size_t, const wchar_t*, ...)
56function int swscanf (const wchar_t*, const wchar_t*, ...)
57# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
58function wint_t towlower (wint_t)
59function wint_t towupper (wint_t)
60# endif
61function wint_t ungetwc (wint_t, FILE*)
62function int vfwprintf (FILE*, const wchar_t*, __gnuc_va_list)
63# ifndef UNIX98
64function int vfwscanf (FILE*, const wchar_t*, __gnuc_va_list)
65# endif
66function int vwprintf (const wchar_t*, __gnuc_va_list)
67# ifndef UNIX98
68function int vwscanf (const wchar_t*, __gnuc_va_list)
69# endif
70function int vswprintf (wchar_t*, size_t, const wchar_t*, __gnuc_va_list)
71# ifndef UNIX98
72function int vswscanf (const wchar_t*, const wchar_t*, __gnuc_va_list)
73# endif
74# if defined XOPEN2K8 || defined POSIX2008
75function {wchar_t*} wcpcpy (wchar_t*, const wchar_t*)
76function {wchar_t*} wcpncpy (wchar_t*, const wchar_t*, size_t)
77# endif
78function size_t wcrtomb (char*, wchar_t, mbstate_t*)
79# if defined XOPEN2K8 || defined POSIX2008
80function int wcscasecmp (const wchar_t*, const wchar_t*)
81function int wcscasecmp_l (const wchar_t*, const wchar_t*, locale_t)
82# endif
83function {wchar_t*} wcscat (wchar_t*, const wchar_t*)
84function {wchar_t*} wcschr (const wchar_t*, wchar_t)
85function int wcscmp (const wchar_t*, const wchar_t*)
86function int wcscoll (const wchar_t*, const wchar_t*)
87# if defined XOPEN2K8 || defined POSIX2008
88function int wcscoll_l (const wchar_t*, const wchar_t*, locale_t)
89# endif
90function {wchar_t*} wcscpy (wchar_t*, const wchar_t*)
91function size_t wcscspn (const wchar_t*, const wchar_t*)
92# if defined XOPEN2K8 || defined POSIX2008
93function {wchar_t*} wcsdup (const wchar_t*)
94# endif
95function size_t wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*)
96function size_t wcslen (const wchar_t*)
97# if defined XOPEN2K8 || defined POSIX2008
98function int wcsncasecmp (const wchar_t*, const wchar_t*, size_t)
99function int wcsncasecmp_l (const wchar_t*, const wchar_t*, size_t, locale_t)
100# endif
101function {wchar_t*} wcsncat (wchar_t*, const wchar_t*, size_t)
102function int wcsncmp (const wchar_t*, const wchar_t*, size_t)
103function {wchar_t*} wcsncpy (wchar_t*, const wchar_t*, size_t)
104# if defined XOPEN2K8 || defined POSIX2008
105function size_t wcsnlen (const wchar_t*, size_t)
106function size_t wcsnrtombs (char*, const wchar_t**, size_t, size_t, mbstate_t*)
107# endif
108function {wchar_t*} wcspbrk (const wchar_t*, const wchar_t*)
109function {wchar_t*} wcsrchr (const wchar_t*, wchar_t)
110function size_t wcsrtombs (char*, const wchar_t**, size_t, mbstate_t*)
111function size_t wcsspn (const wchar_t*, const wchar_t*)
112function {wchar_t*} wcsstr (const wchar_t*, const wchar_t*)
113function double wcstod (const wchar_t*, wchar_t**)
114# ifndef UNIX98
115function float wcstof (const wchar_t*, wchar_t**)
116function {long double} wcstold (const wchar_t*, wchar_t**)
117# endif
118function {wchar_t*} wcstok (wchar_t*, const wchar_t*, wchar_t**)
119function {long int} wcstol (const wchar_t*, wchar_t**, int)
120# ifndef UNIX98
121function {long long int} wcstoll (const wchar_t*, wchar_t**, int)
122# endif
123function {unsigned long int} wcstoul (const wchar_t*, wchar_t**, int)
124# ifndef UNIX98
125function {unsigned long long int} wcstoull (const wchar_t*, wchar_t**, int)
126# endif
127# if defined UNIX98 || defined XOPEN2K
128function {wchar_t*} wcswcs (const wchar_t*, const wchar_t*)
129# endif
130# if !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
131function int wcswidth (const wchar_t*, size_t)
132# endif
133function size_t wcsxfrm (wchar_t*, const wchar_t*, size_t)
134# if defined XOPEN2K8 || defined POSIX2008
135function size_t wcsxfrm_l (wchar_t*, const wchar_t*, size_t, locale_t)
136# endif
137function int wctob (wint_t)
138# if !defined ISO99 && !defined ISO11 && !defined POSIX2008
139function wctype_t wctype (const char*)
140function int wcwidth (wchar_t)
141# endif
142function {wchar_t*} wmemchr (const wchar_t*, wchar_t, size_t)
143function int wmemcmp (const wchar_t*, const wchar_t*, size_t)
144function {wchar_t*} wmemcpy (wchar_t*, const wchar_t*, size_t)
145function {wchar_t*} wmemmove (wchar_t*, const wchar_t*, size_t)
146function {wchar_t*} wmemset (wchar_t*, wchar_t, size_t)
147function int wprintf (const wchar_t*, ...)
148function int wscanf (const wchar_t*, ...)
149
150macro-int-constant WCHAR_MIN {promoted:wchar_t}
151macro-int-constant WCHAR_MAX {promoted:wchar_t} >= 127
152macro-constant WEOF {wint_t}
153macro-constant NULL == 0
154
155#if !defined ISO && !defined ISO99 && !defined ISO11
156allow-header ctype.h
157allow-header stdio.h
158allow-header stdarg.h
159allow-header stdlib.h
160allow-header string.h
161allow-header stddef.h
162allow-header time.h
163#endif
164
165allow wcs[abcdefghijklmnopqrstuvwxyz]*
166#if !defined ISO && !defined ISO99 && !defined ISO11
167allow *_t
168#endif
169#endif
170