9 #include "cJSON/cJSON.h" 45 MCL_DEBUG_ENTRY(
"E_MCL_JSON_TYPE mcl_json_type = <%d>, mcl_json_t **root = <%p>", mcl_json_type, root);
61 MCL_VERBOSE_ENTRY(
"E_MCL_JSON_TYPE mcl_json_type = <%p>, mcl_json_t **root = <%p>", mcl_json_type, root);
65 switch (mcl_json_type)
68 *root = cJSON_CreateArray();
72 *root = cJSON_CreateObject();
76 MCL_VERBOSE(
"mcl_json_type = <%d> is out of valid types.", mcl_json_type);
93 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *array_name = <%p>, mcl_json_t **json_array = <%p>", root, array_name, json_array);
112 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *array_name = <%p>, mcl_json_t **json_array = <%p>", root, array_name, json_array);
124 cJSON_AddItemToObject((cJSON *) root, array_name, *json_array);
140 MCL_DEBUG_ENTRY(
"mcl_json_t *array = <%p>, int index = <%d>, mcl_json_t **item = <%p>", array, index, item);
157 MCL_VERBOSE_ENTRY(
"mcl_json_t *array = <%p>, int index = <%d>, mcl_json_t **item = <%p>", array, index, item);
159 if (cJSON_Array == ((cJSON *) array)->type)
161 (*item) = cJSON_GetArrayItem((cJSON *) array, index);
180 MCL_DEBUG_ENTRY(
"mcl_json_t *array = <%p>, mcl_size_t *size = <%p>", array, size);
196 MCL_VERBOSE_ENTRY(
"mcl_json_t *array = <%p>, mcl_size_t *size = <%p>", array, size);
198 if (cJSON_Array == ((cJSON *) array)->type)
200 *size = (
mcl_size_t) cJSON_GetArraySize((cJSON *) array);
212 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, mcl_json_t **json_object = <%p>", root, object_name, json_object);
232 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, mcl_json_t **json_object = <%p>", root, object_name, json_object);
248 cJSON_AddItemToObject((cJSON *) root, object_name, *json_object);
260 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const char *object_value = <%p>", root, object_name, object_value);
277 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const char *object_value = <%p>", root, object_name, object_value);
280 if ((cJSON_Array == ((cJSON *) root)->type) && (
MCL_NULL == object_name))
283 cJSON *
string = cJSON_CreateString(object_value);
291 cJSON_AddItemToArray((cJSON *) root,
string);
294 else if ((cJSON_Object == ((cJSON *) root)->type) && (
MCL_NULL != object_name))
303 cJSON_AddStringToObject((cJSON *) root, object_name, object_value);
324 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const mcl_size_t number = <%u>", root, object_name, &number);
340 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, char *object_name = <%p>, mcl_size_t number = <%u>", root, object_name, number);
342 code =
_add_number(root, object_name, (
double) number);
352 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const double number = <%f>", root, object_name, &number);
368 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const double number = <%f>", root, object_name, number);
380 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const mcl_bool_t bool_value = <%d>", root, object_name, &bool_value);
396 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, const mcl_bool_t bool_value = <%d>", root, object_name, bool_value);
399 if ((cJSON_Array == ((cJSON *) root)->type) && (
MCL_NULL == object_name))
402 cJSON *json_bool = cJSON_CreateBool(bool_value);
410 cJSON_AddItemToArray((cJSON *) root, json_bool);
413 else if ((cJSON_Object == ((cJSON *) root)->type) && (
MCL_NULL != object_name))
422 cJSON_AddBoolToObject((cJSON *) root, object_name, bool_value);
443 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>", root, object_name);
459 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>", root, object_name);
462 if ((cJSON_Array == ((cJSON *) root)->type) && (
MCL_NULL == object_name))
465 cJSON *json_null = cJSON_CreateNull();
466 cJSON_AddItemToArray(root, json_null);
468 else if ((cJSON_Object == ((cJSON *) root)->type) && (
MCL_NULL != object_name))
477 cJSON_AddNullToObject((cJSON *) root, object_name);
498 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, mcl_json_t *object = <%p>", root, object_name,
object);
517 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, const char *object_name = <%p>, mcl_json_t *object = <%p>", root, object_name,
object);
525 cJSON_AddItemToObject((cJSON *) root, object_name,
object);
541 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, mcl_json_t *object = <%p>", root,
object);
556 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, mcl_json_t *object = <%p>", root,
object);
558 cJSON_AddItemToArray((cJSON *) root,
object);
567 MCL_DEBUG_ENTRY(
"mcl_json_t *json_parent = <%p>, const char *child_name = <%p>, mcl_json_t **json_child = <%p>", json_parent, child_name, json_child);
585 MCL_VERBOSE_ENTRY(
"mcl_json_t *json_parent = <%p>, const char *child_name = <%p>, mcl_json_t **json_child = <%p>", json_parent, child_name, json_child);
588 (*json_child) = cJSON_GetObjectItem((cJSON *) json_parent, child_name);
604 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, mcl_bool_t *result = <%p>", root, result);
624 if (
MCL_NULL != ((cJSON *) root)->child)
637 MCL_DEBUG_ENTRY(
"mcl_json_t *json = <%p>, mcl_int32_t *number_value = <%p>", json, number_value);
654 MCL_VERBOSE_ENTRY(
"mcl_json_t *json = <%p>, mcl_int32_t *number_value = <%p>", json, number_value);
656 if (cJSON_Number == ((cJSON *) json)->type)
658 *number_value = ((cJSON *) json)->valueint;
670 MCL_DEBUG_ENTRY(
"mcl_json_t *json = <%p>, double *double_value = <%p>", json, double_value);
687 MCL_VERBOSE_ENTRY(
"mcl_json_t *json = <%p>, double *double_value = <%p>", json, double_value);
689 if (cJSON_Number == ((cJSON *) json)->type)
691 *double_value = ((cJSON *) json)->valuedouble;
703 MCL_DEBUG_ENTRY(
"mcl_json_t *json = <%p>, mcl_bool_t *bool_value = <%p>", json, bool_value);
720 MCL_VERBOSE_ENTRY(
"mcl_json_t *json = <%p>, mcl_bool_t *bool_value = <%p>", json, bool_value);
722 if (cJSON_True == ((cJSON *) json)->type)
727 else if (cJSON_False == ((cJSON *) json)->type)
741 MCL_DEBUG_ENTRY(
"mcl_json_t *json = <%p>, char **string_value = <%p>", json, string_value);
759 MCL_VERBOSE_ENTRY(
"mcl_json_t *json = <%p>, char **string_value = <%p>", json, string_value);
761 if (cJSON_String == ((cJSON *) json)->type)
778 else if (cJSON_NULL == ((cJSON *) json)->type)
796 MCL_DEBUG_ENTRY(
"mcl_json_t *root = <%p>, char **json_string = <%p>", root, json_string);
813 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, char **json_string = <%p>", root, json_string);
815 *json_string = cJSON_PrintUnformatted((cJSON *) root);
820 MCL_ERROR(
"Either the given json object is invalid or memory can not be allocated for root.");
831 MCL_DEBUG_ENTRY(
"const char *json_string = <%p>, mcl_size_t buffer_size = <%lu>, mcl_json_t **root = <%p>", json_string, buffer_size, root);
849 MCL_VERBOSE_ENTRY(
"const char *json_string = <%p>, mcl_size_t size = <%lu>, mcl_json_t **root = <%p>", json_string, size, root);
853 (*root) = cJSON_Parse(json_string);
857 (*root) = cJSON_ParseWithSize(json_string, size);
873 MCL_DEBUG_ENTRY(
"const mcl_json_t *source_json = <%p>, mcl_json_t **duplicated_json = <%p>", source_json, duplicated_json);
891 MCL_VERBOSE_ENTRY(
"const mcl_json_t *source_json = <%p>, mcl_json_t **duplicated_json = <%p>", source_json, duplicated_json);
893 (*duplicated_json) = cJSON_Duplicate((
const cJSON *) source_json,
MCL_TRUE);
919 cJSON_Delete((cJSON *) *root);
930 MCL_VERBOSE_ENTRY(
"mcl_json_t *root = <%p>, char *object_name = <%p>, mcl_size_t number = <%u>", root, object_name, number);
933 if ((cJSON_Array == ((cJSON *) root)->type) && (
MCL_NULL == object_name))
935 cJSON *json_number = cJSON_CreateNumber(number);
943 cJSON_AddItemToArray((cJSON *) root, json_number);
946 else if ((cJSON_Object == ((cJSON *) root)->type) && (
MCL_NULL != object_name))
953 cJSON_AddNumberToObject((cJSON *) root, object_name, number);
mcl_error_t mcl_json_util_add_bool(mcl_json_t *root, const char *object_name, const mcl_bool_t bool_value)
mcl_error_t json_util_get_string(mcl_json_t *json, char **string_value)
#define MCL_FUNCTION_LEAVE_LABEL
void json_util_add_item_to_array(mcl_json_t *root, mcl_json_t *object)
Assert module header file.
Json utility module header file.
mcl_error_t mcl_json_util_has_child(mcl_json_t *root, mcl_bool_t *result)
mcl_error_t mcl_json_util_add_item_to_array(mcl_json_t *root, mcl_json_t *object)
#define MCL_DEBUG_ENTRY(...)
mcl_error_t mcl_json_util_add_object(mcl_json_t *root, const char *object_name, mcl_json_t *object)
mcl_error_t mcl_json_util_parse(const char *json_string, mcl_size_t buffer_size, mcl_json_t **root)
mcl_error_t mcl_json_util_add_uint(mcl_json_t *root, const char *object_name, const mcl_size_t number)
mcl_error_t json_util_parse(const char *json_string, mcl_size_t size, mcl_json_t **root)
mcl_error_t json_util_get_number_value(mcl_json_t *json, mcl_int32_t *number_value)
String utility module header file.
mcl_error_t json_util_to_string(mcl_json_t *root, char **json_string)
mcl_error_t json_util_get_double_value(mcl_json_t *json, double *double_value)
mcl_error_t json_util_add_object(mcl_json_t *root, const char *object_name, mcl_json_t *object)
void json_util_destroy(mcl_json_t **root)
#define MCL_VERBOSE_LEAVE(...)
mcl_error_t json_util_add_uint(mcl_json_t *root, const char *object_name, const mcl_size_t number)
mcl_error_t mcl_json_util_get_string(mcl_json_t *json, char **string_value)
static mcl_error_t _add_number(mcl_json_t *root, const char *object_name, const double number)
mcl_bool_t json_util_has_child(mcl_json_t *root)
mcl_error_t json_util_start_object(mcl_json_t *root, const char *object_name, mcl_json_t **json_object)
mcl_error_t mcl_json_util_get_array_size(mcl_json_t *array, mcl_size_t *size)
void string_util_memcpy(void *destination, const void *source, mcl_size_t count)
MCL_CORE_EXPORT void mcl_memory_free(void *p)
mcl_error_t mcl_json_util_add_null(mcl_json_t *root, const char *object_name)
mcl_error_t mcl_json_util_start_array(mcl_json_t *root, const char *array_name, mcl_json_t **json_array)
Json utility module interface header file.
#define MCL_ASSERT_NOT_NULL(argument, return_variable)
mcl_error_t json_util_start_array(mcl_json_t *root, const char *array_name, mcl_json_t **json_array)
mcl_error_t mcl_json_util_duplicate(const mcl_json_t *source_json, mcl_json_t **duplicated_json)
mcl_error_t json_util_add_bool(mcl_json_t *root, const char *object_name, const mcl_bool_t bool_value)
mcl_error_t mcl_json_util_get_array_item(mcl_json_t *array, int index, mcl_json_t **item)
mcl_error_t mcl_json_util_get_bool_value(mcl_json_t *json, mcl_bool_t *bool_value)
mcl_error_t json_util_get_array_item(mcl_json_t *array, int index, mcl_json_t **item)
mcl_error_t json_util_get_object_item(mcl_json_t *json_parent, const char *child_name, mcl_json_t **json_child)
void mcl_json_util_library_initialize(void)
mcl_error_t json_util_add_null(mcl_json_t *root, const char *object_name)
mcl_error_t mcl_json_util_initialize(E_MCL_JSON_TYPE mcl_json_type, mcl_json_t **root)
mcl_error_t mcl_json_util_to_string(mcl_json_t *root, char **json_string)
mcl_error_t mcl_json_util_add_double(mcl_json_t *root, const char *object_name, const double number)
mcl_error_t mcl_json_util_add_string(mcl_json_t *root, const char *object_name, const char *object_value)
mcl_error_t json_util_get_array_size(mcl_json_t *array, mcl_size_t *size)
mcl_error_t mcl_json_util_get_object_item(mcl_json_t *json_parent, const char *child_name, mcl_json_t **json_child)
mcl_error_t json_util_duplicate(const mcl_json_t *source_json, mcl_json_t **duplicated_json)
mcl_error_t json_util_get_bool_value(mcl_json_t *json, mcl_bool_t *bool_value)
static cJSON_Hooks cjson_hooks
The same name can not be added in the same level of json object.
#define MCL_NULL_CHAR_SIZE
mcl_error_t json_util_add_string(mcl_json_t *root, const char *object_name, const char *object_value)
#define MCL_MALLOC(bytes)
void json_util_initialize_json_library(void)
mcl_error_t json_util_initialize(E_MCL_JSON_TYPE mcl_json_type, mcl_json_t **root)
General invalid parameter fail.
#define MCL_DEBUG_LEAVE(...)
MCL_CORE_EXPORT void * mcl_memory_malloc(mcl_size_t size)
#define MCL_VERBOSE_ENTRY(...)
mcl_error_t mcl_json_util_start_object(mcl_json_t *root, const char *object_name, mcl_json_t **json_object)
void mcl_json_util_destroy(mcl_json_t **root)
mcl_size_t string_util_strlen(const char *buffer)
Type of the value of the json object does not match the type requested.
Json child which we try to get doesn't exist in the parent Json object.
mcl_error_t json_util_add_double(mcl_json_t *root, const char *object_name, const double number)
mcl_error_t mcl_json_util_get_double_value(mcl_json_t *json, double *double_value)
mcl_error_t mcl_json_util_get_number_value(mcl_json_t *json, mcl_int32_t *number_value)
Memory module interface header file.