summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
287ec3f)
Before, json_loads checked for '[' or '{' at the beginning. Now
there's a dedicated function for that: parse_json(). Also rename
parse() to parse_value().
-static json_t *parse(lex_t *lex, json_error_t *error);
+static json_t *parse_value(lex_t *lex, json_error_t *error);
static json_t *parse_object(lex_t *lex, json_error_t *error)
{
static json_t *parse_object(lex_t *lex, json_error_t *error)
{
- value = parse(lex, error);
+ value = parse_value(lex, error);
if(!value) {
free(key);
goto error;
if(!value) {
free(key);
goto error;
return array;
while(lex->token) {
return array;
while(lex->token) {
- json_t *elem = parse(lex, error);
+ json_t *elem = parse_value(lex, error);
-static json_t *parse(lex_t *lex, json_error_t *error)
+static json_t *parse_value(lex_t *lex, json_error_t *error)
+json_t *parse_json(lex_t *lex, json_error_t *error)
+{
+ if(lex->token != '[' && lex->token != '{') {
+ error_set(error, lex, "'[' or '{' expected");
+ return NULL;
+ }
+
+ return parse_value(lex, error);
+}
+
json_t *json_load(const char *path, json_error_t *error)
{
json_t *result;
json_t *json_load(const char *path, json_error_t *error)
{
json_t *result;
if(lex_init(&lex, string))
return NULL;
if(lex_init(&lex, string))
return NULL;
- if(lex.token != '[' && lex.token != '{') {
- error_set(error, &lex, "'[' or '{' expected");
- goto out;
- }
-
- result = parse(&lex, error);
+ result = parse_json(&lex, error);