void tp_del(TP,tp_obj self, tp_obj k) { int type = self.type; if (type == TP_DICT) { _tp_dict_del(tp,self.dict.val,k,"tp_del"); return; } tp_raise(,"tp_del(%s,%s)",TP_CSTR(self),TP_CSTR(k)); }
void tp_del(TP,tp_obj self, tp_obj k) { int type = obj_type(self); if (type == TP_DICT) { _tp_dict_del(tp, tp_dict_val(self), k, "tp_del"); return; } tp_raise(,"tp_del(%s,%s)",STR(self),STR(k)); }
/* Function: tp_del * Remove a dictionary entry. * * Removes the key k from self. Also works on classes and objects. * * Note that unlike with Python, you cannot use this to remove list items. */ void tp_del(TP,tp_obj self, tp_obj k) { int type = self.type; if (type == TP_DICT) { _tp_dict_del(tp,self.dict.val,k,"tp_del"); return; } tp_raise(,tp_string("(tp_del) TypeError: object does not support item deletion")); }
void tp_collect(TP) { int n; for (n=0; n<tp->white->len; n++) { tp_obj r = tp->white->items[n]; if (*r.gci.data) { continue; } if (r.type == TP_STRING) { /*this can't be moved into tp_delete, because tp_delete is also used by tp_track_s to delete redundant strings*/ _tp_dict_del(tp,tp->strings,r,"tp_collect"); } tp_delete(tp,r); } tp->white->len = 0; tp_reset(tp); }