|
|
|
| 1 |
|
/*** |
| 2 |
|
*ctype.h - character conversion macros and ctype macros |
| 3 |
|
* |
| 4 |
|
* Copyright (c) Microsoft Corporation. All rights reserved. |
| 5 |
|
* |
| 6 |
|
*Purpose: |
| 7 |
|
* Defines macros for character classification/conversion. |
| 8 |
|
* [ANSI/System V] |
| 9 |
|
* |
| 10 |
|
* [Public] |
| 11 |
|
* |
| 12 |
|
****/ |
| 13 |
|
|
| 14 |
|
#if _MSC_VER > 1000 |
| 15 |
|
#pragma once |
| 16 |
|
#endif |
| 17 |
|
|
| 18 |
|
#ifndef _INC_CTYPE |
| 19 |
|
#define _INC_CTYPE |
| 20 |
|
|
| 21 |
|
#include <crtdefs.h> |
| 22 |
|
|
| 23 |
|
#ifdef __cplusplus |
| 24 |
|
extern "C" { |
| 25 |
|
#endif |
| 26 |
|
|
| 27 |
|
#ifndef WEOF |
| 28 |
|
#define WEOF (wint_t)(0xFFFF) |
| 29 |
|
#endif |
| 30 |
|
|
| 31 |
|
#ifndef _CRT_CTYPEDATA_DEFINED |
| 32 |
|
#define _CRT_CTYPEDATA_DEFINED |
| 33 |
|
#ifndef _CTYPE_DISABLE_MACROS |
| 34 |
|
|
| 35 |
|
#ifndef __PCTYPE_FUNC |
| 36 |
|
#if defined(_CRT_DISABLE_PERFCRIT_LOCKS) && !defined(_DLL) |
| 37 |
|
#define __PCTYPE_FUNC _pctype |
| 38 |
|
#else |
| 39 |
|
#define __PCTYPE_FUNC __pctype_func() |
| 40 |
|
#endif |
| 41 |
|
#endif /* __PCTYPE_FUNC */ |
| 42 |
|
|
| 43 |
|
_CRTIMP const unsigned short * __cdecl __pctype_func(void); |
| 44 |
|
#if !defined(_M_CEE_PURE) |
| 45 |
|
_CRTIMP extern const unsigned short *_pctype; |
| 46 |
|
#else |
| 47 |
|
#define _pctype (__pctype_func()) |
| 48 |
|
#endif /* !defined(_M_CEE_PURE) */ |
| 49 |
|
#endif /* _CTYPE_DISABLE_MACROS */ |
| 50 |
|
#endif |
| 51 |
|
|
| 52 |
|
#ifndef _CRT_WCTYPEDATA_DEFINED |
| 53 |
|
#define _CRT_WCTYPEDATA_DEFINED |
| 54 |
|
#ifndef _CTYPE_DISABLE_MACROS |
| 55 |
|
#if !defined(_M_CEE_PURE) |
| 56 |
|
_CRTIMP extern const unsigned short _wctype[]; |
| 57 |
|
#endif /* !defined(_M_CEE_PURE) */ |
| 58 |
|
|
| 59 |
|
_CRTIMP const wctype_t * __cdecl __pwctype_func(void); |
| 60 |
|
#if !defined(_M_CEE_PURE) |
| 61 |
|
_CRTIMP extern const wctype_t *_pwctype; |
| 62 |
|
#else |
| 63 |
|
#define _pwctype (__pwctype_func()) |
| 64 |
|
#endif /* !defined(_M_CEE_PURE) */ |
| 65 |
|
#endif /* _CTYPE_DISABLE_MACROS */ |
| 66 |
|
#endif |
| 67 |
|
|
| 68 |
|
#ifndef _CTYPE_DISABLE_MACROS |
| 69 |
|
#endif /* _CTYPE_DISABLE_MACROS */ |
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
/* set bit masks for the possible character types */ |
| 75 |
|
|
| 76 |
|
#define _UPPER 0x1 /* upper case letter */ |
| 77 |
|
#define _LOWER 0x2 /* lower case letter */ |
| 78 |
|
#define _DIGIT 0x4 /* digit[0-9] */ |
| 79 |
|
#define _SPACE 0x8 /* tab, carriage return, newline, */ |
| 80 |
|
/* vertical tab or form feed */ |
| 81 |
|
#define _PUNCT 0x10 /* punctuation character */ |
| 82 |
|
#define _CONTROL 0x20 /* control character */ |
| 83 |
|
#define _BLANK 0x40 /* space char */ |
| 84 |
|
#define _HEX 0x80 /* hexadecimal digit */ |
| 85 |
|
|
| 86 |
|
#define _LEADBYTE 0x8000 /* multibyte leadbyte */ |
| 87 |
|
#define _ALPHA (0x0100|_UPPER|_LOWER) /* alphabetic character */ |
| 88 |
|
|
| 89 |
|
|
| 90 |
|
/* character classification function prototypes */ |
| 91 |
|
|
| 92 |
|
#ifndef _CTYPE_DEFINED |
| 93 |
|
|
| 94 |
|
_Check_return_ _CRTIMP int __cdecl _isctype(_In_ int _C, _In_ int _Type); |
| 95 |
|
_Check_return_ _CRTIMP int __cdecl _isctype_l(_In_ int _C, _In_ int _Type, _In_opt_ _locale_t _Locale); |
| 96 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl isalpha(_In_ int _C); |
| 97 |
|
_Check_return_ _CRTIMP int __cdecl _isalpha_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 98 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl isupper(_In_ int _C); |
| 99 |
|
_Check_return_ _CRTIMP int __cdecl _isupper_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 100 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl islower(_In_ int _C); |
| 101 |
|
_Check_return_ _CRTIMP int __cdecl _islower_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 102 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl isdigit(_In_ int _C); |
| 103 |
|
_Check_return_ _CRTIMP int __cdecl _isdigit_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 104 |
|
_Check_return_ _CRTIMP int __cdecl isxdigit(_In_ int _C); |
| 105 |
|
_Check_return_ _CRTIMP int __cdecl _isxdigit_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 106 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl isspace(_In_ int _C); |
| 107 |
|
_Check_return_ _CRTIMP int __cdecl _isspace_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 108 |
|
_Check_return_ _CRTIMP int __cdecl ispunct(_In_ int _C); |
| 109 |
|
_Check_return_ _CRTIMP int __cdecl _ispunct_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 110 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl isalnum(_In_ int _C); |
| 111 |
|
_Check_return_ _CRTIMP int __cdecl _isalnum_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 112 |
|
_Check_return_ _CRTIMP int __cdecl isprint(_In_ int _C); |
| 113 |
|
_Check_return_ _CRTIMP int __cdecl _isprint_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 114 |
|
_Check_return_ _CRTIMP int __cdecl isgraph(_In_ int _C); |
| 115 |
|
_Check_return_ _CRTIMP int __cdecl _isgraph_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 116 |
|
_Check_return_ _CRTIMP int __cdecl iscntrl(_In_ int _C); |
| 117 |
|
_Check_return_ _CRTIMP int __cdecl _iscntrl_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 118 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl toupper(_In_ int _C); |
| 119 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl tolower(_In_ int _C); |
| 120 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl _tolower(_In_ int _C); |
| 121 |
|
_Check_return_ _CRTIMP int __cdecl _tolower_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 122 |
|
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl _toupper(_In_ int _C); |
| 123 |
|
_Check_return_ _CRTIMP int __cdecl _toupper_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 124 |
|
_Check_return_ _CRTIMP int __cdecl __isascii(_In_ int _C); |
| 125 |
|
_Check_return_ _CRTIMP int __cdecl __toascii(_In_ int _C); |
| 126 |
|
_Check_return_ _CRTIMP int __cdecl __iscsymf(_In_ int _C); |
| 127 |
|
_Check_return_ _CRTIMP int __cdecl __iscsym(_In_ int _C); |
| 128 |
|
#define _CTYPE_DEFINED |
| 129 |
|
#endif |
| 130 |
|
|
| 131 |
|
#ifndef _WCTYPE_DEFINED |
| 132 |
|
|
| 133 |
|
/* wide function prototypes, also declared in wchar.h */ |
| 134 |
|
|
| 135 |
|
/* character classification function prototypes */ |
| 136 |
|
|
| 137 |
|
_Check_return_ _CRTIMP int __cdecl iswalpha(_In_ wint_t _C); |
| 138 |
|
_Check_return_ _CRTIMP int __cdecl _iswalpha_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 139 |
|
_Check_return_ _CRTIMP int __cdecl iswupper(_In_ wint_t _C); |
| 140 |
|
_Check_return_ _CRTIMP int __cdecl _iswupper_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 141 |
|
_Check_return_ _CRTIMP int __cdecl iswlower(_In_ wint_t _C); |
| 142 |
|
_Check_return_ _CRTIMP int __cdecl _iswlower_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 143 |
|
_Check_return_ _CRTIMP int __cdecl iswdigit(_In_ wint_t _C); |
| 144 |
|
_Check_return_ _CRTIMP int __cdecl _iswdigit_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 145 |
|
_Check_return_ _CRTIMP int __cdecl iswxdigit(_In_ wint_t _C); |
| 146 |
|
_Check_return_ _CRTIMP int __cdecl _iswxdigit_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 147 |
|
_Check_return_ _CRTIMP int __cdecl iswspace(_In_ wint_t _C); |
| 148 |
|
_Check_return_ _CRTIMP int __cdecl _iswspace_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 159 |
|
_Check_return_ _CRTIMP int __cdecl iswascii(_In_ wint_t _C); |
| 160 |
|
_Check_return_ _CRTIMP int __cdecl isleadbyte(_In_ int _C); |
| 161 |
|
_Check_return_ _CRTIMP int __cdecl _isleadbyte_l(_In_ int _C, _In_opt_ _locale_t _Locale); |
| 162 |
|
|
| 163 |
|
_Check_return_ _CRTIMP wint_t __cdecl towupper(_In_ wint_t _C); |
| 164 |
|
_Check_return_ _CRTIMP wint_t __cdecl _towupper_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 165 |
|
_Check_return_ _CRTIMP wint_t __cdecl towlower(_In_ wint_t _C); |
| 166 |
|
_Check_return_ _CRTIMP wint_t __cdecl _towlower_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 167 |
|
_Check_return_ _CRTIMP int __cdecl iswctype(_In_ wint_t _C, _In_ wctype_t _Type); |
| 168 |
|
_Check_return_ _CRTIMP int __cdecl _iswctype_l(_In_ wint_t _C, _In_ wctype_t _Type, _In_opt_ _locale_t _Locale); |
| 169 |
|
|
| 170 |
|
_Check_return_ _CRTIMP int __cdecl __iswcsymf(_In_ wint_t _C); |
| 171 |
|
_Check_return_ _CRTIMP int __cdecl _iswcsymf_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 172 |
|
_Check_return_ _CRTIMP int __cdecl __iswcsym(_In_ wint_t _C); |
| 173 |
|
_Check_return_ _CRTIMP int __cdecl _iswcsym_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale); |
| 174 |
|
|
| 175 |
|
_CRT_OBSOLETE(iswctype) _CRTIMP int __cdecl is_wctype(_In_ wint_t _C, _In_ wctype_t _Type); |
| 176 |
|
|
| 177 |
|
#define _WCTYPE_DEFINED |
| 178 |
|
#endif |
| 179 |
|
|
| 180 |
|
/* the character classification macro definitions */ |
| 181 |
|
|
| 182 |
|
#ifndef _CTYPE_DISABLE_MACROS |
| 183 |
|
|
| 184 |
|
/* |
| 185 |
|
* Maximum number of bytes in multi-byte character in the current locale |
| 186 |
|
* (also defined in stdlib.h). |
| 187 |
|
*/ |
| 188 |
|
#ifndef MB_CUR_MAX |
| 189 |
|
|
| 190 |
|
#if defined(_CRT_DISABLE_PERFCRIT_LOCKS) && !defined(_DLL) |
| 191 |
|
#define MB_CUR_MAX __mb_cur_max |
| 192 |
|
#else |
| 193 |
|
#define MB_CUR_MAX ___mb_cur_max_func() |
| 194 |
|
#endif |
| 195 |
|
#if !defined(_M_CEE_PURE) |
| 196 |
|
/* No data exports in pure code */ |
| 197 |
|
_CRTIMP extern int __mb_cur_max; |
| 198 |
|
#else |
| 199 |
|
#define __mb_cur_max (___mb_cur_max_func()) |
| 200 |
|
#endif /* !defined(_M_CEE_PURE) */ |
| 201 |
|
_CRTIMP int __cdecl ___mb_cur_max_func(void); |
| 202 |
|
_CRTIMP int __cdecl ___mb_cur_max_l_func(_locale_t); |
| 203 |
|
#endif /* MB_CUR_MAX */ |
| 204 |
|
|
| 205 |
|
/* Introduced to detect error when character testing functions are called |
| 206 |
|
* with illegal input of integer. |
| 207 |
|
*/ |
| 208 |
|
#ifdef _DEBUG |
| 209 |
|
_CRTIMP int __cdecl _chvalidator(_In_ int _Ch, _In_ int _Mask); |
| 210 |
|
#define __chvalidchk(a,b) _chvalidator(a,b) |
| 211 |
|
#else |
| 212 |
|
#define __chvalidchk(a,b) (__PCTYPE_FUNC[(a)] & (b)) |
| 213 |
|
#endif |
| 214 |
|
|
| 215 |
|
|
| 216 |
|
|
| 217 |
|
#if defined(_CRT_DISABLE_PERFCRIT_LOCKS) && !defined(_DLL) |
| 218 |
|
#ifndef __cplusplus |
| 219 |
|
#define isalpha(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_ALPHA) : __chvalidchk(_c, _ALPHA)) |
| 220 |
|
#define isupper(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_UPPER) : __chvalidchk(_c, _UPPER)) |
| 221 |
|
#define islower(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_LOWER) : __chvalidchk(_c, _LOWER)) |
| 222 |
|
#define isdigit(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_DIGIT) : __chvalidchk(_c, _DIGIT)) |
| 223 |
|
#define isxdigit(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_HEX) : __chvalidchk(_c, _HEX)) |
| 224 |
|
#define isspace(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_SPACE) : __chvalidchk(_c, _SPACE)) |
| 225 |
|
#define ispunct(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_PUNCT) : __chvalidchk(_c, _PUNCT)) |
| 226 |
|
#define isalnum(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_ALPHA|_DIGIT) : __chvalidchk(_c, (_ALPHA|_DIGIT))) |
| 227 |
|
#define isprint(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) : __chvalidchk(_c, (_BLANK|_PUNCT|_ALPHA|_DIGIT))) |
| 228 |
|
#define isgraph(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_PUNCT|_ALPHA|_DIGIT) : __chvalidchk(_c, (_PUNCT|_ALPHA|_DIGIT))) |
| 229 |
|
#define iscntrl(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_CONTROL) : __chvalidchk(_c, _CONTROL)) |
| 230 |
|
#elif 0 /* Pending ANSI C++ integration */ |
| 231 |
|
_Check_return_ inline int isalpha(_In_ int _C) |
| 232 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_ALPHA) : __chvalidchk(_C, _ALPHA)); } |
| 233 |
|
_Check_return_ inline int isupper(_In_ int _C) |
| 234 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_UPPER) : __chvalidchk(_C, _UPPER)); } |
| 235 |
|
_Check_return_ inline int islower(_In_ int _C) |
| 236 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_LOWER) : __chvalidchk(_C, _LOWER)); } |
| 237 |
|
_Check_return_ inline int isdigit(_In_ int _C) |
| 238 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_DIGIT) : __chvalidchk(_C, _DIGIT)); } |
| 239 |
|
_Check_return_ inline int isxdigit(_In_ int _C) |
| 240 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_HEX) : __chvalidchk(_C, _HEX)); } |
| 241 |
|
_Check_return_ inline int isspace(_In_ int _C) |
| 242 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_SPACE) : __chvalidchk(_C, _SPACE)); } |
| 243 |
|
_Check_return_ inline int ispunct(_In_ int _C) |
| 244 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_PUNCT) : __chvalidchk(_C, _PUNCT)); } |
| 245 |
|
_Check_return_ inline int isalnum(_In_ int _C) |
| 246 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_ALPHA|_DIGIT) |
| 247 |
|
: __chvalidchk(_C) , (_ALPHA|_DIGIT)); } |
| 248 |
|
_Check_return_ inline int isprint(_In_ int _C) |
| 249 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_BLANK|_PUNCT|_ALPHA|_DIGIT) |
| 250 |
|
: __chvalidchk(_C , (_BLANK|_PUNCT|_ALPHA|_DIGIT))); } |
| 251 |
|
_Check_return_ inline int isgraph(_In_ int _C) |
| 252 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_PUNCT|_ALPHA|_DIGIT) |
| 253 |
|
: __chvalidchk(_C , (_PUNCT|_ALPHA|_DIGIT))); } |
| 254 |
|
_Check_return_ inline int iscntrl(_In_ int _C) |
| 255 |
|
{return (MB_CUR_MAX > 1 ? _isctype(_C,_CONTROL) |
| 256 |
|
: __chvalidchk(_C , _CONTROL)); } |
| 257 |
|
#endif /* __cplusplus */ |
| 258 |
|
#endif /* _MT */ |
| 259 |
|
|
| 260 |
|
#ifdef _DEBUG |
| 261 |
|
_CRTIMP int __cdecl _chvalidator_l(_In_opt_ _locale_t, _In_ int _Ch, _In_ int _Mask); |
| 262 |
|
#define _chvalidchk_l(_Char, _Flag, _Locale) _chvalidator_l(_Locale, _Char, _Flag) |
| 263 |
|
#else |
| 264 |
|
#define _chvalidchk_l(_Char, _Flag, _Locale) (_Locale==NULL ? __chvalidchk(_Char, _Flag) : ((_locale_t)_Locale)->locinfo->pctype[_Char] & (_Flag)) |
| 265 |
|
#endif /* DEBUG */ |
| 266 |
|
|
| 267 |
|
|
| 268 |
|
#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)) |
| 269 |
|
#define _isalpha_l(_Char, _Locale) _ischartype_l(_Char, _ALPHA, _Locale) |
| 270 |
|
#define _isupper_l(_Char, _Locale) _ischartype_l(_Char, _UPPER, _Locale) |
| 271 |
|
#define _islower_l(_Char, _Locale) _ischartype_l(_Char, _LOWER, _Locale) |
| 272 |
|
#define _isdigit_l(_Char, _Locale) _ischartype_l(_Char, _DIGIT, _Locale) |
| 273 |
|
#define _isxdigit_l(_Char, _Locale) _ischartype_l(_Char, _HEX, _Locale) |
| 274 |
|
#define _isspace_l(_Char, _Locale) _ischartype_l(_Char, _SPACE, _Locale) |
| 275 |
|
#define _ispunct_l(_Char, _Locale) _ischartype_l(_Char, _PUNCT, _Locale) |
| 276 |
|
#define _isalnum_l(_Char, _Locale) _ischartype_l(_Char, _ALPHA|_DIGIT, _Locale) |
| 277 |
|
#define _isprint_l(_Char, _Locale) _ischartype_l(_Char, _BLANK|_PUNCT|_ALPHA|_DIGIT, _Locale) |
| 278 |
|
#define _isgraph_l(_Char, _Locale) _ischartype_l(_Char, _PUNCT|_ALPHA|_DIGIT, _Locale) |
| 279 |
|
#define _iscntrl_l(_Char, _Locale) _ischartype_l(_Char, _CONTROL, _Locale) |
| 280 |
|
|
| 281 |
|
#define _tolower(_Char) ( (_Char)-'A'+'a' ) |
| 282 |
|
#define _toupper(_Char) ( (_Char)-'a'+'A' ) |
| 283 |
|
|
| 284 |
|
#define __isascii(_Char) ( (unsigned)(_Char) < 0x80 ) |
| 285 |
|
#define __toascii(_Char) ( (_Char) & 0x7f ) |
| 286 |
|
|
| 287 |
|
#ifndef _WCTYPE_INLINE_DEFINED |
| 288 |
|
|
| 289 |
|
#undef _CRT_WCTYPE_NOINLINE |
| 290 |
|
|
| 291 |
|
#if !defined(__cplusplus) || defined(_M_CEE_PURE) || defined(MRTDLL) || defined(_CRT_WCTYPE_NOINLINE) |
| 292 |
|
#define iswalpha(_c) ( iswctype(_c,_ALPHA) ) |
| 293 |
|
#define iswupper(_c) ( iswctype(_c,_UPPER) ) |
| 294 |
|
#define iswlower(_c) ( iswctype(_c,_LOWER) ) |
| 295 |
|
#define iswdigit(_c) ( iswctype(_c,_DIGIT) ) |
| 296 |
|
#define iswxdigit(_c) ( iswctype(_c,_HEX) ) |
| 297 |
|
#define iswspace(_c) ( iswctype(_c,_SPACE) ) |
| 298 |
|
#define iswpunct(_c) ( iswctype(_c,_PUNCT) ) |
| 299 |
|
#define iswalnum(_c) ( iswctype(_c,_ALPHA|_DIGIT) ) |
| 300 |
|
#define iswprint(_c) ( iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) ) |
| 301 |
|
#define iswgraph(_c) ( iswctype(_c,_PUNCT|_ALPHA|_DIGIT) ) |
| 302 |
|
#define iswcntrl(_c) ( iswctype(_c,_CONTROL) ) |
| 303 |
|
#define iswascii(_c) ( (unsigned)(_c) < 0x80 ) |
| 304 |
|
|
| 305 |
|
#define _iswalpha_l(_c,_p) ( _iswctype_l(_c,_ALPHA, _p) ) |
| 306 |
|
#define _iswupper_l(_c,_p) ( _iswctype_l(_c,_UPPER, _p) ) |
| 307 |
|
#define _iswlower_l(_c,_p) ( _iswctype_l(_c,_LOWER, _p) ) |
| 308 |
|
#define _iswdigit_l(_c,_p) ( _iswctype_l(_c,_DIGIT, _p) ) |
| 309 |
|
#define _iswxdigit_l(_c,_p) ( _iswctype_l(_c,_HEX, _p) ) |
| 310 |
|
#define _iswspace_l(_c,_p) ( _iswctype_l(_c,_SPACE, _p) ) |
| 311 |
|
#define _iswpunct_l(_c,_p) ( _iswctype_l(_c,_PUNCT, _p) ) |
| 312 |
|
#define _iswalnum_l(_c,_p) ( _iswctype_l(_c,_ALPHA|_DIGIT, _p) ) |
| 313 |
|
#define _iswprint_l(_c,_p) ( _iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT, _p) ) |
| 314 |
|
#define _iswgraph_l(_c,_p) ( _iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT, _p) ) |
| 315 |
|
#define _iswcntrl_l(_c,_p) ( _iswctype_l(_c,_CONTROL, _p) ) |
| 316 |
|
#elif 0 /* __cplusplus */ |
| 317 |
|
_Check_return_ inline int iswalpha(_In_ wint_t _C) {return (iswctype(_C,_ALPHA)); } |
| 318 |
|
_Check_return_ inline int iswupper(_In_ wint_t _C) {return (iswctype(_C,_UPPER)); } |
| 319 |
|
_Check_return_ inline int iswlower(_In_ wint_t _C) {return (iswctype(_C,_LOWER)); } |
| 320 |
|
_Check_return_ inline int iswdigit(_In_ wint_t _C) {return (iswctype(_C,_DIGIT)); } |
| 321 |
|
_Check_return_ inline int iswxdigit(_In_ wint_t _C) {return (iswctype(_C,_HEX)); } |
| 322 |
|
_Check_return_ inline int iswspace(_In_ wint_t _C) {return (iswctype(_C,_SPACE)); } |
| 323 |
|
_Check_return_ inline int iswpunct(_In_ wint_t _C) {return (iswctype(_C,_PUNCT)); } |
| 324 |
|
_Check_return_ inline int iswalnum(_In_ wint_t _C) {return (iswctype(_C,_ALPHA|_DIGIT)); } |
| 325 |
|
_Check_return_ inline int iswprint(_In_ wint_t _C) {return (iswctype(_C,_BLANK|_PUNCT|_ALPHA|_DIGIT)); } |
| 326 |
|
_Check_return_ inline int iswgraph(_In_ wint_t _C) {return (iswctype(_C,_PUNCT|_ALPHA|_DIGIT)); } |
| 327 |
|
_Check_return_ inline int iswcntrl(_In_ wint_t _C) {return (iswctype(_C,_CONTROL)); } |
| 328 |
|
_Check_return_ inline int iswascii(_In_ wint_t _C) {return ((unsigned)(_C) < 0x80); } |
| 329 |
|
|
| 330 |
|
_Check_return_ inline int __CRTDECL _iswalpha_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_ALPHA, _Locale)); } |
| 331 |
|
_Check_return_ inline int __CRTDECL _iswupper_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_UPPER, _Locale)); } |
| 332 |
|
_Check_return_ inline int __CRTDECL _iswlower_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_LOWER, _Locale)); } |
| 333 |
|
_Check_return_ inline int __CRTDECL _iswdigit_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_DIGIT, _Locale)); } |
| 334 |
|
_Check_return_ inline int __CRTDECL _iswxdigit_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return(_iswctype_l(_C,_HEX, _Locale)); } |
| 335 |
|
_Check_return_ inline int __CRTDECL _iswspace_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_SPACE, _Locale)); } |
| 336 |
|
_Check_return_ inline int __CRTDECL _iswpunct_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_PUNCT, _Locale)); } |
| 337 |
|
_Check_return_ inline int __CRTDECL _iswalnum_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_ALPHA|_DIGIT, _Locale)); } |
| 338 |
|
_Check_return_ inline int __CRTDECL _iswprint_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_BLANK|_PUNCT|_ALPHA|_DIGIT, _Locale)); } |
| 339 |
|
_Check_return_ inline int __CRTDECL _iswgraph_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_PUNCT|_ALPHA|_DIGIT, _Locale)); } |
| 340 |
|
_Check_return_ inline int __CRTDECL _iswcntrl_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale) {return (_iswctype_l(_C,_CONTROL, _Locale)); } |
| 341 |
|
|
| 342 |
|
_Check_return_ inline int isleadbyte(int _C) {return (__PCTYPE_FUNC[(unsigned char)(_C)] & _LEADBYTE); } |
| 343 |
|
#endif /* __cplusplus */ |
| 344 |
|
#define _WCTYPE_INLINE_DEFINED |
| 345 |
|
#endif /* _WCTYPE_INLINE_DEFINED */ |
| 346 |
|
|
| 347 |
|
/* MS C version 2.0 extended ctype macros */ |
| 348 |
|
|
| 349 |
|
#define __iscsymf(_c) (isalpha(_c) || ((_c) == '_')) |
| 350 |
|
#define __iscsym(_c) (isalnum(_c) || ((_c) == '_')) |
| 351 |
|
#define __iswcsymf(_c) (iswalpha(_c) || ((_c) == '_')) |
| 352 |
|
#define __iswcsym(_c) (iswalnum(_c) || ((_c) == '_')) |
| 353 |
|
|
| 354 |
|
#define _iscsymf_l(_c, _p) (_isalpha_l(_c, _p) || ((_c) == '_')) |
| 355 |
|
#define _iscsym_l(_c, _p) (_isalnum_l(_c, _p) || ((_c) == '_')) |
| 356 |
|
#define _iswcsymf_l(_c, _p) (_iswalpha_l(_c, _p) || ((_c) == '_')) |
| 357 |
|
#define _iswcsym_l(_c, _p) (_iswalnum_l(_c, _p) || ((_c) == '_')) |
| 358 |
|
|
| 359 |
|
#endif /* _CTYPE_DISABLE_MACROS */ |
| 360 |
|
|
| 361 |
|
|
| 362 |
|
#if !__STDC__ |
| 363 |
|
|
| 364 |
|
/* Non-ANSI names for compatibility */ |
| 365 |
|
|
| 366 |
|
#ifndef _CTYPE_DEFINED |
| 367 |
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(__isascii) _CRTIMP int __cdecl isascii(_In_ int _C); |
| 368 |
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(__toascii) _CRTIMP int __cdecl toascii(_In_ int _C); |
| 369 |
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(__iscsymf) _CRTIMP int __cdecl iscsymf(_In_ int _C); |
| 370 |
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(__iscsym) _CRTIMP int __cdecl iscsym(_In_ int _C); |
| 371 |
|
#else |
| 372 |
|
#define isascii __isascii |
| 373 |
|
#define toascii __toascii |
| 374 |
|
#define iscsymf __iscsymf |
| 375 |
|
#define iscsym __iscsym |
| 376 |
|
#endif |
| 377 |
|
|
| 378 |
|
#endif /* __STDC__ */ |
| 379 |
|
|
| 380 |
|
#ifdef __cplusplus |
| 381 |
|
} |
| 382 |
|
#endif |
| 383 |
|
|
| 384 |
|
#endif /* _INC_CTYPE */ |
| 385 |
|
|
|
|
|