diff options
Diffstat (limited to 'gl/wchar.in.h')
-rw-r--r-- | gl/wchar.in.h | 219 |
1 files changed, 218 insertions, 1 deletions
diff --git a/gl/wchar.in.h b/gl/wchar.in.h index b721572..e069cfa 100644 --- a/gl/wchar.in.h +++ b/gl/wchar.in.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* A substitute for ISO C99 <wchar.h>, for platforms that have issues. | 1 | /* A substitute for ISO C99 <wchar.h>, for platforms that have issues. |
2 | 2 | ||
3 | Copyright (C) 2007 Free Software Foundation, Inc. | 3 | Copyright (C) 2007-2009 Free Software Foundation, Inc. |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
@@ -26,6 +26,25 @@ | |||
26 | * the declaration of wcwidth(). | 26 | * the declaration of wcwidth(). |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #if __GNUC__ >= 3 | ||
30 | @PRAGMA_SYSTEM_HEADER@ | ||
31 | #endif | ||
32 | |||
33 | #if defined __need_mbstate_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) | ||
34 | /* Special invocation convention: | ||
35 | - Inside uClibc header files. | ||
36 | - On HP-UX 11.00 we have a sequence of nested includes | ||
37 | <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>, | ||
38 | once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h> | ||
39 | and once directly. In both situations 'wint_t' is not yet defined, | ||
40 | therefore we cannot provide the function overrides; instead include only | ||
41 | the system's <wchar.h>. */ | ||
42 | |||
43 | #@INCLUDE_NEXT@ @NEXT_WCHAR_H@ | ||
44 | |||
45 | #else | ||
46 | /* Normal invocation convention. */ | ||
47 | |||
29 | #ifndef _GL_WCHAR_H | 48 | #ifndef _GL_WCHAR_H |
30 | 49 | ||
31 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 50 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before |
@@ -53,6 +72,203 @@ extern "C" { | |||
53 | #endif | 72 | #endif |
54 | 73 | ||
55 | 74 | ||
75 | /* Define wint_t. (Also done in wctype.in.h.) */ | ||
76 | #if !@HAVE_WINT_T@ && !defined wint_t | ||
77 | # define wint_t int | ||
78 | # ifndef WEOF | ||
79 | # define WEOF -1 | ||
80 | # endif | ||
81 | #endif | ||
82 | |||
83 | |||
84 | /* Override mbstate_t if it is too small. | ||
85 | On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for | ||
86 | implementing mbrtowc for encodings like UTF-8. */ | ||
87 | #if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@ | ||
88 | typedef int rpl_mbstate_t; | ||
89 | # undef mbstate_t | ||
90 | # define mbstate_t rpl_mbstate_t | ||
91 | # define GNULIB_defined_mbstate_t 1 | ||
92 | #endif | ||
93 | |||
94 | |||
95 | /* Convert a single-byte character to a wide character. */ | ||
96 | #if @GNULIB_BTOWC@ | ||
97 | # if @REPLACE_BTOWC@ | ||
98 | # undef btowc | ||
99 | # define btowc rpl_btowc | ||
100 | # endif | ||
101 | # if !@HAVE_BTOWC@ || @REPLACE_BTOWC@ | ||
102 | extern wint_t btowc (int c); | ||
103 | # endif | ||
104 | #elif defined GNULIB_POSIXCHECK | ||
105 | # undef btowc | ||
106 | # define btowc(c) \ | ||
107 | (GL_LINK_WARNING ("btowc is unportable - " \ | ||
108 | "use gnulib module btowc for portability"), \ | ||
109 | btowc (c)) | ||
110 | #endif | ||
111 | |||
112 | |||
113 | /* Convert a wide character to a single-byte character. */ | ||
114 | #if @GNULIB_WCTOB@ | ||
115 | # if @REPLACE_WCTOB@ | ||
116 | # undef wctob | ||
117 | # define wctob rpl_wctob | ||
118 | # endif | ||
119 | # if (!defined wctob && !@HAVE_DECL_WCTOB@) || @REPLACE_WCTOB@ | ||
120 | /* wctob is provided by gnulib, or wctob exists but is not declared. */ | ||
121 | extern int wctob (wint_t wc); | ||
122 | # endif | ||
123 | #elif defined GNULIB_POSIXCHECK | ||
124 | # undef wctob | ||
125 | # define wctob(w) \ | ||
126 | (GL_LINK_WARNING ("wctob is unportable - " \ | ||
127 | "use gnulib module wctob for portability"), \ | ||
128 | wctob (w)) | ||
129 | #endif | ||
130 | |||
131 | |||
132 | /* Test whether *PS is in the initial state. */ | ||
133 | #if @GNULIB_MBSINIT@ | ||
134 | # if @REPLACE_MBSINIT@ | ||
135 | # undef mbsinit | ||
136 | # define mbsinit rpl_mbsinit | ||
137 | # endif | ||
138 | # if !@HAVE_MBSINIT@ || @REPLACE_MBSINIT@ | ||
139 | extern int mbsinit (const mbstate_t *ps); | ||
140 | # endif | ||
141 | #elif defined GNULIB_POSIXCHECK | ||
142 | # undef mbsinit | ||
143 | # define mbsinit(p) \ | ||
144 | (GL_LINK_WARNING ("mbsinit is unportable - " \ | ||
145 | "use gnulib module mbsinit for portability"), \ | ||
146 | mbsinit (p)) | ||
147 | #endif | ||
148 | |||
149 | |||
150 | /* Convert a multibyte character to a wide character. */ | ||
151 | #if @GNULIB_MBRTOWC@ | ||
152 | # if @REPLACE_MBRTOWC@ | ||
153 | # undef mbrtowc | ||
154 | # define mbrtowc rpl_mbrtowc | ||
155 | # endif | ||
156 | # if !@HAVE_MBRTOWC@ || @REPLACE_MBRTOWC@ | ||
157 | extern size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); | ||
158 | # endif | ||
159 | #elif defined GNULIB_POSIXCHECK | ||
160 | # undef mbrtowc | ||
161 | # define mbrtowc(w,s,n,p) \ | ||
162 | (GL_LINK_WARNING ("mbrtowc is unportable - " \ | ||
163 | "use gnulib module mbrtowc for portability"), \ | ||
164 | mbrtowc (w, s, n, p)) | ||
165 | #endif | ||
166 | |||
167 | |||
168 | /* Recognize a multibyte character. */ | ||
169 | #if @GNULIB_MBRLEN@ | ||
170 | # if @REPLACE_MBRLEN@ | ||
171 | # undef mbrlen | ||
172 | # define mbrlen rpl_mbrlen | ||
173 | # endif | ||
174 | # if !@HAVE_MBRLEN@ || @REPLACE_MBRLEN@ | ||
175 | extern size_t mbrlen (const char *s, size_t n, mbstate_t *ps); | ||
176 | # endif | ||
177 | #elif defined GNULIB_POSIXCHECK | ||
178 | # undef mbrlen | ||
179 | # define mbrlen(s,n,p) \ | ||
180 | (GL_LINK_WARNING ("mbrlen is unportable - " \ | ||
181 | "use gnulib module mbrlen for portability"), \ | ||
182 | mbrlen (s, n, p)) | ||
183 | #endif | ||
184 | |||
185 | |||
186 | /* Convert a string to a wide string. */ | ||
187 | #if @GNULIB_MBSRTOWCS@ | ||
188 | # if @REPLACE_MBSRTOWCS@ | ||
189 | # undef mbsrtowcs | ||
190 | # define mbsrtowcs rpl_mbsrtowcs | ||
191 | # endif | ||
192 | # if !@HAVE_MBSRTOWCS@ || @REPLACE_MBSRTOWCS@ | ||
193 | extern size_t mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps); | ||
194 | # endif | ||
195 | #elif defined GNULIB_POSIXCHECK | ||
196 | # undef mbsrtowcs | ||
197 | # define mbsrtowcs(d,s,l,p) \ | ||
198 | (GL_LINK_WARNING ("mbsrtowcs is unportable - " \ | ||
199 | "use gnulib module mbsrtowcs for portability"), \ | ||
200 | mbsrtowcs (d, s, l, p)) | ||
201 | #endif | ||
202 | |||
203 | |||
204 | /* Convert a string to a wide string. */ | ||
205 | #if @GNULIB_MBSNRTOWCS@ | ||
206 | # if @REPLACE_MBSNRTOWCS@ | ||
207 | # undef mbsnrtowcs | ||
208 | # define mbsnrtowcs rpl_mbsnrtowcs | ||
209 | # endif | ||
210 | # if !@HAVE_MBSNRTOWCS@ || @REPLACE_MBSNRTOWCS@ | ||
211 | extern size_t mbsnrtowcs (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps); | ||
212 | # endif | ||
213 | #elif defined GNULIB_POSIXCHECK | ||
214 | # undef mbsnrtowcs | ||
215 | # define mbsnrtowcs(d,s,n,l,p) \ | ||
216 | (GL_LINK_WARNING ("mbsnrtowcs is unportable - " \ | ||
217 | "use gnulib module mbsnrtowcs for portability"), \ | ||
218 | mbsnrtowcs (d, s, n, l, p)) | ||
219 | #endif | ||
220 | |||
221 | |||
222 | /* Convert a wide character to a multibyte character. */ | ||
223 | #if @GNULIB_WCRTOMB@ | ||
224 | # if @REPLACE_WCRTOMB@ | ||
225 | # undef wcrtomb | ||
226 | # define wcrtomb rpl_wcrtomb | ||
227 | # endif | ||
228 | # if !@HAVE_WCRTOMB@ || @REPLACE_WCRTOMB@ | ||
229 | extern size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps); | ||
230 | # endif | ||
231 | #elif defined GNULIB_POSIXCHECK | ||
232 | # undef wcrtomb | ||
233 | # define wcrtomb(s,w,p) \ | ||
234 | (GL_LINK_WARNING ("wcrtomb is unportable - " \ | ||
235 | "use gnulib module wcrtomb for portability"), \ | ||
236 | wcrtomb (s, w, p)) | ||
237 | #endif | ||
238 | |||
239 | |||
240 | /* Convert a wide string to a string. */ | ||
241 | #if @GNULIB_WCSRTOMBS@ | ||
242 | # if @REPLACE_WCSRTOMBS@ | ||
243 | # undef wcsrtombs | ||
244 | # define wcsrtombs rpl_wcsrtombs | ||
245 | # endif | ||
246 | # if !@HAVE_WCSRTOMBS@ || @REPLACE_WCSRTOMBS@ | ||
247 | extern size_t wcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps); | ||
248 | # endif | ||
249 | #elif defined GNULIB_POSIXCHECK | ||
250 | # undef wcsrtombs | ||
251 | # define wcsrtombs(d,s,l,p) \ | ||
252 | (GL_LINK_WARNING ("wcsrtombs is unportable - " \ | ||
253 | "use gnulib module wcsrtombs for portability"), \ | ||
254 | wcsrtombs (d, s, l, p)) | ||
255 | #endif | ||
256 | |||
257 | |||
258 | /* Convert a wide string to a string. */ | ||
259 | #if @GNULIB_WCSNRTOMBS@ | ||
260 | # if !@HAVE_WCSNRTOMBS@ | ||
261 | extern size_t wcsnrtombs (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps); | ||
262 | # endif | ||
263 | #elif defined GNULIB_POSIXCHECK | ||
264 | # undef wcsnrtombs | ||
265 | # define wcsnrtombs(d,s,n,l,p) \ | ||
266 | (GL_LINK_WARNING ("wcsnrtombs is unportable - " \ | ||
267 | "use gnulib module wcsnrtombs for portability"), \ | ||
268 | wcsnrtombs (d, s, n, l, p)) | ||
269 | #endif | ||
270 | |||
271 | |||
56 | /* Return the number of screen columns needed for WC. */ | 272 | /* Return the number of screen columns needed for WC. */ |
57 | #if @GNULIB_WCWIDTH@ | 273 | #if @GNULIB_WCWIDTH@ |
58 | # if @REPLACE_WCWIDTH@ | 274 | # if @REPLACE_WCWIDTH@ |
@@ -80,3 +296,4 @@ extern int wcwidth (int /* actually wchar_t */); | |||
80 | 296 | ||
81 | #endif /* _GL_WCHAR_H */ | 297 | #endif /* _GL_WCHAR_H */ |
82 | #endif /* _GL_WCHAR_H */ | 298 | #endif /* _GL_WCHAR_H */ |
299 | #endif | ||