Przeglądaj źródła

Use skip_value() to skip values

Daniele Bartolini 11 lat temu
rodzic
commit
1fcbaf77c2
1 zmienionych plików z 17 dodań i 22 usunięć
  1. 17 22
      engine/core/json/JSON.cpp

+ 17 - 22
engine/core/json/JSON.cpp

@@ -204,6 +204,21 @@ namespace json
 		return ch;
 	}
 
+	static const char* skip_value(const char* s)
+	{
+		CE_ASSERT_NOT_NULL(s);
+
+		const char* ch = s;
+		ch = skip_array(ch);
+		ch = skip_object(ch);
+		ch = skip_number(ch);
+		ch = skip_string(ch);
+		ch = skip_bool(ch);
+		ch = skip_null(ch);
+
+		return ch;
+	}
+
 	//-----------------------------------------------------------------------------
 	static bool is_escapee(char c)
 	{
@@ -402,13 +417,7 @@ namespace json
 			{
 				array::push_back(array, ch);
 
-				ch = skip_array(ch);
-				ch = skip_object(ch);
-				ch = skip_number(ch);
-				ch = skip_string(ch);
-				ch = skip_bool(ch);
-				ch = skip_null(ch);
-
+				ch = skip_value(ch);
 				ch = skip_whites(ch);
 
 				// Closing bracket (top-most array)
@@ -453,28 +462,14 @@ namespace json
 				DynamicString key;
 				parse_string(ch, key);
 
-				// Skip any value
-				ch = skip_array(ch);
-				ch = skip_object(ch);
-				ch = skip_number(ch);
 				ch = skip_string(ch);
-				ch = skip_bool(ch);
-				ch = skip_null(ch);
-
 				ch = skip_whites(ch);
 				ch = next(ch, ':');
 				ch = skip_whites(ch);
 
 				map::set(object, key, ch);
 
-				// Skip any value
-				ch = skip_array(ch);
-				ch = skip_object(ch);
-				ch = skip_number(ch);
-				ch = skip_string(ch);
-				ch = skip_bool(ch);
-				ch = skip_null(ch);
-
+				ch = skip_value(ch);
 				ch = skip_whites(ch);
 
 				if ((*ch) == '}')