SDL 3.0
SDL_stdinc.h File Reference
#include <SDL3/SDL_platform_defines.h>
#include <stdarg.h>
#include <stdint.h>
#include <string.h>
#include <wchar.h>
#include <SDL3/SDL_begin_code.h>
#include <SDL3/SDL_close_code.h>
+ Include dependency graph for SDL_stdinc.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SDL_SIZE_MAX   ((size_t) -1)
 
#define SDL_HAS_BUILTIN(x)   0
 
#define SDL_arraysize(array)   (sizeof(array)/sizeof(array[0]))
 
#define SDL_TABLESIZE(table)   SDL_arraysize(table)
 
#define SDL_STRINGIFY_ARG(arg)   #arg
 
Cast operators

Use proper C++ casts when compiled as C++ to be compatible with the option -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).

#define SDL_reinterpret_cast(type, expression)   ((type)(expression))
 
#define SDL_static_cast(type, expression)   ((type)(expression))
 
#define SDL_const_cast(type, expression)   ((type)(expression))
 
#define SDL_FOURCC(A, B, C, D)
 

Functions

char * alloca ()
 

Basic data types

#define SDL_FALSE   0
 
#define SDL_TRUE   1
 
#define SDL_MAX_SINT8   ((Sint8)0x7F) /* 127 */
 
#define SDL_MIN_SINT8   ((Sint8)(~0x7F)) /* -128 */
 
#define SDL_MAX_UINT8   ((Uint8)0xFF) /* 255 */
 
#define SDL_MIN_UINT8   ((Uint8)0x00) /* 0 */
 
#define SDL_MAX_SINT16   ((Sint16)0x7FFF) /* 32767 */
 
#define SDL_MIN_SINT16   ((Sint16)(~0x7FFF)) /* -32768 */
 
#define SDL_MAX_UINT16   ((Uint16)0xFFFF) /* 65535 */
 
#define SDL_MIN_UINT16   ((Uint16)0x0000) /* 0 */
 
#define SDL_MAX_SINT32   ((Sint32)0x7FFFFFFF) /* 2147483647 */
 
#define SDL_MIN_SINT32   ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
 
#define SDL_MAX_UINT32   ((Uint32)0xFFFFFFFFu) /* 4294967295 */
 
#define SDL_MIN_UINT32   ((Uint32)0x00000000) /* 0 */
 
#define SDL_MAX_SINT64   ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */
 
#define SDL_MIN_SINT64   ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */
 
#define SDL_MAX_UINT64   ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */
 
#define SDL_MIN_UINT64   ((Uint64)(0x0000000000000000ull)) /* 0 */
 
#define SDL_MAX_TIME   SDL_MAX_SINT64
 
#define SDL_MIN_TIME   SDL_MIN_SINT64
 
typedef int SDL_bool
 
typedef int8_t Sint8
 
typedef uint8_t Uint8
 
typedef int16_t Sint16
 
typedef uint16_t Uint16
 
typedef int32_t Sint32
 
typedef uint32_t Uint32
 
typedef int64_t Sint64
 
typedef uint64_t Uint64
 
typedef Sint64 SDL_Time
 

Floating-point constants

#define SDL_FLT_EPSILON   1.1920928955078125e-07F /* 0x0.000002p0 */
 
#define SDL_PRIs64   "lld"
 
#define SDL_PRIu64   "llu"
 
#define SDL_PRIx64   "llx"
 
#define SDL_PRIX64   "llX"
 
#define SDL_PRIs32   "d"
 
#define SDL_PRIu32   "u"
 
#define SDL_PRIx32   "x"
 
#define SDL_PRIX32   "X"
 
#define SDL_IN_BYTECAP(x)
 
#define SDL_INOUT_Z_CAP(x)
 
#define SDL_OUT_Z_CAP(x)
 
#define SDL_OUT_CAP(x)
 
#define SDL_OUT_BYTECAP(x)
 
#define SDL_OUT_Z_BYTECAP(x)
 
#define SDL_PRINTF_FORMAT_STRING
 
#define SDL_SCANF_FORMAT_STRING
 
#define SDL_PRINTF_VARARG_FUNC(fmtargnumber)
 
#define SDL_PRINTF_VARARG_FUNCV(fmtargnumber)
 
#define SDL_SCANF_VARARG_FUNC(fmtargnumber)
 
#define SDL_SCANF_VARARG_FUNCV(fmtargnumber)
 
#define SDL_WPRINTF_VARARG_FUNC(fmtargnumber)
 
#define SDL_WSCANF_VARARG_FUNC(fmtargnumber)
 
#define SDL_COMPILE_TIME_ASSERT(name, x)    typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
 
#define SDL_stack_alloc(type, count)   (type*)alloca(sizeof(type)*(count))
 
#define SDL_stack_free(data)
 
#define SDL_min(x, y)   (((x) < (y)) ? (x) : (y))
 
#define SDL_max(x, y)   (((x) > (y)) ? (x) : (y))
 
#define SDL_clamp(x, a, b)   (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))
 
#define SDL_memcpy   memcpy
 
#define SDL_copyp(dst, src)
 
#define SDL_memmove   memmove
 
#define SDL_memset   memset
 
#define SDL_zero(x)   SDL_memset(&(x), 0, sizeof((x)))
 
#define SDL_zerop(x)   SDL_memset((x), 0, sizeof(*(x)))
 
#define SDL_zeroa(x)   SDL_memset((x), 0, sizeof((x)))
 
#define SDL_PI_D   3.141592653589793238462643383279502884
 
#define SDL_PI_F   3.141592653589793238462643383279502884F
 
#define SDL_ICONV_ERROR   (size_t)-1
 
#define SDL_ICONV_E2BIG   (size_t)-2
 
#define SDL_ICONV_EILSEQ   (size_t)-3
 
#define SDL_ICONV_EINVAL   (size_t)-4
 
#define SDL_iconv_utf8_locale(S)   SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
 
#define SDL_iconv_utf8_ucs2(S)   (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
 
#define SDL_iconv_utf8_ucs4(S)   (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
 
#define SDL_iconv_wchar_utf8(S)   SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))
 
typedef void *(* SDL_malloc_func) (size_t size)
 
typedef void *(* SDL_calloc_func) (size_t nmemb, size_t size)
 
typedef void *(* SDL_realloc_func) (void *mem, size_t size)
 
typedef void(* SDL_free_func) (void *mem)
 
typedef struct SDL_iconv_data_t * SDL_iconv_t
 
typedef void(* SDL_FunctionPointer) (void)
 
SDL_MALLOC size_t size
 
SDL_MALLOC void * SDL_malloc (size_t size)
 
