diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-07 12:57:04 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-07 12:57:04 +0200 |
commit | 0558244645611f314f47e0fa427f7323ce253eaf (patch) | |
tree | 824bcd55ec8577703345106d0a08e167407500a7 /include/lib/ArduinoJson/JsonObject.hpp | |
parent | 0248c6352f2117e50fac71dd632a79d8fa4f8737 (diff) |
remove external libraries from main branch
Diffstat (limited to 'include/lib/ArduinoJson/JsonObject.hpp')
-rw-r--r-- | include/lib/ArduinoJson/JsonObject.hpp | 328 |
1 files changed, 0 insertions, 328 deletions
diff --git a/include/lib/ArduinoJson/JsonObject.hpp b/include/lib/ArduinoJson/JsonObject.hpp deleted file mode 100644 index caf698a..0000000 --- a/include/lib/ArduinoJson/JsonObject.hpp +++ /dev/null @@ -1,328 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonBufferAllocated.hpp" -#include "Data/List.hpp" -#include "Data/ReferenceType.hpp" -#include "Data/ValueSaver.hpp" -#include "JsonPair.hpp" -#include "Serialization/JsonPrintable.hpp" -#include "StringTraits/StringTraits.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsArray.hpp" -#include "TypeTraits/IsFloatingPoint.hpp" -#include "TypeTraits/IsSame.hpp" - -// Returns the size (in bytes) of an object with n elements. -// Can be very handy to determine the size of a StaticJsonBuffer. -#define JSON_OBJECT_SIZE(NUMBER_OF_ELEMENTS) \ - (sizeof(JsonObject) + (NUMBER_OF_ELEMENTS) * sizeof(JsonObject::node_type)) - -namespace ArduinoJson { - -// Forward declarations -class JsonArray; -class JsonBuffer; -namespace Internals { -template <typename> -class JsonObjectSubscript; -} - -// A dictionary of JsonVariant indexed by string (char*) -// -// The constructor is private, instances must be created via -// JsonBuffer::createObject() or JsonBuffer::parseObject(). -// A JsonObject can be serialized to a JSON string via JsonObject::printTo(). -// It can also be deserialized from a JSON string via JsonBuffer::parseObject(). -class JsonObject : public Internals::JsonPrintable<JsonObject>, - public Internals::ReferenceType, - public Internals::NonCopyable, - public Internals::List<JsonPair>, - public Internals::JsonBufferAllocated { - public: - // Create an empty JsonArray attached to the specified JsonBuffer. - // You should not use this constructor directly. - // Instead, use JsonBuffer::createObject() or JsonBuffer.parseObject(). - explicit JsonObject(JsonBuffer* buffer) throw() - : Internals::List<JsonPair>(buffer) {} - - // Gets or sets the value associated with the specified key. - // - // JsonObjectSubscript operator[](TKey) - // TKey = const std::string&, const String& - template <typename TString> - Internals::JsonObjectSubscript<const TString&> operator[]( - const TString& key) { - return Internals::JsonObjectSubscript<const TString&>(*this, key); - } - // - // JsonObjectSubscript operator[](TKey) - // TKey = char*, const char*, char[], const char[N], const FlashStringHelper* - template <typename TString> - Internals::JsonObjectSubscript<TString*> operator[](TString* key) { - return Internals::JsonObjectSubscript<TString*>(*this, key); - } - - // Gets the value associated with the specified key. - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const std::string&, const String& - template <typename TString> - const Internals::JsonObjectSubscript<const TString&> operator[]( - const TString& key) const { - return Internals::JsonObjectSubscript<const TString&>( - *const_cast<JsonObject*>(this), key); - } - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const char*, const char[N], const FlashStringHelper* - template <typename TString> - const Internals::JsonObjectSubscript<TString*> operator[]( - TString* key) const { - return Internals::JsonObjectSubscript<TString*>( - *const_cast<JsonObject*>(this), key); - } - - // Sets the specified key with the specified value. - // - // bool set(TKey, TValue); - // TKey = const std::string&, const String& - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template <typename TValue, typename TString> - bool set(const TString& key, const TValue& value) { - return set_impl<const TString&, const TValue&>(key, value); - } - // - // bool set(TKey, TValue); - // TKey = const std::string&, const String& - // TValue = char*, const char*, const FlashStringHelper* - template <typename TValue, typename TString> - bool set(const TString& key, TValue* value) { - return set_impl<const TString&, TValue*>(key, value); - } - // - // bool set(TKey, const TValue&); - // TKey = char*, const char*, const FlashStringHelper* - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template <typename TValue, typename TString> - bool set(TString* key, const TValue& value) { - return set_impl<TString*, const TValue&>(key, value); - } - // - // bool set(TKey, TValue); - // TKey = char*, const char*, const FlashStringHelper* - // TValue = char*, const char*, const FlashStringHelper* - template <typename TValue, typename TString> - bool set(TString* key, TValue* value) { - return set_impl<TString*, TValue*>(key, value); - } - // - // bool set(TKey, TValue, uint8_t decimals); - // TKey = const std::string&, const String& - // TValue = float, double - template <typename TValue, typename TString> - DEPRECATED("Second argument is not supported anymore") - typename Internals::EnableIf<Internals::IsFloatingPoint<TValue>::value, - bool>::type - set(const TString& key, TValue value, uint8_t) { - return set_impl<const TString&, const JsonVariant&>(key, - JsonVariant(value)); - } - // - // bool set(TKey, TValue, uint8_t decimals); - // TKey = char*, const char*, const FlashStringHelper* - // TValue = float, double - template <typename TValue, typename TString> - DEPRECATED("Second argument is not supported anymore") - typename Internals::EnableIf<Internals::IsFloatingPoint<TValue>::value, - bool>::type - set(TString* key, TValue value, uint8_t) { - return set_impl<TString*, const JsonVariant&>(key, JsonVariant(value)); - } - - // Gets the value associated with the specified key. - // - // TValue get<TValue>(TKey) const; - // TKey = const std::string&, const String& - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template <typename TValue, typename TString> - typename Internals::JsonVariantAs<TValue>::type get( - const TString& key) const { - return get_impl<const TString&, TValue>(key); - } - // - // TValue get<TValue>(TKey) const; - // TKey = char*, const char*, const FlashStringHelper* - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template <typename TValue, typename TString> - typename Internals::JsonVariantAs<TValue>::type get(TString* key) const { - return get_impl<TString*, TValue>(key); - } - - // Checks the type of the value associated with the specified key. - // - // - // bool is<TValue>(TKey) const; - // TKey = const std::string&, const String& - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template <typename TValue, typename TString> - bool is(const TString& key) const { - return is_impl<const TString&, TValue>(key); - } - // - // bool is<TValue>(TKey) const; - // TKey = char*, const char*, const FlashStringHelper* - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template <typename TValue, typename TString> - bool is(TString* key) const { - return is_impl<TString*, TValue>(key); - } - - // Creates and adds a JsonArray. - // - // JsonArray& createNestedArray(TKey); - // TKey = const std::string&, const String& - template <typename TString> - JsonArray& createNestedArray(const TString& key) { - return createNestedArray_impl<const TString&>(key); - } - // JsonArray& createNestedArray(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template <typename TString> - JsonArray& createNestedArray(TString* key) { - return createNestedArray_impl<TString*>(key); - } - - // Creates and adds a JsonObject. - // - // JsonObject& createNestedObject(TKey); - // TKey = const std::string&, const String& - template <typename TString> - JsonObject& createNestedObject(const TString& key) { - return createNestedObject_impl<const TString&>(key); - } - // - // JsonObject& createNestedObject(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template <typename TString> - JsonObject& createNestedObject(TString* key) { - return createNestedObject_impl<TString*>(key); - } - - // Tells weither the specified key is present and associated with a value. - // - // bool containsKey(TKey); - // TKey = const std::string&, const String& - template <typename TString> - bool containsKey(const TString& key) const { - return findKey<const TString&>(key) != end(); - } - // - // bool containsKey(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template <typename TString> - bool containsKey(TString* key) const { - return findKey<TString*>(key) != end(); - } - - // Removes the specified key and the associated value. - // - // void remove(TKey); - // TKey = const std::string&, const String& - template <typename TString> - void remove(const TString& key) { - remove(findKey<const TString&>(key)); - } - // - // void remove(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template <typename TString> - void remove(TString* key) { - remove(findKey<TString*>(key)); - } - // - // void remove(iterator) - using Internals::List<JsonPair>::remove; - - // Returns a reference an invalid JsonObject. - // This object is meant to replace a NULL pointer. - // This is used when memory allocation or JSON parsing fail. - static JsonObject& invalid() { - static JsonObject instance(NULL); - return instance; - } - - private: - // Returns the list node that matches the specified key. - template <typename TStringRef> - iterator findKey(TStringRef key) { - iterator it; - for (it = begin(); it != end(); ++it) { - if (Internals::StringTraits<TStringRef>::equals(key, it->key)) break; - } - return it; - } - template <typename TStringRef> - const_iterator findKey(TStringRef key) const { - return const_cast<JsonObject*>(this)->findKey<TStringRef>(key); - } - - template <typename TStringRef, typename TValue> - typename Internals::JsonVariantAs<TValue>::type get_impl( - TStringRef key) const { - const_iterator it = findKey<TStringRef>(key); - return it != end() ? it->value.as<TValue>() - : Internals::JsonVariantDefault<TValue>::get(); - } - - template <typename TStringRef, typename TValueRef> - bool set_impl(TStringRef key, TValueRef value) { - // ignore null key - if (Internals::StringTraits<TStringRef>::is_null(key)) return false; - - // search a matching key - iterator it = findKey<TStringRef>(key); - if (it == end()) { - // add the key - it = Internals::List<JsonPair>::add(); - if (it == end()) return false; - bool key_ok = - Internals::ValueSaver<TStringRef>::save(_buffer, it->key, key); - if (!key_ok) return false; - } - - // save the value - return Internals::ValueSaver<TValueRef>::save(_buffer, it->value, value); - } - - template <typename TStringRef, typename TValue> - bool is_impl(TStringRef key) const { - const_iterator it = findKey<TStringRef>(key); - return it != end() ? it->value.is<TValue>() : false; - } - - template <typename TStringRef> - JsonArray& createNestedArray_impl(TStringRef key); - - template <typename TStringRef> - JsonObject& createNestedObject_impl(TStringRef key); -}; - -namespace Internals { -template <> -struct JsonVariantDefault<JsonObject> { - static JsonObject& get() { - return JsonObject::invalid(); - } -}; -} // namespace Internals -} // namespace ArduinoJson |