libsent/src/ngram/ngram_malloc.c

説明を見る。
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 }

Juliusに対してThu Jul 23 12:16:23 2009に生成されました。  doxygen 1.5.1