|
@@ -137,6 +137,11 @@ typedef int cJSON_bool;
|
|
|
#define CJSON_NESTING_LIMIT 1000
|
|
|
#endif
|
|
|
|
|
|
+/* Precision of double variables comparison */
|
|
|
+#ifndef CJSON_DOUBLE_PRECISION
|
|
|
+#define CJSON_DOUBLE_PRECISION .0000000000000001
|
|
|
+#endif
|
|
|
+
|
|
|
/* returns the version of cJSON as a string */
|
|
|
CJSON_PUBLIC(const char*) cJSON_Version(void);
|
|
|
|
|
@@ -160,7 +165,7 @@ CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON
|
|
|
/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
|
|
|
CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
|
|
|
/* Delete a cJSON entity and all subentities. */
|
|
|
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *c);
|
|
|
+CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
|
|
|
|
|
|
/* Returns the number of items in an array (or object). */
|
|
|
CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
|
|
@@ -174,7 +179,7 @@ CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *st
|
|
|
CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
|
|
|
|
|
|
/* Check if the item is a string and return its valuestring */
|
|
|
-CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item);
|
|
|
+CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
|
|
|
|
|
|
/* These functions check the type of an item */
|
|
|
CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
|
|
@@ -203,16 +208,17 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
|
|
|
/* Create a string where valuestring references a string so
|
|
|
* it will not be freed by cJSON_Delete */
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
|
|
|
-/* Create an object/arrray that only references it's elements so
|
|
|
+/* Create an object/array that only references it's elements so
|
|
|
* they will not be freed by cJSON_Delete */
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
|
|
|
|
|
|
-/* These utilities create an Array of count items. */
|
|
|
+/* These utilities create an Array of count items.
|
|
|
+ * The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
|
|
|
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count);
|
|
|
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);
|
|
|
|
|
|
/* Append item to the specified array/object. */
|
|
|
CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
|
|
@@ -225,7 +231,7 @@ CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJ
|
|
|
CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
|
|
|
CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
|
|
|
|
|
|
-/* Remove/Detatch items from Arrays/Objects. */
|
|
|
+/* Remove/Detach items from Arrays/Objects. */
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
|
|
|
CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
|
|
@@ -244,13 +250,15 @@ CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const ch
|
|
|
/* Duplicate a cJSON item */
|
|
|
CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
|
|
|
/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
|
|
|
-need to be released. With recurse!=0, it will duplicate any children connected to the item.
|
|
|
-The item->next and ->prev pointers are always zero on return from Duplicate. */
|
|
|
+ * need to be released. With recurse!=0, it will duplicate any children connected to the item.
|
|
|
+ * The item->next and ->prev pointers are always zero on return from Duplicate. */
|
|
|
/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
|
|
|
* case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
|
|
|
CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
|
|
|
|
|
|
-
|
|
|
+/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings.
|
|
|
+ * The input pointer json cannot point to a read-only address area, such as a string constant,
|
|
|
+ * but should point to a readable and writable adress area. */
|
|
|
CJSON_PUBLIC(void) cJSON_Minify(char *json);
|
|
|
|
|
|
/* Helper functions for creating and adding items to an object at the same time.
|