Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
575a9796
Commit
575a9796
authored
Feb 09, 2016
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make_unicode: Support sparse arrays for character tables.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
cb65a3fb
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
24 deletions
+28
-24
make_unicode
tools/make_unicode
+28
-24
No files found.
tools/make_unicode
View file @
575a9796
...
...
@@ -351,8 +351,8 @@ my @tolower_table = ();
my
@toupper_table
=
();
my
@digitmap_table
=
();
my
@compatmap_table
=
();
my
@category_table
=
(
0
)
x
65536
;
my
@joining_table
=
(
0
)
x
65536
;
my
@category_table
=
(
)
;
my
@joining_table
=
(
)
;
my
@direction_table
=
();
my
@decomp_table
=
();
my
@compose_table
=
();
...
...
@@ -1176,7 +1176,7 @@ sub get_lb_ranges()
sub
dump_indic
($)
{
my
$filename
=
shift
;
my
@indic_table
=
(
$indic_types
{
'Other'
})
x
65536
;
my
@indic_table
;
my
$INPUT
=
open_data_file
(
$UNIDATA
,
"IndicSyllabicCategory.txt"
);
while
(
<
$INPUT
>
)
...
...
@@ -1245,7 +1245,7 @@ sub dump_indic($)
print
OUTPUT
"/* and from $UNIDATA/IndicPositionalCategory.txt */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"indic_syllabic_table"
,
@indic_table
);
dump_two_level_mapping
(
"indic_syllabic_table"
,
$indic_types
{
'Other'
},
@indic_table
);
close
OUTPUT
;
save_file
(
$filename
);
...
...
@@ -1256,7 +1256,7 @@ sub dump_indic($)
sub
dump_linebreak
($)
{
my
$filename
=
shift
;
my
@break_table
=
(
$break_types
{
'XX'
})
x
65536
;
my
@break_table
;
my
$next_group
=
0
;
my
$INPUT
=
open_data_file
(
$UNIDATA
,
"LineBreak.txt"
);
...
...
@@ -1292,7 +1292,7 @@ sub dump_linebreak($)
print
OUTPUT
"/* generated from $UNIDATA/LineBreak.txt */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"wine_linebreak_table"
,
@break_table
);
dump_two_level_mapping
(
"wine_linebreak_table"
,
$break_types
{
'XX'
},
@break_table
);
close
OUTPUT
;
save_file
(
$filename
);
...
...
@@ -1304,7 +1304,7 @@ sub dump_scripts($)
{
my
$filename
=
shift
;
my
$header
=
$filename
;
my
@scripts_table
=
(
0
)
x
65536
;
# 0 means unknown script
my
@scripts_table
;
my
$script_index
;
my
%
scripts
;
my
$i
;
...
...
@@ -1406,7 +1406,7 @@ sub dump_scripts($)
print
OUTPUT
"/* generated from $UNIDATA/Scripts.txt */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"wine_scripts_table"
,
@scripts_table
);
dump_two_level_mapping
(
"wine_scripts_table"
,
0
,
@scripts_table
);
close
OUTPUT
;
save_file
(
$filename
);
}
...
...
@@ -1449,7 +1449,7 @@ sub dump_mirroring($)
sub
dump_bracket
($)
{
my
$filename
=
shift
;
my
@bracket_table
=
(
0
)
x
65536
;
my
@bracket_table
;
my
$INPUT
=
open_data_file
(
$UNIDATA
,
"BidiBrackets.txt"
);
while
(
<
$INPUT
>
)
...
...
@@ -1476,7 +1476,7 @@ sub dump_bracket($)
print
OUTPUT
"/* generated from $UNIDATA/BidiBrackets.txt */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"bidi_bracket_table"
,
@bracket_table
);
dump_two_level_mapping
(
"bidi_bracket_table"
,
0
,
@bracket_table
);
close
OUTPUT
;
save_file
(
$filename
);
...
...
@@ -1516,7 +1516,7 @@ sub dump_shaping($)
print
OUTPUT
"/* generated from $UNIDATA/ArabicShaping.txt */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"wine_shaping_table"
,
@joining_table
);
dump_two_level_mapping
(
"wine_shaping_table"
,
0
,
@joining_table
);
print
OUTPUT
"\nconst unsigned short wine_shaping_forms[256][4] =\n{\n"
;
for
(
my
$i
=
0x600
;
$i
<=
0x6ff
;
$i
++
)
...
...
@@ -1538,7 +1538,7 @@ sub dump_shaping($)
sub
dump_vertical
($)
{
my
$filename
=
shift
;
my
@vertical_table
=
(
$vertical_types
{
'R'
})
x
65536
;
my
@vertical_table
;
my
$INPUT
=
open_data_file
(
$VERTICALDATA
,
"VerticalOrientation-11.txt"
);
while
(
<
$INPUT
>
)
...
...
@@ -1576,7 +1576,7 @@ sub dump_vertical($)
print
OUTPUT
"/* generated from $VERTICALDATA/VerticalOrientation-11.txt */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"vertical_orientation_table"
,
@vertical_table
);
dump_two_level_mapping
(
"vertical_orientation_table"
,
$vertical_types
{
'R'
},
@vertical_table
);
close
OUTPUT
;
save_file
(
$filename
);
...
...
@@ -1672,9 +1672,10 @@ sub DUMP_CASE_TABLE($@)
################################################################
# compress a mapping table by removing identical rows
sub
compress_array
($@)
sub
compress_array
($
$
@)
{
my
$rows
=
shift
;
my
$def
=
shift
;
my
@table
=
@_
;
my
$len
=
@table
/
$rows
;
my
@array
=
(
0
)
x
$rows
;
...
...
@@ -1683,7 +1684,8 @@ sub compress_array($@)
# try to merge table rows
for
(
my
$row
=
0
;
$row
<
$rows
;
$row
++
)
{
my
$rowtxt
=
pack
"S*"
,
@table
[(
$row
*
$len
)
..
(
$row
*
$len
+
$len
-
1
)];
my
@table_row
=
map
{
defined
(
$_
)
?
$_
:
$def
;
}
@table
[(
$row
*
$len
)
..
(
$row
*
$len
+
$len
-
1
)];
my
$rowtxt
=
pack
"S*"
,
@table_row
;
if
(
defined
(
$sequences
{
$rowtxt
}))
{
# reuse an existing row
...
...
@@ -1693,7 +1695,7 @@ sub compress_array($@)
{
# create a new row
$sequences
{
$rowtxt
}
=
$array
[
$row
]
=
$#array
+
1
;
push
@array
,
@table
[
$row
*
$len
..
$row
*
$len
+
$len
-
1
]
;
push
@array
,
@table
_row
;
}
}
return
@array
;
...
...
@@ -1701,10 +1703,11 @@ sub compress_array($@)
################################################################
# dump a simple char -> 16-bit value mapping table
sub
dump_simple_mapping
($@)
sub
dump_simple_mapping
($
$
@)
{
my
$name
=
shift
;
my
@array
=
compress_array
(
256
,
@_
[
0
..
65535
]
);
my
$def
=
shift
;
my
@array
=
compress_array
(
256
,
$def
,
@_
[
0
..
65535
]
);
printf
OUTPUT
"const unsigned short %s[%d] =\n{\n"
,
$name
,
$#array
+
1
;
printf
OUTPUT
" /* offsets */\n%s,\n"
,
DUMP_ARRAY
(
"0x%04x"
,
0
,
@array
[
0
..
255
]
);
...
...
@@ -1713,11 +1716,12 @@ sub dump_simple_mapping($@)
################################################################
# dump a char -> 16-bit value mapping table using two-level tables
sub
dump_two_level_mapping
($@)
sub
dump_two_level_mapping
($
$
@)
{
my
$name
=
shift
;
my
@row_array
=
compress_array
(
4096
,
@_
[
0
..
65535
]
);
my
@array
=
compress_array
(
256
,
@row_array
[
0
..
4095
]
);
my
$def
=
shift
;
my
@row_array
=
compress_array
(
4096
,
$def
,
@_
[
0
..
65535
]
);
my
@array
=
compress_array
(
256
,
0
,
@row_array
[
0
..
4095
]
);
for
(
my
$i
=
256
;
$i
<
@array
;
$i
++
)
{
$array
[
$i
]
+=
@array
-
4096
;
}
...
...
@@ -1880,7 +1884,7 @@ sub dump_nameprep($)
{
my
$filename
=
shift
;
my
@mapping_table
=
();
my
@flags_table
=
(
0
)
x
65536
;
my
@flags_table
;
my
$INPUT
=
open_data_file
(
$RFCS
,
$STRINGPREP
);
while
(
<
$INPUT
>
)
...
...
@@ -1911,7 +1915,7 @@ sub dump_nameprep($)
print
OUTPUT
"/* generated from $RFCS/$STRINGPREP */\n"
;
print
OUTPUT
"/* DO NOT EDIT!! */\n\n"
;
dump_two_level_mapping
(
"nameprep_char_type"
,
@flags_table
);
dump_two_level_mapping
(
"nameprep_char_type"
,
0
,
@flags_table
);
######### mapping table
# first determine all the 16-char subsets that contain something
...
...
@@ -2006,7 +2010,7 @@ sub DUMP_CTYPE_TABLES($)
$category_table
[
$i
]
|=
$direction_table
[
$i
]
<<
12
if
defined
$direction_table
[
$i
];
}
dump_simple_mapping
(
"wine_wctype_table"
,
@category_table
);
dump_simple_mapping
(
"wine_wctype_table"
,
0
,
@category_table
);
close
OUTPUT
;
save_file
(
$filename
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment