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

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

?? value.c

?? 開發(fā)板bios源碼 開發(fā)板bios源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
			return 0;
		else return 1;

	case hex:
	case integer:
	case octal:
		if (v1.value.integer < v2.value.integer)
			return -1;
		else if (v1.value.integer == v2.value.integer)
			return 0;
		else return 1;

	case big:
		return bcompare(v1.value.big, v2.value.big);

	default:
		a_assert(0);
		return 0;
	}
}


/******************************************************************************/
/*
 *	If type mismatch, then coerce types to big.
 *	Note: Known bug, casting of negative bigs to floats doesn't work.
 */

static void coerce_types(register value_t* v1, register value_t* v2)
{
#ifdef FLOATING_POINT_SUPPORT
	if (v1->type == floating) {
		v2->type = floating;
		v2->value.floating = (double) v2->value.integer;
		if (v2->type == big)
			v2->value.floating = (double) v2->value.big[BLOW] +
				(double) v2->value.big[BHIGH] * (double) MAXINT;

	} else if (v2->type == floating) {
		v1->type = floating;
		v1->value.floating = (double) v1->value.integer;
		if (v1->type == big)
			v1->value.floating = (double) v1->value.big[BLOW] +
				(double) v1->value.big[BHIGH] * (double) MAXINT;

	} else if (v1->type == big) {
#else
	if (v1->type == big) {
#endif /* FLOATING_POINT_SUPPORT */
		v2->value.big[BLOW] = value_to_integer(v2);
		if (valueNegative(v2))
			v2->value.big[BHIGH] = -1;
		else
			v2->value.big[BHIGH] = 0;
		v2->type = big;

	} else if (v2->type == big) {
		if (valueNegative(v1))
			v1->value.big[BHIGH] = -1;
		else
			v1->value.big[BHIGH] = 0;
		v1->value.big[BLOW] = value_to_integer(v1);
		v1->type = big;


	} else if (v1->type == integer) {
		v2->value.integer = value_to_integer(v2);
		v2->type = integer;

	} else if (v2->type == integer) {
		v1->value.integer = value_to_integer(v1);
		v1->type = integer;

	} else if (v1->type != integer) {
		v2->type = v1->type;

	} else if (v2->type != integer) {
		v1->type = v2->type;

	}
	a_assert(v1->type == v2->type);
}


/******************************************************************************/
/*
 *	Return true if the value is numeric and negative. Otherwise return 0.
 */

int valueNegative(value_t* vp)
{
	switch (vp->type) {
	default:
	case string:
	case bytes:
		return 0;

#ifdef FLOATING_POINT_SUPPORT
	case floating:
		if (vp->value.floating < 0)
			return 1;
		return 0;
#endif

	case flag:
		if ((signed char)vp->value.flag < 0)
			return 1;
		return 0;

	case byteint:
	case percent:
		if ((signed char)vp->value.byteint < 0)
			return 1;
		return 0;

	case shortint:
		if (vp->value.shortint < 0)
			return 1;
		return 0;

	case hex:
	case integer:
	case octal:
		if (vp->value.integer < 0)
			return 1;
		return 0;

	case big:
		if (vp->value.big[BHIGH] < 0)
			return 1;
		return 0;
	}
}

/******************************************************************************/
/*
 *	Return true if the value is numeric and zero. Otherwise return 0.
 */

int valueZero(value_t* vp)
{
	switch (vp->type) {
	default:
	case string:
	case bytes:
		return 0;

#ifdef FLOATING_POINT_SUPPORT
	case floating:
		if (vp->value.floating == 0)
			return 1;
		return 0;
#endif

	case flag:
		if (vp->value.flag == 0)
			return 1;
		return 0;

	case byteint:
	case percent:
		if (vp->value.byteint == 0)
			return 1;
		return 0;

	case shortint:
		if (vp->value.shortint == 0)
			return 1;
		return 0;

	case hex:
	case integer:
	case octal:
		if (vp->value.integer == 0)
			return 1;
		return 0;

	case big:
		if (vp->value.big[BHIGH] == 0 && vp->value.big[BLOW] == 0)
			return 1;
		return 0;
	}
}


/******************************************************************************/
/*
 *	Cast a value to an integer. Cannot be called for floating, non-numerics
 *	or bigs.
 */

static int value_to_integer(value_t* vp)
{
	switch (vp->type) {
	default:
	case string:
	case bytes:
	case big:
#ifdef FLOATING_POINT_SUPPORT
	case floating:
		a_assert(0);
		return -1;
#endif

	case flag:
		return (int) vp->value.flag;

	case byteint:
	case percent:
		return (int) vp->value.byteint;

	case shortint:
		return (int) vp->value.shortint;

	case hex:
	case integer:
	case octal:
		return (int) vp->value.integer;
	}
}


/******************************************************************************/
/*
 *	Convert a value to a text based representation of its value
 */

void valueSprintf(char_t** out, int size, char_t* fmt, value_t vp)
{
	char_t		*src, *dst, *tmp, *dst_start;

	a_assert(out);

	*out = NULL;

	if (! vp.valid) {
		*out = bstrdup(B_L, T("Invalid"));
		return;
	}

	switch (vp.type) {
	case flag:
		if (fmt == NULL || *fmt == '\0') {
			*out = bstrdup(B_L, (vp.value.flag) ? T("true") : T("false"));
		} else {
			fmtAlloc(out, size, fmt, (vp.value.flag) ? T("true") : T("false"));
		}
		break;

#ifdef FLOATING_POINT_SUPPORT
	case floating:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("%f"), vp.value.floating);
		} else {
			fmtAlloc(out, size, fmt, vp.value.floating);
		}
		break;
#endif

	case hex:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("0x%lx"), vp.value.hex);
		} else {
			fmtAlloc(out, size, fmt, vp.value.hex);
		}
		break;

	case big:
		if (*out == NULL) {
			*out = btoa(vp.value.big, NULL, 0);
		} else {
			btoa(vp.value.big, *out, size);
		}
		break;

	case integer:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("%ld"), vp.value.integer);
		} else {
			fmtAlloc(out, size, fmt, vp.value.integer);
		}
		break;

	case octal:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("0%lo"), vp.value.octal);
		} else {
			fmtAlloc(out, size, fmt, vp.value.octal);
		}
		break;

	case percent:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("%d%%"), vp.value.percent);
		} else {
			fmtAlloc(out, size, fmt, vp.value.percent);
		}
		break;

	case byteint:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("%d"), (int) vp.value.byteint);
		} else {
			fmtAlloc(out, size, fmt, (int) vp.value.byteint);
		}
		break;

	case shortint:
		if (fmt == NULL || *fmt == '\0') {
			fmtAlloc(out, size, T("%d"), (int) vp.value.shortint);
		} else {
			fmtAlloc(out, size, fmt, (int) vp.value.shortint);
		}
		break;

	case string:
	case errmsg:
		src = vp.value.string;

		if (src == NULL) {
			*out = bstrdup(B_L, T("NULL"));
		} else if (fmt && *fmt) {
			fmtAlloc(out, size, fmt, src);

		} else {

			*out = balloc(B_L, size);
			dst_start = dst = *out;
			for (; *src != '\0'; src++) {
				if (dst >= &dst_start[VALUE_MAX_STRING - 5])
					break;
				switch (*src) {
				case '\a':	*dst++ = '\\';	*dst++ = 'a';		break;
				case '\b':	*dst++ = '\\';	*dst++ = 'b';		break;
				case '\f':	*dst++ = '\\';	*dst++ = 'f';		break;
				case '\n':	*dst++ = '\\';	*dst++ = 'n';		break;
				case '\r':	*dst++ = '\\';	*dst++ = 'r';		break;
				case '\t':	*dst++ = '\\';	*dst++ = 't';		break;
				case '\v':	*dst++ = '\\';	*dst++ = 'v';		break;
				case '\\':	*dst++ = '\\';	*dst++ = '\\';		break;
				case '"':	*dst++ = '\\';	*dst++ = '\"';		break;
				default:
					if (gisprint(*src)) {
						*dst++ = *src;
					} else {
						fmtAlloc(&tmp, size, T("\\x%02x"),
							(unsigned int) *src);
						gstrcpy(dst, tmp);
						bfreeSafe(B_L, tmp);
						dst += 4;
					}
					break;
				}
			}
			*dst++ = '\0';
		}
		break;

