Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › compiler/ › Maker/ › Watch/ › FsEvents.zig › cf_alloc_callbacks
cf_alloc_callbacks
FsEvents.cf_alloc_callbacks
const cf_alloc_callbacks = struct
File
Code
const cf_alloc_callbacks = struct {
const log = std .log .scoped (.cf_alloc );
fn allocate (size : CFIndex , hint : CFOptionFlags , info : ?*const anyopaque ) callconv (.c ) ?*const anyopaque {
if (enable_debug_logs ) log .debug ("allocate {d}" , .{size });
_ = hint ;
const gpa : *const Allocator = @ptrCast (@alignCast (info ));
const mem = gpa .alignedAlloc (u8 , .of (usize ), @intCast (size + @sizeOf (usize ))) catch return null ;
const metadata : *usize = @ptrCast (mem );
metadata .* = @intCast (size );
return mem [@sizeOf (usize )..].ptr ;
}
fn reallocate (ptr : ?*anyopaque , new_size : CFIndex , hint : CFOptionFlags , info : ?*const anyopaque ) callconv (.c ) ?*const anyopaque {
if (enable_debug_logs ) log .debug ("reallocate @{*} {d}" , .{ ptr , new_size });
_ = hint ;
if (ptr == null or new_size == 0 ) return null ;
const gpa : *const Allocator = @ptrCast (@alignCast (info ));
const old_base : [*]align (@alignOf (usize )) u8 = @alignCast (@as ([*]u8 , @ptrCast (ptr )) - @sizeOf (usize ));
const old_size = @as (*const usize , @ptrCast (old_base )).*;
const old_mem = old_base [0 .. old_size + @sizeOf (usize )];
const new_mem = gpa .realloc (old_mem , @intCast (new_size + @sizeOf (usize ))) catch return null ;
const metadata : *usize = @ptrCast (new_mem );
metadata .* = @intCast (new_size );
return new_mem [@sizeOf (usize )..].ptr ;
}
fn deallocate (ptr : *anyopaque , info : ?*const anyopaque ) callconv (.c ) void {
if (enable_debug_logs ) log .debug ("deallocate @{*}" , .{ptr });
const gpa : *const Allocator = @ptrCast (@alignCast (info ));
const old_base : [*]align (@alignOf (usize )) u8 = @alignCast (@as ([*]u8 , @ptrCast (ptr )) - @sizeOf (usize ));
const old_size = @as (*const usize , @ptrCast (old_base )).*;
const old_mem = old_base [0 .. old_size + @sizeOf (usize )];
gpa .free (old_mem );
}
}