Program Listing for File Assert.hpp¶
↰ Return to documentation for file (src/rdf4cpp/Assert.hpp)
#ifndef RDF4CPP_ASSERT_HPP
#define RDF4CPP_ASSERT_HPP
#include <iostream>
#include <format>
#ifdef NDEBUG
#define RDF4CPP_ASSERT(expr) \
if (!(expr)) [[unlikely]] { \
std::cerr << std::format("Assertion failed: {} ({}:{})", #expr, __FILE__, __LINE__); \
std::abort(); \
}
#define RDF4CPP_UNREACHABLE \
std::cerr << std::format("Unreachable statement reached ({}:{})", __FILE__, __LINE__); \
std::abort();
#define RDF4CPP_DEBUG_UNREACHABLE(...) return __VA_ARGS__
#else
#define RDF4CPP_ASSERT(expr) assert(expr)
#define RDF4CPP_UNREACHABLE assert(false)
#define RDF4CPP_DEBUG_UNREACHABLE(...) assert(false)
#endif
#define RDF4CPP_DEBUG_ASSERT(expr) assert(expr)
#endif //RDF4CPP_ASSERT_HPP