alloc.ha (736B)
1 export type createfn = fn(_: *allocator, _: *opaque, _: size) (*opaque | nomem); 2 export type destroyfn = fn(_: *allocator, _: *opaque) void; 3 export type finishfn = fn(_: *allocator) void; 4 5 export type vtable = struct { 6 create: *createfn, 7 destroy: *destroyfn, 8 finish: *finishfn 9 }; 10 11 export type allocator = *vtable; 12 13 export fn create(al: *allocator, obj: *opaque, s: size) (*opaque | nomem) = al.create(al, obj, s); 14 export fn destroy(al: *allocator, obj: *opaque) void = al.destroy(al, obj); 15 export fn finish(al: *allocator) void = al.finish(al); 16 17 export fn copy(dst: *[*]u8, src: *[*]u8, s: size) void = { 18 for (let i = 0z; i < s; i += 1) 19 dst[i] = src[i]; 20 }; 21 22 export fn destroy_nothing(al: *allocator, obj: *opaque) void = return;