/** * @file dfa_malloc.c * * * @brief 文法構造体のメモリ割り付けと開放 * * * * @brief Memory allocation of grammar information * * * @author Akinobu LEE * @date Tue Feb 15 14:16:03 2005 * * $Revision: 1.4 $ * */ /* * Copyright (c) 1991-2012 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology * All rights reserved */ #include #include /** * Allocate a new grammar information data structure and initialize it. * * @return pointer to the newly allocated DFA_INFO. */ DFA_INFO * dfa_info_new() { DFA_INFO *new; new = (DFA_INFO *)mymalloc(sizeof(DFA_INFO)); init_dfa_cp(new); new->term.tw = NULL; new->term.term_num = new->term_num = 0; new->maxstatenum = 0; new->is_sp = NULL; new->sp_id = WORD_INVALID; return new; } /** * Free all informations in the DFA_INFO. * * @param dfa [i/o] grammar information data to be freed. */ void dfa_info_free(DFA_INFO *dfa) { DFA_ARC *arc, *tmparc; int i; /* free category pair info */ free_dfa_cp(dfa); /* free terminal info */ if (dfa->term_num != 0) { free_terminfo(&(dfa->term)); } /* free arcs */ if (dfa->maxstatenum > 0) { for(i=0;istate_num;i++) { arc=dfa->st[i].arc; while(arc != NULL) { tmparc = arc->next; free(arc); arc = tmparc; } } /* free states */ free(dfa->st); } if (dfa->is_sp != NULL) free(dfa->is_sp); /* free whole */ free(dfa); }