const std = @import("std"); const c = @import("c.zig"); pub const Version = struct { major: u32, minor: u32, micro: u32, }; /// Returns library version as three integer components. pub fn version() Version { var major: c_uint = 0; var minor: c_uint = 0; var micro: c_uint = 0; c.hb_version(&major, &minor, µ); return .{ .major = major, .minor = minor, .micro = micro }; } /// Tests the library version against a minimum value, as three integer components. pub fn versionAtLeast(vsn: Version) bool { return c.hb_version_atleast( vsn.major, vsn.minor, vsn.micro, ) > 0; } /// Returns library version as a string with three components. pub fn versionString() [:0]const u8 { const res = c.hb_version_string(); return std.mem.sliceTo(res, 0); } test { const testing = std.testing; // Should be able to get the version const vsn = version(); try testing.expect(vsn.major > 0); // Should be at least version 1 try testing.expect(versionAtLeast(.{ .major = 1, .minor = 0, .micro = 0, })); }