1 | /* |
2 | Simple DirectMedia Layer |
3 | Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> |
4 | |
5 | This software is provided 'as-is', without any express or implied |
6 | warranty. In no event will the authors be held liable for any damages |
7 | arising from the use of this software. |
8 | |
9 | Permission is granted to anyone to use this software for any purpose, |
10 | including commercial applications, and to alter it and redistribute it |
11 | freely, subject to the following restrictions: |
12 | |
13 | 1. The origin of this software must not be misrepresented; you must not |
14 | claim that you wrote the original software. If you use this software |
15 | in a product, an acknowledgment in the product documentation would be |
16 | appreciated but is not required. |
17 | 2. Altered source versions must be plainly marked as such, and must not be |
18 | misrepresented as being the original software. |
19 | 3. This notice may not be removed or altered from any source distribution. |
20 | */ |
21 | |
22 | /** |
23 | * \file SDL_log.h |
24 | * |
25 | * Simple log messages with categories and priorities. |
26 | * |
27 | * By default logs are quiet, but if you're debugging SDL you might want: |
28 | * |
29 | * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); |
30 | * |
31 | * Here's where the messages go on different platforms: |
32 | * Windows: debug output stream |
33 | * Android: log output |
34 | * Others: standard error output (stderr) |
35 | */ |
36 | |
37 | #ifndef SDL_log_h_ |
38 | #define SDL_log_h_ |
39 | |
40 | #include "SDL_stdinc.h" |
41 | |
42 | #include "begin_code.h" |
43 | /* Set up for C function definitions, even when using C++ */ |
44 | #ifdef __cplusplus |
45 | extern "C" { |
46 | #endif |
47 | |
48 | |
49 | /** |
50 | * \brief The maximum size of a log message |
51 | * |
52 | * Messages longer than the maximum size will be truncated |
53 | */ |
54 | #define SDL_MAX_LOG_MESSAGE 4096 |
55 | |
56 | /** |
57 | * \brief The predefined log categories |
58 | * |
59 | * By default the application category is enabled at the INFO level, |
60 | * the assert category is enabled at the WARN level, test is enabled |
61 | * at the VERBOSE level and all other categories are enabled at the |
62 | * CRITICAL level. |
63 | */ |
64 | enum |
65 | { |
66 | SDL_LOG_CATEGORY_APPLICATION, |
67 | SDL_LOG_CATEGORY_ERROR, |
68 | SDL_LOG_CATEGORY_ASSERT, |
69 | SDL_LOG_CATEGORY_SYSTEM, |
70 | SDL_LOG_CATEGORY_AUDIO, |
71 | SDL_LOG_CATEGORY_VIDEO, |
72 | SDL_LOG_CATEGORY_RENDER, |
73 | SDL_LOG_CATEGORY_INPUT, |
74 | SDL_LOG_CATEGORY_TEST, |
75 | |
76 | /* Reserved for future SDL library use */ |
77 | SDL_LOG_CATEGORY_RESERVED1, |
78 | SDL_LOG_CATEGORY_RESERVED2, |
79 | SDL_LOG_CATEGORY_RESERVED3, |
80 | SDL_LOG_CATEGORY_RESERVED4, |
81 | SDL_LOG_CATEGORY_RESERVED5, |
82 | SDL_LOG_CATEGORY_RESERVED6, |
83 | SDL_LOG_CATEGORY_RESERVED7, |
84 | SDL_LOG_CATEGORY_RESERVED8, |
85 | SDL_LOG_CATEGORY_RESERVED9, |
86 | SDL_LOG_CATEGORY_RESERVED10, |
87 | |
88 | /* Beyond this point is reserved for application use, e.g. |
89 | enum { |
90 | MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, |
91 | MYAPP_CATEGORY_AWESOME2, |
92 | MYAPP_CATEGORY_AWESOME3, |
93 | ... |
94 | }; |
95 | */ |
96 | SDL_LOG_CATEGORY_CUSTOM |
97 | }; |
98 | |
99 | /** |
100 | * \brief The predefined log priorities |
101 | */ |
102 | typedef enum |
103 | { |
104 | SDL_LOG_PRIORITY_VERBOSE = 1, |
105 | SDL_LOG_PRIORITY_DEBUG, |
106 | SDL_LOG_PRIORITY_INFO, |
107 | SDL_LOG_PRIORITY_WARN, |
108 | SDL_LOG_PRIORITY_ERROR, |
109 | SDL_LOG_PRIORITY_CRITICAL, |
110 | SDL_NUM_LOG_PRIORITIES |
111 | } SDL_LogPriority; |
112 | |
113 | |
114 | /** |
115 | * \brief Set the priority of all log categories |
116 | */ |
117 | extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); |
118 | |
119 | /** |
120 | * \brief Set the priority of a particular log category |
121 | */ |
122 | extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, |
123 | SDL_LogPriority priority); |
124 | |
125 | /** |
126 | * \brief Get the priority of a particular log category |
127 | */ |
128 | extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); |
129 | |
130 | /** |
131 | * \brief Reset all priorities to default. |
132 | * |
133 | * \note This is called in SDL_Quit(). |
134 | */ |
135 | extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); |
136 | |
137 | /** |
138 | * \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO |
139 | */ |
140 | extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); |
141 | |
142 | /** |
143 | * \brief Log a message with SDL_LOG_PRIORITY_VERBOSE |
144 | */ |
145 | extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); |
146 | |
147 | /** |
148 | * \brief Log a message with SDL_LOG_PRIORITY_DEBUG |
149 | */ |
150 | extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); |
151 | |
152 | /** |
153 | * \brief Log a message with SDL_LOG_PRIORITY_INFO |
154 | */ |
155 | extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); |
156 | |
157 | /** |
158 | * \brief Log a message with SDL_LOG_PRIORITY_WARN |
159 | */ |
160 | extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); |
161 | |
162 | /** |
163 | * \brief Log a message with SDL_LOG_PRIORITY_ERROR |
164 | */ |
165 | extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); |
166 | |
167 | /** |
168 | * \brief Log a message with SDL_LOG_PRIORITY_CRITICAL |
169 | */ |
170 | extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); |
171 | |
172 | /** |
173 | * \brief Log a message with the specified category and priority. |
174 | */ |
175 | extern DECLSPEC void SDLCALL SDL_LogMessage(int category, |
176 | SDL_LogPriority priority, |
177 | SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); |
178 | |
179 | /** |
180 | * \brief Log a message with the specified category and priority. |
181 | */ |
182 | extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, |
183 | SDL_LogPriority priority, |
184 | const char *fmt, va_list ap); |
185 | |
186 | /** |
187 | * \brief The prototype for the log output function |
188 | */ |
189 | typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); |
190 | |
191 | /** |
192 | * \brief Get the current log output function. |
193 | */ |
194 | extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); |
195 | |
196 | /** |
197 | * \brief This function allows you to replace the default log output |
198 | * function with one of your own. |
199 | */ |
200 | extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); |
201 | |
202 | |
203 | /* Ends C function definitions when using C++ */ |
204 | #ifdef __cplusplus |
205 | } |
206 | #endif |
207 | #include "close_code.h" |
208 | |
209 | #endif /* SDL_log_h_ */ |
210 | |
211 | /* vi: set ts=4 sw=4 expandtab: */ |
212 | |