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/ngram2.h> 00027 00033 NGRAM_INFO * 00034 ngram_info_new() 00035 { 00036 NGRAM_INFO *new; 00037 00038 new = (NGRAM_INFO *)mymalloc(sizeof(NGRAM_INFO)); 00039 new->bo_wt_1 = NULL; 00040 new->p_2 = NULL; 00041 new->bos_eos_swap = FALSE; 00042 00043 return(new); 00044 } 00045 00046 static void 00047 free_ngram_tuple(NGRAM_TUPLE_INFO *t) 00048 { 00049 if (t->is24bit) { 00050 if (t->bgn_upper) free(t->bgn_upper); 00051 if (t->bgn_lower) free(t->bgn_lower); 00052 } else { 00053 if (t->bgn) free(t->bgn); 00054 } 00055 if (t->num) free(t->num); 00056 if (t->nnid2wid) free(t->nnid2wid); 00057 free(t->prob); 00058 if (t->bo_wt) free(t->bo_wt); 00059 if (t->nnid2ctid_upper) free(t->nnid2ctid_upper); 00060 if (t->nnid2ctid_lower) free(t->nnid2ctid_lower); 00061 } 00067 void 00068 ngram_info_free(NGRAM_INFO *ndata) 00069 { 00070 int i; 00071 /* bin test only */ 00072 /* free word names */ 00073 if (ndata->from_bin) { 00074 free(ndata->wname[0]); 00075 free(ndata->wname); 00076 } else { 00077 WORD_ID w; 00078 for(w=0;w<ndata->max_word_num;w++) { 00079 free(ndata->wname[w]); 00080 } 00081 free(ndata->wname); 00082 } 00083 /* free 2-gram for the 1st pass */ 00084 if (ndata->bo_wt_1) free(ndata->bo_wt_1); 00085 if (ndata->p_2) free(ndata->p_2); 00086 /* free n-gram */ 00087 for(i=0;i<ndata->n;i++) { 00088 free_ngram_tuple(&(ndata->d[i])); 00089 } 00090 /* free name index tree */ 00091 free_ptree(ndata->root); 00092 /* free whole */ 00093 free(ndata); 00094 }