Alexandre Julliard : kernelbase: Use the digit table from locale.nls in FoldStringW().

Alexandre Julliard julliard at winehq.org
Mon Apr 25 16:30:31 CDT 2022


Module: wine
Branch: master
Commit: f3b77b802709ac590f88a85dc1b85d45d00fdb59
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f3b77b802709ac590f88a85dc1b85d45d00fdb59

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Apr 25 11:53:53 2022 +0200

kernelbase: Use the digit table from locale.nls in FoldStringW().

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernelbase/Makefile.in |  1 -
 dlls/kernelbase/digitmap.c  | 91 ---------------------------------------------
 dlls/kernelbase/locale.c    | 13 +------
 tools/make_unicode          | 19 ----------
 4 files changed, 1 insertion(+), 123 deletions(-)

diff --git a/dlls/kernelbase/Makefile.in b/dlls/kernelbase/Makefile.in
index a5845abc1a8..2b270153060 100644
--- a/dlls/kernelbase/Makefile.in
+++ b/dlls/kernelbase/Makefile.in
@@ -9,7 +9,6 @@ C_SRCS = \
 	collation.c \
 	console.c \
 	debug.c \
-	digitmap.c \
 	file.c \
 	loader.c \
 	locale.c \
diff --git a/dlls/kernelbase/digitmap.c b/dlls/kernelbase/digitmap.c
deleted file mode 100644
index 26a464e30f5..00000000000
--- a/dlls/kernelbase/digitmap.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Unicode digit folding mappings */
-/* generated from https://www.unicode.org/Public/14.0.0/ucd/UCD.zip:UnicodeData.txt */
-/* DO NOT EDIT!! */
-
-#include "windef.h"
-
-const unsigned short DECLSPEC_HIDDEN wine_digitmap[619] =
-{
-    /* level 1 offsets */
-    0x0100, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0116, 0x0110,
-    0x010c, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0135, 0x0140,
-    0x014c, 0x010c, 0x010c, 0x0156, 0x010c, 0x010c, 0x010c, 0x010e,
-    0x0165, 0x0171, 0x017f, 0x018a, 0x0196, 0x010c, 0x010c, 0x010c,
-    0x019f, 0x010c, 0x010c, 0x010c, 0x01a9, 0x010c, 0x010c, 0x01b9,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0140, 0x010c,
-    0x010f, 0x01c9, 0x013d, 0x010d, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
-    0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0165,
-    /* level 2 offsets */
-    0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01f7, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e3, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e3, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x0201, 0x0211, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e3, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x0221, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9,
-    0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01e9, 0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x0231, 0x01e9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x020a,
-    0x0206, 0x0202, 0x023a, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x0240,
-    0x024b, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x0204, 0x025b, 0x0210, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01e9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9,
-    0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01d9,
-    0x01e9,
-    /* values */
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
-    0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0032, 0x0033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0031,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
-    0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
-    0x0038, 0x0039, 0x0031, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0030, 0x0000, 0x0000, 0x0000, 0x0034, 0x0035, 0x0036, 0x0037,
-    0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0031,
-    0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
-    0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036,
-    0x0037, 0x0038, 0x0039, 0x0000, 0x0031, 0x0032, 0x0033, 0x0034,
-    0x0035, 0x0036
-};
diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c
index 3830a3fae2c..d046cefd749 100644
--- a/dlls/kernelbase/locale.c
+++ b/dlls/kernelbase/locale.c
@@ -1856,12 +1856,6 @@ void init_locale( HMODULE module )
 }
 
 
-static inline USHORT get_table_entry( const USHORT *table, WCHAR ch )
-{
-    return table[table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + (ch & 0xf)];
-}
-
-
 static inline WCHAR casemap( const USHORT *table, WCHAR ch )
 {
     return ch + table[table[table[ch >> 8] + ((ch >> 4) & 0x0f)] + (ch & 0x0f)];
@@ -2072,17 +2066,12 @@ static NTSTATUS expand_ligatures( const WCHAR *src, int srclen, WCHAR *dst, int
 
 static NTSTATUS fold_digits( const WCHAR *src, int srclen, WCHAR *dst, int *dstlen )
 {
-    extern const WCHAR wine_digitmap[] DECLSPEC_HIDDEN;
     int i, len = *dstlen;
 
     *dstlen = srclen;
     if (!len) return STATUS_SUCCESS;
     if (srclen > len) return STATUS_BUFFER_TOO_SMALL;
-    for (i = 0; i < srclen; i++)
-    {
-        WCHAR digit = get_table_entry( wine_digitmap, src[i] );
-        dst[i] = digit ? digit : src[i];
-    }
+    for (i = 0; i < srclen; i++) dst[i] = casemap( charmaps[CHARMAP_FOLDDIGITS], src[i] );
     return STATUS_SUCCESS;
 }
 
diff --git a/tools/make_unicode b/tools/make_unicode
index f697eeaaeb4..29dea8cd52e 100755
--- a/tools/make_unicode
+++ b/tools/make_unicode
@@ -3253,24 +3253,6 @@ sub dump_vertical($$)
     save_file($filename);
 }
 
-################################################################
-# dump the digit folding tables
-sub dump_digit_folding($)
-{
-    my ($filename) = shift;
-    open OUTPUT,">$filename.new" or die "Cannot create $filename";
-    print "Building $filename\n";
-    print OUTPUT "/* Unicode digit folding mappings */\n";
-    print OUTPUT "/* generated from $UNIDATA:UnicodeData.txt */\n";
-    print OUTPUT "/* DO NOT EDIT!! */\n\n";
-    print OUTPUT "#include \"windef.h\"\n\n";
-
-    dump_two_level_mapping( "wine_digitmap", 0, 16, @digitmap_table );
-    close OUTPUT;
-    save_file($filename);
-}
-
-
 ################################################################
 # compress a mapping table by removing identical rows
 sub compress_array($$@)
@@ -5393,7 +5375,6 @@ load_data();
 dump_sortkeys( "dlls/kernelbase/collation.c" );
 dump_bidi_dir_table( "dlls/gdi32/uniscribe/direction.c" );
 dump_bidi_dir_table( "dlls/dwrite/direction.c" );
-dump_digit_folding( "dlls/kernelbase/digitmap.c" );
 dump_mirroring( "dlls/gdi32/uniscribe/mirror.c" );
 dump_mirroring( "dlls/dwrite/mirror.c" );
 dump_bracket( "dlls/gdi32/uniscribe/bracket.c" );




More information about the wine-cvs mailing list