include/SDL_assert.h
changeset 3649 1e74d7984d0b
parent 3647 c5925cd41955
child 3650 91460fdfe83a
equal deleted inserted replaced
3648:a9d830c05998 3649:1e74d7984d0b
    19     Sam Lantinga
    19     Sam Lantinga
    20     slouken@libsdl.org
    20     slouken@libsdl.org
    21 */
    21 */
    22 #include "SDL_config.h"
    22 #include "SDL_config.h"
    23 
    23 
    24 /* This is an assert macro for SDL's internal use. Not for the public API! */
       
    25 
       
    26 #ifndef _SDL_assert_h
    24 #ifndef _SDL_assert_h
    27 #define _SDL_assert_h
    25 #define _SDL_assert_h
    28 
    26 
    29 #ifndef SDL_ASSERT_LEVEL
    27 #ifndef SDL_ASSERT_LEVEL
    30 #error SDL_ASSERT_LEVEL is not defined. Please fix your SDL_config.h.
    28 #define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
    31 #endif
    29 #endif
    32 
    30 
    33 /*
    31 /*
    34 sizeof (x) makes the compiler still parse the expression even without
    32 sizeof (x) makes the compiler still parse the expression even without
    35 assertions enabled, so the code is always checked at compile time, but
    33 assertions enabled, so the code is always checked at compile time, but
   105    SDL_ReportAssertion(), in SDL_assert.c.
   103    SDL_ReportAssertion(), in SDL_assert.c.
   106 */
   104 */
   107 #define SDL_enabled_assert(condition) \
   105 #define SDL_enabled_assert(condition) \
   108     do { \
   106     do { \
   109         while ( !(condition) ) { \
   107         while ( !(condition) ) { \
   110 			static struct SDL_assert_data assert_data = { \
   108             static struct SDL_assert_data assert_data = { \
   111                 0, 0, #condition, __FILE__, 0, 0, 0 \
   109                 0, 0, #condition, __FILE__, 0, 0, 0 \
   112             }; \
   110             }; \
   113 			const SDL_assert_state state = SDL_ReportAssertion(&assert_data, \
   111             const SDL_assert_state state = SDL_ReportAssertion(&assert_data, \
   114                                                                SDL_FUNCTION, \
   112                                                                SDL_FUNCTION, \
   115 															   __LINE__); \
   113                                                                __LINE__); \
   116             if (state == SDL_ASSERTION_RETRY) { \
   114             if (state == SDL_ASSERTION_RETRY) { \
   117                 continue; /* go again. */ \
   115                 continue; /* go again. */ \
   118             } else if (state == SDL_ASSERTION_BREAK) { \
   116             } else if (state == SDL_ASSERTION_BREAK) { \
   119                 SDL_TriggerBreakpoint(); \
   117                 SDL_TriggerBreakpoint(); \
   120             } \
   118             } \
   146 #endif
   144 #endif
   147 
   145 
   148 #endif /* _SDL_assert_h */
   146 #endif /* _SDL_assert_h */
   149 
   147 
   150 /* vi: set ts=4 sw=4 expandtab: */
   148 /* vi: set ts=4 sw=4 expandtab: */
   151