X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fvalue.c;h=31109ff74db8a588849f034228f172204fc454dc;hb=49d40f020b471f693fdd179729faa8be916f7114;hp=2b9794747c4da3aa53f106463533f4bae5ca7889;hpb=9db34dc31a69312ec1f486e6273d1bf5c80f978d;p=jansson.git diff --git a/src/value.c b/src/value.c index 2b97947..31109ff 100644 --- a/src/value.c +++ b/src/value.c @@ -170,7 +170,7 @@ int json_object_update(json_t *object, json_t *other) key = json_object_iter_key(iter); value = json_object_iter_value(iter); - if(json_object_set(object, key, value)) + if(json_object_set_nocheck(object, key, value)) return -1; iter = json_object_iter_next(other, iter); @@ -190,6 +190,17 @@ void *json_object_iter(json_t *json) return hashtable_iter(&object->hashtable); } +void *json_object_iter_at(json_t *json, const char *key) +{ + json_object_t *object; + + if(!key || !json_is_object(json)) + return NULL; + + object = json_to_object(json); + return hashtable_iter_at(&object->hashtable, key); +} + void *json_object_iter_next(json_t *json, void *iter) { json_object_t *object; @@ -217,6 +228,19 @@ json_t *json_object_iter_value(void *iter) return (json_t *)hashtable_iter_value(iter); } +int json_object_iter_set_new(json_t *json, void *iter, json_t *value) +{ + json_object_t *object; + + if(!json_is_object(json) || !iter || !value) + return -1; + + object = json_to_object(json); + hashtable_iter_set(&object->hashtable, iter, value); + + return 0; +} + static int json_object_equal(json_t *object1, json_t *object2) { void *iter; @@ -260,7 +284,7 @@ static json_t *json_object_copy(json_t *object) key = json_object_iter_key(iter); value = json_object_iter_value(iter); - json_object_set(result, key, value); + json_object_set_nocheck(result, key, value); iter = json_object_iter_next(object, iter); } @@ -285,7 +309,7 @@ static json_t *json_object_deep_copy(json_t *object) key = json_object_iter_key(iter); value = json_object_iter_value(iter); - json_object_set(result, key, json_deep_copy(value)); + json_object_set_new_nocheck(result, key, json_deep_copy(value)); iter = json_object_iter_next(object, iter); } @@ -586,7 +610,7 @@ static json_t *json_array_deep_copy(json_t *array) return NULL; for(i = 0; i < json_array_size(array); i++) - json_array_append(result, json_deep_copy(json_array_get(array, i))); + json_array_append_new(result, json_deep_copy(json_array_get(array, i))); return result; } @@ -667,7 +691,7 @@ static int json_string_equal(json_t *string1, json_t *string2) static json_t *json_string_copy(json_t *string) { - return json_string(json_string_value(string)); + return json_string_nocheck(json_string_value(string)); }