00001 00018 /* 00019 * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University 00020 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 00021 * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology 00022 * All rights reserved 00023 */ 00024 00025 #include <sent/stddefs.h> 00026 #include <sent/dfa.h> 00027 00033 DFA_INFO * 00034 dfa_info_new() 00035 { 00036 DFA_INFO *new; 00037 00038 new = (DFA_INFO *)mymalloc(sizeof(DFA_INFO)); 00039 init_dfa_cp(new); 00040 new->term.tw = NULL; 00041 new->term.term_num = new->term_num = 0; 00042 new->maxstatenum = 0; 00043 new->is_sp = NULL; 00044 new->sp_id = WORD_INVALID; 00045 00046 return new; 00047 } 00048 00054 void 00055 dfa_info_free(DFA_INFO *dfa) 00056 { 00057 DFA_ARC *arc, *tmparc; 00058 int i; 00059 00060 /* free category pair info */ 00061 free_dfa_cp(dfa); 00062 00063 /* free terminal info */ 00064 if (dfa->term_num != 0) { 00065 free_terminfo(&(dfa->term)); 00066 } 00067 /* free arcs */ 00068 if (dfa->maxstatenum > 0) { 00069 for(i=0;i<dfa->state_num;i++) { 00070 arc=dfa->st[i].arc; 00071 while(arc != NULL) { 00072 tmparc = arc->next; 00073 free(arc); 00074 arc = tmparc; 00075 } 00076 } 00077 /* free states */ 00078 free(dfa->st); 00079 } 00080 if (dfa->is_sp != NULL) free(dfa->is_sp); 00081 /* free whole */ 00082 free(dfa); 00083 }