亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lutil.c

?? 隱馬爾科夫模型工具箱
?? C
字號:
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   SPEECH                    *//*                       | | | | \   RECOGNITION               *//*                       =========   SOFTWARE                  */ /*                                                             *//*                                                             *//* ----------------------------------------------------------- *//* developed at:                                               *//*                                                             *//*      Speech Vision and Robotics group                       *//*      Cambridge University Engineering Department            *//*      http://svr-www.eng.cam.ac.uk/                          *//*                                                             *//* main authors: Valtcho Valtchev, Steve Young,                *//*               Julian Odell, Gareth Moore                    *//* ----------------------------------------------------------- *//*         Copyright:                                          *//*                                                             *//*          1994-2002 Cambridge University                     *//*                    Engineering Department                   *//*                                                             *//*   Use of this software is governed by a License Agreement   *//*    ** See the file License for the Conditions of Use  **    *//*    **     This banner notice must not be removed      **    *//*                                                             *//* ----------------------------------------------------------- *//*      File: LUtil:    General Utility Routines               *//* ----------------------------------------------------------- */char *lutil_version = "!HVER!LUtil:   3.2 [CUED 09/12/02]";char *lutil_vc_id = "$Id: LUtil.c,v 1.1 2002/12/19 16:35:33 ge204 Exp $";#include "HShell.h"#include "HMem.h"#include "HMath.h"#include "HWave.h"#include "HLabel.h"#include "LUtil.h"/* ------------------------ Trace Flags --------------------- */static int trace = 0;#define T_TOP   0001       /* top level tracing */#define T_HDR   0002       /* show header processing */#define T_HASH  0004       /* hash table tracing *//* --------------------- Global Variables ------------------- */static ConfParam *cParm[MAXGLOBS];      /* config parameters */static int nParm = 0;static MemHeap hashTableHeap;           /* heap for hash tables *//* --------------------- Initialisation --------------------- *//* EXPORT -> InitWMap: initialise the module */void InitLUtil(void){   int i;   Register(lutil_version,lutil_vc_id);   nParm = GetConfig("LUTIL", TRUE, cParm, MAXGLOBS);   if (nParm>0){      if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i;   }   CreateHeap(&hashTableHeap,"hashTableHeap",MSTAK,1,0.5,5000,20000);}/* ----------- HLM Header Type and Operations -------------- */typedef struct hdrField{   char * name;   char * value;   struct hdrField * next;} HdrField;typedef struct lmFileHdrRec {   MemHeap *mem;   int numFields;   struct hdrField *list;}LMFileHdrRec;/* NumLines: return num lines remaining in source and rewind it */static int NumLines(Source *src, IOFilter filter){   int count = 0;   while (SkipLine(src)) ++count;   CloseSource(src);   if (InitSource(src->name,src,filter)==FAIL) {      HError(15299, "NumLines: Unable to reopen file '%s'", src->name);   };   return count;}/* HeaderKind: checks end of header tag and returns kind */static LMHdrKind HeaderKind(char *s,int l){   char *p;   int len;   len = strlen(s);   if (s[len-1] == '\r') len--; /* also work if terminated with CR+LF */   if (len>3 && s[0] == '\\' && s[len-1] == '\\') {      s[len-1] = '\0'; p = s+1; len -=2;      UpperCase(p);      if (strcmp(p,"WORDS") == 0) return WMAP_HDR;      if (strcmp(p,"CLASSES") == 0) return CMAP_HDR;      if (strcmp(p,"GRAMS") == 0) return GRAM_HDR;      if (strcmp(p,"FOFS") == 0) return LFOF_HDR;   }   HError(15250,"HeaderKind: Expected data tag at line %d",l);   return 0;}/* GetHeaderStr: extract string from s into buf */static void GetHeaderStr(char *s, char *buf){   int i=0,j=0,k,l=0,len;   len = strlen(s); j = len-1;   while (isspace(s[i]) && i<len) i++;   while (isspace(s[j]) && j>i) j--;   for (k=i; k<=j; k++)      buf[l++] = s[k];   buf[l] = '\0';}/* EXPORT->ReadLMHeader: read a std HLM file header */LMHdrKind ReadLMHeader(MemHeap *mem, Source *src, IOFilter filter,                       LMFileHdr *hdr, int *n){   HdrField *h;   char line[1024],*esign;   char name[MAXSTRLEN],value[MAXSTRLEN];   if (trace&T_HDR)      printf("Reading header:\n");   *hdr = (LMFileHdrRec *)New(mem,sizeof(LMFileHdrRec));   (*hdr)->numFields = 0;   (*hdr)->list = NULL;   if (!ReadLine(src,line))      HError(15213,"ReadLMHeader: File is empty");   while ((esign = strchr(line,'=')) != NULL) {      GetHeaderStr(esign+1,value); *esign = '\0';      GetHeaderStr(line,name);  UpperCase(name);      (*hdr)->numFields ++;      h = (HdrField *)New(mem,sizeof(HdrField));      h->name = CopyString(mem,name);      if (strlen(name) == 0)         HError(15213,"ReadLMHeader: Field %d name is empty", (*hdr)->numFields);      h->value = CopyString(mem,value);      h->next = (*hdr)->list; (*hdr)->list = h;      if (trace&T_HDR)         printf("  %d %s = %s\n",(*hdr)->numFields,name,value);      if (!ReadLine(src,line))         HError(15213,"ReadLMHeader: Unexpected EOF");      if (BlankString(line))         HError(15213,"ReadLMHeader: Line %d is blank", (*hdr)->numFields+1);   }   if ((*hdr)->numFields == 0) {  /* must be headerless */      *n = NumLines(src,filter) + 1;   /* already read 1st line */      return NO_HDR;   } else {      if (!GetLMHdrInt("ENTRIES", n, *hdr))         HError(15213,"ReadLMHeader: No ENTRIES field in header");      return HeaderKind(line,(*hdr)->numFields+1);   }}/* EXPORT->NumLMHdrFields: return number of fields in hdr */int NumLMHdrFields(LMFileHdr hdr){   return hdr->numFields;}/* EXPORT->GetLMHdrStr: get string valued field */char * GetLMHdrStr(char *name, LMFileHdr hdr, Boolean ucase){   HdrField *h;   if (hdr->numFields == 0) return NULL;   for (h=hdr->list; h != NULL; h = h->next) {      if (strcmp(h->name,name) == 0) {         if (ucase) UpperCase(h->value);         return h->value;      }   }   return NULL;}/* EXPORT->GetLMHdrInt: get int valued field */Boolean GetLMHdrInt(char *name, int *value, LMFileHdr hdr){   char *s;   s = GetLMHdrStr(name,hdr,FALSE);   if (s==NULL) return FALSE;   if (strlen(s) == 0) return FALSE;   if (! ( isdigit(s[0]) || s[0] == '-' || s[0] == '+') ) return FALSE;   *value = atoi(s);   return TRUE;}/* ------------------ Miscellaneous Operations ----------------- *//* EXPORT->UpperCase: convert s to upper case */void UpperCase(char *s){   int i;   for (i=0; i<strlen(s); i++) s[i] = toupper(s[i]);}/* EXPORT->BlankString: return true if s is blank */Boolean BlankString(char *s){   int i;   for (i=0; i<strlen(s); i++)      if (!isspace(s[i])) return FALSE;   return TRUE;}/* ------------------ Hash table Operations ----------------- *//* Hash: return a hash value for given label name */static unsigned Hash(char *name, int hashSize){   unsigned hashval;   for (hashval=0; *name != '\0'; name++)      hashval = *name + 31*hashval;   return hashval%hashSize;}/* NewHolder: return a pointer to a new NameHolder */static NameHolder *NewHolder(char *name){   char *s;   NameHolder *p;   int len;   len = strlen(name);   s = (char *)New(&hashTableHeap,len+1);   strcpy(s,name);   p = (NameHolder *) New(&hashTableHeap,sizeof(NameHolder));   p->name = s; p->next = NULL; p->aux = 0; p->wptr = NULL;   return p;}/* EXPORT->Create and initialise a hash table */HashTab *CreateHashTable(int hashSize, char *description){   int i;   HashTab *htab;   htab = (HashTab *) New(&hashTableHeap,sizeof(HashTab));   htab->nameTab =     (NameHolder **) New(&hashTableHeap,hashSize*sizeof(NameHolder *));   for (i=0;i<hashSize;i++) htab->nameTab[i] = NULL;   htab->hashSize = hashSize;   htab->description = description;   htab->numAccesses = 0;   htab->numTests = 0;   return htab;}/* EXPORT->GetNameId: return id of given name */NameId GetNameId(HashTab *htab, char *name, Boolean insert){   int h;   NameHolder *p;   htab->numAccesses++; htab->numTests++;   if ((trace&T_HASH) && htab->numAccesses%100 == 0)      PrintHashTabStats(htab);   h = Hash(name,htab->hashSize); p = htab->nameTab[h];   if (p==NULL) {  /* special case - this slot empty */      if (insert)         p=htab->nameTab[h] = NewHolder(name);      return p;   }   do{             /* general case - look for name */      if (strcmp(name,p->name) == 0)         return p; /* found it */      htab->numTests++;      p = p->next;   } while (p != NULL);   if (insert){    /* name not stored */      p = NewHolder(name);      p->next = htab->nameTab[h];      htab->nameTab[h] = p;   }   return p;}/* EXPORT->PrintHashTabStats: print out statistics on hash table usage */void PrintHashTabStats(HashTab *htab){   printf("Hash Table Statistics for %s:\n", htab->description);   printf("Total Accesses: %ld\n",htab->numAccesses);   printf("Avg Search Len: %f\n",(float)(htab->numTests)/(float)(htab->numAccesses));   PrintHeapStats(&hashTableHeap);   printf("\n"); fflush(stdout);}/* -------------------- Sorting Routines  -------------------- */const static int ci[28]={ 28,0,0,2,1,0,0,1,2,3,0,0,3,0,			   2,0,3,0,0,3,2,1,1,0,0,2,0,0 };static int sign(int r){   int s;   s=(r>0)-(r<0);   return(s);}static void u4srt(int32 *data, int l, int r,		  int (*compar)(const void *, const void *)){   int32 t,p,*p1,*p2,*p3;   int c,o,x,i,j,n;   Boolean sorted;   if (l>=r) return;   n=r-l+1;   switch(n) {    case 2:       p1=data+l; p2=data+r;       if (compar(p1,p2)>0) t=*p1,*p1=*p2,*p2=t;       break;    case 3:       c=((l+r)>>1);       p1=data+l; p2=data+c; p3=data+r;       if (compar(p1,p3)>0)      t=*p1,*p1=*p3,*p3=t; /* p1 < p3 */       if (compar(p2,p1)<0)      t=*p1,*p1=*p2,*p2=t; /* p2 < p1 p3 */       else if (compar(p3,p2)<0) t=*p2,*p2=*p3,*p3=t; /* p1 p3 < p2 */       /* else p1 < p2 < p3 */       break;    default:       c=((l+r)>>1); o=(n>>2);       p1=data+(c-o); p2=data+c; p3=data+(c+o);       x=ci[(14+9*sign(compar(p1,p2))+	     3*sign(compar(p2,p3))+sign(compar(p3,p1)))];       switch(x) {	case 3:  p=*p1; break;	case 1:  p=*p2; break;	default: p=*p3; break;       }       i=l-1;j=r+1; sorted=TRUE;       do {	  j--;	  while (compar(&p,(p1=(data+j)))<0) {	     if (sorted && compar(p1,p1-1)<0) sorted=FALSE;	     j--;	  }	  i++;	  while (compar(&p,(p3=(data+i)))>0) {	     if (sorted && compar(p3+1,p3)<0) sorted=FALSE;	     i++;	  }	  if (i<j) {	     t=data[i]; data[i]=data[j]; data[j]=t; sorted=FALSE;	  }       }       while(i<j);       if (!sorted) {	  u4srt(data,l,j,compar);	  u4srt(data,j+1,r,compar);       }       break;   }}static void usrt(void *base, int l, int r, size_t size,		 int (*compar)(const void *, const void *)){   static char tmp[1024],p[1024];   Boolean sorted;   char *first=base,*p1,*p2,*p3;   int c,o,x,i,j,n;   if (l>=r) return;   n=r-l+1;   switch(n) {    case 2:       p1=first+l*size; p2=first+r*size;       if (compar(p1,p2)>0) {	  memcpy(tmp,p1,size);	  memcpy(p1,p2,size);	  memcpy(p2,tmp,size);       }       break;    case 3:       c=((l+r)>>1);       p1=first+l*size; p2=first+c*size; p3=first+r*size;       if (compar(p1,p3)>0) {	  memcpy(tmp,p1,size);	  memcpy(p1,p3,size);	  memcpy(p3,tmp,size); /* p1 > p3 */       }       if (compar(p2,p1)<0) {	  memcpy(tmp,p1,size);	  memcpy(p1,p2,size);	  memcpy(p2,tmp,size); /* p2 < p1 p3 */       }       else if (compar(p3,p2)<0) {	  memcpy(tmp,p2,size);	  memcpy(p2,p3,size);	  memcpy(p3,tmp,size); /* p1 p3 < p2 */       }       /* else p1 < p2 < p3 */       break;    default:       c=((l+r)>>1)*size; o=(n>>2)*size;       p1=first+(c-o); p2=first+c; p3=first+(c+o);       x=ci[(14+9*sign(compar(p1,p2))+	     3*sign(compar(p2,p3))+sign(compar(p3,p1)))];       switch(x) {	case 3:  memcpy(&p,p3,size); break;	case 1:  memcpy(&p,p1,size); break;	default: memcpy(&p,p2,size); break;       }       i=l-1;j=r+1; sorted=TRUE;       do {	  j--;	  while (compar(&p,(p1=(first+size*j)))<0) {	     if (sorted && compar(p1,p1-size)<0) sorted=FALSE;	     j--;	  }	  i++;	  while (compar(&p,(p3=(first+size*i)))>0) {	     if (sorted && compar(p3+size,p3)<0) sorted=FALSE;	     i++;	  }	  if (i<j) {	     memcpy(tmp,first+size*i,size);	     memcpy(first+size*i,first+size*j,size);	     memcpy(first+size*j,tmp,size); sorted=FALSE;	  }       }       while(i<j);       if (!sorted) {	  usrt(first,l,j,size,compar);	  usrt(first,j+1,r,size,compar);       }       break;   }}void usort(void *base, int n, size_t size,	   int (*compar)(const void *, const void *)){   if (size==sizeof(int32)) u4srt(base,0,n-1,compar);   else usrt(base,0,n-1,size,compar);}/* -------------------- End of LUtil.c ---------------------- */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久亚洲蜜桃| 成人国产精品免费网站| 91精品一区二区三区在线观看| 午夜影院在线观看欧美| 9191国产精品| 国产一区二区91| 136国产福利精品导航| 欧美午夜精品免费| 轻轻草成人在线| 久久精品在这里| 色狠狠一区二区| 五月天激情小说综合| 久久综合色一综合色88| 国产suv一区二区三区88区| 日韩一区在线播放| 欧美亚洲另类激情小说| 日本亚洲最大的色成网站www| 久久亚洲综合色一区二区三区 | 欧美性生活影院| 日韩av不卡在线观看| 国产视频一区二区在线观看| 色婷婷久久一区二区三区麻豆| 日韩精品乱码免费| 久久久久青草大香线综合精品| 91免费看片在线观看| 日本欧美一区二区三区| 国产蜜臀av在线一区二区三区| 色婷婷av一区二区| 国产专区欧美精品| 亚洲一区在线观看网站| 国产亚洲欧美色| 欧美日韩一卡二卡| 国产精品一区二区久久不卡| 亚洲高清视频中文字幕| 国产精品人人做人人爽人人添| 欧美日韩视频专区在线播放| 粉嫩绯色av一区二区在线观看 | 亚洲一区自拍偷拍| 久久久久久免费| 欧美日韩免费不卡视频一区二区三区| 国产一区二区调教| 亚洲线精品一区二区三区| 久久人人97超碰com| 欧美丰满一区二区免费视频| youjizz久久| 美国三级日本三级久久99 | 亚洲最快最全在线视频| 精品美女在线观看| 91福利视频在线| 成人在线综合网| 久久99国产精品免费| 亚洲制服丝袜一区| 亚洲欧美自拍偷拍色图| 国产欧美日韩久久| 日韩一区二区精品| 欧美精品少妇一区二区三区| 成人h精品动漫一区二区三区| 久久99精品一区二区三区| 亚洲va在线va天堂| 一区二区三区四区激情| 亚洲欧美一区二区在线观看| 久久九九久久九九| 久久免费看少妇高潮| 欧美不卡视频一区| 欧美成人艳星乳罩| 91精品国产综合久久久久久漫画| 欧美视频一区二区三区四区 | 大胆欧美人体老妇| 国内精品视频一区二区三区八戒| 日韩国产一二三区| 午夜久久久影院| 亚洲成人免费在线| 午夜久久久久久久久久一区二区| 亚洲精品菠萝久久久久久久| 一区av在线播放| 亚洲综合色婷婷| 亚洲a一区二区| 亚洲风情在线资源站| 午夜在线成人av| 日韩精品福利网| 美女网站色91| 国产一级精品在线| 成人在线综合网站| 91视频www| 欧日韩精品视频| 欧美日韩一区二区三区视频 | 白白色 亚洲乱淫| 91在线播放网址| 在线观看国产91| 欧美日韩aaaaaa| 精品国产乱码久久| 久久综合中文字幕| 亚洲色图第一区| 亚洲一二三四在线| 日本视频中文字幕一区二区三区| 久久精品国产亚洲a| 国产高清视频一区| 色婷婷久久一区二区三区麻豆| 欧美视频自拍偷拍| 日韩精品一区二区三区视频| 国产婷婷色一区二区三区在线| 亚洲欧洲性图库| 视频精品一区二区| 国产精品一二一区| 在线观看免费亚洲| 精品久久久影院| 亚洲色图欧美激情| 免费成人性网站| 99在线精品观看| 欧美乱熟臀69xxxxxx| 久久久久久久久久久久久女国产乱| 国产精品久久久久9999吃药| 亚洲国产va精品久久久不卡综合| 国内久久婷婷综合| 欧美午夜免费电影| 国产清纯在线一区二区www| 亚洲欧美另类久久久精品2019| 热久久免费视频| 一本色道久久综合精品竹菊| 国产精品―色哟哟| 亚洲二区在线视频| 国产激情视频一区二区三区欧美| 欧美综合天天夜夜久久| 久久亚洲春色中文字幕久久久| 亚洲欧美日本韩国| 国内外成人在线视频| 欧美在线视频你懂得| 久久亚洲二区三区| 亚洲电影一级黄| 成人精品免费看| 欧美v国产在线一区二区三区| 一区二区欧美精品| 成人免费av网站| 久久伊人中文字幕| 丝袜亚洲精品中文字幕一区| av网站免费线看精品| 26uuu精品一区二区| 午夜不卡在线视频| 91福利在线观看| 国产精品免费看片| 国产风韵犹存在线视精品| 91精品国产综合久久小美女| 一区二区三区日韩欧美| 成人18精品视频| 久久久久久久国产精品影院| 免费成人av资源网| 欧美嫩在线观看| 亚洲综合免费观看高清完整版在线| 国产91富婆露脸刺激对白| 欧美videossexotv100| 日韩高清一区在线| 欧美日韩国产电影| 亚洲国产毛片aaaaa无费看| 99re这里都是精品| 国产精品欧美一区喷水| 国产成人免费在线观看| 久久久九九九九| 国产露脸91国语对白| 亚洲精品一区在线观看| 秋霞电影网一区二区| 欧美一级二级三级乱码| 三级精品在线观看| 欧美日韩精品福利| 亚洲国产日韩一级| 欧美日本乱大交xxxxx| 五月婷婷欧美视频| 欧美一区二区三区在线观看视频| 婷婷开心久久网| 日韩一区国产二区欧美三区| 免费国产亚洲视频| 欧美tickling网站挠脚心| 九一九一国产精品| 国产欧美日韩久久| 成人精品小蝌蚪| 一区二区三区日韩欧美精品| 欧美色欧美亚洲另类二区| 丝袜脚交一区二区| 欧美videossexotv100| 国产成人午夜高潮毛片| 国产精品污网站| 一本色道**综合亚洲精品蜜桃冫| 一区二区三区.www| 欧美一级日韩免费不卡| 精品一区二区三区久久| 久久精品一区二区| 色先锋资源久久综合| 天堂资源在线中文精品| 欧美一区二区三区在线电影| 国产精品一区二区久久精品爱涩 | 国产精品原创巨作av| 国产精品久久看| 欧美四级电影网| 久久国产婷婷国产香蕉| 国产精品国产精品国产专区不蜜| 日本精品一区二区三区四区的功能| 午夜欧美视频在线观看| 久久久三级国产网站| 欧美最新大片在线看| 久草中文综合在线| 亚洲日穴在线视频|