void tp_delete(TP,tp_obj v) { int type = v.type; if (type == TP_LIST) { _tp_list_free(tp, v.list.val); return; } else if (type == TP_DICT) { _tp_dict_free(tp, v.dict.val); return; } else if (type == TP_STRING) { tp_free(tp, v.string.info); return; } else if (type == TP_DATA) { if (v.data.info->free) { v.data.info->free(tp,v); } tp_free(tp, v.data.info); return; } else if (type == TP_FNC) { tp_free(tp, v.fnc.info); return; } tp_raise(,tp_string("(tp_delete) TypeError: ?")); }
void tp_delete(TP,tp_obj v) { int type = v.type; if (type == TP_LIST) { _tp_list_free(v.list.val); return; } else if (type == TP_DICT) { _tp_dict_free(v.dict.val); return; } else if (type == TP_STRING) { tp_free(v.string.info); return; } else if (type == TP_DATA) { if (v.data.meta && v.data.meta->free) { v.data.meta->free(tp,v); } tp_free(v.data.info); return; } else if (type == TP_FNC) { tp_free(v.fnc.val); return; } tp_raise(,"tp_delete(%s)",STR(v)); }
void tp_gc_deinit(TP) { _tp_list_free(tp->white); _tp_dict_free(tp->strings); _tp_list_free(tp->grey); _tp_list_free(tp->black); }