From ffbaa3c7c1abff3de2470c5d291d44b129643670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sat, 28 Jan 2017 22:16:54 -0800 Subject: [PATCH] Added BX_CRT_NONE define. --- include/bx/platform.h | 50 +++++++++++++++++++++++++++++++------------ include/bx/string.h | 14 ++++++------ src/string.cpp | 45 ++++++++++++++++++++------------------ 3 files changed, 67 insertions(+), 42 deletions(-) diff --git a/include/bx/platform.h b/include/bx/platform.h index c212b57..800aac2 100644 --- a/include/bx/platform.h +++ b/include/bx/platform.h @@ -232,20 +232,28 @@ # define BX_PLATFORM_HURD 1 #endif // -#define BX_PLATFORM_POSIX (0 \ - || BX_PLATFORM_ANDROID \ - || BX_PLATFORM_EMSCRIPTEN \ - || BX_PLATFORM_BSD \ - || BX_PLATFORM_HURD \ - || BX_PLATFORM_IOS \ - || BX_PLATFORM_LINUX \ - || BX_PLATFORM_NACL \ - || BX_PLATFORM_OSX \ - || BX_PLATFORM_QNX \ - || BX_PLATFORM_STEAMLINK \ - || BX_PLATFORM_PS4 \ - || BX_PLATFORM_RPI \ - ) +#define BX_PLATFORM_POSIX (0 \ + || BX_PLATFORM_ANDROID \ + || BX_PLATFORM_EMSCRIPTEN \ + || BX_PLATFORM_BSD \ + || BX_PLATFORM_HURD \ + || BX_PLATFORM_IOS \ + || BX_PLATFORM_LINUX \ + || BX_PLATFORM_NACL \ + || BX_PLATFORM_OSX \ + || BX_PLATFORM_QNX \ + || BX_PLATFORM_STEAMLINK \ + || BX_PLATFORM_PS4 \ + || BX_PLATFORM_RPI \ + ) + +#define BX_CRT_NONE !(0 \ + || BX_CRT_MSVC \ + || BX_CRT_GLIBC \ + || BX_CRT_NEWLIB \ + || BX_CRT_MINGW \ + || BX_CRT_MUSL \ + ) #ifndef BX_CONFIG_ENABLE_MSVC_LEVEL4_WARNINGS # define BX_CONFIG_ENABLE_MSVC_LEVEL4_WARNINGS 0 @@ -334,6 +342,20 @@ # define BX_CPU_NAME "x86" #endif // BX_CPU_ +#if BX_CRT_MSVC +# define BX_CRT_NAME "MSVC C Runtime" +#elif BX_CRT_GLIBC +# define BX_CRT_NAME "GNU C Library" +#elif BX_CRT_NEWLIB +# define BX_CRT_NAME "Newlib" +#elif BX_CRT_MINGW +# define BX_CRT_NAME "MinGW C Runtime" +#elif BX_CRT_MUSL +# define BX_CRT_NAME "musl libc" +#else +# define BX_CRT_NAME "None" +#endif // BX_CRT_ + #if BX_ARCH_32BIT # define BX_ARCH_NAME "32-bit" #elif BX_ARCH_64BIT diff --git a/include/bx/string.h b/include/bx/string.h index a94886c..eaf27bc 100644 --- a/include/bx/string.h +++ b/include/bx/string.h @@ -176,18 +176,18 @@ namespace bx /// Cross platform implementation of vsnprintf that returns number of /// characters which would have been written to the final string if /// enough space had been available. - int32_t vsnprintf(char* _str, size_t _count, const char* _format, va_list _argList); + int32_t vsnprintf(char* _out, size_t _max, const char* _format, va_list _argList); /// Cross platform implementation of vsnwprintf that returns number of /// characters which would have been written to the final string if /// enough space had been available. - int32_t vsnwprintf(wchar_t* _str, size_t _count, const wchar_t* _format, va_list _argList); + int32_t vsnwprintf(wchar_t* _out, size_t _max, const wchar_t* _format, va_list _argList); /// - int32_t snprintf(char* _str, size_t _count, const char* _format, ...); + int32_t snprintf(char* _out, size_t _max, const char* _format, ...); /// - int32_t swnprintf(wchar_t* _out, size_t _count, const wchar_t* _format, ...); + int32_t swnprintf(wchar_t* _out, size_t _max, const wchar_t* _format, ...); /// template @@ -220,13 +220,13 @@ namespace bx size_t strlcat(char* _dst, const char* _src, size_t _max); /// - int32_t toString(char* _dst, size_t _max, double _value); + int32_t toString(char* _out, size_t _max, double _value); /// - int32_t toString(char* _dst, size_t _max, int32_t _value, uint32_t _base = 10); + int32_t toString(char* _out, size_t _max, int32_t _value, uint32_t _base = 10); /// - int32_t toString(char* _dst, size_t _max, uint32_t _value, uint32_t _base = 10); + int32_t toString(char* _out, size_t _max, uint32_t _value, uint32_t _base = 10); /// uint32_t hashMurmur2A(const StringView& _data); diff --git a/src/string.cpp b/src/string.cpp index 379303e..0206f65 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -3,15 +3,14 @@ * License: https://github.com/bkaradzic/bx#license-bsd-2-clause */ -#include -#include // va_list -#include // vsnprintf, vsnwprintf - #include - #include #include +#if !BX_CRT_NONE +# include // vsnprintf, vsnwprintf +#endif // !BX_CRT_NONE + namespace bx { bool isSpace(char _ch) @@ -382,59 +381,63 @@ namespace bx return NULL; } - int32_t vsnprintf(char* _str, size_t _count, const char* _format, va_list _argList) +#if !BX_CRT_NONE + int32_t vsnprintf(char* _out, size_t _max, const char* _format, va_list _argList) { -#if BX_COMPILER_MSVC +#if BX_CRT_MSVC int32_t len = -1; - if (NULL != _str) + if (NULL != _out) { va_list argListCopy; va_copy(argListCopy, _argList); - len = ::vsnprintf_s(_str, _count, size_t(-1), _format, argListCopy); + len = ::vsnprintf_s(_out, _max, size_t(-1), _format, argListCopy); va_end(argListCopy); } return -1 == len ? ::_vscprintf(_format, _argList) : len; #else - return ::vsnprintf(_str, _count, _format, _argList); + return ::vsnprintf(_out, _max, _format, _argList); #endif // BX_COMPILER_MSVC } +#endif // !BX_CRT_NONE - int32_t snprintf(char* _str, size_t _count, const char* _format, ...) + int32_t snprintf(char* _out, size_t _max, const char* _format, ...) { va_list argList; va_start(argList, _format); - int32_t len = vsnprintf(_str, _count, _format, argList); + int32_t len = vsnprintf(_out, _max, _format, argList); va_end(argList); return len; } - int32_t vsnwprintf(wchar_t* _str, size_t _count, const wchar_t* _format, va_list _argList) +#if !BX_CRT_NONE + int32_t vsnwprintf(wchar_t* _out, size_t _max, const wchar_t* _format, va_list _argList) { -#if BX_COMPILER_MSVC +#if BX_CRT_MSVC int32_t len = -1; - if (NULL != _str) + if (NULL != _out) { va_list argListCopy; va_copy(argListCopy, _argList); - len = ::_vsnwprintf_s(_str, _count, size_t(-1), _format, argListCopy); + len = ::_vsnwprintf_s(_out, _max, size_t(-1), _format, argListCopy); va_end(argListCopy); } return -1 == len ? ::_vscwprintf(_format, _argList) : len; -#elif defined(__MINGW32__) - return ::vsnwprintf(_str, _count, _format, _argList); +#elif BX_CRT_MINGW + return ::vsnwprintf(_out, _max, _format, _argList); #else - return ::vswprintf(_str, _count, _format, _argList); + return ::vswprintf(_out, _max, _format, _argList); #endif // BX_COMPILER_MSVC } - int32_t swnprintf(wchar_t* _out, size_t _count, const wchar_t* _format, ...) + int32_t swnprintf(wchar_t* _out, size_t _max, const wchar_t* _format, ...) { va_list argList; va_start(argList, _format); - int32_t len = vsnwprintf(_out, _count, _format, argList); + int32_t len = vsnwprintf(_out, _max, _format, argList); va_end(argList); return len; } +#endif // !BX_CRT_NONE const char* baseName(const char* _filePath) {