xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
logmacrohelper.inc
浏览该文件的文档.
1#pragma once
2#if defined(LABEL) && defined(ROLE)
3# define _I(msg) \
4 do { \
5 XCAL_INFO(ROLE, LABEL) << msg; \
6 OUT(msg); \
7 } while (0)
8# define _W(msg) \
9 do { \
10 XCAL_WARN(ROLE, LABEL) << msg; \
11 OUT(msg); \
12 } while (0)
13# define _E(msg) \
14 do { \
15 XCAL_ERROR(ROLE, LABEL) << msg; \
16 OUT(msg); \
17 } while (0)
18# define _D(msg) \
19 do { \
20 XCAL_DEBUG(ROLE, LABEL) << msg; \
21 OUT(msg); \
22 } while (0)
23# define _F(msg) \
24 do { \
25 XCAL_FATAL(ROLE, LABEL) << msg; \
26 OUT(msg); \
27 } while (0)
28#elif defined(LABEL)
29# define _I(role, msg) \
30 do { \
31 XCAL_INFO(role, LABEL) << msg; \
32 OUT(msg); \
33 } while (0)
34# define _W(role, msg) \
35 do { \
36 XCAL_WARN(role, LABEL) << msg; \
37 OUT(msg); \
38 } while (0)
39# define _E(role, msg) \
40 do { \
41 XCAL_ERROR(role, LABEL) << msg; \
42 OUT(msg); \
43 } while (0)
44# define _D(role, msg) \
45 do { \
46 XCAL_DEBUG(role, LABEL) << msg; \
47 OUT(msg); \
48 } while (0)
49# define _F(role, msg) \
50 do { \
51 XCAL_FATAL(role, LABEL) << msg; \
52 OUT(msg); \
53 } while (0)
54#elif defined(ROLE)
55# define _I(label, msg) \
56 do { \
57 XCAL_INFO(ROLE, label) << msg; \
58 OUT(msg); \
59 } while (0)
60# define _W(label, msg) \
61 do { \
62 XCAL_WARN(ROLE, label) << msg; \
63 OUT(msg); \
64 } while (0)
65# define _E(label, msg) \
66 do { \
67 XCAL_ERROR(ROLE, label) << msg; \
68 OUT(msg); \
69 } while (0)
70# define _D(label, msg) \
71 do { \
72 XCAL_DEBUG(ROLE, label) << msg; \
73 OUT(msg); \
74 } while (0)
75# define _F(label, msg) \
76 do { \
77 XCAL_FATAL(ROLE, label) << msg; \
78 OUT(msg); \
79 } while (0)
80#else
81# define _I(role, label, msg) \
82 do { \
83 XCAL_INFO(role, label) << msg; \
84 OUT(msg); \
85 } while (0)
86# define _W(role, label, msg) \
87 do { \
88 XCAL_WARN(role, label) << msg; \
89 OUT(msg); \
90 } while (0)
91# define _E(role, label, msg) \
92 do { \
93 XCAL_ERROR(role, label) << msg; \
94 OUT(msg); \
95 } while (0)
96# define _D(role, label, msg) \
97 do { \
98 XCAL_DEBUG(role, label) << msg; \
99 OUT(msg); \
100 } while (0)
101# define _F(role, label, msg) \
102 do { \
103 XCAL_FATAL(role, label) << msg; \
104 OUT(msg); \
105 } while (0)
106#endif
107
108#ifdef XCAL_STATIC_LOG_LEVEL
109# if XCAL_DEBUG_LEVEL <= XCAL_STATIC_LOG_LEVEL
110# undef _D
111# define _D(...)
112# endif
113# if XCAL_INFO_LEVEL <= XCAL_STATIC_LOG_LEVEL
114# undef _I
115# define _I(...)
116# endif
117# if XCAL_WARN_LEVEL <= XCAL_STATIC_LOG_LEVEL
118# undef _W
119# define _W(...)
120# endif
121# if XCAL_ERROR_LEVEL <= XCAL_STATIC_LOG_LEVEL
122# undef _E
123# define _E(...)
124# endif
125# if XCAL_FATAL_LEVEL <= XCAL_STATIC_LOG_LEVEL
126# undef _F
127# define _F(...)
128# endif
129#endif
130
131#define _NAMED_VALUE(value) \
132 << "(" << #value << "=" << name << " " \
133 << ")"
134#define _LINE_MSG(msg) << msg << "\n"
135#define _SELF << "(" << this << ")"
136#ifdef XCAL_LOG_OUT_TO_STDERR
137constexpr static auto PRO_LEN =
138 sizeof("D:\\31003\\Desktop\\code\\C++\\xc1\\xcal");
139# define OUT(msg) \
140 do { \
141 std::cerr << "[" << _STD string(__FILE__).substr(PRO_LEN) << ":" \
142 << __LINE__ << "] " << msg << std::endl; \
143 } while (0)
144#else
145# define OUT(msg) \
146 do { \
147 } while (0)
148#endif