libsent/src/voca/voca_malloc.c

説明を見る。
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/vocabulary.h>
00026 
00027 
00033 WORD_INFO *
00034 word_info_new()
00035 {
00036   WORD_INFO *new;
00037 
00038   new = (WORD_INFO *)mymalloc(sizeof(WORD_INFO));
00039   new->mroot = NULL;
00040 
00041   return(new);
00042 }
00043 
00049 void
00050 word_info_free(WORD_INFO *winfo)
00051 {
00052   WORD_ID w;
00053   /* free each word info */
00054   if (winfo->mroot != NULL) mybfree2(&(winfo->mroot));
00055   /* free word info */
00056   free(winfo->wname);
00057   free(winfo->woutput);
00058   free(winfo->wseq);
00059   free(winfo->wlen);
00060   free(winfo->wton);
00061 #ifdef CLASS_NGRAM
00062   free(winfo->cprob);
00063 #endif
00064   free(winfo->is_transparent);
00065   /* free whole */
00066   free(winfo);
00067 }
00068 
00074 void
00075 winfo_init(WORD_INFO *winfo)
00076 {
00077   int n;
00078   
00079   n = MAXWSTEP;
00080   winfo->wlen = (unsigned char *)mymalloc(sizeof(unsigned char)*n);
00081   winfo->wname = (char **)mymalloc(sizeof(char *)*n);
00082   winfo->woutput = (char **)mymalloc(sizeof(char *)*n);
00083   winfo->wseq = (HMM_Logical ***)mymalloc(sizeof(HMM_Logical **)*n);
00084   winfo->wton = (WORD_ID *)mymalloc(sizeof(WORD_ID)*n);
00085 #ifdef CLASS_NGRAM
00086   winfo->cprob = (LOGPROB *)mymalloc(sizeof(LOGPROB)*n);
00087   winfo->cwnum = 0;
00088 #endif
00089   winfo->is_transparent = (boolean *)mymalloc(sizeof(boolean)*n);
00090   winfo->maxnum = n;
00091   winfo->num = 0;
00092   winfo->head_silwid = winfo->tail_silwid = WORD_INVALID;
00093   winfo->maxwn = 0;
00094   winfo->maxwlen = 0;
00095   winfo->errnum = 0;
00096   winfo->errph_root = NULL;
00097 }
00098 
00104 void
00105 winfo_expand(WORD_INFO *winfo)
00106 {
00107   int n;
00108 
00109   n = winfo->maxnum;
00110   if (n >= MAX_WORD_NUM) {
00111     j_error("Error: maximum dict size exceeded limit (%d)\n", MAX_WORD_NUM);
00112   }
00113   n += MAXWSTEP;
00114   if (n > MAX_WORD_NUM) n = MAX_WORD_NUM;
00115 
00116   winfo->wlen = (unsigned char *)myrealloc(winfo->wlen, sizeof(unsigned char)*n);
00117   winfo->wname = (char **)myrealloc(winfo->wname, sizeof(char *)*n);
00118   winfo->woutput = (char **)myrealloc(winfo->woutput, sizeof(char *)*n);
00119   winfo->wseq = (HMM_Logical ***)myrealloc(winfo->wseq, sizeof(HMM_Logical **)*n);
00120   winfo->wton = (WORD_ID *)myrealloc(winfo->wton, sizeof(WORD_ID)*n);
00121 #ifdef CLASS_NGRAM
00122   winfo->cprob = (LOGPROB *)myrealloc(winfo->cprob, sizeof(LOGPROB)*n);
00123 #endif
00124   winfo->is_transparent = (boolean *)myrealloc(winfo->is_transparent, sizeof(boolean)*n);
00125   winfo->maxnum = n;
00126 }
00127 

Juliusに対してTue Dec 26 16:19:29 2006に生成されました。  doxygen 1.5.0