libsent/src/dfa/dfa_malloc.c

Go to the documentation of this file.
00001 
00017 /*
00018  * Copyright (c) 1991-2006 Kawahara Lab., Kyoto University
00019  * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
00020  * Copyright (c) 2005-2006 Julius project team, Nagoya Institute of Technology
00021  * All rights reserved
00022  */
00023 
00024 #include <sent/stddefs.h>
00025 #include <sent/dfa.h>
00026 
00032 DFA_INFO *
00033 dfa_info_new()
00034 {
00035   DFA_INFO *new;
00036 
00037   new = (DFA_INFO *)mymalloc(sizeof(DFA_INFO));
00038   init_dfa_cp(new);
00039   new->term.tw = NULL;
00040   new->term.term_num = new->term_num = 0;
00041   new->maxstatenum = 0;
00042   new->is_sp = NULL;
00043   new->sp_id = WORD_INVALID;
00044 
00045   return new;
00046 }
00047 
00053 void
00054 dfa_info_free(DFA_INFO *dfa)
00055 {
00056   DFA_ARC *arc, *tmparc;
00057   TERM_INFO *tinfo;
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     tinfo = &(dfa->term);
00066     if (tinfo->tw != NULL) {
00067       for(i=0;i<tinfo->term_num;i++) {
00068         free(tinfo->tw[i]);
00069       }
00070       free(tinfo->tw);
00071       free(tinfo->wnum);
00072     }
00073   }
00074   /* free arcs */
00075   if (dfa->maxstatenum > 0) {
00076     for(i=0;i<dfa->state_num;i++) {
00077       arc=dfa->st[i].arc;
00078       while(arc != NULL) {
00079         tmparc = arc->next;
00080         free(arc);
00081         arc = tmparc;
00082       }
00083     }
00084     /* free states */
00085     free(dfa->st);
00086   }
00087   if (dfa->is_sp != NULL) free(dfa->is_sp);
00088   /* free whole */
00089   free(dfa);
00090 }

Generated on Tue Dec 26 16:16:33 2006 for Julius by  doxygen 1.5.0