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

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

?? prmt4.c

?? 使用BorlandC++4.5編譯的一個MUD客戶端程序
?? C
字號:
/* prmt4.c: Primitive functions: functions, misc, files */
/* $Id: prmt4.c 2.1 1995/10/24 15:46:14 tsurace Release $ */

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

#ifdef PROTOTYPES
static Prog *prog_pcall(int, int);
#endif

extern String ptext;
extern Dframe *dstack, frame_error, suspend_frame;
extern dpos, dsize;
extern Unode rmt_ring, win_ring, key_ring, file_ring;
extern Array *gvars;
extern Estate *events;
extern int loading;
static Unode *dummies[] = { &rmt_ring, &win_ring, &key_ring, &file_ring };
#define ringdummy(t) (dummies[(t) - F_RMT])
static Dframe *ftemp = NULL;
static int tempsize = 0;

/* Generates a temporary program to run a primitive */

static Prog *prog_pcall(pnum, argc)
	int pnum, argc;
{
	Prog *new;

	new = New(Prog);
	new->code = Newarray(Instr, 3);
	new->code[0].type = I_PCALL;
	new->code[1].pc.pnum = pnum;
	new->code[1].pc.argc = argc;
	new->code[2].type = I_STOP;
	new->refs = 1;
	new->avarc = new->reqargs = 0;
	new->lvarc = 0;
	return new;
}

/* Function primitives */

PDECL(pr_find_func)
{
	Func *func;				    
	Tcheck1(F_SPTR);
	func = find_func(Soastr(Dp));
	if (!func || !func->cmd)
		return;
	Dset_elem(*rf, F_FPTR, Dfunc, func);
}

PDECL(pr_find_prmt)
{
	int pnum;

	Tcheck1(F_SPTR);
	pnum = find_prmt(Soastr(Dp));
	if (pnum == -1)
		return;
	Dset_elem(*rf, F_FPTR, Dpnum, pnum);
}

PDECL(pr_func_name)
{
	Tcheck1(F_FPTR);
	Dset_sptr(*rf, istr_s(Dp.Dfunc->name), 0);
}

PDECL(pr_callv)
{
	int fargc = 0, copy, i;
	Dframe *df, arg0;

	Tcheckgen(argv->type != F_FPTR && argv->type != F_PPTR);
	arg0 = argv[0];
	for (i = 1; i < argc;) {
		df = &argv[i];
		Tcheckgen(df->type != F_INT || i == argc - 1
			  || df->Dval >= 0 && df[1].type != F_APTR
			  || df->Dval < 0 && argc - i - 1 < -df->Dval);
		fargc += (df->Dval < 0) ? -df->Dval : df->Dval;
		i += (df->Dval < 0) ? -df->Dval + 1 : 2;
	}
	if (fargc) {
		if (tempsize < fargc) {
			ftemp = tempsize ? Rearray(ftemp, Dframe, tempsize,
				fargc) : Newarray(Dframe, fargc);
			tempsize = fargc;
		}
		for (df = ftemp, i = 1; i < argc;) {
			if (argv[i].Dval < 0) {
				Copy(&argv[i + 1], df, -argv[i].Dval, Dframe);
				df += -argv[i].Dval;
				i += -argv[i].Dval + 1;
				continue;
			}
			copy = min(argv[i].Dval,
				   argv[i + 1].Asize - argv[i + 1].Dapos);
			copy = max(copy, 0);
			if (copy)
				Copy(&Aelem(argv[i + 1]), df, copy, Dframe);
			df += copy;
			while (copy++ < argv[i].Dval)
				df++->type = F_NULL;
			i += 2;
		}
		ref_frames(fargc, ftemp);
		deref_frames(argc, argv);
		dpos -= argc;
		while (dpos + fargc > dsize)
			double_dstack();
		Copy(ftemp, &dstack[dpos], fargc, Dframe);
		move_frames_refs(fargc, ftemp, &dstack[dpos]);
		dpos += fargc;
	} else {
		deref_frames(argc, argv);
		dpos -= argc;
	}
	if (arg0.type == F_FPTR) {
		if (fargc < arg0.Dfunc->cmd->reqargs)
			Prmterror(("Not enough arguments to function %s",
				  arg0.Dfunc->name));
		cpush(arg0.Dfunc->cmd, fargc, 1, 0);
	} else
		cpush(prog_pcall(arg0.Dpnum, fargc), 0, 1, fargc);
	Dset_elem(*rf, F_EXCEPT, Dval, INTERP_NOFREE);
}

