#ifndef VEC_MACRO_H #define VEC_MACRO_H #include "../aliases.h" #define vec_print(T, v1) vec_print_##T(v1) #define vec_add(T, v1, v2) vec_add_##T(v1, v2) #define vec_sub(T, v1, v2) vec_sub_##T(v1, v2) #define vec_mul(T, v1, v2) vec_mul_##T(v1, v2) #define vec_dot(T, v1, v2) vec_dot_##T(v1, v2) #define vec_magnitude(T, v) vec_magnitude_##T(v) #define T i32 #define C 2 #define I i #define PI d #define VEC_FIELDS \ VEC(i32, x) \ VEC(i32, y) #include "vec.inc" #define T i32 #define C 3 #define I i #define PI d #define VEC_FIELDS \ VEC(i32, x) \ VEC(i32, y) \ VEC(i32, z) #include "vec.inc" #define T f32 #define C 2 #define I f #define PI f #define VEC_FIELDS \ VEC(f32, x) \ VEC(f32, y) #include "vec.inc" #define T f32 #define C 3 #define I f #define PI f #define VEC_FIELDS \ VEC(f32, x) \ VEC(f32, y) \ VEC(f32, z) #include "vec.inc" #endif // !VEC_MACRO_H