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

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

?? typemod.c

?? 微軟的基于HMM的人臉識別原代碼, 非常經典的說
?? C
字號:
/* typemod%.c
 *
 *	(C) Copyright Apr 15 1995, Edmond J. Breen.
 *		   ALL RIGHTS RESERVED.
 * This code may be copied for personal, non-profit use only.
 *
 * Type Construction
 */
#include <stdio.h>
#include <stdlib.h>

#include <stdarg.h>
#include "global.h"
#include "func.h"
#include "xalloc.h"
#include "metric.h"
#include "cdecl.h"

#define crt_type()  (type_expr *) xcalloc(sizeof(type_expr), 1)
#define rtn_type(x) xfree(x)


int EiC_gettype(type_expr * t)
{
    if(t)
	return t->obj;
    else
	return -1;
}
void *EiC_getInf(type_expr * t)
{
    if(t)
	return t->u.inf;
    else
	return NULL;
	
}

type_expr *EiC_copytype(type_expr * t)
{
    type_expr *copy = NULL, *h;
    if (t) {
	copy = h = crt_type();
	*h = *t;
	h->alias = 1;
	t = t->nxt;
	while (t) {
	    h->nxt = crt_type();
	    h = h->nxt;
	    *h = *t;
	    h->alias = 1;
	    t = t->nxt;
	}
    }
    return copy;
}

type_expr *EiC_copyBaseType(type_expr * t)
{
    type_expr *copy = NULL, *h;
    while(t && !t->base)
	t = t->nxt;
    if (t) {
	copy = h = crt_type();
	*h = *t;
	h->alias = 1;
	t = t->nxt;
	while (t) {
	    h->nxt = crt_type();
	    h = h->nxt;
	    *h = *t;
	    h->alias = 1;
	    t = t->nxt;
	}
    }
    return copy;
}

type_expr *EiC_transtype(type_expr * t)
{
    type_expr *copy = NULL, *h;
    if (t) {
	copy = h = crt_type();
	*h = *t;
	t = t->nxt;
	while (t) {
	    h->nxt = crt_type();
	    h = h->nxt;
	    *h = *t;
	    t = t->nxt;
	}
    }
    return copy;
}

type_expr *EiC_addtype(unsigned obj, type_expr * t)
{
  extern int EiC_ptrSafe;
  type_expr *new;
  new = crt_type();
  if (new) {
    new->obj = obj;
    new->nxt = t;
  }
  if(obj == t_pointer) {
    if(EiC_ptrSafe) 
      setSafe(new);
    else
      setUnSafe(new);
  }
  return new;
}

type_expr *EiC_catTypes(type_expr *t1, type_expr * t2)
{
    type_expr *p;
    p = t1;
    if(p) {
	while(p->nxt)
	    p = p->nxt;
	p->nxt = t2;
	return t1;
    }
    return t2;
}

int compareConst(type_expr * t1, type_expr *t2)
{
    while (t1 && t2)
	if(!isconst(t1) && isconst(t2))
	    return 0;
	else {
	    t1 = t1->nxt;
	    t2 = t2->nxt;
	}
    return 1;
}

int EiC_compareSafe(type_expr * t1, type_expr *t2)
{
    /* compare  Safe  */
    while (t1 && t2 && (EiC_gettype(t1) == EiC_gettype(t2)))
	if(issafe(t1) != issafe(t2))
	    return 0;
	else {
	    t1 = t1->nxt;
	    t2 = t2->nxt;
	}
    return 1;
}


int EiC_compatibletypes(type_expr *t1, type_expr * t2)
{
    /* A weaker version of sametypes */
    switch(t1->obj) {
    case t_pointer:
    case t_array:     /* do pointers & arrays */
	if(t2->obj != t_pointer && t2->obj != t_array)
	    break;
	if (t1->obj == t_pointer && t2->obj == t_pointer)
	    if (t1->nxt->obj == t_void ||
		t2->nxt->obj == t_void)
		return 1;
	return EiC_sametypes(t1->nxt, t2->nxt);
    } 
    return EiC_sametypes(t1,t2);
}

