1
0
Fork 0

FastNBTWriter: AddString now uses string_view

* Avoids an allocation for all those string literals we pass in
This commit is contained in:
Tiger Wang 2020-08-28 21:42:18 +01:00
parent 8fa8ee96fc
commit c1ffed60ec
2 changed files with 5 additions and 5 deletions

View File

@ -614,12 +614,12 @@ void cFastNBTWriter::AddDouble(const AString & a_Name, double a_Value)
void cFastNBTWriter::AddString(const AString & a_Name, const AString & a_Value) void cFastNBTWriter::AddString(const AString & a_Name, const std::string_view a_Value)
{ {
TagCommon(a_Name, TAG_String); TagCommon(a_Name, TAG_String);
UInt16 len = htons(static_cast<UInt16>(a_Value.size())); const UInt16 Length = htons(static_cast<UInt16>(a_Value.size()));
m_Result.append(reinterpret_cast<const char *>(&len), 2); m_Result.append(reinterpret_cast<const char *>(&Length), sizeof(Length));
m_Result.append(a_Value.c_str(), a_Value.size()); m_Result.append(a_Value);
} }

View File

@ -334,7 +334,7 @@ public:
void AddLong (const AString & a_Name, Int64 a_Value); void AddLong (const AString & a_Name, Int64 a_Value);
void AddFloat (const AString & a_Name, float a_Value); void AddFloat (const AString & a_Name, float a_Value);
void AddDouble (const AString & a_Name, double a_Value); void AddDouble (const AString & a_Name, double a_Value);
void AddString (const AString & a_Name, const AString & a_Value); void AddString (const AString & a_Name, std::string_view a_Value);
void AddByteArray(const AString & a_Name, const char * a_Value, size_t a_NumElements); void AddByteArray(const AString & a_Name, const char * a_Value, size_t a_NumElements);
void AddIntArray (const AString & a_Name, const Int32 * a_Value, size_t a_NumElements); void AddIntArray (const AString & a_Name, const Int32 * a_Value, size_t a_NumElements);