raw.odin 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package mem
  2. import "core:runtime"
  3. Raw_Any :: runtime.Raw_Any
  4. Raw_String :: runtime.Raw_String
  5. Raw_Cstring :: runtime.Raw_Cstring
  6. Raw_Slice :: runtime.Raw_Slice
  7. Raw_Dynamic_Array :: runtime.Raw_Dynamic_Array
  8. Raw_Map :: runtime.Raw_Map
  9. Raw_Complex64 :: struct {real, imag: f32}
  10. Raw_Complex128 :: struct {real, imag: f64}
  11. Raw_Quaternion128 :: struct {imag, jmag, kmag: f32, real: f32}
  12. Raw_Quaternion256 :: struct {imag, jmag, kmag: f64, real: f64}
  13. Raw_Quaternion128_Vector_Scalar :: struct {vector: [3]f32, scalar: f32}
  14. Raw_Quaternion256_Vector_Scalar :: struct {vector: [3]f64, scalar: f64}
  15. make_any :: proc "contextless" (data: rawptr, id: typeid) -> any {
  16. return transmute(any)Raw_Any{data, id}
  17. }
  18. raw_array_data :: proc "contextless" (a: $P/^($T/[$N]$E)) -> ^E {
  19. return (^E)(a)
  20. }
  21. raw_string_data :: proc "contextless" (s: $T/string) -> ^byte {
  22. return (transmute(Raw_String)s).data
  23. }
  24. raw_slice_data :: proc "contextless" (a: $T/[]$E) -> ^E {
  25. return cast(^E)(transmute(Raw_Slice)a).data
  26. }
  27. raw_dynamic_array_data :: proc "contextless" (a: $T/[dynamic]$E) -> ^E {
  28. return cast(^E)(transmute(Raw_Dynamic_Array)a).data
  29. }
  30. raw_data :: proc{raw_array_data, raw_string_data, raw_slice_data, raw_dynamic_array_data}
  31. Poly_Raw_Map_Entry :: struct($Key, $Value: typeid) {
  32. hash: uintptr,
  33. next: int,
  34. key: Key,
  35. value: Value,
  36. }
  37. Poly_Raw_Map :: struct($Key, $Value: typeid) {
  38. hashes: []int,
  39. entries: [dynamic]Poly_Raw_Map_Entry(Key, Value),
  40. }