cStr *dict_add_literal_to_str(cStr *str, cDict *dict, int flags) { Int i; str = string_add_chars(str, "#[", 2); for (i = 0; i < dict->keys->len; i++) { str = string_addc(str, '['); str = data_add_literal_to_str(str, &dict->keys->el[i], flags); str = string_add_chars(str, ", ", 2); str = data_add_literal_to_str(str, &dict->values->el[i], flags); str = string_addc(str, ']'); if (i < dict->keys->len - 1) str = string_add_chars(str, ", ", 2); } return string_addc(str, ']'); }
cStr *string_handled (cStr *str, cData *data, int flags) { HandledFrob *h = HANDLED_FROB(data); cData d; str = string_addc (str, '<'); d.type = OBJNUM; d.u.objnum = h->cclass; str = data_add_literal_to_str(str, &d, flags); str = string_add_chars(str, ", ", 2); str = data_add_literal_to_str(str, &h->rep, flags); str = string_add_chars(str, ", ", 2); d.type = SYMBOL; d.u.symbol = h->handler; str = data_add_literal_to_str(str, &d, flags); return string_addc(str, '>'); }