freetype: find and fix bugs by fixing refAllDecls()

This commit is contained in:
Ali Chraghi 2022-06-10 17:01:27 +04:30 committed by Stephen Gutekanst
parent 2b7527b028
commit 9c585693b1
8 changed files with 35 additions and 32 deletions

View file

@ -1,6 +1,6 @@
const c = @import("c.zig"); const c = @import("c.zig");
pub const Stroker = @This(); const Stroker = @This();
pub const LineCap = enum(u2) { pub const LineCap = enum(u2) {
butt = c.FT_STROKER_LINECAP_BUTT, butt = c.FT_STROKER_LINECAP_BUTT,

View file

@ -107,15 +107,15 @@ pub const PaletteData = struct {
} }
pub fn paletteNameIDs(self: PaletteData) ?[]const u16 { pub fn paletteNameIDs(self: PaletteData) ?[]const u16 {
return @ptrCast(?[]const u16, self.handle.palette_name_ids[0..self.numPalettes()]); return self.handle.palette_name_ids[0..self.numPalettes()];
} }
pub fn paletteFlags(self: PaletteData) ?[]const u16 { pub fn paletteFlags(self: PaletteData) ?[]const u16 {
return @ptrCast(?[]const u16, self.handle.palette_flags[0..self.numPalettes()]); return self.handle.palette_flags[0..self.numPalettes()];
} }
pub fn paletteFlag(self: PaletteData, index: usize) PaletteFlags { pub fn paletteFlag(self: PaletteData, index: usize) PaletteFlags {
return PaletteFlags.from(@intCast(u2, self.handle.*.palette_flags[index])); return PaletteFlags.from(@intCast(u2, self.handle.palette_flags[index]));
} }
pub fn numPaletteEntries(self: PaletteData) u16 { pub fn numPaletteEntries(self: PaletteData) u16 {
@ -123,7 +123,7 @@ pub const PaletteData = struct {
} }
pub fn paletteEntryNameIDs(self: PaletteData) ?[]const u16 { pub fn paletteEntryNameIDs(self: PaletteData) ?[]const u16 {
return @ptrCast(?[]const u16, self.handle.palette_entry_name_ids[0..self.numPaletteEntries()]); return self.handle.palette_entry_name_ids[0..self.numPaletteEntries()];
} }
}; };
@ -141,7 +141,7 @@ pub const PaletteFlags = packed struct {
} }
pub fn to(flags: PaletteFlags) u2 { pub fn to(flags: PaletteFlags) u2 {
return utils.structToBitFields(u2, PaletteFlags, Flag, flags); return utils.structToBitFields(u2, Flag, flags);
} }
}; };

View file

@ -75,7 +75,9 @@ pub const Size = struct {
} }
pub fn deinit(self: Size) void { pub fn deinit(self: Size) void {
c.FT_Done_Size(self.handle); intToError(c.FT_Done_Size(self.handle)) catch |err| {
std.log.err("mach/freetype: Failed to destroy Size: {}", .{err});
};
} }
}; };
@ -207,7 +209,7 @@ pub const FSType = packed struct {
} }
pub fn cast(flags: FSType) u10 { pub fn cast(flags: FSType) u10 {
return utils.structToBitFields(u10, FSType, Flag, flags); return utils.structToBitFields(u10, Flag, flags);
} }
}; };
@ -225,7 +227,7 @@ pub const StyleFlags = packed struct {
} }
pub fn cast(flags: StyleFlags) u2 { pub fn cast(flags: StyleFlags) u2 {
return utils.structToBitFields(u2, StyleFlags, Flag, flags); return utils.structToBitFields(u2, Flag, flags);
} }
}; };

View file

@ -11,14 +11,12 @@ pub const Error = @import("error.zig").Error;
const utils = @import("utils"); const utils = @import("utils");
test { test {
utils.refAllDecls(@This()); utils.refAllDecls(@import("freetype.zig"));
utils.refAllDecls(@import("types.zig"));
utils.refAllDecls(@import("image.zig"));
utils.refAllDecls(@import("color.zig")); utils.refAllDecls(@import("color.zig"));
utils.refAllDecls(@import("lcdfilter.zig"));
utils.refAllDecls(@import("error.zig")); utils.refAllDecls(@import("error.zig"));
utils.refAllDecls(@import("utils"));
utils.refAllDecls(@import("Face.zig"));
utils.refAllDecls(@import("GlyphSlot.zig"));
utils.refAllDecls(@import("Library.zig"));
utils.refAllDecls(@import("Outline.zig"));
utils.refAllDecls(Glyph); utils.refAllDecls(Glyph);
utils.refAllDecls(Stroker); utils.refAllDecls(Stroker);
} }

