xref: /reactos/sdk/lib/ucrt/mbstring/ismbalph.cpp (revision 04e0dc4a)
1 /***
2 *ismbalph.c - Test if character is alphabetic (MBCS)
3 *
4 *       Copyright (c) Microsoft Corporation.  All rights reserved.
5 *
6 *Purpose:
7 *       Test if character is alphabetic (MBCS)
8 *
9 *******************************************************************************/
10 #ifndef _MBCS
11     #error This file should only be compiled with _MBCS defined
12 #endif
13 
14 #include <corecrt_internal_mbstring.h>
15 #include <locale.h>
16 
17 
18 /***
19 * _ismbcalpha - Test if character is alphabetic (MBCS)
20 *
21 *Purpose:
22 *       Test if character is alphabetic.
23 *       Handles MBCS chars correctly.
24 *
25 *       Note:  Use test against 0x00FF instead of _ISLEADBYTE
26 *       to ensure that we don't call SBCS routine with a two-byte
27 *       value.
28 *
29 *Entry:
30 *       unsigned int c = character to test
31 *
32 *Exit:
33 *       Returns TRUE if c is alphabetic, else FALSE
34 *
35 *Exceptions:
36 *
37 *******************************************************************************/
38 
_ismbcalpha_l(unsigned int const c,_locale_t const locale)39 extern "C" int __cdecl _ismbcalpha_l(unsigned int const c, _locale_t const locale)
40 {
41     _LocaleUpdate locale_update(locale);
42 
43     if (c <= 0x00FF)
44     {
45         return _ismbbalpha_l(c, locale_update.GetLocaleT());
46     }
47 
48     return __dcrt_multibyte_check_type(c, locale_update.GetLocaleT(), _ALPHA, true);
49 }
50 
_ismbcalpha(unsigned int const c)51 extern "C" int __cdecl _ismbcalpha(unsigned int const c)
52 {
53     return _ismbcalpha_l(c, nullptr);
54 }
55