zpy

A lisp like language written in hare
Log | Files | Refs

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;