struct rmsummary *json_to_rmsummary(struct jx *j) { if(!j || !jx_istype(j, JX_OBJECT)) return NULL; struct rmsummary *s = rmsummary_create(-1); struct jx_pair *head = j->u.pairs; while(head) { if(!jx_istype(head->key, JX_STRING)) continue; char *key = head->key->u.string_value; struct jx *value = head->value; if(jx_istype(value, JX_STRING)) { rmsummary_assign_char_field(s, key, value->u.string_value); } else if(jx_istype(value, JX_INTEGER)) { rmsummary_assign_int_field(s, key, value->u.integer_value); } else if(jx_istype(value, JX_ARRAY)) { int64_t number; int status = json_number_of_array(value, key, &number); if(status) { rmsummary_assign_int_field(s, key, number); } } head = head->next; } return s; }
/* set autolabel per resource. */ int category_enable_auto_resource(struct category *c, const char *resource_name, int autolabel) { return rmsummary_assign_int_field(c->autolabel_resource, resource_name, autolabel); }