SDL_MALLOC SDL_ALLOC_SIZE2 (1, 2) void *SDL_calloc(size_t nmemb
 
 SDL_ALLOC_SIZE (2) void *SDL_realloc(void *mem
 
void SDL_free (void *mem)
 
void SDL_GetOriginalMemoryFunctions (SDL_malloc_func *malloc_func, SDL_calloc_func *calloc_func, SDL_realloc_func *realloc_func, SDL_free_func *free_func)
 
void SDL_GetMemoryFunctions (SDL_malloc_func *malloc_func, SDL_calloc_func *calloc_func, SDL_realloc_func *realloc_func, SDL_free_func *free_func)
 
int SDL_SetMemoryFunctions (SDL_malloc_func malloc_func, SDL_calloc_func calloc_func, SDL_realloc_func realloc_func, SDL_free_func free_func)
 
SDL_MALLOC void * SDL_aligned_alloc (size_t alignment, size_t size)
 
void SDL_aligned_free (void *mem)
 
int SDL_GetNumAllocations (void)
 
char * SDL_getenv (const char *name)
 
int SDL_setenv (const char *name, const char *value, int overwrite)
 
void SDL_qsort (void *base, size_t nmemb, size_t size, int(*compare)(const void *, const void *))
 
void * SDL_bsearch (const void *key, const void *base, size_t nmemb, size_t size, int(*compare)(const void *, const void *))
 
void SDL_qsort_r (void *base, size_t nmemb, size_t size, int(*compare)(void *, const void *, const void *), void *userdata)
 
void * SDL_bsearch_r (const void *key, const void *base, size_t nmemb, size_t size, int(*compare)(void *, const void *, const void *), void *userdata)
 
int SDL_abs (int x)
 
int SDL_isalpha (int x)
 
int SDL_isalnum (int x)
 
int SDL_isblank (int x)
 
int SDL_iscntrl (int x)
 
int SDL_isdigit (int x)
 
int SDL_isxdigit (int x)
 
int SDL_ispunct (int x)
 
int SDL_isspace (int x)
 
int SDL_isupper (int x)
 
int SDL_islower (int x)
 
int SDL_isprint (int x)
 
int SDL_isgraph (int x)
 
int SDL_toupper (int x)
 
int SDL_tolower (int x)
 
Uint16 SDL_crc16 (Uint16 crc, const void *data, size_t len)
 
Uint32 SDL_crc32 (Uint32 crc, const void *data, size_t len)
 
void * SDL_memcpy (SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len)
 
void * SDL_memmove (SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len)
 
void * SDL_memset (SDL_OUT_BYTECAP(len) void *dst, int c, size_t len)
 
void * SDL_memset4 (void *dst, Uint32 val, size_t dwords)
 
int SDL_memcmp (const void *s1, const void *s2, size_t len)
 
size_t SDL_wcslen (const wchar_t *wstr)
 
size_t SDL_wcsnlen (const wchar_t *wstr, size_t maxlen)
 
size_t SDL_wcslcpy (SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen)
 
size_t SDL_wcslcat (SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen)
 
wchar_t * SDL_wcsdup (const wchar_t *wstr)
 
wchar_t * SDL_wcsstr (const wchar_t *haystack, const wchar_t *needle)
 
wchar_t * SDL_wcsnstr (const wchar_t *haystack, const wchar_t *needle, size_t maxlen)
 
int SDL_wcscmp (const wchar_t *str1, const wchar_t *str2)
 
int SDL_wcsncmp (const wchar_t *str1, const wchar_t *str2, size_t maxlen)
 
int SDL_wcscasecmp (const wchar_t *str1, const wchar_t *str2)
 
int SDL_wcsncasecmp (const wchar_t *str1, const wchar_t *str2, size_t len)
 
long SDL_wcstol (const wchar_t *str, wchar_t **endp, int base)
 
size_t SDL_strlen (const char *str)
 
size_t SDL_strnlen (const char *str, size_t maxlen)
 
size_t SDL_strlcpy (SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen)
 
size_t SDL_utf8strlcpy (SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes)
 
size_t SDL_strlcat (SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen)
 
SDL_MALLOC char * SDL_strdup (const char *str)
 
SDL_MALLOC char * SDL_strndup (const char *str, size_t maxlen)
 
char * SDL_strrev (char *str)
 
char * SDL_strupr (char *str)
 
char * SDL_strlwr (char *str)
 
char * SDL_strchr (const char *str, int c)
 
char * SDL_strrchr (const char *str, int c)
 
char * SDL_strstr (const char *haystack, const char *needle)
 
char * SDL_strnstr (const char *haystack, const char *needle, size_t maxlen)
 
char * SDL_strcasestr (const char *haystack, const char *needle)
 
char * SDL_strtok_r (char *s1, const char *s2, char **saveptr)
 
size_t SDL_utf8strlen (const char *str)
 
size_t SDL_utf8strnlen (const char *str, size_t bytes)
 
char * SDL_itoa (int value, char *str, int radix)
 
char * SDL_uitoa (unsigned int value, char *str, int radix)
 
char * SDL_ltoa (long value, char *str, int radix)
 
char * SDL_ultoa (unsigned long value, char *str, int radix)
 
char * SDL_lltoa (Sint64 value, char *str, int radix)
 
char * SDL_ulltoa (Uint64 value, char *str, int radix)
 
int SDL_atoi (const char *str)
 
double SDL_atof (const char *str)
 
long SDL_strtol (const char *str, char **endp, int base)
 
unsigned long SDL_strtoul (const char *str, char **endp, int base)
 
Sint64 SDL_strtoll (const char *str, char **endp, int base)
 
Uint64 SDL_strtoull (const char *str, char **endp, int base)
 
double SDL_strtod (const char *str, char **endp)
 
int SDL_strcmp (const char *str1, const char *str2)
 
int SDL_strncmp (const char *str1, const char *str2, size_t maxlen)
 
int SDL_strcasecmp (const char *str1, const char *str2)
 
int SDL_strncasecmp (const char *str1, const char *str2, size_t len)
 
int SDL_sscanf (const char *text, SDL_SCANF_FORMAT_STRING const char *fmt,...) SDL_SCANF_VARARG_FUNC(2)
 
int SDL_vsscanf (const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2)
 
int SDL_snprintf (SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(3)
 
int SDL_swprintf (SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const wchar_t *fmt,...) SDL_WPRINTF_VARARG_FUNC(3)
 
int SDL_vsnprintf (SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3)
 
int SDL_vswprintf (SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, const wchar_t *fmt, va_list ap)
 
int SDL_asprintf (char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
 
int SDL_vasprintf (char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2)
 
double SDL_acos (double x)
 
float SDL_acosf (float x)
 
double SDL_asin (double x)
 
float SDL_asinf (float x)
 
double SDL_atan (double x)
 
float SDL_atanf (float x)
 
double SDL_atan2 (double y, double x)
 
float SDL_atan2f (float y, float x)
 
double SDL_ceil (double x)
 
float SDL_ceilf (float x)
 
double SDL_copysign (double x, double y)
 
float SDL_copysignf (float x, float y)
 
double SDL_cos (double x)
 
float SDL_cosf (float x)
 
double SDL_exp (double x)
 
float SDL_expf (float x)
 
double SDL_fabs (double x)
 
float SDL_fabsf (float x)
 
double SDL_floor (double x)
 
float SDL_floorf (float x)
 
double SDL_trunc (double x)
 
float SDL_truncf (float x)
 
double SDL_fmod (double x, double y)
 
float SDL_fmodf (float x, float y)
 
double SDL_log (double x)
 
float SDL_logf (float x)
 
double SDL_log10 (double x)
 
float SDL_log10f (float x)
 
double SDL_modf (double x, double *y)
 
float SDL_modff (float x, float *y)
 
double SDL_pow (double x, double y)
 
float SDL_powf (float x, float y)
 
double SDL_round (double x)
 
float SDL_roundf (float x)
 
long SDL_lround (double x)
 
long SDL_lroundf (float x)
 
double SDL_scalbn (double x, int n)
 
float SDL_scalbnf (float x, int n)
 
double SDL_sin (double x)
 
float SDL_sinf (float x)
 
double SDL_sqrt (double x)
 
float SDL_sqrtf (float x)
 
double SDL_tan (double x)
 
float SDL_tanf (float x)
 
SDL_iconv_t SDL_iconv_open (const char *tocode, const char *fromcode)
 
int SDL_iconv_close (SDL_iconv_t cd)
 
size_t SDL_iconv (SDL_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
 
char * SDL_iconv_string (const char *tocode, const char *fromcode, const char *inbuf, size_t inbytesleft)
 
SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, size_t b, size_t *ret)
 
SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, size_t b, size_t *ret)
 

Detailed Description

This is a general header that includes C language support.

Definition in file SDL_stdinc.h.

Macro Definition Documentation

◆ SDL_arraysize

#define SDL_arraysize (   array)    (sizeof(array)/sizeof(array[0]))

The number of elements in an array.

Definition at line 92 of file SDL_stdinc.h.

◆ SDL_clamp

#define SDL_clamp (   x,
  a,
 
)    (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))

Definition at line 519 of file SDL_stdinc.h.

◆ SDL_COMPILE_TIME_ASSERT

#define SDL_COMPILE_TIME_ASSERT (   name,
 
)     typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]

Definition at line 358 of file SDL_stdinc.h.

