alloc api having new attributes for micro optimisations.
- SDL_MALLOC when the pointer returned is not aliased. - SDL_ALLOC_SIZE* to gives hint about the size.main
parent
a5e9d9bd7e
commit
975ffaea77
|
@ -436,9 +436,9 @@ extern "C" {
|
||||||
#define SDL_stack_free(data) SDL_free(data)
|
#define SDL_stack_free(data) SDL_free(data)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
|
extern SDL_MALLOC DECLSPEC void *SDLCALL SDL_malloc(size_t size);
|
||||||
extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
|
extern SDL_MALLOC SDL_ALLOC_SIZE2(1, 2) DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
|
||||||
extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
|
extern SDL_ALLOC_SIZE(2) DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
|
||||||
extern DECLSPEC void SDLCALL SDL_free(void *mem);
|
extern DECLSPEC void SDLCALL SDL_free(void *mem);
|
||||||
|
|
||||||
typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
|
typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
|
||||||
|
@ -576,7 +576,7 @@ extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
|
||||||
extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
|
extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
|
||||||
extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
|
extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
|
||||||
extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
|
extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
|
||||||
extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
|
extern SDL_MALLOC DECLSPEC char *SDLCALL SDL_strdup(const char *str);
|
||||||
extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
|
extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
|
||||||
extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
|
extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
|
||||||
extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
|
extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
|
||||||
|
|
|
@ -174,3 +174,33 @@
|
||||||
#undef _HAS_FALLTHROUGH
|
#undef _HAS_FALLTHROUGH
|
||||||
#endif /* C++17 or C2x */
|
#endif /* C++17 or C2x */
|
||||||
#endif /* SDL_FALLTHROUGH not defined */
|
#endif /* SDL_FALLTHROUGH not defined */
|
||||||
|
|
||||||
|
#ifndef SDL_MALLOC
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define SDL_MALLOC __attribute__((malloc))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define SDL_MALLOC __declspec(allocator) __desclspec(restrict)
|
||||||
|
#else
|
||||||
|
#define SDL_MALLOC
|
||||||
|
#endif
|
||||||
|
#endif /* SDL_MALLOC not defined */
|
||||||
|
|
||||||
|
#ifndef SDL_ALLOC_SIZE
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define SDL_ALLOC_SIZE(p) __attribute__((alloc_size(p)))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define SDL_ALLOC_SIZE(p)
|
||||||
|
#else
|
||||||
|
#define SDL_ALLOC_SIZE(p)
|
||||||
|
#endif
|
||||||
|
#endif /* SDL_ALLOC_SIZE not defined */
|
||||||
|
|
||||||
|
#ifndef SDL_ALLOC_SIZE2
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define SDL_ALLOC_SIZE2(p1, p2) __attribute__((alloc_size(p1, p2)))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define SDL_ALLOC_SIZE2(p1, p2)
|
||||||
|
#else
|
||||||
|
#define SDL_ALLOC_SIZE2(p1, p2)
|
||||||
|
#endif
|
||||||
|
#endif /* SDL_ALLOC_SIZE2 not defined */
|
||||||
|
|
Loading…
Reference in New Issue