#pragma once #include #include #ifdef NDEBUG # define RENDERIVE_ASSERT(condition, message) ((void)0) #else # define RENDERIVE_ASSERT(condition, message) \ do { \ if (!(condition)) { \ std::cerr << "Assertion failed: " << message \ << "\nFile: " << __FILE__ \ << "\nLine: " << __LINE__ \ << std::endl; \ throw std::runtime_error(message); \ } \ } \ while (0) #endif #ifndef ASSERT # define ASSERT(condition, message) RENDERIVE_ASSERT(condition, message) #endif