forked from bblanchon/ArduinoJson
Added a default implementation in the Visitor class
This commit is contained in:
@ -6,6 +6,7 @@
|
||||
|
||||
#include <ArduinoJson/Array/ArrayRef.hpp>
|
||||
#include <ArduinoJson/Document/JsonDocument.hpp>
|
||||
#include <ArduinoJson/Variant/Visitor.hpp>
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
@ -81,38 +82,6 @@ class ArrayCopier1D : public Visitor<size_t> {
|
||||
return size;
|
||||
}
|
||||
|
||||
size_t visitObject(const CollectionData&) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitFloat(Float) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitString(const char*) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitRawJson(const char*, size_t) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitNegativeInteger(UInt) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitPositiveInteger(UInt) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitBoolean(bool) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t visitNull() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private:
|
||||
T* _destination;
|
||||
size_t _capacity;
|
||||
@ -132,14 +101,6 @@ class ArrayCopier2D : public Visitor<void> {
|
||||
slot = slot->next();
|
||||
}
|
||||
}
|
||||
void visitObject(const CollectionData&) {}
|
||||
void visitFloat(Float) {}
|
||||
void visitString(const char*) {}
|
||||
void visitRawJson(const char*, size_t) {}
|
||||
void visitNegativeInteger(UInt) {}
|
||||
void visitPositiveInteger(UInt) {}
|
||||
void visitBoolean(bool) {}
|
||||
void visitNull() {}
|
||||
|
||||
private:
|
||||
T (*_destination)[N1][N2];
|
||||
|
@ -8,11 +8,6 @@
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
template <typename TResult>
|
||||
struct Visitor {
|
||||
typedef TResult result_type;
|
||||
};
|
||||
|
||||
struct Visitable {
|
||||
// template<Visitor>
|
||||
// void accept(Visitor&) const;
|
||||
@ -22,5 +17,5 @@ template <typename T>
|
||||
struct IsVisitable : is_base_of<Visitable, T> {};
|
||||
|
||||
template <typename T>
|
||||
struct IsVisitable<T&> : IsVisitable<T> {};
|
||||
struct IsVisitable<T &> : IsVisitable<T> {};
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
||||
|
@ -9,40 +9,13 @@
|
||||
#include <ArduinoJson/Numbers/arithmeticCompare.hpp>
|
||||
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
||||
#include <ArduinoJson/Strings/IsString.hpp>
|
||||
#include <ArduinoJson/Variant/Visitor.hpp>
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
class CollectionData;
|
||||
|
||||
struct ComparerBase : Visitor<CompareResult> {
|
||||
CompareResult visitArray(const CollectionData &) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitBoolean(bool) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitFloat(Float) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitNegativeInteger(UInt) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitNull() {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitObject(const CollectionData &) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitPositiveInteger(UInt) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitRawJson(const char *, size_t) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
CompareResult visitString(const char *) {
|
||||
return COMPARE_RESULT_DIFFER;
|
||||
}
|
||||
};
|
||||
struct ComparerBase : Visitor<CompareResult> {};
|
||||
|
||||
template <typename T, typename Enable = void>
|
||||
struct Comparer;
|
||||
|
54
src/ArduinoJson/Variant/Visitor.hpp
Normal file
54
src/ArduinoJson/Variant/Visitor.hpp
Normal file
@ -0,0 +1,54 @@
|
||||
// ArduinoJson - arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2021
|
||||
// MIT License
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <ArduinoJson/Collection/CollectionData.hpp>
|
||||
#include <ArduinoJson/Numbers/Float.hpp>
|
||||
#include <ArduinoJson/Numbers/Integer.hpp>
|
||||
|
||||
namespace ARDUINOJSON_NAMESPACE {
|
||||
|
||||
template <typename TResult>
|
||||
struct Visitor {
|
||||
typedef TResult result_type;
|
||||
|
||||
TResult visitArray(const CollectionData &) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitBoolean(bool) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitFloat(Float) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitNegativeInteger(UInt) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitNull() {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitObject(const CollectionData &) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitPositiveInteger(UInt) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitRawJson(const char *, size_t) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitString(const char *) {
|
||||
return TResult();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace ARDUINOJSON_NAMESPACE
|
Reference in New Issue
Block a user