mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
pkg/objc: autorelease pools
This commit is contained in:
16
pkg/objc/autorelease.zig
Normal file
16
pkg/objc/autorelease.zig
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub const AutoreleasePool = opaque {
|
||||||
|
pub inline fn init() *AutoreleasePool {
|
||||||
|
return @ptrCast(*AutoreleasePool, objc_autoreleasePoolPush().?);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub inline fn deinit(self: *AutoreleasePool) void {
|
||||||
|
objc_autoreleasePoolPop(self);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// I'm not sure if these are internal or not... they aren't in any headers,
|
||||||
|
// but its how autorelease pools are implemented.
|
||||||
|
extern "c" fn objc_autoreleasePoolPush() ?*anyopaque;
|
||||||
|
extern "c" fn objc_autoreleasePoolPop(?*anyopaque) void;
|
@ -1,6 +1,7 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub const c = @import("c.zig");
|
pub const c = @import("c.zig");
|
||||||
|
pub usingnamespace @import("autorelease.zig");
|
||||||
pub usingnamespace @import("class.zig");
|
pub usingnamespace @import("class.zig");
|
||||||
pub usingnamespace @import("object.zig");
|
pub usingnamespace @import("object.zig");
|
||||||
pub usingnamespace @import("property.zig");
|
pub usingnamespace @import("property.zig");
|
||||||
|
Reference in New Issue
Block a user