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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cdecl.c

?? 微軟的基于HMM的人臉識別原代碼, 非常經典的說
?? C
?? 第 1 頁 / 共 4 頁
字號:
    {
	struct_t * S;
	int n;
	S = EiC_getInf(type);
	n = S->n;
	S->n = 1;  /* force initialisation of first member only */	
	initstruct(type,addr,lev+1);
	S->n = n;
    }
	break;
      default:
	assign_var(type, *addr,0); break;
    }
}

static void initstruct(type_expr * type, void **addr, int lev)
{ 
    if(EiC_lexan() == '{' ) {
	do_struct(type,addr,lev);
	if(lev > 1 && EiC_lexan() != ',')
		retractlexan();
	EiC_match('}', " }");
    } else { 
	retractlexan();
	if(lev > 0) 
	    do_struct(type,addr,lev);
	else /* else intializer must be an expression of the same type */
	    assign_var(type,*addr,1);
    }
}

static void do_struct(type_expr *type, void **addr,int lev)
{
    struct_t *S;
    int i;
    S = EiC_getInf(type);
    for(i=0;i<S->n;i++) 
	if(EiC_lexan() != '}') {
	    retractlexan();
	    *addr = (char*)*addr + S->offset[i];
	    initglobal(S->type[i],addr,lev+1);
	    *addr = (char*)*addr - S->offset[i];
	    if(EiC_lexan() != ',' && i != S->n-1)
		retractlexan();
	} else {
	    break;
	}

    retractlexan();

}

static int dostrlit(void ** addr,int ln, int sln, char * str)
{    /*
      * parse eg. char a[] = "hello world";
      * or  char a[5] = "hello world";
      */    
    xmark(str,eicgstring); /* mark for garbage collector */
    if(ln) {
	if(sln >= ln)
	    EiC_warningerror("Array of chars is too long");
    } else {
	ln = sln+1; /* allow for null at end */
	*addr = xrealloc(*addr,ln);
    }
   if(sln < ln)
	memcpy(*addr,str,sln+1);
   else
       memcpy(*addr,str,ln);
	
    return ln;
}

static int initarray(type_expr * type, void ** addr, int size, int lev)
{
    static int INCREMENT;
    
    if(EiC_gettype(type) == t_array) {
	int t,tok,s;
	if((tok =EiC_lexan()) == '{') {
	    t = EiC_get_sizeof(type);
	    if(lev == 0) 
		INCREMENT = t == 0 ? EiC_get_sizeof(nextType(type)): 0;
	    s = do_array(nextType(type),addr,t,lev,INCREMENT);
	    if(t == 0) {
		int sz = EiC_get_sizeof(nextType(type));
		if(sz)
		    t = s/sz;
		else
		    EiC_error("Ilegal array domain in initialisation");
		setNumElems(type,t);
	    }
	    EiC_match('}'," }");
	} else if(tok == STR) { /* handle string literals */
	    if(EiC_gettype(nextType(type)) == t_char) {
		size_t sln;
		t = EiC_get_sizeof(type);
		sln = (char*)token->Val.p.ep - (char*)token->Val.p.p - 1;
		s = dostrlit(addr,t,sln,token->Val.p.p);
		if(lev == 0 && t == 0)
		    setNumElems(type,s);
	    }else
		EiC_error("Illegal initialisation");
	} else{
	    retractlexan();
	    if(lev > 0) /* lev indicates a recusive call */
		size = do_array(nextType(type),addr,size,lev,INCREMENT);
	    else 
		EiC_error("missing { in initialisation of an array");
	}
    } else
	initglobal(type,addr,lev+1);
    return size;
}

static int do_array(type_expr *type, void ** addr, int size, int lev, int inc)
{

    int n = 0;
    while(EiC_lexan() != '}') {
	retractlexan();
	if(n >= size) {
	    if(inc) {
		size += inc;
		*addr = xrealloc(*addr, size);
		memset((char*)*addr + size - inc, 0, inc);
	    } else {
		if(size)
		    EiC_error("Too many initialisers");
		else
		    EiC_error("Illegal domain for initialisation");
	    }
	}
	*addr = (char*)*addr + n;
	size = initarray(type,addr, size,lev+1);
	*addr = (char*)*addr - n;
	n += EiC_get_sizeof(type);
	if (EiC_lexan() != ',') 
	    break;
	    
    } 
    retractlexan();
    return size;
}

