|
|
- /*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 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_error.h
- *
- * Simple error message routines for SDL.
- */
-
- #ifndef SDL_error_h_
- #define SDL_error_h_
-
- #include "SDL_stdinc.h"
-
- #include "begin_code.h"
- /* Set up for C function definitions, even when using C++ */
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /* Public functions */
-
-
- /**
- * Set the SDL error message for the current thread.
- *
- * Calling this function will replace any previous error message that was set.
- *
- * This function always returns -1, since SDL frequently uses -1 to signify an
- * failing result, leading to this idiom:
- *
- * ```c
- * if (error_code) {
- * return SDL_SetError("This operation has failed: %d", error_code);
- * }
- * ```
- *
- * \param fmt a printf()-style message format string
- * \param ... additional parameters matching % tokens in the `fmt` string, if
- * any
- * \returns always -1.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ClearError
- * \sa SDL_GetError
- */
- extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
- /**
- * Retrieve a message about the last error that occurred on the current
- * thread.
- *
- * It is possible for multiple errors to occur before calling SDL_GetError().
- * Only the last error is returned.
- *
- * The message is only applicable when an SDL function has signaled an error.
- * You must check the return values of SDL function calls to determine when to
- * appropriately call SDL_GetError(). You should *not* use the results of
- * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set
- * an error string even when reporting success.
- *
- * SDL will *not* clear the error string for successful API calls. You *must*
- * check return values for failure cases before you can assume the error
- * string applies.
- *
- * Error strings are set per-thread, so an error set in a different thread
- * will not interfere with the current thread's operation.
- *
- * The returned string is internally allocated and must not be freed by the
- * application.
- *
- * \returns a message with information about the specific error that occurred,
- * or an empty string if there hasn't been an error message set since
- * the last call to SDL_ClearError(). The message is only applicable
- * when an SDL function has signaled an error. You must check the
- * return values of SDL function calls to determine when to
- * appropriately call SDL_GetError().
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ClearError
- * \sa SDL_SetError
- */
- extern DECLSPEC const char *SDLCALL SDL_GetError(void);
-
- /**
- * Get the last error message that was set for the current thread.
- *
- * This allows the caller to copy the error string into a provided buffer, but
- * otherwise operates exactly the same as SDL_GetError().
- *
- * \param errstr A buffer to fill with the last error message that was set for
- * the current thread
- * \param maxlen The size of the buffer pointed to by the errstr parameter
- * \returns the pointer passed in as the `errstr` parameter.
- *
- * \since This function is available since SDL 2.0.14.
- *
- * \sa SDL_GetError
- */
- extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen);
-
- /**
- * Clear any previous error message for this thread.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetError
- * \sa SDL_SetError
- */
- extern DECLSPEC void SDLCALL SDL_ClearError(void);
-
- /**
- * \name Internal error functions
- *
- * \internal
- * Private error reporting function - used internally.
- */
- /* @{ */
- #define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM)
- #define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED)
- #define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param))
- typedef enum
- {
- SDL_ENOMEM,
- SDL_EFREAD,
- SDL_EFWRITE,
- SDL_EFSEEK,
- SDL_UNSUPPORTED,
- SDL_LASTERROR
- } SDL_errorcode;
- /* SDL_Error() unconditionally returns -1. */
- extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
- /* @} *//* Internal error functions */
-
- /* Ends C function definitions when using C++ */
- #ifdef __cplusplus
- }
- #endif
- #include "close_code.h"
-
- #endif /* SDL_error_h_ */
-
- /* vi: set ts=4 sw=4 expandtab: */
|