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"); |     str.append("hello"); | ||||||
|  |  | ||||||
|     REQUIRE(str.isValid() == true); |     REQUIRE(str.isValid() == true); | ||||||
|     REQUIRE(std::string(str.str()) == "hello"); |     REQUIRE(str.str() == "hello"); | ||||||
|     REQUIRE(pool.overflowed() == false); |     REQUIRE(pool.overflowed() == false); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -231,7 +231,7 @@ class JsonDeserializer { | |||||||
|         return false; |         return false; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       typename TStringStorage::string_type key = _stringStorage.str(); |       String key = _stringStorage.str(); | ||||||
|  |  | ||||||
|       TFilter memberFilter = filter[key.c_str()]; |       TFilter memberFilter = filter[key.c_str()]; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -417,7 +417,7 @@ class MsgPackDeserializer { | |||||||
|       if (!readKey()) |       if (!readKey()) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|       typename TStringStorage::string_type key = _stringStorage.str(); |       String key = _stringStorage.str(); | ||||||
|       TFilter memberFilter = filter[key.c_str()]; |       TFilter memberFilter = filter[key.c_str()]; | ||||||
|       VariantData *member; |       VariantData *member; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,8 +10,6 @@ namespace ARDUINOJSON_NAMESPACE { | |||||||
|  |  | ||||||
| class StringCopier { | class StringCopier { | ||||||
|  public: |  public: | ||||||
|   typedef CopiedString string_type; |  | ||||||
|  |  | ||||||
|   StringCopier(MemoryPool& pool) : _pool(&pool) {} |   StringCopier(MemoryPool& pool) : _pool(&pool) {} | ||||||
|  |  | ||||||
|   void startString() { |   void startString() { | ||||||
| @@ -21,10 +19,10 @@ class StringCopier { | |||||||
|       _pool->markAsOverflowed(); |       _pool->markAsOverflowed(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   string_type save() { |   String 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_type(_pool->saveStringFromFreeZone(_size), _size); |     return String(_pool->saveStringFromFreeZone(_size), _size, false); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   void append(const char* s) { |   void append(const char* s) { | ||||||
| @@ -50,11 +48,11 @@ class StringCopier { | |||||||
|     return _size; |     return _size; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   string_type str() const { |   String str() const { | ||||||
|     ARDUINOJSON_ASSERT(_ptr); |     ARDUINOJSON_ASSERT(_ptr); | ||||||
|     ARDUINOJSON_ASSERT(_size < _capacity); |     ARDUINOJSON_ASSERT(_size < _capacity); | ||||||
|     _ptr[_size] = 0; |     _ptr[_size] = 0; | ||||||
|     return string_type(_ptr, _size); |     return String(_ptr, _size, false); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  private: |  private: | ||||||
|   | |||||||
| @@ -5,23 +5,21 @@ | |||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| #include <ArduinoJson/Namespace.hpp> | #include <ArduinoJson/Namespace.hpp> | ||||||
| #include <ArduinoJson/Strings/StoredString.hpp> | #include <ArduinoJson/Strings/String.hpp> | ||||||
|  |  | ||||||
| namespace ARDUINOJSON_NAMESPACE { | namespace ARDUINOJSON_NAMESPACE { | ||||||
|  |  | ||||||
| class StringMover { | class StringMover { | ||||||
|  public: |  public: | ||||||
|   typedef LinkedString string_type; |  | ||||||
|  |  | ||||||
|   StringMover(char* ptr) : _writePtr(ptr) {} |   StringMover(char* ptr) : _writePtr(ptr) {} | ||||||
|  |  | ||||||
|   void startString() { |   void startString() { | ||||||
|     _startPtr = _writePtr; |     _startPtr = _writePtr; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   FORCE_INLINE string_type save() { |   FORCE_INLINE String save() { | ||||||
|     _writePtr[0] = 0;  // terminator |     _writePtr[0] = 0;  // terminator | ||||||
|     string_type s = str(); |     String s = str(); | ||||||
|     _writePtr++; |     _writePtr++; | ||||||
|     return s; |     return s; | ||||||
|   } |   } | ||||||
| @@ -34,8 +32,8 @@ class StringMover { | |||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   string_type str() const { |   String str() const { | ||||||
|     return string_type(_startPtr, size()); |     return String(_startPtr, size(), true); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   size_t size() const { |   size_t size() const { | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ | |||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| #include <ArduinoJson/Memory/MemoryPool.hpp> | #include <ArduinoJson/Memory/MemoryPool.hpp> | ||||||
| #include <ArduinoJson/Strings/StoredString.hpp> |  | ||||||
| #include <ArduinoJson/Strings/String.hpp> | #include <ArduinoJson/Strings/String.hpp> | ||||||
|  |  | ||||||
| namespace ARDUINOJSON_NAMESPACE { | namespace ARDUINOJSON_NAMESPACE { | ||||||
| @@ -13,15 +12,13 @@ namespace ARDUINOJSON_NAMESPACE { | |||||||
| struct LinkStringStoragePolicy { | struct LinkStringStoragePolicy { | ||||||
|   template <typename TAdaptedString, typename TCallback> |   template <typename TAdaptedString, typename TCallback> | ||||||
|   bool store(TAdaptedString str, MemoryPool *, TCallback callback) { |   bool store(TAdaptedString str, MemoryPool *, TCallback callback) { | ||||||
|     LinkedString storedString(str.data(), str.size()); |     String storedString(str.data(), str.size(), true); | ||||||
|     callback(storedString); |     callback(storedString); | ||||||
|     return !str.isNull(); |     return !str.isNull(); | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct CopyStringStoragePolicy { | struct CopyStringStoragePolicy { | ||||||
|   typedef CopiedString TResult; |  | ||||||
|  |  | ||||||
|   template <typename TAdaptedString, typename TCallback> |   template <typename TAdaptedString, typename TCallback> | ||||||
|   bool store(TAdaptedString str, MemoryPool *pool, TCallback callback); |   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); |     pool->getFreeZone(&_string, &_capacity); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   CopiedString str() { |   String str() { | ||||||
|     ARDUINOJSON_ASSERT(_size < _capacity); |     ARDUINOJSON_ASSERT(_size < _capacity); | ||||||
|     return CopiedString(_pool->saveStringFromFreeZone(_size), _size); |     return String(_pool->saveStringFromFreeZone(_size), _size, false); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   size_t write(uint8_t c) { |   size_t write(uint8_t c) { | ||||||
|   | |||||||
| @@ -208,16 +208,12 @@ class VariantData { | |||||||
|     setType(VALUE_IS_NULL); |     setType(VALUE_IS_NULL); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   void setString(CopiedString s) { |   void setString(String s) { | ||||||
|     ARDUINOJSON_ASSERT(s); |  | ||||||
|     setType(VALUE_IS_OWNED_STRING); |  | ||||||
|     _content.asString.data = s.c_str(); |  | ||||||
|     _content.asString.size = s.size(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   void setString(LinkedString s) { |  | ||||||
|     ARDUINOJSON_ASSERT(s); |     ARDUINOJSON_ASSERT(s); | ||||||
|  |     if (s.isStatic()) | ||||||
|       setType(VALUE_IS_LINKED_STRING); |       setType(VALUE_IS_LINKED_STRING); | ||||||
|  |     else | ||||||
|  |       setType(VALUE_IS_OWNED_STRING); | ||||||
|     _content.asString.data = s.c_str(); |     _content.asString.data = s.c_str(); | ||||||
|     _content.asString.size = s.size(); |     _content.asString.size = s.size(); | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -174,7 +174,7 @@ template <typename TAdaptedString, typename TCallback> | |||||||
| bool CopyStringStoragePolicy::store(TAdaptedString str, MemoryPool *pool, | bool CopyStringStoragePolicy::store(TAdaptedString str, MemoryPool *pool, | ||||||
|                                     TCallback callback) { |                                     TCallback callback) { | ||||||
|   const char *copy = pool->saveString(str); |   const char *copy = pool->saveString(str); | ||||||
|   CopiedString storedString(copy, str.size()); |   String storedString(copy, str.size(), false); | ||||||
|   callback(storedString); |   callback(storedString); | ||||||
|   return copy != 0; |   return copy != 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,7 +7,6 @@ | |||||||
| #include <ArduinoJson/Polyfills/integer.hpp> | #include <ArduinoJson/Polyfills/integer.hpp> | ||||||
| #include <ArduinoJson/Polyfills/limits.hpp> | #include <ArduinoJson/Polyfills/limits.hpp> | ||||||
| #include <ArduinoJson/Polyfills/type_traits.hpp> | #include <ArduinoJson/Polyfills/type_traits.hpp> | ||||||
| #include <ArduinoJson/Strings/StoredString.hpp> |  | ||||||
| #include <ArduinoJson/Variant/VariantContent.hpp> | #include <ArduinoJson/Variant/VariantContent.hpp> | ||||||
|  |  | ||||||
| namespace ARDUINOJSON_NAMESPACE { | namespace ARDUINOJSON_NAMESPACE { | ||||||
| @@ -77,15 +76,12 @@ class VariantSlot { | |||||||
|     _next = VariantSlotDiff(slot - this); |     _next = VariantSlotDiff(slot - this); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   void setKey(CopiedString k) { |   void setKey(String k) { | ||||||
|     ARDUINOJSON_ASSERT(k); |  | ||||||
|     _flags |= OWNED_KEY_BIT; |  | ||||||
|     _key = k.c_str(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   void setKey(LinkedString k) { |  | ||||||
|     ARDUINOJSON_ASSERT(k); |     ARDUINOJSON_ASSERT(k); | ||||||
|  |     if (k.isStatic()) | ||||||
|       _flags &= VALUE_MASK; |       _flags &= VALUE_MASK; | ||||||
|  |     else | ||||||
|  |       _flags |= OWNED_KEY_BIT; | ||||||
|     _key = k.c_str(); |     _key = k.c_str(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user