| 1 | #ifndef _WCTYPE_H |
|---|---|
| 2 | |
| 3 | #ifndef _ISOMAC |
| 4 | /* We try to get wint_t from <stddef.h>, but not all GCC versions define it |
| 5 | there. So define it ourselves if it remains undefined. */ |
| 6 | # define __need_wint_t |
| 7 | # include <stddef.h> |
| 8 | # ifndef _WINT_T |
| 9 | /* Integral type unchanged by default argument promotions that can |
| 10 | hold any value corresponding to members of the extended character |
| 11 | set, as well as at least one value that does not correspond to any |
| 12 | member of the extended character set. */ |
| 13 | # define _WINT_T |
| 14 | typedef unsigned int wint_t; |
| 15 | # endif |
| 16 | |
| 17 | /* Need to repeat these prototypes here, as wctype/wctype.h defines all |
| 18 | these as macros and thus we couldn't add libc_hidden_proto. */ |
| 19 | |
| 20 | extern int iswalpha (wint_t __wc); |
| 21 | extern int iswalnum (wint_t __wc); |
| 22 | extern int iswdigit (wint_t __wc); |
| 23 | extern int iswlower (wint_t __wc); |
| 24 | extern int iswspace (wint_t __wc); |
| 25 | extern int iswxdigit (wint_t __wc); |
| 26 | extern wint_t towlower (wint_t __wc); |
| 27 | extern wint_t towupper (wint_t __wc); |
| 28 | |
| 29 | libc_hidden_proto (iswalpha) |
| 30 | libc_hidden_proto (iswalnum) |
| 31 | libc_hidden_proto (iswdigit) |
| 32 | libc_hidden_proto (iswlower) |
| 33 | libc_hidden_proto (iswspace) |
| 34 | libc_hidden_proto (iswxdigit) |
| 35 | libc_hidden_proto (towlower) |
| 36 | libc_hidden_proto (towupper) |
| 37 | #endif |
| 38 | |
| 39 | #include <wctype/wctype.h> |
| 40 | |
| 41 | #ifndef _ISOMAC |
| 42 | /* Internal interfaces. */ |
| 43 | extern int __iswspace (wint_t __wc); |
| 44 | extern int __iswctype (wint_t __wc, wctype_t __desc); |
| 45 | extern wctype_t __wctype (const char *__property); |
| 46 | extern wctrans_t __wctrans (const char *__property); |
| 47 | extern wint_t __towctrans (wint_t __wc, wctrans_t __desc); |
| 48 | |
| 49 | extern __typeof (iswalnum) __iswalnum __THROW __attribute_pure__; |
| 50 | extern __typeof (iswalnum_l) __iswalnum_l; |
| 51 | extern __typeof (iswalpha_l) __iswalpha_l; |
| 52 | extern __typeof (iswblank_l) __iswblank_l; |
| 53 | extern __typeof (iswcntrl_l) __iswcntrl_l; |
| 54 | extern __typeof (iswdigit_l) __iswdigit_l; |
| 55 | extern __typeof (iswlower) __iswlower __THROW __attribute_pure__; |
| 56 | extern __typeof (iswlower_l) __iswlower_l; |
| 57 | extern __typeof (iswgraph_l) __iswgraph_l; |
| 58 | extern __typeof (iswprint_l) __iswprint_l; |
| 59 | extern __typeof (iswpunct_l) __iswpunct_l; |
| 60 | extern __typeof (iswspace_l) __iswspace_l; |
| 61 | extern __typeof (iswupper_l) __iswupper_l; |
| 62 | extern __typeof (iswxdigit_l) __iswxdigit_l; |
| 63 | extern __typeof (towlower_l) __towlower_l; |
| 64 | extern __typeof (towupper_l) __towupper_l; |
| 65 | extern __typeof (towlower) __towlower __THROW __attribute_pure__; |
| 66 | extern __typeof (towupper) __towupper __THROW __attribute_pure__; |
| 67 | |
| 68 | libc_hidden_proto (__towctrans) |
| 69 | libc_hidden_proto (__iswctype) |
| 70 | libc_hidden_proto (__iswalnum) |
| 71 | libc_hidden_proto (__iswalnum_l) |
| 72 | libc_hidden_proto (__iswalpha_l) |
| 73 | libc_hidden_proto (__iswblank_l) |
| 74 | libc_hidden_proto (__iswcntrl_l) |
| 75 | libc_hidden_proto (__iswdigit_l) |
| 76 | libc_hidden_proto (__iswlower) |
| 77 | libc_hidden_proto (__iswlower_l) |
| 78 | libc_hidden_proto (__iswgraph_l) |
| 79 | libc_hidden_proto (__iswprint_l) |
| 80 | libc_hidden_proto (__iswpunct_l) |
| 81 | libc_hidden_proto (__iswspace_l) |
| 82 | libc_hidden_proto (__iswupper_l) |
| 83 | libc_hidden_proto (__iswxdigit_l) |
| 84 | libc_hidden_proto (__towlower_l) |
| 85 | libc_hidden_proto (__towupper_l) |
| 86 | libc_hidden_proto (__towlower) |
| 87 | libc_hidden_proto (__towupper) |
| 88 | |
| 89 | /* The spec says that isdigit must only match the decimal digits. We |
| 90 | can check this without a memory access. */ |
| 91 | # if IS_IN (libc) |
| 92 | # undef iswdigit |
| 93 | # define iswdigit(c) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; }) |
| 94 | # undef iswdigit_l |
| 95 | # define iswdigit_l(c, l) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; }) |
| 96 | # undef __iswdigit_l |
| 97 | # define __iswdigit_l(c, l) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; }) |
| 98 | # endif |
| 99 | |
| 100 | #endif |
| 101 | #endif |
| 102 |