summaryrefslogtreecommitdiff
path: root/src/Normalize.zig
diff options
context:
space:
mode:
authorGravatar Sam Atman2025-04-30 16:48:07 -0400
committerGravatar Sam Atman2025-04-30 16:48:07 -0400
commitd2d42bf3ef5490f6fdec73508c2493a666ecee41 (patch)
tree377794be59ece4118ca2449b705b8e7cc646abc0 /src/Normalize.zig
parentUpdate README.md to new API (diff)
downloadzg-d2d42bf3ef5490f6fdec73508c2493a666ecee41.tar.gz
zg-d2d42bf3ef5490f6fdec73508c2493a666ecee41.tar.xz
zg-d2d42bf3ef5490f6fdec73508c2493a666ecee41.zip
Setup variants for all allocating modules
This harmonizes the allocating modules in a couple of ways. All can now be constructed by pointer, and all treat various miscellaneous read failures as `unreachable`, which indeed they should be. The README has been updated to inform users of this option.
Diffstat (limited to 'src/Normalize.zig')
-rw-r--r--src/Normalize.zig39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/Normalize.zig b/src/Normalize.zig
index d8c867d..1500b4c 100644
--- a/src/Normalize.zig
+++ b/src/Normalize.zig
@@ -10,22 +10,47 @@ normp_data: NormPropsData = undefined,
10 10
11const Normalize = @This(); 11const Normalize = @This();
12 12
13pub fn init(allocator: Allocator) !Normalize { 13pub fn init(allocator: Allocator) Allocator.Error!Normalize {
14 var norm: Normalize = undefined; 14 var norm: Normalize = undefined;
15 try norm.setup(allocator); 15 try norm.setup(allocator);
16 return norm; 16 return norm;
17} 17}
18 18
19pub fn setup(self: *Normalize, allocator: Allocator) !void { 19pub fn setup(self: *Normalize, allocator: Allocator) Allocator.Error!void {
20 self.canon_data = try CanonData.init(allocator); 20 self.canon_data = CanonData.init(allocator) catch |err| {
21 switch (err) {
22 error.OutOfMemory => |e| return e,
23 else => unreachable,
24 }
25 };
21 errdefer self.canon_data.deinit(allocator); 26 errdefer self.canon_data.deinit(allocator);
22 self.ccc_data = try CccData.init(allocator); 27 self.ccc_data = CccData.init(allocator) catch |err| {
28 switch (err) {
29 error.OutOfMemory => |e| return e,
30 else => unreachable,
31 }
32 };
23 errdefer self.ccc_data.deinit(allocator); 33 errdefer self.ccc_data.deinit(allocator);
24 self.compat_data = try CompatData.init(allocator); 34 self.compat_data = CompatData.init(allocator) catch |err| {
35 switch (err) {
36 error.OutOfMemory => |e| return e,
37 else => unreachable,
38 }
39 };
25 errdefer self.compat_data.deinit(allocator); 40 errdefer self.compat_data.deinit(allocator);
26 self.hangul_data = try HangulData.init(allocator); 41 self.hangul_data = HangulData.init(allocator) catch |err| {
42 switch (err) {
43 error.OutOfMemory => |e| return e,
44 else => unreachable,
45 }
46 };
27 errdefer self.hangul_data.deinit(allocator); 47 errdefer self.hangul_data.deinit(allocator);
28 self.normp_data = try NormPropsData.init(allocator); 48 self.normp_data = NormPropsData.init(allocator) catch |err| {
49 switch (err) {
50 error.OutOfMemory => |e| return e,
51 else => unreachable,
52 }
53 };
29} 54}
30 55
31pub fn deinit(norm: *const Normalize, allocator: Allocator) void { 56pub fn deinit(norm: *const Normalize, allocator: Allocator) void {