[PATCH 1/4] kernelbase: Reduce duplication for character type functions.

Nikolay Sivov nsivov at codeweavers.com
Thu May 16 10:04:01 CDT 2019


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/kernelbase/string.c | 34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)

diff --git a/dlls/kernelbase/string.c b/dlls/kernelbase/string.c
index 4991ba3fd1..8b3d94a9e6 100644
--- a/dlls/kernelbase/string.c
+++ b/dlls/kernelbase/string.c
@@ -58,52 +58,46 @@ DWORD WINAPI StrCmpNICW(const WCHAR *str, const WCHAR *cmp, DWORD len)
     return StrCmpNIW(str, cmp, len);
 }
 
-BOOL WINAPI IsCharBlankW(WCHAR wc)
+static WORD get_char_type(char c)
 {
-    WORD type;
+    WORD type = 0;
+    GetStringTypeA(GetSystemDefaultLCID(), CT_CTYPE1, &c, 1, &type);
+    return type;
+}
 
-    return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_BLANK);
+BOOL WINAPI IsCharBlankW(WCHAR wc)
+{
+    return !!(get_char_typeW(wc) & C1_BLANK);
 }
 
 BOOL WINAPI IsCharCntrlW(WCHAR wc)
 {
-    WORD type;
-
-    return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_CNTRL);
+    return !!iscntrlW(wc);
 }
 
 BOOL WINAPI IsCharDigitW(WCHAR wc)
 {
-    WORD type;
-
-    return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_DIGIT);
+    return !!isdigitW(wc);
 }
 
 BOOL WINAPI IsCharPunctW(WCHAR wc)
 {
-    WORD type;
-
-    return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_PUNCT);
+    return !!ispunctW(wc);
 }
 
 BOOL WINAPI IsCharSpaceA(CHAR c)
 {
-    WORD type;
-    return GetStringTypeA(GetSystemDefaultLCID(), CT_CTYPE1, &c, 1, &type) && (type & C1_SPACE);
+    return !!(get_char_type(c) & C1_SPACE);
 }
 
 BOOL WINAPI IsCharSpaceW(WCHAR wc)
 {
-    WORD type;
-
-    return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_SPACE);
+    return !!isspaceW(wc);
 }
 
 BOOL WINAPI IsCharXDigitW(WCHAR wc)
 {
-    WORD type;
-
-    return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_XDIGIT);
+    return !!isxdigitW(wc);
 }
 
 WCHAR * WINAPI StrChrW(const WCHAR *str, WCHAR ch)
-- 
2.20.1




More information about the wine-devel mailing list