mirror of
https://github.com/Ed94/metadesk.git
synced 2026-06-13 07:52:22 -07:00
make sprintf an overrideable
This commit is contained in:
+5
-5
@@ -597,9 +597,9 @@ MD_GetScratchDefault(MD_Arena **conflicts, MD_u64 count){
|
||||
|
||||
#define MD_UNTERMINATED_TOKEN_LEN_CAP 20
|
||||
|
||||
#if !defined(MD_NO_STB_SPRINTF)
|
||||
#define MD_STB_SPRINTF_IMPLEMENTATION
|
||||
#define MD_STB_SPRINTF_DECORATE(name) md_stbsp_##name
|
||||
#if MD_DEFAULT_SPRINTF
|
||||
#define STB_SPRINTF_IMPLEMENTATION
|
||||
#define STB_SPRINTF_DECORATE(name) md_stbsp_##name
|
||||
#include "md_stb_sprintf.h"
|
||||
#endif
|
||||
|
||||
@@ -908,11 +908,11 @@ MD_S8FmtV(MD_Arena *arena, char *fmt, va_list args)
|
||||
MD_String8 result = MD_ZERO_STRUCT;
|
||||
va_list args2;
|
||||
va_copy(args2, args);
|
||||
MD_u64 needed_bytes = md_stbsp_vsnprintf(0, 0, fmt, args)+1;
|
||||
MD_u64 needed_bytes = MD_IMPL_Vsnprintf(0, 0, fmt, args)+1;
|
||||
result.str = MD_PushArray(arena, MD_u8, needed_bytes);
|
||||
result.size = needed_bytes - 1;
|
||||
result.str[needed_bytes-1] = 0;
|
||||
md_stbsp_vsnprintf((char*)result.str, needed_bytes, fmt, args2);
|
||||
MD_IMPL_Vsnprintf((char*)result.str, needed_bytes, fmt, args2);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -43,6 +43,9 @@
|
||||
** "scratch constants" ** OPTIONAL (required for default scratch)
|
||||
** #define MD_IMPL_ScratchCount MD_u64 / default 2
|
||||
**
|
||||
** "sprintf" ** OPTIONAL (default implementation available)
|
||||
** #define MD_IMPL_Vsnprintf (char * buf, int count, char const * fmt, va_list va) -> int
|
||||
**
|
||||
** Default Implementation Controls
|
||||
** These controls default to '1' i.e. 'enabled'
|
||||
** #define MD_DEFAULT_MEMSET -> construct "memset" from CRT
|
||||
@@ -50,6 +53,7 @@
|
||||
** #define MD_DEFAULT_MEMORY -> construct "low level memory" from OS headers
|
||||
** #define MD_DEFAULT_ARENA -> construct "arena" from "low level memory"
|
||||
** #define MD_DEFAULT_SCRATCH -> construct "scratch" from "arena"
|
||||
** #define MD_DEFAULT_SPRINTF -> construct "vsnprintf" from internal implementaion
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -72,6 +76,9 @@
|
||||
#if !defined(MD_DEFAULT_SCRATCH)
|
||||
# define MD_DEFAULT_SCRATCH 1
|
||||
#endif
|
||||
#if !defined(MD_DEFAULT_SPRINTF)
|
||||
# define MD_DEFAULT_SPRINTF 1
|
||||
#endif
|
||||
|
||||
#if !defined(MD_ENABLE_PRINT_HELPERS)
|
||||
# define MD_ENABLE_PRINT_HELPERS 0
|
||||
@@ -384,8 +391,9 @@
|
||||
#define MD_MemoryCopy(d,s,z) (MD_IMPL_Memmove(d,s,z))
|
||||
|
||||
//~ sprintf
|
||||
#if !defined(MD_NO_STB_SPRINTF)
|
||||
#if MD_DEFAULT_SPRINTF
|
||||
#define STB_SPRINTF_DECORATE(name) md_stbsp_##name
|
||||
#define MD_IMPL_Vsnprintf md_stbsp_vsnprintf
|
||||
#include "md_stb_sprintf.h"
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user