Browse Source

Added BX_CRT_NONE define.

Branimir Karadžić 9 years ago
parent
commit
ffbaa3c7c1
3 changed files with 67 additions and 42 deletions
  1. 36 14
      include/bx/platform.h
  2. 7 7
      include/bx/string.h
  3. 24 21
      src/string.cpp

+ 36 - 14
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

+ 7 - 7
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 <typename Ty>
@@ -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);

+ 24 - 21
src/string.cpp

@@ -3,15 +3,14 @@
  * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
  */
 
-#include <alloca.h>
-#include <stdarg.h> // va_list
-#include <stdio.h>  // vsnprintf, vsnwprintf
-
 #include <bx/string.h>
-
 #include <bx/allocator.h>
 #include <bx/hash.h>
 
+#if !BX_CRT_NONE
+#	include <stdio.h> // 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)
 	{