aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/math/linalg/general.odin25
-rw-r--r--core/mem/raw.odin15
-rw-r--r--core/os/os_darwin.odin2
3 files changed, 20 insertions, 22 deletions
diff --git a/core/math/linalg/general.odin b/core/math/linalg/general.odin
index 51dfd2360..37c0447cb 100644
--- a/core/math/linalg/general.odin
+++ b/core/math/linalg/general.odin
@@ -3,6 +3,7 @@ package linalg
import "core:math"
import "base:builtin"
import "base:intrinsics"
+import "base:runtime"
// Generic
@@ -223,33 +224,27 @@ quaternion_mul_quaternion :: proc "contextless" (q1, q2: $Q) -> Q where IS_QUATE
@(require_results)
quaternion64_mul_vector3 :: proc "contextless" (q: $Q/quaternion64, v: $V/[3]$F/f16) -> V {
- Raw_Quaternion :: struct {xyz: [3]f16, r: f16}
-
- q := transmute(Raw_Quaternion)q
+ q := transmute(runtime.Raw_Quaternion64_Vector_Scalar)q
v := v
- t := cross(2*q.xyz, v)
- return V(v + q.r*t + cross(q.xyz, t))
+ t := cross(2*q.vector, v)
+ return V(v + q.scalar*t + cross(q.vector, t))
}
@(require_results)
quaternion128_mul_vector3 :: proc "contextless" (q: $Q/quaternion128, v: $V/[3]$F/f32) -> V {
- Raw_Quaternion :: struct {xyz: [3]f32, r: f32}
-
- q := transmute(Raw_Quaternion)q
+ q := transmute(runtime.Raw_Quaternion128_Vector_Scalar)q
v := v
- t := cross(2*q.xyz, v)
- return V(v + q.r*t + cross(q.xyz, t))
+ t := cross(2*q.vector, v)
+ return V(v + q.scalar*t + cross(q.vector, t))
}
@(require_results)
quaternion256_mul_vector3 :: proc "contextless" (q: $Q/quaternion256, v: $V/[3]$F/f64) -> V {
- Raw_Quaternion :: struct {xyz: [3]f64, r: f64}
-
- q := transmute(Raw_Quaternion)q
+ q := transmute(runtime.Raw_Quaternion256_Vector_Scalar)q
v := v
- t := cross(2*q.xyz, v)
- return V(v + q.r*t + cross(q.xyz, t))
+ t := cross(2*q.vector, v)
+ return V(v + q.scalar*t + cross(q.vector, t))
}
quaternion_mul_vector3 :: proc{quaternion64_mul_vector3, quaternion128_mul_vector3, quaternion256_mul_vector3}
diff --git a/core/mem/raw.odin b/core/mem/raw.odin
index 56790e959..f56206957 100644
--- a/core/mem/raw.odin
+++ b/core/mem/raw.odin
@@ -11,12 +11,15 @@ Raw_Dynamic_Array :: runtime.Raw_Dynamic_Array
Raw_Map :: runtime.Raw_Map
Raw_Soa_Pointer :: runtime.Raw_Soa_Pointer
-Raw_Complex64 :: struct {real, imag: f32}
-Raw_Complex128 :: struct {real, imag: f64}
-Raw_Quaternion128 :: struct {imag, jmag, kmag: f32, real: f32}
-Raw_Quaternion256 :: struct {imag, jmag, kmag: f64, real: f64}
-Raw_Quaternion128_Vector_Scalar :: struct {vector: [3]f32, scalar: f32}
-Raw_Quaternion256_Vector_Scalar :: struct {vector: [3]f64, scalar: f64}
+Raw_Complex32 :: runtime.Raw_Complex32
+Raw_Complex64 :: runtime.Raw_Complex64
+Raw_Complex128 :: runtime.Raw_Complex128
+Raw_Quaternion64 :: runtime.Raw_Quaternion64
+Raw_Quaternion128 :: runtime.Raw_Quaternion128
+Raw_Quaternion256 :: runtime.Raw_Quaternion256
+Raw_Quaternion64_Vector_Scalar :: runtime.Raw_Quaternion64_Vector_Scalar
+Raw_Quaternion128_Vector_Scalar :: runtime.Raw_Quaternion128_Vector_Scalar
+Raw_Quaternion256_Vector_Scalar :: runtime.Raw_Quaternion256_Vector_Scalar
make_any :: proc "contextless" (data: rawptr, id: typeid) -> any {
return transmute(any)Raw_Any{data, id}
diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin
index a688e1ac3..877a90bf1 100644
--- a/core/os/os_darwin.odin
+++ b/core/os/os_darwin.odin
@@ -442,7 +442,7 @@ F_GETPATH :: 50 // return the full path of the fd
foreign libc {
@(link_name="__error") __error :: proc() -> ^c.int ---
- @(link_name="open") _unix_open :: proc(path: cstring, flags: i32, mode: u16) -> Handle ---
+ @(link_name="open") _unix_open :: proc(path: cstring, flags: i32, #c_vararg args: ..any) -> Handle ---
@(link_name="close") _unix_close :: proc(handle: Handle) -> c.int ---
@(link_name="read") _unix_read :: proc(handle: Handle, buffer: rawptr, count: c.size_t) -> int ---
@(link_name="write") _unix_write :: proc(handle: Handle, buffer: rawptr, count: c.size_t) -> int ---