int EiC_sametypes(type_expr * t1, type_expr * t2)
{
    int i;
    switch(t1->obj) {
    case t_struct: 	/* do structures */
	if (t2->obj != t_struct)
	    return 0;
	else {
	    struct_t *s1, *s2;
	    s1 = (struct_t *) EiC_getInf(t1);
	    s2 = (struct_t *) EiC_getInf(t2);
	    if(s1 == s2)
		return 1;
	    else if (s1->n != s2->n)
		return 0;
	    else {
		for (i = 0; i < s1->n; i++) {
		    if (!EiC_sametypes(s1->type[i], s2->type[i]))
			return 0;
		    if(strcmp(s1->id[i],s2->id[i]) != 0)
			return 0;
		}
	    }
	}
	return 1;
    case t_builtin:
    case t_func:
    case t_funcdec:  /* check functions are compatible */
	if(t2->obj != t_func && t2->obj != t_funcdec &&
	   t2->obj != t_builtin)
	    break;
	return EiC_sameFuncs(t1,t2);
    case t_pointer:
    case t_array:     /* do pointers & arrays */
	if(t2->obj != t1->obj)
	    break;
	if (t1->obj == t_pointer && t2->obj == t_pointer)
	    if (t1->nxt->obj == t_void ||
		t2->nxt->obj == t_void)
		return 1;
	return EiC_sametypes(t1->nxt, t2->nxt);
    case t_int:
    case t_enum:
	if(t2->obj == t_int || t2->obj == t_enum)
	    return 1;

    } 
    while (t1 && t2) {
	if (t1->obj != t2->obj)
	    break;
	t1 = t1->nxt;
	t2 = t2->nxt;
    }
    if (t1 != t2)
	return 0;
    return 1;
}

void EiC_setAsBaseType(type_expr * t)
{
    while (t) {
	t->base = 1;
	t = t->nxt;
    }
}

int EiC_bastype(type_expr * t)
{
    while (t && t->nxt)
	t = t->nxt;
    if(t)
	return t->obj;
    else
	return -1;
}
static void *basinf(type_expr * t)
{
    while (t && t->nxt)
	t = t->nxt;
    if(t)
	return t->u.inf;
    else
	return NULL;
}
static char basalias(type_expr * t)
{
    while (t && t->nxt)
	t = t->nxt;
    if(t)
	return t->alias;
    else
	return -1;
	
}
void EiC_set_bastype(unsigned t, type_expr * typ)
{
    while (typ && typ->nxt)
	typ = typ->nxt;
    if(typ)
	typ->obj = t;
}

void EiC_setaliases(type_expr * t, char a)
{
    while (t) {
	t->alias = a;
	t = t->nxt;
    }
}

static void free1type(type_expr * type)
{
    void EiC_free_func_inf(func_t * f);
    void EiC_free_un_mem(type_expr * e);

    if (!type->alias) {
	int t;
	if ((t = EiC_gettype(type)) == t_func || t == t_funcdec
	    || t== t_builtin)
	    EiC_free_func_inf(EiC_getInf(type));
	else if (t == t_struct || t == t_union)
	    EiC_free_un_mem(type);
    }
    rtn_type(type);
}


void *EiC_freetype(type_expr * t)
{
    type_expr *f;
    if(!t)
	return NULL;
    if (t) 
	do {
	    f = t->nxt;
	    free1type(t);
	    t = f;
	} while (t);
    return NULL;
}

type_expr *EiC_revtype(type_expr * t)
{
    /*
     * reverse the type list by reversing
     * separate-ably the dec-spec and decl 
     * parts.
     *    REM  decl-spec is the base type(s).
     */
    type_expr *h, *r = NULL;
    if (t) {
	while (t && !t->base) {
	    r = EiC_addtype(t->obj, r);
	    setInf(r,EiC_getInf(t));
	    r->alias = t->alias;
	    r->base = t->base;
	    r->qual = t->qual;
	    h = t->nxt;
	    t->alias = 1;
	    free1type(t);
	    t = h;
	}
	if(r) {
	    h = r;
	    while(h->nxt)
		h = h->nxt;
	    h->nxt = t;
	} else
	    r = t;
    }
    return r;
}


     
type_expr *EiC_succType(type_expr * t)
{
  if (t) {
    type_expr *p;
    p = t->nxt;
    free1type(t);
    return p;
  }
  return t;
}

void EiC_exchtype(int obj, type_expr * t)
{
  extern int EiC_ptrSafe;
  t->obj = obj;
  if(obj == t_pointer) {
    if(EiC_ptrSafe)
      setSafe(t);
    else
      setUnSafe(t);
  }
}