View file

@ -21,7 +21,7 @@ pub const Buffer = struct {
verify: bool = false, verify: bool = false,
produce_unsafe_to_concat: bool = false, produce_unsafe_to_concat: bool = false,
pub const Flag = enum(u21) { pub const Flag = enum(u7) {
bot = c.HB_BUFFER_FLAG_BOT, bot = c.HB_BUFFER_FLAG_BOT,
eot = c.HB_BUFFER_FLAG_EOT, eot = c.HB_BUFFER_FLAG_EOT,
preserve_default_ignorables = c.HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES, preserve_default_ignorables = c.HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES,
@ -31,12 +31,12 @@ pub const Buffer = struct {
produce_unsafe_to_concat = c.HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, produce_unsafe_to_concat = c.HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT,
}; };
pub fn from(bits: u21) Flags { pub fn from(bits: u7) Flags {
return utils.bitFieldsToStruct(Flags, Flag, bits); return utils.bitFieldsToStruct(Flags, Flag, bits);
} }
pub fn cast(flags: Flags) u21 { pub fn cast(flags: Flags) u7 {
return utils.structToBitFields(u21, Flag, flags); return utils.structToBitFields(u7, Flag, flags);
} }
}; };
@ -140,11 +140,11 @@ pub const Buffer = struct {
} }
pub fn setLanguage(self: Buffer, lang: Language) void { pub fn setLanguage(self: Buffer, lang: Language) void {
c.hb_buffer_set_language(self.handle, @enumToInt(lang)); c.hb_buffer_set_language(self.handle, lang.handle);
} }
pub fn getLanguage(self: Buffer) Language { pub fn getLanguage(self: Buffer) Language {
return @intToEnum(Language, c.hb_buffer_get_language(self.handle)); return Language{ .handle = c.hb_buffer_get_language(self.handle) };
} }
pub fn setFlags(self: Buffer, flags: Flags) void { pub fn setFlags(self: Buffer, flags: Flags) void {
@ -152,6 +152,6 @@ pub const Buffer = struct {
} }
pub fn getFlags(self: Buffer) Flags { pub fn getFlags(self: Buffer) Flags {
return Flags.from(c.hb_buffer_get_flags(self.handle)); return Flags.from(@intCast(u7, c.hb_buffer_get_flags(self.handle)));
} }
}; };

View file

@ -181,7 +181,7 @@ pub const Language = struct {
pub fn init(name: []const u8) Language { pub fn init(name: []const u8) Language {
return .{ return .{
.handle = c.hb_language_from_string(&name[0], name.len), .handle = c.hb_language_from_string(&name[0], @intCast(c_int, name.len)),
}; };
} }

View file

@ -6,5 +6,7 @@ pub const c = @import("c.zig");
const utils = @import("utils"); const utils = @import("utils");
test { test {
utils.refAllDecls(@This()); utils.refAllDecls(@import("blob.zig"));
utils.refAllDecls(@import("buffer.zig"));
utils.refAllDecls(@import("common.zig"));
} }

View file

@ -21,15 +21,16 @@ pub fn bitFieldsToStruct(comptime StructType: type, comptime EnumDataType: type,
} }
pub fn refAllDecls(comptime T: type) void { pub fn refAllDecls(comptime T: type) void {
switch (@typeInfo(T)) { @setEvalBranchQuota(10000);
.Struct, .Union, .Opaque, .Enum => { inline for (comptime std.meta.declarations(T)) |decl| {
inline for (comptime std.meta.declarations(T)) |decl| { if (decl.is_pub) {
if (decl.is_pub) { if (@TypeOf(@field(T, decl.name)) == type) {
refAllDecls(@TypeOf(@field(T, decl.name))); switch (@typeInfo(@field(T, decl.name))) {
std.testing.refAllDecls(T); .Struct, .Enum, .Union, .Opaque => refAllDecls(@field(T, decl.name)),
else => {},
} }
} }
}, _ = @field(T, decl.name);
else => {}, }
} }
} }