#ifndef SOFA_UTIL_H
#define SOFA_UTIL_H
#include <stdint.h>
#include <stdio.h>
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
typedef uint64_t u64;
typedef int8_t i8;
typedef int16_t i16;
typedef int32_t i32;
typedef int64_t i64;
typedef intptr_t isize;
typedef size_t usize;
typedef enum {
false = 0,
true
} bool;
typedef struct {
i64 x;
i64 y;
} v2i;
#define VI(x, y) (v2i){x, y}
#define ERROR(msg) fprintf(stderr, "ERROR %s: %s\n", __FILE__, msg);
#define WARN(msg) fprintf(stderr, "WARN %s: %s\n", __FILE__, msg);
#define INFO(msg) fprintf(stderr, "INFO %s: %s\n", __FILE__, msg);
#define TRACE(msg) fprintf(stderr, "TRACE %s: %s\n", __FILE__, msg);
#endif