From cc0fb7c1ea7d7cc2bc5d8766b18b190ba74b70f9 Mon Sep 17 00:00:00 2001 From: SzGaa <63298278+SzGaa@users.noreply.github.com> Date: Thu, 4 May 2023 05:50:48 +0200 Subject: [PATCH] constexpr LEVELS for easier custom level usage (#483) Usage of C++20's new constexpr functionalities for easier usage of custom LEVELS! Modified: * With C++20 LEVELS's constructor can have a constexpr specifier * const LEVELS can be replaced to be constexpr's instead --- src/g3log/loglevels.hpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/g3log/loglevels.hpp b/src/g3log/loglevels.hpp index 4ffa4f2..1ddfc63 100644 --- a/src/g3log/loglevels.hpp +++ b/src/g3log/loglevels.hpp @@ -34,6 +34,10 @@ struct LEVELS { // "dynamic, runtime loading of shared libraries" LEVELS(const LEVELS& other): value(other.value), text(other.text.c_str()) {} + + #if __cplusplus >= 202002L + constexpr + #endif LEVELS(int id, const std::string& idtext) : value(id), text(idtext) {} bool operator==(const LEVELS& rhs) const { @@ -90,11 +94,15 @@ namespace g3 { static const int kInternalFatalValue = 2000; } // g3 - -const LEVELS G3LOG_DEBUG{g3::kDebugValue, {"DEBUG"}}, - INFO {g3::kInfoValue, {"INFO"}}, - WARNING {g3::kWarningValue, {"WARNING"}}, - FATAL {g3::kFatalValue, {"FATAL"}}; +#if __cplusplus >= 202002L + constexpr +#else + const +#endif +LEVELS G3LOG_DEBUG{g3::kDebugValue, "DEBUG"}, + INFO {g3::kInfoValue, "INFO"}, + WARNING {g3::kWarningValue, "WARNING"}, + FATAL {g3::kFatalValue, "FATAL"}; @@ -129,7 +137,12 @@ namespace g3 { namespace g3 { namespace internal { - const LEVELS CONTRACT {g3::kInternalFatalValue, {"CONTRACT"}}, + #if __cplusplus >= 202002L + constexpr + #else + const + #endif + LEVELS CONTRACT {g3::kInternalFatalValue, {"CONTRACT"}}, FATAL_SIGNAL {g3::kInternalFatalValue + 1, {"FATAL_SIGNAL"}}, FATAL_EXCEPTION {kInternalFatalValue + 2, {"FATAL_EXCEPTION"}};