1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //+build windows
- package runtime
- when ODIN_DEFAULT_TO_NIL_ALLOCATOR {
- // mem.nil_allocator reimplementation
- default_allocator_proc :: nil_allocator_proc
- default_allocator :: nil_allocator
- } else {
- default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
- size, alignment: int,
- old_memory: rawptr, old_size: int, loc := #caller_location) -> (data: []byte, err: Allocator_Error) {
- switch mode {
- case .Alloc, .Alloc_Non_Zeroed:
- data, err = _windows_default_alloc(size, alignment, mode == .Alloc)
- case .Free:
- _windows_default_free(old_memory)
- case .Free_All:
- return nil, .Mode_Not_Implemented
- case .Resize:
- data, err = _windows_default_resize(old_memory, old_size, size, alignment)
- case .Query_Features:
- set := (^Allocator_Mode_Set)(old_memory)
- if set != nil {
- set^ = {.Alloc, .Alloc_Non_Zeroed, .Free, .Resize, .Query_Features}
- }
- case .Query_Info:
- return nil, .Mode_Not_Implemented
- }
- return
- }
- default_allocator :: proc() -> Allocator {
- return Allocator{
- procedure = default_allocator_proc,
- data = nil,
- }
- }
- }
|