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

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

?? prmt4.c

?? 使用BorlandC++4.5編譯的一個MUD客戶端程序
?? C
字號:
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.39.17;	author tsurace;	state Beta;branches;next	;desc@Primitives - functions, files, misc@2.1log@Roll.@text@/* prmt4.c: Primitive functions: functions, misc, files */
/* $Id: prmt4.c 1.1 1995/10/12 19:39:17 tsurace Beta tsurace $ */

#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);
}


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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va中文字幕| 欧美群妇大交群的观看方式| 欧美性大战xxxxx久久久| 欧美大片免费久久精品三p| 亚洲精品亚洲人成人网 | 欧美一区二区久久| 91亚洲精品久久久蜜桃| 欧美成va人片在线观看| 一区二区高清视频在线观看| 色呦呦网站一区| 亚洲天堂2016| 99精品一区二区三区| 亚洲欧洲av色图| 色综合av在线| 亚洲一区二区三区美女| 欧美在线你懂的| 亚洲国产日韩精品| 91精品免费观看| 麻豆中文一区二区| 久久综合精品国产一区二区三区| 国产一区二区精品久久| 国产日韩成人精品| 色又黄又爽网站www久久| 亚洲国产cao| 日韩无一区二区| 国产中文一区二区三区| 亚洲国产精品成人综合| 国产日韩欧美精品一区| 91在线观看成人| 亚洲综合久久久久| 欧美不卡一二三| 国产成人免费视| 亚洲激情图片qvod| 欧美乱熟臀69xxxxxx| 国产一区二区三区蝌蚪| 亚洲天堂成人在线观看| 欧美日韩高清影院| 寂寞少妇一区二区三区| 亚洲色欲色欲www| 91超碰这里只有精品国产| 国产一区二区伦理片| 一区二区三区国产精品| 精品国产一二三区| 91亚洲精品乱码久久久久久蜜桃| 亚洲成a人v欧美综合天堂| 精品国产乱码久久久久久影片| 成人午夜电影久久影院| 五月婷婷激情综合网| 久久网站热最新地址| 在线亚洲欧美专区二区| 蓝色福利精品导航| 一区二区日韩av| 精品sm在线观看| 91极品视觉盛宴| 国产精品1区2区| 亚洲va国产天堂va久久en| 国产女同性恋一区二区| 欧美一区二区在线观看| 99re视频这里只有精品| 狠狠色综合日日| 亚洲午夜久久久久久久久久久| 国产色婷婷亚洲99精品小说| 欧美精选一区二区| 91在线一区二区| 国产黄色精品视频| 精品综合久久久久久8888| 亚洲一区在线播放| 一区精品在线播放| 国产天堂亚洲国产碰碰| 日韩欧美国产综合一区| 欧美日精品一区视频| 成人免费视频caoporn| 久久99久久精品欧美| 亚洲成人免费在线| 亚洲少妇30p| 国产蜜臀av在线一区二区三区| 91精品国产乱| 欧美在线不卡视频| 色88888久久久久久影院野外| 国产精品小仙女| 久久99最新地址| 五月天精品一区二区三区| 亚洲人成伊人成综合网小说| 中文在线资源观看网站视频免费不卡 | 51精品国自产在线| 日本精品视频一区二区三区| 成人免费高清在线观看| 国产黄色精品视频| 国产另类ts人妖一区二区| 91精品一区二区三区久久久久久 | 在线免费观看日韩欧美| 99视频精品全部免费在线| 国产成人精品免费网站| 激情亚洲综合在线| 极品少妇xxxx精品少妇| 九九精品视频在线看| 久久99久久99小草精品免视看| 麻豆精品在线播放| 精东粉嫩av免费一区二区三区| 久热成人在线视频| 国产精品一线二线三线精华| 国产精品影视在线观看| 北条麻妃国产九九精品视频| 99精品久久只有精品| 91传媒视频在线播放| 在线观看精品一区| 欧美日韩高清在线播放| 日韩精品综合一本久道在线视频| 亚洲精品一区二区三区福利| 久久夜色精品国产噜噜av| 久久久亚洲午夜电影| 国产精品嫩草影院av蜜臀| 亚洲欧美日韩国产手机在线| 亚洲高清中文字幕| 久久国产精品第一页| 国产一区二区三区香蕉| 99久久99久久精品免费观看| 在线观看免费成人| 日韩欧美一二三| 国产区在线观看成人精品| 一区二区三区成人在线视频| 免费在线视频一区| 高清成人免费视频| 欧美在线免费播放| 欧美电影免费观看完整版| 欧美激情中文不卡| 亚洲第一在线综合网站| 国产一区在线观看视频| 91免费在线视频观看| 91精品欧美一区二区三区综合在 | 日韩亚洲欧美在线观看| 国产欧美va欧美不卡在线| 亚洲伊人色欲综合网| 国内成人精品2018免费看| 91老师国产黑色丝袜在线| 欧美一区二区福利视频| 国产精品麻豆久久久| 日韩—二三区免费观看av| 不卡在线视频中文字幕| 欧美福利一区二区| 亚洲欧洲99久久| 毛片av一区二区三区| 91国偷自产一区二区三区观看| 精品99一区二区| 亚洲一二三四在线观看| 粉嫩13p一区二区三区| 欧美乱妇15p| 成人欧美一区二区三区小说| 麻豆精品一区二区三区| 色一区在线观看| 久久久久国产精品免费免费搜索| 艳妇臀荡乳欲伦亚洲一区| 国产一区二区h| 欧美日韩国产综合一区二区| 国产精品高潮呻吟久久| 久久99久久99| 欧美日韩国产综合一区二区三区| 中文字幕在线不卡| 经典三级在线一区| 51精品久久久久久久蜜臀| a在线欧美一区| 精品国产91乱码一区二区三区| 亚洲精品中文字幕乱码三区| 国产精品一二二区| 日韩一区二区三区高清免费看看| 日韩毛片精品高清免费| 国产99久久久国产精品潘金| 精品国产乱码久久久久久闺蜜| 亚洲第一福利一区| 一本大道久久a久久精二百| 欧美经典一区二区三区| 经典三级在线一区| 欧美va亚洲va在线观看蝴蝶网| 三级久久三级久久久| 欧美性xxxxxx少妇| 一区二区三区在线观看网站| aaa欧美色吧激情视频| 欧美激情在线看| 久久激情五月婷婷| 欧美一区二区播放| 手机精品视频在线观看| 欧美三级一区二区| 亚洲第一成人在线| 欧美日韩一卡二卡| 日韩国产欧美视频| 日韩一二在线观看| 久久 天天综合| 日韩精品一区二区三区在线观看| 日韩黄色小视频| 91精品国产综合久久福利软件| 日韩精品一卡二卡三卡四卡无卡| 这里是久久伊人| 秋霞午夜av一区二区三区| 欧美一区二区网站| 美美哒免费高清在线观看视频一区二区 | 久久久久久电影| 粉嫩欧美一区二区三区高清影视| 中文字幕国产一区| 92国产精品观看| 亚洲一区二区三区中文字幕|