// // Created by n0ffie on 07/02/25. // #ifndef TYPES_H #define TYPES_H #ifdef __cplusplus extern "C" { #endif #include #include #include /* * 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; typedef bool boolean; /* * 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