// ArduinoJson - https://arduinojson.org // Copyright Benoit Blanchon 2014-2021 // MIT License #pragma once #include namespace ARDUINOJSON_NAMESPACE { class Filter { public: explicit Filter(VariantConstRef v) : _variant(v) {} bool allow() const { return _variant; } bool allowArray() const { return _variant == true || _variant.is(); } bool allowObject() const { return _variant == true || _variant.is(); } bool allowValue() const { return _variant == true; } template Filter operator[](const TKey& key) const { if (_variant == true) // "true" means "allow recursively" return *this; else return Filter(_variant[key] | _variant["*"]); } private: VariantConstRef _variant; }; struct AllowAllFilter { bool allow() const { return true; } bool allowArray() const { return true; } bool allowObject() const { return true; } bool allowValue() const { return true; } template AllowAllFilter operator[](const TKey&) const { return AllowAllFilter(); } }; } // namespace ARDUINOJSON_NAMESPACE