From 2f44fdebca57d9eabb682e05d04189d0600b8664 Mon Sep 17 00:00:00 2001 From: lch361 Date: Tue, 25 Mar 2025 00:29:52 +0300 Subject: All the std.mem.Allocators that were stored just for init and deinit methods were removed, mem.Allocators were added to deinit as arguments. --- src/CanonData.zig | 22 ++++++++++------------ src/CaseData.zig | 10 ++++------ src/CombiningData.zig | 9 ++++----- src/CompatData.zig | 10 ++++------ src/FoldData.zig | 13 ++++++------- src/GenCatData.zig | 11 +++++------ src/GraphemeData.zig | 11 +++++------ src/HangulData.zig | 9 ++++----- src/NormData.zig | 20 ++++++++++---------- src/NormPropsData.zig | 9 ++++----- src/Normalize.zig | 10 +++++----- src/PropsData.zig | 17 ++++++++--------- src/ScriptsData.zig | 13 ++++++------- src/WidthData.zig | 12 +++++------- src/unicode_tests.zig | 12 ++++++------ 15 files changed, 86 insertions(+), 102 deletions(-) (limited to 'src') diff --git a/src/CanonData.zig b/src/CanonData.zig index 05b9017..794748c 100644 --- a/src/CanonData.zig +++ b/src/CanonData.zig @@ -3,8 +3,7 @@ const builtin = @import("builtin"); const compress = std.compress; const mem = std.mem; -allocator: mem.Allocator, -nfc: std.AutoHashMap([2]u21, u21), +nfc: std.AutoHashMapUnmanaged([2]u21, u21), nfd: [][]u21 = undefined, const Self = @This(); @@ -18,16 +17,15 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); var self = Self{ - .allocator = allocator, - .nfc = std.AutoHashMap([2]u21, u21).init(allocator), + .nfc = .{}, .nfd = try allocator.alloc([]u21, 0x110000), }; var slices: usize = 0; errdefer { - self.nfc.deinit(); - for (self.nfd[0..slices]) |slice| self.allocator.free(slice); - self.allocator.free(self.nfd); + self.nfc.deinit(allocator); + for (self.nfd[0..slices]) |slice| allocator.free(slice); + allocator.free(self.nfd); } @memset(self.nfd, &.{}); @@ -42,17 +40,17 @@ pub fn init(allocator: mem.Allocator) !Self { self.nfd[cp][i] = @intCast(try reader.readInt(u24, endian)); } if (len == 3) { - try self.nfc.put(self.nfd[cp][0..2].*, @intCast(cp)); + try self.nfc.put(allocator, self.nfd[cp][0..2].*, @intCast(cp)); } } return self; } -pub fn deinit(self: *Self) void { - self.nfc.deinit(); - for (self.nfd) |slice| self.allocator.free(slice); - self.allocator.free(self.nfd); +pub fn deinit(self: *Self, allocator: mem.Allocator) void { + self.nfc.deinit(allocator); + for (self.nfd) |slice| allocator.free(slice); + allocator.free(self.nfd); } /// Returns canonical decomposition for `cp`. diff --git a/src/CaseData.zig b/src/CaseData.zig index 3a35fdd..f05ac26 100644 --- a/src/CaseData.zig +++ b/src/CaseData.zig @@ -7,7 +7,6 @@ const unicode = std.unicode; const CodePointIterator = @import("code_point").Iterator; -allocator: mem.Allocator, case_map: [][2]u21, prop_s1: []u16 = undefined, prop_s2: []u8 = undefined, @@ -19,7 +18,6 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); var self = Self{ - .allocator = allocator, .case_map = try allocator.alloc([2]u21, 0x110000), }; errdefer allocator.free(self.case_map); @@ -74,10 +72,10 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.case_map); - self.allocator.free(self.prop_s1); - self.allocator.free(self.prop_s2); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.case_map); + allocator.free(self.prop_s1); + allocator.free(self.prop_s2); } // Returns true if `cp` is either upper, lower, or title case. diff --git a/src/CombiningData.zig b/src/CombiningData.zig index 44140f8..b5e227a 100644 --- a/src/CombiningData.zig +++ b/src/CombiningData.zig @@ -3,7 +3,6 @@ const builtin = @import("builtin"); const compress = std.compress; const mem = std.mem; -allocator: mem.Allocator, s1: []u16 = undefined, s2: []u8 = undefined, @@ -18,7 +17,7 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const stage_1_len: u16 = try reader.readInt(u16, endian); self.s1 = try allocator.alloc(u16, stage_1_len); @@ -33,9 +32,9 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); } /// Returns the canonical combining class for a code point. diff --git a/src/CompatData.zig b/src/CompatData.zig index cf184a1..ac08048 100644 --- a/src/CompatData.zig +++ b/src/CompatData.zig @@ -3,7 +3,6 @@ const builtin = @import("builtin"); const compress = std.compress; const mem = std.mem; -allocator: mem.Allocator, nfkd: [][]u21 = undefined, const Self = @This(); @@ -17,10 +16,9 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); var self = Self{ - .allocator = allocator, .nfkd = try allocator.alloc([]u21, 0x110000), }; - errdefer self.deinit(); + errdefer self.deinit(allocator); @memset(self.nfkd, &.{}); @@ -37,11 +35,11 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { for (self.nfkd) |slice| { - if (slice.len != 0) self.allocator.free(slice); + if (slice.len != 0) allocator.free(slice); } - self.allocator.free(self.nfkd); + allocator.free(self.nfkd); } /// Returns compatibility decomposition for `cp`. diff --git a/src/FoldData.zig b/src/FoldData.zig index a3d47af..e44e714 100644 --- a/src/FoldData.zig +++ b/src/FoldData.zig @@ -3,7 +3,6 @@ const builtin = @import("builtin"); const compress = std.compress; const mem = std.mem; -allocator: mem.Allocator, cutoff: u21 = undefined, cwcf_exceptions_min: u21 = undefined, cwcf_exceptions_max: u21 = undefined, @@ -24,7 +23,7 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; self.cutoff = @intCast(try reader.readInt(u24, endian)); self.multiple_start = @intCast(try reader.readInt(u24, endian)); @@ -53,11 +52,11 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.stage1); - self.allocator.free(self.stage2); - self.allocator.free(self.stage3); - self.allocator.free(self.cwcf_exceptions); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.stage1); + allocator.free(self.stage2); + allocator.free(self.stage3); + allocator.free(self.cwcf_exceptions); } /// Returns the case fold for `cp`. diff --git a/src/GenCatData.zig b/src/GenCatData.zig index 5ce9fb6..a69f7a2 100644 --- a/src/GenCatData.zig +++ b/src/GenCatData.zig @@ -37,7 +37,6 @@ pub const Gc = enum { Zs, // Separator, Space }; -allocator: mem.Allocator, s1: []u16 = undefined, s2: []u5 = undefined, s3: []u5 = undefined, @@ -53,7 +52,7 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const s1_len: u16 = try reader.readInt(u16, endian); self.s1 = try allocator.alloc(u16, s1_len); @@ -73,10 +72,10 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); - self.allocator.free(self.s3); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); + allocator.free(self.s3); } /// Lookup the General Category for `cp`. diff --git a/src/GraphemeData.zig b/src/GraphemeData.zig index de98bde..6d3174d 100644 --- a/src/GraphemeData.zig +++ b/src/GraphemeData.zig @@ -30,7 +30,6 @@ pub const Gbp = enum { ZWJ, }; -allocator: mem.Allocator, s1: []u16 = undefined, s2: []u16 = undefined, s3: []u8 = undefined, @@ -46,7 +45,7 @@ pub fn init(allocator: mem.Allocator) mem.Allocator.Error!Self { const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const s1_len: u16 = reader.readInt(u16, endian) catch unreachable; self.s1 = try allocator.alloc(u16, s1_len); @@ -66,10 +65,10 @@ pub fn init(allocator: mem.Allocator) mem.Allocator.Error!Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); - self.allocator.free(self.s3); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); + allocator.free(self.s3); } /// Lookup the grapheme break property for a code point. diff --git a/src/HangulData.zig b/src/HangulData.zig index 048841d..4bccbe6 100644 --- a/src/HangulData.zig +++ b/src/HangulData.zig @@ -13,7 +13,6 @@ pub const Syllable = enum { T, }; -allocator: mem.Allocator, s1: []u16 = undefined, s2: []u3 = undefined, @@ -27,7 +26,7 @@ pub fn init(allocator: mem.Allocator) !Self { var reader = in_decomp.reader(); const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const stage_1_len: u16 = try reader.readInt(u16, endian); self.s1 = try allocator.alloc(u16, stage_1_len); @@ -42,9 +41,9 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); } /// Returns the Hangul syllable type for `cp`. diff --git a/src/NormData.zig b/src/NormData.zig index 15cc401..a123860 100644 --- a/src/NormData.zig +++ b/src/NormData.zig @@ -18,20 +18,20 @@ const Self = @This(); pub fn init(self: *Self, allocator: std.mem.Allocator) !void { self.canon_data = try CanonData.init(allocator); - errdefer self.canon_data.deinit(); + errdefer self.canon_data.deinit(allocator); self.ccc_data = try CccData.init(allocator); - errdefer self.ccc_data.deinit(); + errdefer self.ccc_data.deinit(allocator); self.compat_data = try CompatData.init(allocator); - errdefer self.compat_data.deinit(); + errdefer self.compat_data.deinit(allocator); self.hangul_data = try HangulData.init(allocator); - errdefer self.hangul_data.deinit(); + errdefer self.hangul_data.deinit(allocator); self.normp_data = try NormPropsData.init(allocator); } -pub fn deinit(self: *Self) void { - self.canon_data.deinit(); - self.ccc_data.deinit(); - self.compat_data.deinit(); - self.hangul_data.deinit(); - self.normp_data.deinit(); +pub fn deinit(self: *Self, allocator: mem.Allocator) void { + self.canon_data.deinit(allocator); + self.ccc_data.deinit(allocator); + self.compat_data.deinit(allocator); + self.hangul_data.deinit(allocator); + self.normp_data.deinit(allocator); } diff --git a/src/NormPropsData.zig b/src/NormPropsData.zig index 5861860..e79ae91 100644 --- a/src/NormPropsData.zig +++ b/src/NormPropsData.zig @@ -4,7 +4,6 @@ const compress = std.compress; const mem = std.mem; const testing = std.testing; -allocator: mem.Allocator, s1: []u16 = undefined, s2: []u4 = undefined, @@ -18,7 +17,7 @@ pub fn init(allocator: mem.Allocator) !Self { var reader = in_decomp.reader(); const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const stage_1_len: u16 = try reader.readInt(u16, endian); self.s1 = try allocator.alloc(u16, stage_1_len); @@ -33,9 +32,9 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); } /// Returns true if `cp` is already in NFD form. diff --git a/src/Normalize.zig b/src/Normalize.zig index 1e9878b..7b87406 100644 --- a/src/Normalize.zig +++ b/src/Normalize.zig @@ -221,11 +221,11 @@ test "decompose" { /// Returned from various functions in this namespace. Remember to call `deinit` to free any allocated memory. pub const Result = struct { - allocator: ?mem.Allocator = null, + allocated: bool = false, slice: []const u8, - pub fn deinit(self: *const Result) void { - if (self.allocator) |allocator| allocator.free(self.slice); + pub fn deinit(self: *const Result, allocator: mem.Allocator) void { + if (self.allocated) allocator.free(self.slice); } }; @@ -291,7 +291,7 @@ fn nfxd(self: Self, allocator: mem.Allocator, str: []const u8, form: Form) mem.A try dstr_list.appendSlice(buf[0..len]); } - return Result{ .allocator = allocator, .slice = try dstr_list.toOwnedSlice() }; + return Result{ .allocated = true, .slice = try dstr_list.toOwnedSlice() }; } test "nfd ASCII / no-alloc" { @@ -528,7 +528,7 @@ fn nfxc(self: Self, allocator: mem.Allocator, str: []const u8, form: Form) mem.A try cstr_list.appendSlice(buf[0..len]); } - return Result{ .allocator = allocator, .slice = try cstr_list.toOwnedSlice() }; + return Result{ .allocated = true, .slice = try cstr_list.toOwnedSlice() }; } } } diff --git a/src/PropsData.zig b/src/PropsData.zig index b77bf30..09c69c7 100644 --- a/src/PropsData.zig +++ b/src/PropsData.zig @@ -4,7 +4,6 @@ const compress = std.compress; const mem = std.mem; const testing = std.testing; -allocator: mem.Allocator, core_s1: []u16 = undefined, core_s2: []u8 = undefined, props_s1: []u16 = undefined, @@ -24,7 +23,7 @@ pub fn init(allocator: mem.Allocator) !Self { var core_decomp = decompressor(.raw, core_fbs.reader()); var core_reader = core_decomp.reader(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const core_stage_1_len: u16 = try core_reader.readInt(u16, endian); self.core_s1 = try allocator.alloc(u16, core_stage_1_len); @@ -71,13 +70,13 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.core_s1); - self.allocator.free(self.core_s2); - self.allocator.free(self.props_s1); - self.allocator.free(self.props_s2); - self.allocator.free(self.num_s1); - self.allocator.free(self.num_s2); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.core_s1); + allocator.free(self.core_s2); + allocator.free(self.props_s1); + allocator.free(self.props_s2); + allocator.free(self.num_s1); + allocator.free(self.num_s2); } /// True if `cp` is a mathematical symbol. diff --git a/src/ScriptsData.zig b/src/ScriptsData.zig index 415ce2d..4ad8549 100644 --- a/src/ScriptsData.zig +++ b/src/ScriptsData.zig @@ -172,7 +172,6 @@ pub const Script = enum { Zanabazar_Square, }; -allocator: mem.Allocator, s1: []u16 = undefined, s2: []u8 = undefined, s3: []u8 = undefined, @@ -188,7 +187,7 @@ pub fn init(allocator: mem.Allocator) !Self { const endian = builtin.cpu.arch.endian(); - var self = Self{ .allocator = allocator }; + var self = Self{}; const s1_len: u16 = try reader.readInt(u16, endian); self.s1 = try allocator.alloc(u16, s1_len); @@ -208,10 +207,10 @@ pub fn init(allocator: mem.Allocator) !Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); - self.allocator.free(self.s3); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); + allocator.free(self.s3); } /// Lookup the Script type for `cp`. @@ -223,6 +222,6 @@ pub fn script(self: Self, cp: u21) ?Script { test "script" { const self = try init(std.testing.allocator); - defer self.deinit(); + defer self.deinit(std.testing.allocator); try testing.expectEqual(Script.Latin, self.script('A').?); } diff --git a/src/WidthData.zig b/src/WidthData.zig index d77879e..4a49c80 100644 --- a/src/WidthData.zig +++ b/src/WidthData.zig @@ -6,7 +6,6 @@ const testing = std.testing; const GraphemeData = @import("GraphemeData"); -allocator: mem.Allocator, g_data: GraphemeData, s1: []u16 = undefined, s2: []i4 = undefined, @@ -23,10 +22,9 @@ pub fn init(allocator: mem.Allocator) mem.Allocator.Error!Self { const endian = builtin.cpu.arch.endian(); var self = Self{ - .allocator = allocator, .g_data = try GraphemeData.init(allocator), }; - errdefer self.g_data.deinit(); + errdefer self.g_data.deinit(allocator); const stage_1_len: u16 = reader.readInt(u16, endian) catch unreachable; self.s1 = try allocator.alloc(u16, stage_1_len); @@ -41,10 +39,10 @@ pub fn init(allocator: mem.Allocator) mem.Allocator.Error!Self { return self; } -pub fn deinit(self: *const Self) void { - self.allocator.free(self.s1); - self.allocator.free(self.s2); - self.g_data.deinit(); +pub fn deinit(self: *const Self, allocator: mem.Allocator) void { + allocator.free(self.s1); + allocator.free(self.s2); + self.g_data.deinit(allocator); } /// codePointWidth returns the number of cells `cp` requires when rendered diff --git a/src/unicode_tests.zig b/src/unicode_tests.zig index 245c03f..7236ff6 100644 --- a/src/unicode_tests.zig +++ b/src/unicode_tests.zig @@ -19,7 +19,7 @@ comptime { test "Iterator.peek" { const peek_seq = "aΔ👨🏻‍🌾→"; const data = try GraphemeData.init(std.testing.allocator); - defer data.deinit(); + defer data.deinit(std.testing.allocator); var iter = grapheme.Iterator.init(peek_seq, &data); const peek_a = iter.peek().?; @@ -94,7 +94,7 @@ test "Unicode normalization tests" { const want = w_buf.items; var got = try n.nfc(allocator, input); - defer got.deinit(); + defer got.deinit(allocator); try testing.expectEqualStrings(want, got.slice); } else if (field_index == 2) { @@ -111,7 +111,7 @@ test "Unicode normalization tests" { const want = w_buf.items; var got = try n.nfd(allocator, input); - defer got.deinit(); + defer got.deinit(allocator); try testing.expectEqualStrings(want, got.slice); } else if (field_index == 3) { @@ -128,7 +128,7 @@ test "Unicode normalization tests" { const want = w_buf.items; var got = try n.nfkc(allocator, input); - defer got.deinit(); + defer got.deinit(allocator); try testing.expectEqualStrings(want, got.slice); } else if (field_index == 4) { @@ -145,7 +145,7 @@ test "Unicode normalization tests" { const want = w_buf.items; const got = try n.nfkd(allocator, input); - defer got.deinit(); + defer got.deinit(allocator); try testing.expectEqualStrings(want, got.slice); } else { @@ -163,7 +163,7 @@ test "Segmentation GraphemeIterator" { var input_stream = buf_reader.reader(); const data = try GraphemeData.init(allocator); - defer data.deinit(); + defer data.deinit(allocator); var buf: [4096]u8 = undefined; var line_no: usize = 1; -- cgit v1.2.3