#pragma once #include #define BARK_ASSERT(x) \ do { \ if (!(x)) { \ fprintf(stderr, "BARK_ASSERT: %s:%d: %s\n", __FILE__, __LINE__, #x); \ abort(); \ } \ } while (0) static const size_t MB = 4*1024*1024; template static void read_safe(std::ifstream& infile, T& dest) { infile.read((char*)& dest, sizeof(T)); } static size_t utf8_len(char src) { const size_t lookup[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4}; uint8_t highbits = static_cast(src) >> 4; return lookup[highbits]; }