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

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

?? oper.c

?? 使用BorlandC++4.5編譯的一個(gè)MUD客戶端程序
?? C
字號(hào):
head	2.1;access;symbols;locks; strict;comment	@ * @;2.1date	95.10.24.15.46.14;	author tsurace;	state Release;branches;next	1.1;1.1date	95.10.12.19.30.13;	author tsurace;	state Beta;branches;next	;desc@Operator functions.@2.1log@Roll.@text@/* oper.c: Operator functions */
/* $Id: oper.c 1.1 1995/10/12 19:30:13 tsurace Beta tsurace $ */

#include "vt.h"
#include "prmt.h"

#ifdef PROTOTYPES
static int df_eq(Dframe *, Dframe *);
static int df_lt(Dframe *, Dframe *);
static int df_gt(Dframe *, Dframe *);
static void add_data_int(Dframe *, Dframe *, long);
static int incr_data(Dframe *, Dframe *);
static int decr_data(Dframe *, Dframe *);
static void postmod(Dframe *, int, Dframe *, int (*)(), int);
static void premod(Dframe *, int, Dframe *, int (*)(), int);
static void selem_asn(String *, int, int);
#else
static void selem_asn(), postmod(), premod();
#endif

extern Dframe frame_error;

/* Some specialized data routines used by the operators */

static int df_eq(df1, df2)
	Dframe *df1, *df2;
{
	if (df1->type != df2->type)
		return 0;
	switch (df1->type) {
	    case F_INT:
		return df1->Dval == df2->Dval;
	    case F_BPTR:
		return df1->Dbobj == df2->Dbobj;
	    case F_PPTR:
		return df1->Dpnum == df2->Dpnum;
	    case F_RMT:
	    case F_WIN:
	    case F_KEY:
	    case F_FILE:
		return df1->Dunode == df2->Dunode;
	    case F_SPTR:
		return df1->Distr == df2->Distr && df1->Dspos == df2->Dspos;
	    case F_APTR:
		return df1->Darray == df2->Darray && df1->Dapos == df2->Dapos;
	    case F_FPTR:
		return df1->Dfunc == df2->Dfunc;
	    case F_REG:
		return df1->Dreg == df2->Dreg;
	    case F_ASSOC:
		return df1->Dassoc == df2->Dassoc;
	    case F_PLIST:
		return df1->Dplist == df2->Dplist;
	    default:
		return 1;
	}
}

static int df_lt(df1, df2)
	Dframe *df1, *df2;
{
	if (df1->type != df2->type)
		return -1;
	switch (df1->type) {
	    case F_INT:
		return df1->Dval < df2->Dval;
	    case F_APTR:
		return df1->Darray == df2->Darray ?
		       df1->Dapos < df2->Dapos : -1;
	    case F_SPTR:
		return df1->Distr == df2->Distr ?
		       df1->Dspos < df2->Dspos : -1;
	    default:
		return -1;
	}
}

static int df_gt(df1, df2)
	Dframe *df1, *df2;
{
	if (df1->type != df2->type)
		return -1;
	switch (df1->type) {
	    case F_INT:
		return df1->Dval > df2->Dval;
	    case F_APTR:
		return (df1->Darray == df2->Darray) ?
		 df1->Dapos > df2->Dapos : -1;
	    case F_SPTR:
		return (df1->Distr == df2->Distr) ?
		 df1->Dspos > df2->Dspos : -1;
	    default:
		return -1;
	}
}

static void add_data_int(rf, df, num)
	Dframe *rf, *df;
	long num;
{
	rf->type = df->type;
	switch (df->type) {
	    case F_INT:
		rf->Dval = df->Dval + num;
	    Case F_SPTR:
		rf->Distr = df->Distr;
		rf->Dspos = df->Dspos + num;
	    Case F_APTR:
		rf->Darray = df->Darray;
		rf->Dapos = df->Dapos + num;
	    Default:
		*rf = frame_error;
	}
}

static int incr_data(rf, val)
	Dframe *rf, *val;
{
	switch (val->type) {
		case F_INT:	val->Dval++;		return 0;
		case F_APTR:	val->Dapos++;		return 0;
		case F_SPTR:	val->Dspos++;		return 0;
		default:	type_error(rf);		return -1;
	}
}

static int decr_data(rf, val)
	Dframe *rf, *val;
{
	switch (val->type) {
		case F_INT:	val->Dval--;		return 0;
		case F_APTR:	val->Dapos--;		return 0;
		case F_SPTR:	val->Dspos--;		return 0;
		default:	type_error(rf);		return -1;
	}
}

