make as a user-level procedure rather than a built-in procedure

This commit is contained in:
gingerBill
2018-08-08 13:04:40 +01:00
committed by Ginger Bill
parent 28816dc491
commit 835d7dcab2
5 changed files with 85 additions and 866 deletions
+28
View File
@@ -102,6 +102,34 @@ new_clone_with_allocator :: inline proc(a: Allocator, data: $T, loc := #caller_l
}
make_slice :: proc(T: type/[]$E, len: int) -> T {
data := alloc(size_of(E)*len, align_of(E));
s := Raw_Slice{data, len};
return transmute(T)s;
}
make_dynamic_array_len :: proc(T: type/[dynamic]$E, len: int = 16) -> T {
return make_dynamic_array(T, len, len);
}
make_dynamic_array :: proc(T: type/[dynamic]$E, len, cap: int) -> T {
data := alloc(size_of(E)*cap, align_of(E));
s := Raw_Dynamic_Array{data, len, cap, context.allocator};
return transmute(T)s;
}
make_map :: proc(T: type/map[$K]$E, cap: int = 16) -> T {
m: T;
reserve_map(&m, cap);
return m;
}
make :: proc[
make_slice,
make_dynamic_array_len,
make_dynamic_array,
make_map,
];
default_resize_align :: proc(old_memory: rawptr, old_size, new_size, alignment: int, loc := #caller_location) -> rawptr {
if old_memory == nil do return alloc(new_size, alignment, loc);
+9
View File
@@ -325,6 +325,15 @@ delete :: proc[
mem.delete_map,
];
@(builtin)
make :: proc[
mem.make_slice,
mem.make_dynamic_array_len,
mem.make_dynamic_array,
mem.make_map,
];
@(builtin)