PDECL(pr_detach)
{
	Tcheckgen(T1 != F_FPTR && T1 != F_PPTR);
	if (T1 == F_FPTR) {
		if (argc <= Dp1.Dfunc->cmd->reqargs)
			Prmterror(("Not enough arguments to function %s",
				  Dp1.Dfunc->name));
		cpush(Dp1.Dfunc->cmd, argc - 1, 0, 0);
	} else
		cpush(prog_pcall(Dp1.Dpnum, argc - 1), 0, 0, argc - 1);
	interp();
	deref_frame(&dstack[dpos - 1]);
	dstack[dpos - 1].type = F_NULL;
	Dset_elem(*rf, F_EXCEPT, Dval, INTERP_NOFREE);
}

PDECL(pr_abort)
{
	*rf = frame_error;
}

/* Array primitives */

PDECL(pr_alloc)
{
	Tcheckgen(argc < 1 || argc > 2 || T1 != F_INT
		  || argc == 2 && T2 != F_ASSOC);
	Int1 = max(Int, 1);
	if (argc == 1) {
		Dset_aptr(*rf, add_array(Int1, dfalloc(Int1), 0, 0, 0), 0);
		rf->Darray->r.refs = 0;
		return;
	}
	Dset_elem(*rf, F_PLIST, Dplist, New(Plist));
	rf->Dplist->assoc = Dp2.Dassoc;
	rf->Dplist->array = add_array(Int1, dfalloc(Int1), 0, 0, 1);
	rf->Dplist->array->r.plist = rf->Dplist;
	rf->Dplist->refs = 0;
}

PDECL(pr_new_assoc)
{
	Dset_elem(*rf, F_ASSOC, Dassoc, New(int));
	*rf->Dassoc = 0;
}

PDECL(pr_lookup)
{
	Plist *p = NULL;

	if (T1 == F_ASSOC) {
		Dset_int(*rf, lookup(Dp1.Dassoc, Soastr(Dp2)));
		return;
	}
	if (T1 == F_PLIST)
		p = Dp1.Dplist;
	else if (T1 == F_WIN && Un1->Wobj && Un1->Wobj->type == F_PLIST)
		p = Un1->Wobj->Dplist;
	else if (T1 == F_RMT && Un1->Robj && Un1->Robj->type == F_PLIST)
		p = Un1->Robj->Dplist;
	Tcheckgen(!p || T2 != F_SPTR);
	Dset_aptr(*rf, p->array, lookup(p->assoc, Soastr(Dp2)));
}

PDECL(pr_acopy)
{
	int copy, i;

	Tcheck3(F_APTR, F_APTR, F_INT);
	if (Int3 <= 0)
		return;
	if (Int3 > Dp1.Asize - Dp1.Dapos) {
		if (Dp1.Darray->fixed)
			Int3 = Dp1.Asize - Dp1.Dapos;
		else
			extend_array(Dp1.Darray, Dp1.Dapos + Int3);
	}
	if (tempsize < Int3) {
		ftemp = tempsize ? Rearray(ftemp, Dframe, tempsize, Int3)
				 : Newarray(Dframe, Int3);
		tempsize = Int3;
	}
	copy = min(Int3, Dp2.Asize - Dp2.Dapos);
	copy = max(copy, 0);
	if (copy)
		Copy(&Aelem(Dp2), ftemp, copy, Dframe);
	for (i = copy; i < Int3; i++)
		ftemp[i].type = F_NULL;
	ref_frames(Int3, ftemp);
	deref_frames(Int3, &Aelem(Dp1));
	Copy(ftemp, &Aelem(Dp1), Int3, Dframe);
	move_frames_refs(Int3, ftemp, &Aelem(Dp1));
}

PDECL(pr_base)
{
	if (T == F_PLIST) {
		Dset_aptr(*rf, Dp.Dplist->array, 0);
		return;
	}
	Tcheckgen(T != F_APTR && T != F_SPTR);
	*rf = Dp;
	*((T == F_APTR) ? &rf->Dapos : &rf->Dspos) = 0;
}

PDECL(pr_garbage)
{
	rf->type = F_INT;
	rf->Dval = garbage();
}

/* Miscellaneous primitives */

