cresize :: (ptr: rawptr, size: u32) -> rawptr do return raw_resize(context.allocator, ptr, size);
cfree :: (ptr: rawptr) do raw_free(context.allocator, ptr);
+new :: ($T: type_expr, allocator := context.allocator) -> ^T {
+ res := cast(^T) calloc(sizeof T);
+
+ // At some point, it would be nice to initialize the resulting memory, i.e.
+ // *res = T.{};
+
+ return res;
+}
return b;
}
+clamp :: (v: $T, lo: T, hi: T) -> T {
+ if v < lo do return lo;
+ if v > hi do return hi;
+ return v;
+}
+
sqrt :: proc { wasm.sqrt_f32, wasm.sqrt_f64, sqrt_poly }
sqrt_poly :: proc (x: $T) -> T {
return ~~ sqrt_f64(~~ x);