static void postmod(rf, argc, argv, func, addend)
	Dframe *rf, *argv;
	int argc, (*func)(), addend;
{
	Dframe df;

	if (T1 == F_APTR && Ainbounds(Dp1)) {
		*rf = Aelem(Dp1);
		(*func)(rf, &Aelem(Dp1));
	} else if (T1 == F_SPTR) {
		Bcheck(Dp1.Dspos < 0);
		isolate(Dp1.Distr);
		Dset_int(*rf, Soelem(Dp1));
		selem_asn(&Dp1.Sstr, Dp1.Dspos, Soelem(Dp1) + addend);
	} else if (T1 == F_BPTR) {
		(*Dp1.Dbobj)(&df);
		*rf = df;
		if ((*func)(rf, &df) != -1)
			assign_bobj(rf, Dp1.Dbobj, &df);
	} else
		Terror;
}

static void premod(rf, argc, argv, func, addend)
	Dframe *rf, *argv;
	int argc, (*func)(), addend;
{
	if (T1 == F_APTR && Ainbounds(Dp1)) {
		if ((*func)(rf, &Aelem(Dp1)) != -1)
			*rf = Aelem(Dp1);
	} else if (T1 == F_SPTR) {
		Bcheck(Dp1.Dspos < 0);
		isolate(Dp1.Distr);
		selem_asn(&Dp1.Sstr, Dp1.Dspos, Soelem(Dp1) + addend);
		Dset_int(*rf, Soelem(Dp1));
	} else if (T1 == F_BPTR) {
		(*Dp1.Dbobj)(rf);
		if ((*func)(rf, rf) != -1)
			assign_bobj(rf, Dp1.Dbobj, rf);
	} else
		Terror;
}

static void selem_asn(str, pos, val)
	String *str;
	int pos, val;
{
	if (pos >= str->c.l) {
		lcheck(str, pos + 1);
		memset(str->c.s + str->c.l, ' ', pos - str->c.l);
		str->c.s[str->c.l = pos + 1] = '\0';
	}
	if (!val)
		s_term(str, pos);
	else
		str->c.s[pos] = val;
}

/* The operator functions themselves */

PDECL(op_bor)
{
	Tcheck2(F_INT, F_INT);
	Dset_int(*rf, Int1 | Int2);
}

PDECL(op_bxor)
{
	Tcheck2(F_INT, F_INT);
	Dset_int(*rf, Int1 ^ Int2);
}

PDECL(op_band)
{
	Tcheck2(F_INT, F_INT);
	Dset_int(*rf, Int1 & Int2);
}

PDECL(op_eq)
{
	Dset_int(*rf, df_eq(&Dp1, &Dp2));
}

PDECL(op_ne)
{
	Dset_int(*rf, !df_eq(&Dp1, &Dp2));
}

PDECL(op_lt)
{
	int val;

	val = df_lt(&Dp1, &Dp2);
	Tcheckgen(val == -1);
	Dset_int(*rf, val);
}

PDECL(op_le)
{
	int val;

	val = df_gt(&Dp1, &Dp2);
	Tcheckgen(val == -1);
	Dset_int(*rf, !val);
}

PDECL(op_gt)
{
	int val;

	val = df_gt(&Dp1, &Dp2);
	Tcheckgen(val == -1);
	Dset_int(*rf, val);
}

PDECL(op_ge)
{
	int val;

	val = df_lt(&Dp1, &Dp2);
	Tcheckgen(val == -1);
	Dset_int(*rf, !val);
}

PDECL(op_sl)
{
	Tcheck2(F_INT, F_INT);
	Dset_int(*rf, Int1 << Int2);
}

PDECL(op_sr)
{
	Tcheck2(F_INT, F_INT);
	Dset_int(*rf, Int1 >> Int2);
}

PDECL(op_add)
{
	if (T2 == F_INT)
		add_data_int(rf, &Dp1, Int2);
	else if (T1 == F_INT)
		add_data_int(rf, &Dp2, Int1);
	else if (T1 == F_SPTR && T2 == F_SPTR) {
		Dset_sptr(*rf, (Dp1.Srefs == 1) ?
			       Dp1.Distr : istr_rs(Dp1.Srstr), Dp1.Dspos);
		isolate(rf->Distr);
		if (!Sinbounds(*rf))
			rf->Dspos = rf->Slen;
		s_cat(&rf->Sstr, Socstr(Dp2));
	} else
		*rf = frame_error;
	if (rf->type == F_EXCEPT)
		type_errmsg();
}

