| /* | 
 |   Simple DirectMedia Layer | 
 |   Copyright (C) 1997-2021 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. | 
 | */ | 
 |  | 
 | /** | 
 |  *  \file SDL_log.h | 
 |  * | 
 |  *  Simple log messages with categories and priorities. | 
 |  * | 
 |  *  By default logs are quiet, but if you're debugging SDL you might want: | 
 |  * | 
 |  *      SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); | 
 |  * | 
 |  *  Here's where the messages go on different platforms: | 
 |  *      Windows: debug output stream | 
 |  *      Android: log output | 
 |  *      Others: standard error output (stderr) | 
 |  */ | 
 |  | 
 | #ifndef SDL_log_h_ | 
 | #define SDL_log_h_ | 
 |  | 
 | #include "SDL_stdinc.h" | 
 |  | 
 | #include "begin_code.h" | 
 | /* Set up for C function definitions, even when using C++ */ | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 |  | 
 | /** | 
 |  *  \brief The maximum size of a log message | 
 |  * | 
 |  *  Messages longer than the maximum size will be truncated | 
 |  */ | 
 | #define SDL_MAX_LOG_MESSAGE 4096 | 
 |  | 
 | /** | 
 |  *  \brief The predefined log categories | 
 |  * | 
 |  *  By default the application category is enabled at the INFO level, | 
 |  *  the assert category is enabled at the WARN level, test is enabled | 
 |  *  at the VERBOSE level and all other categories are enabled at the | 
 |  *  CRITICAL level. | 
 |  */ | 
 | typedef enum | 
 | { | 
 |     SDL_LOG_CATEGORY_APPLICATION, | 
 |     SDL_LOG_CATEGORY_ERROR, | 
 |     SDL_LOG_CATEGORY_ASSERT, | 
 |     SDL_LOG_CATEGORY_SYSTEM, | 
 |     SDL_LOG_CATEGORY_AUDIO, | 
 |     SDL_LOG_CATEGORY_VIDEO, | 
 |     SDL_LOG_CATEGORY_RENDER, | 
 |     SDL_LOG_CATEGORY_INPUT, | 
 |     SDL_LOG_CATEGORY_TEST, | 
 |  | 
 |     /* Reserved for future SDL library use */ | 
 |     SDL_LOG_CATEGORY_RESERVED1, | 
 |     SDL_LOG_CATEGORY_RESERVED2, | 
 |     SDL_LOG_CATEGORY_RESERVED3, | 
 |     SDL_LOG_CATEGORY_RESERVED4, | 
 |     SDL_LOG_CATEGORY_RESERVED5, | 
 |     SDL_LOG_CATEGORY_RESERVED6, | 
 |     SDL_LOG_CATEGORY_RESERVED7, | 
 |     SDL_LOG_CATEGORY_RESERVED8, | 
 |     SDL_LOG_CATEGORY_RESERVED9, | 
 |     SDL_LOG_CATEGORY_RESERVED10, | 
 |  | 
 |     /* Beyond this point is reserved for application use, e.g. | 
 |        enum { | 
 |            MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, | 
 |            MYAPP_CATEGORY_AWESOME2, | 
 |            MYAPP_CATEGORY_AWESOME3, | 
 |            ... | 
 |        }; | 
 |      */ | 
 |     SDL_LOG_CATEGORY_CUSTOM | 
 | } SDL_LogCategory; | 
 |  | 
 | /** | 
 |  *  \brief The predefined log priorities | 
 |  */ | 
 | typedef enum | 
 | { | 
 |     SDL_LOG_PRIORITY_VERBOSE = 1, | 
 |     SDL_LOG_PRIORITY_DEBUG, | 
 |     SDL_LOG_PRIORITY_INFO, | 
 |     SDL_LOG_PRIORITY_WARN, | 
 |     SDL_LOG_PRIORITY_ERROR, | 
 |     SDL_LOG_PRIORITY_CRITICAL, | 
 |     SDL_NUM_LOG_PRIORITIES | 
 | } SDL_LogPriority; | 
 |  | 
 |  | 
 | /** | 
 |  *  \brief Set the priority of all log categories | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); | 
 |  | 
 | /** | 
 |  *  \brief Set the priority of a particular log category | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, | 
 |                                                 SDL_LogPriority priority); | 
 |  | 
 | /** | 
 |  *  \brief Get the priority of a particular log category | 
 |  */ | 
 | extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); | 
 |  | 
 | /** | 
 |  *  \brief Reset all priorities to default. | 
 |  * | 
 |  *  \note This is called in SDL_Quit(). | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_PRIORITY_VERBOSE | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_PRIORITY_DEBUG | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_PRIORITY_INFO | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_PRIORITY_WARN | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_PRIORITY_ERROR | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with SDL_LOG_PRIORITY_CRITICAL | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with the specified category and priority. | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogMessage(int category, | 
 |                                             SDL_LogPriority priority, | 
 |                                             SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); | 
 |  | 
 | /** | 
 |  *  \brief Log a message with the specified category and priority. | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, | 
 |                                              SDL_LogPriority priority, | 
 |                                              const char *fmt, va_list ap); | 
 |  | 
 | /** | 
 |  *  \brief The prototype for the log output function | 
 |  */ | 
 | typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); | 
 |  | 
 | /** | 
 |  *  \brief Get the current log output function. | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); | 
 |  | 
 | /** | 
 |  *  \brief This function allows you to replace the default log output | 
 |  *         function with one of your own. | 
 |  */ | 
 | extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); | 
 |  | 
 |  | 
 | /* Ends C function definitions when using C++ */ | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 | #include "close_code.h" | 
 |  | 
 | #endif /* SDL_log_h_ */ | 
 |  | 
 | /* vi: set ts=4 sw=4 expandtab: */ |