aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/libghostty-vt/pkg/harfbuzz/version.zig
blob: 5546ca37790bd2cec214b765a4a0cebf1dc42ea4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const std = @import("std");
const c = @import("hb_c");

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, &micro);
    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,
    }));
}