Browse Source

Workaround -Wunused-but-set-variable in Y_DBGTRACE macro

thegeorg 1 year ago
parent
commit
d61cfa00fc
1 changed files with 24 additions and 36 deletions
  1. 24 36
      util/stream/trace.h

+ 24 - 36
util/stream/trace.h

@@ -1,6 +1,7 @@
 #pragma once
 
 #include "debug.h"
+#include <util/system/defaults.h>
 
 /**
  * Debug level, as set via `DBGOUT` environment variable.
@@ -19,42 +20,29 @@ enum ETraceLevel: ui8 {
     #define Y_ENABLE_TRACE
 #endif
 
-#ifdef Y_ENABLE_TRACE
-
-    /**
-     * Writes the given data into standard debug stream if current debug level set
-     * via `DBGOUT` environment variable permits it.
-     *
-     * Does nothing in release builds unless `Y_ENABLE_TRACE` is defined.
-     *
-     * Example usage:
-     * @code
-     * Y_DBGTRACE(DEBUG, "Advance from " << node1 << " to " << node2);
-     * @endcode
-     *
-     * @param elevel                        Debug level of this trace command, e.g.
-     *                                      `WARN` or `DEBUG`. Basically a suffix of
-     *                                      one of the values of `ETraceLevel` enum.
-     * @param args                          Argument chain to be written out into
-     *                                      standard debug stream, joined with `<<`
-     *                                      operator.
-     * @see ETraceLevel
-     */
-    #define Y_DBGTRACE(elevel, args) Y_DBGTRACE0(int(TRACE_##elevel), args)
-    #define Y_DBGTRACE0(level, args)            \
-        do                                      \
+/**
+ * Writes the given data into standard debug stream if current debug level set
+ * via `DBGOUT` environment variable permits it.
+ *
+ * Example usage:
+ * @code
+ * Y_DBGTRACE(DEBUG, "Advance from " << node1 << " to " << node2);
+ * @endcode
+ *
+ * @param elevel                        Debug level of this trace command, e.g.
+ *                                      `WARN` or `DEBUG`. Basically a suffix of
+ *                                      one of the values of `ETraceLevel` enum.
+ * @param args                          Argument chain to be written out into
+ *                                      standard debug stream, joined with `<<`
+ *                                      operator.
+ * @see ETraceLevel
+ */
+#define Y_DBGTRACE(elevel, args) Y_DBGTRACE0(int(TRACE_##elevel), args)
+#define Y_DBGTRACE0(level, args)                \
+    do {                                        \
+        if constexpr (Y_IS_DEBUG_BUILD) {       \
             if ((level) <= StdDbgLevel()) {     \
                 StdDbgStream() << args << Endl; \
             }                                   \
-        while (false)
-
-#else
-
-    #define Y_DBGTRACE(elevel, args) \
-        do {                         \
-        } while (false)
-    #define Y_DBGTRACE0(level, args) \
-        do {                         \
-        } while (false)
-
-#endif
+        }                                       \
+    } while (false)