Prechádzať zdrojové kódy

AK: Add outln_if and warnln_if

This uses the same gating mechanism as dbgln_if and should be equivalent
to #define flag etc
Hendiadyoin1 4 rokov pred
rodič
commit
2e11b2d35a
1 zmenil súbory, kde vykonal 17 pridanie a 1 odobranie
  1. 17 1
      AK/Format.h

+ 17 - 1
AK/Format.h

@@ -384,13 +384,29 @@ void outln(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... par
 
 inline void outln() { outln(stdout); }
 
+#    define outln_if(flag, fmt, ...)       \
+        do {                               \
+            if constexpr (flag)            \
+                outln(fmt, ##__VA_ARGS__); \
+        } while (0)
+
 template<typename... Parameters>
-void warn(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters) { out(stderr, move(fmtstr), parameters...); }
+void warn(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
+{
+    out(stderr, move(fmtstr), parameters...);
+}
 
 template<typename... Parameters>
 void warnln(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters) { outln(stderr, move(fmtstr), parameters...); }
 
 inline void warnln() { outln(stderr); }
+
+#    define warnln_if(flag, fmt, ...)      \
+        do {                               \
+            if constexpr (flag)            \
+                outln(fmt, ##__VA_ARGS__); \
+        } while (0)
+
 #endif
 
 void vdbgln(StringView fmtstr, TypeErasedFormatParams);