mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Extracted method getMatchingPair()
This commit is contained in:
		| @@ -4,6 +4,7 @@ | ||||
| */ | ||||
|  | ||||
| #include "JsonObjectBase.h" | ||||
| #include <string.h> // for strcmp | ||||
|  | ||||
| using namespace ArduinoJson::Generator; | ||||
| using namespace ArduinoJson::Internals; | ||||
| @@ -38,25 +39,34 @@ size_t JsonObjectBase::printTo(Print& p) const | ||||
|     return n; | ||||
| } | ||||
|  | ||||
| JsonValue& JsonObjectBase::operator[](char const* key) | ||||
| JsonObjectBase::KeyValuePair* JsonObjectBase::getMatchingPair(char const* key) const | ||||
| { | ||||
|     KeyValuePair* p = items; | ||||
|  | ||||
|     for (int i = count; i > 0; --i) | ||||
|     { | ||||
|         if (p->matches(key)) | ||||
|             return p->value; | ||||
|         if (!strcmp(p->key, key)) | ||||
|             return p; | ||||
|  | ||||
|         p++; | ||||
|     } | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| JsonValue& JsonObjectBase::operator[](char const* key) | ||||
| { | ||||
|     KeyValuePair* match = getMatchingPair(key); | ||||
|     JsonValue* value; | ||||
|  | ||||
|     if (match) | ||||
|         return match->value; | ||||
|  | ||||
|     if (count < capacity) | ||||
|     { | ||||
|         items[count].key = key; | ||||
|         value = &items[count].value; | ||||
|         count++; | ||||
|         p->key = key; | ||||
|         value = &p->value; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
| @@ -69,15 +79,5 @@ JsonValue& JsonObjectBase::operator[](char const* key) | ||||
|  | ||||
| bool JsonObjectBase::containsKey(char const* key) const | ||||
| { | ||||
|     KeyValuePair* p = items; | ||||
|  | ||||
|     for (int i = count; i > 0; --i) | ||||
|     { | ||||
|         if (p->matches(key)) | ||||
|             return true; | ||||
|  | ||||
|         p++; | ||||
|     } | ||||
|  | ||||
|     return false; | ||||
|     return getMatchingPair(key) != 0; | ||||
| } | ||||
| @@ -7,7 +7,6 @@ | ||||
|  | ||||
| #include "JsonPrintable.h" | ||||
| #include "EscapedString.h" | ||||
| #include <string.h> // for strcmp | ||||
|  | ||||
| namespace ArduinoJson | ||||
| { | ||||
| @@ -43,11 +42,6 @@ namespace ArduinoJson | ||||
|             { | ||||
|                 const char* key; | ||||
|                 JsonValue   value; | ||||
|  | ||||
|                 bool matches(const char* candidateKey) const | ||||
|                 { | ||||
|                     return strcmp(key, candidateKey) == 0; | ||||
|                 } | ||||
|             }; | ||||
|  | ||||
|             JsonObjectBase(KeyValuePair* items, int capacity) | ||||
| @@ -60,6 +54,8 @@ namespace ArduinoJson | ||||
|             int capacity, count; | ||||
|  | ||||
|             static JsonValue nullValue; | ||||
|  | ||||
|             KeyValuePair* getMatchingPair(const char* key) const; | ||||
|         }; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user