mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-11-04 09:44:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			164 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
  Simple DirectMedia Layer
 | 
						|
  Copyright (C) 1997-2022 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: */
 |