static void assign_var(type_expr *type, void *addr,int allow)
{
    int t;
    token_t e1,e2;
    void *EiC_getaddress(token_t *);
    

    EiC_inittoken(&e2);
    EiC_assign_expr(&e2);

#if 0
    if(IsTemp(e2.Type))
	EiC_clearTempories();
#endif
    
    t = EiC_gettype(type);

    if (isconst(e2.Type)) {
	e1.Type = type;
	EiC_castconst(&e2,&e1,0);
	switch(t) {
	  case t_char:  
	  case t_uchar:    *(char*)addr = e2.Val.ival; break;
	  case t_short:
	  case t_ushort:  *(short*)addr = e2.Val.ival; break;
	  case t_int:
	  case t_uint:     *(int *)addr = e2.Val.ival; break;
	  case t_long:
	  case t_ulong:    *(long*)addr = e2.Val.lval; break;
	case t_llong:      *(eic_llong*)addr = e2.Val.llval; break;
	  case t_float:   *(float*)addr = e2.Val.dval; break;
	  case t_double: *(double*)addr = e2.Val.dval; break;
	  case t_pointer: 
	    if(EiC_S_LEVEL == 1 && EiC_gettype(e2.Type) == t_pointer
	       && EiC_gettype(nextType(e2.Type)) == t_char
               && !e2.Sym) 
		/* got string */
		if(e2.Val.p.p)
		    EiC_SaveGlobalString(&e2.Val.p);
	    if(issafe(type))
	       *(ptr_t*)addr = e2.Val.p;
	    else
	       *(void**)addr = e2.Val.p.p;
	    break;
	    
	  default:
	    EiC_error("Unknown initialiserXXX");
	}
    } else if(allow) {
	val_t h;
	token_t e3;
	EiC_inittoken(&e3);
	e3.Type = type;
	EiC_output(&e2);
	EiC_castvar(&e2,&e3,0);	
	if (t == t_struct || t == t_union) 
	    structUnionCode(E1,&e2);
	h = E1->Val;
	E1->Val = E1->Sym->val;
	EiC_concode(&E1->Code,&e2.Code);
	EiC_do_stooutput(E1);
	E1->Val = h;
    } else {
	if(EiC_GI(&e2) != 0)   /* global or static addresses only are allowed */
	    EiC_error("Illegal initialization: illegal address operation");
	else {
	    /*e1.Type = type;*/
	    /*EiC_output(&e2);*/
	    /*EiC_castvar(&e2,&e1,1);*/
	    if(EiC_gettype(type) == t_pointer || 
	               (e2.Sym && EiC_gettype(e2.Sym->type) == t_ref)) {
		ptr_t p;
		p.sp = p.p = EiC_getaddress(&e2);
		p.ep = (char*)p.p + EiC_get_sizeof(e2.Type);
		if(!EiC_sametypes(e2.Type,type))
		    EiC_warningerror("Suspicious pointer conversion");
		if(issafe(type))
		    *(ptr_t*)addr = p;
		else
		    *(void**)addr = p.p;
		EiC_freecode(&e2.Code);
	    } else
		EiC_error("Expected constant expression as an"
		      " initialiser");
	}
    }
    EiC_freetoken(&e2);
}


static void decl(token_t * e1, int t)
{
    type_expr *P = NULL;
    switch (t) {
      case '*':
	P = pointer();
	dir_decl(e1, EiC_lexan());
	if(P)
	    e1->Type = EiC_catTypes(P,e1->Type);
	break;
      case ID:
      case '(':
	dir_decl(e1, t);
	break;
      default:
	EiC_error("Declarator error");
	retractlexan();
    }

}

static type_expr * pointer(void)
{
    type_expr *t = NULL;
    do {
	t = EiC_addtype(t_pointer,t);
	if(EiC_lexan() == constsym || token->Tok == volatilesym) {
	    if(token->Tok == constsym) {
		setConstp(t);
	    }
	    /*ignore volatilesym for now*/
	    EiC_lexan();
	}
	/* pointer qualifer */
	if(token->Tok == safesym) {
	  unsetPtr(t);

	  setSafe(t);
	  EiC_lexan();
	} else  if(token->Tok == unsafesym) {
	  unsetPtr(t);
	  setUnSafe(t);
	  EiC_lexan();
	}
    } while (token->Tok == '*');
    retractlexan();
    return t;
}