386{
387 DUMMY_ENUM_VALUE
388} SDL_DUMMY_ENUM;
389
390SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
391#endif
392#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
393/** \endcond */
394
395#include <SDL3/SDL_begin_code.h>
396/* Set up for C function definitions, even when using C++ */
397#ifdef __cplusplus
398extern "C" {
399#endif
400
401#ifndef SDL_DISABLE_ALLOCA
402#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
403#define SDL_stack_free(data)
404#else
405#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
406#define SDL_stack_free(data) SDL_free(data)
407#endif
408
409extern DECLSPEC SDL_MALLOC void *SDLCALL SDL_malloc(size_t size);
410extern DECLSPEC SDL_MALLOC SDL_ALLOC_SIZE2(1, 2) void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
411extern DECLSPEC SDL_ALLOC_SIZE(2) void *SDLCALL SDL_realloc(void *mem, size_t size);
412extern DECLSPEC void SDLCALL SDL_free(void *mem);
413
414typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
415typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
416typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
417typedef void (SDLCALL *SDL_free_func)(void *mem);
418
419/**
420 * Get the original set of SDL memory functions
421 *
422 * \param malloc_func filled with malloc function
423 * \param calloc_func filled with calloc function
424 * \param realloc_func filled with realloc function
425 * \param free_func filled with free function
426 *
427 * \since This function is available since SDL 3.0.0.
428 */
429extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func,
430 SDL_calloc_func *calloc_func,
431 SDL_realloc_func *realloc_func,
432 SDL_free_func *free_func);
433
434/**
435 * Get the current set of SDL memory functions
436 *
437 * \param malloc_func filled with malloc function
438 * \param calloc_func filled with calloc function
439 * \param realloc_func filled with realloc function
440 * \param free_func filled with free function
441 *
442 * \since This function is available since SDL 3.0.0.
443 */
444extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
445 SDL_calloc_func *calloc_func,
446 SDL_realloc_func *realloc_func,
447 SDL_free_func *free_func);
448
449/**
450 * Replace SDL's memory allocation functions with a custom set
451 *
452 * \param malloc_func custom malloc function
453 * \param calloc_func custom calloc function
454 * \param realloc_func custom realloc function
455 * \param free_func custom free function
456 * \returns 0 on success or a negative error code on failure; call
457 * SDL_GetError() for more information.
458 *
459 * \since This function is available since SDL 3.0.0.
460 */
461extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
462 SDL_calloc_func calloc_func,
463 SDL_realloc_func realloc_func,
464 SDL_free_func free_func);
465
466/**
467 * Allocate memory aligned to a specific value
468 *
469 * If `alignment` is less than the size of `void *`, then it will be increased
470 * to match that.
471 *
472 * The returned memory address will be a multiple of the alignment value, and
473 * the amount of memory allocated will be a multiple of the alignment value.
474 *
475 * The memory returned by this function must be freed with SDL_aligned_free()
476 *
477 * \param alignment the alignment requested
478 * \param size the size to allocate
479 * \returns a pointer to the aligned memory
480 *
481 * \since This function is available since SDL 3.0.0.
482 *
483 * \sa SDL_aligned_free
484 */
485extern DECLSPEC SDL_MALLOC void *SDLCALL SDL_aligned_alloc(size_t alignment, size_t size);
486
487/**
488 * Free memory allocated by SDL_aligned_alloc()
489 *
490 * \since This function is available since SDL 3.0.0.
491 *
492 * \sa SDL_aligned_alloc
493 */
494extern DECLSPEC void SDLCALL SDL_aligned_free(void *mem);
495
496/**
497 * Get the number of outstanding (unfreed) allocations
498 *
499 * \returns the number of allocations
500 *
501 * \since This function is available since SDL 3.0.0.
502 */
503extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
504
505extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
506extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
507
508extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));
509extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));
510
511extern DECLSPEC void SDLCALL SDL_qsort_r(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (void *, const void *, const void *), void *userdata);
512extern DECLSPEC void * SDLCALL SDL_bsearch_r(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (void *, const void *, const void *), void *userdata);
513
514extern DECLSPEC int SDLCALL SDL_abs(int x);
515
516/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */
517#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
518#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
519#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))
520
521extern DECLSPEC int SDLCALL SDL_isalpha(int x);
522extern DECLSPEC int SDLCALL SDL_isalnum(int x);
523extern DECLSPEC int SDLCALL SDL_isblank(int x);
524extern DECLSPEC int SDLCALL SDL_iscntrl(int x);
525extern DECLSPEC int SDLCALL SDL_isdigit(int x);
526extern DECLSPEC int SDLCALL SDL_isxdigit(int x);
527extern DECLSPEC int SDLCALL SDL_ispunct(int x);
528extern DECLSPEC int SDLCALL SDL_isspace(int x);
529extern DECLSPEC int SDLCALL SDL_isupper(int x);
530extern DECLSPEC int SDLCALL SDL_islower(int x);
531extern DECLSPEC int SDLCALL SDL_isprint(int x);
532extern DECLSPEC int SDLCALL SDL_isgraph(int x);
533extern DECLSPEC int SDLCALL SDL_toupper(int x);
534extern DECLSPEC int SDLCALL SDL_tolower(int x);
535
536extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len);
537extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len);
538
539extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
540
541/* Take advantage of compiler optimizations for memcpy */
542#ifndef SDL_SLOW_MEMCPY
543#ifdef SDL_memcpy
544#undef SDL_memcpy
545#endif
546#define SDL_memcpy memcpy
547#endif
548
549#define SDL_copyp(dst, src) \
550 { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \
551 SDL_memcpy((dst), (src), sizeof(*(src)))
552
553extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
554
555/* Take advantage of compiler optimizations for memmove */
556#ifndef SDL_SLOW_MEMMOVE
557#ifdef SDL_memmove
558#undef SDL_memmove
559#endif
560#define SDL_memmove memmove
561#endif
562
563extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
564extern DECLSPEC void *SDLCALL SDL_memset4(void *dst, Uint32 val, size_t dwords);
565
566/* Take advantage of compiler optimizations for memset */
567#ifndef SDL_SLOW_MEMSET
568#ifdef SDL_memset
569#undef SDL_memset
570#endif
571#define SDL_memset memset
572#endif
573
574#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
575#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
576#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x)))
577
578extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
579
580extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
581extern DECLSPEC size_t SDLCALL SDL_wcsnlen(const wchar_t *wstr, size_t maxlen);
582extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
583extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
584extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
585extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle);
586extern DECLSPEC wchar_t *SDLCALL SDL_wcsnstr(const wchar_t *haystack, const wchar_t *needle, size_t maxlen);
587
588extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
589extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen);
590extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2);
591extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len);
592extern DECLSPEC long SDLCALL SDL_wcstol(const wchar_t *str, wchar_t **endp, int base);
593
594extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
595extern DECLSPEC size_t SDLCALL SDL_strnlen(const char *str, size_t maxlen);
596extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
597extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
598extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
599extern DECLSPEC SDL_MALLOC char *SDLCALL SDL_strdup(const char *str);
600extern DECLSPEC SDL_MALLOC char *SDLCALL SDL_strndup(const char *str, size_t maxlen);
601extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
602extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
603extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
604extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
605extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
606extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
607extern DECLSPEC char *SDLCALL SDL_strnstr(const char *haystack, const char *needle, size_t maxlen);
608extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle);
609extern DECLSPEC char *SDLCALL SDL_strtok_r(char *s1, const char *s2, char **saveptr);
610extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
611extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes);
612
613extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
614extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
615extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
616extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
617extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
618extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
619
620extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
621extern DECLSPEC double SDLCALL SDL_atof(const char *str);
622extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
623extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
624extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
625extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
626extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
627
628extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
629extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
630extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
631extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
632
633extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
634extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2);
635extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
636extern DECLSPEC int SDLCALL SDL_swprintf(SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const wchar_t *fmt, ... ) SDL_WPRINTF_VARARG_FUNC(3);
637extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);
638extern DECLSPEC int SDLCALL SDL_vswprintf(SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, const wchar_t *fmt, va_list ap);
639extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
640extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);
641
642#ifndef SDL_PI_D
643#define SDL_PI_D 3.141592653589793238462643383279502884 /**< pi (double) */
644#endif
645#ifndef SDL_PI_F
646#define SDL_PI_F 3.141592653589793238462643383279502884F /**< pi (float) */
647#endif
648
649/**
650 * Use this function to compute arc cosine of `x`.
651 *
652 * The definition of `y = acos(x)` is `x = cos(y)`.
653 *
654 * Domain: `-1 <= x <= 1`
655 *
656 * Range: `0 <= y <= Pi`
657 *
658 * \param x floating point value, in radians.
659 * \returns arc cosine of `x`.
660 *
661 * \since This function is available since SDL 3.0.0.
662 */
663extern DECLSPEC double SDLCALL SDL_acos(double x);
664extern DECLSPEC float SDLCALL SDL_acosf(float x);
665extern DECLSPEC double SDLCALL SDL_asin(double x);
666extern DECLSPEC float SDLCALL SDL_asinf(float x);
667extern DECLSPEC double SDLCALL SDL_atan(double x);
668extern DECLSPEC float SDLCALL SDL_atanf(float x);
669extern DECLSPEC double SDLCALL SDL_atan2(double y, double x);
670extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x);
671extern DECLSPEC double SDLCALL SDL_ceil(double x);
672extern DECLSPEC float SDLCALL SDL_ceilf(float x);
673extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
674extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
675extern DECLSPEC double SDLCALL SDL_cos(double x);
676extern DECLSPEC float SDLCALL SDL_cosf(float x);
677extern DECLSPEC double SDLCALL SDL_exp(double x);
678extern DECLSPEC float SDLCALL SDL_expf(float x);
679extern DECLSPEC double SDLCALL SDL_fabs(double x);
680extern DECLSPEC float SDLCALL SDL_fabsf(float x);
681extern DECLSPEC double SDLCALL SDL_floor(double x);
682extern DECLSPEC float SDLCALL SDL_floorf(float x);
683extern DECLSPEC double SDLCALL SDL_trunc(double x);
684extern DECLSPEC float SDLCALL SDL_truncf(float x);
685extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
686extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
687extern DECLSPEC double SDLCALL SDL_log(double x);
688extern DECLSPEC float SDLCALL SDL_logf(float x);
689extern DECLSPEC double SDLCALL SDL_log10(double x);
690extern DECLSPEC float SDLCALL SDL_log10f(float x);
691extern DECLSPEC double SDLCALL SDL_modf(double x, double *y);
692extern DECLSPEC float SDLCALL SDL_modff(float x, float *y);
693extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
694extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
695extern DECLSPEC double SDLCALL SDL_round(double x);
696extern DECLSPEC float SDLCALL SDL_roundf(float x);
697extern DECLSPEC long SDLCALL SDL_lround(double x);
698extern DECLSPEC long SDLCALL SDL_lroundf(float x);
699extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
700extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
701extern DECLSPEC double SDLCALL SDL_sin(double x);
702extern DECLSPEC float SDLCALL SDL_sinf(float x);
703extern DECLSPEC double SDLCALL SDL_sqrt(double x);
704extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
705extern DECLSPEC double SDLCALL SDL_tan(double x);
706extern DECLSPEC float SDLCALL SDL_tanf(float x);
707
708/* The SDL implementation of iconv() returns these error codes */
709#define SDL_ICONV_ERROR (size_t)-1
710#define SDL_ICONV_E2BIG (size_t)-2
711#define SDL_ICONV_EILSEQ (size_t)-3
712#define SDL_ICONV_EINVAL (size_t)-4
713
714/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
715typedef struct SDL_iconv_data_t *SDL_iconv_t;
716extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
717 const char *fromcode);
718extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
719extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
720 size_t * inbytesleft, char **outbuf,
721 size_t * outbytesleft);
722
723/**
724 * This function converts a buffer or string between encodings in one pass,
725 * returning a string that must be freed with SDL_free() or NULL on error.
726 *
727 * \since This function is available since SDL 3.0.0.
728 */
729extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
730 const char *fromcode,
731 const char *inbuf,
732 size_t inbytesleft);
733#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
734#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
735#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
736#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))
737
738/* force builds using Clang's static analysis tools to use literal C runtime
739 here, since there are possibly tests that are ineffective otherwise. */
740#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
741
742/* The analyzer knows about strlcpy even when the system doesn't provide it */
743#if !defined(HAVE_STRLCPY) && !defined(strlcpy)
744size_t strlcpy(char* dst, const char* src, size_t size);
745#endif
746
747/* The analyzer knows about strlcat even when the system doesn't provide it */
748#if !defined(HAVE_STRLCAT) && !defined(strlcat)
749size_t strlcat(char* dst, const char* src, size_t size);
750#endif
751
752#if !defined(HAVE_WCSLCPY) && !defined(wcslcpy)
753size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size);
754#endif
755
756#if !defined(HAVE_WCSLCAT) && !defined(wcslcat)
757size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size);
758#endif
759
760/* Starting LLVM 16, the analyser errors out if these functions do not have
761 their prototype defined (clang-diagnostic-implicit-function-declaration) */
762#include <stdlib.h>
763#include <stdio.h>
764
765#define SDL_malloc malloc
766#define SDL_calloc calloc
767#define SDL_realloc realloc
768#define SDL_free free
769#ifndef SDL_memcpy
770#define SDL_memcpy memcpy
771#endif
772#ifndef SDL_memmove
773#define SDL_memmove memmove
774#endif
775#ifndef SDL_memset
776#define SDL_memset memset
777#endif
778#define SDL_memcmp memcmp
779#define SDL_strlcpy strlcpy
780#define SDL_strlcat strlcat
781#define SDL_strlen strlen
782#define SDL_wcslen wcslen
783#define SDL_wcslcpy wcslcpy
784#define SDL_wcslcat wcslcat
785#define SDL_strdup strdup
786#define SDL_wcsdup wcsdup
787#define SDL_strchr strchr
788#define SDL_strrchr strrchr
789#define SDL_strstr strstr
790#define SDL_wcsstr wcsstr
791#define SDL_strtok_r strtok_r
792#define SDL_strcmp strcmp
793#define SDL_wcscmp wcscmp
794#define SDL_strncmp strncmp
795#define SDL_wcsncmp wcsncmp
796#define SDL_strcasecmp strcasecmp
797#define SDL_strncasecmp strncasecmp
798#define SDL_sscanf sscanf
799#define SDL_vsscanf vsscanf
800#define SDL_snprintf snprintf
801#define SDL_vsnprintf vsnprintf
802#endif
803
804/**
805 * If a * b would overflow, return -1. Otherwise store a * b via ret
806 * and return 0.
807 *
808 * \since This function is available since SDL 3.0.0.
809 */
811 size_t b,
812 size_t *ret)
813{
814 if (a != 0 && b > SDL_SIZE_MAX / a) {
815 return -1;
816 }
817 *ret = a * b;
818 return 0;
819}
820
821#if SDL_HAS_BUILTIN(__builtin_mul_overflow)
822/* This needs to be wrapped in an inline rather than being a direct #define,
823 * because __builtin_mul_overflow() is type-generic, but we want to be
824 * consistent about interpreting a and b as size_t. */
825SDL_FORCE_INLINE int SDL_size_mul_overflow_builtin (size_t a,
826 size_t b,
827 size_t *ret)
828{
829 return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1;
830}
831#define SDL_size_mul_overflow(a, b, ret) (SDL_size_mul_overflow_builtin(a, b, ret))
832#endif
833
834/**
835 * If a + b would overflow, return -1. Otherwise store a + b via ret
836 * and return 0.
837 *
838 * \since This function is available since SDL 3.0.0.
839 */
841 size_t b,
842 size_t *ret)
843{
844 if (b > SDL_SIZE_MAX - a) {
845 return -1;
846 }
847 *ret = a + b;
848 return 0;
849}
850
851#if SDL_HAS_BUILTIN(__builtin_add_overflow)
852/* This needs to be wrapped in an inline rather than being a direct #define,
853 * the same as the call to __builtin_mul_overflow() above. */
854SDL_FORCE_INLINE int SDL_size_add_overflow_builtin (size_t a,
855 size_t b,
856 size_t *ret)
857{
858 return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1;
859}
860#define SDL_size_add_overflow(a, b, ret) (SDL_size_add_overflow_builtin(a, b, ret))
861#endif
862
863/* This is a generic function pointer which should be cast to the type you expect */
864#ifdef SDL_FUNCTION_POINTER_IS_VOID_POINTER
865typedef void *SDL_FunctionPointer;
866#else
867typedef void (*SDL_FunctionPointer)(void);
868#endif
869
870/* Ends C function definitions when using C++ */
871#ifdef __cplusplus
872}
873#endif
874#include <SDL3/SDL_close_code.h>
875
876#endif /* SDL_stdinc_h_ */
#define SDL_ALLOC_SIZE(p)
#define SDL_ALLOC_SIZE2(p1, p2)
#define SDL_FORCE_INLINE
#define SDL_MALLOC
wchar_t * SDL_wcsdup(const wchar_t *wstr)
double SDL_sqrt(double x)
int SDL_atoi(const char *str)
#define SDL_memset
Definition SDL_stdinc.h:571
SDL_iconv_t SDL_iconv_open(const char *tocode, const char *fromcode)
float SDL_tanf(float x)
char * SDL_strtok_r(char *s1, const char *s2, char **saveptr)
int SDL_isspace(int x)
int SDL_isalnum(int x)
char * SDL_strlwr(char *str)
struct SDL_iconv_data_t * SDL_iconv_t
Definition SDL_stdinc.h:715
wchar_t * SDL_wcsnstr(const wchar_t *haystack, const wchar_t *needle, size_t maxlen)
int SDL_tolower(int x)
float SDL_modff(float x, float *y)
double SDL_modf(double x, double *y)
void * SDL_bsearch_r(const void *key, const void *base, size_t nmemb, size_t size, int(*compare)(void *, const void *, const void *), void *userdata)
int SDL_abs(int x)
size_t SDL_iconv(SDL_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
void SDL_qsort_r(void *base, size_t nmemb, size_t size, int(*compare)(void *, const void *, const void *), void *userdata)
double SDL_tan(double x)
char * SDL_ltoa(long value, char *str, int radix)
int SDL_isxdigit(int x)
float SDL_ceilf(float x)
int64_t Sint64
Definition SDL_stdinc.h:181
void SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, SDL_calloc_func *calloc_func, SDL_realloc_func *realloc_func, SDL_free_func *free_func)
void *(* SDL_malloc_func)(size_t size)
Definition SDL_stdinc.h:414
#define SDL_OUT_BYTECAP(x)
Definition SDL_stdinc.h:324
char * SDL_strrchr(const char *str, int c)
#define SDL_SIZE_MAX
Definition SDL_stdinc.h:75
int SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen)
uint16_t Uint16
Definition SDL_stdinc.h:162
int SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt,...) SDL_SCANF_VARARG_FUNC(2)
void SDL_qsort(void *base, size_t nmemb, size_t size, int(*compare)(const void *, const void *))
float SDL_atanf(float x)
int SDL_isprint(int x)
#define SDL_PRINTF_VARARG_FUNCV(fmtargnumber)
Definition SDL_stdinc.h:338
int SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len)
char * SDL_itoa(int value, char *str, int radix)
float SDL_copysignf(float x, float y)
SDL_MALLOC char * SDL_strndup(const char *str, size_t maxlen)
char * SDL_strupr(char *str)
float SDL_acosf(float x)
int SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, SDL_calloc_func calloc_func, SDL_realloc_func realloc_func, SDL_free_func free_func)
size_t SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen)
SDL_FORCE_INLINE int SDL_size_mul_overflow(size_t a, size_t b, size_t *ret)
Definition SDL_stdinc.h:810
int SDL_strncmp(const char *str1, const char *str2, size_t maxlen)
char * SDL_strchr(const char *str, int c)
SDL_MALLOC void * SDL_aligned_alloc(size_t alignment, size_t size)
#define SDL_IN_BYTECAP(x)
Definition SDL_stdinc.h:320
int SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2)
char * SDL_uitoa(unsigned int value, char *str, int radix)
int SDL_isalpha(int x)
double SDL_round(double x)
long SDL_lround(double x)
int SDL_isdigit(int x)
int SDL_isblank(int x)
size_t SDL_strnlen(const char *str, size_t maxlen)
int SDL_iconv_close(SDL_iconv_t cd)
double SDL_sin(double x)
char * SDL_strcasestr(const char *haystack, const char *needle)
float SDL_scalbnf(float x, int n)
double SDL_pow(double x, double y)
size_t SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes)
float SDL_asinf(float x)
double SDL_asin(double x)
double SDL_acos(double x)
wchar_t * SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle)
float SDL_sinf(float x)
int SDL_swprintf(SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const wchar_t *fmt,...) SDL_WPRINTF_VARARG_FUNC(3)
int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3)
#define SDL_SCANF_VARARG_FUNCV(fmtargnumber)
Definition SDL_stdinc.h:340
double SDL_ceil(double x)
size_t SDL_utf8strnlen(const char *str, size_t bytes)
int SDL_strcasecmp(const char *str1, const char *str2)
void * SDL_memset4(void *dst, Uint32 val, size_t dwords)
#define SDL_SCANF_FORMAT_STRING
Definition SDL_stdinc.h:327
char * SDL_strstr(const char *haystack, const char *needle)
int SDL_GetNumAllocations(void)
double SDL_exp(double x)
size_t SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen)
double SDL_atan(double x)
float SDL_sqrtf(float x)
size_t SDL_wcslen(const wchar_t *wstr)
int SDL_setenv(const char *name, const char *value, int overwrite)
size_t SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen)
#define SDL_INOUT_Z_CAP(x)
Definition SDL_stdinc.h:321
double SDL_scalbn(double x, int n)
char * SDL_iconv_string(const char *tocode, const char *fromcode, const char *inbuf, size_t inbytesleft)
int SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2)
char * SDL_getenv(const char *name)
double SDL_fmod(double x, double y)
char * SDL_lltoa(Sint64 value, char *str, int radix)
double SDL_fabs(double x)
Sint64 SDL_strtoll(const char *str, char **endp, int base)
int SDL_ispunct(int x)
float SDL_truncf(float x)
double SDL_log10(double x)
SDL_MALLOC size_t size
Definition SDL_stdinc.h:410
float SDL_expf(float x)
char * SDL_strrev(char *str)
double SDL_floor(double x)
int SDL_wcscmp(const wchar_t *str1, const wchar_t *str2)
long SDL_strtol(const char *str, char **endp, int base)
Uint32 SDL_crc32(Uint32 crc, const void *data, size_t len)
int SDL_islower(int x)
void SDL_aligned_free(void *mem)
float SDL_logf(float x)
float SDL_log10f(float x)
void(* SDL_free_func)(void *mem)
Definition SDL_stdinc.h:417
int SDL_memcmp(const void *s1, const void *s2, size_t len)
char * SDL_ulltoa(Uint64 value, char *str, int radix)
float SDL_roundf(float x)
double SDL_strtod(const char *str, char **endp)
long SDL_lroundf(float x)
char * SDL_ultoa(unsigned long value, char *str, int radix)
double SDL_atof(const char *str)
char * SDL_strnstr(const char *haystack, const char *needle, size_t maxlen)
size_t SDL_wcsnlen(const wchar_t *wstr, size_t maxlen)
unsigned long SDL_strtoul(const char *str, char **endp, int base)
float SDL_floorf(float x)
int SDL_strcmp(const char *str1, const char *str2)
SDL_FORCE_INLINE int SDL_size_add_overflow(size_t a, size_t b, size_t *ret)
Definition SDL_stdinc.h:840
double SDL_cos(double x)
#define SDL_PRINTF_FORMAT_STRING
Definition SDL_stdinc.h:326
float SDL_fmodf(float x, float y)
int SDL_vswprintf(SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, const wchar_t *fmt, va_list ap)
void SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, SDL_calloc_func *calloc_func, SDL_realloc_func *realloc_func, SDL_free_func *free_func)
SDL_MALLOC void * SDL_malloc(size_t size)
#define SDL_PRINTF_VARARG_FUNC(fmtargnumber)
Definition SDL_stdinc.h:337
#define SDL_COMPILE_TIME_ASSERT(name, x)
Definition SDL_stdinc.h:358
float SDL_atan2f(float y, float x)
int SDL_isupper(int x)
long SDL_wcstol(const wchar_t *str, wchar_t **endp, int base)
float SDL_fabsf(float x)
uint64_t Uint64
Definition SDL_stdinc.h:187
SDL_MALLOC char * SDL_strdup(const char *str)
int SDL_iscntrl(int x)
#define SDL_memcpy
Definition SDL_stdinc.h:546
void SDL_free(void *mem)
void *(* SDL_calloc_func)(size_t nmemb, size_t size)
Definition SDL_stdinc.h:415
#define SDL_SCANF_VARARG_FUNC(fmtargnumber)
Definition SDL_stdinc.h:339
double SDL_atan2(double y, double x)
double SDL_log(double x)
void(* SDL_FunctionPointer)(void)
Definition SDL_stdinc.h:867
int SDL_toupper(int x)
uint32_t Uint32
Definition SDL_stdinc.h:174
float SDL_powf(float x, float y)
size_t SDL_strlen(const char *str)
#define SDL_memmove
Definition SDL_stdinc.h:560
Uint16 SDL_crc16(Uint16 crc, const void *data, size_t len)
int SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(3)
float SDL_cosf(float x)
void * SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int(*compare)(const void *, const void *))
size_t SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen)
double SDL_copysign(double x, double y)
int SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2)
void *(* SDL_realloc_func)(void *mem, size_t size)
Definition SDL_stdinc.h:416
size_t SDL_utf8strlen(const char *str)
int SDL_isgraph(int x)
int SDL_strncasecmp(const char *str1, const char *str2, size_t len)
int SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
#define SDL_OUT_Z_CAP(x)
Definition SDL_stdinc.h:322
#define SDL_WPRINTF_VARARG_FUNC(fmtargnumber)
Definition SDL_stdinc.h:341
Uint64 SDL_strtoull(const char *str, char **endp, int base)
double SDL_trunc(double x)

