[CMAKE]
[reactos.git] / include / crt / ctype.h
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _INC_CTYPE
7 #define _INC_CTYPE
8
9 #include <crtdefs.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #ifndef WEOF
16 #define WEOF (wint_t)(0xFFFF)
17 #endif
18
19 #ifndef _CRT_CTYPEDATA_DEFINED
20 # define _CRT_CTYPEDATA_DEFINED
21 # ifndef _CTYPE_DISABLE_MACROS
22 # ifndef __PCTYPE_FUNC
23 # ifdef _DLL
24 # define __PCTYPE_FUNC __pctype_func()
25 # else
26 # define __PCTYPE_FUNC _pctype
27 # endif
28 # endif /* !__PCTYPE_FUNC */
29 _CRTIMP const unsigned short * __cdecl __pctype_func(void);
30 # ifndef _M_CEE_PURE
31 _CRTDATA(extern const unsigned short *_pctype);
32 # else
33 # define _pctype (__pctype_func())
34 # endif /* !_M_CEE_PURE */
35 # endif /* !_CTYPE_DISABLE_MACROS */
36 #endif /* !_CRT_CTYPEDATA_DEFINED */
37
38 #ifndef _CRT_WCTYPEDATA_DEFINED
39 #define _CRT_WCTYPEDATA_DEFINED
40 # ifndef _CTYPE_DISABLE_MACROS
41 _CRTDATA(extern const unsigned short _wctype[]);
42 _CRTIMP const wctype_t * __cdecl __pwctype_func(void);
43 # ifndef _M_CEE_PURE
44 _CRTDATA(extern const wctype_t *_pwctype);
45 # else
46 # define _pwctype (__pwctype_func())
47 # endif /* !_M_CEE_PURE */
48 # endif /* !_CTYPE_DISABLE_MACROS */
49 #endif /* !_CRT_WCTYPEDATA_DEFINED */
50
51 /* CRT stuff */
52 #if 1
53 extern const unsigned char __newclmap[];
54 extern const unsigned char __newcumap[];
55 extern pthreadlocinfo __ptlocinfo;
56 extern pthreadmbcinfo __ptmbcinfo;
57 extern int __globallocalestatus;
58 extern int __locale_changed;
59 extern struct threadlocaleinfostruct __initiallocinfo;
60 extern _locale_tstruct __initiallocalestructinfo;
61 pthreadlocinfo __cdecl __updatetlocinfo(void);
62 pthreadmbcinfo __cdecl __updatetmbcinfo(void);
63 #endif
64
65 #define _UPPER 0x1
66 #define _LOWER 0x2
67 #define _DIGIT 0x4
68 #define _SPACE 0x8
69
70 #define _PUNCT 0x10
71 #define _CONTROL 0x20
72 #define _BLANK 0x40
73 #define _HEX 0x80
74
75 #define _LEADBYTE 0x8000
76 #define _ALPHA (0x0100|_UPPER|_LOWER)
77
78 #ifndef _CTYPE_DEFINED
79 #define _CTYPE_DEFINED
80 _CRTIMP int __cdecl _isctype(int _C,int _Type);
81 _CRTIMP int __cdecl _isctype_l(int _C,int _Type,_locale_t _Locale);
82 _CRTIMP int __cdecl isalpha(int _C);
83 _CRTIMP int __cdecl _isalpha_l(int _C,_locale_t _Locale);
84 _CRTIMP int __cdecl isupper(int _C);
85 _CRTIMP int __cdecl _isupper_l(int _C,_locale_t _Locale);
86 _CRTIMP int __cdecl islower(int _C);
87 _CRTIMP int __cdecl _islower_l(int _C,_locale_t _Locale);
88 _CRTIMP int __cdecl isdigit(int _C);
89 _CRTIMP int __cdecl _isdigit_l(int _C,_locale_t _Locale);
90 _CRTIMP int __cdecl isxdigit(int _C);
91 _CRTIMP int __cdecl _isxdigit_l(int _C,_locale_t _Locale);
92 _CRTIMP int __cdecl isspace(int _C);
93 _CRTIMP int __cdecl _isspace_l(int _C,_locale_t _Locale);
94 _CRTIMP int __cdecl ispunct(int _C);
95 _CRTIMP int __cdecl _ispunct_l(int _C,_locale_t _Locale);
96 _CRTIMP int __cdecl isalnum(int _C);
97 _CRTIMP int __cdecl _isalnum_l(int _C,_locale_t _Locale);
98 _CRTIMP int __cdecl isprint(int _C);
99 _CRTIMP int __cdecl _isprint_l(int _C,_locale_t _Locale);
100 _CRTIMP int __cdecl isgraph(int _C);
101 _CRTIMP int __cdecl _isgraph_l(int _C,_locale_t _Locale);
102 _CRTIMP int __cdecl iscntrl(int _C);
103 _CRTIMP int __cdecl _iscntrl_l(int _C,_locale_t _Locale);
104 _CRTIMP int __cdecl toupper(int _C);
105 _CRTIMP int __cdecl tolower(int _C);
106 _CRTIMP int __cdecl _tolower(int _C);
107 _CRTIMP int __cdecl _tolower_l(int _C,_locale_t _Locale);
108 _CRTIMP int __cdecl _toupper(int _C);
109 _CRTIMP int __cdecl _toupper_l(int _C,_locale_t _Locale);
110 _CRTIMP int __cdecl __isascii(int _C);
111 _CRTIMP int __cdecl __toascii(int _C);
112 _CRTIMP int __cdecl __iscsymf(int _C);
113 _CRTIMP int __cdecl __iscsym(int _C);
114 #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
115 _CRTIMP int __cdecl isblank(int _C);
116 #endif
117 #endif /* !_CTYPE_DEFINED */
118
119 #ifndef _WCTYPE_DEFINED
120 #define _WCTYPE_DEFINED
121 _CRTIMP int __cdecl iswalpha(wint_t _C);
122 _CRTIMP int __cdecl _iswalpha_l(wint_t _C,_locale_t _Locale);
123 _CRTIMP int __cdecl iswupper(wint_t _C);
124 _CRTIMP int __cdecl _iswupper_l(wint_t _C,_locale_t _Locale);
125 _CRTIMP int __cdecl iswlower(wint_t _C);
126 _CRTIMP int __cdecl _iswlower_l(wint_t _C,_locale_t _Locale);
127 _CRTIMP int __cdecl iswdigit(wint_t _C);
128 _CRTIMP int __cdecl _iswdigit_l(wint_t _C,_locale_t _Locale);
129 _CRTIMP int __cdecl iswxdigit(wint_t _C);
130 _CRTIMP int __cdecl _iswxdigit_l(wint_t _C,_locale_t _Locale);
131 _CRTIMP int __cdecl iswspace(wint_t _C);
132 _CRTIMP int __cdecl _iswspace_l(wint_t _C,_locale_t _Locale);
133 _CRTIMP int __cdecl iswpunct(wint_t _C);
134 _CRTIMP int __cdecl _iswpunct_l(wint_t _C,_locale_t _Locale);
135 _CRTIMP int __cdecl iswalnum(wint_t _C);
136 _CRTIMP int __cdecl _iswalnum_l(wint_t _C,_locale_t _Locale);
137 _CRTIMP int __cdecl iswprint(wint_t _C);
138 _CRTIMP int __cdecl _iswprint_l(wint_t _C,_locale_t _Locale);
139 _CRTIMP int __cdecl iswgraph(wint_t _C);
140 _CRTIMP int __cdecl _iswgraph_l(wint_t _C,_locale_t _Locale);
141 _CRTIMP int __cdecl iswcntrl(wint_t _C);
142 _CRTIMP int __cdecl _iswcntrl_l(wint_t _C,_locale_t _Locale);
143 _CRTIMP int __cdecl iswascii(wint_t _C);
144 _CRTIMP int __cdecl isleadbyte(int _C);
145 _CRTIMP int __cdecl _isleadbyte_l(int _C,_locale_t _Locale);
146 _CRTIMP wint_t __cdecl towupper(wint_t _C);
147 _CRTIMP wint_t __cdecl _towupper_l(wint_t _C,_locale_t _Locale);
148 _CRTIMP wint_t __cdecl towlower(wint_t _C);
149 _CRTIMP wint_t __cdecl _towlower_l(wint_t _C,_locale_t _Locale);
150 _CRTIMP int __cdecl iswctype(wint_t _C,wctype_t _Type);
151 _CRTIMP int __cdecl _iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale);
152 _CRTIMP int __cdecl __iswcsymf(wint_t _C);
153 _CRTIMP int __cdecl _iswcsymf_l(wint_t _C,_locale_t _Locale);
154 _CRTIMP int __cdecl __iswcsym(wint_t _C);
155 _CRTIMP int __cdecl _iswcsym_l(wint_t _C,_locale_t _Locale);
156 _CRTIMP int __cdecl is_wctype(wint_t _C,wctype_t _Type);
157
158 #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
159 _CRTIMP int __cdecl iswblank(wint_t _C);
160 #endif
161 #endif
162
163 #ifndef _CTYPE_DISABLE_MACROS
164
165 #ifndef MB_CUR_MAX
166 #define MB_CUR_MAX ___mb_cur_max_func()
167 #ifndef __mb_cur_max
168 #ifdef _MSVCRT_
169 extern int __mb_cur_max;
170 #else
171 #define __mb_cur_max (*_imp____mb_cur_max)
172 extern int *_imp____mb_cur_max;
173 #endif
174 #endif
175 #ifdef _MSVCRT_
176 #define ___mb_cur_max_func() (__mb_cur_max)
177 #else
178 #define ___mb_cur_max_func() (*_imp____mb_cur_max)
179 #endif
180 #endif
181
182 #define __chvalidchk(a,b) (__PCTYPE_FUNC[(a)] & (b))
183 #define _chvalidchk_l(_Char,_Flag,_Locale) (!_Locale ? __chvalidchk(_Char,_Flag) : ((_locale_t)_Locale)->locinfo->pctype[_Char] & (_Flag))
184 #define _ischartype_l(_Char,_Flag,_Locale) (((_Locale)!=NULL && (((_locale_t)(_Locale))->locinfo->mb_cur_max) > 1) ? _isctype_l(_Char,(_Flag),_Locale) : _chvalidchk_l(_Char,_Flag,_Locale))
185 #define _isalpha_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA,_Locale)
186 #define _isupper_l(_Char,_Locale) _ischartype_l(_Char,_UPPER,_Locale)
187 #define _islower_l(_Char,_Locale) _ischartype_l(_Char,_LOWER,_Locale)
188 #define _isdigit_l(_Char,_Locale) _ischartype_l(_Char,_DIGIT,_Locale)
189 #define _isxdigit_l(_Char,_Locale) _ischartype_l(_Char,_HEX,_Locale)
190 #define _isspace_l(_Char,_Locale) _ischartype_l(_Char,_SPACE,_Locale)
191 #define _ispunct_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT,_Locale)
192 #define _isalnum_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA|_DIGIT,_Locale)
193 #define _isprint_l(_Char,_Locale) _ischartype_l(_Char,_BLANK|_PUNCT|_ALPHA|_DIGIT,_Locale)
194 #define _isgraph_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT|_ALPHA|_DIGIT,_Locale)
195 #define _iscntrl_l(_Char,_Locale) _ischartype_l(_Char,_CONTROL,_Locale)
196 #define _tolower(_Char) ((_Char)-'A'+'a')
197 #define _toupper(_Char) ((_Char)-'a'+'A')
198 #define __isascii(_Char) ((unsigned)(_Char) < 0x80)
199 #define __toascii(_Char) ((_Char) & 0x7f)
200
201 #ifndef _WCTYPE_INLINE_DEFINED
202 #define _WCTYPE_INLINE_DEFINED
203
204 #undef _CRT_WCTYPE_NOINLINE
205 #ifndef __cplusplus
206 #define iswalpha(_c) (iswctype(_c,_ALPHA))
207 #define iswupper(_c) (iswctype(_c,_UPPER))
208 #define iswlower(_c) (iswctype(_c,_LOWER))
209 #define iswdigit(_c) (iswctype(_c,_DIGIT))
210 #define iswxdigit(_c) (iswctype(_c,_HEX))
211 #define iswspace(_c) (iswctype(_c,_SPACE))
212 #define iswpunct(_c) (iswctype(_c,_PUNCT))
213 #define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
214 #define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
215 #define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
216 #define iswcntrl(_c) (iswctype(_c,_CONTROL))
217 #define iswascii(_c) ((unsigned)(_c) < 0x80)
218 #define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
219 #define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
220 #define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
221 #define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
222 #define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
223 #define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
224 #define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
225 #define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
226 #define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
227 #define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
228 #define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
229 #endif
230 #endif
231
232 #define __iscsymf(_c) (isalpha(_c) || ((_c)=='_'))
233 #define __iscsym(_c) (isalnum(_c) || ((_c)=='_'))
234 #define __iswcsymf(_c) (iswalpha(_c) || ((_c)=='_'))
235 #define __iswcsym(_c) (iswalnum(_c) || ((_c)=='_'))
236 #define _iscsymf_l(_c,_p) (_isalpha_l(_c,_p) || ((_c)=='_'))
237 #define _iscsym_l(_c,_p) (_isalnum_l(_c,_p) || ((_c)=='_'))
238 #define _iswcsymf_l(_c,_p) (_iswalpha_l(_c,_p) || ((_c)=='_'))
239 #define _iswcsym_l(_c,_p) (_iswalnum_l(_c,_p) || ((_c)=='_'))
240 #endif
241
242 #ifndef NO_OLDNAMES
243 #ifndef _CTYPE_DEFINED
244 _CRTIMP _CRT_NONSTDC_DEPRECATE(__isascii) _CRTIMP int __cdecl isascii(int _C);
245 _CRTIMP _CRT_NONSTDC_DEPRECATE(__toascii) _CRTIMP int __cdecl toascii(int _C);
246 _CRTIMP _CRT_NONSTDC_DEPRECATE(__iscsymf) _CRTIMP int __cdecl iscsymf(int _C);
247 _CRTIMP _CRT_NONSTDC_DEPRECATE(__iscsym) _CRTIMP int __cdecl iscsym(int _C);
248 #else
249 #define isascii __isascii
250 #define toascii __toascii
251 #define iscsymf __iscsymf
252 #define iscsym __iscsym
253 #endif
254 #endif
255
256 #ifdef __cplusplus
257 }
258 #endif
259
260 #endif /* !_INC_CTYPE */