libsent/src/dfa/dfa_malloc.c

Go to the documentation of this file.
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 }

Generated on Tue Dec 18 15:59:54 2007 for Julius by  doxygen 1.5.4