◆ SDL_const_cast

#define SDL_const_cast (   type,
  expression 
)    ((type)(expression))

Definition at line 116 of file SDL_stdinc.h.

◆ SDL_copyp

#define SDL_copyp (   dst,
  src 
)
Value:
{ SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \
SDL_memcpy((dst), (src), sizeof(*(src)))
#define SDL_copyp(dst, src)
Definition SDL_stdinc.h:549

Definition at line 549 of file SDL_stdinc.h.

550 { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \
551 SDL_memcpy((dst), (src), sizeof(*(src)))

◆ SDL_FALSE

#define SDL_FALSE   0

A boolean type.

Definition at line 135 of file SDL_stdinc.h.

◆ SDL_FLT_EPSILON

#define SDL_FLT_EPSILON   1.1920928955078125e-07F /* 0x0.000002p0 */

Definition at line 209 of file SDL_stdinc.h.

◆ SDL_FOURCC

#define SDL_FOURCC (   A,
  B,
  C,
 
)
Value:
uint8_t Uint8
Definition SDL_stdinc.h:150
#define SDL_static_cast(type, expression)
Definition SDL_stdinc.h:115

Definition at line 121 of file SDL_stdinc.h.

◆ SDL_HAS_BUILTIN

#define SDL_HAS_BUILTIN (   x)    0

Check if the compiler supports a given builtin. Supported by virtually all clang versions and recent gcc. Use this instead of checking the clang version if possible.

Definition at line 86 of file SDL_stdinc.h.

◆ SDL_ICONV_E2BIG

#define SDL_ICONV_E2BIG   (size_t)-2

Definition at line 710 of file SDL_stdinc.h.

◆ SDL_ICONV_EILSEQ

#define SDL_ICONV_EILSEQ   (size_t)-3

Definition at line 711 of file SDL_stdinc.h.

◆ SDL_ICONV_EINVAL

#define SDL_ICONV_EINVAL   (size_t)-4

Definition at line 712 of file SDL_stdinc.h.

◆ SDL_ICONV_ERROR

#define SDL_ICONV_ERROR   (size_t)-1

Definition at line 709 of file SDL_stdinc.h.

◆ SDL_iconv_utf8_locale

#define SDL_iconv_utf8_locale (   S)    SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)

Definition at line 733 of file SDL_stdinc.h.

◆ SDL_iconv_utf8_ucs2

#define SDL_iconv_utf8_ucs2 (   S)    (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)

Definition at line 734 of file SDL_stdinc.h.

◆ SDL_iconv_utf8_ucs4

#define SDL_iconv_utf8_ucs4 (   S)    (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)

Definition at line 735 of file SDL_stdinc.h.

◆ SDL_iconv_wchar_utf8

#define SDL_iconv_wchar_utf8 (   S)    SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))

Definition at line 736 of file SDL_stdinc.h.

◆ SDL_IN_BYTECAP

#define SDL_IN_BYTECAP (   x)

Definition at line 320 of file SDL_stdinc.h.

◆ SDL_INOUT_Z_CAP

#define SDL_INOUT_Z_CAP (   x)

Definition at line 321 of file SDL_stdinc.h.

◆ SDL_max

#define SDL_max (   x,
 
)    (((x) > (y)) ? (x) : (y))

