Просмотр исходного кода

Replaced public inheritance by protected and private

Benoit Blanchon 11 лет назад
Родитель
Сommit
e94575b4b8

+ 3 - 3
JsonParser/JsonArray.cpp

@@ -10,17 +10,17 @@ using namespace ArduinoJson::Parser;
 
 DEPRECATED JsonObject JsonArray::getHashTable(int index)
 {
-    return (JsonObject) (*this)[index];
+    return operator[](index);
 }
 
 /*
 * Returns the token for the value at the specified index
 */
-JsonValue JsonArray::getValue(int index)
+JsonValue JsonArray::operator[](int index)
 {
     // sanity check
     if (index < 0 || !isArray() || index >= size())
-        return JsonValue::null();
+        return null();
 
     // skip first token, it's the whole object
     JsonToken runningToken = firstChild();

+ 9 - 16
JsonParser/JsonArray.h

@@ -15,7 +15,7 @@ namespace ArduinoJson
     {
         class JsonObject;
                
-        class JsonArray : public JsonToken
+        class JsonArray : JsonValue
         {          
         public:
 
@@ -23,8 +23,8 @@ namespace ArduinoJson
             {            
             }
 
-            JsonArray(JsonToken token) 
-                : JsonToken(token) 
+            JsonArray(JsonValue value)
+                : JsonValue(value)
             {
             }
 
@@ -38,10 +38,7 @@ namespace ArduinoJson
                 return isArray() ? JsonToken::size() : 0;
             }
 
-            JsonValue operator[](int index)
-            {
-                return getValue(index);
-            }
+            JsonValue operator[](int index);
 
             JsonArrayIterator begin()
             {
@@ -60,34 +57,30 @@ namespace ArduinoJson
                       
             DEPRECATED JsonArray getArray(int index)
             {
-                return getValue(index);
+                return operator[](index);
             }
 
             DEPRECATED bool getBool(int index)
             {
-                return getValue(index);
+                return operator[](index);
             }
 
             DEPRECATED double getDouble(int index)
             {
-                return getValue(index);
+                return operator[](index);
             }
 
             DEPRECATED JsonObject getHashTable(int index);
 
             DEPRECATED long getLong(int index)
             {
-                return getValue(index);
+                return operator[](index);
             }
 
             DEPRECATED char* getString(int index)
             {
-                return getValue(index);
+                return operator[](index);
             }
-
-        private:
-
-            JsonValue getValue(int index);
         };
     }
 }

+ 6 - 1
JsonParser/JsonArrayIterator.h

@@ -12,7 +12,7 @@ namespace ArduinoJson
 {
     namespace Parser
     {
-        class JsonArrayIterator : public JsonToken
+        class JsonArrayIterator : JsonToken
         {
         public:
 
@@ -31,6 +31,11 @@ namespace ArduinoJson
             {
                 return JsonValue(*this);
             }
+
+            bool operator!= (const JsonArrayIterator& other) const
+            {
+                return JsonToken::operator!=(other);
+            }
         };
     }
 }

+ 3 - 3
JsonParser/JsonObject.cpp

@@ -12,17 +12,17 @@ using namespace ArduinoJson::Parser;
 
 DEPRECATED JsonArray JsonObject::getArray(const char* key)
 {
-    return (*this)[key];
+    return operator[](key);
 }
 
 /*
 * Returns the token for the value associated with the specified key
 */
-JsonValue JsonObject::getValue(const char* desiredKey)
+JsonValue JsonObject::operator[](const char* desiredKey)
 {
     // sanity check
     if (desiredKey == 0 || !isObject())
-        return JsonValue::null();
+        return null();
 
     // skip first token, it's the whole object
     JsonToken runningToken = firstChild();

+ 10 - 17
JsonParser/JsonObject.h

@@ -14,7 +14,7 @@ namespace ArduinoJson
     {
         class JsonArray;
 
-        class JsonObject : public JsonToken
+        class JsonObject : JsonValue
         {
         public:
             JsonObject()
@@ -22,8 +22,8 @@ namespace ArduinoJson
 
             }
 
-            JsonObject(JsonToken token)
-                : JsonToken(token)
+            JsonObject(JsonValue value)
+                : JsonValue(value)
             {
 
             }
@@ -33,14 +33,11 @@ namespace ArduinoJson
                 return isObject();
             }
             
-            JsonValue operator[](const char* key)
-            {
-                return getValue(key);
-            }
+            JsonValue operator[](const char* key);
 
             bool containsKey(const char* key)
             {
-                return getValue(key).success();
+                return operator[](key).success();
             }
 
             JsonObjectIterator begin()
@@ -57,37 +54,33 @@ namespace ArduinoJson
 
             DEPRECATED bool getBool(const char* key)
             {
-                return getValue(key);
+                return operator[](key);
             }
 
             DEPRECATED double getDouble(const char* key)
             {
-                return getValue(key);
+                return operator[](key);
             }
 
             DEPRECATED JsonObject getHashTable(const char* key)
             {
-                return getValue(key);
+                return operator[](key);
             }
 
             DEPRECATED long getLong(const char* key)
             {
-                return getValue(key);
+                return operator[](key);
             }
 
             DEPRECATED char* getString(const char* key)
             {
-                return getValue(key);
+                return operator[](key);
             }
 
             static JsonObject null()
             {
                 return JsonObject(JsonToken::null());
             }
-
-        private:
-
-            JsonValue getValue(const char* key);
         };
 
         typedef JsonObject JsonHashTable;

