xref: /reactos/sdk/lib/ucrt/mbstring/ismblwr.cpp (revision b09b5584)
1 /***
2 *ismblwr - Test if character is lower case (MBCS)
3 *
4 *       Copyright (c) Microsoft Corporation.  All rights reserved.
5 *
6 *Purpose:
7 *       Test if character is lower case (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 * _ismbclower - Test if character is lower case (MBCS)
20 *
21 *Purpose:
22 *       Test if the supplied character is lower case or not.
23 *       Handles MBCS characters 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 character is lower case, else FALSE
34 *
35 *Exceptions:
36 *
37 *******************************************************************************/
38 
39 extern "C" int __cdecl _ismbclower_l(unsigned int const c, _locale_t const locale)
40 {
41     _LocaleUpdate locale_update(locale);
42 
43     if (c <= 0x00FF)
44     {
45         return _mbbislower_l(c, locale_update.GetLocaleT());
46     }
47 
48     return __dcrt_multibyte_check_type(c, locale_update.GetLocaleT(), _LOWER, true);
49 }
50 
51 extern "C" int __cdecl _ismbclower(unsigned int const c)
52 {
53     return _ismbclower_l(c, nullptr);
54 }
55