Procházet zdrojové kódy

Replaced JsonToken operators by meaningful methods

Benoit Blanchon před 11 roky
rodič
revize
714a37bd59

+ 3 - 3
JsonParser/JsonArray.cpp

@@ -24,14 +24,14 @@ JsonValue JsonArray::operator[](int index)
         return JsonValue::null();
 
     // skip first token, it's the whole object
-    JsonToken currentToken = token + 1;
+    JsonToken runningToken = token.firstChild();
 
     // skip all tokens before the specified index
     for (int i = 0; i < index; i++)
     {
         // move forward: current + nested tokens
-        currentToken += 1 + currentToken.nestedTokenCount();
+        runningToken = runningToken.nextSibling();
     }
 
-    return JsonValue(json, currentToken);
+    return JsonValue(json, runningToken);
 }

+ 2 - 2
JsonParser/JsonArray.h

@@ -45,12 +45,12 @@ namespace ArduinoJson
 
             JsonArrayIterator begin()
             {
-                return JsonArrayIterator(json, token);
+                return JsonArrayIterator(json, token.firstChild());
             }
 
             JsonArrayIterator end()
             {
-                return JsonArrayIterator(json, token + token.nestedTokenCount());
+                return JsonArrayIterator(json, token.nextSibling());
             }
 
             DEPRECATED int getLength()

+ 1 - 1
JsonParser/JsonArrayIterator.h

@@ -23,7 +23,7 @@ namespace ArduinoJson
             JsonArrayIterator operator++()
             {
                 JsonArrayIterator prev = *this;
-                token += 1;
+                token = token.nextSibling();
                 return prev;
             }
 

+ 3 - 3
JsonParser/JsonHashTable.cpp

@@ -26,7 +26,7 @@ JsonValue JsonHashTable::getValue(const char* desiredKey)
         return JsonValue::null();
 
     // skip first token, it's the whole object
-    JsonToken runningToken = token + 1;
+    JsonToken runningToken = token.firstChild();
 
     // scan each keys
     for (int i = 0; i < token.size() / 2; i++)
@@ -35,7 +35,7 @@ JsonValue JsonHashTable::getValue(const char* desiredKey)
         char* key = runningToken.getText(json);
 
         // move to the 'value' token
-        runningToken += 1;
+        runningToken = runningToken.nextSibling();
 
         // compare with desired name
         if (strcmp(desiredKey, key) == 0)
@@ -45,7 +45,7 @@ JsonValue JsonHashTable::getValue(const char* desiredKey)
         }
 
         // skip nested tokens
-        runningToken += 1 + runningToken.nestedTokenCount();
+        runningToken = runningToken.nextSibling();
     }
 
     // nothing found, return NULL

+ 7 - 6
JsonParser/JsonToken.h

@@ -27,14 +27,14 @@ namespace ArduinoJson
                 return json + token->start;
             }
 
-            JsonToken operator+ (int n)
+            JsonToken firstChild() const
             {
-                return JsonToken(token + n);
+                return JsonToken(token + 1);
             }
 
-            void operator+= (int n)
+            JsonToken nextSibling() const
             {
-                token += n;
+                return JsonToken(token + 1 + nestedTokenCount());
             }
 
             bool operator!= (const JsonToken& other)
@@ -77,10 +77,11 @@ namespace ArduinoJson
                 return JsonToken(0);
             }
 
-            int nestedTokenCount() const;
-
         private:
             jsmntok_t* token;
+
+            int nestedTokenCount() const;
+
         };
     }
 }

+ 2 - 2
JsonParserTests/JsonArrayIteratorTests.cpp

@@ -11,13 +11,13 @@ namespace JsonParserTests
 	{
 	public:
 		
-		TEST_METHOD(SimpleIteraton)
+		TEST_METHOD(ThreeIntegers)
 		{
             char json [] = "[1,2,3]";
             JsonParser<4> parser;
 
             JsonArray a = parser.parse(json);
-
+            
             long expected = 1;
 
             for (auto i : a)