diff options
author | Petri Lehtinen <petri@digip.org> | 2009-12-21 14:00:40 +0200 |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2009-12-23 22:28:24 +0200 |
commit | dd2fe1ebe80fa9a95265fbcd20b6ffdfdc30d469 (patch) | |
tree | 38a3cf0e79efd43aec05db7c9030c8e3af81d0b7 /src | |
parent | 6637b976edd508cc9413ce954fe4275eab8c2c69 (diff) | |
download | jansson-dd2fe1ebe80fa9a95265fbcd20b6ffdfdc30d469.zip jansson-dd2fe1ebe80fa9a95265fbcd20b6ffdfdc30d469.tar.gz jansson-dd2fe1ebe80fa9a95265fbcd20b6ffdfdc30d469.tar.bz2 |
Add _nocheck functions
Added functions are:
* json_string_nocheck()
* json_string_set_nocheck()
* json_object_set_nocheck()
* json_object_set_new_nocheck()
These functions don't check that their string argument is valid UTF-8,
but assume that the user has already performed the check.
Diffstat (limited to 'src')
-rw-r--r-- | src/jansson.h | 9 | ||||
-rw-r--r-- | src/jansson_private.h | 3 | ||||
-rw-r--r-- | src/value.c | 18 |
3 files changed, 18 insertions, 12 deletions
diff --git a/src/jansson.h b/src/jansson.h index 59e3eb5..25906dd 100644 --- a/src/jansson.h +++ b/src/jansson.h @@ -49,6 +49,7 @@ typedef struct { json_t *json_object(void); json_t *json_array(void); json_t *json_string(const char *value); +json_t *json_string_nocheck(const char *value); json_t *json_integer(int value); json_t *json_real(double value); json_t *json_true(void); @@ -77,6 +78,7 @@ static inline void json_decref(json_t *json) unsigned int json_object_size(const json_t *object); json_t *json_object_get(const json_t *object, const char *key); int json_object_set_new(json_t *object, const char *key, json_t *value); +int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value); int json_object_del(json_t *object, const char *key); int json_object_clear(json_t *object); int json_object_update(json_t *object, json_t *other); @@ -91,6 +93,12 @@ int json_object_set(json_t *object, const char *key, json_t *value) return json_object_set_new(object, key, json_incref(value)); } +static inline +int json_object_set_nocheck(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new_nocheck(object, key, json_incref(value)); +} + unsigned int json_array_size(const json_t *array); json_t *json_array_get(const json_t *array, unsigned int index); int json_array_set_new(json_t *array, unsigned int index, json_t *value); @@ -124,6 +132,7 @@ double json_real_value(const json_t *real); double json_number_value(const json_t *json); int json_string_set(json_t *string, const char *value); +int json_string_set_nocheck(json_t *string, const char *value); int json_integer_set(json_t *integer, int value); int json_real_set(json_t *real, double value); diff --git a/src/jansson_private.h b/src/jansson_private.h index 317f05a..3e9bb7f 100644 --- a/src/jansson_private.h +++ b/src/jansson_private.h @@ -49,7 +49,4 @@ typedef struct { #define json_to_real(json_) container_of(json_, json_real_t, json) #define json_to_integer(json_) container_of(json_, json_integer_t, json) -int json_object_set_nocheck(json_t *json, const char *key, json_t *value); -json_t *json_string_nocheck(const char *value); - #endif diff --git a/src/value.c b/src/value.c index ccf9f06..0ab8232 100644 --- a/src/value.c +++ b/src/value.c @@ -120,11 +120,6 @@ int json_object_set_new_nocheck(json_t *json, const char *key, json_t *value) return 0; } -int json_object_set_nocheck(json_t *json, const char *key, json_t *value) -{ - return json_object_set_new_nocheck(json, key, json_incref(value)); -} - int json_object_set_new(json_t *json, const char *key, json_t *value) { if(!key || !utf8_check_string(key, -1)) @@ -508,14 +503,11 @@ const char *json_string_value(const json_t *json) return json_to_string(json)->value; } -int json_string_set(json_t *json, const char *value) +int json_string_set_nocheck(json_t *json, const char *value) { char *dup; json_string_t *string; - if(!json_is_string(json) || !value || !utf8_check_string(value, -1)) - return -1; - dup = strdup(value); if(!dup) return -1; @@ -527,6 +519,14 @@ int json_string_set(json_t *json, const char *value) return 0; } +int json_string_set(json_t *json, const char *value) +{ + if(!value || !utf8_check_string(value, -1)) + return -1; + + return json_string_set_nocheck(json, value); +} + static void json_delete_string(json_string_t *string) { free(string->value); |