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 |