X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fvalue.c;h=35166f44e8312096e9c3d2282521d1979d330cdd;hb=8d75235ff22dc4aced697e198c3c024f1f4b88fe;hp=2b9794747c4da3aa53f106463533f4bae5ca7889;hpb=9db34dc31a69312ec1f486e6273d1bf5c80f978d;p=jansson.git diff --git a/src/value.c b/src/value.c index 2b97947..35166f4 100644 --- a/src/value.c +++ b/src/value.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Petri Lehtinen + * Copyright (c) 2009, 2010 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. @@ -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)); }