|
|
@@ -116,47 +116,6 @@ namespace sjson
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- void parse_string(const char* json, DynamicString& string)
|
|
|
- {
|
|
|
- CE_ASSERT_NOT_NULL(json);
|
|
|
-
|
|
|
- if (*json == '"')
|
|
|
- {
|
|
|
- while (*++json)
|
|
|
- {
|
|
|
- // Empty string
|
|
|
- if (*json == '"')
|
|
|
- {
|
|
|
- ++json;
|
|
|
- return;
|
|
|
- }
|
|
|
- else if (*json == '\\')
|
|
|
- {
|
|
|
- ++json;
|
|
|
-
|
|
|
- switch (*json)
|
|
|
- {
|
|
|
- case '"': string += '"'; break;
|
|
|
- case '\\': string += '\\'; break;
|
|
|
- case '/': string += '/'; break;
|
|
|
- case 'b': string += '\b'; break;
|
|
|
- case 'f': string += '\f'; break;
|
|
|
- case 'n': string += '\n'; break;
|
|
|
- case 'r': string += '\r'; break;
|
|
|
- case 't': string += '\t'; break;
|
|
|
- default: CE_FATAL("Bad escape character"); break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- string += *json;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- CE_FATAL("Bad string");
|
|
|
- }
|
|
|
-
|
|
|
static const char* parse_key(const char* json, DynamicString& key)
|
|
|
{
|
|
|
CE_ASSERT_NOT_NULL(json);
|
|
|
@@ -178,7 +137,7 @@ namespace sjson
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- f64 parse_number(const char* json)
|
|
|
+ static f64 parse_number(const char* json)
|
|
|
{
|
|
|
CE_ASSERT_NOT_NULL(json);
|
|
|
|
|
|
@@ -231,6 +190,16 @@ namespace sjson
|
|
|
return val;
|
|
|
}
|
|
|
|
|
|
+ s32 parse_int(const char* json)
|
|
|
+ {
|
|
|
+ return (s32)parse_number(json);
|
|
|
+ }
|
|
|
+
|
|
|
+ f32 parse_float(const char* json)
|
|
|
+ {
|
|
|
+ return (f32)parse_number(json);
|
|
|
+ }
|
|
|
+
|
|
|
bool parse_bool(const char* json)
|
|
|
{
|
|
|
CE_ASSERT_NOT_NULL(json);
|
|
|
@@ -258,14 +227,45 @@ namespace sjson
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- s32 parse_int(const char* json)
|
|
|
+ void parse_string(const char* json, DynamicString& string)
|
|
|
{
|
|
|
- return (s32)parse_number(json);
|
|
|
- }
|
|
|
+ CE_ASSERT_NOT_NULL(json);
|
|
|
|
|
|
- f32 parse_float(const char* json)
|
|
|
- {
|
|
|
- return (f32)parse_number(json);
|
|
|
+ if (*json == '"')
|
|
|
+ {
|
|
|
+ while (*++json)
|
|
|
+ {
|
|
|
+ // Empty string
|
|
|
+ if (*json == '"')
|
|
|
+ {
|
|
|
+ ++json;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if (*json == '\\')
|
|
|
+ {
|
|
|
+ ++json;
|
|
|
+
|
|
|
+ switch (*json)
|
|
|
+ {
|
|
|
+ case '"': string += '"'; break;
|
|
|
+ case '\\': string += '\\'; break;
|
|
|
+ case '/': string += '/'; break;
|
|
|
+ case 'b': string += '\b'; break;
|
|
|
+ case 'f': string += '\f'; break;
|
|
|
+ case 'n': string += '\n'; break;
|
|
|
+ case 'r': string += '\r'; break;
|
|
|
+ case 't': string += '\t'; break;
|
|
|
+ default: CE_FATAL("Bad escape character"); break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ string += *json;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ CE_FATAL("Bad string");
|
|
|
}
|
|
|
|
|
|
void parse_array(const char* json, JsonArray& array)
|