1234567891011121314151617181920212223242526272829303132333435363738 |
- //+build windows
- package runtime
- 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:
- data, err = _windows_default_alloc(size, alignment)
- case .Free:
- _windows_default_free(old_memory)
- case .Free_All:
- // NOTE(tetra): Do nothing.
- 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, .Free, .Resize, .Query_Features}
- }
- case .Query_Info:
- // Do nothing
- }
- return
- }
- default_allocator :: proc() -> Allocator {
- return Allocator{
- procedure = default_allocator_proc,
- data = nil,
- }
- }
|