diff options
author | Werner Koch <[email protected]> | 2018-03-14 10:24:38 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2018-03-16 12:36:04 +0000 |
commit | 81c90d0cd0f959fd5e01baed9b4af0ec35ecb85c (patch) | |
tree | f35c1b4809b70c20e495e2f4482399d0f07670de /src/cJSON.h | |
parent | core: Import cJSON code from the payproc project. (diff) | |
download | gpgme-81c90d0cd0f959fd5e01baed9b4af0ec35ecb85c.tar.gz gpgme-81c90d0cd0f959fd5e01baed9b4af0ec35ecb85c.zip |
core: Adjust cJSON code for use in GPGME.
* src/cJSON.c: Remove util.h. Use gpgrt alloc functions.
(cJSON_Delete): Do not clobber ERRNO.
(cJSON_AddItemToObject): Return OBJECT or NULL.
(cJSON_AddNullToObject): New.
(cJSON_AddTrueToObject): New.
(cJSON_AddFalseToObject): New.
(cJSON_AddBoolToObject): New.
(cJSON_AddNumberToObject): New.
(cJSON_AddStringToObject): New.
* src/cJSON.h (cJSON__h): Replace macro by cJSON_h for C compliance.
(cJSON_AddNullToObject): Remove macro.
(cJSON_AddTrueToObject): Remove macro.
(cJSON_AddFalseToObject): Remove macro.
(cJSON_AddBoolToObject): Remove macro.
(cJSON_AddNumberToObject): Remove macro.
(cJSON_AddStringToObject): Remove macro.
--
The gpgrt malloc functions are used so that we can easily mix memory
returned by gpgrt (e.g. es_read_line) with memory returned from the
JSON function. In general that is not needed but on Windows it makes
a difference if the gpgme DLL is linked to a different C runtime
than the application.
The macros have been replaced to allow error checking (i.e out of
core) for these functions. More error checking should be implemented
instead of silently creating objects which are not as requested.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/cJSON.h')
-rw-r--r-- | src/cJSON.h | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/src/cJSON.h b/src/cJSON.h index 53bac343..69c3056a 100644 --- a/src/cJSON.h +++ b/src/cJSON.h @@ -20,10 +20,13 @@ * THE SOFTWARE. * * SPDX-License-Identifier: MIT + * + * Note that this code has been modified from the original code taken + * from cjson-code-58.zip. */ -#ifndef cJSON__h -#define cJSON__h +#ifndef cJSON_h +#define cJSON_h #ifdef __cplusplus extern "C" @@ -119,10 +122,20 @@ extern cJSON *cJSON_CreateFloatArray(const float *numbers,int count); extern cJSON *cJSON_CreateDoubleArray(const double *numbers,int count); extern cJSON *cJSON_CreateStringArray(const char **strings,int count); -/* Append item to the specified array/object. */ +/* Append item to the specified array. */ extern void cJSON_AddItemToArray(cJSON *array, cJSON *item); -extern void cJSON_AddItemToObject(cJSON *object, - const char *string, cJSON *item); + +/* Append item to the specified object. */ +extern cJSON *cJSON_AddItemToObject(cJSON *object, const char *name, + cJSON *item); +extern cJSON *cJSON_AddNullToObject (cJSON *object, const char *name); +extern cJSON *cJSON_AddTrueToObject (cJSON *object, const char *name); +extern cJSON *cJSON_AddFalseToObject (cJSON *object, const char *name); +extern cJSON *cJSON_AddBoolToObject (cJSON *object, const char *name, int b); +extern cJSON *cJSON_AddNumberToObject (cJSON *object, const char *name, + double num); +extern cJSON *cJSON_AddStringToObject (cJSON *object, const char *name, + const char *string); /* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't @@ -161,20 +174,6 @@ extern cJSON *cJSON_ParseWithOpts(const char *value, extern void cJSON_Minify(char *json); -/* Macros for creating things quickly. */ -#define cJSON_AddNullToObject(object,name) \ - cJSON_AddItemToObject(object, name, cJSON_CreateNull()) -#define cJSON_AddTrueToObject(object,name) \ - cJSON_AddItemToObject(object, name, cJSON_CreateTrue()) -#define cJSON_AddFalseToObject(object,name) \ - cJSON_AddItemToObject(object, name, cJSON_CreateFalse()) -#define cJSON_AddBoolToObject(object,name,b) \ - cJSON_AddItemToObject(object, name, cJSON_CreateBool(b)) -#define cJSON_AddNumberToObject(object,name,n) \ - cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n)) -#define cJSON_AddStringToObject(object,name,s) \ - cJSON_AddItemToObject(object, name, cJSON_CreateString(s)) - /* When assigning an integer value, it needs to be propagated to valuedouble too. */ #define cJSON_SetIntValue(object,val) \ @@ -184,4 +183,4 @@ extern void cJSON_Minify(char *json); } #endif -#endif /* cJSON__h */ +#endif /* cJSON_h */ |