Files
ghostty/pkg/fontconfig/char_set.zig
Mitchell Hashimoto eccd07f009 pkg: replace @cImport with addTranslateC in pkg/
@cImport is going to disappear in Zig 0.17. Its deprecated in Zig 0.16.
Let's remove it now.

Replace @cImport with addTranslateC across pkg/ packages. Each
package now has a c_import.h header that is translated at build
time via addTranslateC and exposed as a "cimport" module import.

Converted packages:
- dcimgui
- fontconfig
- freetype
- glslang
- harfbuzz
- macos
- oniguruma
- opengl
- sentry
- spirv-cross
- wuffs

Omitted:
- gtk4-layer-shell - This has a bit more complexity with how it
  interacts with GTK headers, so I need to consider this a bit more.
- src/ - It'll be cleaner to do this separately.
2026-04-16 21:35:51 -07:00

41 lines
999 B
Zig

const std = @import("std");
const assert = std.debug.assert;
const c = @import("c");
pub const CharSet = opaque {
pub fn create() *CharSet {
return @ptrCast(c.FcCharSetCreate());
}
pub fn destroy(self: *CharSet) void {
c.FcCharSetDestroy(self.cval());
}
pub fn addChar(self: *CharSet, cp: u32) bool {
return c.FcCharSetAddChar(self.cval(), cp) == c.FcTrue;
}
pub fn hasChar(self: *const CharSet, cp: u32) bool {
return c.FcCharSetHasChar(self.cvalConst(), cp) == c.FcTrue;
}
pub inline fn cval(self: *CharSet) *c.struct__FcCharSet {
return @ptrCast(self);
}
pub inline fn cvalConst(self: *const CharSet) *const c.struct__FcCharSet {
return @ptrCast(self);
}
};
test "create" {
const testing = std.testing;
var fs = CharSet.create();
defer fs.destroy();
try testing.expect(!fs.hasChar(0x20));
try testing.expect(fs.addChar(0x20));
try testing.expect(fs.hasChar(0x20));
}