summaryrefslogtreecommitdiffstats
path: root/src/common/logging/filter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/logging/filter.cpp')
-rw-r--r--src/common/logging/filter.cpp132
1 files changed, 130 insertions, 2 deletions
diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp
index 20a2dd106..4f2cc29e1 100644
--- a/src/common/logging/filter.cpp
+++ b/src/common/logging/filter.cpp
@@ -3,7 +3,6 @@
// Refer to the license.txt file included.
#include <algorithm>
-#include "common/logging/backend.h"
#include "common/logging/filter.h"
#include "common/string_util.h"
@@ -22,7 +21,7 @@ Level GetLevelByName(const It begin, const It end) {
template <typename It>
Class GetClassByName(const It begin, const It end) {
- for (ClassType i = 0; i < static_cast<ClassType>(Class::Count); ++i) {
+ for (u8 i = 0; i < static_cast<u8>(Class::Count); ++i) {
const char* level_name = GetLogClassName(static_cast<Class>(i));
if (Common::ComparePartialString(begin, end, level_name)) {
return static_cast<Class>(i);
@@ -62,6 +61,135 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
}
} // Anonymous namespace
+/// Macro listing all log classes. Code should define CLS and SUB as desired before invoking this.
+#define ALL_LOG_CLASSES() \
+ CLS(Log) \
+ CLS(Common) \
+ SUB(Common, Filesystem) \
+ SUB(Common, Memory) \
+ CLS(Core) \
+ SUB(Core, ARM) \
+ SUB(Core, Timing) \
+ CLS(Config) \
+ CLS(Debug) \
+ SUB(Debug, Emulated) \
+ SUB(Debug, GPU) \
+ SUB(Debug, Breakpoint) \
+ SUB(Debug, GDBStub) \
+ CLS(Kernel) \
+ SUB(Kernel, SVC) \
+ CLS(Service) \
+ SUB(Service, ACC) \
+ SUB(Service, Audio) \
+ SUB(Service, AM) \
+ SUB(Service, AOC) \
+ SUB(Service, APM) \
+ SUB(Service, ARP) \
+ SUB(Service, BCAT) \
+ SUB(Service, BPC) \
+ SUB(Service, BGTC) \
+ SUB(Service, BTDRV) \
+ SUB(Service, BTM) \
+ SUB(Service, Capture) \
+ SUB(Service, ERPT) \
+ SUB(Service, ETicket) \
+ SUB(Service, EUPLD) \
+ SUB(Service, Fatal) \
+ SUB(Service, FGM) \
+ SUB(Service, Friend) \
+ SUB(Service, FS) \
+ SUB(Service, GRC) \
+ SUB(Service, HID) \
+ SUB(Service, IRS) \
+ SUB(Service, LBL) \
+ SUB(Service, LDN) \
+ SUB(Service, LDR) \
+ SUB(Service, LM) \
+ SUB(Service, Migration) \
+ SUB(Service, Mii) \
+ SUB(Service, MM) \
+ SUB(Service, NCM) \
+ SUB(Service, NFC) \
+ SUB(Service, NFP) \
+ SUB(Service, NIFM) \
+ SUB(Service, NIM) \
+ SUB(Service, NPNS) \
+ SUB(Service, NS) \
+ SUB(Service, NVDRV) \
+ SUB(Service, OLSC) \
+ SUB(Service, PCIE) \
+ SUB(Service, PCTL) \
+ SUB(Service, PCV) \
+ SUB(Service, PM) \
+ SUB(Service, PREPO) \
+ SUB(Service, PSC) \
+ SUB(Service, PSM) \
+ SUB(Service, SET) \
+ SUB(Service, SM) \
+ SUB(Service, SPL) \
+ SUB(Service, SSL) \
+ SUB(Service, TCAP) \
+ SUB(Service, Time) \
+ SUB(Service, USB) \
+ SUB(Service, VI) \
+ SUB(Service, WLAN) \
+ CLS(HW) \
+ SUB(HW, Memory) \
+ SUB(HW, LCD) \
+ SUB(HW, GPU) \
+ SUB(HW, AES) \
+ CLS(IPC) \
+ CLS(Frontend) \
+ CLS(Render) \
+ SUB(Render, Software) \
+ SUB(Render, OpenGL) \
+ SUB(Render, Vulkan) \
+ CLS(Audio) \
+ SUB(Audio, DSP) \
+ SUB(Audio, Sink) \
+ CLS(Input) \
+ CLS(Network) \
+ CLS(Loader) \
+ CLS(CheatEngine) \
+ CLS(Crypto) \
+ CLS(WebService)
+
+// GetClassName is a macro defined by Windows.h, grrr...
+const char* GetLogClassName(Class log_class) {
+ switch (log_class) {
+#define CLS(x) \
+ case Class::x: \
+ return #x;
+#define SUB(x, y) \
+ case Class::x##_##y: \
+ return #x "." #y;
+ ALL_LOG_CLASSES()
+#undef CLS
+#undef SUB
+ case Class::Count:
+ break;
+ }
+ return "Invalid";
+}
+
+const char* GetLevelName(Level log_level) {
+#define LVL(x) \
+ case Level::x: \
+ return #x
+ switch (log_level) {
+ LVL(Trace);
+ LVL(Debug);
+ LVL(Info);
+ LVL(Warning);
+ LVL(Error);
+ LVL(Critical);
+ case Level::Count:
+ break;
+ }
+#undef LVL
+ return "Invalid";
+}
+
Filter::Filter(Level default_level) {
ResetAll(default_level);
}