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 b721572e..e069cfaa 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 | ||
