Synced with original

This commit is contained in:
Daniel Schubert 2016-10-07 20:51:56 +02:00
commit 82cea68696
2 changed files with 2067 additions and 632 deletions

2001
cJSON.c

File diff suppressed because it is too large Load Diff

30
cJSON.h
View File

@ -41,20 +41,30 @@ extern "C"
#define cJSON_StringIsConst 512 #define cJSON_StringIsConst 512
/* The cJSON structure: */ /* The cJSON structure: */
typedef struct cJSON { typedef struct cJSON
struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */ {
struct cJSON *child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
struct cJSON *next;
struct cJSON *prev;
/* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
struct cJSON *child;
int type; /* The type of the item, as above. */ /* The type of the item, as above. */
int type;
char *valuestring; /* The item's string, if type==cJSON_String */ /* The item's string, if type==cJSON_String */
int valueint; /* The item's number, if type==cJSON_Number */ char *valuestring;
double valuedouble; /* The item's number, if type==cJSON_Number */ /* The item's number, if type==cJSON_Number */
int valueint;
/* The item's number, if type==cJSON_Number */
double valuedouble;
char *string; /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */ /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
char *string;
} cJSON; } cJSON;
typedef struct cJSON_Hooks { typedef struct cJSON_Hooks
{
void *(*malloc_fn)(size_t sz); void *(*malloc_fn)(size_t sz);
void (*free_fn)(void *ptr); void (*free_fn)(void *ptr);
} cJSON_Hooks; } cJSON_Hooks;
@ -80,8 +90,8 @@ extern int cJSON_GetArraySize(cJSON *array);
extern cJSON *cJSON_GetArrayItem(cJSON *array, int item); extern cJSON *cJSON_GetArrayItem(cJSON *array, int item);
/* Get item "string" from object. Case insensitive. */ /* Get item "string" from object. Case insensitive. */
extern cJSON *cJSON_GetObjectItem(cJSON *object, const char *string); extern cJSON *cJSON_GetObjectItem(cJSON *object, const char *string);
extern int cJSON_HasObjectItem(cJSON *object,const char *string);
extern cJSON *cJSON_GetDotObjectItem(cJSON *object, const char *string); extern cJSON *cJSON_GetDotObjectItem(cJSON *object, const char *string);
extern int cJSON_HasObjectItem(cJSON *object, const char *string);
/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */ /* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
extern const char *cJSON_GetErrorPtr(void); extern const char *cJSON_GetErrorPtr(void);