#pragma once

#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>
#include <math.h>

#define NELEM(a)	(sizeof(a) / sizeof((a)[0]))

#define U8(value)	((u8) (value))
#define U16(value)	((u16) (value))
#define U32(value)	((u32) (value))
#define U64(value)	((u64) (value))

#define S8(value)	((s8) (value))
#define S16(value)	((s16) (value))
#define S32(value)	((s32) (value))
#define S64(value)	((s64) (value))

typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u24;
typedef uint32_t u32;
typedef uint64_t u64;

typedef int8_t s8;
typedef int16_t s16;
typedef int32_t s24;
typedef int32_t s32;
typedef int64_t s64;

typedef enum { shark_false, shark_true } shark_bool;

#define abs(x) (((x)>0)?(x):-(x))
#define MAX(x, y) ((x)>(y)?(x):(y))

#ifndef   __INLINE
  #define __INLINE                               __inline
#endif