PDECL(pr_parse)
{
	Tcheck1(F_SPTR);
	parse(Soastr(Dp));
}

PDECL(pr_head)
{
	Tcheckgen(T != F_INT || Int < F_RMT || Int > F_FILE);
	if (!ringdummy(Int)->next->dummy)
		Dset_elem(*rf, Int, Dunode, ringdummy(Int)->next);
}

PDECL(pr_tail)
{
	Tcheckgen(T != F_INT || Int < F_RMT || Int > F_FILE);
	if (!ringdummy(Int)->prev->dummy)
		Dset_elem(*rf, Int, Dunode, ringdummy(Int)->prev);
}

PDECL(pr_next)
{
	Tcheckgen(T < F_RMT || T > F_FILE);
	if (!Un->next->dummy)
		Dset_elem(*rf, Dp.type, Dunode, Un->next);
}

PDECL(pr_prev)
{
	Tcheckgen(T < F_RMT || T > F_FILE);
	if (!Un->prev->dummy)
		Dset_elem(*rf, Dp.type, Dunode, Un->prev);
}

PDECL(pr_type)
{
	Dset_int(*rf, Dp.type);
}

PDECL(pr_find_var)
{
	Tcheck1(F_SPTR);
	Dset_aptr(*rf, gvars, get_vindex(Soastr(Dp)));
}

PDECL(pr_sleep)
{
	Estate *image, **e;

	Tcheck1(F_INT);
	image = suspend(1);
	image->timer = time((long *) NULL) + Int;
	for (e = &events; *e && (*e)->timer <= image->timer; e = &(*e)->next);
	image->next = *e;
	*e = image;
	*rf = suspend_frame;
}

PDECL(pr_quit)
{
        vtexit();
}

