aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Tkachev2016-05-11 13:45:10 +0600
committerAlexander Tkachev2016-08-24 16:05:07 +0600
commit2ac2816d68c11b50796457f7d41896a1ed7d571e (patch)
treec271fb794edf9f2d431eb60739e588579c734934
parenta7fb8c72ab0ca60161f5acad42774340ee08abab (diff)
downloadscummvm-rg350-2ac2816d68c11b50796457f7d41896a1ed7d571e.tar.gz
scummvm-rg350-2ac2816d68c11b50796457f7d41896a1ed7d571e.tar.bz2
scummvm-rg350-2ac2816d68c11b50796457f7d41896a1ed7d571e.zip
CLOUD: Refactor SimpleJSON
-rw-r--r--backends/cloud/cloudthread.cpp26
-rw-r--r--common/json.cpp261
-rw-r--r--common/json.h8
3 files changed, 156 insertions, 139 deletions
diff --git a/backends/cloud/cloudthread.cpp b/backends/cloud/cloudthread.cpp
index e375d6fb2b..f8d93d2baa 100644
--- a/backends/cloud/cloudthread.cpp
+++ b/backends/cloud/cloudthread.cpp
@@ -1,6 +1,28 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
#include "cloudthread.h"
-#include "../../common/debug.h"
-#include "../../common/json.h"
+#include "common/debug.h"
+#include "common/json.h"
void example1();
void example2();
diff --git a/common/json.cpp b/common/json.cpp
index a0bab11995..878c67e1ae 100644
--- a/common/json.cpp
+++ b/common/json.cpp
@@ -44,12 +44,7 @@
* THE SOFTWARE.
*/
-#include "JSON.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
+#include "common/json.h"
#ifdef __MINGW32__
#define wcsncasecmp wcsnicmp
@@ -155,54 +150,54 @@ bool JSON::extractString(const char **data, String &str) {
// Deal with the escaped char
switch (**data) {
- case '"': next_char = '"';
- break;
- case '\\': next_char = '\\';
- break;
- case '/': next_char = '/';
- break;
- case 'b': next_char = '\b';
- break;
- case 'f': next_char = '\f';
- break;
- case 'n': next_char = '\n';
- break;
- case 'r': next_char = '\r';
- break;
- case 't': next_char = '\t';
- break;
- case 'u': {
- // We need 5 chars (4 hex + the 'u') or its not valid
- if (!simplejson_wcsnlen(*data, 5))
- return false;
+ case '"': next_char = '"';
+ break;
+ case '\\': next_char = '\\';
+ break;
+ case '/': next_char = '/';
+ break;
+ case 'b': next_char = '\b';
+ break;
+ case 'f': next_char = '\f';
+ break;
+ case 'n': next_char = '\n';
+ break;
+ case 'r': next_char = '\r';
+ break;
+ case 't': next_char = '\t';
+ break;
+ case 'u': {
+ // We need 5 chars (4 hex + the 'u') or its not valid
+ if (!simplejson_wcsnlen(*data, 5))
+ return false;
- // Deal with the chars
- next_char = 0;
- for (int i = 0; i < 4; i++) {
- // Do it first to move off the 'u' and leave us on the
- // final hex digit as we move on by one later on
- (*data)++;
-
- next_char <<= 4;
-
- // Parse the hex digit
- if (**data >= '0' && **data <= '9')
- next_char |= (**data - '0');
- else if (**data >= 'A' && **data <= 'F')
- next_char |= (10 + (**data - 'A'));
- else if (**data >= 'a' && **data <= 'f')
- next_char |= (10 + (**data - 'a'));
- else {
- // Invalid hex digit = invalid JSON
- return false;
- }
+ // Deal with the chars
+ next_char = 0;
+ for (int i = 0; i < 4; i++) {
+ // Do it first to move off the 'u' and leave us on the
+ // final hex digit as we move on by one later on
+ (*data)++;
+
+ next_char <<= 4;
+
+ // Parse the hex digit
+ if (**data >= '0' && **data <= '9')
+ next_char |= (**data - '0');
+ else if (**data >= 'A' && **data <= 'F')
+ next_char |= (10 + (**data - 'A'));
+ else if (**data >= 'a' && **data <= 'f')
+ next_char |= (10 + (**data - 'a'));
+ else {
+ // Invalid hex digit = invalid JSON
+ return false;
}
- break;
}
+ break;
+ }
- // By the spec, only the above cases are allowed
- default:
- return false;
+ // By the spec, only the above cases are allowed
+ default:
+ return false;
}
}
@@ -594,41 +589,41 @@ JSONValue::JSONValue(const JSONValue &source) {
_type = source._type;
switch (_type) {
- case JSONType_String:
- _stringValue = new String(*source._stringValue);
- break;
-
- case JSONType_Bool:
- _boolValue = source._boolValue;
- break;
-
- case JSONType_Number:
- _numberValue = source._numberValue;
- break;
-
- case JSONType_Array: {
- JSONArray source_array = *source._arrayValue;
- JSONArray::iterator iter;
- _arrayValue = new JSONArray();
- for (iter = source_array.begin(); iter != source_array.end(); iter++)
- _arrayValue->push_back(new JSONValue(**iter));
- break;
- }
+ case JSONType_String:
+ _stringValue = new String(*source._stringValue);
+ break;
- case JSONType_Object: {
- JSONObject source_object = *source._objectValue;
- _objectValue = new JSONObject();
- JSONObject::iterator iter;
- for (iter = source_object.begin(); iter != source_object.end(); iter++) {
- String name = (*iter)._key;
- (*_objectValue)[name] = new JSONValue(*((*iter)._value));
- }
- break;
+ case JSONType_Bool:
+ _boolValue = source._boolValue;
+ break;
+
+ case JSONType_Number:
+ _numberValue = source._numberValue;
+ break;
+
+ case JSONType_Array: {
+ JSONArray source_array = *source._arrayValue;
+ JSONArray::iterator iter;
+ _arrayValue = new JSONArray();
+ for (iter = source_array.begin(); iter != source_array.end(); iter++)
+ _arrayValue->push_back(new JSONValue(**iter));
+ break;
+ }
+
+ case JSONType_Object: {
+ JSONObject source_object = *source._objectValue;
+ _objectValue = new JSONObject();
+ JSONObject::iterator iter;
+ for (iter = source_object.begin(); iter != source_object.end(); iter++) {
+ String name = (*iter)._key;
+ (*_objectValue)[name] = new JSONValue(*((*iter)._value));
}
+ break;
+ }
- case JSONType_Null:
- // Nothing to do.
- break;
+ case JSONType_Null:
+ // Nothing to do.
+ break;
}
}
@@ -792,12 +787,12 @@ const JSONObject &JSONValue::asObject() const {
*/
std::size_t JSONValue::countChildren() const {
switch (_type) {
- case JSONType_Array:
- return _arrayValue->size();
- case JSONType_Object:
- return _objectValue->size();
- default:
- return 0;
+ case JSONType_Array:
+ return _arrayValue->size();
+ case JSONType_Object:
+ return _objectValue->size();
+ default:
+ return 0;
}
}
@@ -922,58 +917,58 @@ String JSONValue::stringifyImpl(size_t const indentDepth) const {
String const indentStr1 = indent(indentDepth1);
switch (_type) {
- case JSONType_Null:
+ case JSONType_Null:
+ ret_string = "null";
+ break;
+
+ case JSONType_String:
+ ret_string = stringifyString(*_stringValue);
+ break;
+
+ case JSONType_Bool:
+ ret_string = _boolValue ? "true" : "false";
+ break;
+
+ case JSONType_Number: {
+ if (isinf(_numberValue) || isnan(_numberValue))
ret_string = "null";
- break;
-
- case JSONType_String:
- ret_string = stringifyString(*_stringValue);
- break;
-
- case JSONType_Bool:
- ret_string = _boolValue ? "true" : "false";
- break;
-
- case JSONType_Number: {
- if (isinf(_numberValue) || isnan(_numberValue))
- ret_string = "null";
- else {
- char str[80];
- sprintf(str, "%.15Lf", _numberValue); //ss.precision(15);
- ret_string = str;
- }
- break;
+ else {
+ char str[80];
+ sprintf(str, "%.15Lf", _numberValue); //ss.precision(15);
+ ret_string = str;
}
+ break;
+ }
- case JSONType_Array: {
- ret_string = indentDepth ? "[\n" + indentStr1 : "[";
- JSONArray::const_iterator iter = _arrayValue->begin();
- while (iter != _arrayValue->end()) {
- ret_string += (*iter)->stringifyImpl(indentDepth1);
+ case JSONType_Array: {
+ ret_string = indentDepth ? "[\n" + indentStr1 : "[";
+ JSONArray::const_iterator iter = _arrayValue->begin();
+ while (iter != _arrayValue->end()) {
+ ret_string += (*iter)->stringifyImpl(indentDepth1);
- // Not at the end - add a separator
- if (++iter != _arrayValue->end())
- ret_string += ",";
- }
- ret_string += indentDepth ? "\n" + indentStr + "]" : "]";
- break;
+ // Not at the end - add a separator
+ if (++iter != _arrayValue->end())
+ ret_string += ",";
}
+ ret_string += indentDepth ? "\n" + indentStr + "]" : "]";
+ break;
+ }
- case JSONType_Object: {
- ret_string = indentDepth ? "{\n" + indentStr1 : "{";
- JSONObject::const_iterator iter = _objectValue->begin();
- while (iter != _objectValue->end()) {
- ret_string += stringifyString((*iter)._key);
- ret_string += ":";
- ret_string += (*iter)._value->stringifyImpl(indentDepth1);
-
- // Not at the end - add a separator
- if (++iter != _objectValue->end())
- ret_string += ",";
- }
- ret_string += indentDepth ? "\n" + indentStr + "}" : "}";
- break;
+ case JSONType_Object: {
+ ret_string = indentDepth ? "{\n" + indentStr1 : "{";
+ JSONObject::const_iterator iter = _objectValue->begin();
+ while (iter != _objectValue->end()) {
+ ret_string += stringifyString((*iter)._key);
+ ret_string += ":";
+ ret_string += (*iter)._value->stringifyImpl(indentDepth1);
+
+ // Not at the end - add a separator
+ if (++iter != _objectValue->end())
+ ret_string += ",";
}
+ ret_string += indentDepth ? "\n" + indentStr + "}" : "}";
+ break;
+ }
}
return ret_string;
diff --git a/common/json.h b/common/json.h
index 64a1e03c5e..5114947966 100644
--- a/common/json.h
+++ b/common/json.h
@@ -47,10 +47,10 @@
#ifndef COMMON_JSON_H
#define COMMON_JSON_H
-#include "array.h"
-#include "hashmap.h"
-#include "hash-str.h"
-#include "str.h"
+#include "common/array.h"
+#include "common/hashmap.h"
+#include "common/hash-str.h"
+#include "common/str.h"
// Win32 incompatibilities
#if defined(WIN32) && !defined(__GNUC__)