Refactored StringBuilder into StringStorage

This commit is contained in:
Benoit Blanchon
2020-07-11 17:51:39 +02:00
parent 04c59985a1
commit 1600d39693
13 changed files with 128 additions and 193 deletions

View File

@@ -15,9 +15,6 @@ namespace ARDUINOJSON_NAMESPACE {
template <typename TReader, typename TStringStorage>
class MsgPackDeserializer {
typedef typename remove_reference<TStringStorage>::type::StringBuilder
StringBuilder;
public:
MsgPackDeserializer(MemoryPool &pool, TReader reader,
TStringStorage stringStorage)
@@ -241,16 +238,18 @@ class MsgPackDeserializer {
}
DeserializationError readString(const char *&result, size_t n) {
StringBuilder builder = _stringStorage.startString();
_stringStorage.startString(_pool);
for (; n; --n) {
uint8_t c;
if (!readBytes(c))
return DeserializationError::IncompleteInput;
builder.append(static_cast<char>(c));
_stringStorage.append(static_cast<char>(c));
}
result = builder.complete();
if (!result)
_stringStorage.append('\0');
if (!_stringStorage.isValid())
return DeserializationError::NoMemory;
_stringStorage.commit(_pool);
result = _stringStorage.c_str();
return DeserializationError::Ok;
}