#pragma once

typedef unsigned char      u8;
typedef unsigned short     u16;
typedef unsigned int       u32;
typedef unsigned long long u64;

typedef signed char      s8;
typedef signed short     s16;
typedef signed int       s32;
typedef signed long long s64;

typedef char  c8;
typedef short c16;

#define true  1
#define false 0

typedef u8 bool;

#if __SIZEOF_POINTER__ == 4
	typedef u32 uptr;
	typedef s32 sptr;
#elif __SIZEOF_POINTER__ == 8
	typedef u64 uptr;
	typedef s64 sptr;
#else
	#error What the fuck? [pointers are not 4 or 8 bytes long]
#endif

/// Null may become part of the nullptr type, so it's defined here
#define NULL 0