summaryrefslogtreecommitdiff
path: root/codegen
diff options
context:
space:
mode:
authorGravatar Jose Colon Rodriguez2024-06-26 18:02:04 -0400
committerGravatar Jose Colon Rodriguez2024-06-26 18:02:04 -0400
commit19820cd7a927b78cbfefdace4bc676467863e9b9 (patch)
treee4adb03b9f9c8b6ad0d4f0e53c5e191a607890d9 /codegen
parentRemoved all inlines (diff)
downloadzg-19820cd7a927b78cbfefdace4bc676467863e9b9.tar.gz
zg-19820cd7a927b78cbfefdace4bc676467863e9b9.tar.xz
zg-19820cd7a927b78cbfefdace4bc676467863e9b9.zip
Implements new case fold data encoding by @sqeek502 #8
Diffstat (limited to 'codegen')
-rw-r--r--codegen/fold.zig11
1 files changed, 6 insertions, 5 deletions
diff --git a/codegen/fold.zig b/codegen/fold.zig
index 24ecae6..53ed3c4 100644
--- a/codegen/fold.zig
+++ b/codegen/fold.zig
@@ -202,6 +202,7 @@ pub fn main() !void {
202 @memcpy(stage2[i * 256 ..][0..256], &key); 202 @memcpy(stage2[i * 256 ..][0..256], &key);
203 } 203 }
204 204
205 // Write out compressed binary data file.
205 var args_iter = try std.process.argsWithAllocator(allocator); 206 var args_iter = try std.process.argsWithAllocator(allocator);
206 defer args_iter.deinit(); 207 defer args_iter.deinit();
207 _ = args_iter.skip(); 208 _ = args_iter.skip();
@@ -214,19 +215,19 @@ pub fn main() !void {
214 const writer = out_comp.writer(); 215 const writer = out_comp.writer();
215 216
216 const endian = builtin.cpu.arch.endian(); 217 const endian = builtin.cpu.arch.endian();
217 218 // Table metadata.
218 try writer.writeInt(u24, @intCast(codepoint_cutoff), endian); 219 try writer.writeInt(u24, @intCast(codepoint_cutoff), endian);
219 try writer.writeInt(u24, @intCast(multiple_codepoint_start), endian); 220 try writer.writeInt(u24, @intCast(multiple_codepoint_start), endian);
220 221 // Stage 1
221 try writer.writeInt(u16, @intCast(meaningful_stage1.len), endian); 222 try writer.writeInt(u16, @intCast(meaningful_stage1.len), endian);
222 try writer.writeAll(meaningful_stage1); 223 try writer.writeAll(meaningful_stage1);
223 224 // Stage 2
224 try writer.writeInt(u16, @intCast(stage2.len), endian); 225 try writer.writeInt(u16, @intCast(stage2.len), endian);
225 try writer.writeAll(stage2); 226 try writer.writeAll(stage2);
226 227 // Stage 3
227 try writer.writeInt(u16, @intCast(stage3.len), endian); 228 try writer.writeInt(u16, @intCast(stage3.len), endian);
228 for (stage3) |offset| try writer.writeInt(i24, offset, endian); 229 for (stage3) |offset| try writer.writeInt(i24, offset, endian);
229 230 // Changes when case folded
230 try writer.writeInt(u16, @intCast(props_map.count()), endian); 231 try writer.writeInt(u16, @intCast(props_map.count()), endian);
231 var iter = props_map.keyIterator(); 232 var iter = props_map.keyIterator();
232 while (iter.next()) |key_ptr| try writer.writeInt(u24, key_ptr.*, endian); 233 while (iter.next()) |key_ptr| try writer.writeInt(u24, key_ptr.*, endian);