199 lines
2.7 KiB
C
199 lines
2.7 KiB
C
|
/* date = April 26th 2023 4:55 pm */
|
||
|
|
||
|
#ifndef VN_TYPES_H
|
||
|
#define VN_TYPES_H
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <intrin.h>
|
||
|
#include <stdarg.h>
|
||
|
|
||
|
typedef uint8_t u8;
|
||
|
typedef uint16_t u16;
|
||
|
typedef uint32_t u32;
|
||
|
typedef uint64_t u64;
|
||
|
typedef int8_t s8;
|
||
|
typedef int16_t s16;
|
||
|
typedef int32_t s32;
|
||
|
typedef int64_t s64;
|
||
|
typedef float r32;
|
||
|
typedef double r64;
|
||
|
typedef u8 b8;
|
||
|
typedef u16 b16;
|
||
|
typedef u32 b32;
|
||
|
typedef uintptr_t umm;
|
||
|
typedef intptr_t smm;
|
||
|
|
||
|
#define U8_Min 0x00
|
||
|
#define U8_Max 0xFF
|
||
|
#define U16_Min 0x0000
|
||
|
#define U16_Max 0xFFFF
|
||
|
#define U32_Min 0x00000000
|
||
|
#define U32_Max 0xFFFFFFFF
|
||
|
#define U64_Min 0x0000000000000000
|
||
|
#define U64_Max 0xFFFFFFFFFFFFFFFF
|
||
|
#define S8_Min 0x80
|
||
|
#define S8_Max 0x7F
|
||
|
#define S16_Min 0x8000
|
||
|
#define S16_Max 0x7FFF
|
||
|
#define S32_Min 0x80000000
|
||
|
#define S32_Max 0x7FFFFFFF
|
||
|
#define S64_Min 0x8000000000000000
|
||
|
#define S64_Max 0x7FFFFFFFFFFFFFFF
|
||
|
|
||
|
struct string
|
||
|
{
|
||
|
s64 Count;
|
||
|
u8 *Data;
|
||
|
};
|
||
|
|
||
|
struct string16
|
||
|
{
|
||
|
s64 Count;
|
||
|
s16 *Data;
|
||
|
};
|
||
|
|
||
|
typedef string buffer;
|
||
|
typedef string16 buffer16;
|
||
|
|
||
|
#define StrLit(String) MakeString(String, ArrayCount(String) - 1)
|
||
|
#define Str16Lit(String) MakeString16(String, ArrayCount(String) - 1)
|
||
|
|
||
|
inline string MakeString(char *Data, s64 Count)
|
||
|
{
|
||
|
string Result = {Count, (u8 *)Data};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
inline string MakeString16(wchar_t *Data, s64 Count)
|
||
|
{
|
||
|
string Result = {Count, (u8 *)Data};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
struct v2s
|
||
|
{
|
||
|
s32 x, y;
|
||
|
};
|
||
|
|
||
|
inline v2s V2S(s32 x, s32 y)
|
||
|
{
|
||
|
v2s Result = {x, y};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
struct v2u
|
||
|
{
|
||
|
u32 x, y;
|
||
|
};
|
||
|
|
||
|
inline v2u V2U(u32 x, u32 y)
|
||
|
{
|
||
|
v2u Result = {x, y};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
struct v2
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
r32 x, y;
|
||
|
};
|
||
|
r32 E[2];
|
||
|
};
|
||
|
};
|
||
|
|
||
|
inline v2 V2(r32 x, r32 y)
|
||
|
{
|
||
|
v2 Result = {x, y};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
inline v2 V2(v2s V)
|
||
|
{
|
||
|
v2 Result = {(r32)V.x, (r32)V.y};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
struct v3
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
r32 x, y, z;
|
||
|
};
|
||
|
struct
|
||
|
{
|
||
|
r32 r, g, b;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
inline v3 V3(r32 x, r32 y, r32 z)
|
||
|
{
|
||
|
v3 Result = {x, y, z};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
struct v4
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
r32 x, y, z, w;
|
||
|
};
|
||
|
struct
|
||
|
{
|
||
|
r32 r, g, b, a;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
inline v4 V4(r32 x, r32 y, r32 z, r32 w)
|
||
|
{
|
||
|
v4 Result = {x, y, z, w};
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
enum axis2
|
||
|
{
|
||
|
Axis2_X,
|
||
|
Axis2_Y,
|
||
|
Axis2_Count,
|
||
|
};
|
||
|
|
||
|
inline axis2 Opposite(axis2 Axis)
|
||
|
{
|
||
|
axis2 Result = (axis2)(!(u32)Axis);
|
||
|
return(Result);
|
||
|
}
|
||
|
|
||
|
struct range_s64
|
||
|
{
|
||
|
s64 Min;
|
||
|
s64 Max;
|
||
|
};
|
||
|
|
||
|
struct range_r32
|
||
|
{
|
||
|
r32 Min;
|
||
|
r32 Max;
|
||
|
};
|
||
|
|
||
|
struct range2_r32
|
||
|
{
|
||
|
v2 Min;
|
||
|
v2 Max;
|
||
|
};
|
||
|
|
||
|
struct ticket_mutex
|
||
|
{
|
||
|
u64 volatile Ticket;
|
||
|
u64 volatile Serving;
|
||
|
};
|
||
|
|
||
|
#endif //VN_TYPES_H
|