#pragma once #include #include #include #include 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