static void free_rules(pp_knowledge *k) { size_t r; pp_rule *rule; if (NULL != k->contains_one_rules) { for (r=0; k->contains_one_rules[r].msg!=0; r++) { rule = &(k->contains_one_rules[r]); /* shorthand */ free(rule->link_array); pp_linkset_close(rule->link_set); } for (r=0; k->contains_none_rules[r].msg!=0; r++) { rule = &(k->contains_none_rules[r]); /* shorthand */ free(rule->link_array); pp_linkset_close(rule->link_set); } } for (r = 0; r < k->n_form_a_cycle_rules; r++) pp_linkset_close(k->form_a_cycle_rules[r].link_set); free(k->bounded_rules); free(k->form_a_cycle_rules); free(k->contains_one_rules); free(k->contains_none_rules); }
void post_process_close(Postprocessor *pp) { /* frees up memory associated with pp, previously allocated by open */ if (pp==NULL) return; string_set_delete(pp->sentence_link_name_set); pp_linkset_close(pp->set_of_links_of_sentence); pp_linkset_close(pp->set_of_links_in_an_active_rule); xfree(pp->relevant_contains_one_rules, (1+pp->knowledge->n_contains_one_rules) *(sizeof pp->relevant_contains_one_rules[0])); xfree(pp->relevant_contains_none_rules, (1+pp->knowledge->n_contains_none_rules) *(sizeof pp->relevant_contains_none_rules[0])); pp_knowledge_close(pp->knowledge); free_pp_node(pp); xfree(pp, sizeof(Postprocessor)); }
static void free_link_sets(pp_knowledge *k) { pp_linkset_close(k->domain_starter_links); pp_linkset_close(k->urfl_domain_starter_links); pp_linkset_close(k->domain_contains_links); pp_linkset_close(k->ignore_these_links); pp_linkset_close(k->restricted_links); pp_linkset_close(k->must_form_a_cycle_links); pp_linkset_close(k->urfl_only_domain_starter_links); pp_linkset_close(k->left_domain_starter_links); }
void post_process_free(Postprocessor *pp) { /* frees up memory associated with pp, previously allocated by open */ if (pp == NULL) return; string_set_delete(pp->string_set); pp_linkset_close(pp->set_of_links_of_sentence); pp_linkset_close(pp->set_of_links_in_an_active_rule); free(pp->relevant_contains_one_rules); free(pp->relevant_contains_none_rules); pp->knowledge = NULL; free_pp_node(pp); free(pp->visited); post_process_free_data(&pp->pp_data); free(pp->pp_data.domain_array); free(pp->pp_data.word_links); free(pp); }
void pp_knowledge_close(pp_knowledge *k) { /* clear the memory taken up by k */ xfree((void*)k->starting_link_lookup_table, ((1+k->nStartingLinks)*sizeof(StartingLinkAndDomain))); free_link_sets(k); free_rules(k); pp_linkset_close(k->set_of_links_starting_bounded_domain); string_set_delete(k->string_set); pp_lexer_close(k->lt); xfree((void*)k, sizeof(pp_knowledge)); }
void pp_knowledge_close(pp_knowledge *k) { if (!k) return; /* clear the memory taken up by k */ free(k->starting_link_lookup_table); free_link_sets(k); free_rules(k); pp_linkset_close(k->set_of_links_starting_bounded_domain); string_set_delete(k->string_set); if (NULL != k->lt) pp_lexer_close(k->lt); free(k); }
static void free_rules(pp_knowledge *k) { int r; int rs=sizeof(pp_rule); pp_rule *rule; for (r=0; k->contains_one_rules[r].msg!=0; r++) { rule = &(k->contains_one_rules[r]); /* shorthand */ xfree((void*) rule->link_array, (1+rule->link_set_size)*sizeof(char*)); pp_linkset_close(rule->link_set); } for (r=0; k->contains_none_rules[r].msg!=0; r++) { rule = &(k->contains_none_rules[r]); /* shorthand */ xfree((void *)rule->link_array, (1+rule->link_set_size)*sizeof(char*)); pp_linkset_close(rule->link_set); } for (r=0; r<k->n_form_a_cycle_rules; r++) pp_linkset_close(k->form_a_cycle_rules[r].link_set); xfree((void*)k->bounded_rules, rs*(1+k->n_bounded_rules)); xfree((void*)k->connected_rules, rs); xfree((void*)k->form_a_cycle_rules, rs*(1+k->n_form_a_cycle_rules)); xfree((void*)k->contains_one_rules, rs*(1+k->n_contains_one_rules)); xfree((void*)k->contains_none_rules, rs*(1+k->n_contains_none_rules)); }