Понятен ли код функции без комментариев?
Написал функцию, и после того как написал ее, мне она показалась слишком запутанной (сам я ее понимаю), интересно было бы узнать можно ли без контекста и комментариев понять ее смысл, т.к. этот код пойдет на гитлаб:
struct kodik_material_title_t {
char *psz_unique;
char *psz_original;
char *psz_other;
};
int
libkodik_material_title_from_json(json_object const *p_json, struct kodik_material_title_t **pp_object) {
json_object *p_unique, *p_original, *p_other;
json_bool b_json;
int i_result = -11; /* Bad json object */
if (0 != (b_json = json_object_object_get_ex(p_json, "title", &p_unique))) {
if (0 != (b_json = json_object_object_get_ex(p_json, "title_orig", &p_original))) {
if (0 == (i_result = libkodik_material_title_new(pp_object))) {
size_t i_unique = 0, i_original = 0, i_other = 0;
i_unique = json_object_get_string_len(p_unique);
i_original = json_object_get_string_len(p_original);
if (0 != (b_json = json_object_object_get_ex(p_json, "other_title", &p_other))) {
i_other = json_object_get_string_len(p_other);
}
if ( (NULL != ((*pp_object)->psz_unique = calloc(i_unique + 1, sizeof(char)))) &&
NULL != ((*pp_object)->psz_original = calloc(i_original + 1, sizeof(char))) ||
(NULL != (1 != b_json/* no field other_title ??? cmp NULL & NULL else cmp with result of calloc */
? NULL
: ((*pp_object)->psz_other = calloc(i_other + 1, sizeof(char)))))) {
(void) strncpy((*pp_object)->psz_unique, json_object_get_string(p_unique), i_unique);
(void) strncpy((*pp_object)->psz_original, json_object_get_string(p_original), i_original);
if (0 != b_json) {
(void) strncpy((*pp_object)->psz_other, json_object_get_string(p_other), i_other);
}
} else {
i_result = -10;
libkodik_material_title_free(pp_object);
}
}
}
}
return i_result;
}