PDECL(op_sub)
{
	if (T2 == F_INT)
		add_data_int(rf, &Dp1, -Int2);
	else if (T1 == F_APTR && T2 == F_APTR && Dp1.Darray == Dp2.Darray)
		Dset_int(*rf, Dp1.Dapos - Dp2.Dapos);
	else if (T1 == F_SPTR && T2 == F_SPTR && Dp1.Distr == Dp2.Distr)
		Dset_int(*rf, Dp1.Dspos - Dp2.Dspos);
	else
		*rf = frame_error;
	if (rf->type == F_EXCEPT)
		type_errmsg();
}

PDECL(op_mult)
{
	Tcheck2(F_INT, F_INT);
	Dset_int(*rf, Int1 * Int2);
}

PDECL(op_div)
{
	Tcheck2(F_INT, F_INT);
	if (!Int2)
		Prmterror(("Divide-by-zero error"));
	Dset_int(*rf, Int1 / Int2);
}

PDECL(op_mod)
{
	Tcheck2(F_INT, F_INT);
	if (!Int2)
		Prmterror(("Modulo-by-zero error"));
	Dset_int(*rf, Int1 % Int2);
}

PDECL(op_postinc) { postmod(rf, argc, argv, incr_data, 1); }
PDECL(op_postdec) { postmod(rf, argc, argv, decr_data, -1); }
PDECL(op_preinc) { premod(rf, argc, argv, incr_data, 1); }
PDECL(op_predec) { premod(rf, argc, argv, decr_data, -1); }

PDECL(op_not)
{
	Dset_int(*rf, Dffalse(Dp1));
}

PDECL(op_compl)
{
	Tcheck1(F_INT);
	Dset_int(*rf, ~Int1);
}

PDECL(op_neg)
{
	Tcheck1(F_INT);
	Dset_int(*rf, -Int1);
}

PDECL(op_asn)
{
	*rf = Dp2;
	if (T1 == F_APTR) {
		Bcheck(!Awriteok(Dp1));
		extend_array(Dp1.Darray, Dp1.Dapos + 1);
		deref_frame(&Aelem(Dp1));
		Aelem(Dp1) = Dp2;
		ref_frame(&Aelem(Dp1));
	} else if (T1 == F_SPTR && T2 == F_INT) {
		Bcheck(Dp1.Dspos < 0);
		isolate(Dp1.Distr);
		selem_asn(&Dp1.Sstr, Dp1.Dspos, Int2);
	} else if (T1 == F_BPTR)
		assign_bobj(rf, Dp1.Dbobj, &Dp2);
	else
		Terror;
}