PDECL(pr_rndseed)
{
	Tcheck1(F_INT);
	srand(Int);
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩一级二级三级| 国产福利精品导航| 成人免费电影视频| 亚洲综合在线观看视频| 久久久久国产精品麻豆| 欧美日韩视频不卡| 在线免费观看不卡av| 欧美日韩亚洲不卡| 久久99精品久久久| 国产综合久久久久久久久久久久| 亚洲精品视频在线观看免费| 色欧美片视频在线观看在线视频| 亚洲综合一区二区| 欧美一二三区在线| av高清不卡在线| 亚洲午夜激情网页| 欧美激情一区二区三区不卡| 色噜噜狠狠一区二区三区果冻| 成人美女在线视频| 亚洲图片欧美一区| 精品一区二区影视| 在线欧美一区二区| 欧美喷潮久久久xxxxx| 久久久久国产免费免费| 亚洲国产精品久久久久秋霞影院 | 国产精品乱码一区二三区小蝌蚪| 亚洲黄一区二区三区| 婷婷综合五月天| 国内精品嫩模私拍在线| 在线观看不卡一区| 久久综合九色综合欧美亚洲| 亚洲电影一区二区三区| 国产成人精品亚洲777人妖| 欧美精品黑人性xxxx| 亚洲国产精品欧美一二99| 成人av在线资源| 久久精品欧美日韩精品 | 天天av天天翘天天综合网| 成人精品视频.| 亚洲欧美日韩人成在线播放| 国产在线国偷精品免费看| 91麻豆精品久久久久蜜臀 | 国产日韩欧美精品在线| 男女视频一区二区| 欧美日韩www| 首页综合国产亚洲丝袜| 色偷偷成人一区二区三区91| 国产精品乱码妇女bbbb| 国产老女人精品毛片久久| 精品国产一区二区亚洲人成毛片| 婷婷综合久久一区二区三区| 欧美日韩亚洲国产综合| 亚洲第一二三四区| 欧美视频在线播放| 亚洲一区二区三区视频在线 | 国产69精品久久99不卡| 日韩精品在线看片z| 亚洲靠逼com| 欧美色爱综合网| 亚洲二区在线观看| 欧美一级久久久久久久大片| 奇米精品一区二区三区四区| 欧美一区二区三区在线视频| 麻豆视频观看网址久久| 精品国产人成亚洲区| 国产制服丝袜一区| 国产精品毛片高清在线完整版| av不卡在线播放| 一区二区激情小说| 91精品国产乱码久久蜜臀| 看片的网站亚洲| 国产欧美一二三区| 91成人免费电影| 日本人妖一区二区| 欧美精彩视频一区二区三区| 99久久久免费精品国产一区二区| 1024成人网| 欧美一级夜夜爽| 丰满亚洲少妇av| 一区二区三区在线视频播放| 欧美一二三区在线观看| 国产精品一区二区男女羞羞无遮挡| 国产精品欧美极品| 欧美日韩国产综合一区二区| 国产一区二区日韩精品| 亚洲欧美视频在线观看视频| 911精品产国品一二三产区 | 国产精品久久久久久妇女6080| 99国产欧美久久久精品| 亚洲免费三区一区二区| 欧美亚洲一区二区在线| 久久99国产精品久久99果冻传媒| 国产日韩欧美一区二区三区综合| 欧美日韩一区二区三区在线| 国产毛片一区二区| 亚洲成av人片在线| 中文字幕中文在线不卡住| 56国语精品自产拍在线观看| 日本不卡一区二区三区| 伊人婷婷欧美激情| 国产日韩精品一区| 国产三级三级三级精品8ⅰ区| 欧美日韩精品一区二区在线播放| 97se亚洲国产综合自在线| 精品一区二区三区久久| 国产精品蜜臀在线观看| 久久久亚洲精华液精华液精华液| 欧洲另类一二三四区| 成人永久aaa| 麻豆国产精品官网| 亚洲电影在线播放| 亚洲人一二三区| 国产欧美日韩在线| 精品91自产拍在线观看一区| 欧美人成免费网站| 91女神在线视频| 成人精品国产一区二区4080| 九一久久久久久| 日本欧美大码aⅴ在线播放| 亚洲夂夂婷婷色拍ww47 | 欧美日韩国产精品自在自线| 成人做爰69片免费看网站| 精品一区二区三区在线观看 | 日本精品视频一区二区| 久久机这里只有精品| 日韩中文字幕区一区有砖一区| 亚洲男人的天堂av| 亚洲欧美影音先锋| 国产精品日日摸夜夜摸av| 精品国产乱码久久久久久蜜臀| 555www色欧美视频| 91精品国产91久久久久久一区二区 | 欧美日韩一区成人| 欧美亚洲综合在线| 欧美日韩美女一区二区| 欧美午夜在线观看| 欧美日韩精品福利| 色哟哟日韩精品| 日本一道高清亚洲日美韩| 欧美精品一区二区精品网| 午夜成人在线视频| 99国产精品久| 亚洲色欲色欲www| 欧美日韩国产高清一区二区| 91福利在线观看| 欧美一区二区在线看| 日韩欧美色综合| 国产日产欧产精品推荐色| 亚洲国产精品ⅴa在线观看| 国产精品成人在线观看| 亚洲欧美日韩中文播放| 欧美经典一区二区| 久久精品欧美一区二区三区不卡 | k8久久久一区二区三区 | 亚洲黄色尤物视频| 懂色av一区二区三区蜜臀| 欧美视频在线观看一区| 色欲综合视频天天天| 欧美精品电影在线播放| 91精品国产一区二区三区蜜臀| 91精品国产欧美日韩| 国产日本欧美一区二区| 亚洲免费观看高清完整版在线观看| 一区二区三区四区五区视频在线观看 | 91免费看视频| 日韩一区二区影院| 国产三级精品视频| 奇米影视一区二区三区| 懂色一区二区三区免费观看| 在线中文字幕一区| 国产精品网站在线| 亚洲v中文字幕| 免费看精品久久片| 欧美系列一区二区| ww久久中文字幕| 欧美色手机在线观看| 老司机一区二区| 爽好久久久欧美精品| 国产成人99久久亚洲综合精品| 色婷婷国产精品综合在线观看| 欧美xxxxxxxxx| 亚洲欧美一区二区三区极速播放 | 裸体健美xxxx欧美裸体表演| 欧美日韩精品欧美日韩精品| 91久久香蕉国产日韩欧美9色| 国产亚洲成年网址在线观看| 偷偷要91色婷婷| 欧美日韩一区二区三区视频| 综合电影一区二区三区| 国产成人精品免费网站| 欧美xxx久久| 青青草精品视频| 欧美一区二区在线免费观看| 亚洲图片欧美综合| 欧美日韩卡一卡二| 午夜一区二区三区视频| 欧美日本一区二区三区| 天天综合色天天| 欧美精品精品一区| 免费成人在线播放|