MCPcopy Create free account
hub / github.com/alecazam/kram / String_PrintfArgList

Function String_PrintfArgList

hlslparser/src/Engine.cpp:26–58  ·  view source on GitHub ↗

This version doesn't truncate and is simpler

Source from the content-addressed store, hash-verified

24
25// This version doesn't truncate and is simpler
26int String_PrintfArgList(std::string& buffer, const char* format, va_list args)
27{
28 int n = 0;
29
30 if (!String_HasChar(format, '%')) {
31 buffer += format;
32 n = (uint32_t)strlen(format);
33 }
34 else if (String_Equal(format, "%s")) {
35 va_list tmp;
36 va_copy(tmp, args);
37 const char* text = va_arg(args, const char*);
38 n = (uint32_t)strlen(text);
39 buffer += text;
40 va_end(tmp);
41 }
42 else {
43 va_list tmp;
44 va_copy(tmp, args);
45
46 int len = vsnprintf(nullptr, 0, format, tmp);
47 if (len >= 0) {
48 size_t bufferLength = buffer.length();
49 buffer.resize(bufferLength + len);
50 vsnprintf((char*)buffer.data() + bufferLength, len + 1, format, tmp);
51
52 n = len;
53 }
54 va_end(tmp);
55 }
56
57 return n;
58}
59
60// This version truncates but works on stack
61int String_PrintfArgList(char* buffer, int size, const char* format, va_list args)

Callers 5

String_PrintfFunction · 0.85
Log_ErrorArgListFunction · 0.85
WriteMethod · 0.85
WriteLineMethod · 0.85
WriteLineTaggedMethod · 0.85

Calls 6

String_HasCharFunction · 0.85
String_EqualFunction · 0.85
String_CopyFunction · 0.85
lengthMethod · 0.45
resizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected