mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-17 20:42:24 +02:00
Replace CopiedString
and LinkedString
with JsonString
This commit is contained in:
@ -18,7 +18,7 @@ TEST_CASE("StringCopier") {
|
||||
str.append("hello");
|
||||
|
||||
REQUIRE(str.isValid() == true);
|
||||
REQUIRE(std::string(str.str()) == "hello");
|
||||
REQUIRE(str.str() == "hello");
|
||||
REQUIRE(pool.overflowed() == false);
|
||||
}
|
||||
|
||||
|
@ -231,7 +231,7 @@ class JsonDeserializer {
|
||||
return false;
|
||||
}
|
||||
|
||||
typename TStringStorage::string_type key = _stringStorage.str();
|
||||
String key = _stringStorage.str();
|
||||
|
||||
TFilter memberFilter = filter[key.c_str()];
|
||||
|
||||
|
@ -417,7 +417,7 @@ class MsgPackDeserializer {
|
||||
if (!readKey())
|
||||
return false;
|
||||
|
||||
typename TStringStorage::string_type key = _stringStorage.str();
|
||||
String key = _stringStorage.str();
|
||||
TFilter memberFilter = filter[key.c_str()];
|
||||
VariantData *member;
|
||||
|
||||
|
@ -10,8 +10,6 @@ namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
class StringCopier {
|
||||
public:
|
||||
typedef CopiedString string_type;
|
||||
|
||||
StringCopier(MemoryPool& pool) : _pool(&pool) {}
|
||||
|
||||
void startString() {
|
||||
@ -21,10 +19,10 @@ class StringCopier {
|
||||
_pool->markAsOverflowed();
|
||||
}
|
||||
|
||||
string_type save() {
|
||||
String save() {
|
||||
ARDUINOJSON_ASSERT(_ptr);
|
||||
ARDUINOJSON_ASSERT(_size < _capacity); // needs room for the terminator
|
||||
return string_type(_pool->saveStringFromFreeZone(_size), _size);
|
||||
return String(_pool->saveStringFromFreeZone(_size), _size, false);
|
||||
}
|
||||
|
||||
void append(const char* s) {
|
||||
@ -50,11 +48,11 @@ class StringCopier {
|
||||
return _size;
|
||||
}
|
||||
|
||||
string_type str() const {
|
||||
String str() const {
|
||||
ARDUINOJSON_ASSERT(_ptr);
|
||||
ARDUINOJSON_ASSERT(_size < _capacity);
|
||||
_ptr[_size] = 0;
|
||||
return string_type(_ptr, _size);
|
||||
return String(_ptr, _size, false);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -5,23 +5,21 @@
|
||||
#pragma once
|
||||
|
||||
#include <ArduinoJson/Namespace.hpp>
|
||||
#include <ArduinoJson/Strings/StoredString.hpp>
|
||||
#include <ArduinoJson/Strings/String.hpp>
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
class StringMover {
|
||||
public:
|
||||
typedef LinkedString string_type;
|
||||
|
||||
StringMover(char* ptr) : _writePtr(ptr) {}
|
||||
|
||||
void startString() {
|
||||
_startPtr = _writePtr;
|
||||
}
|
||||
|
||||
FORCE_INLINE string_type save() {
|
||||
FORCE_INLINE String save() {
|
||||
_writePtr[0] = 0; // terminator
|
||||
string_type s = str();
|
||||
String s = str();
|
||||
_writePtr++;
|
||||
return s;
|
||||
}
|
||||
@ -34,8 +32,8 @@ class StringMover {
|
||||
return true;
|
||||
}
|
||||
|
||||
string_type str() const {
|
||||
return string_type(_startPtr, size());
|
||||
String str() const {
|
||||
return String(_startPtr, size(), true);
|
||||
}
|
||||
|
||||
size_t size() const {
|
||||
|
@ -5,7 +5,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <ArduinoJson/Memory/MemoryPool.hpp>
|
||||
#include <ArduinoJson/Strings/StoredString.hpp>
|
||||
#include <ArduinoJson/Strings/String.hpp>
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
@ -13,15 +12,13 @@ namespace ARDUINOJSON_NAMESPACE {
|
||||
struct LinkStringStoragePolicy {
|
||||
template <typename TAdaptedString, typename TCallback>
|
||||
bool store(TAdaptedString str, MemoryPool *, TCallback callback) {
|
||||
LinkedString storedString(str.data(), str.size());
|
||||
String storedString(str.data(), str.size(), true);
|
||||
callback(storedString);
|
||||
return !str.isNull();
|
||||
}
|
||||
};
|
||||
|
||||
struct CopyStringStoragePolicy {
|
||||
typedef CopiedString TResult;
|
||||
|
||||
template <typename TAdaptedString, typename TCallback>
|
||||
bool store(TAdaptedString str, MemoryPool *pool, TCallback callback);
|
||||
};
|
||||
|
@ -1,35 +0,0 @@
|
||||
// ArduinoJson - https://arduinojson.org
|
||||
// Copyright © 2014-2022, Benoit BLANCHON
|
||||
// MIT License
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
template <bool linked>
|
||||
class StoredString {
|
||||
public:
|
||||
StoredString() : _data(0), _size(0) {}
|
||||
StoredString(const char* p, size_t n) : _data(p), _size(n) {}
|
||||
|
||||
operator const char*() const {
|
||||
return _data;
|
||||
}
|
||||
|
||||
const char* c_str() const {
|
||||
return _data;
|
||||
}
|
||||
|
||||
size_t size() const {
|
||||
return _size;
|
||||
}
|
||||
|
||||
private:
|
||||
const char* _data;
|
||||
size_t _size;
|
||||
};
|
||||
|
||||
typedef StoredString<true> LinkedString;
|
||||
typedef StoredString<false> CopiedString;
|
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
@ -206,9 +206,9 @@ class MemoryPoolPrint : public Print {
|
||||
pool->getFreeZone(&_string, &_capacity);
|
||||
}
|
||||
|
||||
CopiedString str() {
|
||||
String str() {
|
||||
ARDUINOJSON_ASSERT(_size < _capacity);
|
||||
return CopiedString(_pool->saveStringFromFreeZone(_size), _size);
|
||||
return String(_pool->saveStringFromFreeZone(_size), _size, false);
|
||||
}
|
||||
|
||||
size_t write(uint8_t c) {
|
||||
|
@ -208,16 +208,12 @@ class VariantData {
|
||||
setType(VALUE_IS_NULL);
|
||||
}
|
||||
|
||||
void setString(CopiedString s) {
|
||||
ARDUINOJSON_ASSERT(s);
|
||||
setType(VALUE_IS_OWNED_STRING);
|
||||
_content.asString.data = s.c_str();
|
||||
_content.asString.size = s.size();
|
||||
}
|
||||
|
||||
void setString(LinkedString s) {
|
||||
void setString(String s) {
|
||||
ARDUINOJSON_ASSERT(s);
|
||||
if (s.isStatic())
|
||||
setType(VALUE_IS_LINKED_STRING);
|
||||
else
|
||||
setType(VALUE_IS_OWNED_STRING);
|
||||
_content.asString.data = s.c_str();
|
||||
_content.asString.size = s.size();
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ template <typename TAdaptedString, typename TCallback>
|
||||
bool CopyStringStoragePolicy::store(TAdaptedString str, MemoryPool *pool,
|
||||
TCallback callback) {
|
||||
const char *copy = pool->saveString(str);
|
||||
CopiedString storedString(copy, str.size());
|
||||
String storedString(copy, str.size(), false);
|
||||
callback(storedString);
|
||||
return copy != 0;
|
||||
}
|
||||
|
@ -7,7 +7,6 @@
|
||||
#include <ArduinoJson/Polyfills/integer.hpp>
|
||||
#include <ArduinoJson/Polyfills/limits.hpp>
|
||||
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
||||
#include <ArduinoJson/Strings/StoredString.hpp>
|
||||
#include <ArduinoJson/Variant/VariantContent.hpp>
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
@ -77,15 +76,12 @@ class VariantSlot {
|
||||
_next = VariantSlotDiff(slot - this);
|
||||
}
|
||||
|
||||
void setKey(CopiedString k) {
|
||||
ARDUINOJSON_ASSERT(k);
|
||||
_flags |= OWNED_KEY_BIT;
|
||||
_key = k.c_str();
|
||||
}
|
||||
|
||||
void setKey(LinkedString k) {
|
||||
void setKey(String k) {
|
||||
ARDUINOJSON_ASSERT(k);
|
||||
if (k.isStatic())
|
||||
_flags &= VALUE_MASK;
|
||||
else
|
||||
_flags |= OWNED_KEY_BIT;
|
||||
_key = k.c_str();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user