default_allocators_windows.odin 884 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //+build windows
  2. package runtime
  3. default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
  4. size, alignment: int,
  5. old_memory: rawptr, old_size: int, loc := #caller_location) -> (data: []byte, err: Allocator_Error) {
  6. switch mode {
  7. case .Alloc:
  8. data, err = _windows_default_alloc(size, alignment)
  9. case .Free:
  10. _windows_default_free(old_memory)
  11. case .Free_All:
  12. // NOTE(tetra): Do nothing.
  13. case .Resize:
  14. data, err = _windows_default_resize(old_memory, old_size, size, alignment)
  15. case .Query_Features:
  16. set := (^Allocator_Mode_Set)(old_memory)
  17. if set != nil {
  18. set^ = {.Alloc, .Free, .Resize, .Query_Features}
  19. }
  20. case .Query_Info:
  21. // Do nothing
  22. }
  23. return
  24. }
  25. default_allocator :: proc() -> Allocator {
  26. return Allocator{
  27. procedure = default_allocator_proc,
  28. data = nil,
  29. }
  30. }