Definition at line 518 of file SDL_stdinc.h.

◆ SDL_MAX_SINT16

#define SDL_MAX_SINT16   ((Sint16)0x7FFF) /* 32767 */

A signed 16-bit integer type.

Definition at line 154 of file SDL_stdinc.h.

◆ SDL_MAX_SINT32

#define SDL_MAX_SINT32   ((Sint32)0x7FFFFFFF) /* 2147483647 */

A signed 32-bit integer type.

Definition at line 166 of file SDL_stdinc.h.

◆ SDL_MAX_SINT64

#define SDL_MAX_SINT64   ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */

A signed 64-bit integer type.

Definition at line 179 of file SDL_stdinc.h.

◆ SDL_MAX_SINT8

#define SDL_MAX_SINT8   ((Sint8)0x7F) /* 127 */

A signed 8-bit integer type.

Definition at line 142 of file SDL_stdinc.h.

◆ SDL_MAX_TIME

#define SDL_MAX_TIME   SDL_MAX_SINT64

SDL times are signed, 64-bit integers representing nanoseconds since the Unix epoch (Jan 1, 1970)

They can be converted between POSIX time_t values with SDL_NS_TO_SECONDS() and SDL_SECONDS_TO_NS(), and between Windows FILETIME values with SDL_TimeToWindows() and SDL_TimeFromWindows().

Definition at line 195 of file SDL_stdinc.h.

◆ SDL_MAX_UINT16

#define SDL_MAX_UINT16   ((Uint16)0xFFFF) /* 65535 */

An unsigned 16-bit integer type.

Definition at line 160 of file SDL_stdinc.h.

◆ SDL_MAX_UINT32

#define SDL_MAX_UINT32   ((Uint32)0xFFFFFFFFu) /* 4294967295 */

An unsigned 32-bit integer type.

Definition at line 172 of file SDL_stdinc.h.

◆ SDL_MAX_UINT64

#define SDL_MAX_UINT64   ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */

An unsigned 64-bit integer type.

Definition at line 185 of file SDL_stdinc.h.

◆ SDL_MAX_UINT8

#define SDL_MAX_UINT8   ((Uint8)0xFF) /* 255 */

An unsigned 8-bit integer type.

Definition at line 148 of file SDL_stdinc.h.

◆ SDL_memcpy

#define SDL_memcpy   memcpy

Definition at line 546 of file SDL_stdinc.h.

◆ SDL_memmove

#define SDL_memmove   memmove

Definition at line 560 of file SDL_stdinc.h.

