mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Renamed JsonKey to JsonString
				
					
				
			This commit is contained in:
		| @@ -8,6 +8,7 @@ HEAD | ||||
| * Restored the monotonic allocator because the code was getting too big | ||||
| * Reduced the memory usage | ||||
| * Reduced the code size | ||||
| * Renamed `JsonKey` to `JsonString` | ||||
| * Removed spurious files in the Particle library | ||||
|  | ||||
| v6.6.0-beta (2018-11-13) | ||||
|   | ||||
| @@ -38,9 +38,9 @@ typedef ARDUINOJSON_NAMESPACE::Pair JsonPair; | ||||
| typedef ARDUINOJSON_NAMESPACE::UInt JsonUInt; | ||||
| typedef ARDUINOJSON_NAMESPACE::VariantRef JsonVariant; | ||||
| typedef ARDUINOJSON_NAMESPACE::VariantConstRef JsonVariantConst; | ||||
| typedef ARDUINOJSON_NAMESPACE::String JsonString; | ||||
| using ARDUINOJSON_NAMESPACE::DeserializationError; | ||||
| using ARDUINOJSON_NAMESPACE::DynamicJsonDocument; | ||||
| using ARDUINOJSON_NAMESPACE::Key; | ||||
| using ARDUINOJSON_NAMESPACE::serialized; | ||||
| using ARDUINOJSON_NAMESPACE::StaticJsonDocument; | ||||
| }  // namespace ArduinoJson | ||||
|   | ||||
| @@ -101,7 +101,7 @@ class ArrayRef : public ArrayRefBase<CollectionData>, public Visitable { | ||||
|   } | ||||
|   // | ||||
|   // bool add(TValue); | ||||
|   // TValue = char*, const char*, const FlashStringHelper* | ||||
|   // TValue = char*, const char*, const __FlashStringHelper* | ||||
|   template <typename T> | ||||
|   FORCE_INLINE bool add(T* value) const { | ||||
|     return add().set(value); | ||||
|   | ||||
| @@ -36,7 +36,7 @@ class ArraySubscript : public VariantOperators<ArraySubscript>, | ||||
|   } | ||||
|   // | ||||
|   // operator=(TValue) | ||||
|   // TValue = char*, const char*, const FlashStringHelper* | ||||
|   // TValue = char*, const char*, const __FlashStringHelper* | ||||
|   template <typename T> | ||||
|   FORCE_INLINE ArraySubscript& operator=(T* src) { | ||||
|     get_impl().set(src); | ||||
| @@ -73,7 +73,7 @@ class ArraySubscript : public VariantOperators<ArraySubscript>, | ||||
|   } | ||||
|   // | ||||
|   // bool set(TValue) | ||||
|   // TValue = char*, const char*, const FlashStringHelper* | ||||
|   // TValue = char*, const char*, const __FlashStringHelper* | ||||
|   template <typename TValue> | ||||
|   FORCE_INLINE bool set(TValue* value) const { | ||||
|     return get_impl().set(value); | ||||
|   | ||||
| @@ -53,9 +53,9 @@ inline bool CollectionData::copyFrom(const CollectionData& src, | ||||
|     VariantData* var; | ||||
|     if (s->key() != 0) { | ||||
|       if (s->ownsKey()) | ||||
|         var = add(ZeroTerminatedRamString(s->key()), pool); | ||||
|         var = add(RamStringWrapper(s->key()), pool); | ||||
|       else | ||||
|         var = add(ZeroTerminatedRamStringConst(s->key()), pool); | ||||
|         var = add(ConstRamStringWrapper(s->key()), pool); | ||||
|     } else { | ||||
|       var = add(pool); | ||||
|     } | ||||
| @@ -69,7 +69,7 @@ inline bool CollectionData::equalsObject(const CollectionData& other) const { | ||||
|   size_t count = 0; | ||||
|   for (VariantSlot* slot = _head; slot; slot = slot->next()) { | ||||
|     VariantData* v1 = slot->data(); | ||||
|     VariantData* v2 = other.get(makeString(slot->key())); | ||||
|     VariantData* v2 = other.get(wrapString(slot->key())); | ||||
|     if (!variantEquals(v1, v2)) return false; | ||||
|     count++; | ||||
|   } | ||||
|   | ||||
| @@ -51,7 +51,7 @@ inline SafeCharPointerReader makeReader(TChar* input, size_t n) { | ||||
| } | ||||
|  | ||||
| #if ARDUINOJSON_ENABLE_ARDUINO_STRING | ||||
| inline SafeCharPointerReader makeReader(const String& input) { | ||||
| inline SafeCharPointerReader makeReader(const ::String& input) { | ||||
|   return SafeCharPointerReader(input.c_str(), input.length()); | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -35,7 +35,7 @@ deserialize(JsonDocument &doc, const TString &input) { | ||||
| } | ||||
| // | ||||
| // DeserializationError deserialize(JsonDocument& doc, TChar* input); | ||||
| // TChar* = char*, const char*, const FlashStringHelper* | ||||
| // TChar* = char*, const char*, const __FlashStringHelper* | ||||
| template <template <typename, typename> class TDeserializer, typename TChar> | ||||
| DeserializationError deserialize(JsonDocument &doc, TChar *input) { | ||||
|   doc.clear(); | ||||
| @@ -47,7 +47,7 @@ DeserializationError deserialize(JsonDocument &doc, TChar *input) { | ||||
| // | ||||
| // DeserializationError deserialize(JsonDocument& doc, TChar* input, size_t | ||||
| // inputSize); | ||||
| // TChar* = char*, const char*, const FlashStringHelper* | ||||
| // TChar* = char*, const char*, const __FlashStringHelper* | ||||
| template <template <typename, typename> class TDeserializer, typename TChar> | ||||
| DeserializationError deserialize(JsonDocument &doc, TChar *input, | ||||
|                                  size_t inputSize) { | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "../Strings/StringTypes.hpp" | ||||
| #include "../Strings/StringWrappers.hpp" | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
|  | ||||
| @@ -58,7 +58,7 @@ inline SerializedValue<T> serialized(T str) { | ||||
|  | ||||
| template <typename TChar> | ||||
| inline SerializedValue<TChar*> serialized(TChar* p) { | ||||
|   return SerializedValue<TChar*>(p, makeString(p).size()); | ||||
|   return SerializedValue<TChar*>(p, wrapString(p).size()); | ||||
| } | ||||
|  | ||||
| template <typename TChar> | ||||
|   | ||||
| @@ -1,33 +0,0 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2018 | ||||
| // MIT License | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
|  | ||||
| class Key { | ||||
|  public: | ||||
|   Key(const VariantSlot* slot) : _slot(slot) {} | ||||
|  | ||||
|   operator const char*() const { | ||||
|     return c_str(); | ||||
|   } | ||||
|  | ||||
|   const char* c_str() const { | ||||
|     return _slot ? _slot->key() : 0; | ||||
|   } | ||||
|  | ||||
|   bool isNull() const { | ||||
|     return _slot == 0 || _slot->key() == 0; | ||||
|   } | ||||
|  | ||||
|   friend bool operator==(Key lhs, const char* rhs) { | ||||
|     if (lhs.isNull()) return rhs == 0; | ||||
|     return rhs ? !strcmp(lhs, rhs) : false; | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   const VariantSlot* _slot; | ||||
| }; | ||||
| }  // namespace ARDUINOJSON_NAMESPACE | ||||
| @@ -28,14 +28,14 @@ class ObjectRefBase { | ||||
|   // TKey = const std::string&, const String& | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE bool containsKey(const TKey& key) const { | ||||
|     return objectContainsKey(_data, makeString(key)); | ||||
|     return objectContainsKey(_data, wrapString(key)); | ||||
|   } | ||||
|   // | ||||
|   // bool containsKey(TKey); | ||||
|   // TKey = char*, const char*, char[], const char[], const FlashStringHelper* | ||||
|   // TKey = char*, const char*, char[], const char[], const __FlashStringHelper* | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE bool containsKey(TKey* key) const { | ||||
|     return objectContainsKey(_data, makeString(key)); | ||||
|     return objectContainsKey(_data, wrapString(key)); | ||||
|   } | ||||
|  | ||||
|   FORCE_INLINE bool isNull() const { | ||||
| @@ -79,16 +79,16 @@ class ObjectConstRef : public ObjectRefBase<const CollectionData>, | ||||
|   //          std::string, String, ArrayConstRef, ObjectConstRef | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE VariantConstRef get(const TKey& key) const { | ||||
|     return get_impl(makeString(key)); | ||||
|     return get_impl(wrapString(key)); | ||||
|   } | ||||
|   // | ||||
|   // TValue get<TValue>(TKey) const; | ||||
|   // TKey = char*, const char*, const FlashStringHelper* | ||||
|   // TKey = char*, const char*, const __FlashStringHelper* | ||||
|   // TValue = bool, char, long, int, short, float, double, | ||||
|   //          std::string, String, ArrayConstRef, ObjectConstRef | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE VariantConstRef get(TKey* key) const { | ||||
|     return get_impl(makeString(key)); | ||||
|     return get_impl(wrapString(key)); | ||||
|   } | ||||
|  | ||||
|   // | ||||
| @@ -97,15 +97,15 @@ class ObjectConstRef : public ObjectRefBase<const CollectionData>, | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE typename enable_if<IsString<TKey>::value, VariantConstRef>::type | ||||
|   operator[](const TKey& key) const { | ||||
|     return get_impl(makeString(key)); | ||||
|     return get_impl(wrapString(key)); | ||||
|   } | ||||
|   // | ||||
|   // VariantConstRef operator[](TKey) const; | ||||
|   // TKey = const char*, const char[N], const FlashStringHelper* | ||||
|   // TKey = const char*, const char[N], const __FlashStringHelper* | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE typename enable_if<IsString<TKey*>::value, VariantConstRef>::type | ||||
|   operator[](TKey* key) const { | ||||
|     return get_impl(makeString(key)); | ||||
|     return get_impl(wrapString(key)); | ||||
|   } | ||||
|  | ||||
|   FORCE_INLINE bool operator==(ObjectConstRef rhs) const { | ||||
| @@ -163,7 +163,7 @@ class ObjectRef : public ObjectRefBase<CollectionData>, public Visitable { | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE ArrayRef createNestedArray(const TKey& key) const; | ||||
|   // ArrayRef createNestedArray(TKey); | ||||
|   // TKey = char*, const char*, char[], const char[], const FlashStringHelper* | ||||
|   // TKey = char*, const char*, char[], const char[], const __FlashStringHelper* | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE ArrayRef createNestedArray(TKey* key) const; | ||||
|  | ||||
| @@ -177,7 +177,7 @@ class ObjectRef : public ObjectRefBase<CollectionData>, public Visitable { | ||||
|   } | ||||
|   // | ||||
|   // ObjectRef createNestedObject(TKey); | ||||
|   // TKey = char*, const char*, char[], const char[], const FlashStringHelper* | ||||
|   // TKey = char*, const char*, char[], const char[], const __FlashStringHelper* | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE ObjectRef createNestedObject(TKey* key) const { | ||||
|     return set(key).template to<ObjectRef>(); | ||||
| @@ -191,16 +191,16 @@ class ObjectRef : public ObjectRefBase<CollectionData>, public Visitable { | ||||
|   //          std::string, String, ArrayRef, ObjectRef | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE VariantRef get(const TKey& key) const { | ||||
|     return get_impl(makeString(key)); | ||||
|     return get_impl(wrapString(key)); | ||||
|   } | ||||
|   // | ||||
|   // TValue get<TValue>(TKey) const; | ||||
|   // TKey = char*, const char*, const FlashStringHelper* | ||||
|   // TKey = char*, const char*, const __FlashStringHelper* | ||||
|   // TValue = bool, char, long, int, short, float, double, | ||||
|   //          std::string, String, ArrayRef, ObjectRef | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE VariantRef get(TKey* key) const { | ||||
|     return get_impl(makeString(key)); | ||||
|     return get_impl(wrapString(key)); | ||||
|   } | ||||
|  | ||||
|   // Gets or sets the value associated with the specified key. | ||||
| @@ -213,7 +213,8 @@ class ObjectRef : public ObjectRefBase<CollectionData>, public Visitable { | ||||
|   } | ||||
|   // | ||||
|   // ObjectSubscript operator[](TKey) | ||||
|   // TKey = char*, const char*, char[], const char[N], const FlashStringHelper* | ||||
|   // TKey = char*, const char*, char[], const char[N], const | ||||
|   // __FlashStringHelper* | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE ObjectSubscript<TKey*> operator[](TKey* key) const { | ||||
|     return ObjectSubscript<TKey*>(*this, key); | ||||
| @@ -234,24 +235,24 @@ class ObjectRef : public ObjectRefBase<CollectionData>, public Visitable { | ||||
|   // TKey = const std::string&, const String& | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE void remove(const TKey& key) const { | ||||
|     objectRemove(_data, makeString(key)); | ||||
|     objectRemove(_data, wrapString(key)); | ||||
|   } | ||||
|   // | ||||
|   // void remove(TKey); | ||||
|   // TKey = char*, const char*, char[], const char[], const FlashStringHelper* | ||||
|   // TKey = char*, const char*, char[], const char[], const __FlashStringHelper* | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE void remove(TKey* key) const { | ||||
|     objectRemove(_data, makeString(key)); | ||||
|     objectRemove(_data, wrapString(key)); | ||||
|   } | ||||
|  | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE VariantRef set(TKey* key) const { | ||||
|     return set_impl(makeString(key)); | ||||
|     return set_impl(wrapString(key)); | ||||
|   } | ||||
|  | ||||
|   template <typename TKey> | ||||
|   FORCE_INLINE VariantRef set(const TKey& key) const { | ||||
|     return set_impl(makeString(key)); | ||||
|     return set_impl(wrapString(key)); | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   | ||||
| @@ -46,7 +46,7 @@ class ObjectSubscript : public VariantOperators<ObjectSubscript<TStringRef> >, | ||||
|   } | ||||
|   // | ||||
|   // operator=(TValue); | ||||
|   // TValue = char*, const char*, const FlashStringHelper* | ||||
|   // TValue = char*, const char*, const __FlashStringHelper* | ||||
|   template <typename TValue> | ||||
|   FORCE_INLINE this_type &operator=(TValue *src) { | ||||
|     set_impl().set(src); | ||||
| @@ -85,7 +85,7 @@ class ObjectSubscript : public VariantOperators<ObjectSubscript<TStringRef> >, | ||||
|   } | ||||
|   // | ||||
|   // bool set(TValue); | ||||
|   // TValue = char*, const char, const FlashStringHelper* | ||||
|   // TValue = char*, const char, const __FlashStringHelper* | ||||
|   template <typename TValue> | ||||
|   FORCE_INLINE bool set(const TValue *value) { | ||||
|     return set_impl().set(value); | ||||
|   | ||||
| @@ -4,20 +4,21 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "../Strings/String.hpp" | ||||
| #include "../Variant/VariantRef.hpp" | ||||
| #include "Key.hpp" | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| // A key value pair for CollectionData. | ||||
| class Pair { | ||||
|  public: | ||||
|   Pair(MemoryPool* pool, VariantSlot* slot) : _key(slot) { | ||||
|   Pair(MemoryPool* pool, VariantSlot* slot) { | ||||
|     if (slot) { | ||||
|       _key = slot->key(); | ||||
|       _value = VariantRef(pool, slot->data()); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   Key key() const { | ||||
|   String key() const { | ||||
|     return _key; | ||||
|   } | ||||
|  | ||||
| @@ -26,19 +27,20 @@ class Pair { | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   Key _key; | ||||
|   String _key; | ||||
|   VariantRef _value; | ||||
| }; | ||||
|  | ||||
| class PairConst { | ||||
|  public: | ||||
|   PairConst(const VariantSlot* slot) : _key(slot) { | ||||
|   PairConst(const VariantSlot* slot) { | ||||
|     if (slot) { | ||||
|       _key = slot->key(); | ||||
|       _value = VariantConstRef(slot->data()); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   Key key() const { | ||||
|   String key() const { | ||||
|     return _key; | ||||
|   } | ||||
|  | ||||
| @@ -47,7 +49,7 @@ class PairConst { | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   Key _key; | ||||
|   String _key; | ||||
|   VariantConstRef _value; | ||||
| }; | ||||
| }  // namespace ARDUINOJSON_NAMESPACE | ||||
|   | ||||
| @@ -21,28 +21,28 @@ class VariantComparisons { | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T *>::value, bool>::type operator==( | ||||
|       T *lhs, TVariant rhs) { | ||||
|     return makeString(lhs).equals(rhs.template as<const char *>()); | ||||
|     return wrapString(lhs).equals(rhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // std::string == TVariant | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T>::value, bool>::type operator==( | ||||
|       const T &lhs, TVariant rhs) { | ||||
|     return makeString(lhs).equals(rhs.template as<const char *>()); | ||||
|     return wrapString(lhs).equals(rhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // TVariant == const char* | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T *>::value, bool>::type operator==( | ||||
|       TVariant lhs, T *rhs) { | ||||
|     return makeString(rhs).equals(lhs.template as<const char *>()); | ||||
|     return wrapString(rhs).equals(lhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // TVariant == std::string | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T>::value, bool>::type operator==( | ||||
|       TVariant lhs, const T &rhs) { | ||||
|     return makeString(rhs).equals(lhs.template as<const char *>()); | ||||
|     return wrapString(rhs).equals(lhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // bool/int/float == TVariant | ||||
| @@ -63,28 +63,28 @@ class VariantComparisons { | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T *>::value, bool>::type operator!=( | ||||
|       T *lhs, TVariant rhs) { | ||||
|     return !makeString(lhs).equals(rhs.template as<const char *>()); | ||||
|     return !wrapString(lhs).equals(rhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // std::string != TVariant | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T>::value, bool>::type operator!=( | ||||
|       const T &lhs, TVariant rhs) { | ||||
|     return !makeString(lhs).equals(rhs.template as<const char *>()); | ||||
|     return !wrapString(lhs).equals(rhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // TVariant != const char* | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T *>::value, bool>::type operator!=( | ||||
|       TVariant lhs, T *rhs) { | ||||
|     return !makeString(rhs).equals(lhs.template as<const char *>()); | ||||
|     return !wrapString(rhs).equals(lhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // TVariant != std::string | ||||
|   template <typename T> | ||||
|   friend typename enable_if<IsString<T>::value, bool>::type operator!=( | ||||
|       TVariant lhs, const T &rhs) { | ||||
|     return !makeString(rhs).equals(lhs.template as<const char *>()); | ||||
|     return !wrapString(rhs).equals(lhs.template as<const char *>()); | ||||
|   } | ||||
|  | ||||
|   // bool/int/float != TVariant | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
|  | ||||
| #include "../Polyfills/attributes.hpp" | ||||
| #include "../Polyfills/type_traits.hpp" | ||||
| #include "../Strings/StringTypes.hpp" | ||||
| #include "../Strings/StringWrappers.hpp" | ||||
| #include "../Variant/VariantAs.hpp" | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| @@ -37,7 +37,7 @@ class VariantSubscripts { | ||||
|   operator[](const TString &key) const; | ||||
|   // | ||||
|   // ObjectSubscript operator[](TKey) const; | ||||
|   // TKey = const char*, const char[N], const FlashStringHelper* | ||||
|   // TKey = const char*, const char[N], const __FlashStringHelper* | ||||
|   template <typename TString> | ||||
|   FORCE_INLINE typename enable_if<IsString<TString *>::value, | ||||
|                                   ObjectSubscript<TString *> >::type | ||||
|   | ||||
| @@ -8,9 +8,9 @@ | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class ArduinoString { | ||||
| class ArduinoStringWrapper { | ||||
|  public: | ||||
|   ArduinoString(const ::String& str) : _str(&str) {} | ||||
|   ArduinoStringWrapper(const ::String& str) : _str(&str) {} | ||||
| 
 | ||||
|   char* save(MemoryPool* pool) const { | ||||
|     if (isNull()) return NULL; | ||||
| @@ -50,8 +50,8 @@ struct IsString< ::String> : true_type {}; | ||||
| template <> | ||||
| struct IsString< ::StringSumHelper> : true_type {}; | ||||
| 
 | ||||
| inline ArduinoString makeString(const ::String& str) { | ||||
|   return ArduinoString(str); | ||||
| inline ArduinoStringWrapper wrapString(const ::String& str) { | ||||
|   return ArduinoStringWrapper(str); | ||||
| } | ||||
| 
 | ||||
| }  // namespace ARDUINOJSON_NAMESPACE
 | ||||
| @@ -9,9 +9,9 @@ | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class ZeroTerminatedRamStringConst { | ||||
| class ConstRamStringWrapper { | ||||
|  public: | ||||
|   ZeroTerminatedRamStringConst(const char* str = 0) : _str(str) {} | ||||
|   ConstRamStringWrapper(const char* str = 0) : _str(str) {} | ||||
| 
 | ||||
|   bool equals(const char* expected) const { | ||||
|     const char* actual = _str; | ||||
| @@ -40,8 +40,8 @@ class ZeroTerminatedRamStringConst { | ||||
|   const char* _str; | ||||
| }; | ||||
| 
 | ||||
| inline ZeroTerminatedRamStringConst makeString(const char* str) { | ||||
|   return ZeroTerminatedRamStringConst(str); | ||||
| inline ConstRamStringWrapper wrapString(const char* str) { | ||||
|   return ConstRamStringWrapper(str); | ||||
| } | ||||
| 
 | ||||
| }  // namespace ARDUINOJSON_NAMESPACE
 | ||||
| @@ -6,9 +6,9 @@ | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class ZeroTerminatedFlashString { | ||||
| class FlashStringWrapper { | ||||
|  public: | ||||
|   ZeroTerminatedFlashString(const __FlashStringHelper* str) : _str(str) {} | ||||
|   FlashStringWrapper(const __FlashStringHelper* str) : _str(str) {} | ||||
| 
 | ||||
|   bool equals(const char* expected) const { | ||||
|     const char* actual = reinterpret_cast<const char*>(_str); | ||||
| @@ -36,8 +36,8 @@ class ZeroTerminatedFlashString { | ||||
|   const __FlashStringHelper* _str; | ||||
| }; | ||||
| 
 | ||||
| inline ZeroTerminatedFlashString makeString(const __FlashStringHelper* str) { | ||||
|   return ZeroTerminatedFlashString(str); | ||||
| inline FlashStringWrapper wrapString(const __FlashStringHelper* str) { | ||||
|   return FlashStringWrapper(str); | ||||
| } | ||||
| 
 | ||||
| template <> | ||||
| @@ -4,14 +4,13 @@ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "ZeroTerminatedRamStringConst.hpp" | ||||
| #include "ConstRamStringWrapper.hpp" | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class ZeroTerminatedRamString : public ZeroTerminatedRamStringConst { | ||||
| class RamStringWrapper : public ConstRamStringWrapper { | ||||
|  public: | ||||
|   ZeroTerminatedRamString(const char* str) | ||||
|       : ZeroTerminatedRamStringConst(str) {} | ||||
|   RamStringWrapper(const char* str) : ConstRamStringWrapper(str) {} | ||||
| 
 | ||||
|   char* save(MemoryPool* pool) const { | ||||
|     if (!_str) return NULL; | ||||
| @@ -23,12 +22,12 @@ class ZeroTerminatedRamString : public ZeroTerminatedRamStringConst { | ||||
| }; | ||||
| 
 | ||||
| template <typename TChar> | ||||
| inline ZeroTerminatedRamString makeString(const TChar* str) { | ||||
|   return ZeroTerminatedRamString(reinterpret_cast<const char*>(str)); | ||||
| inline RamStringWrapper wrapString(const TChar* str) { | ||||
|   return RamStringWrapper(reinterpret_cast<const char*>(str)); | ||||
| } | ||||
| 
 | ||||
| inline ZeroTerminatedRamString makeString(char* str) { | ||||
|   return ZeroTerminatedRamString(str); | ||||
| inline RamStringWrapper wrapString(char* str) { | ||||
|   return RamStringWrapper(str); | ||||
| } | ||||
| 
 | ||||
| template <typename TChar> | ||||
| @@ -6,9 +6,9 @@ | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class FixedSizeFlashString { | ||||
| class SizedFlashStringWrapper { | ||||
|  public: | ||||
|   FixedSizeFlashString(const __FlashStringHelper* str, size_t sz) | ||||
|   SizedFlashStringWrapper(const __FlashStringHelper* str, size_t sz) | ||||
|       : _str(str), _size(sz) {} | ||||
| 
 | ||||
|   bool equals(const char* expected) const { | ||||
| @@ -37,8 +37,8 @@ class FixedSizeFlashString { | ||||
|   size_t _size; | ||||
| }; | ||||
| 
 | ||||
| inline FixedSizeFlashString makeString(const __FlashStringHelper* str, | ||||
| inline SizedFlashStringWrapper wrapString(const __FlashStringHelper* str, | ||||
|                                           size_t sz) { | ||||
|   return FixedSizeFlashString(str, sz); | ||||
|   return SizedFlashStringWrapper(str, sz); | ||||
| } | ||||
| }  // namespace ARDUINOJSON_NAMESPACE
 | ||||
| @@ -8,9 +8,9 @@ | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class FixedSizeRamString { | ||||
| class SizedRamStringWrapper { | ||||
|  public: | ||||
|   FixedSizeRamString(const char* str, size_t n) : _str(str), _size(n) {} | ||||
|   SizedRamStringWrapper(const char* str, size_t n) : _str(str), _size(n) {} | ||||
| 
 | ||||
|   bool equals(const char* expected) const { | ||||
|     const char* actual = reinterpret_cast<const char*>(_str); | ||||
| @@ -39,8 +39,8 @@ class FixedSizeRamString { | ||||
| }; | ||||
| 
 | ||||
| template <typename TChar> | ||||
| inline FixedSizeRamString makeString(const TChar* str, size_t size) { | ||||
|   return FixedSizeRamString(reinterpret_cast<const char*>(str), size); | ||||
| inline SizedRamStringWrapper wrapString(const TChar* str, size_t size) { | ||||
|   return SizedRamStringWrapper(reinterpret_cast<const char*>(str), size); | ||||
| } | ||||
| 
 | ||||
| }  // namespace ARDUINOJSON_NAMESPACE
 | ||||
| @@ -8,9 +8,9 @@ | ||||
| 
 | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| 
 | ||||
| class StlString { | ||||
| class StlStringWrapper { | ||||
|  public: | ||||
|   StlString(const std::string& str) : _str(&str) {} | ||||
|   StlStringWrapper(const std::string& str) : _str(&str) {} | ||||
| 
 | ||||
|   char* save(MemoryPool* pool) const { | ||||
|     size_t n = _str->length() + 1; | ||||
| @@ -43,8 +43,8 @@ class StlString { | ||||
| template <> | ||||
| struct IsString<std::string> : true_type {}; | ||||
| 
 | ||||
| inline StlString makeString(const std::string& str) { | ||||
|   return StlString(str); | ||||
| inline StlStringWrapper wrapString(const std::string& str) { | ||||
|   return StlStringWrapper(str); | ||||
| } | ||||
| 
 | ||||
| }  // namespace ARDUINOJSON_NAMESPACE
 | ||||
							
								
								
									
										32
									
								
								src/ArduinoJson/Strings/String.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/ArduinoJson/Strings/String.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2018 | ||||
| // MIT License | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
|  | ||||
| class String { | ||||
|  public: | ||||
|   String() : _data(0) {} | ||||
|   String(const char* slot) : _data(slot) {} | ||||
|  | ||||
|   const char* c_str() const { | ||||
|     return _data; | ||||
|   } | ||||
|  | ||||
|   bool isNull() const { | ||||
|     return !_data; | ||||
|   } | ||||
|  | ||||
|   friend bool operator==(String lhs, String rhs) { | ||||
|     if (lhs._data == rhs._data) return true; | ||||
|     if (!lhs._data) return false; | ||||
|     if (!rhs._data) return false; | ||||
|     return strcmp(lhs._data, rhs._data) == 0; | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   const char* _data; | ||||
| }; | ||||
| }  // namespace ARDUINOJSON_NAMESPACE | ||||
| @@ -18,19 +18,19 @@ template <typename T> | ||||
| struct IsString<T&> : IsString<T> {}; | ||||
| }  // namespace ARDUINOJSON_NAMESPACE
 | ||||
| 
 | ||||
| #include "FixedSizeRamString.hpp" | ||||
| #include "ZeroTerminatedRamString.hpp" | ||||
| #include "ZeroTerminatedRamStringConst.hpp" | ||||
| #include "ConstRamStringWrapper.hpp" | ||||
| #include "RamStringWrapper.hpp" | ||||
| #include "SizedRamStringWrapper.hpp" | ||||
| 
 | ||||
| #if ARDUINOJSON_ENABLE_STD_STRING | ||||
| #include "StlString.hpp" | ||||
| #include "StlStringWrapper.hpp" | ||||
| #endif | ||||
| 
 | ||||
| #if ARDUINOJSON_ENABLE_ARDUINO_STRING | ||||
| #include "ArduinoString.hpp" | ||||
| #include "ArduinoStringWrapper.hpp" | ||||
| #endif | ||||
| 
 | ||||
| #if ARDUINOJSON_ENABLE_PROGMEM | ||||
| #include "FixedSizeFlashString.hpp" | ||||
| #include "ZeroTerminatedFlashString.hpp" | ||||
| #include "FlashStringWrapper.hpp" | ||||
| #include "SizedFlashStringWrapper.hpp" | ||||
| #endif | ||||
| @@ -6,7 +6,7 @@ | ||||
|  | ||||
| #include "../Memory/MemoryPool.hpp" | ||||
| #include "../Polyfills/assert.hpp" | ||||
| #include "../Strings/StringTypes.hpp" | ||||
| #include "../Strings/StringWrappers.hpp" | ||||
| #include "VariantData.hpp" | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
| @@ -20,7 +20,7 @@ inline bool slotSetKey(VariantSlot* var, TKey key, MemoryPool* pool) { | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| inline bool slotSetKey(VariantSlot* var, ZeroTerminatedRamStringConst key, | ||||
| inline bool slotSetKey(VariantSlot* var, ConstRamStringWrapper key, | ||||
|                        MemoryPool*) { | ||||
|   if (!var) return false; | ||||
|   var->setLinkedKey(key.c_str()); | ||||
|   | ||||
| @@ -95,8 +95,7 @@ class VariantData { | ||||
|       case VALUE_IS_OBJECT: | ||||
|         return toObject().copyFrom(src._content.asCollection, pool); | ||||
|       case VALUE_IS_OWNED_STRING: | ||||
|         return setOwnedString(ZeroTerminatedRamString(src._content.asString), | ||||
|                               pool); | ||||
|         return setOwnedString(RamStringWrapper(src._content.asString), pool); | ||||
|       case VALUE_IS_OWNED_RAW: | ||||
|         return setOwnedRaw( | ||||
|             serialized(src._content.asRaw.data, src._content.asRaw.size), pool); | ||||
| @@ -190,7 +189,7 @@ class VariantData { | ||||
|  | ||||
|   template <typename T> | ||||
|   bool setOwnedRaw(SerializedValue<T> value, MemoryPool *pool) { | ||||
|     char *dup = makeString(value.data(), value.size()).save(pool); | ||||
|     char *dup = wrapString(value.data(), value.size()).save(pool); | ||||
|     if (dup) { | ||||
|       setType(VALUE_IS_OWNED_RAW); | ||||
|       _content.asRaw.data = dup; | ||||
|   | ||||
| @@ -183,7 +183,7 @@ class VariantRef : public VariantRefBase<VariantData>, | ||||
|   FORCE_INLINE bool set( | ||||
|       const T &value, | ||||
|       typename enable_if<IsString<T>::value>::type * = 0) const { | ||||
|     return variantSetOwnedString(_data, makeString(value), _pool); | ||||
|     return variantSetOwnedString(_data, wrapString(value), _pool); | ||||
|   } | ||||
|  | ||||
|   // set(char*) | ||||
| @@ -191,7 +191,7 @@ class VariantRef : public VariantRefBase<VariantData>, | ||||
|   template <typename T> | ||||
|   FORCE_INLINE bool set( | ||||
|       T *value, typename enable_if<IsString<T *>::value>::type * = 0) const { | ||||
|     return variantSetOwnedString(_data, makeString(value), _pool); | ||||
|     return variantSetOwnedString(_data, wrapString(value), _pool); | ||||
|   } | ||||
|  | ||||
|   // set(const char*); | ||||
| @@ -304,17 +304,17 @@ class VariantConstRef : public VariantRefBase<const VariantData>, | ||||
|   FORCE_INLINE | ||||
|       typename enable_if<IsString<TString>::value, VariantConstRef>::type | ||||
|       operator[](const TString &key) const { | ||||
|     return VariantConstRef(objectGet(variantAsObject(_data), makeString(key))); | ||||
|     return VariantConstRef(objectGet(variantAsObject(_data), wrapString(key))); | ||||
|   } | ||||
|   // | ||||
|   // VariantConstRef operator[](TKey); | ||||
|   // TKey = const char*, const char[N], const FlashStringHelper* | ||||
|   // TKey = const char*, const char[N], const __FlashStringHelper* | ||||
|   template <typename TString> | ||||
|   FORCE_INLINE | ||||
|       typename enable_if<IsString<TString *>::value, VariantConstRef>::type | ||||
|       operator[](TString *key) const { | ||||
|     const CollectionData *obj = variantAsObject(_data); | ||||
|     return VariantConstRef(obj ? obj->get(makeString(key)) : 0); | ||||
|     return VariantConstRef(obj ? obj->get(wrapString(key)) : 0); | ||||
|   } | ||||
| }; | ||||
| }  // namespace ARDUINOJSON_NAMESPACE | ||||
|   | ||||
		Reference in New Issue
	
	Block a user