static void dir_decl(token_t * e1, int t)
{
    switch (t) {
      case '(':
	decl(e1, EiC_lexan());
	EiC_match(')', " )");
	f_dir_decl(e1);
	break;
	
      case ID:

	init_ident(e1, EiC_work_tab);
	f_dir_decl(e1);
	break;
	
      default:
	EiC_error("Direct declarator error");
	break;
    }
}

static void f_dir_decl(token_t * e1)
{
    while (1)
	switch (EiC_lexan()) {
	  case '[':
	    array_decl(e1);
	    break;
	  case '(':
	    ff_dir_decl(e1);
	    if(INPARMLIST)
		EiC_remlevel(EiC_S_LEVEL+1);
	    break;
	  default:
	    retractlexan();
	    return;
	}
}

static void ff_dir_decl(token_t * e1)
{

    int h;
    switch ((h=EiC_lexan())) {
      TYPEQUAL:
      STORECLASS:
      TYPESPEC:
	EiC_S_LEVEL++;
	RESET++;
	h = LSP;
	LSP = EiC_ENV->lsp;
	retractlexan();
	EiC_make_func(e1);
	/*
	 * Use INPARMLIST to inform other
	 * modules that the following declarations
	 * are function parameters.
	 */
	INPARMLIST++;
	PRAMHANDLE = e1->Type;

	parm_type_list(EiC_getInf(e1->Type));
	/*
	 * now pseudo reverse the parameter
	 * order.
	 */
	EiC_reset_env_pointers(e1, LSP);
	LSP = h;
	RESET--;

	INPARMLIST--;
	EiC_S_LEVEL--;
	
	break;
      case ')':
	/*
	 * This should really be made illegal, it allows
	 * for function declarations with empty
	 * paramater list, such as:
	 * int f(); Therefore, force an implied t_var argument.
	 */
    {
	type_expr * type;
	EiC_make_func(e1);
	type = EiC_addtype(t_var,NULL);
	EiC_add_func_parm(EiC_getInf(e1->Type), &type, NULL);
	EiC_freetype(type);
    }
	return;
      default:
	if(h == ID)
	    EiC_error("Unknown type '%s': possible "
		  "old C type declaration", token->Val.sym->id);
	else
	    EiC_error("Syntax error");
    }
    EiC_match(')', " )");
}


static void UpDateParmSym(type_expr *ty, symentry_t *sym)
{
    if(EiC_gettype(ty) == t_pointer && EiC_gettype(nextType(ty)) ==
       t_funcdec)
	if(EiC_gettype(sym->type) != t_pointer)
	    sym->type = EiC_addtype(t_pointer,sym->type);
}

static void parm_type_list(func_t * f)
{
    extern int Pclash;
    char * name = NULL;
    token_t e2;
    EiC_inittoken(&e2);
    parm_decl(&e2);
    /*
     * Must watch out for void  as a parameter.
     * The void paramater will have no sym entry.
     */
    if(e2.Val.sym) {
	new_var(&e2);
#if 1
	{
	    void EiC_adjustParam(type_expr **type);
	    EiC_adjustParam(&e2.Sym->type);
	}
#endif

	name = e2.Sym->id;
    } else  /* still must reverse type if needed */
	e2.Type = EiC_revtype(e2.Type);

    EiC_add_func_parm(f, &e2.Type,name);
    if(!e2.Val.sym)
	EiC_freetype(e2.Type);
    else
	UpDateParmSym(getFPty(f,getFNp(f)-1),e2.Val.sym);
    
    if(Pclash)
	Pclash = 0;

    if (EiC_lexan() == ',')
	f_parm_type_list(f);
    else
	retractlexan();
}

static void f_parm_type_list(func_t * f)
{
    if (EiC_lexan() == '.') {
	if (EiC_lexan() == '.')
	    if (EiC_lexan() == '.') {
		type_expr *type;
		type = EiC_addtype(t_var, NULL);
		EiC_add_func_parm(f, &type,NULL);
		EiC_freetype(type);
		return;
	    }
	retractlexan();
	EiC_error("Expected ...");
    } else {
	retractlexan();
	parm_type_list(f);
    }
}

static void fff_parm_decl(token_t *e1);
static void ff_parm_decl(token_t *e1);
static void f_parm_decl(token_t * e1);

static void parm_decl(token_t * e1)
{
    switch (EiC_lexan()) {
      TYPEQUAL:
      STORECLASS:
      TYPESPEC:
	decl_spec(e1);
	f_parm_decl(e1);
	break;
      default:
	if(token->Tok == ID)
	    EiC_error("Unknown type '%s'",token->Val.sym->id);
	else
	    EiC_error("Parameter declaration error");
    }
}