◆ SDL_memset

#define SDL_memset   memset

Definition at line 571 of file SDL_stdinc.h.

◆ SDL_min

#define SDL_min (   x,
 
)    (((x) < (y)) ? (x) : (y))

Definition at line 517 of file SDL_stdinc.h.

◆ SDL_MIN_SINT16

#define SDL_MIN_SINT16   ((Sint16)(~0x7FFF)) /* -32768 */

Definition at line 155 of file SDL_stdinc.h.

◆ SDL_MIN_SINT32

#define SDL_MIN_SINT32   ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */

Definition at line 167 of file SDL_stdinc.h.

◆ SDL_MIN_SINT64

#define SDL_MIN_SINT64   ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */

Definition at line 180 of file SDL_stdinc.h.

◆ SDL_MIN_SINT8

#define SDL_MIN_SINT8   ((Sint8)(~0x7F)) /* -128 */

Definition at line 143 of file SDL_stdinc.h.

◆ SDL_MIN_TIME

#define SDL_MIN_TIME   SDL_MIN_SINT64

Definition at line 196 of file SDL_stdinc.h.

◆ SDL_MIN_UINT16

#define SDL_MIN_UINT16   ((Uint16)0x0000) /* 0 */

Definition at line 161 of file SDL_stdinc.h.

◆ SDL_MIN_UINT32

#define SDL_MIN_UINT32   ((Uint32)0x00000000) /* 0 */

Definition at line 173 of file SDL_stdinc.h.

◆ SDL_MIN_UINT64

#define SDL_MIN_UINT64   ((Uint64)(0x0000000000000000ull)) /* 0 */

Definition at line 186 of file SDL_stdinc.h.

◆ SDL_MIN_UINT8

#define SDL_MIN_UINT8   ((Uint8)0x00) /* 0 */

Definition at line 149 of file SDL_stdinc.h.

◆ SDL_OUT_BYTECAP

#define SDL_OUT_BYTECAP (   x)

Definition at line 324 of file SDL_stdinc.h.

◆ SDL_OUT_CAP

#define SDL_OUT_CAP (   x)

Definition at line 323 of file SDL_stdinc.h.

◆ SDL_OUT_Z_BYTECAP

#define SDL_OUT_Z_BYTECAP (   x)

Definition at line 325 of file SDL_stdinc.h.

◆ SDL_OUT_Z_CAP

#define SDL_OUT_Z_CAP (   x)

Definition at line 322 of file SDL_stdinc.h.

◆ SDL_PI_D

#define SDL_PI_D   3.141592653589793238462643383279502884

pi (double)

Definition at line 643 of file SDL_stdinc.h.

◆ SDL_PI_F

#define SDL_PI_F   3.141592653589793238462643383279502884F

pi (float)

Definition at line 646 of file SDL_stdinc.h.

◆ SDL_PRINTF_FORMAT_STRING

#define SDL_PRINTF_FORMAT_STRING

Definition at line 326 of file SDL_stdinc.h.

◆ SDL_PRINTF_VARARG_FUNC

#define SDL_PRINTF_VARARG_FUNC (   fmtargnumber)

Definition at line 337 of file SDL_stdinc.h.

◆ SDL_PRINTF_VARARG_FUNCV

#define SDL_PRINTF_VARARG_FUNCV (   fmtargnumber)

Definition at line 338 of file SDL_stdinc.h.

◆ SDL_PRIs32

#define SDL_PRIs32   "d"

Definition at line 265 of file SDL_stdinc.h.

◆ SDL_PRIs64

#define SDL_PRIs64   "lld"

Definition at line 225 of file SDL_stdinc.h.

◆ SDL_PRIu32

#define SDL_PRIu32   "u"

Definition at line 272 of file SDL_stdinc.h.

◆ SDL_PRIu64

#define SDL_PRIu64   "llu"

Definition at line 236 of file SDL_stdinc.h.

◆ SDL_PRIx32

#define SDL_PRIx32   "x"

Definition at line 279 of file SDL_stdinc.h.

◆ SDL_PRIX32

#define SDL_PRIX32   "X"

Definition at line 286 of file SDL_stdinc.h.

◆ SDL_PRIx64

#define SDL_PRIx64   "llx"

Definition at line 247 of file SDL_stdinc.h.

◆ SDL_PRIX64

#define SDL_PRIX64   "llX"

Definition at line 258 of file SDL_stdinc.h.

◆ SDL_reinterpret_cast

#define SDL_reinterpret_cast (   type,
  expression 
)    ((type)(expression))

Definition at line 114 of file SDL_stdinc.h.

◆ SDL_SCANF_FORMAT_STRING

#define SDL_SCANF_FORMAT_STRING

Definition at line 327 of file SDL_stdinc.h.

◆ SDL_SCANF_VARARG_FUNC

#define SDL_SCANF_VARARG_FUNC (   fmtargnumber)

Definition at line 339 of file SDL_stdinc.h.

◆ SDL_SCANF_VARARG_FUNCV

#define SDL_SCANF_VARARG_FUNCV (   fmtargnumber)

Definition at line 340 of file SDL_stdinc.h.

◆ SDL_SIZE_MAX

#define SDL_SIZE_MAX   ((size_t) -1)

Definition at line 75 of file SDL_stdinc.h.

◆ SDL_stack_alloc

#define SDL_stack_alloc (   type,
  count 
)    (type*)alloca(sizeof(type)*(count))

Definition at line 402 of file SDL_stdinc.h.

◆ SDL_stack_free

#define SDL_stack_free (   data)

Definition at line 403 of file SDL_stdinc.h.

◆ SDL_static_cast

#define SDL_static_cast (   type,
  expression 
)    ((type)(expression))

Definition at line 115 of file SDL_stdinc.h.

◆ SDL_STRINGIFY_ARG

#define SDL_STRINGIFY_ARG (   arg)    #arg

Macro useful for building other macros with strings in them

e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(FUNCTION) ": " X "\n")

Definition at line 100 of file SDL_stdinc.h.

◆ SDL_TABLESIZE

#define SDL_TABLESIZE (   table)    SDL_arraysize(table)

Definition at line 93 of file SDL_stdinc.h.

◆ SDL_TRUE

#define SDL_TRUE   1

Definition at line 136 of file SDL_stdinc.h.

◆ SDL_WPRINTF_VARARG_FUNC

#define SDL_WPRINTF_VARARG_FUNC (   fmtargnumber)

Definition at line 341 of file SDL_stdinc.h.

◆ SDL_WSCANF_VARARG_FUNC

#define SDL_WSCANF_VARARG_FUNC (   fmtargnumber)

Definition at line 342 of file SDL_stdinc.h.

◆ SDL_zero

#define SDL_zero (   x)    SDL_memset(&(x), 0, sizeof((x)))

Definition at line 574 of file SDL_stdinc.h.

◆ SDL_zeroa

#define SDL_zeroa (   x)    SDL_memset((x), 0, sizeof((x)))

Definition at line 576 of file SDL_stdinc.h.

◆ SDL_zerop

#define SDL_zerop (   x)    SDL_memset((x), 0, sizeof(*(x)))

Definition at line 575 of file SDL_stdinc.h.

Typedef Documentation

◆ SDL_bool

typedef int SDL_bool

Definition at line 137 of file SDL_stdinc.h.

◆ SDL_calloc_func

typedef void *(* SDL_calloc_func) (size_t nmemb, size_t size)

Definition at line 415 of file SDL_stdinc.h.

◆ SDL_free_func

typedef void(* SDL_free_func) (void *mem)

Definition at line 417 of file SDL_stdinc.h.

◆ SDL_FunctionPointer

typedef void(* SDL_FunctionPointer) (void)

Definition at line 867 of file SDL_stdinc.h.

◆ SDL_iconv_t

typedef struct SDL_iconv_data_t* SDL_iconv_t

Definition at line 715 of file SDL_stdinc.h.

◆ SDL_malloc_func

typedef void *(* SDL_malloc_func) (size_t size)

Definition at line 414 of file SDL_stdinc.h.

◆ SDL_realloc_func

typedef void *(* SDL_realloc_func) (void *mem, size_t size)

Definition at line 416 of file SDL_stdinc.h.

◆ SDL_Time

typedef Sint64 SDL_Time

Definition at line 197 of file SDL_stdinc.h.

◆ Sint16

typedef int16_t Sint16

Definition at line 156 of file SDL_stdinc.h.

◆ Sint32

typedef int32_t Sint32

Definition at line 168 of file SDL_stdinc.h.

◆ Sint64

typedef int64_t Sint64

Definition at line 181 of file SDL_stdinc.h.

◆ Sint8

typedef int8_t Sint8

Definition at line 144 of file SDL_stdinc.h.

◆ Uint16

typedef uint16_t Uint16

Definition at line 162 of file SDL_stdinc.h.

◆ Uint32

typedef uint32_t Uint32

Definition at line 174 of file SDL_stdinc.h.

◆ Uint64

typedef uint64_t Uint64

Definition at line 187 of file SDL_stdinc.h.

◆ Uint8

typedef uint8_t Uint8

Definition at line 150 of file SDL_stdinc.h.

Function Documentation

◆ alloca()

char * alloca ( )

◆ SDL_abs()

int SDL_abs ( int  x)
extern

◆ SDL_acos()

double SDL_acos ( double  x)
extern

Use this function to compute arc cosine of x.

The definition of y = acos(x) is x = cos(y).

Domain: -1 <= x <= 1

Range: 0 <= y <= Pi

Parameters
xfloating point value, in radians.
Returns
arc cosine of x.
Since
This function is available since SDL 3.0.0.

◆ SDL_acosf()

float SDL_acosf ( float  x)
extern

