From a2ccff1c9b4d8f1352d8f26991cc92860310b842 Mon Sep 17 00:00:00 2001
From: kongr45gpen <electrovesta@gmail.com>
Date: Wed, 14 Aug 2019 00:12:37 +0300
Subject: [PATCH] Use a constexpr function instead of a #define to check if a
 log level is loggable

Thanks @xlxs41 for the suggestion!
---
 inc/Logger.hpp | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/inc/Logger.hpp b/inc/Logger.hpp
index 48a3ab19..f1319550 100644
--- a/inc/Logger.hpp
+++ b/inc/Logger.hpp
@@ -24,14 +24,6 @@
 #define LOGLEVEL Logger::disabled // Ignore-MISRA
 #endif
 
-/**
- * Internal define to check if logging is enabled for a level
- * @param level A log level
- * @return bool
- */
-#define _ac_LOGGER_ENABLED_LEVEL(level) /* Ignore-MISRA */ \
-	(( (Logger::LogLevelType) LOGLEVEL) <= ( (Logger::LogLevelType) level))
-
 /**
  * Create a stream to log a Message
  *
@@ -79,7 +71,7 @@
  * @param level The log level. A value of \ref Logger::LogEntry
  */
 #define LOG(level)  /* Ignore-MISRA */ \
-    if (_ac_LOGGER_ENABLED_LEVEL(level)) \
+    if (Logger::isLogged(level)) \
         if (Logger::LogEntry entry(level); true) \
             entry
 
@@ -147,6 +139,15 @@ public:
 		LogEntry(LogEntry const&) = delete; ///< Unimplemented copy constructor
 	};
 
+	/**
+	 * Returns whether a log entry of level \p level is logged, based on the compilation constants
+	 * @param level The level of the log entry
+	 * @return True if the logging is enabled for \p level, false if not
+	 */
+	static constexpr bool isLogged(LogLevelType level) {
+		return static_cast<LogLevelType>(LOGLEVEL) <= level;
+	}
+
 	/**
 	 * Store a new log message
 	 */
-- 
GitLab