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

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

?? array.c

?? 使用BorlandC++4.5編譯的一個MUD客戶端程序
?? C
字號:
/* array.c: Handle allocation and manipulation of arrays */
/* RCS: $Id: array.c 2.1 1995/10/24 15:46:14 tsurace Release $ */

#include "vt.h"

#ifdef PROTOTYPES
static Array *aralloc(void);
static void mark_cframes(int, Cframe *);
static void mark_estates(Estate *);
static void mark_dframes(int, Dframe *);
static void mark_dframe(Dframe *);
#else
static Array *aralloc();
static void mark_cframes(), mark_estates(), mark_dframes();
static void mark_dframe();
#endif

#define INIT_INDEX_SIZE 128
#define BLOCK_SIZE 64
static Array **index, firstblock[BLOCK_SIZE], *unused;
static int index_size, ipos = 1, bpos = 0, collecting = 0;

#define PTSIZE 101
typedef struct aentry Aentry;
typedef struct asubelem Asubelem;
struct aentry { char *name; Asubelem *sub; Aentry *left, *right; };
struct asubelem { int *assoc; int num; Asubelem *next; };
static Aentry *atbl[PTSIZE];

extern Array *gvars;
extern Dframe *dstack;
extern Cframe *cstack;
extern int dpos, cpos;
extern Unode rmt_ring, win_ring;
extern Estate *events, *gen_read, *gen_high, *gen_low;

void init_array()
{
	index = Newarray(Array *, index_size = INIT_INDEX_SIZE);
	index[0] = firstblock;
}

static Array *aralloc()
{
	Array *temp;

	if (unused) {
		temp = unused;
		temp->used = 1;
		unused = unused->r.next;
		return temp;
	}
	if (bpos == BLOCK_SIZE) {
		if (ipos == index_size)
			Double(index, Array *, index_size);
		index[ipos++] = Newarray(Array, BLOCK_SIZE);
		bpos = 0;
	}
	index[ipos - 1][bpos].used = 1;
	return &index[ipos - 1][bpos++];
}

void arfree(ar)
	Array *ar;
{
	ar->used = 0;
	ar->r.next = unused;
	unused = ar;
}

Dframe *dfalloc(num)
	int num;
{
	Dframe *vals, *vp;

	vals = Newarray(Dframe, num);
	for (vp = vals; num--; vp++)
		vp->type = F_NULL;
	return vals;
}

Array *add_array(size, vals, intern, fixed, isp)
	int size, intern, fixed, isp;
	Dframe *vals;
{
	Array *new;

	new = aralloc();
	new->alloc = size;
	new->vals = vals;
	new->intern = intern;
	new->fixed = fixed;
	new->isp = isp;
	return new;
}

void del_array(array)
	Array *array;
{
	deref_frames(array->alloc, array->vals);
	Discardarray(array->vals, Dframe, array->alloc);
	arfree(array);
}

void extend_array(ar, size)
	Array *ar;
	int size;
{
	Dframe *new;

	if (size <= ar->alloc)
		return;
	size *= 2;
	new = Newarray(Dframe, size);
	Copy(ar->vals, new, ar->alloc, Dframe);
	move_frames_refs(ar->alloc, ar->vals, new);
	Discardarray(ar->vals, Dframe, ar->alloc);
	ar->vals = new;
	for (new += ar->alloc; ar->alloc < size; ar->alloc++)
		new++->type = F_NULL;
}

void dec_ref_array(ar)
	Array *ar;
{
	if (!--ar->r.refs && !collecting)
		del_array(ar);
}

void dec_ref_plist(plist)
	Plist *plist;
{
	if (!--plist->refs && !collecting) {
		del_array(plist->array);
		Discard(plist, Plist);
	}
}

int lookup(assoc, str)
	int *assoc;
	char *str;
{
	Aentry **a;
	Asubelem **s;
	int val;

	a = &atbl[hash(str, PTSIZE)];
	while (*a) {
		val = strcmp(str, (*a)->name);
		if (!val)
			break;
		a = (val > 0) ? &(*a)->right : &(*a)->left;
	}
	if (!*a) {
		*a = New(Aentry);
		(*a)->name = vtstrdup(str);
		(*a)->left = (*a)->right = NULL;
		(*a)->sub = NULL;
	}
	for (s = &(*a)->sub; *s && (*s)->assoc != assoc; s = &(*s)->next);
	if (!*s) {
		*s = New(Asubelem);
		(*s)->assoc = assoc;
		(*s)->next = NULL;
		(*s)->num = (*assoc)++;
	}
	return (*s)->num;
}

