From 59f69a16595bde12e4b51e03bc98a7657866ee44 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Wed, 26 Aug 2026 16:56:38 -0700 Subject: [PATCH] unicode_data: hide 'data' decl and switch to SoA access --- src/unicode_data.zig | 22 ++++++++++++++++++---- test.zig | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/unicode_data.zig b/src/unicode_data.zig index 272b052a39ea34fdc5585f487cfc9a7e5a530d6e..463b53c6d6a58692ba28f1d833215ed812754b74 100644 --- a/src/unicode_data.zig +++ b/src/unicode_data.zig @@ -9,7 +9,21 @@ const ucd = @import("./lib.zig"); const std = @import("std"); const extras = @import("extras"); -pub const data_soa = extras.StaticMultiList(Codepoint).initComptime(&data).items; +const data_soa = extras.StaticMultiList(Codepoint).initComptime(&data).items; +pub const data_code = data_soa[0][0..].*; +pub const data_name = data_soa[1][0..].*; +pub const data_gc = data_soa[2][0..].*; +pub const data_ccc = data_soa[3][0..].*; +pub const data_bc = data_soa[4][0..].*; +pub const data_decomp = data_soa[5][0..].*; +pub const data_decomp_map = data_soa[6][0..].*; +pub const data_nt_dec = data_soa[7][0..].*; +pub const data_nt_dig = data_soa[8][0..].*; +pub const data_nt_num = data_soa[9][0..].*; +pub const data_bm = data_soa[10][0..].*; +pub const data_sum = data_soa[11][0..].*; +pub const data_slm = data_soa[12][0..].*; +pub const data_stm = data_soa[13][0..].*; pub const Codepoint = struct { u21, // U+ code @@ -49,8 +63,8 @@ pub const Decomposition = enum { narrow, }; -pub fn find(cp: u21) Codepoint { - return data[binarySearchClosest(u21, data_soa[0], cp, compare)]; +pub fn find(cp: u21) usize { + return binarySearchClosest(u21, &data_code, cp, compare); } fn binarySearchClosest(comptime T: type, items: []const T, context: anytype, comptime compareFn: fn (@TypeOf(context), T) std.math.Order) usize { @@ -74,7 +88,7 @@ pub fn compare(needle: u21, row: u21) std.math.Order { return .eq; } -pub const data = [_]Codepoint{ +const data = [_]Codepoint{ .{ 0x0000, "", .Cc, 0, .BN, .__none, &.{}, "", "", "", false, null, null, null, }, .{ 0x0001, "", .Cc, 0, .BN, .__none, &.{}, "", "", "", false, null, null, null, }, .{ 0x0002, "", .Cc, 0, .BN, .__none, &.{}, "", "", "", false, null, null, null, }, diff --git a/test.zig b/test.zig index 69c4252580fdc841dc9eeacdfa72a66e5683ed39..21a0e07e044f575b6bd4fcdbdec5f395426062e8 100644 --- a/test.zig +++ b/test.zig @@ -35,6 +35,6 @@ test { _ = &ucd.script_extensions.data; _ = &ucd.property_aliases.data; _ = &ucd.property_value_aliases.data; - _ = &ucd.unicode_data.data; + _ = &ucd.unicode_data.data_code; _ = &ucd.special_casing.data; } -- 2.54.0