static void f_parm_decl(token_t * e1)
{
    if(EiC_lexan() == '*') {
	type_expr *P = NULL;
	P = pointer();
	ff_parm_decl(e1);
	if(P)
	    e1->Type = EiC_catTypes(P,e1->Type);	
    } else {
	retractlexan();
	ff_parm_decl(e1);
    }
}


static void ff_parm_decl(token_t *e1)
{
    switch(EiC_lexan()) {
      case ID: init_ident(e1, EiC_work_tab);
	f_dir_decl(e1);
	break;
      case '(': fff_parm_decl(e1);
	break;
      case '[': retractlexan();
	f_dir_decl(e1);
	break;
      default: /* null */
	if(token->Tok  != ',' && token->Tok != ')')
	    EiC_error("Parameter declaration error");
	else
	    retractlexan();
	return ;	
    }
}

static void fff_parm_decl(token_t *e1)
{
    switch(EiC_lexan()) {
      TYPEQUAL:
      STORECLASS:
      TYPESPEC:
	retractlexan();
	ff_dir_decl(e1);
	EiC_remlevel(EiC_S_LEVEL+1);
	break;
      default:
	retractlexan();
	f_parm_decl(e1);
	EiC_match(')', " ) "); 
	break;
    }
    f_dir_decl(e1);
}


static void enum_spec(token_t * e1)
{
    e1->Type = EiC_addtype(t_enum, NULL);
    f_enum_spec(e1);
}