◆ SDL_aligned_alloc()

SDL_MALLOC void * SDL_aligned_alloc ( size_t  alignment,
size_t  size 
)
extern

Allocate memory aligned to a specific value

If alignment is less than the size of void *, then it will be increased to match that.

The returned memory address will be a multiple of the alignment value, and the amount of memory allocated will be a multiple of the alignment value.

The memory returned by this function must be freed with SDL_aligned_free()

Parameters
alignmentthe alignment requested
sizethe size to allocate
Returns
a pointer to the aligned memory
Since
This function is available since SDL 3.0.0.
See also
SDL_aligned_free

◆ SDL_aligned_free()

void SDL_aligned_free ( void *  mem)
extern

Free memory allocated by SDL_aligned_alloc()

Since
This function is available since SDL 3.0.0.
See also
SDL_aligned_alloc

◆ SDL_ALLOC_SIZE()

SDL_ALLOC_SIZE ( )
extern

◆ SDL_ALLOC_SIZE2()

SDL_MALLOC SDL_ALLOC_SIZE2 ( ,
 
)
extern

◆ SDL_asin()

double SDL_asin ( double  x)
extern

◆ SDL_asinf()

float SDL_asinf ( float  x)
extern

◆ SDL_asprintf()

int SDL_asprintf ( char **  strp,
SDL_PRINTF_FORMAT_STRING const char *  fmt,
  ... 
)
extern

◆ SDL_atan()

double SDL_atan ( double  x)
extern

◆ SDL_atan2()

double SDL_atan2 ( double  y,
double  x 
)
extern

◆ SDL_atan2f()

float SDL_atan2f ( float  y,
float  x 
)
extern

◆ SDL_atanf()

float SDL_atanf ( float  x)
extern

◆ SDL_atof()

double SDL_atof ( const char *  str)
extern

◆ SDL_atoi()

int SDL_atoi ( const char *  str)
extern

◆ SDL_bsearch()

void * SDL_bsearch ( const void *  key,
const void *  base,
size_t  nmemb,
size_t  size,
int(*)(const void *, const void *)  compare 
)
extern

◆ SDL_bsearch_r()

void * SDL_bsearch_r ( const void *  key,
const void *  base,
size_t  nmemb,
size_t  size,
int(*)(void *, const void *, const void *)  compare,
void *  userdata 
)
extern

◆ SDL_ceil()

double SDL_ceil ( double  x)
extern

◆ SDL_ceilf()

float SDL_ceilf ( float  x)
extern

◆ SDL_copysign()

double SDL_copysign ( double  x,
double  y 
)
extern

◆ SDL_copysignf()

float SDL_copysignf ( float  x,
float  y 
)
extern

◆ SDL_cos()

double SDL_cos ( double  x)
extern

◆ SDL_cosf()

float SDL_cosf ( float  x)
extern

◆ SDL_crc16()

Uint16 SDL_crc16 ( Uint16  crc,
const void *  data,
size_t  len 
)
extern

◆ SDL_crc32()

Uint32 SDL_crc32 ( Uint32  crc,
const void *  data,
size_t  len 
)
extern

◆ SDL_exp()

double SDL_exp ( double  x)
extern

◆ SDL_expf()

float SDL_expf ( float  x)
extern

◆ SDL_fabs()

double SDL_fabs ( double  x)
extern

◆ SDL_fabsf()

float SDL_fabsf ( float  x)
extern

Referenced by SDL_RectsEqualEpsilon().

◆ SDL_floor()

double SDL_floor ( double  x)
extern

◆ SDL_floorf()

float SDL_floorf ( float  x)
extern

◆ SDL_fmod()

double SDL_fmod ( double  x,
double  y 
)
extern

◆ SDL_fmodf()

float SDL_fmodf ( float  x,
float  y 
)
extern

◆ SDL_free()

void SDL_free ( void *  mem)
extern

◆ SDL_getenv()

char * SDL_getenv ( const char *  name)
extern

◆ SDL_GetMemoryFunctions()

void SDL_GetMemoryFunctions ( SDL_malloc_func malloc_func,
SDL_calloc_func calloc_func,
SDL_realloc_func realloc_func,
SDL_free_func free_func 
)
extern

Get the current set of SDL memory functions

Parameters
malloc_funcfilled with malloc function
calloc_funcfilled with calloc function
realloc_funcfilled with realloc function
free_funcfilled with free function
Since
This function is available since SDL 3.0.0.

◆ SDL_GetNumAllocations()

int SDL_GetNumAllocations ( void  )
extern

Get the number of outstanding (unfreed) allocations

Returns
the number of allocations
Since
This function is available since SDL 3.0.0.

◆ SDL_GetOriginalMemoryFunctions()

void SDL_GetOriginalMemoryFunctions ( SDL_malloc_func malloc_func,
SDL_calloc_func calloc_func,
SDL_realloc_func realloc_func,
SDL_free_func free_func 
)
extern

Get the original set of SDL memory functions

Parameters
malloc_funcfilled with malloc function
calloc_funcfilled with calloc function
realloc_funcfilled with realloc function
free_funcfilled with free function
Since
This function is available since SDL 3.0.0.

◆ SDL_iconv()

size_t SDL_iconv ( SDL_iconv_t  cd,
const char **  inbuf,
size_t *  inbytesleft,
char **  outbuf,
size_t *  outbytesleft 
)
extern

◆ SDL_iconv_close()

int SDL_iconv_close ( SDL_iconv_t  cd)
extern

◆ SDL_iconv_open()

SDL_iconv_t SDL_iconv_open ( const char *  tocode,
const char *  fromcode 
)
extern

◆ SDL_iconv_string()

char * SDL_iconv_string ( const char *  tocode,
const char *  fromcode,
const char *  inbuf,
size_t  inbytesleft 
)
extern

This function converts a buffer or string between encodings in one pass, returning a string that must be freed with SDL_free() or NULL on error.

Since
This function is available since SDL 3.0.0.

◆ SDL_isalnum()

int SDL_isalnum ( int  x)
extern

◆ SDL_isalpha()

int SDL_isalpha ( int  x)
extern

◆ SDL_isblank()

int SDL_isblank ( int  x)
extern

◆ SDL_iscntrl()

int SDL_iscntrl ( int  x)
extern

◆ SDL_isdigit()

int SDL_isdigit ( int  x)
extern

◆ SDL_isgraph()

int SDL_isgraph ( int  x)
extern

◆ SDL_islower()

int SDL_islower ( int  x)
extern

◆ SDL_isprint()

int SDL_isprint ( int  x)
extern

◆ SDL_ispunct()

int SDL_ispunct ( int  x)
extern

◆ SDL_isspace()

int SDL_isspace ( int  x)
extern

◆ SDL_isupper()

int SDL_isupper ( int  x)
extern

◆ SDL_isxdigit()

int SDL_isxdigit ( int  x)
extern

◆ SDL_itoa()

char * SDL_itoa ( int  value,
char *  str,
int  radix 
)
extern

◆ SDL_lltoa()

char * SDL_lltoa ( Sint64  value,
char *  str,
int  radix 
)
extern

◆ SDL_log()

double SDL_log ( double  x)
extern

◆ SDL_log10()

double SDL_log10 ( double  x)
extern

◆ SDL_log10f()

float SDL_log10f ( float  x)
extern

◆ SDL_logf()

float SDL_logf ( float  x)
extern

◆ SDL_lround()

long SDL_lround ( double  x)
extern

◆ SDL_lroundf()

long SDL_lroundf ( float  x)
extern

◆ SDL_ltoa()

char * SDL_ltoa ( long  value,
char *  str,
int  radix 
)
extern

◆ SDL_malloc()

SDL_MALLOC void * SDL_malloc ( size_t  size)
extern

◆ SDL_memcmp()

int SDL_memcmp ( const void *  s1,
const void *  s2,
size_t  len 
)
extern

◆ SDL_memcpy()

void * SDL_memcpy ( SDL_OUT_BYTECAP(len) void *  dst,
SDL_IN_BYTECAP(len) const void *  src,
size_t  len 
)
extern

◆ SDL_memmove()

void * SDL_memmove ( SDL_OUT_BYTECAP(len) void *  dst,
SDL_IN_BYTECAP(len) const void *  src,
size_t  len 
)
extern

◆ SDL_memset()

void * SDL_memset ( SDL_OUT_BYTECAP(len) void *  dst,
int  c,
size_t  len 
)
extern

◆ SDL_memset4()

void * SDL_memset4 ( void *  dst,
Uint32  val,
size_t  dwords 
)
extern

◆ SDL_modf()

double SDL_modf ( double  x,
double *  y 
)
extern

◆ SDL_modff()

float SDL_modff ( float  x,
float *  y 
)
extern

◆ SDL_pow()

double SDL_pow ( double  x,
double  y 
)
extern

◆ SDL_powf()

float SDL_powf ( float  x,
float  y 
)
extern

◆ SDL_qsort()

void SDL_qsort ( void *  base,
size_t  nmemb,
size_t  size,
int(*)(const void *, const void *)  compare 
)
extern

◆ SDL_qsort_r()

void SDL_qsort_r ( void *  base,
size_t  nmemb,
size_t  size,
int(*)(void *, const void *, const void *)  compare,
void *  userdata 
)
extern

◆ SDL_round()

double SDL_round ( double  x)
extern

◆ SDL_roundf()

float SDL_roundf ( float  x)
extern

◆ SDL_scalbn()

double SDL_scalbn ( double  x,
int  n 
)
extern

◆ SDL_scalbnf()

float SDL_scalbnf ( float  x,
int  n 
)
extern

◆ SDL_setenv()

