| 857 | } |
| 858 | |
| 859 | SimpleString VStringFromFormat(const char* format, va_list args) |
| 860 | { |
| 861 | va_list argsCopy; |
| 862 | va_copy(argsCopy, args); |
| 863 | enum |
| 864 | { |
| 865 | sizeOfdefaultBuffer = 100 |
| 866 | }; |
| 867 | char defaultBuffer[sizeOfdefaultBuffer]; |
| 868 | SimpleString resultString; |
| 869 | |
| 870 | size_t size = (size_t)PlatformSpecificVSNprintf(defaultBuffer, sizeOfdefaultBuffer, format, args); |
| 871 | if (size < sizeOfdefaultBuffer) { |
| 872 | resultString = SimpleString(defaultBuffer); |
| 873 | } |
| 874 | else { |
| 875 | size_t newBufferSize = size + 1; |
| 876 | char* newBuffer = SimpleString::allocStringBuffer(newBufferSize, __FILE__, __LINE__); |
| 877 | PlatformSpecificVSNprintf(newBuffer, newBufferSize, format, argsCopy); |
| 878 | resultString = SimpleString(newBuffer); |
| 879 | |
| 880 | SimpleString::deallocStringBuffer(newBuffer, newBufferSize, __FILE__, __LINE__); |
| 881 | } |
| 882 | va_end(argsCopy); |
| 883 | return resultString; |
| 884 | } |
| 885 | |
| 886 | SimpleString StringFromBinary(const unsigned char* value, size_t size) |
| 887 | { |