void noll_graph_free (noll_graph_t * g) { noll_var_array_delete (g->lvars); g->lvars = NULL; noll_var_array_delete (g->svars); g->svars = NULL; if (g->var2node != NULL) free (g->var2node); for (uint_t i = 0; i < g->nodes_size; i++) { if (g->mat[i] != NULL) noll_uid_array_delete (g->mat[i]); if (g->rmat[i] != NULL) noll_uid_array_delete (g->rmat[i]); } free (g->mat); free (g->rmat); noll_edge_array_delete (g->edges); if (g->diff != NULL) for (uint_t i = 0; i < g->nodes_size; i++) { free (g->diff[i]); } free (g->diff); /// g->data freed in formulas if (g->sloc2edge != NULL) free (g->sloc2edge); if (g->share != NULL) noll_share_array_delete (g->share); free (g); }
void noll_form_free (noll_form_t * form) { assert (form != NULL); if (form->lvars != NULL) { noll_var_array_delete (form->lvars); form->lvars = NULL; } if (form->svars != NULL) { noll_var_array_delete (form->svars); form->svars = NULL; } if (form->pure != NULL) { noll_pure_free (form->pure); form->pure = NULL; } if (form->space != NULL) { noll_space_free (form->space); form->space = NULL; } if (form->share != NULL) { noll_share_free (form->share); form->share = NULL; } free (form); }
void noll_pred_binding_delete (noll_pred_binding_t * pdef) { if (pdef == NULL) return; if (pdef->vars != NULL) noll_var_array_delete (pdef->vars); if (pdef->sigma_0 != NULL) noll_space_free (pdef->sigma_0); if (pdef->sigma_1 != NULL) noll_space_free (pdef->sigma_1); if (pdef->base_rules != NULL) noll_pred_rule_array_delete (pdef->base_rules); if (pdef->rec_rules != NULL) noll_pred_rule_array_delete (pdef->rec_rules); free (pdef); }
void noll_pred_rule_delete (noll_pred_rule_t * r) { if (r == NULL) return; if (r->vars != NULL) noll_var_array_delete (r->vars); if (r->pure != NULL) noll_pure_free (r->pure); if (r->pto != NULL) noll_space_free (r->pto); if (r->nst != NULL) noll_space_free (r->nst); if (r->rec != NULL) noll_space_free (r->rec); free (r); }