int garbage()
{
	int i, j, counter = 0, n;
	Unode *un;
	Array *ar;

	for (i = 0; i < ipos; i++) {
		n = (i == ipos - 1) ? bpos : BLOCK_SIZE;
		for (j = 0; j < n; j++)
			index[i][j].garbage = 0;
	}
	mark_dframes(gvars->alloc, gvars->vals);
	mark_dframes(dpos, dstack);
	mark_cframes(cpos, cstack);
	for (un = rmt_ring.next; !un->dummy; un = un->next) {
		if (un->Robj)
			mark_dframe(un->Robj);
		mark_estates(un->Rrstack);
	}
	for (un = win_ring.next; !un->dummy; un = un->next) {
		if (un->Wobj)
			mark_dframe(un->Wobj);
		mark_estates(un->Wghstack);
		mark_estates(un->Wglstack);
		mark_estates(un->Wrstack);
	}
	mark_estates(events);
	mark_estates(gen_read);
	mark_estates(gen_high);
	mark_estates(gen_low);
	collecting = 1;
	for (i = 0; i < ipos; i++) {
		n = (i == ipos - 1) ? bpos : BLOCK_SIZE;
		for (j = 0; j < n; j++) {
			ar = &index[i][j];
			if (ar->used && !ar->intern && !ar->garbage) {
				if (ar->isp)
					Discard(ar->r.plist, Plist);
				del_array(ar);
				counter++;
			}
		}
	}
	collecting = 0;
	return counter;
}

static void mark_cframes(num, frames)
	int num;
	Cframe *frames;
{
	for (; num--; frames++)
	       mark_dframes(frames->lvars->alloc, frames->lvars->vals);
}

static void mark_estates(es)
	Estate *es;
{
	for (; es; es = es->next) {
		mark_dframes(es->dframes, es->dimage);
		mark_cframes(es->cframes, es->cimage);
	}
}

static void mark_dframes(num, frames)
	int num;
	Dframe *frames;
{
	while (num--)
		mark_dframe(frames++);
}

