raw.odin 784 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. Any :: struct {
  2. data: rawptr,
  3. type_info: ^Type_Info,
  4. }
  5. String :: struct {
  6. data: ^byte,
  7. len: int,
  8. }
  9. Slice :: struct {
  10. data: rawptr,
  11. len: int,
  12. }
  13. Dynamic_Array :: struct {
  14. data: rawptr,
  15. len: int,
  16. cap: int,
  17. allocator: Allocator,
  18. }
  19. Map :: struct {
  20. hashes: [dynamic]int,
  21. entries: Dynamic_Array,
  22. }
  23. make_any :: inline proc(data: rawptr, type_info: ^Type_Info) -> any {
  24. return transmute(any)Any{data, type_info};
  25. }
  26. string_data :: inline proc(s: $T/string) -> ^byte {
  27. return (^String)(&s).data;
  28. }
  29. slice_data :: inline proc(a: $T/[]$E) -> ^E {
  30. return cast(^E)(^Slice)(&a).data;
  31. }
  32. dynamic_array_data :: inline proc(a: $T/[dynamic]$E) -> ^E {
  33. return cast(^E)(^Dynamic_Array)(&a).data;
  34. }
  35. data :: proc[string_data, slice_data, dynamic_array_data];