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,10 +97,10 @@ glms_aabb_crop(vec3s box[2], vec3s cropBox[2], vec3s dest[2]) {
*/
CGLM_INLINE
void
glms_aabb_crop_until(vec3s box[2],
vec3s cropBox[2],
vec3s clampBox[2],
vec3s dest[2]) {
glms_aabb_(crop_until)(vec3s box[2],
vec3s cropBox[2],
vec3s clampBox[2],
vec3s dest[2]) {
glms_aabb_crop(box, cropBox, dest);
glms_aabb_merge(clampBox, dest, dest);
}
@@ -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];