int EiC_get_sizeof(type_expr * t)
{
    switch (EiC_gettype(t)) {
      case t_uchar:
      case t_char:   return EiC_metric[m_char][0];
      case t_short:
      case t_ushort: return EiC_metric[m_short][0];
      case t_enum:
      case t_uint:
      case t_int:    return EiC_metric[m_int][0];
      case t_long:
      case t_ulong:  return EiC_metric[m_long][0];
    case t_llong:    return EiC_metric[m_llong][0];
      case t_float:  return EiC_metric[m_float][0];
      case t_double: return EiC_metric[m_double][0];
      case t_lval:   return EiC_get_sizeof(t->nxt);
      case t_pointer:
	if(isunsafe(t))
	  return EiC_metric[m_pointer][0];
	else
	  return sizeof(ptr_t); 
      case t_array:  return EiC_get_sizeof(t->nxt) * getNumElems(t);
      case t_struct:
      case t_union:  return ((struct_t *) EiC_getInf(t))->tsize;

    } return 0;
}

int EiC_get_align(type_expr * t)
{
    switch (EiC_gettype(t)) {
      case t_uchar:
      case t_char:   return EiC_metric[m_char][1];
      case t_short:
      case t_ushort: return EiC_metric[m_short][1];
      case t_uint:
      case t_int:    return EiC_metric[m_int][1];
      case t_long:
      case t_ulong:  return EiC_metric[m_long][1];
      case t_llong:    return EiC_metric[m_llong][1];
      case t_float:  return EiC_metric[m_float][1];
      case t_double: return EiC_metric[m_double][1];
      case t_lval:   return EiC_get_align(t->nxt);
      case t_pointer:return EiC_metric[m_pointer][1];
      case t_array:  return EiC_get_align(t->nxt);
      case t_struct:
      case t_union:  return ((struct_t *) EiC_getInf(t))->align;
    }
    return 0;
}

type_expr *EiC_getcontype(type_expr * t1, type_expr * t2)
{
    if (t1 == NULL)
	return EiC_copytype(t2);
    else
	return t1;
}











