#ifndef PROTOTYPE1_SRC_CORE_INT_PRIMITIVES_H
#define PROTOTYPE1_SRC_CORE_INT_PRIMITIVES_H

#include <stdint.h>
#include <stddef.h>
#include <stdbool.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;

// todo: move these to util (l1) template instantiation too
#define int_minmax_function_Definition(T) \
T MIN_##T (T a, T b){ return a < b ? a : b; } \
T MAX_##T (T a, T b){ return a < b ? b : a; }

int_minmax_function_Definition(U8)
int_minmax_function_Definition(U32)
int_minmax_function_Definition(S32)
int_minmax_function_Definition(U64)
int_minmax_function_Definition(S64)
int_minmax_function_Definition(float)
int_minmax_function_Definition(double)

#endif
