Minh Nguyen / ArduinoJson
Committer:
khaiminhvn
Date:
Fri Mar 19 19:30:50 2021 +0000
Revision:
0:18ba3960b5dd
removed extras

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaiminhvn 0:18ba3960b5dd 1 // ArduinoJson - arduinojson.org
khaiminhvn 0:18ba3960b5dd 2 // Copyright Benoit Blanchon 2014-2021
khaiminhvn 0:18ba3960b5dd 3 // MIT License
khaiminhvn 0:18ba3960b5dd 4
khaiminhvn 0:18ba3960b5dd 5 #pragma once
khaiminhvn 0:18ba3960b5dd 6
khaiminhvn 0:18ba3960b5dd 7 #include <ArduinoJson/Polyfills/attributes.hpp>
khaiminhvn 0:18ba3960b5dd 8 #include <ArduinoJson/Polyfills/type_traits.hpp>
khaiminhvn 0:18ba3960b5dd 9 #include <ArduinoJson/Strings/StringAdapters.hpp>
khaiminhvn 0:18ba3960b5dd 10
khaiminhvn 0:18ba3960b5dd 11 namespace ARDUINOJSON_NAMESPACE {
khaiminhvn 0:18ba3960b5dd 12 template <typename TParent, typename TStringRef>
khaiminhvn 0:18ba3960b5dd 13 class MemberProxy;
khaiminhvn 0:18ba3960b5dd 14
khaiminhvn 0:18ba3960b5dd 15 template <typename TObject>
khaiminhvn 0:18ba3960b5dd 16 class ObjectShortcuts {
khaiminhvn 0:18ba3960b5dd 17 public:
khaiminhvn 0:18ba3960b5dd 18 // containsKey(const std::string&) const
khaiminhvn 0:18ba3960b5dd 19 // containsKey(const String&) const
khaiminhvn 0:18ba3960b5dd 20 template <typename TString>
khaiminhvn 0:18ba3960b5dd 21 FORCE_INLINE typename enable_if<IsString<TString>::value, bool>::type
khaiminhvn 0:18ba3960b5dd 22 containsKey(const TString &key) const;
khaiminhvn 0:18ba3960b5dd 23
khaiminhvn 0:18ba3960b5dd 24 // containsKey(char*) const
khaiminhvn 0:18ba3960b5dd 25 // containsKey(const char*) const
khaiminhvn 0:18ba3960b5dd 26 // containsKey(const __FlashStringHelper*) const
khaiminhvn 0:18ba3960b5dd 27 template <typename TChar>
khaiminhvn 0:18ba3960b5dd 28 FORCE_INLINE typename enable_if<IsString<TChar *>::value, bool>::type
khaiminhvn 0:18ba3960b5dd 29 containsKey(TChar *key) const;
khaiminhvn 0:18ba3960b5dd 30
khaiminhvn 0:18ba3960b5dd 31 // operator[](const std::string&) const
khaiminhvn 0:18ba3960b5dd 32 // operator[](const String&) const
khaiminhvn 0:18ba3960b5dd 33 template <typename TString>
khaiminhvn 0:18ba3960b5dd 34 FORCE_INLINE typename enable_if<IsString<TString>::value,
khaiminhvn 0:18ba3960b5dd 35 MemberProxy<TObject, TString> >::type
khaiminhvn 0:18ba3960b5dd 36 operator[](const TString &key) const;
khaiminhvn 0:18ba3960b5dd 37
khaiminhvn 0:18ba3960b5dd 38 // operator[](char*) const
khaiminhvn 0:18ba3960b5dd 39 // operator[](const char*) const
khaiminhvn 0:18ba3960b5dd 40 // operator[](const __FlashStringHelper*) const
khaiminhvn 0:18ba3960b5dd 41 template <typename TChar>
khaiminhvn 0:18ba3960b5dd 42 FORCE_INLINE typename enable_if<IsString<TChar *>::value,
khaiminhvn 0:18ba3960b5dd 43 MemberProxy<TObject, TChar *> >::type
khaiminhvn 0:18ba3960b5dd 44 operator[](TChar *key) const;
khaiminhvn 0:18ba3960b5dd 45
khaiminhvn 0:18ba3960b5dd 46 // createNestedArray(const std::string&) const
khaiminhvn 0:18ba3960b5dd 47 // createNestedArray(const String&) const
khaiminhvn 0:18ba3960b5dd 48 template <typename TString>
khaiminhvn 0:18ba3960b5dd 49 FORCE_INLINE ArrayRef createNestedArray(const TString &key) const;
khaiminhvn 0:18ba3960b5dd 50
khaiminhvn 0:18ba3960b5dd 51 // createNestedArray(char*) const
khaiminhvn 0:18ba3960b5dd 52 // createNestedArray(const char*) const
khaiminhvn 0:18ba3960b5dd 53 // createNestedArray(const __FlashStringHelper*) const
khaiminhvn 0:18ba3960b5dd 54 template <typename TChar>
khaiminhvn 0:18ba3960b5dd 55 FORCE_INLINE ArrayRef createNestedArray(TChar *key) const;
khaiminhvn 0:18ba3960b5dd 56
khaiminhvn 0:18ba3960b5dd 57 // createNestedObject(const std::string&) const
khaiminhvn 0:18ba3960b5dd 58 // createNestedObject(const String&) const
khaiminhvn 0:18ba3960b5dd 59 template <typename TString>
khaiminhvn 0:18ba3960b5dd 60 ObjectRef createNestedObject(const TString &key) const;
khaiminhvn 0:18ba3960b5dd 61
khaiminhvn 0:18ba3960b5dd 62 // createNestedObject(char*) const
khaiminhvn 0:18ba3960b5dd 63 // createNestedObject(const char*) const
khaiminhvn 0:18ba3960b5dd 64 // createNestedObject(const __FlashStringHelper*) const
khaiminhvn 0:18ba3960b5dd 65 template <typename TChar>
khaiminhvn 0:18ba3960b5dd 66 ObjectRef createNestedObject(TChar *key) const;
khaiminhvn 0:18ba3960b5dd 67
khaiminhvn 0:18ba3960b5dd 68 private:
khaiminhvn 0:18ba3960b5dd 69 const TObject *impl() const {
khaiminhvn 0:18ba3960b5dd 70 return static_cast<const TObject *>(this);
khaiminhvn 0:18ba3960b5dd 71 }
khaiminhvn 0:18ba3960b5dd 72 };
khaiminhvn 0:18ba3960b5dd 73 } // namespace ARDUINOJSON_NAMESPACE