#ifdef UNUSED
	case bytes:
		asrc = vp.value.bytes;

		if (asrc == NULL) {
			*out = bstrdup(B_L, T("NULL"));

		} else if (fmt && *fmt) {
			fmtAlloc(out, size, fmt, asrc);

		} else {

			dst_start = dst;
			for (; *asrc != '\0'; asrc++) {
				if (dst >= &dst_start[VALUE_MAX_STRING - 5])
					break;
				switch (*asrc) {
				case '\a':	*dst++ = '\\';	*dst++ = 'a';		break;
				case '\b':	*dst++ = '\\';	*dst++ = 'b';		break;
				case '\f':	*dst++ = '\\';	*dst++ = 'f';		break;
				case '\n':	*dst++ = '\\';	*dst++ = 'n';		break;
				case '\r':	*dst++ = '\\';	*dst++ = 'r';		break;
				case '\t':	*dst++ = '\\';	*dst++ = 't';		break;
				case '\v':	*dst++ = '\\';	*dst++ = 'v';		break;
				case '\\':	*dst++ = '\\';	*dst++ = '\\';		break;
				case '"':	*dst++ = '\\';	*dst++ = '\"';		break;
				default:
					if (gisprint(*asrc)) {
						*dst++ = *asrc;
					} else {
						fmtAlloc(dst, size,
							T("\\x%02x"), (unsigned int) *asrc);
						dst += 4;
					}
					break;
				}
			}
			*dst++ = '\0';
		}
		break;
