Mercurial > sdl-ios-xcode
comparison include/SDL_assert.h @ 3670:62b6a5b99918
Clean up assertion API for public use.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Wed, 13 Jan 2010 19:29:33 +0000 |
parents | 6952d2b783e6 |
children | f7b03b6838cb |
comparison
equal
deleted
inserted
replaced
3669:46d27a9571fa | 3670:62b6a5b99918 |
---|---|
107 unsigned int trigger_count; | 107 unsigned int trigger_count; |
108 const char *condition; | 108 const char *condition; |
109 const char *filename; | 109 const char *filename; |
110 int linenum; | 110 int linenum; |
111 const char *function; | 111 const char *function; |
112 struct SDL_assert_data *next; | 112 const struct SDL_assert_data *next; |
113 } SDL_assert_data; | 113 } SDL_assert_data; |
114 | 114 |
115 /* Never call this directly. Use the SDL_assert* macros. */ | 115 /* Never call this directly. Use the SDL_assert* macros. */ |
116 extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *, | 116 extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *, |
117 const char *, | 117 const char *, |
164 # define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) | 164 # define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) |
165 #else | 165 #else |
166 # error Unknown assertion level. | 166 # error Unknown assertion level. |
167 #endif | 167 #endif |
168 | 168 |
169 | |
170 typedef SDL_assert_state (SDLCALL *SDL_AssertionHandler)( | |
171 const SDL_assert_data *, void *userdata); | |
172 | |
173 /** | |
174 * \brief Set an application-defined assertion handler. | |
175 * | |
176 * This allows an app to show its own assertion UI and/or force the | |
177 * response to an assertion failure. If the app doesn't provide this, SDL | |
178 * will try to do the right thing, popping up a system-specific GUI dialog, | |
179 * and probably minimizing any fullscreen windows. | |
180 * | |
181 * This callback may fire from any thread, but it runs wrapped in a mutex, so | |
182 * it will only fire from one thread at a time. | |
183 * | |
184 * Setting the callback to NULL restores SDL's original internal handler. | |
185 * | |
186 * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! | |
187 * | |
188 * \return SDL_assert_state value of how to handle the assertion failure. | |
189 * | |
190 * \param handler Callback function, called when an assertion fails. | |
191 * \param userdata A pointer passed to the callback as-is. | |
192 */ | |
193 extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( | |
194 SDL_AssertionHandler handler, | |
195 void *userdata); | |
196 | |
197 /** | |
198 * \brief Get a list of all assertion failures. | |
199 * | |
200 * Get all assertions triggered since last call to SDL_ResetAssertionReport(), | |
201 * or the start of the program. | |
202 * | |
203 * The proper way to examine this data looks something like this: | |
204 * | |
205 * <code> | |
206 * const SDL_assert_data *item = SDL_GetAssertionReport(); | |
207 * while (item->condition) { | |
208 * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n", | |
209 * item->condition, item->function, item->filename, | |
210 * item->linenum, item->trigger_count, | |
211 * item->always_ignore ? "yes" : "no"); | |
212 * item = item->next; | |
213 * } | |
214 * </code> | |
215 * | |
216 * \return List of all assertions. This never returns NULL, | |
217 * even if there are no items. | |
218 * \sa SDL_ResetAssertionReport | |
219 */ | |
220 extern DECLSPEC const SDL_assert_data * SDLCALL SDL_GetAssertionReport(void); | |
221 | |
222 /** | |
223 * \brief Reset the list of all assertion failures. | |
224 * | |
225 * Reset list of all assertions triggered. | |
226 * | |
227 * \sa SDL_GetAssertionReport | |
228 */ | |
229 extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); | |
230 | |
169 /* Ends C function definitions when using C++ */ | 231 /* Ends C function definitions when using C++ */ |
170 #ifdef __cplusplus | 232 #ifdef __cplusplus |
171 /* *INDENT-OFF* */ | 233 /* *INDENT-OFF* */ |
172 } | 234 } |
173 /* *INDENT-ON* */ | 235 /* *INDENT-ON* */ |