#pragma once
#ifdef JORMUNGANDR
#include <source_location>
#include <stdexcept>
#include <fmt/format.h>
#define slp_assert(condition) \
do { \
if (!(condition)) { \
auto location = std::source_location::current(); \
throw std::invalid_argument(fmt::format( \
"{}:{}: {}: Assertion `{}' failed.", location.file_name(), \
location.line(), location.function_name(), #condition)); \
} \
} while (0);
#else
#include <cassert>
#define slp_assert(condition) assert(condition)
#endif