Add mem.Allocator_Mode.Query_Features, mem.Allocator_Mode_Set, mem.query_features`

This commit is contained in:
gingerBill
2020-08-16 22:07:40 +01:00
parent 1f571f48e5
commit 033b46def8
5 changed files with 92 additions and 1 deletions
+4 -1
View File
@@ -251,8 +251,11 @@ Allocator_Mode :: enum byte {
Free,
Free_All,
Resize,
Query_Features,
}
Allocator_Mode_Set :: distinct bit_set[Allocator_Mode];
Allocator_Proc :: #type proc(allocator_data: rawptr, mode: Allocator_Mode,
size, alignment: int,
old_memory: rawptr, old_size: int, flags: u64 = 0, location: Source_Code_Location = #caller_location) -> rawptr;
@@ -263,7 +266,7 @@ Allocator :: struct {
// Logging stuff
Logger_Level :: enum {
Logger_Level :: enum uint {
Debug = 0,
Info = 10,
Warning = 20,
+7
View File
@@ -132,6 +132,13 @@ default_temp_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode
ptr := default_temp_allocator_proc(allocator_data, Allocator_Mode.Alloc, size, alignment, old_memory, old_size, flags, loc);
mem_copy(ptr, old_memory, old_size);
return ptr;
case .Query_Features:
set := (^Allocator_Mode_Set)(old_memory);
if set != nil {
set^ = {.Alloc, .Free, .Free_All, .Resize, .Query_Features};
}
return set;
}
return nil;