Rename String to JsonString

This commit is contained in:
Benoit Blanchon
2022-12-19 12:02:48 +01:00
parent d0b619ea93
commit b8eff868e6
15 changed files with 61 additions and 58 deletions

View File

@ -55,7 +55,7 @@ using ARDUINOJSON_NAMESPACE::JsonObject;
using ARDUINOJSON_NAMESPACE::JsonObjectConst; using ARDUINOJSON_NAMESPACE::JsonObjectConst;
using ARDUINOJSON_NAMESPACE::JsonPair; using ARDUINOJSON_NAMESPACE::JsonPair;
using ARDUINOJSON_NAMESPACE::JsonPairConst; using ARDUINOJSON_NAMESPACE::JsonPairConst;
typedef ARDUINOJSON_NAMESPACE::String JsonString; using ARDUINOJSON_NAMESPACE::JsonString;
using ARDUINOJSON_NAMESPACE::JsonUInt; using ARDUINOJSON_NAMESPACE::JsonUInt;
typedef ARDUINOJSON_NAMESPACE::VariantConstRef JsonVariantConst; typedef ARDUINOJSON_NAMESPACE::VariantConstRef JsonVariantConst;
typedef ARDUINOJSON_NAMESPACE::VariantRef JsonVariant; typedef ARDUINOJSON_NAMESPACE::VariantRef JsonVariant;

View File

