Implemented inline version of the iswxxx functions.
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index de26ec4..f8a7f1a 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -268,7 +268,7 @@
*/
INT MSVCRT_iswalnum( WCHAR wc )
{
- return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER);
+ return isalnumW( wc );
}
/*********************************************************************
@@ -276,7 +276,7 @@
*/
INT MSVCRT_iswalpha( WCHAR wc )
{
- return get_char_typeW(wc) & (C1_ALPHA|C1_LOWER|C1_UPPER);
+ return isalphaW( wc );
}
/*********************************************************************
@@ -284,7 +284,7 @@
*/
INT MSVCRT_iswcntrl( WCHAR wc )
{
- return get_char_typeW(wc) & C1_CNTRL;
+ return iscntrlW( wc );
}
/*********************************************************************
@@ -292,7 +292,7 @@
*/
INT MSVCRT_iswdigit( WCHAR wc )
{
- return get_char_typeW(wc) & C1_DIGIT;
+ return isdigitW( wc );
}
/*********************************************************************
@@ -300,7 +300,7 @@
*/
INT MSVCRT_iswgraph( WCHAR wc )
{
- return get_char_typeW(wc) & (C1_ALPHA|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+ return isgraphW( wc );
}
/*********************************************************************
@@ -308,7 +308,7 @@
*/
INT MSVCRT_iswlower( WCHAR wc )
{
- return get_char_typeW(wc) & C1_LOWER;
+ return islowerW( wc );
}
/*********************************************************************
@@ -316,7 +316,7 @@
*/
INT MSVCRT_iswprint( WCHAR wc )
{
- return get_char_typeW(wc) & (C1_ALPHA|C1_BLANK|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+ return isprintW( wc );
}
/*********************************************************************
@@ -324,7 +324,7 @@
*/
INT MSVCRT_iswpunct( WCHAR wc )
{
- return get_char_typeW(wc) & C1_PUNCT;
+ return ispunctW( wc );
}
/*********************************************************************
@@ -332,7 +332,7 @@
*/
INT MSVCRT_iswspace( WCHAR wc )
{
- return get_char_typeW(wc) & C1_SPACE;
+ return isspaceW( wc );
}
/*********************************************************************
@@ -340,7 +340,7 @@
*/
INT MSVCRT_iswupper( WCHAR wc )
{
- return get_char_typeW(wc) & C1_UPPER;
+ return isupperW( wc );
}
/*********************************************************************
@@ -348,7 +348,7 @@
*/
INT MSVCRT_iswxdigit( WCHAR wc )
{
- return get_char_typeW(wc) & C1_XDIGIT;
+ return isxdigitW( wc );
}
/*********************************************************************
diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c
index 731d898..b388191 100644
--- a/dlls/shlwapi/url.c
+++ b/dlls/shlwapi/url.c
@@ -88,7 +88,7 @@
static BOOL URL_NeedEscapeW(WCHAR ch, DWORD dwFlags)
{
- if (iswalnum(ch))
+ if (isalnumW(ch))
return FALSE;
if(dwFlags & URL_ESCAPE_SPACES_ONLY) {
@@ -136,7 +136,7 @@
if (*str) {
while (*str && ((*str == L'-') ||
(*str == L'.') ||
- iswalnum(*str))) str++;
+ isalnumW(*str))) str++;
if (*str == L'/') return FALSE;
}
return TRUE;
@@ -233,9 +233,9 @@
while (*wk1) {
switch (state) {
case 0:
- if (!iswalnum(*wk1)) {state = 3; break;}
+ if (!isalnumW(*wk1)) {state = 3; break;}
*wk2++ = *wk1++;
- if (!iswalnum(*wk1)) {state = 3; break;}
+ if (!isalnumW(*wk1)) {state = 3; break;}
*wk2++ = *wk1++;
state = 1;
break;
@@ -256,8 +256,8 @@
wk2 += strlenW(wk2);
break;
case 4:
- if (!iswalnum(*wk1) && (*wk1 != L'-')) {state = 3; break;}
- while(iswalnum(*wk1) || (*wk1 == L'-')) *wk2++ = *wk1++;
+ if (!isalnumW(*wk1) && (*wk1 != L'-')) {state = 3; break;}
+ while(isalnumW(*wk1) || (*wk1 == L'-')) *wk2++ = *wk1++;
state = 5;
break;
case 5:
@@ -946,7 +946,7 @@
(*src == L'#' || *src == L'?')) {
stop_unescapping = TRUE;
next = *src;
- } else if(*src == L'%' && iswxdigit(*(src + 1)) && iswxdigit(*(src + 2))
+ } else if(*src == L'%' && isxdigitW(*(src + 1)) && isxdigitW(*(src + 2))
&& stop_unescapping == FALSE) {
INT ih;
WCHAR buf[3];
diff --git a/include/wine/unicode.h b/include/wine/unicode.h
index c14652b..678447f 100644
--- a/include/wine/unicode.h
+++ b/include/wine/unicode.h
@@ -8,6 +8,7 @@
#define __WINE_UNICODE_H
#include "windef.h"
+#include "winnls.h"
/* code page info common to SBCS and DBCS */
struct cp_info
@@ -81,6 +82,61 @@
return wctype_table[wctype_table[ch >> 8] + (ch & 0xff)];
}
+inline static int iscntrlW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_CNTRL;
+}
+
+inline static int ispunctW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_PUNCT;
+}
+
+inline static int isspaceW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_SPACE;
+}
+
+inline static int isdigitW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_DIGIT;
+}
+
+inline static int isxdigitW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_XDIGIT;
+}
+
+inline static int islowerW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_LOWER;
+}
+
+inline static int isupperW( WCHAR wc )
+{
+ return get_char_typeW(wc) & C1_UPPER;
+}
+
+inline static int isalnumW( WCHAR wc )
+{
+ return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+inline static int isalphaW( WCHAR wc )
+{
+ return get_char_typeW(wc) & (C1_ALPHA|C1_LOWER|C1_UPPER);
+}
+
+inline static int isgraphW( WCHAR wc )
+{
+ return get_char_typeW(wc) & (C1_ALPHA|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+inline static int isprintW( WCHAR wc )
+{
+ return get_char_typeW(wc) & (C1_ALPHA|C1_BLANK|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
/* some useful string manipulation routines */
static inline unsigned int strlenW( const WCHAR *str )