VulkanRaytracingCycles 0.0.0
Cycles Render Engine With VulkanRaytracingShaderModules. ( Experiment , in progress)
log.hpp
Go to the documentation of this file.
1#pragma once
2
3#ifndef LOGBAD_H
4#define LOGBAD_H
5
6#ifdef AEOLUS_EXE
7#include "vulkan/vulkan.h"
8#else
9#include "pch_mm.h"
10#endif
11
13#define log_once(...) log__once(__FILE__, __LINE__, LOG_ONCE, __VA_ARGS__)
14
15
16#ifdef LOG_NO_TRACE
17#define log_trace(...)
18#else
19#define log_trace(...) log_out(__FILE__, __LINE__, LOG_TRACE, __VA_ARGS__)
20#endif
21
22
23
24#ifdef LOG_NO_DEBUG
25#define log_debug(...)
26#else
27#define log_debug(...) log_out(__FILE__, __LINE__, LOG_DEBUG, __VA_ARGS__)
28#endif
29
30
31#define log_verbose(...) log_out(__FILE__, __LINE__, LOG_VERBOSE, __VA_ARGS__)
32
33// we always want these messages
34#define log_info(...) log_out(__FILE__, __LINE__, LOG_INFO, __VA_ARGS__)
35#define log_warning(...) log_out(__FILE__, __LINE__, LOG_WARNING, __VA_ARGS__)
36#define log_error(...) log_out(__FILE__, __LINE__, LOG_ERROR, __VA_ARGS__)
37#define log_bad(...) log__bad(__FILE__, __LINE__, LOG_BAD, __VA_ARGS__)
38#define log_vkabad(...) log__vkabad(__FILE__, __LINE__, LOG_VKABAD, __VA_ARGS__)
39#define log_fatal(...) log_out(__FILE__, __LINE__, LOG_FATAL, __VA_ARGS__)
40#define log_vs(...) log__vs(__FILE__, __LINE__, LOG_INFO, __VA_ARGS__)
41
42
43#define ASSERT_PRINT(condition,...) \
44 do { \
45 if (! (condition)) { \
46 log_out(__FILE__, __LINE__, LOG_INFO, __VA_ARGS__);\
47 std::terminate(); \
48 } \
49 } while (false)
50
51
52
61 LOG_BAD = 128,
63 LOG_ONCE = 512,
64 LOG_CPP = 1024,
65 LOG_THREAD = 2048,
66 LOG_FILE = 4096,
67};
68
69void testit(const char* fmt, ...);
70
71
72void log_init(void);
73void log_out(const char* file, int line, enum LOG_LEVEL level, const char* fmt, ...);
74void log__bad(const char* file, int line, enum LOG_LEVEL level, const char* fmt, ...);
75void log__vkabad(const char* file, int line, enum LOG_LEVEL level, VkResult code, const char* fmt, ...);
76void log__once(const char* file, int line, enum LOG_LEVEL level, const char* fmt, ...);
77void log__thread(const char* file, int line, enum LOG_LEVEL level, const char* fmt, ...);
78void log__save(const char* file, const char* fmt);
79void log__vs(const char* file, int line, enum LOG_LEVEL level, const char* fmt, ...);
80
81void exitFatal();
82
83
84const char* errorString(VkResult errorCode);
85static const char* log_label(enum LOG_LEVEL level)
86{
87 switch (level) {
88 case LOG_TRACE:
89 return "\x1b[37m[TRACE]\x1b[0m"; // bright white
90 case LOG_DEBUG:
91 return "\x1b[36m[DEBUG]\x1b[0m"; // cyan
92 case LOG_VERBOSE:
93 return "\x1b[34m[VERBOSE]\x1b[0m"; // blue
94 case LOG_INFO:
95 return "\x1b[32m[INFO]\x1b[0m"; // green
96 case LOG_WARNING:
97 return "\x1b[33m[WARN]\x1b[0m"; // yellow
98 case LOG_ERROR:
99 return "\x1b[35m[ERROR]\x1b[0m"; // magenta
100 case LOG_BAD:
101 return "\x1b[41m\x1b[1m[BAD]\x1b[0m";
102 case LOG_VKABAD:
103 return "\x1b[33m\x1b[1m[VKABAD]\x1b[0m";
104 case LOG_ONCE:
105 return "\x1b[42m[ONCE]\x1b[0m";
106 case LOG_THREAD:
107 return "\x1b[32m\x1b[1m[THREAD]\x1b[0m";
108 case LOG_FILE:
109 return "[FILE]";
110 case LOG_CPP:
111 return "\x1b[43m[CPP]\x1b[0m"; // red
112 case LOG_FATAL:
113 return "\x1b[31m[FATAL]\x1b[0m"; // red
114 default:
115 return "\x1b[0m"; // reset
116 }
117}
118
119#endif
void log__thread(const char *file, int line, enum LOG_LEVEL level, const char *fmt,...)
Definition: log.cpp:182
void log__bad(const char *file, int line, enum LOG_LEVEL level, const char *fmt,...)
Definition: log.cpp:213
void log_init(void)
Definition: log.cpp:43
void log__save(const char *file, const char *fmt)
void exitFatal()
Definition: log.cpp:65
const char * errorString(VkResult errorCode)
Definition: log.cpp:300
void log_out(const char *file, int line, enum LOG_LEVEL level, const char *fmt,...)
Definition: log.cpp:85
void log__vkabad(const char *file, int line, enum LOG_LEVEL level, VkResult code, const char *fmt,...)
Definition: log.cpp:243
void log__once(const char *file, int line, enum LOG_LEVEL level, const char *fmt,...)
Definition: log.cpp:263
LOG_LEVEL
Definition: log.hpp:53
@ LOG_FILE
Definition: log.hpp:66
@ LOG_ERROR
Definition: log.hpp:59
@ LOG_BAD
Definition: log.hpp:61
@ LOG_TRACE
Definition: log.hpp:54
@ LOG_THREAD
Definition: log.hpp:65
@ LOG_INFO
Definition: log.hpp:57
@ LOG_VKABAD
Definition: log.hpp:62
@ LOG_WARNING
Definition: log.hpp:58
@ LOG_CPP
Definition: log.hpp:64
@ LOG_DEBUG
Definition: log.hpp:55
@ LOG_FATAL
Definition: log.hpp:60
@ LOG_VERBOSE
Definition: log.hpp:56
@ LOG_ONCE
Definition: log.hpp:63
void testit(const char *fmt,...)
Definition: log.cpp:19
void log__vs(const char *file, int line, enum LOG_LEVEL level, const char *fmt,...)
Definition: log.cpp:279