#endif

	default:
		a_assert(0);
	}
}

/******************************************************************************/
/*
 *	Print a value to the named file descriptor
 */

void valueFprintf(FILE* fp, char_t* fmt, value_t vp)
{
	char_t	*buf;

	buf = NULL;
	valueSprintf(&buf, VALUE_MAX_STRING, fmt, vp);
	gfputs(buf, fp);
	bfreeSafe(B_L, buf);
	fflush(fp);
}

/******************************************************************************/
/*
 *	Ascii to value conversion
 */

value_t valueAtov(char_t* s, int pref_type)
{
	vtype_t	type;
	value_t			v;
	long			tmp[2], tmp2[2], base[2];
	int				i, len, num;

	a_assert(0 <= pref_type && pref_type < 99);		/* Sanity check */
	a_assert(s);

	v = value_null;
	if (s == NULL) {
		return value_null;
	}

	base[BLOW] = 10;
	base[BHIGH] = 0;
	len = gstrlen(s);

/*
 *	Determine the value type
 */
	type = undefined;
	if (pref_type <= 0) {
		if (gisdigit(*s)) {
			base[BHIGH] = 0;
			if (s[len - 1] == '%') {
				type = percent;
				len --;
				base[BLOW] = 10;
			} else if (*s == '0') {
				if (s[1] == 'x') {
					type = hex;
					s += 2;
					len -= 2;
					base[BLOW] = 16;
				} else if (s[1] == '\0') {
					type = integer;
					base[BLOW] = 10;
				} else {
					type = octal;
					s++;
					len--;
					base[BLOW] = 8;
				}
			} else {
				type = integer;
				base[BLOW] = 10;
			}

		} else {
			if (gstrcmp(s, T("true")) == 0 || gstrcmp(s, T("false")) == 0) {
				type = flag;
			} else if (*s == '\'' && s[len - 1] == '\'') {
				type = string;
				s++;
				len -= 2;
			} else if (*s == '\"' && s[len - 1] == '\"') {
				type = string;
				s++;
				len -= 2;
			} else {
				type = string;
			}
		}
		v.type = type;

	} else
		v.type = pref_type;
	v.valid = 1;

/*
 *	Do the conversion. Always use big arithmetic
 */
	switch (v.type) {
	case hex:
		if (!isdigit(s[0])) {
			if (gtolower(s[0]) >= 'a' || gtolower(s[0]) <= 'f') {
				v.value.big[BLOW] = 10 + gtolower(s[0]) - 'a';
			} else {
				v.value.big[BLOW] = 0;
			}
		} else {
			v.value.big[BLOW] = s[0] - '0';
		}
		v.value.big[BHIGH] = 0;
		for (i = 1; i < len; i++) {
			if (!isdigit(s[i])) {
				if (gtolower(s[i]) < 'a' || gtolower(s[i]) > 'f') {
					break;
				}
				num = 10 + gtolower(s[i]) - 'a';
			} else {
				num = s[i] - '0';
			}
			bmul(tmp, v.value.big, base);
			binit(tmp2, 0, num);
			badd(v.value.big, tmp, tmp2);
		}
		v.value.hex = v.value.big[BLOW];
		break;

	case shortint:
	case byteint:
	case integer:
	case percent:
	case octal:
	case big:
		v.value.big[BHIGH] = 0;
		if (gisdigit(s[0]))
			v.value.big[BLOW] = s[0] - '0';
		else
			v.value.big[BLOW] = 0;
		for (i = 1; i < len && gisdigit(s[i]); i++) {
			bmul(tmp, v.value.big, base);
			binit(tmp2, 0, s[i] - '0');
			badd(v.value.big, tmp, tmp2);
		}
		switch (v.type) {
		case shortint:
			v.value.shortint = (short) v.value.big[BLOW];
			break;
		case byteint:
			v.value.byteint = (char) v.value.big[BLOW];
			break;
		case integer:
			v.value.integer = (int) v.value.big[BLOW];
			break;
		case percent:
			v.value.percent = (char) v.value.big[BLOW];
			break;
		case octal:
			v.value.octal = (int) v.value.big[BLOW];
			break;
		default:
			break;
		}
		break;

#ifdef FLOATING_POINT_SUPPORT
	case floating:
		gsscanf(s, T("%f"), &v.value.floating);
		break;
#endif

	case flag:
		if (*s == 't')
			v.value.flag = 1;
		else v.value.flag = 0;
		break;

	case string:
/*
 *		Note this always ballocs a string
 */
		v = valueString(s, VALUE_ALLOCATE);
		break;

	case bytes:
		v = valueBytes((char*) s, VALUE_ALLOCATE);
		break;

#ifdef UNUSED
	case literal:
		v = value_literal(bstrdup(B_L, s));
		v.value.literal[len] = '\0';
		break;
#endif

	case undefined:
	case symbol:
	default:
		v.valid = 0;
		a_assert(0);
	}
	return v;
}