@1.1log@Initial revision@text@d2 1a2 1/* $Id$ */@

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍偷拍九九九| 色综合色综合色综合| 欧美激情一区不卡| 欧美亚洲国产一卡| 成人免费看的视频| 欧美日韩第一区日日骚| 日韩电影在线一区| 国产精品入口麻豆原神| 成人一区二区三区视频在线观看| 久久女同性恋中文字幕| 不卡的av在线| 免费观看日韩av| 亚洲精品免费在线| 56国语精品自产拍在线观看| av午夜精品一区二区三区| 手机精品视频在线观看| 中文字幕亚洲一区二区av在线| 制服丝袜亚洲网站| 99re热这里只有精品视频| 韩国欧美国产一区| 久久国产精品第一页| 亚洲综合色视频| 成人免费一区二区三区视频 | 欧美视频精品在线| 色婷婷久久久综合中文字幕| 久久国产麻豆精品| 免费看欧美美女黄的网站| 亚洲午夜三级在线| 国产成人综合在线观看| 一区二区在线观看视频| 欧美激情自拍偷拍| 国产欧美日韩亚州综合| 中文字幕一区二区三区蜜月| 亚洲美女淫视频| 日韩av一区二区三区四区| 国模娜娜一区二区三区| 99国内精品久久| 欧美另类z0zxhd电影| 久久综合九色综合久久久精品综合 | 久久久久国产精品免费免费搜索| 国产色产综合色产在线视频| 国产精品美女www爽爽爽| 中文字幕在线免费不卡| 亚洲成av人片在线观看| 日韩综合在线视频| 国产一区二区成人久久免费影院| 91视视频在线直接观看在线看网页在线看| 91亚洲国产成人精品一区二区三| 精品视频全国免费看| 午夜视频久久久久久| 国产精品综合二区| 欧美综合色免费| 欧美不卡一二三| 亚洲尤物视频在线| 国产成人av电影免费在线观看| 欧美日韩视频一区二区| 久久久久久久久久久久电影| 一区二区三区美女| 国产精品91一区二区| 欧美精品乱人伦久久久久久| 中文字幕在线不卡视频| 久久激情五月婷婷| 欧美日韩精品一二三区| 国产精品免费视频一区| 久久精品99国产精品日本| 在线观看国产一区二区| 国产欧美精品国产国产专区| 免费在线观看视频一区| 在线观看成人小视频| 国产免费成人在线视频| 精品一区二区免费| 欧美日韩一本到| 亚洲另类色综合网站| 国产91对白在线观看九色| 日韩欧美一区二区三区在线| 亚洲一区二区黄色| 一本大道综合伊人精品热热| 欧美极品美女视频| 经典一区二区三区| 日韩一区二区视频| 午夜电影一区二区三区| 欧美亚洲一区二区在线观看| 亚洲视频一二区| 国产成人高清视频| 精品福利一二区| 精品一区二区三区的国产在线播放| 在线成人午夜影院| 亚洲成人三级小说| 欧美性生活影院| 亚洲一区二三区| 欧洲精品一区二区| 亚洲精品乱码久久久久久久久 | 日韩精品影音先锋| 天天综合网 天天综合色| 91久久国产最好的精华液| 亚洲美女淫视频| 色综合久久天天| 亚洲精品网站在线观看| 色久优优欧美色久优优| 最近日韩中文字幕| 成人av网在线| 亚洲视频在线一区| 亚洲成人中文在线| 欧美xxxxxxxx| av电影一区二区| 午夜精品福利一区二区三区av| 久久你懂得1024| 欧美日韩一区二区欧美激情| 日韩视频永久免费| 亚洲美女区一区| 不卡的av中国片| 日韩欧美成人一区二区| 久久久噜噜噜久久中文字幕色伊伊| 欧美日韩亚洲丝袜制服| 福利一区福利二区| 日本午夜一本久久久综合| 免费亚洲电影在线| 不卡在线观看av| 欧美日韩三级一区| 欧美成人aa大片| 色综合久久中文字幕综合网| 免费成人av在线| 亚洲综合激情另类小说区| 精品国精品自拍自在线| 一本一本大道香蕉久在线精品| 久久99精品久久久久| 无码av免费一区二区三区试看| 最新国产の精品合集bt伙计| 国产精品国模大尺度视频| 成人ar影院免费观看视频| 欧美日韩精品一区二区三区四区| 色8久久精品久久久久久蜜| 欧美色图片你懂的| 日本一区二区视频在线观看| 久久精品网站免费观看| 亚洲va欧美va人人爽| 一区二区免费看| 国产日本一区二区| 亚洲视频免费在线观看| 亚洲综合色噜噜狠狠| 久久99精品国产.久久久久| 青娱乐精品视频| 国产盗摄女厕一区二区三区| 成人激情开心网| 在线中文字幕一区| 国产午夜三级一区二区三| 亚洲国产综合人成综合网站| 天天综合色天天| 国产原创一区二区三区| 老汉av免费一区二区三区| 粉嫩高潮美女一区二区三区| 国产99久久久精品| 色婷婷综合在线| 日韩一区二区精品| 国产三级精品三级在线专区| 国产精品不卡一区| 国产精品第五页| 偷拍亚洲欧洲综合| 色94色欧美sute亚洲线路二| 884aa四虎影成人精品一区| 中文字幕一区三区| 麻豆国产欧美日韩综合精品二区 | 久久亚洲精品小早川怜子| 一区二区在线观看免费| 国产一区二区三区四区在线观看| 成人禁用看黄a在线| 欧美体内she精视频| 精品久久一区二区| 久久久久99精品国产片| 亚洲欧美国产77777| 97精品久久久午夜一区二区三区| 国产精品网站在线播放| 成人动漫在线一区| 一二三四社区欧美黄| 欧美裸体bbwbbwbbw| 99re66热这里只有精品3直播| 日本一道高清亚洲日美韩| 亚洲精品精品亚洲| 中文字幕电影一区| 日韩久久久久久| 欧美日韩精品系列| 91免费看片在线观看| 顶级嫩模精品视频在线看| 另类小说视频一区二区| 午夜不卡av免费| 亚洲综合小说图片| 中文字幕中文字幕在线一区| 成人精品视频一区二区三区 | 日本一区二区高清| 日韩va欧美va亚洲va久久| 7777精品伊人久久久大香线蕉 | 一区二区三区精密机械公司| 色综合婷婷久久| 91成人免费在线视频| 白白色亚洲国产精品| 国产精品综合网| 国产老妇另类xxxxx| 久久成人综合网| 蜜臀av一区二区| 麻豆极品一区二区三区|