mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01: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