Buckets:
| /* | |
| Simple DirectMedia Layer | |
| Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> | |
| This software is provided 'as-is', without any express or implied | |
| warranty. In no event will the authors be held liable for any damages | |
| arising from the use of this software. | |
| Permission is granted to anyone to use this software for any purpose, | |
| including commercial applications, and to alter it and redistribute it | |
| freely, subject to the following restrictions: | |
| 1. The origin of this software must not be misrepresented; you must not | |
| claim that you wrote the original software. If you use this software | |
| in a product, an acknowledgment in the product documentation would be | |
| appreciated but is not required. | |
| 2. Altered source versions must be plainly marked as such, and must not be | |
| misrepresented as being the original software. | |
| 3. This notice may not be removed or altered from any source distribution. | |
| */ | |
| /* Set up for C function definitions, even when using C++ */ | |
| /* *INDENT-OFF* */ | |
| extern "C" { | |
| /* *INDENT-ON* */ | |
| /* | |
| These are macros and not first class functions so that the debugger breaks | |
| on the assertion line and not in some random guts of SDL, and so each | |
| assert can have unique static variables associated with it. | |
| */ | |
| /* Don't include intrin.h here because it contains C++ code */ | |
| extern void __cdecl __debugbreak(void); | |
| /* How do we trigger breakpoints on this platform? */ | |
| /* | |
| sizeof (x) makes the compiler still parse the expression even without | |
| assertions enabled, so the code is always checked at compile time, but | |
| doesn't actually generate code for it, so there are no side effects or | |
| expensive checks at run time, just the constant size of what x WOULD be, | |
| which presumably gets optimized out as unused. | |
| This also solves the problem of... | |
| int somevalue = blah(); | |
| SDL_assert(somevalue == 1); | |
| ...which would cause compiles to complain that somevalue is unused if we | |
| disable assertions. | |
| */ | |
| typedef enum | |
| { | |
| SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ | |
| SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ | |
| SDL_ASSERTION_ABORT, /**< Terminate the program. */ | |
| SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ | |
| SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ | |
| } SDL_assert_state; | |
| typedef struct SDL_assert_data | |
| { | |
| int always_ignore; | |
| unsigned int trigger_count; | |
| const char *condition; | |
| const char *filename; | |
| int linenum; | |
| const char *function; | |
| const struct SDL_assert_data *next; | |
| } SDL_assert_data; | |
| /* Never call this directly. Use the SDL_assert* macros. */ | |
| extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *, | |
| const char *, | |
| const char *, int); | |
| /* the do {} while(0) avoids dangling else problems: | |
| if (x) SDL_assert(y); else blah(); | |
| ... without the do/while, the "else" could attach to this macro's "if". | |
| We try to handle just the minimum we need here in a macro...the loop, | |
| the static vars, and break points. The heavy lifting is handled in | |
| SDL_ReportAssertion(), in SDL_assert.c. | |
| */ | |
| /* Enable various levels of assertions. */ | |
| typedef SDL_assert_state (SDLCALL *SDL_AssertionHandler)( | |
| const SDL_assert_data* data, void* userdata); | |
| /** | |
| * \brief Set an application-defined assertion handler. | |
| * | |
| * This allows an app to show its own assertion UI and/or force the | |
| * response to an assertion failure. If the app doesn't provide this, SDL | |
| * will try to do the right thing, popping up a system-specific GUI dialog, | |
| * and probably minimizing any fullscreen windows. | |
| * | |
| * This callback may fire from any thread, but it runs wrapped in a mutex, so | |
| * it will only fire from one thread at a time. | |
| * | |
| * Setting the callback to NULL restores SDL's original internal handler. | |
| * | |
| * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! | |
| * | |
| * \return SDL_assert_state value of how to handle the assertion failure. | |
| * | |
| * \param handler Callback function, called when an assertion fails. | |
| * \param userdata A pointer passed to the callback as-is. | |
| */ | |
| extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( | |
| SDL_AssertionHandler handler, | |
| void *userdata); | |
| /** | |
| * \brief Get a list of all assertion failures. | |
| * | |
| * Get all assertions triggered since last call to SDL_ResetAssertionReport(), | |
| * or the start of the program. | |
| * | |
| * The proper way to examine this data looks something like this: | |
| * | |
| * <code> | |
| * const SDL_assert_data *item = SDL_GetAssertionReport(); | |
| * while (item) { | |
| * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n", | |
| * item->condition, item->function, item->filename, | |
| * item->linenum, item->trigger_count, | |
| * item->always_ignore ? "yes" : "no"); | |
| * item = item->next; | |
| * } | |
| * </code> | |
| * | |
| * \return List of all assertions. | |
| * \sa SDL_ResetAssertionReport | |
| */ | |
| extern DECLSPEC const SDL_assert_data * SDLCALL SDL_GetAssertionReport(void); | |
| /** | |
| * \brief Reset the list of all assertion failures. | |
| * | |
| * Reset list of all assertions triggered. | |
| * | |
| * \sa SDL_GetAssertionReport | |
| */ | |
| extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); | |
| /* Ends C function definitions when using C++ */ | |
| /* *INDENT-OFF* */ | |
| } | |
| /* *INDENT-ON* */ | |
| /* vi: set ts=4 sw=4 expandtab: */ | |
Xet Storage Details
- Size:
- 8.81 kB
- Xet hash:
- 99f9fd935fb59282d9aecfe10ed292c4becacc2f7f8ca65e48fb85a09b969f8c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.