/* Frees perframe equation structure */ void free_per_frame_eqn(per_frame_eqn_t * per_frame_eqn) { if (per_frame_eqn == NULL) return; free_gen_expr(per_frame_eqn->gen_expr); free(per_frame_eqn); }
void free_per_point_eqn(per_point_eqn_t * per_point_eqn) { if (per_point_eqn == NULL) return; free_gen_expr(per_point_eqn->gen_expr); free(per_point_eqn); return; }
/* Frees a function in prefix notation */ int free_prefun_expr(prefun_expr_t * prefun_expr) { int i; if (prefun_expr == NULL) return SUCCESS; /* Free every element in expression list */ for (i = 0 ; i < prefun_expr->num_args; i++) { free_gen_expr(prefun_expr->expr_list[i]); } free(prefun_expr); return SUCCESS; }
/* Frees a tree expression */ int free_tree_expr(tree_expr_t * tree_expr) { if (tree_expr == NULL) return SUCCESS; /* free left tree */ free_tree_expr(tree_expr->left); /* free general expression object */ free_gen_expr(tree_expr->gen_expr); /* Note that infix operators are always stored in memory unless the program exits, so we don't remove them here */ /* free right tree */ free_tree_expr(tree_expr->right); /* finally, free the struct itself */ free(tree_expr); return SUCCESS; }