#ifndef _TYPES
#define _TYPES

#include "stdint.h"
#include "stddef.h"

typedef int_fast8_t  i8;
typedef int_fast16_t i16;
typedef int_fast32_t i32;
typedef int_fast64_t i64;
typedef uint_fast8_t  u8;
typedef uint_fast16_t u16;
typedef uint_fast32_t u32;
typedef uint_fast64_t u64;
typedef size_t        usize;

typedef enum Result {
    R_Ok = 0,
    R_Err,
    R_Invalid,
    R_Uninitialized,
    R_OutOfBounds,
    R_PRIVATE
} Result;

#define RETURN_NOTOK(x) { Result r = x; if (R_Ok != r) return r; }

#define   B(x) ((x) * 8)
#define KiB(x) ((x) * 1024)
#define MiB(x) ((x) * 1048576)
#define GiB(x) ((x) * 1073741824)

#endif /* _TYPES */
