aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/util/log.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/util/log.h')
-rw-r--r--src/crepe/util/log.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/crepe/util/log.h b/src/crepe/util/log.h
new file mode 100644
index 0000000..308ba96
--- /dev/null
+++ b/src/crepe/util/log.h
@@ -0,0 +1,40 @@
+#pragma once
+
+// allow user to disable debug macros
+#ifndef CREPE_DISABLE_MACROS
+
+#include "color.h"
+
+// utility macros
+#define _crepe_logf_here(level, format, ...) \
+ crepe::util::logf( \
+ level, "%s" format, \
+ crepe::util::LogColor().fg_white(false).fmt( \
+ "%s (%s:%d)", __PRETTY_FUNCTION__, __FILE_NAME__, __LINE__), \
+ __VA_ARGS__)
+
+// very illegal global function-style macros
+// NOLINTBEGIN
+#define dbg_logf(fmt, ...) \
+ _crepe_logf_here(crepe::util::LogLevel::DEBUG, ": " fmt, __VA_ARGS__)
+#define dbg_log(str) \
+ _crepe_logf_here(crepe::util::LogLevel::DEBUG, "%s: " str, "")
+#define dbg_trace() _crepe_logf_here(crepe::util::LogLevel::TRACE, "%s", "")
+// NOLINTEND
+
+#endif
+
+namespace crepe::util {
+
+enum LogLevel {
+ TRACE,
+ DEBUG,
+ INFO,
+ WARNING,
+ ERROR,
+};
+
+void logf(const char * fmt, ...);
+void logf(enum LogLevel level, const char * fmt, ...);
+
+} // namespace crepe::util