summaryrefslogtreecommitdiffstats
path: root/src/StringUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/StringUtils.cpp')
-rw-r--r--src/StringUtils.cpp43
1 files changed, 33 insertions, 10 deletions
diff --git a/src/StringUtils.cpp b/src/StringUtils.cpp
index 438f1864e..43bf8750b 100644
--- a/src/StringUtils.cpp
+++ b/src/StringUtils.cpp
@@ -52,10 +52,12 @@ static unsigned char HexToDec(char a_HexChar)
-AString & Printf(AString & str, const char * format, fmt::ArgList args)
+AString & vPrintf(AString & str, const char * format, fmt::printf_args args)
{
ASSERT(format != nullptr);
- str = fmt::sprintf(format, args);
+ fmt::memory_buffer Buffer;
+ fmt::printf(Buffer, fmt::to_string_view(format), args);
+ str.assign(Buffer.data(), Buffer.size());
return str;
}
@@ -63,10 +65,23 @@ AString & Printf(AString & str, const char * format, fmt::ArgList args)
-AString Printf(const char * format, fmt::ArgList args)
+AString vPrintf(const char * format, fmt::printf_args args)
{
ASSERT(format != nullptr);
- return fmt::sprintf(format, args);
+ return fmt::vsprintf(format, args);
+}
+
+
+
+
+
+AString & vAppendPrintf(AString & a_String, const char * format, fmt::printf_args args)
+{
+ ASSERT(format != nullptr);
+ fmt::memory_buffer Buffer;
+ fmt::printf(Buffer, fmt::to_string_view(format), args);
+ a_String.append(Buffer.data(), Buffer.size());
+ return a_String;
}
@@ -630,18 +645,18 @@ format binary data this way:
*/
AString & CreateHexDump(AString & a_Out, const void * a_Data, size_t a_Size, size_t a_BytesPerLine)
{
- fmt::MemoryWriter Output;
+ fmt::memory_buffer Output;
/* If formatting the data from the comment above:
Hex holds: "31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 "
Chars holds: "1234567890abcdef" */
- fmt::MemoryWriter Hex, Chars;
+ fmt::memory_buffer Hex, Chars;
if (a_Size > 0)
{
// Same as std::ceil(static_cast<float>(a_Size) / a_BytesPerLine);
const size_t NumLines = a_Size / a_BytesPerLine + (a_Size % a_BytesPerLine != 0);
const size_t CharsPerLine = 14 + 4 * a_BytesPerLine;
- Output.buffer().reserve(NumLines * CharsPerLine);
+ Output.reserve(NumLines * CharsPerLine);
}
for (size_t i = 0; i < a_Size; i += a_BytesPerLine)
@@ -650,12 +665,20 @@ AString & CreateHexDump(AString & a_Out, const void * a_Data, size_t a_Size, siz
for (size_t j = 0; j < k; j++)
{
Byte c = (static_cast<const Byte *>(a_Data))[i + j];
- Hex << HEX(c >> 4) << HEX(c & 0xf) << ' ';
- Chars << ((c >= ' ') ? static_cast<char>(c) : '.');
+ Hex.push_back(HEX(c >> 4));
+ Hex.push_back(HEX(c & 0xf));
+ Hex.push_back(' ');
+ Chars.push_back((c >= ' ') ? static_cast<char>(c) : '.');
} // for j
// Write Hex with a dynamic fixed width
- Output.write("{0:08x}: {1:{2}} {3}\n", i, Hex.c_str(), a_BytesPerLine * 3, Chars.c_str());
+ auto HexStr = fmt::string_view(Hex.data(), Hex.size());
+ auto CharsStr = fmt::string_view(Chars.data(), Chars.size());
+ fmt::format_to(
+ Output, "{0:08x}: {1:{2}} {3}\n",
+ i, HexStr, a_BytesPerLine * 3, CharsStr
+ );
+
Hex.clear();
Chars.clear();
} // for i