static void mark_dframe(f)
	Dframe *f;
{
	Array *a = NULL;

	if (f->type == F_APTR && !f->Darray->intern)
		a = f->Darray;
	else if (f->type == F_PLIST)
		a = f->Dplist->array;
	if (a && !a->garbage) {
		a->garbage = 1;
		mark_dframes(a->alloc, a->vals);
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人自拍高清视频在线免费播放| 国产精品久久久99| 日本亚洲视频在线| 日韩一区二区免费在线电影| 日本aⅴ免费视频一区二区三区| 日韩免费视频一区| 狠狠色丁香久久婷婷综合_中| 国产午夜精品一区二区三区四区| 国产乱人伦偷精品视频不卡| 国产亚洲精品中文字幕| 91色视频在线| 日韩在线一二三区| 精品乱人伦一区二区三区| 国产一区二区精品久久| 亚洲欧美一区二区视频| 7777精品伊人久久久大香线蕉完整版 | 五月婷婷另类国产| 精品久久久久久久一区二区蜜臀| 国产精品一级片在线观看| 亚洲欧洲精品一区二区三区| 欧美亚洲另类激情小说| 蜜乳av一区二区| 欧美激情一区三区| 欧美精品 国产精品| 国产一区二区三区不卡在线观看| 中文字幕av资源一区| 在线观看av不卡| 狠狠色丁香久久婷婷综合丁香| 亚洲啪啪综合av一区二区三区| 欧美日韩中字一区| 国产一区999| 亚洲第一综合色| 国产午夜精品一区二区三区四区| 91黄色在线观看| 国产福利91精品一区| 丝袜美腿高跟呻吟高潮一区| 国产人久久人人人人爽| 51精品秘密在线观看| 国产精品中文欧美| 丝袜美腿亚洲综合| 亚洲欧美日韩成人高清在线一区| 精品久久久三级丝袜| 欧美日韩精品一区视频| av在线不卡观看免费观看| 久久精品国产久精国产爱| 亚洲男同性视频| 国产午夜精品福利| 欧美一卡二卡三卡四卡| 欧美午夜精品理论片a级按摩| 久久影院午夜论| 欧美日韩中文字幕精品| 顶级嫩模精品视频在线看| 欧美a一区二区| 亚洲高清不卡在线| 亚洲综合视频在线| 中文字幕欧美一区| 欧美国产精品中文字幕| 26uuu色噜噜精品一区二区| 欧美一区欧美二区| 欧美色男人天堂| 一本一本久久a久久精品综合麻豆| 国产电影一区二区三区| 久久精品国产亚洲a| 日韩精品电影一区亚洲| 一区二区三区在线免费| 亚洲视频一区在线观看| 中国色在线观看另类| 久久一区二区三区四区| 2019国产精品| www国产精品av| 国产亚洲成av人在线观看导航| 精品国产成人系列| 欧美一区二区三区四区五区| 欧美午夜不卡在线观看免费| 欧美做爰猛烈大尺度电影无法无天| 99久精品国产| 99国内精品久久| 色老综合老女人久久久| 色吧成人激情小说| 欧美日韩综合在线免费观看| 欧洲国内综合视频| 欧美视频自拍偷拍| 欧美电影在线免费观看| 5858s免费视频成人| 欧美一区二区私人影院日本| 69av一区二区三区| 精品国产91乱码一区二区三区| 欧美电影免费观看完整版| 欧美xxxxx裸体时装秀| 久久婷婷一区二区三区| 欧美国产精品一区二区| 亚洲色欲色欲www| 亚洲图片欧美视频| 天堂在线一区二区| 另类中文字幕网| 东方aⅴ免费观看久久av| 91污片在线观看| 欧美日韩国产经典色站一区二区三区 | 在线视频欧美精品| 6080午夜不卡| 久久免费电影网| 亚洲免费大片在线观看| 午夜精品视频一区| 国产一区二区三区蝌蚪| 不卡一区在线观看| 欧美日免费三级在线| 精品福利一二区| 亚洲三级在线免费观看| 偷拍日韩校园综合在线| 韩国精品主播一区二区在线观看| 成人动漫一区二区| 欧美人与禽zozo性伦| 国产日产精品一区| 亚洲成人免费av| 国产乱一区二区| 精品视频全国免费看| 五月天一区二区| 国产一区二区不卡| 91官网在线免费观看| 精品国产亚洲一区二区三区在线观看| 久久久激情视频| 亚洲第一狼人社区| 国产aⅴ精品一区二区三区色成熟| 色诱视频网站一区| 国产亚洲欧美一区在线观看| 亚洲福利视频导航| 不卡欧美aaaaa| 欧美成人video| 亚洲综合图片区| 成人av网站在线观看免费| 日韩精品专区在线影院重磅| 亚洲品质自拍视频| 国产成人精品一区二| 69堂精品视频| 一区二区三区视频在线观看| 国产91精品露脸国语对白| 欧美日韩国产另类不卡| 亚洲私人影院在线观看| 国产综合色在线视频区| 7777精品伊人久久久大香线蕉| 亚洲欧洲美洲综合色网| 国产一区91精品张津瑜| 日韩午夜激情av| 三级在线观看一区二区| 色狠狠色狠狠综合| 中文字幕一区二区三| 狠狠色丁香婷婷综合久久片| 91精品国产一区二区| 亚洲最新在线观看| 99久久久国产精品| 国产视频一区二区三区在线观看| 青草av.久久免费一区| 777欧美精品| 日韩精品一区第一页| 欧美影视一区在线| 亚洲欧美另类综合偷拍| 色综合中文字幕| 亚洲天堂网中文字| 99精品视频在线播放观看| 国产日本欧美一区二区| 高清在线不卡av| 国产午夜精品久久久久久免费视 | 91蜜桃视频在线| 国产精品久久精品日日| www.亚洲色图.com| 中文字幕一区二区三中文字幕| 懂色一区二区三区免费观看| 久久精品男人天堂av| 国产精品99久久久久久有的能看| 日韩欧美国产综合| 麻豆成人在线观看| 欧美va在线播放| 国产在线国偷精品免费看| 日韩美女视频一区二区在线观看| 裸体健美xxxx欧美裸体表演| 精品少妇一区二区三区免费观看| 免费精品视频最新在线| 久久综合色综合88| 国产成人av一区二区| 欧美国产一区视频在线观看| 久久综合九色综合久久久精品综合 | 国产剧情一区二区| 国产欧美日韩在线观看| a级精品国产片在线观看| 亚洲精品亚洲人成人网在线播放| 欧美私模裸体表演在线观看| 视频在线观看一区| 精品捆绑美女sm三区| 丰满放荡岳乱妇91ww| 亚洲男同性视频| 538在线一区二区精品国产| 久久91精品国产91久久小草| 久久久蜜桃精品| 日本电影欧美片| 麻豆精品一区二区综合av| 国产午夜精品福利| 欧美综合亚洲图片综合区| 久99久精品视频免费观看| 欧美极品另类videosde| 欧美性受xxxx|