forked from Mirrors/openclonk
Move strprintf to Standard
strprintf works like asprintf, except it returns a std::string.alut-include-path
parent
f9d78b8629
commit
c5ed6e7dc8
|
@ -798,3 +798,28 @@ int GetCharacterCount(const char * s)
|
|||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
std::string vstrprintf(const char *format, va_list args)
|
||||
{
|
||||
va_list argcopy;
|
||||
va_copy(argcopy, args);
|
||||
int size = vsnprintf(nullptr, 0, format, argcopy);
|
||||
if (size < 0)
|
||||
throw std::invalid_argument("invalid argument to strprintf");
|
||||
va_end(argcopy);
|
||||
std::string s;
|
||||
s.resize(size + 1);
|
||||
size = vsnprintf(&s[0], s.size(), format, args);
|
||||
assert(size >= 0);
|
||||
s.resize(size);
|
||||
return s;
|
||||
}
|
||||
|
||||
std::string strprintf(const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
std::string s = vstrprintf(format, args);
|
||||
va_end(args);
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -184,4 +184,8 @@ inline int ssprintf(char(&str)[N], const char *fmt, ...)
|
|||
// Checks a string for conformance with UTF-8
|
||||
bool IsValidUtf8(const char *string, int length = -1);
|
||||
|
||||
|
||||
std::string vstrprintf(const char *format, va_list args);
|
||||
std::string strprintf(const char *format, ...) GNUC_FORMAT_ATTRIBUTE;
|
||||
|
||||
#endif // INC_STANDARD
|
||||
|
|
|
@ -29,31 +29,6 @@
|
|||
#define C4AUL_SafeInherited "_inherited"
|
||||
#define C4AUL_DebugBreak "__debugbreak"
|
||||
|
||||
static std::string vstrprintf(const char *format, va_list args)
|
||||
{
|
||||
va_list argcopy;
|
||||
va_copy(argcopy, args);
|
||||
int size = vsnprintf(nullptr, 0, format, argcopy);
|
||||
if (size < 0)
|
||||
throw std::invalid_argument("invalid argument to strprintf");
|
||||
va_end(argcopy);
|
||||
std::string s;
|
||||
s.resize(size + 1);
|
||||
size = vsnprintf(&s[0], s.size(), format, args);
|
||||
assert(size >= 0);
|
||||
s.resize(size);
|
||||
return s;
|
||||
}
|
||||
|
||||
static std::string strprintf(const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
std::string s = vstrprintf(format, args);
|
||||
va_end(args);
|
||||
return s;
|
||||
}
|
||||
|
||||
static std::string FormatCodePosition(const C4ScriptHost *source_host, const char *pos, const C4ScriptHost *target_host = nullptr, const C4AulScriptFunc *func = nullptr)
|
||||
{
|
||||
std::string s;
|
||||
|
|
Loading…
Reference in New Issue