struct: provide option to omit struct api namespace e.g. glms_ and an …

This commit is contained in:
Recep Aslantas
2023-04-09 17:20:38 +03:00
parent ea8ef4a3c9
commit c221f8883a
2 changed files with 54 additions and 48 deletions

View File

@@ -15,6 +15,9 @@
#include "vec4.h"
#include "mat4.h"
/* api definition */
#define glms_aabb_(NAME) CGLM_STRUCTAPI(aabb, NAME)
/*!
* @brief apply transform to Axis-Aligned Bounding Box
*
@@ -24,7 +27,7 @@
*/
CGLM_INLINE
void
glms_aabb_transform(vec3s box[2], mat4s m, vec3s dest[2]) {
glms_aabb_(transform)(vec3s box[2], mat4s m, vec3s dest[2]) {
vec3 rawBox[2];
vec3 rawDest[2];
@@ -45,7 +48,7 @@ glms_aabb_transform(vec3s box[2], mat4s m, vec3s dest[2]) {
*/
CGLM_INLINE
void
glms_aabb_merge(vec3s box1[2], vec3s box2[2], vec3s dest[2]) {
glms_aabb_(merge)(vec3s box1[2], vec3s box2[2], vec3s dest[2]) {
vec3 rawBox1[2];
vec3 rawBox2[2];
vec3 rawDest[2];
@@ -69,7 +72,7 @@ glms_aabb_merge(vec3s box1[2], vec3s box2[2], vec3s dest[2]) {
*/
CGLM_INLINE
void
glms_aabb_crop(vec3s box[2], vec3s cropBox[2], vec3s dest[2]) {
glms_aabb_(crop)(vec3s box[2], vec3s cropBox[2], vec3s dest[2]) {
vec3 rawBox[2];
vec3 rawCropBox[2];
vec3 rawDest[2];
@@ -94,7 +97,7 @@ glms_aabb_crop(vec3s box[2], vec3s cropBox[2], vec3s dest[2]) {
*/
CGLM_INLINE
void
glms_aabb_crop_until(vec3s box[2],
glms_aabb_(crop_until)(vec3s box[2],
vec3s cropBox[2],
vec3s clampBox[2],
vec3s dest[2]) {
@@ -118,7 +121,7 @@ glms_aabb_crop_until(vec3s box[2],
*/
CGLM_INLINE
bool
glms_aabb_frustum(vec3s box[2], vec4s planes[6]) {
glms_aabb_(frustum)(vec3s box[2], vec4s planes[6]) {
vec3 rawBox[2];
vec4 rawPlanes[6];
@@ -134,7 +137,7 @@ glms_aabb_frustum(vec3s box[2], vec4s planes[6]) {
*/
CGLM_INLINE
void
glms_aabb_invalidate(vec3s box[2]) {
glms_aabb_(invalidate)(vec3s box[2]) {
box[0] = glms_vec3_broadcast(FLT_MAX);
box[1] = glms_vec3_broadcast(-FLT_MAX);
}
@@ -146,7 +149,7 @@ glms_aabb_invalidate(vec3s box[2]) {
*/
CGLM_INLINE
bool
glms_aabb_isvalid(vec3s box[2]) {
glms_aabb_(isvalid)(vec3s box[2]) {
vec3 rawBox[2];
glms_vec3_unpack(rawBox, box, 2);
return glm_aabb_isvalid(rawBox);
@@ -159,7 +162,7 @@ glms_aabb_isvalid(vec3s box[2]) {
*/
CGLM_INLINE
float
glms_aabb_size(vec3s box[2]) {
glms_aabb_(size)(vec3s box[2]) {
return glm_vec3_distance(box[0].raw, box[1].raw);
}
@@ -170,7 +173,7 @@ glms_aabb_size(vec3s box[2]) {
*/
CGLM_INLINE
float
glms_aabb_radius(vec3s box[2]) {
glms_aabb_(radius)(vec3s box[2]) {
return glms_aabb_size(box) * 0.5f;
}
@@ -182,7 +185,7 @@ glms_aabb_radius(vec3s box[2]) {
*/
CGLM_INLINE
vec3s
glms_aabb_center(vec3s box[2]) {
glms_aabb_(center)(vec3s box[2]) {
return glms_vec3_center(box[0], box[1]);
}
@@ -194,7 +197,7 @@ glms_aabb_center(vec3s box[2]) {
*/
CGLM_INLINE
bool
glms_aabb_aabb(vec3s box[2], vec3s other[2]) {
glms_aabb_(aabb)(vec3s box[2], vec3s other[2]) {
vec3 rawBox[2];
vec3 rawOther[2];
@@ -214,7 +217,7 @@ glms_aabb_aabb(vec3s box[2], vec3s other[2]) {
*/
CGLM_INLINE
bool
glms_aabb_sphere(vec3s box[2], vec4s s) {
glms_aabb_(sphere)(vec3s box[2], vec4s s) {
vec3 rawBox[2];
glms_vec3_unpack(rawBox, box, 2);
@@ -229,7 +232,7 @@ glms_aabb_sphere(vec3s box[2], vec4s s) {
*/
CGLM_INLINE
bool
glms_aabb_point(vec3s box[2], vec3s point) {
glms_aabb_(point)(vec3s box[2], vec3s point) {
vec3 rawBox[2];
glms_vec3_unpack(rawBox, box, 2);
@@ -244,7 +247,7 @@ glms_aabb_point(vec3s box[2], vec3s point) {
*/
CGLM_INLINE
bool
glms_aabb_contains(vec3s box[2], vec3s other[2]) {
glms_aabb_(contains)(vec3s box[2], vec3s other[2]) {
vec3 rawBox[2];
vec3 rawOther[2];

View File

@@ -54,6 +54,9 @@
#include "../plane.h"
#include "../quat.h"
/* api definition */
#define glms_quat_(NAME) CGLM_STRUCTAPI(quat, NAME)
/*
* IMPORTANT:
* ----------------------------------------------------------------------------
@@ -74,7 +77,7 @@
*/
CGLM_INLINE
versors
glms_quat_identity(void) {
glms_quat_(identity)(void) {
versors dest;
glm_quat_identity(dest.raw);
return dest;
@@ -90,7 +93,7 @@ glms_quat_identity(void) {
*/
CGLM_INLINE
void
glms_quat_identity_array(versors * __restrict q, size_t count) {
glms_quat_(identity_array)(versors * __restrict q, size_t count) {
CGLM_ALIGN(16) versor v = GLM_QUAT_IDENTITY_INIT;
size_t i;
@@ -110,7 +113,7 @@ glms_quat_identity_array(versors * __restrict q, size_t count) {
*/
CGLM_INLINE
versors
glms_quat_init(float x, float y, float z, float w) {
glms_quat_(init)(float x, float y, float z, float w) {
versors dest;
glm_quat_init(dest.raw, x, y, z, w);
return dest;
@@ -157,7 +160,7 @@ glms_quat(float angle, float x, float y, float z) {
*/
CGLM_INLINE
versors
glms_quat_from_vecs(vec3s a, vec3s b) {
glms_quat_(from_vecs)(vec3s a, vec3s b) {
versors dest;
glm_quat_from_vecs(a.raw, b.raw, dest.raw);
return dest;
@@ -170,7 +173,7 @@ glms_quat_from_vecs(vec3s a, vec3s b) {
*/
CGLM_INLINE
float
glms_quat_norm(versors q) {
glms_quat_(norm)(versors q) {
return glm_quat_norm(q.raw);
}
@@ -182,7 +185,7 @@ glms_quat_norm(versors q) {
*/
CGLM_INLINE
versors
glms_quat_normalize(versors q) {
glms_quat_(normalize)(versors q) {
versors dest;
glm_quat_normalize_to(q.raw, dest.raw);
return dest;
@@ -197,7 +200,7 @@ glms_quat_normalize(versors q) {
*/
CGLM_INLINE
float
glms_quat_dot(versors p, versors q) {
glms_quat_(dot)(versors p, versors q) {
return glm_quat_dot(p.raw, q.raw);
}
@@ -209,7 +212,7 @@ glms_quat_dot(versors p, versors q) {
*/
CGLM_INLINE
versors
glms_quat_conjugate(versors q) {
glms_quat_(conjugate)(versors q) {
versors dest;
glm_quat_conjugate(q.raw, dest.raw);
return dest;
@@ -223,7 +226,7 @@ glms_quat_conjugate(versors q) {
*/
CGLM_INLINE
versors
glms_quat_inv(versors q) {
glms_quat_(inv)(versors q) {
versors dest;
glm_quat_inv(q.raw, dest.raw);
return dest;
@@ -238,7 +241,7 @@ glms_quat_inv(versors q) {
*/
CGLM_INLINE
versors
glms_quat_add(versors p, versors q) {
glms_quat_(add)(versors p, versors q) {
versors dest;
glm_quat_add(p.raw, q.raw, dest.raw);
return dest;
@@ -253,7 +256,7 @@ glms_quat_add(versors p, versors q) {
*/
CGLM_INLINE
versors
glms_quat_sub(versors p, versors q) {
glms_quat_(sub)(versors p, versors q) {
versors dest;
glm_quat_sub(p.raw, q.raw, dest.raw);
return dest;
@@ -266,7 +269,7 @@ glms_quat_sub(versors p, versors q) {
*/
CGLM_INLINE
vec3s
glms_quat_imagn(versors q) {
glms_quat_(imagn)(versors q) {
vec3s dest;
glm_normalize_to(q.raw, dest.raw);
return dest;
@@ -279,7 +282,7 @@ glms_quat_imagn(versors q) {
*/
CGLM_INLINE
float
glms_quat_imaglen(versors q) {
glms_quat_(imaglen)(versors q) {
return glm_quat_imaglen(q.raw);
}
@@ -290,7 +293,7 @@ glms_quat_imaglen(versors q) {
*/
CGLM_INLINE
float
glms_quat_angle(versors q) {
glms_quat_(angle)(versors q) {
return glm_quat_angle(q.raw);
}
@@ -302,7 +305,7 @@ glms_quat_angle(versors q) {
*/
CGLM_INLINE
vec3s
glms_quat_axis(versors q) {
glms_quat_(axis)(versors q) {
vec3s dest;
glm_quat_axis(q.raw, dest.raw);
return dest;
@@ -322,7 +325,7 @@ glms_quat_axis(versors q) {
*/
CGLM_INLINE
versors
glms_quat_mul(versors p, versors q) {
glms_quat_(mul)(versors p, versors q) {
versors dest;
glm_quat_mul(p.raw, q.raw, dest.raw);
return dest;
@@ -336,7 +339,7 @@ glms_quat_mul(versors p, versors q) {
*/
CGLM_INLINE
mat4s
glms_quat_mat4(versors q) {
glms_quat_(mat4)(versors q) {
mat4s dest;
glm_quat_mat4(q.raw, dest.raw);
return dest;
@@ -350,7 +353,7 @@ glms_quat_mat4(versors q) {
*/
CGLM_INLINE
mat4s
glms_quat_mat4t(versors q) {
glms_quat_(mat4t)(versors q) {
mat4s dest;
glm_quat_mat4t(q.raw, dest.raw);
return dest;
@@ -364,7 +367,7 @@ glms_quat_mat4t(versors q) {
*/
CGLM_INLINE
mat3s
glms_quat_mat3(versors q) {
glms_quat_(mat3)(versors q) {
mat3s dest;
glm_quat_mat3(q.raw, dest.raw);
return dest;
@@ -378,7 +381,7 @@ glms_quat_mat3(versors q) {
*/
CGLM_INLINE
mat3s
glms_quat_mat3t(versors q) {
glms_quat_(mat3t)(versors q) {
mat3s dest;
glm_quat_mat3t(q.raw, dest.raw);
return dest;
@@ -395,7 +398,7 @@ glms_quat_mat3t(versors q) {
*/
CGLM_INLINE
versors
glms_quat_lerp(versors from, versors to, float t) {
glms_quat_(lerp)(versors from, versors to, float t) {
versors dest;
glm_quat_lerp(from.raw, to.raw, t, dest.raw);
return dest;
@@ -412,7 +415,7 @@ glms_quat_lerp(versors from, versors to, float t) {
*/
CGLM_INLINE
versors
glms_quat_lerpc(versors from, versors to, float t) {
glms_quat_(lerpc)(versors from, versors to, float t) {
versors dest;
glm_quat_lerpc(from.raw, to.raw, t, dest.raw);
return dest;
@@ -430,7 +433,7 @@ glms_quat_lerpc(versors from, versors to, float t) {
*/
CGLM_INLINE
versors
glms_quat_nlerp(versors from, versors to, float t) {
glms_quat_(nlerp)(versors from, versors to, float t) {
versors dest;
glm_quat_nlerp(from.raw, to.raw, t, dest.raw);
return dest;
@@ -447,7 +450,7 @@ glms_quat_nlerp(versors from, versors to, float t) {
*/
CGLM_INLINE
versors
glms_quat_slerp(versors from, versors to, float t) {
glms_quat_(slerp)(versors from, versors to, float t) {
versors dest;
glm_quat_slerp(from.raw, to.raw, t, dest.raw);
return dest;
@@ -462,7 +465,7 @@ glms_quat_slerp(versors from, versors to, float t) {
*/
CGLM_INLINE
mat4s
glms_quat_look(vec3s eye, versors ori) {
glms_quat_(look)(vec3s eye, versors ori) {
mat4s dest;
glm_quat_look(eye.raw, ori.raw, dest.raw);
return dest;
@@ -477,7 +480,7 @@ glms_quat_look(vec3s eye, versors ori) {
*/
CGLM_INLINE
versors
glms_quat_for(vec3s dir, vec3s up) {
glms_quat_(for)(vec3s dir, vec3s up) {
versors dest;
glm_quat_for(dir.raw, up.raw, dest.raw);
return dest;
@@ -494,7 +497,7 @@ glms_quat_for(vec3s dir, vec3s up) {
*/
CGLM_INLINE
versors
glms_quat_forp(vec3s from, vec3s to, vec3s up) {
glms_quat_(forp)(vec3s from, vec3s to, vec3s up) {
versors dest;
glm_quat_forp(from.raw, to.raw, up.raw, dest.raw);
return dest;
@@ -509,7 +512,7 @@ glms_quat_forp(vec3s from, vec3s to, vec3s up) {
*/
CGLM_INLINE
vec3s
glms_quat_rotatev(versors q, vec3s v) {
glms_quat_(rotatev)(versors q, vec3s v) {
vec3s dest;
glm_quat_rotatev(q.raw, v.raw, dest.raw);
return dest;
@@ -524,7 +527,7 @@ glms_quat_rotatev(versors q, vec3s v) {
*/
CGLM_INLINE
mat4s
glms_quat_rotate(mat4s m, versors q) {
glms_quat_(rotate)(mat4s m, versors q) {
glm_quat_rotate(m.raw, q.raw, m.raw);
return m;
}
@@ -538,7 +541,7 @@ glms_quat_rotate(mat4s m, versors q) {
*/
CGLM_INLINE
mat4s
glms_quat_rotate_at(mat4s m, versors q, vec3s pivot) {
glms_quat_(rotate_at)(mat4s m, versors q, vec3s pivot) {
glm_quat_rotate_at(m.raw, q.raw, pivot.raw);
return m;
}
@@ -556,7 +559,7 @@ glms_quat_rotate_at(mat4s m, versors q, vec3s pivot) {
*/
CGLM_INLINE
mat4s
glms_quat_rotate_atm(versors q, vec3s pivot) {
glms_quat_(rotate_atm)(versors q, vec3s pivot) {
mat4s dest;
glm_quat_rotate_atm(dest.raw, q.raw, pivot.raw);
return dest;