static void f_enum_spec(token_t * e1)
{
    int h, t, nxtt;
    h = EiC_work_tab;
    EiC_work_tab = tag_tab;
    switch (EiC_lexan()) {
      case ID:			/* enumeration tag */
	t = EiC_gettype(token->Val.sym->type);
	nxtt = EiC_lexan();
	retractlexan();

	if (nxtt == '{' || t == ID) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久欧美精品sm网站| 另类人妖一区二区av| 日本欧美一区二区| 99在线视频精品| 日韩欧美第一区| 亚洲综合色视频| 成人网页在线观看| 日韩欧美国产1| 午夜电影网一区| 欧美中文字幕一区二区三区 | 国产真实乱偷精品视频免| 91在线观看高清| 国产午夜精品理论片a级大结局 | 亚洲免费观看高清完整版在线观看| 美腿丝袜亚洲三区| 欧美吞精做爰啪啪高潮| 国产精品高潮久久久久无| 国产激情一区二区三区桃花岛亚洲| 欧美一级一区二区| 石原莉奈一区二区三区在线观看| 91在线精品一区二区三区| 国产欧美一区二区在线| 国产真实精品久久二三区| 日韩一级片在线观看| 日韩中文字幕亚洲一区二区va在线| 色综合天天天天做夜夜夜夜做| 国产精品丝袜一区| 国产不卡视频在线播放| 日韩欧美亚洲一区二区| 久久国产生活片100| 欧美一区二区成人6969| 久久精品国产99国产| 欧美成人精品1314www| 久久激情综合网| 国产亚洲成年网址在线观看| 国产精品一区二区在线看| 久久欧美中文字幕| 高清不卡在线观看| 中文字幕一区免费在线观看 | 午夜影院久久久| 欧美变态tickling挠脚心| 国产精品一区久久久久| 99久久婷婷国产综合精品电影| 久久综合狠狠综合久久综合88| 激情深爱一区二区| 久久久久久免费毛片精品| 国产成人免费视频精品含羞草妖精| 久久久久九九视频| 91色综合久久久久婷婷| 亚洲国产精品一区二区www| 欧美一级欧美三级在线观看| 久久99精品久久久久久久久久久久| 久久午夜色播影院免费高清| 成人免费看视频| 亚洲国产综合人成综合网站| 欧美一区二区黄色| 成人免费毛片片v| 一区二区成人在线| 精品88久久久久88久久久| 国产高清久久久| 夜夜精品视频一区二区| 日韩欧美激情一区| 99v久久综合狠狠综合久久| 午夜精品久久久久| 国产日产亚洲精品系列| 欧洲精品中文字幕| 国产精品一区二区三区四区| 亚洲精品视频在线观看免费| 在线播放91灌醉迷j高跟美女 | 国产高清成人在线| 亚洲精品一卡二卡| 亚洲精品一区二区三区蜜桃下载| av在线综合网| 久久99在线观看| 亚洲午夜成aⅴ人片| 欧美精品一区二| 欧美日韩另类国产亚洲欧美一级| 国产·精品毛片| 欧美aaa在线| 一区二区三区在线观看动漫| 久久久久国产精品麻豆ai换脸| 欧美性视频一区二区三区| 国产成人av电影在线观看| 同产精品九九九| 最新欧美精品一区二区三区| 欧美mv日韩mv亚洲| 欧美日韩国产在线播放网站| 岛国精品在线播放| 免费成人你懂的| 亚洲精品乱码久久久久久黑人| 国产日韩成人精品| 精品国产乱码久久久久久牛牛 | 9久草视频在线视频精品| 麻豆视频观看网址久久| 亚洲中国最大av网站| 欧美高清一级片在线观看| 精品久久久久久无| 欧美一区二区三区在线视频| 欧美色网一区二区| 欧洲国内综合视频| 日本乱码高清不卡字幕| 99精品国产91久久久久久| 高清成人免费视频| 丁香婷婷综合网| 国产成人av电影在线| 国产成人免费高清| 成人精品一区二区三区中文字幕| 韩国精品久久久| 国产在线播放一区三区四| 国产一区视频导航| 国内不卡的二区三区中文字幕| 久久精品国产秦先生| 精品一区二区三区免费| 久久精品国产精品亚洲精品 | 色噜噜久久综合| 91无套直看片红桃| a级精品国产片在线观看| 高清不卡在线观看| 91在线免费视频观看| 91免费在线看| 色狠狠一区二区| 欧美专区日韩专区| 欧美一区二区三区免费观看视频| 欧美一区二区三区视频在线观看| 日韩精品一区二区在线| 欧美精品一区二区精品网| 国产日韩精品一区二区浪潮av| 国产精品夫妻自拍| 亚洲综合区在线| 爽好多水快深点欧美视频| 裸体在线国模精品偷拍| 国产大陆精品国产| 91香蕉视频mp4| 欧美人与禽zozo性伦| 欧美一区二区三区爱爱| 国产三级欧美三级日产三级99| **欧美大码日韩| 亚洲成av人片一区二区| 激情伊人五月天久久综合| 成人免费不卡视频| 欧美色手机在线观看| 精品粉嫩aⅴ一区二区三区四区| 国产欧美日韩亚州综合| 亚洲一区二区在线观看视频| 美女视频黄a大片欧美| 成人永久免费视频| 欧美另类z0zxhd电影| 国产性天天综合网| 亚洲高清免费观看| 国产精品99久久久久久似苏梦涵| 色呦呦国产精品| 91精品国产综合久久久蜜臀粉嫩| 国产亚洲成aⅴ人片在线观看 | 1000精品久久久久久久久| 爽爽淫人综合网网站 | 狠狠色综合日日| av在线不卡电影| 欧美成人精品二区三区99精品| 亚洲欧美韩国综合色| 男人的天堂久久精品| 99久久久精品免费观看国产蜜| 欧美一卡2卡3卡4卡| 综合在线观看色| 久久99国产精品尤物| 欧美伊人精品成人久久综合97 | 欧美一区二区三区色| 国产精品久久久久久亚洲毛片 | 色综合天天天天做夜夜夜夜做| 欧美一级午夜免费电影| 亚洲精品视频免费观看| 国产精品99久久久久久有的能看| 欧美人牲a欧美精品| 亚洲欧美日韩中文字幕一区二区三区 | 欧美嫩在线观看| 亚洲精品日日夜夜| 成人av中文字幕| 久久亚洲影视婷婷| 美女一区二区视频| 久久日韩粉嫩一区二区三区| 亚洲国产成人精品视频| av网站一区二区三区| 国产女人水真多18毛片18精品视频 | 韩国欧美国产1区| 欧美一区二区成人| 午夜欧美一区二区三区在线播放| av高清不卡在线| 国产精品欧美一区二区三区| 精品亚洲porn| 日韩三级电影网址| 亚洲成精国产精品女| 欧美亚洲综合久久| 日韩理论片在线| 色哟哟日韩精品| 亚洲裸体在线观看| av中文字幕一区| 亚洲精品免费看| 在线视频一区二区免费| 亚洲欧美国产高清| 欧美在线一区二区三区| 亚洲一区二区三区四区在线|