mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			156 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|   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_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.
 | |
|  *
 | |
|  * \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().
 | |
|  *
 | |
|  * \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.
 | |
|  *
 | |
|  * \sa SDL_GetError
 | |
|  */
 | |
| extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen);
 | |
| 
 | |
| /**
 | |
|  * Clear any previous error message for this thread.
 | |
|  *
 | |
|  * \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: */
 | 
