diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2021-05-12 09:12:09 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2021-05-12 09:12:09 +0200 |
commit | 39895a677e5d370824e702cfe90ebc67737b8482 (patch) | |
tree | ff5b4cc9e373d33a795d50d9333e05549bd9f2b8 /include/lib/ArduinoJson/Variant/VariantFunctions.hpp | |
parent | 42e7fdf01c3a5701bb51e93ad6c650c3dbbc5450 (diff) |
import ArduinoJson 6.18.0
Diffstat (limited to 'include/lib/ArduinoJson/Variant/VariantFunctions.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Variant/VariantFunctions.hpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Variant/VariantFunctions.hpp b/include/lib/ArduinoJson/Variant/VariantFunctions.hpp new file mode 100644 index 0000000..3fc9cbb --- /dev/null +++ b/include/lib/ArduinoJson/Variant/VariantFunctions.hpp @@ -0,0 +1,104 @@ +// ArduinoJson - https://arduinojson.org +// Copyright Benoit Blanchon 2014-2021 +// MIT License + +#pragma once + +#include <ArduinoJson/Polyfills/attributes.hpp> +#include <ArduinoJson/Variant/VariantData.hpp> + +namespace ARDUINOJSON_NAMESPACE { + +template <typename TVisitor> +inline typename TVisitor::result_type variantAccept(const VariantData *var, + TVisitor &visitor) { + if (var != 0) + return var->accept(visitor); + else + return visitor.visitNull(); +} + +inline const CollectionData *variantAsArray(const VariantData *var) { + return var != 0 ? var->asArray() : 0; +} + +inline const CollectionData *variantAsObject(const VariantData *var) { + return var != 0 ? var->asObject() : 0; +} + +inline CollectionData *variantAsObject(VariantData *var) { + return var != 0 ? var->asObject() : 0; +} + +inline bool variantCopyFrom(VariantData *dst, const VariantData *src, + MemoryPool *pool) { + if (!dst) + return false; + if (!src) { + dst->setNull(); + return true; + } + return dst->copyFrom(*src, pool); +} + +inline int variantCompare(const VariantData *a, const VariantData *b); + +inline void variantSetNull(VariantData *var) { + if (!var) + return; + var->setNull(); +} + +template <typename TAdaptedString> +inline bool variantSetString(VariantData *var, TAdaptedString value, + MemoryPool *pool) { + if (!var) + return false; + return var->setString(value, pool); +} + +inline size_t variantSize(const VariantData *var) { + return var != 0 ? var->size() : 0; +} + +inline CollectionData *variantToArray(VariantData *var) { + if (!var) + return 0; + return &var->toArray(); +} + +inline CollectionData *variantToObject(VariantData *var) { + if (!var) + return 0; + return &var->toObject(); +} + +inline NO_INLINE VariantData *variantAddElement(VariantData *var, + MemoryPool *pool) { + return var != 0 ? var->addElement(pool) : 0; +} + +inline NO_INLINE VariantData *variantGetOrAddElement(VariantData *var, + size_t index, + MemoryPool *pool) { + return var != 0 ? var->getOrAddElement(index, pool) : 0; +} + +template <typename TChar> +NO_INLINE VariantData *variantGetOrAddMember(VariantData *var, TChar *key, + MemoryPool *pool) { + return var != 0 ? var->getOrAddMember(adaptString(key), pool) : 0; +} + +template <typename TString> +NO_INLINE VariantData *variantGetOrAddMember(VariantData *var, + const TString &key, + MemoryPool *pool) { + return var != 0 ? var->getOrAddMember(adaptString(key), pool) : 0; +} + +inline bool variantIsNull(const VariantData *var) { + return var == 0 || var->isNull(); +} + +} // namespace ARDUINOJSON_NAMESPACE |