#endif /* !UEMF */
/******************************************************************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲天堂网| 日韩国产精品久久久| 丁香婷婷综合五月| 中文欧美字幕免费| 99久精品国产| 亚洲第一在线综合网站| 日韩一级免费观看| 狠狠网亚洲精品| 国产精品成人午夜| 欧美人xxxx| 国产成人免费在线观看| 亚洲人成人一区二区在线观看| 色婷婷av一区二区三区软件| 五月激情丁香一区二区三区| 欧美tk—视频vk| 播五月开心婷婷综合| 亚洲一区在线视频| 精品对白一区国产伦| 99re66热这里只有精品3直播| 亚洲成人av在线电影| 久久久久久久久久久久电影| 91网站在线观看视频| 蜜臀91精品一区二区三区| 中文字幕不卡一区| 欧美日韩亚洲国产综合| 国产一区二区三区高清播放| 综合av第一页| 欧美zozozo| 日本精品免费观看高清观看| 五月综合激情婷婷六月色窝| 亚洲国产精品精华液2区45| 欧美性感一区二区三区| 粉嫩一区二区三区性色av| 性感美女极品91精品| 国产精品久久二区二区| 日韩欧美一级精品久久| 色综合久久中文综合久久牛| 国内外精品视频| 婷婷国产在线综合| 中文字幕一区二区三区四区| 日韩三级在线免费观看| 色www精品视频在线观看| 国产成人av电影在线| 日韩国产在线观看| 亚洲激情自拍视频| 日本一区二区不卡视频| 精品日韩在线观看| 欧美日韩精品一区二区在线播放| gogogo免费视频观看亚洲一| 麻豆成人在线观看| 天天亚洲美女在线视频| 一区二区三区中文字幕在线观看| 国产欧美日韩一区二区三区在线观看| 这里只有精品电影| 欧美在线一区二区| 色欧美日韩亚洲| 91老师片黄在线观看| 大白屁股一区二区视频| 久久综合综合久久综合| 三级一区在线视频先锋| 一区二区激情视频| 亚洲女同ⅹxx女同tv| 国产精品久久久久天堂| 国产午夜精品久久久久久久| 久久综合丝袜日本网| 欧美一级国产精品| 欧美一区二区三区视频| 欧美日韩国产系列| 欧美日韩你懂得| 欧美日韩一区二区三区视频| 在线免费观看不卡av| 91久久一区二区| 色综合天天综合狠狠| 91麻豆国产香蕉久久精品| 北条麻妃一区二区三区| 成人av网在线| 91免费看`日韩一区二区| 色综合久久久久久久久久久| 91色porny| 欧美色综合天天久久综合精品| 一本一道久久a久久精品| 色爱区综合激月婷婷| 欧美视频日韩视频| 日韩视频一区在线观看| 精品福利一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 精品久久久久久久久久久院品网 | 亚洲一区二区在线观看视频| 夜夜精品视频一区二区| 丝袜亚洲另类丝袜在线| 热久久免费视频| 国产一区二区三区精品欧美日韩一区二区三区 | 国产亲近乱来精品视频 | 欧美年轻男男videosbes| 欧美精品一二三| 日韩免费一区二区三区在线播放| 久久蜜桃香蕉精品一区二区三区| 日本一二三四高清不卡| 依依成人综合视频| 日本欧美一区二区三区乱码| 国产一区欧美日韩| 风间由美一区二区三区在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 91久久精品午夜一区二区| 欧美日韩一区二区三区不卡| 精品99久久久久久| 亚洲美腿欧美偷拍| 美国精品在线观看| av亚洲产国偷v产偷v自拍| 欧美日韩一区久久| 国产女人aaa级久久久级| 亚洲一区二区av电影| 精品午夜久久福利影院| 成人动漫视频在线| 欧美片网站yy| 国产精品色哟哟| 五月天视频一区| 成人在线视频首页| 欧美蜜桃一区二区三区| 久久精品亚洲乱码伦伦中文| 一区二区三区电影在线播| 久久99深爱久久99精品| 色综合天天做天天爱| 精品不卡在线视频| 午夜激情久久久| 成人三级伦理片| 日韩视频免费观看高清在线视频| 国产精品久久久久久久久免费樱桃 | 久久嫩草精品久久久精品一| 亚洲少妇中出一区| 久久国产尿小便嘘嘘| 在线一区二区视频| 国产视频一区不卡| 青青草原综合久久大伊人精品| 99久久免费视频.com| www国产精品av| 午夜精品影院在线观看| www.亚洲人| 久久久91精品国产一区二区三区| 五月综合激情网| 在线精品观看国产| 国产精品人人做人人爽人人添| 美洲天堂一区二卡三卡四卡视频 | 在线电影国产精品| 亚洲美女屁股眼交3| 国产一区二区不卡在线| 日韩色在线观看| 日本在线不卡视频| 欧美日韩一区二区欧美激情| 一区二区三区四区中文字幕| 成人黄色小视频| 国产午夜精品福利| 国产盗摄一区二区| 久久久噜噜噜久噜久久综合| 久久99热这里只有精品| 欧美一区二区高清| 日本午夜一本久久久综合| 欧美日韩一卡二卡| 午夜日韩在线观看| 欧美日韩久久不卡| 天涯成人国产亚洲精品一区av| 欧美三级日韩三级| 香蕉影视欧美成人| 欧美日韩日日骚| 日本sm残虐另类| 欧美一区二区三区四区五区 | 韩国三级电影一区二区| 日韩一级片在线观看| 美女看a上一区| 2欧美一区二区三区在线观看视频| 青娱乐精品在线视频| 欧美一区中文字幕| 美脚の诱脚舐め脚责91| 久久综合久久综合九色| 床上的激情91.| 亚洲色图一区二区| 欧美日韩一区国产| 蜜桃精品视频在线观看| 久久久久久久电影| a4yy欧美一区二区三区| 亚洲一区二区三区四区在线观看| 欧美日精品一区视频| 男人的天堂亚洲一区| 久久综合九色综合欧美就去吻| 国产一区二区三区四区五区入口 | 免费在线观看一区| 久久―日本道色综合久久| 国产精品白丝av| 亚洲欧洲综合另类| 欧美一区中文字幕| 粉嫩绯色av一区二区在线观看| 亚洲日韩欧美一区二区在线| 欧美日韩成人在线一区| 久久国产精品露脸对白| 中文欧美字幕免费| 欧美老女人第四色| 国产精品1区2区3区在线观看| 亚洲青青青在线视频| 欧美一区二区三级| 成人午夜伦理影院|