+ 6 - 1
JsonParser/JsonObjectIterator.h

@@ -13,7 +13,7 @@ namespace ArduinoJson
 {
     namespace Parser
     {
-        class JsonObjectIterator : public JsonToken
+        class JsonObjectIterator : JsonToken
         {
         public:
 
@@ -31,6 +31,11 @@ namespace ArduinoJson
             {
                 return JsonPair(*this);
             }
+
+            bool operator!= (const JsonObjectIterator& other) const
+            {
+                return JsonToken::operator!=(other);
+            }
         };
     }
 }

+ 2 - 2
JsonParser/JsonPair.h

@@ -11,7 +11,7 @@ namespace ArduinoJson
 {
     namespace Parser
     {
-        class JsonPair : public JsonToken
+        class JsonPair : JsonToken
         {
         public:
             JsonPair(JsonToken token)
@@ -27,7 +27,7 @@ namespace ArduinoJson
 
             JsonValue value()
             {
-                return JsonValue(nextSibling());
+                return nextSibling();
             }
         };
     }

+ 2 - 2
JsonParser/JsonParserBase.cpp

@@ -8,13 +8,13 @@
 
 using namespace ArduinoJson::Parser;
 
-JsonValue JsonParserBase::parse(char* json)
+JsonToken JsonParserBase::parseToken(char* json)
 {
     jsmn_parser parser;
     jsmn_init(&parser);
 
     if (JSMN_SUCCESS != jsmn_parse(&parser, json, tokens, maxTokens))
-        return JsonValue::null();
+        return JsonToken::null();
 
     return JsonToken(json, tokens);
 }

+ 8 - 3
JsonParser/JsonParserBase.h

@@ -21,7 +21,10 @@ namespace ArduinoJson
             {
             }
 
-            JsonValue parse(char* json);
+            JsonValue parse(char* json)
+            {
+                return parseToken(json);
+            }
 
             /*
             * Parse the JSON string and return a array.
@@ -31,7 +34,7 @@ namespace ArduinoJson
             */
             DEPRECATED JsonArray parseArray(char* json)
             {
-                return parse(json);
+                return parseToken(json);
             }
 
             /*
@@ -42,12 +45,14 @@ namespace ArduinoJson
             */
             DEPRECATED JsonObject parseHashTable(char* json)
             {
-                return parse(json);
+                return parseToken(json);
             }
 
         private:
             jsmntok_t* tokens;
             int maxTokens;
+
+            JsonToken parseToken(char* json);
         };
     }
 }

+ 1 - 5
JsonParser/JsonToken.h

@@ -33,16 +33,14 @@ namespace ArduinoJson
                 return json + token->start;
             }
 
-            // TODO: should be protected
             JsonToken firstChild() const
             {
                 return JsonToken(json, token + 1);
             }
 
-            // TODO: should be protected
             JsonToken nextSibling() const;
 
-            bool operator!= (const JsonToken& other)
+            bool operator!= (const JsonToken& other) const
             {
                 return token != other.token;
             }
@@ -52,8 +50,6 @@ namespace ArduinoJson
                 return JsonToken(0, 0);
             }
 
-        protected:
-
             bool isValid()
             {
                 return token != 0;

+ 6 - 1
JsonParser/JsonValue.h

@@ -24,10 +24,15 @@ namespace ArduinoJson
         class JsonArray;
         class JsonObject;
 
-        class JsonValue : public JsonToken
+        class JsonValue : protected JsonToken
         {
         public:
 
+            JsonValue()
+            {
+
+            }
+
             JsonValue(JsonToken token)
                 : JsonToken(token)
             {

+ 2 - 1
JsonParserTests/JsonObjectIteratorTests.cpp

@@ -17,7 +17,8 @@ namespace JsonParserTests
             long expected [] = { 1, 2, 3 };
             JsonParser<4> parser;
 
-            JsonArray a = parser.parse(json);
+            JsonValue v = parser.parse(json);
+            JsonArray a = (ArduinoJson::Parser::JsonArray)v;
 
             int index = 0;