mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-18 04:52:22 +02:00
Rename StringCopier
to StringBuilder
This commit is contained in:
@ -7,7 +7,7 @@ add_executable(MemoryPoolTests
|
||||
clear.cpp
|
||||
saveString.cpp
|
||||
size.cpp
|
||||
StringCopier.cpp
|
||||
StringBuilder.cpp
|
||||
)
|
||||
|
||||
add_test(MemoryPool MemoryPoolTests)
|
||||
|
@ -2,20 +2,20 @@
|
||||
// Copyright © 2014-2023, Benoit BLANCHON
|
||||
// MIT License
|
||||
|
||||
#include <ArduinoJson/StringStorage/StringCopier.hpp>
|
||||
#include <ArduinoJson/Memory/StringBuilder.hpp>
|
||||
#include <catch.hpp>
|
||||
|
||||
#include "Allocators.hpp"
|
||||
|
||||
using namespace ArduinoJson::detail;
|
||||
|
||||
TEST_CASE("StringCopier") {
|
||||
TEST_CASE("StringBuilder") {
|
||||
ControllableAllocator controllableAllocator;
|
||||
SpyingAllocator spyingAllocator(&controllableAllocator);
|
||||
MemoryPool pool(0, &spyingAllocator);
|
||||
|
||||
SECTION("Empty string") {
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
|
||||
str.startString();
|
||||
str.save();
|
||||
@ -29,7 +29,7 @@ TEST_CASE("StringCopier") {
|
||||
}
|
||||
|
||||
SECTION("Short string fits in first allocation") {
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
|
||||
str.startString();
|
||||
str.append("hello");
|
||||
@ -42,7 +42,7 @@ TEST_CASE("StringCopier") {
|
||||
}
|
||||
|
||||
SECTION("Long string needs reallocation") {
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
|
||||
str.startString();
|
||||
str.append(
|
||||
@ -63,7 +63,7 @@ TEST_CASE("StringCopier") {
|
||||
}
|
||||
|
||||
SECTION("Realloc fails") {
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
|
||||
str.startString();
|
||||
controllableAllocator.disable();
|
||||
@ -81,7 +81,7 @@ TEST_CASE("StringCopier") {
|
||||
}
|
||||
|
||||
SECTION("Initial allocation fails") {
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
|
||||
controllableAllocator.disable();
|
||||
str.startString();
|
||||
@ -94,13 +94,13 @@ TEST_CASE("StringCopier") {
|
||||
}
|
||||
|
||||
static StringNode* addStringToPool(MemoryPool& pool, const char* s) {
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
str.startString();
|
||||
str.append(s);
|
||||
return str.save();
|
||||
}
|
||||
|
||||
TEST_CASE("StringCopier::save() deduplicates strings") {
|
||||
TEST_CASE("StringBuilder::save() deduplicates strings") {
|
||||
MemoryPool pool(4096);
|
||||
|
||||
SECTION("Basic") {
|
@ -11,7 +11,7 @@ using namespace ArduinoJson::detail;
|
||||
|
||||
static void testCodepoint(uint32_t codepoint, std::string expected) {
|
||||
MemoryPool pool(4096);
|
||||
StringCopier str(&pool);
|
||||
StringBuilder str(&pool);
|
||||
str.startString();
|
||||
|
||||
CAPTURE(codepoint);
|
||||
|
@ -22,7 +22,7 @@ template <typename TReader>
|
||||
class JsonDeserializer {
|
||||
public:
|
||||
JsonDeserializer(MemoryPool* pool, TReader reader)
|
||||
: stringStorage_(pool),
|
||||
: stringBuilder_(pool),
|
||||
foundSomething_(false),
|
||||
latch_(reader),
|
||||
pool_(pool) {}
|
||||
@ -268,7 +268,7 @@ class JsonDeserializer {
|
||||
if (!eat(':'))
|
||||
return DeserializationError::InvalidInput;
|
||||
|
||||
JsonString key = stringStorage_.str();
|
||||
JsonString key = stringBuilder_.str();
|
||||
|
||||
TFilter memberFilter = filter[key.c_str()];
|
||||
|
||||
@ -276,7 +276,7 @@ class JsonDeserializer {
|
||||
VariantSlot* slot = object.get(adaptString(key.c_str()));
|
||||
if (!slot) {
|
||||
// Save key in memory pool.
|
||||
auto savedKey = stringStorage_.save();
|
||||
auto savedKey = stringBuilder_.save();
|
||||
|
||||
// Allocate slot in object
|
||||
slot = pool_->allocVariant();
|
||||
@ -375,7 +375,7 @@ class JsonDeserializer {
|
||||
}
|
||||
|
||||
DeserializationError::Code parseKey() {
|
||||
stringStorage_.startString();
|
||||
stringBuilder_.startString();
|
||||
if (isQuote(current())) {
|
||||
return parseQuotedString();
|
||||
} else {
|
||||
@ -386,13 +386,13 @@ class JsonDeserializer {
|
||||
DeserializationError::Code parseStringValue(VariantData& variant) {
|
||||
DeserializationError::Code err;
|
||||
|
||||
stringStorage_.startString();
|
||||
stringBuilder_.startString();
|
||||
|
||||
err = parseQuotedString();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
variant.setString(stringStorage_.save());
|
||||
variant.setString(stringBuilder_.save());
|
||||
|
||||
return DeserializationError::Ok;
|
||||
}
|
||||
@ -428,9 +428,9 @@ class JsonDeserializer {
|
||||
if (err)
|
||||
return err;
|
||||
if (codepoint.append(codeunit))
|
||||
Utf8::encodeCodepoint(codepoint.value(), stringStorage_);
|
||||
Utf8::encodeCodepoint(codepoint.value(), stringBuilder_);
|
||||
#else
|
||||
stringStorage_.append('\\');
|
||||
stringBuilder_.append('\\');
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
@ -442,10 +442,10 @@ class JsonDeserializer {
|
||||
move();
|
||||
}
|
||||
|
||||
stringStorage_.append(c);
|
||||
stringBuilder_.append(c);
|
||||
}
|
||||
|
||||
if (!stringStorage_.isValid())
|
||||
if (!stringBuilder_.isValid())
|
||||
return DeserializationError::NoMemory;
|
||||
|
||||
return DeserializationError::Ok;
|
||||
@ -458,14 +458,14 @@ class JsonDeserializer {
|
||||
if (canBeInNonQuotedString(c)) { // no quotes
|
||||
do {
|
||||
move();
|
||||
stringStorage_.append(c);
|
||||
stringBuilder_.append(c);
|
||||
c = current();
|
||||
} while (canBeInNonQuotedString(c));
|
||||
} else {
|
||||
return DeserializationError::InvalidInput;
|
||||
}
|
||||
|
||||
if (!stringStorage_.isValid())
|
||||
if (!stringBuilder_.isValid())
|
||||
return DeserializationError::NoMemory;
|
||||
|
||||
return DeserializationError::Ok;
|
||||
@ -657,7 +657,7 @@ class JsonDeserializer {
|
||||
return DeserializationError::Ok;
|
||||
}
|
||||
|
||||
StringCopier stringStorage_;
|
||||
StringBuilder stringBuilder_;
|
||||
bool foundSomething_;
|
||||
Latch<TReader> latch_;
|
||||
MemoryPool* pool_;
|
||||
|
@ -8,13 +8,13 @@
|
||||
|
||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
||||
|
||||
class StringCopier {
|
||||
class StringBuilder {
|
||||
public:
|
||||
static const size_t initialCapacity = 31;
|
||||
|
||||
StringCopier(MemoryPool* pool) : pool_(pool) {}
|
||||
StringBuilder(MemoryPool* pool) : pool_(pool) {}
|
||||
|
||||
~StringCopier() {
|
||||
~StringBuilder() {
|
||||
if (node_)
|
||||
pool_->deallocString(node_);
|
||||
}
|
@ -19,7 +19,7 @@ class MsgPackDeserializer {
|
||||
MsgPackDeserializer(MemoryPool* pool, TReader reader)
|
||||
: pool_(pool),
|
||||
reader_(reader),
|
||||
stringStorage_(pool),
|
||||
stringBuilder_(pool),
|
||||
foundSomething_(false) {}
|
||||
|
||||
template <typename TFilter>
|
||||
@ -370,14 +370,14 @@ class MsgPackDeserializer {
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
variant->setString(stringStorage_.save());
|
||||
variant->setString(stringBuilder_.save());
|
||||
return DeserializationError::Ok;
|
||||
}
|
||||
|
||||
DeserializationError::Code readString(size_t n) {
|
||||
DeserializationError::Code err;
|
||||
|
||||
stringStorage_.startString();
|
||||
stringBuilder_.startString();
|
||||
for (; n; --n) {
|
||||
uint8_t c;
|
||||
|
||||
@ -385,10 +385,10 @@ class MsgPackDeserializer {
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
stringStorage_.append(static_cast<char>(c));
|
||||
stringBuilder_.append(static_cast<char>(c));
|
||||
}
|
||||
|
||||
if (!stringStorage_.isValid())
|
||||
if (!stringBuilder_.isValid())
|
||||
return DeserializationError::NoMemory;
|
||||
|
||||
return DeserializationError::Ok;
|
||||
@ -485,7 +485,7 @@ class MsgPackDeserializer {
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
JsonString key = stringStorage_.str();
|
||||
JsonString key = stringBuilder_.str();
|
||||
TFilter memberFilter = filter[key.c_str()];
|
||||
VariantData* member;
|
||||
|
||||
@ -493,7 +493,7 @@ class MsgPackDeserializer {
|
||||
ARDUINOJSON_ASSERT(object != 0);
|
||||
|
||||
// Save key in memory pool.
|
||||
auto savedKey = stringStorage_.save();
|
||||
auto savedKey = stringBuilder_.save();
|
||||
|
||||
VariantSlot* slot = pool_->allocVariant();
|
||||
if (!slot)
|
||||
@ -555,7 +555,7 @@ class MsgPackDeserializer {
|
||||
|
||||
MemoryPool* pool_;
|
||||
TReader reader_;
|
||||
StringCopier stringStorage_;
|
||||
StringBuilder stringBuilder_;
|
||||
bool foundSomething_;
|
||||
};
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <ArduinoJson/Json/JsonSerializer.hpp>
|
||||
#include <ArduinoJson/StringStorage/StringCopier.hpp>
|
||||
#include <ArduinoJson/Memory/StringBuilder.hpp>
|
||||
#include <ArduinoJson/Variant/JsonVariantConst.hpp>
|
||||
#include <ArduinoJson/Variant/VariantFunctions.hpp>
|
||||
|
||||
@ -212,7 +212,7 @@ class MemoryPoolPrint : public Print {
|
||||
}
|
||||
|
||||
private:
|
||||
StringCopier copier_;
|
||||
StringBuilder copier_;
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
|
Reference in New Issue
Block a user