📄 iswctype.c
字号:
/***
*iswctype.c - support isw* wctype functions/macros for wide characters
*
* Copyright (c) 1991-1998, Microsoft Corporation. All rights reserved.
*
*Purpose:
* Defines iswctype - support isw* wctype functions/macros for
* wide characters (esp. > 255).
*
*******************************************************************************/
#include <cruntime.h>
#include <ctype.h>
#include <stdio.h>
#include <locale.h>
#include <setlocal.h>
#include <awint.h>
/*
* Use GetStringTypeW() API so check that character type masks agree between
* ctype.h and winnls.h
*/
#if _UPPER != C1_UPPER || \
_LOWER != C1_LOWER || \
_DIGIT != C1_DIGIT || \
_SPACE != C1_SPACE || \
_PUNCT != C1_PUNCT || \
_CONTROL != C1_CNTRL
#error Character type masks do not agree in ctype and winnls
#endif /* _UPPER != C1_UPPER || \ */
/***
*iswctype - support isw* wctype functions/macros.
*
*Purpose:
* This function is called by the isw* wctype functions/macros
* (e.g. iswalpha()) when their argument is a wide character > 255.
* It is also a standard ITSCJ (proposed) ISO routine and can be called
* by the user, even for characters < 256.
* Returns true or false depending on whether the argument satisfies
* the character class property encoded by the mask. Returns 0 if the
* argument is WEOF.
*
* NOTE: The isw* functions are neither locale nor codepage dependent.
*
*Entry:
* wchar_t c - the wide character whose type is to be tested
* wchar_t mask - the mask used by the isw* functions/macros
* corresponding to each character class property
*
*Exit:
* Returns non-zero if c is of the character class.
* Returns 0 if c is not of the character class.
*
*Exceptions:
* Returns 0 on any error.
*
*******************************************************************************/
int __cdecl iswctype (
wchar_t c,
wctype_t mask
)
{
wint_t d;
if (c == WEOF)
return 0;
if (c < 256)
d = _pwctype[c];
else
{
if ( __crtGetStringTypeW(CT_CTYPE1, &c, 1, &d, 0, 0) == 0 )
return 0;
}
return (int)(d & mask);
}
/***
*is_wctype - support obsolete name
*
*Purpose:
* Name changed from is_wctype to iswctype. is_wctype must be supported.
*
*Entry:
* wchar_t c - the wide character whose type is to be tested
* wchar_t mask - the mask used by the isw* functions/macros
* corresponding to each character class property
*
*Exit:
* Returns non-zero if c is of the character class.
* Returns 0 if c is not of the character class.
*
*Exceptions:
* Returns 0 on any error.
*
*******************************************************************************/
int __cdecl is_wctype (
wchar_t c,
wctype_t mask
)
{
return iswctype(c, mask);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -