Skip to content

Commit 6775574

Browse files
committedDec 22, 2017
read CaseMappingSpecials
1 parent d0de1b3 commit 6775574

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed
 
-4 Bytes
Binary file not shown.

‎scripts/generate.rb

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
INDENT = " " * 4
99

1010
def generate_data
11-
# generate_encoding_list
12-
# generate_transcoder_list
13-
# generate_transoder_data
14-
# generate_coderange_data
15-
# generate_coderange_list
11+
generate_encoding_list
12+
generate_transcoder_list
13+
generate_transoder_data
14+
generate_coderange_data
15+
generate_coderange_list
1616
generate_fold_data
1717
end
1818

@@ -245,9 +245,9 @@ def generate_fold_data
245245

246246
when /CaseMappingSpecials/
247247
open("#{DST_BIN_DIR}/CaseMappingSpecials.bin", "wb") do |f|
248-
size = src[/CaseMappingSpecials\[\]\s+=\s+\{(.*?)\}\;/m, 1].split(',').size
248+
size = src[/CaseMappingSpecials\[\]\s+=\s+\{(.*?)\}\;/m, 1].scan(/0x\d+/).size
249249
f << [size].pack("N")
250-
address.step(address + (size * 4 - 1), 4).each do |adr|
250+
address.step(address + (size * 4), 4).each do |adr|
251251
f << binary[adr, 4].unpack("l").pack("N")
252252
end
253253
end

‎src/org/jcodings/Config.java

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public interface Config {
4040
final int SpecialIndexWidth = 10;
4141
final int SpecialIndexMask = ((1 << SpecialIndexWidth) - 1) << SpecialIndexShift;
4242

43+
final int SpecialsLengthOffset = 25;
44+
4345
final int CASE_UPCASE = (1<<13); /* has/needs uppercase mapping */
4446
final int CASE_DOWNCASE = (1<<14); /* has/needs lowercase mapping */
4547
final int CASE_TITLECASE = (1<<15); /* has/needs (special) titlecase mapping */

‎src/org/jcodings/unicode/UnicodeEncoding.java

+27
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.io.DataInputStream;
2323
import java.io.IOException;
24+
import java.util.ArrayList;
2425

2526
import org.jcodings.ApplyAllCaseFoldFunction;
2627
import org.jcodings.CaseFoldCodeItem;
@@ -631,4 +632,30 @@ private static IntArrayHash<CodeList> initializeUnfold3Hash() {
631632

632633
static final IntArrayHash<CodeList> Hash = initializeUnfold3Hash();
633634
}
635+
636+
private static class CaseMappingSpecials {
637+
static ArrayList<int[]> read() {
638+
try {
639+
DataInputStream dis = ArrayReader.openStream("CaseMappingSpecials");
640+
int size = dis.readInt();
641+
ArrayList<int[]> values = new ArrayList<int[]>();
642+
for (int i = 0; i < size; i++) {
643+
int packed = dis.readInt();
644+
int length = packed >>> Config.SpecialsLengthOffset;
645+
int[]codes = new int[length];
646+
codes[0] = packed & ((1 << Config.SpecialsLengthOffset) - 1);
647+
for (int j = 1; j < length; j++) {
648+
i++;
649+
codes[j] = dis.readInt();
650+
}
651+
values.add(codes);
652+
}
653+
return values;
654+
} catch (IOException ioe) {
655+
throw new RuntimeException(ioe);
656+
}
657+
}
658+
659+
private static ArrayList<int[]> Values = read();
660+
}
634661
}

0 commit comments

Comments
 (0)
Please sign in to comment.