386{
387 DUMMY_ENUM_VALUE
388} SDL_DUMMY_ENUM;
389
391#endif
392#endif
393
394
396
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
412extern DECLSPEC
void SDLCALL
SDL_free(
void *mem);
413
418
419
420
421
422
423
424
425
426
427
428
433
434
435
436
437
438
439
440
441
442
443
448
449
450
451
452
453
454
455
456
457
458
459
460
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
486
487
488
489
490
491
492
493
495
496
497
498
499
500
501
502
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
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
535
538
540
541
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
554
555
556#ifndef SDL_SLOW_MEMMOVE
557#ifdef SDL_memmove
558#undef SDL_memmove
559#endif
560#define SDL_memmove memmove
561#endif
562
565
566
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);
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);
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);
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);
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
641
642#ifndef SDL_PI_D
643#define SDL_PI_D 3.141592653589793238462643383279502884
644#endif
645#ifndef SDL_PI_F
646#define SDL_PI_F 3.141592653589793238462643383279502884F
647#endif
648
649
650
651
652
653
654
655
656
657
658
659
660
661
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);
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
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
717 const char *fromcode);
720 size_t * inbytesleft, char **outbuf,
721 size_t * outbytesleft);
722
723
724
725
726
727
728
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
739
740#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
741
742
743#if !defined(HAVE_STRLCPY) && !defined(strlcpy)
744size_t strlcpy(
char* dst,
const char* src,
size_t size);
745#endif
746
747
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
761
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
806
807
808
809
811 size_t b,
812 size_t *ret)
813{
815 return -1;
816 }
817 *ret = a * b;
818 return 0;
819}
820
821#if SDL_HAS_BUILTIN(__builtin_mul_overflow)
822
823
824
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
836
837
838
839
841 size_t b,
842 size_t *ret)
843{
845 return -1;
846 }
847 *ret = a + b;
848 return 0;
849}
850
851#if SDL_HAS_BUILTIN(__builtin_add_overflow)
852
853
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
864#ifdef SDL_FUNCTION_POINTER_IS_VOID_POINTER
866#else
868#endif
869
870
871#ifdef __cplusplus
872}
873#endif
875
876#endif
#define SDL_ALLOC_SIZE(p)
#define SDL_ALLOC_SIZE2(p1, p2)
wchar_t * SDL_wcsdup(const wchar_t *wstr)
double SDL_sqrt(double x)
int SDL_atoi(const char *str)
SDL_iconv_t SDL_iconv_open(const char *tocode, const char *fromcode)
char * SDL_strtok_r(char *s1, const char *s2, char **saveptr)
char * SDL_strlwr(char *str)
struct SDL_iconv_data_t * SDL_iconv_t
wchar_t * SDL_wcsnstr(const wchar_t *haystack, const wchar_t *needle, size_t maxlen)
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)
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)
char * SDL_ltoa(long value, char *str, int radix)
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)
#define SDL_OUT_BYTECAP(x)
char * SDL_strrchr(const char *str, int c)
int SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen)
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 *))
#define SDL_PRINTF_VARARG_FUNCV(fmtargnumber)
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)
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)
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)
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)
double SDL_round(double x)
long SDL_lround(double x)
size_t SDL_strnlen(const char *str, size_t maxlen)
int SDL_iconv_close(SDL_iconv_t cd)
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)
double SDL_asin(double x)
double SDL_acos(double x)
wchar_t * SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle)
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)
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
char * SDL_strstr(const char *haystack, const char *needle)
int SDL_GetNumAllocations(void)
size_t SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen)
double SDL_atan(double 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)
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)
float SDL_truncf(float x)
double SDL_log10(double 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)
void SDL_aligned_free(void *mem)
float SDL_log10f(float x)
void(* SDL_free_func)(void *mem)
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)
#define SDL_PRINTF_FORMAT_STRING
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)
#define SDL_COMPILE_TIME_ASSERT(name, x)
float SDL_atan2f(float y, float x)
long SDL_wcstol(const wchar_t *str, wchar_t **endp, int base)
SDL_MALLOC char * SDL_strdup(const char *str)
void *(* SDL_calloc_func)(size_t nmemb, size_t size)
#define SDL_SCANF_VARARG_FUNC(fmtargnumber)
double SDL_atan2(double y, double x)
void(* SDL_FunctionPointer)(void)
float SDL_powf(float x, float y)
size_t SDL_strlen(const char *str)
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)
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)
size_t SDL_utf8strlen(const char *str)
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_WPRINTF_VARARG_FUNC(fmtargnumber)
Uint64 SDL_strtoull(const char *str, char **endp, int base)
double SDL_trunc(double x)