From b1cd7f0a246d2061e994d3875de875359136a734 Mon Sep 17 00:00:00 2001 From: Wolfgang Draxinger Date: Thu, 11 Dec 2014 16:52:53 +0100 Subject: generic vec type generation macro --- linmath.h | 116 ++++++++++++++++++++++++-------------------------------------- 1 file changed, 44 insertions(+), 72 deletions(-) diff --git a/linmath.h b/linmath.h index d5c4084..52248d1 100644 --- a/linmath.h +++ b/linmath.h @@ -3,48 +3,55 @@ #include -typedef float vec3[3]; -static inline void vec3_add(vec3 r, vec3 const a, vec3 const b) -{ - int i; - for(i=0; i<3; ++i) - r[i] = a[i] + b[i]; -} -static inline void vec3_sub(vec3 r, vec3 const a, vec3 const b) -{ - int i; - for(i=0; i<3; ++i) - r[i] = a[i] - b[i]; -} -static inline void vec3_scale(vec3 r, vec3 const v, float const s) -{ - int i; - for(i=0; i<3; ++i) - r[i] = v[i] * s; -} -static inline float vec3_mul_inner(vec3 const a, vec3 const b) -{ - float p = 0.f; - int i; - for(i=0; i<3; ++i) - p += b[i]*a[i]; - return p; -} +#define LINMATH_H_DEFINE_VEC(n) \ +typedef float vec##n[n]; \ +static inline void vec##n##_add(vec##n r, vec##n a, vec##n b) \ +{ \ + int i; \ + for(i=0; i