-void deleteElement(Element *This) {
- switch (GETELEMENTTYPE(This)) {
- case ELEMFUNCRETURN: {
- ElementFunction *ef = (ElementFunction *) This;
- deleteInlineArrayElement(&ef->inputs);
- deleteElementEncoding(&ef->rangeencoding);
- deleteFunctionEncoding(&ef->functionencoding);
- break;
- }
- case ELEMSET: {
- ElementSet *es = (ElementSet *) This;
- deleteElementEncoding(&es->encoding);
- break;
- }
- case ELEMCONST: {
- ElementConst *ec = (ElementConst *) This;
- deleteSet(ec->set);//Client did not create, so we free it
- deleteElementEncoding(&ec->encoding);
- break;
- }
- default:
- ASSERT(0);
- }
- deleteVectorArrayASTNode(GETELEMENTPARENTS(This));
- ourfree(This);
+ElementFunction::~ElementFunction() {
+ deleteInlineArrayElement(&inputs);
+ deleteFunctionEncoding(&functionencoding);
+}
+
+ElementConst::~ElementConst() {
+ deleteSet(set);
+}
+
+Element::~Element() {
+ deleteElementEncoding(&encoding);
+ deleteVectorArrayASTNode(GETELEMENTPARENTS(this));