pkg/macos: support CFCharacterSet

This commit is contained in:
Mitchell Hashimoto
2022-11-17 15:09:53 -08:00
parent 7703873142
commit 843dc8ae14
2 changed files with 31 additions and 0 deletions

View File

@ -2,6 +2,7 @@ pub const c = @import("foundation/c.zig");
pub usingnamespace @import("foundation/array.zig");
pub usingnamespace @import("foundation/attributed_string.zig");
pub usingnamespace @import("foundation/base.zig");
pub usingnamespace @import("foundation/character_set.zig");
pub usingnamespace @import("foundation/data.zig");
pub usingnamespace @import("foundation/dictionary.zig");
pub usingnamespace @import("foundation/number.zig");

View File

@ -0,0 +1,30 @@
const std = @import("std");
const assert = std.debug.assert;
const Allocator = std.mem.Allocator;
const foundation = @import("../foundation.zig");
const c = @import("c.zig");
pub const CharacterSet = opaque {
pub fn createWithCharactersInString(
str: *foundation.String,
) Allocator.Error!*CharacterSet {
return @intToPtr(?*CharacterSet, @ptrToInt(c.CFCharacterSetCreateWithCharactersInString(
null,
@ptrCast(c.CFStringRef, str),
))) orelse Allocator.Error.OutOfMemory;
}
pub fn release(self: *CharacterSet) void {
c.CFRelease(self);
}
};
test "character set" {
//const testing = std.testing;
const str = try foundation.String.createWithBytes("hello world", .ascii, false);
defer str.release();
const cs = try CharacterSet.createWithCharactersInString(str);
defer cs.release();
}