?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久久久久国产越南 | 成人a免费在线看| 91麻豆免费在线观看| 欧美图片一区二区三区| 7777精品伊人久久久大香线蕉完整版| 不卡的电视剧免费网站有什么| 欧美探花视频资源| 久久久国产精品麻豆| 亚洲国产wwwccc36天堂| 国产成人综合亚洲91猫咪| 国产成人av影院| 在线视频中文字幕一区二区| 日韩欧美国产综合| 亚洲欧洲av色图| 免费成人美女在线观看| 97se亚洲国产综合在线| 欧美va在线播放| 一区二区三区在线观看视频| 国产在线播精品第三| 一本大道久久精品懂色aⅴ| 欧美成人一区二区三区片免费| 亚洲男同性视频| 日本在线观看不卡视频| 91在线视频免费观看| 久久这里只精品最新地址| 国产精品国产三级国产| 久久99热99| 555www色欧美视频| 一区二区三区四区在线播放 | 不卡的av电影| 精品免费日韩av| 偷窥少妇高潮呻吟av久久免费| 国产乱子轮精品视频| 欧美人与性动xxxx| 一区二区三区高清在线| 成人影视亚洲图片在线| 日韩一区二区三区四区| 午夜精品福利在线| 欧美体内she精视频| 亚洲人成网站精品片在线观看| 粉嫩在线一区二区三区视频| 精品欧美一区二区在线观看 | aaa欧美色吧激情视频| 欧美一二三四区在线| 一区二区三区色| 色婷婷久久久亚洲一区二区三区| 中文字幕一区日韩精品欧美| 亚洲精品在线网站| 亚洲欧美在线aaa| 国产成人精品亚洲日本在线桃色| 91精品国产综合久久久久久| 亚洲二区在线观看| 欧美色视频一区| 亚洲蜜桃精久久久久久久| 99精品在线免费| 中文字幕在线免费不卡| 成人美女在线观看| 国产日韩欧美精品电影三级在线| 国模少妇一区二区三区| 日韩精品一区二区三区视频在线观看 | 欧美一级搡bbbb搡bbbb| 麻豆91在线看| 91精品在线免费观看| 亚洲午夜精品久久久久久久久| 国产精品午夜在线| 久久99精品国产.久久久久| 欧美久久一二区| 日韩精品色哟哟| 精品国产免费人成电影在线观看四季| 免费美女久久99| 精品粉嫩超白一线天av| 国产成a人无v码亚洲福利| 樱桃国产成人精品视频| 久久久夜色精品亚洲| 欧美视频在线一区二区三区| 国产一区在线不卡| 亚洲一区二区三区影院| 欧美大片在线观看一区| 欧洲亚洲精品在线| 成人一区二区三区在线观看| 日韩av网站在线观看| 专区另类欧美日韩| 欧美国产一区视频在线观看| 欧美亚洲日本国产| 美女网站一区二区| 综合久久久久久久| 欧美sm极限捆绑bd| 91搞黄在线观看| 国产 日韩 欧美大片| 日韩av网站在线观看| 一区二区三区.www| 国产精品福利av| 久久中文字幕电影| 欧美一卡二卡三卡四卡| 欧美做爰猛烈大尺度电影无法无天| 国产不卡一区视频| 国产一区二区视频在线| 免费一区二区视频| 日韩国产欧美三级| 水蜜桃久久夜色精品一区的特点| 亚洲视频在线一区观看| 中文成人综合网| 久久久噜噜噜久久人人看 | 99久久精品国产精品久久| 精品亚洲成av人在线观看| 五月婷婷综合在线| 亚洲成人你懂的| 午夜精品久久久久影视| 亚洲国产成人精品视频| 亚洲福利一区二区| 午夜在线电影亚洲一区| 亚洲成人午夜电影| 日韩专区一卡二卡| 美女视频黄免费的久久| 三级成人在线视频| 秋霞国产午夜精品免费视频| 日本va欧美va欧美va精品| 麻豆国产一区二区| 久久99国内精品| 国产高清无密码一区二区三区| 国产馆精品极品| av电影一区二区| 在线观看av一区| 91精品国产一区二区三区蜜臀| 日韩欧美视频在线| www国产精品av| 国产精品久久久一区麻豆最新章节| 中文av字幕一区| 洋洋av久久久久久久一区| 五月天视频一区| 久久99精品久久久| www.亚洲精品| 欧美老肥妇做.爰bbww| 日韩精品一区二区三区三区免费| 国产亚洲一区二区三区四区| 亚洲欧洲av一区二区三区久久| 一区二区三区91| 激情文学综合网| 91小视频在线观看| 91麻豆精品国产91久久久更新时间| 日韩三区在线观看| 国产精品久久久久永久免费观看 | 欧美一级片在线观看| 久久免费视频色| 亚洲乱码国产乱码精品精小说 | 国产精品网友自拍| 亚洲女同一区二区| 青青国产91久久久久久| 成人高清视频免费观看| 欧洲视频一区二区| 国产亚洲欧美色| 午夜国产精品一区| 成人午夜大片免费观看| 欧美日韩国产bt| 日本一区二区久久| 日本欧美在线观看| 99久久精品免费看| 精品国产免费一区二区三区四区| 亚洲区小说区图片区qvod| 激情另类小说区图片区视频区| 91亚洲精品一区二区乱码| 91麻豆精品国产自产在线| 中文av一区二区| 丝袜亚洲精品中文字幕一区| 成人免费视频一区| 精品国产人成亚洲区| 亚洲一区精品在线| 成人激情免费网站| 日韩欧美一区二区免费| 一区二区三区蜜桃| eeuss鲁片一区二区三区| 日韩女优视频免费观看| 亚洲综合av网| 一本一道综合狠狠老| 国产日本亚洲高清| 久久国产剧场电影| 在线播放欧美女士性生活| 亚洲美女视频在线观看| 成人av在线网| 欧美激情一区二区在线| 国产自产v一区二区三区c| 91精品国产综合久久久久久久 | 久久久久久99久久久精品网站| 同产精品九九九| 欧美三级电影在线观看| 一区二区三区中文字幕电影| 粉嫩av亚洲一区二区图片| 久久久精品影视| 狠狠狠色丁香婷婷综合久久五月| 日韩一区二区三区四区| 欧美a级一区二区| 日韩一级二级三级精品视频| 天使萌一区二区三区免费观看| 欧美日韩中文字幕精品| 夜夜精品浪潮av一区二区三区| 色婷婷av一区二区三区之一色屋| 亚洲精品一二三四区| 91国产成人在线| 亚洲bdsm女犯bdsm网站| 777欧美精品|