#pragma once #include <cstdlib> #include <print> #include <stacktrace> #include <string> namespace kuiper { #define KUIPER_ASSERT(cond) \ if (!(cond)) { \ std::println(stderr, "Assertion failed at: {}", __PRETTY_FUNCTION__); \ std::abort(); \ } #define KUIPER_ASSERT_STACKTRACE(cond) \ if (!(cond)) { \ const auto trace = std::stacktrace::current(); \ std::println(stderr, "Assertion failed at: {}", __PRETTY_FUNCTION__); \ std::println(stderr, "{}", std::to_string(trace)); \ std::abort(); \ } } // namespace kuiper