int SDL_setenv ( const char *  name,
const char *  value,
int  overwrite 
)
extern

◆ SDL_SetMemoryFunctions()

int SDL_SetMemoryFunctions ( SDL_malloc_func  malloc_func,
SDL_calloc_func  calloc_func,
SDL_realloc_func  realloc_func,
SDL_free_func  free_func 
)
extern

Replace SDL's memory allocation functions with a custom set

Parameters
malloc_funccustom malloc function
calloc_funccustom calloc function
realloc_funccustom realloc function
free_funccustom free function
Returns
0 on success or a negative error code on failure; call SDL_GetError() for more information.
Since
This function is available since SDL 3.0.0.

◆ SDL_sin()

double SDL_sin ( double  x)
extern

◆ SDL_sinf()

float SDL_sinf ( float  x)
extern

◆ SDL_size_add_overflow()

SDL_FORCE_INLINE int SDL_size_add_overflow ( size_t  a,
size_t  b,
size_t *  ret 
)

If a + b would overflow, return -1. Otherwise store a + b via ret and return 0.

Since
This function is available since SDL 3.0.0.

Definition at line 840 of file SDL_stdinc.h.

843{
844 if (b > SDL_SIZE_MAX - a) {
845 return -1;
846 }
847 *ret = a + b;
848 return 0;
849}

References SDL_SIZE_MAX.

◆ SDL_size_mul_overflow()

SDL_FORCE_INLINE int SDL_size_mul_overflow ( size_t  a,
size_t  b,
size_t *  ret 
)

If a * b would overflow, return -1. Otherwise store a * b via ret and return 0.

Since
This function is available since SDL 3.0.0.

Definition at line 810 of file SDL_stdinc.h.

813{
814 if (a != 0 && b > SDL_SIZE_MAX / a) {
815 return -1;
816 }
817 *ret = a * b;
818 return 0;
819}

References SDL_SIZE_MAX.

◆ SDL_snprintf()

int SDL_snprintf ( SDL_OUT_Z_CAP(maxlen) char *  text,
size_t  maxlen,
SDL_PRINTF_FORMAT_STRING const char *  fmt,
  ... 
)
extern

◆ SDL_sqrt()

double SDL_sqrt ( double  x)
extern

◆ SDL_sqrtf()

float SDL_sqrtf ( float  x)
extern

◆ SDL_sscanf()

int SDL_sscanf ( const char *  text,
SDL_SCANF_FORMAT_STRING const char *  fmt,
  ... 
)
extern

◆ SDL_strcasecmp()

int SDL_strcasecmp ( const char *  str1,
const char *  str2 
)
extern

◆ SDL_strcasestr()

char * SDL_strcasestr ( const char *  haystack,
const char *  needle 
)
extern

◆ SDL_strchr()

char * SDL_strchr ( const char *  str,
int  c 
)
extern

◆ SDL_strcmp()

int SDL_strcmp ( const char *  str1,
const char *  str2 
)
extern

◆ SDL_strdup()

SDL_MALLOC char * SDL_strdup ( const char *  str)
extern

◆ SDL_strlcat()

size_t SDL_strlcat ( SDL_INOUT_Z_CAP(maxlen) char *  dst,
const char *  src,
size_t  maxlen 
)
extern

◆ SDL_strlcpy()

size_t SDL_strlcpy ( SDL_OUT_Z_CAP(maxlen) char *  dst,
const char *  src,
size_t  maxlen 
)
extern

◆ SDL_strlen()

size_t SDL_strlen ( const char *  str)
extern

◆ SDL_strlwr()

char * SDL_strlwr ( char *  str)
extern

◆ SDL_strncasecmp()

int SDL_strncasecmp ( const char *  str1,
const char *  str2,
size_t  len 
)
extern

◆ SDL_strncmp()

int SDL_strncmp ( const char *  str1,
const char *  str2,
size_t  maxlen 
)
extern

◆ SDL_strndup()

SDL_MALLOC char * SDL_strndup ( const char *  str,
size_t  maxlen 
)
extern

◆ SDL_strnlen()

size_t SDL_strnlen ( const char *  str,
size_t  maxlen 
)
extern

◆ SDL_strnstr()

char * SDL_strnstr ( const char *  haystack,
const char *  needle,
size_t  maxlen 
)
extern

◆ SDL_strrchr()

char * SDL_strrchr ( const char *  str,
int  c 
)
extern

◆ SDL_strrev()

char * SDL_strrev ( char *  str)
extern

◆ SDL_strstr()

char * SDL_strstr ( const char *  haystack,
const char *  needle 
)
extern

◆ SDL_strtod()

double SDL_strtod ( const char *  str,
char **  endp 
)
extern

◆ SDL_strtok_r()

char * SDL_strtok_r ( char *  s1,
const char *  s2,
char **  saveptr 
)
extern

◆ SDL_strtol()

long SDL_strtol ( const char *  str,
char **  endp,
int  base 
)
extern

◆ SDL_strtoll()

Sint64 SDL_strtoll ( const char *  str,
char **  endp,
int  base 
)
extern

◆ SDL_strtoul()

unsigned long SDL_strtoul ( const char *  str,
char **  endp,
int  base 
)
extern

◆ SDL_strtoull()

Uint64 SDL_strtoull ( const char *  str,
char **  endp,
int  base 
)
extern

◆ SDL_strupr()

char * SDL_strupr ( char *  str)
extern

◆ SDL_swprintf()

int SDL_swprintf ( SDL_OUT_Z_CAP(maxlen) wchar_t *  text,
size_t  maxlen,
SDL_PRINTF_FORMAT_STRING const wchar_t *  fmt,
  ... 
)
extern

◆ SDL_tan()

double SDL_tan ( double  x)
extern

◆ SDL_tanf()

float SDL_tanf ( float  x)
extern

◆ SDL_tolower()

int SDL_tolower ( int  x)
extern

◆ SDL_toupper()

int SDL_toupper ( int  x)
extern

◆ SDL_trunc()

double SDL_trunc ( double  x)
extern

◆ SDL_truncf()

float SDL_truncf ( float  x)
extern

◆ SDL_uitoa()

char * SDL_uitoa ( unsigned int  value,
char *  str,
int  radix 
)
extern

◆ SDL_ulltoa()

char * SDL_ulltoa ( Uint64  value,
char *  str,
int  radix 
)
extern

◆ SDL_ultoa()

char * SDL_ultoa ( unsigned long  value,
char *  str,
int  radix 
)
extern

◆ SDL_utf8strlcpy()

size_t SDL_utf8strlcpy ( SDL_OUT_Z_CAP(dst_bytes) char *  dst,
const char *  src,
size_t  dst_bytes 
)
extern

◆ SDL_utf8strlen()

size_t SDL_utf8strlen ( const char *  str)
extern

◆ SDL_utf8strnlen()

size_t SDL_utf8strnlen ( const char *  str,
size_t  bytes 
)
extern

◆ SDL_vasprintf()

int SDL_vasprintf ( char **  strp,
SDL_PRINTF_FORMAT_STRING const char *  fmt,
va_list  ap 
)
extern

◆ SDL_vsnprintf()

int SDL_vsnprintf ( SDL_OUT_Z_CAP(maxlen) char *  text,
size_t  maxlen,
SDL_PRINTF_FORMAT_STRING const char *  fmt,
va_list  ap 
)
extern

◆ SDL_vsscanf()

int SDL_vsscanf ( const char *  text,
SDL_SCANF_FORMAT_STRING const char *  fmt,
va_list  ap 
)
extern

◆ SDL_vswprintf()

int SDL_vswprintf ( SDL_OUT_Z_CAP(maxlen) wchar_t *  text,
size_t  maxlen,
const wchar_t *  fmt,
va_list  ap 
)
extern

◆ SDL_wcscasecmp()

int SDL_wcscasecmp ( const wchar_t *  str1,
const wchar_t *  str2 
)
extern

◆ SDL_wcscmp()

int SDL_wcscmp ( const wchar_t *  str1,
const wchar_t *  str2 
)
extern

◆ SDL_wcsdup()

wchar_t * SDL_wcsdup ( const wchar_t *  wstr)
extern

◆ SDL_wcslcat()

size_t SDL_wcslcat ( SDL_INOUT_Z_CAP(maxlen) wchar_t *  dst,
const wchar_t *  src,
size_t  maxlen 
)
extern

◆ SDL_wcslcpy()

size_t SDL_wcslcpy ( SDL_OUT_Z_CAP(maxlen) wchar_t *  dst,
const wchar_t *  src,
size_t  maxlen 
)
extern

◆ SDL_wcslen()

size_t SDL_wcslen ( const wchar_t *  wstr)
extern

◆ SDL_wcsncasecmp()

int SDL_wcsncasecmp ( const wchar_t *  str1,
const wchar_t *  str2,
size_t  len 
)
extern

◆ SDL_wcsncmp()

int SDL_wcsncmp ( const wchar_t *  str1,
const wchar_t *  str2,
size_t  maxlen 
)
extern

◆ SDL_wcsnlen()

size_t SDL_wcsnlen ( const wchar_t *  wstr,
size_t  maxlen 
)
extern

◆ SDL_wcsnstr()

wchar_t * SDL_wcsnstr ( const wchar_t *  haystack,
const wchar_t *  needle,
size_t  maxlen 
)
extern

◆ SDL_wcsstr()

wchar_t * SDL_wcsstr ( const wchar_t *  haystack,
const wchar_t *  needle 
)
extern

◆ SDL_wcstol()

long SDL_wcstol ( const wchar_t *  str,
wchar_t **  endp,
int  base 
)
extern

Variable Documentation

◆ size

size_t size

Definition at line 410 of file SDL_stdinc.h.