module dlib.aliases;

import core.memory;
import std.stdint;
import dlib.math;

debug
{
	const BUILD_DEBUG = true;
}
else
{
	const BUILD_DEBUG = false;
}

alias i8 = byte;
alias i16 = short;
alias i32 = int;
alias i64 = long;

alias u8 = ubyte;
alias u16 = ushort;
alias u32 = uint;
alias u64 = ulong;

alias f32 = float;
alias f64 = double;

alias b32 = uint;

alias intptr = i64;
alias uintptr = u64;

alias usize = size_t;

alias Vec2 = Vector!(f32, 2);
alias Vec3 = Vector!(f32, 3);
alias Vec4 = Vector!(f32, 4);

alias DVec2 = Vector!(f64, 2);
alias DVec3 = Vector!(f64, 3);
alias DVec4 = Vector!(f64, 4);

alias IVec2 = Vector!(i32, 2);
alias IVec3 = Vector!(i32, 3);
alias IVec4 = Vector!(i32, 4);

alias I8Vec2 = Vector!(i8, 2);
alias I8Vec3 = Vector!(i8, 3);
alias I8Vec4 = Vector!(i8, 4);

alias I16Vec2 = Vector!(i16, 2);
alias I16Vec3 = Vector!(i16, 3);
alias I16Vec4 = Vector!(i16, 4);

alias I32Vec2 = IVec2;
alias I32Vec3 = IVec3;
alias I32Vec4 = IVec4;

alias I64Vec2 = Vector!(i64, 2);
alias I64Vec3 = Vector!(i64, 3);
alias I64Vec4 = Vector!(i64, 4);

alias UVec2 = Vector!(u32, 2);
alias UVec3 = Vector!(u32, 3);
alias UVec4 = Vector!(u32, 4);

alias U8Vec2 = Vector!(u8, 2);
alias U8Vec3 = Vector!(u8, 3);
alias U8Vec4 = Vector!(u8, 4);

alias U16Vec2 = Vector!(u16, 2);
alias U16Vec3 = Vector!(u16, 3);
alias U16Vec4 = Vector!(u16, 4);

alias U32Vec2 = UVec2;
alias U32Vec3 = UVec3;
alias U32Vec4 = UVec4;

alias U64Vec2 = Vector!(u64, 2);
alias U64Vec3 = Vector!(u64, 3);
alias U64Vec4 = Vector!(u64, 4);

alias Mat2 = Matrix!(f32, 2);
alias Mat3 = Matrix!(f32, 3);
alias Mat4 = Matrix!(f32, 4);

alias DMat2 = Matrix!(f64, 2);
alias DMat3 = Matrix!(f64, 3);
alias DMat4 = Matrix!(f64, 4);
