98 lines
2.8 KiB
C
98 lines
2.8 KiB
C
//
|
|
// Created by n0ffie on 07/02/25.
|
|
//
|
|
|
|
#ifndef TYPES_H
|
|
#define TYPES_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
/*
|
|
* Basic types
|
|
*
|
|
* u8 - unsigned 8-bit integer
|
|
* u16 - unsigned 16-bit integer
|
|
* u32 - unsigned 32-bit integer
|
|
* u64 - unsigned 64-bit integer
|
|
*
|
|
* i8 - signed 8-bit integer
|
|
* i16 - signed 16-bit integer
|
|
* i32 - signed 32-bit integer
|
|
* i64 - signed 64-bit integer
|
|
*
|
|
* f32 - 32-bit floating point number
|
|
* f64 - 64-bit floating point number
|
|
*
|
|
* usx - unsigned size_t
|
|
* isx - signed size_t
|
|
*/
|
|
typedef uint64_t u64;
|
|
typedef uint32_t u32;
|
|
typedef uint16_t u16;
|
|
typedef uint8_t u8;
|
|
|
|
typedef int64_t i64;
|
|
typedef int32_t i32;
|
|
typedef int16_t i16;
|
|
typedef int8_t i8;
|
|
|
|
typedef float f32;
|
|
typedef double f64;
|
|
|
|
typedef size_t usx;
|
|
typedef ptrdiff_t isx;
|
|
|
|
/*
|
|
* Vectors and Matrices
|
|
*/
|
|
#define ALYSON_DEFINE_VECTOR2_TYPE(type, ...) typedef struct { type x; type y; } __VA_ARGS__
|
|
#define ALYSON_DEFINE_VECTOR3_TYPE(type, ...) typedef struct { type x; type y; type z; } __VA_ARGS__
|
|
#define ALYSON_DEFINE_VECTOR4_TYPE(type, ...) typedef struct { type x; type y; type z; type w; } __VA_ARGS__
|
|
|
|
ALYSON_DEFINE_VECTOR2_TYPE(f32, vec2, vec2f);
|
|
ALYSON_DEFINE_VECTOR3_TYPE(f32, vec3, vec3f);
|
|
ALYSON_DEFINE_VECTOR4_TYPE(f32, vec4, vec4f);
|
|
|
|
ALYSON_DEFINE_VECTOR2_TYPE(f64, vecd2);
|
|
ALYSON_DEFINE_VECTOR3_TYPE(f64, vecd3);
|
|
ALYSON_DEFINE_VECTOR4_TYPE(f64, vecd4);
|
|
|
|
ALYSON_DEFINE_VECTOR2_TYPE(i32, veci2);
|
|
ALYSON_DEFINE_VECTOR3_TYPE(i32, veci3);
|
|
ALYSON_DEFINE_VECTOR4_TYPE(i32, veci4);
|
|
|
|
ALYSON_DEFINE_VECTOR2_TYPE(u32, uveci2);
|
|
ALYSON_DEFINE_VECTOR3_TYPE(u32, uveci3);
|
|
ALYSON_DEFINE_VECTOR4_TYPE(u32, uveci4);
|
|
|
|
#define ALYSON_DEFINE_MATRIX_2x2_TYPE(type, ...) typedef struct { type m00; type m01; type m10; type m11; } __VA_ARGS__
|
|
#define ALYSON_DEFINE_MATRIX_3x3_TYPE(type, ...) typedef struct { type m00; type m01; type m02; type m10; type m11; type m12; type m20; type m21; type m22; } __VA_ARGS__
|
|
#define ALYSON_DEFINE_MATRIX_4x4_TYPE(type, ...) typedef struct { type m00; type m01; type m02; type m03; type m10; type m11; type m12; type m13; type m20; type m21; type m22; type m23; type m30; type m31; type m32; type m33; } __VA_ARGS__
|
|
|
|
ALYSON_DEFINE_MATRIX_2x2_TYPE(f32, mat2, fmat2);
|
|
ALYSON_DEFINE_MATRIX_3x3_TYPE(f32, mat3, fmat3);
|
|
ALYSON_DEFINE_MATRIX_4x4_TYPE(f32, mat4, fmat4);
|
|
|
|
ALYSON_DEFINE_MATRIX_2x2_TYPE(f64, dmat2);
|
|
ALYSON_DEFINE_MATRIX_3x3_TYPE(f64, dmat3);
|
|
ALYSON_DEFINE_MATRIX_4x4_TYPE(f64, dmat4);
|
|
|
|
ALYSON_DEFINE_MATRIX_2x2_TYPE(i32, imat2);
|
|
ALYSON_DEFINE_MATRIX_3x3_TYPE(i32, imat3);
|
|
ALYSON_DEFINE_MATRIX_4x4_TYPE(i32, imat4);
|
|
|
|
ALYSON_DEFINE_MATRIX_2x2_TYPE(u32, umat2);
|
|
ALYSON_DEFINE_MATRIX_3x3_TYPE(u32, umat3);
|
|
ALYSON_DEFINE_MATRIX_4x4_TYPE(u32, umat4);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //TYPES_H
|