refactor: convert lt_assert from macro to variadic template function
This commit is contained in:
parent
ae336e3bba
commit
e1fdeb2692
3 changed files with 27 additions and 9 deletions
|
@ -12,13 +12,25 @@ struct FailedAssertion: std::exception
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define lt_assert(x, ...) \
|
|
||||||
{ \
|
template<typename Expression_T, typename... Args>
|
||||||
if (!(x)) \
|
constexpr void lt_assert(Expression_T &&expression, std::format_string<Args...> fmt, Args &&...args)
|
||||||
{ \
|
{
|
||||||
log_crt(__VA_ARGS__); \
|
if (!static_cast<bool>(expression))
|
||||||
throw ::lt::FailedAssertion(__FILE__, __LINE__); \
|
{
|
||||||
} \
|
Logger::log(LogLvl::critical, fmt, std::forward<Args>(args)...);
|
||||||
|
throw ::lt::FailedAssertion(__FILE__, __LINE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename Expression_T>
|
||||||
|
constexpr void lt_assert(Expression_T &&expression, const char *message)
|
||||||
|
{
|
||||||
|
if (!static_cast<bool>(expression))
|
||||||
|
{
|
||||||
|
Logger::log(LogLvl::critical, message);
|
||||||
|
throw ::lt::FailedAssertion(__FILE__, __LINE__);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace lt
|
} // namespace lt
|
||||||
|
|
|
@ -12,8 +12,8 @@ try
|
||||||
|
|
||||||
application = lt::create_application();
|
application = lt::create_application();
|
||||||
|
|
||||||
lt_assert(application, "Failed to create application");
|
lt::lt_assert(application, "Failed to create application");
|
||||||
lt_assert(application->sanity_check(), "Failed to verify the sanity of the application");
|
lt::lt_assert(application->sanity_check(), "Failed to verify the sanity of the application");
|
||||||
|
|
||||||
application->game_loop();
|
application->game_loop();
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,12 @@ public:
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void static log(LogLvl lvl, const char *message)
|
||||||
|
{
|
||||||
|
instance().spd_logger->log((spdlog::level::level_enum)lvl, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Logger();
|
Logger();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue