refactor: avoid unnecessary @intCast and @ptrCast in FontFace.zig

This commit is contained in:
CJ van den Berg 2025-07-15 12:38:06 +02:00
parent 4592dd807d
commit 0003a52aaf
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -14,19 +14,19 @@ pub fn initUtf8(utf8: []const u8) error{ TooLong, InvalidUtf8 }!FontFace {
const utf16_len = std.unicode.calcUtf16LeLen(utf8) catch return error.InvalidUtf8; const utf16_len = std.unicode.calcUtf16LeLen(utf8) catch return error.InvalidUtf8;
if (utf16_len > max) if (utf16_len > max)
return error.TooLong; return error.TooLong;
var result: FontFace = .{ .buf = undefined, .len = @intCast(utf16_len) }; var self: FontFace = .{ .buf = undefined, .len = utf16_len };
result.buf[utf16_len] = 0; const actual_len = try std.unicode.utf8ToUtf16Le(&self.buf, utf8);
const actual_len = try std.unicode.utf8ToUtf16Le(&result.buf, utf8);
std.debug.assert(actual_len == utf16_len); std.debug.assert(actual_len == utf16_len);
return result; self.buf[actual_len] = 0;
return self;
} }
pub fn ptr(self: *const FontFace) [*:0]const u16 { pub fn ptr(self: *const FontFace) [*:0]const u16 {
std.debug.assert(self.buf[@as(usize, self.len)] == 0); return self.slice().ptr;
return @ptrCast(&self.buf);
} }
pub fn slice(self: *const FontFace) [:0]const u16 { pub fn slice(self: *const FontFace) [:0]const u16 {
return self.ptr()[0..self.len :0]; std.debug.assert(self.buf[self.len] == 0);
return self.buf[0..self.len :0];
} }
pub fn eql(self: *const FontFace, other: *const FontFace) bool { pub fn eql(self: *const FontFace, other: *const FontFace) bool {
return std.mem.eql(u16, self.slice(), other.slice()); return std.mem.eql(u16, self.slice(), other.slice());