@ -81,7 +81,7 @@ inline size_t copyArray(JsonArrayConst src, T* dst, size_t len) {
// Special case for char[] which must be treated as a string // Special case for char[] which must be treated as a string
template <size_t N> template <size_t N>
inline size_t copyArray(VariantConstRef src, char (&dst)[N]) { inline size_t copyArray(VariantConstRef src, char (&dst)[N]) {
String s = src; JsonString s = src;
size_t len = N - 1; size_t len = N - 1;
if (len > s.size()) if (len > s.size())
len = s.size(); len = s.size();

View File

@ -60,7 +60,8 @@ inline bool CollectionData::copyFrom(const CollectionData& src,
for (VariantSlot* s = src._head; s; s = s->next()) { for (VariantSlot* s = src._head; s; s = s->next()) {
VariantData* var; VariantData* var;
if (s->key() != 0) { if (s->key() != 0) {
String key(s->key(), s->ownsKey() ? String::Copied : String::Linked); JsonString key(s->key(),
s->ownsKey() ? JsonString::Copied : JsonString::Linked);
var = addMember(adaptString(key), pool); var = addMember(adaptString(key), pool);
} else { } else {
var = addElement(pool); var = addElement(pool);

View File

@ -263,7 +263,7 @@ class JsonDeserializer {
if (!eat(':')) if (!eat(':'))
return DeserializationError::InvalidInput; return DeserializationError::InvalidInput;
String key = _stringStorage.str(); JsonString key = _stringStorage.str();
TFilter memberFilter = filter[key.c_str()]; TFilter memberFilter = filter[key.c_str()];

View File

@ -222,7 +222,7 @@ template <typename TAdaptedString, typename TCallback>
bool storeString(MemoryPool* pool, TAdaptedString str, bool storeString(MemoryPool* pool, TAdaptedString str,
StringStoragePolicy::Copy, TCallback callback) { StringStoragePolicy::Copy, TCallback callback) {
const char* copy = pool->saveString(str); const char* copy = pool->saveString(str);
String storedString(copy, str.size(), String::Copied); JsonString storedString(copy, str.size(), JsonString::Copied);
callback(storedString); callback(storedString);
return copy != 0; return copy != 0;
} }
@ -230,7 +230,7 @@ bool storeString(MemoryPool* pool, TAdaptedString str,
template <typename TAdaptedString, typename TCallback> template <typename TAdaptedString, typename TCallback>
bool storeString(MemoryPool*, TAdaptedString str, StringStoragePolicy::Link, bool storeString(MemoryPool*, TAdaptedString str, StringStoragePolicy::Link,
TCallback callback) { TCallback callback) {
String storedString(str.data(), str.size(), String::Linked); JsonString storedString(str.data(), str.size(), JsonString::Linked);
callback(storedString); callback(storedString);
return !str.isNull(); return !str.isNull();
} }

View File

@ -470,7 +470,7 @@ class MsgPackDeserializer {
if (err) if (err)
return err; return err;
String key = _stringStorage.str(); JsonString key = _stringStorage.str();
TFilter memberFilter = filter[key.c_str()]; TFilter memberFilter = filter[key.c_str()];
VariantData* member; VariantData* member;

View File

@ -4,7 +4,7 @@
#pragma once #pragma once
#include <ArduinoJson/Strings/String.hpp> #include <ArduinoJson/Strings/JsonString.hpp>
#include <ArduinoJson/Variant/VariantConstRef.hpp> #include <ArduinoJson/Variant/VariantConstRef.hpp>
#include <ArduinoJson/Variant/VariantRef.hpp> #include <ArduinoJson/Variant/VariantRef.hpp>
@ -14,13 +14,13 @@ class JsonPair {
public: public:
JsonPair(MemoryPool* pool, VariantSlot* slot) { JsonPair(MemoryPool* pool, VariantSlot* slot) {
if (slot) { if (slot) {
_key = String(slot->key(), _key = JsonString(slot->key(), slot->ownsKey() ? JsonString::Copied
slot->ownsKey() ? String::Copied : String::Linked); : JsonString::Linked);
_value = VariantRef(pool, slot->data()); _value = VariantRef(pool, slot->data());
} }
} }
String key() const { JsonString key() const {
return _key; return _key;
} }
@ -29,7 +29,7 @@ class JsonPair {
} }
private: private:
String _key; JsonString _key;
VariantRef _value; VariantRef _value;
}; };
@ -37,13 +37,13 @@ class JsonPairConst {
public: public:
JsonPairConst(const VariantSlot* slot) { JsonPairConst(const VariantSlot* slot) {
if (slot) { if (slot) {
_key = String(slot->key(), _key = JsonString(slot->key(), slot->ownsKey() ? JsonString::Copied
slot->ownsKey() ? String::Copied : String::Linked); : JsonString::Linked);
_value = VariantConstRef(slot->data()); _value = VariantConstRef(slot->data());
} }
} }
String key() const { JsonString key() const {
return _key; return _key;
} }
@ -52,7 +52,7 @@ class JsonPairConst {
} }
private: private:
String _key; JsonString _key;
VariantConstRef _value; VariantConstRef _value;
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -19,10 +19,11 @@ class StringCopier {
_pool->markAsOverflowed(); _pool->markAsOverflowed();
} }
String save() { JsonString save() {
ARDUINOJSON_ASSERT(_ptr); ARDUINOJSON_ASSERT(_ptr);
ARDUINOJSON_ASSERT(_size < _capacity); // needs room for the terminator ARDUINOJSON_ASSERT(_size < _capacity); // needs room for the terminator
return String(_pool->saveStringFromFreeZone(_size), _size, String::Copied); return JsonString(_pool->saveStringFromFreeZone(_size), _size,
JsonString::Copied);
} }
void append(const char* s) { void append(const char* s) {
@ -48,11 +49,11 @@ class StringCopier {
return _size; return _size;
} }
String str() const { JsonString str() const {
ARDUINOJSON_ASSERT(_ptr); ARDUINOJSON_ASSERT(_ptr);
ARDUINOJSON_ASSERT(_size < _capacity); ARDUINOJSON_ASSERT(_size < _capacity);
_ptr[_size] = 0; _ptr[_size] = 0;
return String(_ptr, _size, String::Copied); return JsonString(_ptr, _size, JsonString::Copied);
} }
private: private:

View File

@ -5,7 +5,7 @@
#pragma once #pragma once
#include <ArduinoJson/Namespace.hpp> #include <ArduinoJson/Namespace.hpp>
#include <ArduinoJson/Strings/String.hpp> #include <ArduinoJson/Strings/JsonString.hpp>
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
@ -17,8 +17,8 @@ class StringMover {
_startPtr = _writePtr; _startPtr = _writePtr;
} }
FORCE_INLINE String save() { FORCE_INLINE JsonString save() {
String s = str(); JsonString s = str();
_writePtr++; _writePtr++;
return s; return s;
} }
@ -31,9 +31,9 @@ class StringMover {
return true; return true;
} }
String str() const { JsonString str() const {
_writePtr[0] = 0; // terminator _writePtr[0] = 0; // terminator
return String(_startPtr, size(), String::Linked); return JsonString(_startPtr, size(), JsonString::Linked);
} }
size_t size() const { size_t size() const {

View File

@ -5,14 +5,14 @@
#pragma once #pragma once
#include <ArduinoJson/Strings/Adapters/RamString.hpp> #include <ArduinoJson/Strings/Adapters/RamString.hpp>
#include <ArduinoJson/Strings/String.hpp> #include <ArduinoJson/Strings/JsonString.hpp>
#include <ArduinoJson/Strings/StringAdapter.hpp> #include <ArduinoJson/Strings/StringAdapter.hpp>
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
class JsonStringAdapter : public SizedRamString { class JsonStringAdapter : public SizedRamString {
public: public:
JsonStringAdapter(const String& s) JsonStringAdapter(const JsonString& s)
: SizedRamString(s.c_str(), s.size()), _linked(s.isLinked()) {} : SizedRamString(s.c_str(), s.size()), _linked(s.isLinked()) {}
StringStoragePolicy::LinkOrCopy storagePolicy() { StringStoragePolicy::LinkOrCopy storagePolicy() {
@ -25,10 +25,10 @@ class JsonStringAdapter : public SizedRamString {
}; };
template <> template <>
struct StringAdapter<String> { struct StringAdapter<JsonString> {
typedef JsonStringAdapter AdaptedString; typedef JsonStringAdapter AdaptedString;
static AdaptedString adapt(const String& s) { static AdaptedString adapt(const JsonString& s) {
return AdaptedString(s); return AdaptedString(s);
} }
}; };

View File

@ -12,16 +12,16 @@
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
class String : public SafeBoolIdom<String> { class JsonString : public SafeBoolIdom<JsonString> {
public: public:
enum Ownership { Copied, Linked }; enum Ownership { Copied, Linked };
String() : _data(0), _size(0), _ownership(Linked) {} JsonString() : _data(0), _size(0), _ownership(Linked) {}
String(const char* data, Ownership ownership = Linked) JsonString(const char* data, Ownership ownership = Linked)
: _data(data), _size(data ? ::strlen(data) : 0), _ownership(ownership) {} : _data(data), _size(data ? ::strlen(data) : 0), _ownership(ownership) {}
String(const char* data, size_t sz, Ownership ownership = Linked) JsonString(const char* data, size_t sz, Ownership ownership = Linked)
: _data(data), _size(sz), _ownership(ownership) {} : _data(data), _size(sz), _ownership(ownership) {}
const char* c_str() const { const char* c_str() const {
@ -45,7 +45,7 @@ class String : public SafeBoolIdom<String> {
return _data ? safe_true() : safe_false(); return _data ? safe_true() : safe_false();
} }
friend bool operator==(String lhs, String rhs) { friend bool operator==(JsonString lhs, JsonString rhs) {
if (lhs._size != rhs._size) if (lhs._size != rhs._size)
return false; return false;
if (lhs._data == rhs._data) if (lhs._data == rhs._data)
@ -57,12 +57,12 @@ class String : public SafeBoolIdom<String> {
return memcmp(lhs._data, rhs._data, lhs._size) == 0; return memcmp(lhs._data, rhs._data, lhs._size) == 0;
} }
friend bool operator!=(String lhs, String rhs) { friend bool operator!=(JsonString lhs, JsonString rhs) {
return !(lhs == rhs); return !(lhs == rhs);
} }
#if ARDUINOJSON_ENABLE_STD_STREAM #if ARDUINOJSON_ENABLE_STD_STREAM
friend std::ostream& operator<<(std::ostream& lhs, const String& rhs) { friend std::ostream& operator<<(std::ostream& lhs, const JsonString& rhs) {
lhs.write(rhs.c_str(), static_cast<std::streamsize>(rhs.size())); lhs.write(rhs.c_str(), static_cast<std::streamsize>(rhs.size()));
return lhs; return lhs;
} }

View File

@ -133,12 +133,12 @@ struct Converter<const char*> : private VariantAttorney {
}; };
template <> template <>
struct Converter<String> : private VariantAttorney { struct Converter<JsonString> : private VariantAttorney {
static void toJson(String src, VariantRef dst) { static void toJson(JsonString src, VariantRef dst) {
variantSetString(getData(dst), adaptString(src), getPool(dst)); variantSetString(getData(dst), adaptString(src), getPool(dst));
} }
static String fromJson(VariantConstRef src) { static JsonString fromJson(VariantConstRef src) {
const VariantData* data = getData(src); const VariantData* data = getData(src);
return data ? data->asString() : 0; return data ? data->asString() : 0;
} }
@ -207,9 +207,10 @@ class MemoryPoolPrint : public Print {
pool->getFreeZone(&_string, &_capacity); pool->getFreeZone(&_string, &_capacity);
} }
String str() { JsonString str() {
ARDUINOJSON_ASSERT(_size < _capacity); ARDUINOJSON_ASSERT(_size < _capacity);
return String(_pool->saveStringFromFreeZone(_size), _size, String::Copied); return JsonString(_pool->saveStringFromFreeZone(_size), _size,
JsonString::Copied);
} }
size_t write(uint8_t c) { size_t write(uint8_t c) {
@ -261,7 +262,7 @@ inline void convertToJson(const ::Printable& src, VariantRef dst) {
#if ARDUINOJSON_ENABLE_ARDUINO_STRING #if ARDUINOJSON_ENABLE_ARDUINO_STRING
inline void convertFromJson(VariantConstRef src, ::String& dst) { inline void convertFromJson(VariantConstRef src, ::String& dst) {
String str = src.as<String>(); JsonString str = src.as<JsonString>();
if (str) if (str)
dst = str.c_str(); dst = str.c_str();
else else
@ -269,7 +270,7 @@ inline void convertFromJson(VariantConstRef src, ::String& dst) {
} }
inline bool canConvertFromJson(VariantConstRef src, const ::String&) { inline bool canConvertFromJson(VariantConstRef src, const ::String&) {
return src.is<String>(); return src.is<JsonString>();
} }
#endif #endif
@ -277,7 +278,7 @@ inline bool canConvertFromJson(VariantConstRef src, const ::String&) {
#if ARDUINOJSON_ENABLE_STD_STRING #if ARDUINOJSON_ENABLE_STD_STRING
inline void convertFromJson(VariantConstRef src, std::string& dst) { inline void convertFromJson(VariantConstRef src, std::string& dst) {
String str = src.as<String>(); JsonString str = src.as<JsonString>();
if (str) if (str)
dst.assign(str.c_str(), str.size()); dst.assign(str.c_str(), str.size());
else else
@ -285,7 +286,7 @@ inline void convertFromJson(VariantConstRef src, std::string& dst) {
} }
inline bool canConvertFromJson(VariantConstRef src, const std::string&) { inline bool canConvertFromJson(VariantConstRef src, const std::string&) {
return src.is<String>(); return src.is<JsonString>();
} }
#endif #endif
@ -293,13 +294,13 @@ inline bool canConvertFromJson(VariantConstRef src, const std::string&) {
#if ARDUINOJSON_ENABLE_STRING_VIEW #if ARDUINOJSON_ENABLE_STRING_VIEW
inline void convertFromJson(VariantConstRef src, std::string_view& dst) { inline void convertFromJson(VariantConstRef src, std::string_view& dst) {
String str = src.as<String>(); JsonString str = src.as<JsonString>();
if (str) // the standard doesn't allow passing null to the constructor if (str) // the standard doesn't allow passing null to the constructor
dst = std::string_view(str.c_str(), str.size()); dst = std::string_view(str.c_str(), str.size());
} }
inline bool canConvertFromJson(VariantConstRef src, const std::string_view&) { inline bool canConvertFromJson(VariantConstRef src, const std::string_view&) {
return src.is<String>(); return src.is<JsonString>();
} }
#endif #endif

View File

@ -7,7 +7,7 @@
#include <ArduinoJson/Memory/MemoryPool.hpp> #include <ArduinoJson/Memory/MemoryPool.hpp>
#include <ArduinoJson/Misc/SerializedValue.hpp> #include <ArduinoJson/Misc/SerializedValue.hpp>
#include <ArduinoJson/Numbers/convertNumber.hpp> #include <ArduinoJson/Numbers/convertNumber.hpp>
#include <ArduinoJson/Strings/String.hpp> #include <ArduinoJson/Strings/JsonString.hpp>
#include <ArduinoJson/Strings/StringAdapters.hpp> #include <ArduinoJson/Strings/StringAdapters.hpp>
#include <ArduinoJson/Variant/VariantContent.hpp> #include <ArduinoJson/Variant/VariantContent.hpp>
@ -84,7 +84,7 @@ class VariantData {
template <typename T> template <typename T>
T asFloat() const; T asFloat() const;
String asString() const; JsonString asString() const;
bool asBoolean() const; bool asBoolean() const;
@ -217,7 +217,7 @@ class VariantData {
setType(VALUE_IS_NULL); setType(VALUE_IS_NULL);
} }
void setString(String s) { void setString(JsonString s) {
ARDUINOJSON_ASSERT(s); ARDUINOJSON_ASSERT(s);
if (s.isLinked()) if (s.isLinked())
setType(VALUE_IS_LINKED_STRING); setType(VALUE_IS_LINKED_STRING);

View File

@ -70,16 +70,16 @@ inline T VariantData::asFloat() const {
} }
} }
inline String VariantData::asString() const { inline JsonString VariantData::asString() const {
switch (type()) { switch (type()) {
case VALUE_IS_LINKED_STRING: case VALUE_IS_LINKED_STRING:
return String(_content.asString.data, _content.asString.size, return JsonString(_content.asString.data, _content.asString.size,
String::Linked); JsonString::Linked);
case VALUE_IS_OWNED_STRING: case VALUE_IS_OWNED_STRING:
return String(_content.asString.data, _content.asString.size, return JsonString(_content.asString.data, _content.asString.size,
String::Copied); JsonString::Copied);
default: default:
return String(); return JsonString();
} }
} }
@ -90,7 +90,7 @@ inline bool VariantData::copyFrom(const VariantData& src, MemoryPool* pool) {
case VALUE_IS_OBJECT: case VALUE_IS_OBJECT:
return toObject().copyFrom(src._content.asCollection, pool); return toObject().copyFrom(src._content.asCollection, pool);
case VALUE_IS_OWNED_STRING: { case VALUE_IS_OWNED_STRING: {
String value = src.asString(); JsonString value = src.asString();
return setString(adaptString(value), pool); return setString(adaptString(value), pool);
} }
case VALUE_IS_OWNED_RAW: case VALUE_IS_OWNED_RAW:

View File

@ -76,7 +76,7 @@ class VariantSlot {
_next = VariantSlotDiff(slot - this); _next = VariantSlotDiff(slot - this);
} }
void setKey(String k) { void setKey(JsonString k) {
ARDUINOJSON_ASSERT(k); ARDUINOJSON_ASSERT(k);
if (k.isLinked()) if (k.isLinked())
_flags &= VALUE_MASK; _flags &= VALUE_MASK;