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

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

?? array.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.17.44.28;	author tsurace;	state Beta;branches;next	;desc@Array maniupation routines.@2.1log@Roll.@text@/* array.c: Handle allocation and manipulation of arrays */
/* RCS: $Id: array.c 1.1 1995/10/12 17:44:28 tsurace Beta tsurace $ */

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


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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲动漫制服丝袜| 欧美一级日韩免费不卡| 欧美丰满一区二区免费视频| 精品99久久久久久| 亚洲午夜日本在线观看| 国产成人av一区二区| 69av一区二区三区| 亚洲精品久久久蜜桃| 国产一区二区导航在线播放| 欧美一区二区三级| 亚洲不卡一区二区三区| 99视频精品全部免费在线| 精品久久久影院| 日本亚洲视频在线| 欧美亚洲精品一区| 亚洲激情自拍视频| 成人激情文学综合网| 久久久国产一区二区三区四区小说| 亚洲成人tv网| 欧美日本乱大交xxxxx| 亚洲一区在线视频观看| 99国产精品久久久久| 国产精品久久三| 成人高清在线视频| 最新日韩在线视频| www.欧美色图| 亚洲视频免费观看| 色综合久久88色综合天天| 综合激情网...| 色成人在线视频| 一区二区三区在线免费播放 | 国产蜜臀97一区二区三区 | 亚洲成人免费在线观看| 一本一本大道香蕉久在线精品 | 久久久亚洲午夜电影| 卡一卡二国产精品 | 欧美va在线播放| 麻豆成人91精品二区三区| 欧美一区二区三区四区久久| 三级久久三级久久| 欧美一区二区三区免费大片 | 成人av在线一区二区三区| 亚洲国产精品精华液ab| 成人黄色在线看| 亚洲精品欧美综合四区| 欧美亚男人的天堂| 蜜臀av性久久久久蜜臀aⅴ四虎| 在线不卡欧美精品一区二区三区| 日本视频一区二区三区| 久久久一区二区三区捆绑**| 成人精品在线视频观看| 亚洲天堂久久久久久久| 欧美伊人久久久久久久久影院| 亚洲永久免费av| 日韩欧美亚洲国产另类| 成人蜜臀av电影| 亚洲成人高清在线| 久久综合色8888| 91蝌蚪porny| 奇米一区二区三区| 国产精品国产a| 欧美丰满嫩嫩电影| 成人教育av在线| 亚洲6080在线| 国产女人18毛片水真多成人如厕| 色综合久久久久网| 久久av中文字幕片| 亚洲永久免费av| 久久综合色婷婷| 欧美日韩不卡视频| 国产成人av影院| 奇米精品一区二区三区在线观看一 | 欧美亚洲国产怡红院影院| 久久疯狂做爰流白浆xx| 亚洲欧美另类在线| 欧美精品一区二区三区一线天视频 | 亚洲精品免费一二三区| 日韩精品影音先锋| 色嗨嗨av一区二区三区| 国产超碰在线一区| 日韩电影在线观看电影| 一区在线观看视频| 2023国产精品| 日韩视频永久免费| 在线精品视频一区二区三四| 国产精品一区三区| 蜜桃一区二区三区四区| 一级中文字幕一区二区| 国产精品美女一区二区三区| 日韩欧美高清dvd碟片| 日本道色综合久久| 成人精品电影在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 97久久人人超碰| 另类小说综合欧美亚洲| 亚洲国产精品人人做人人爽| 中文字幕亚洲综合久久菠萝蜜| 欧美mv和日韩mv的网站| 欧美日韩aaaaa| 欧美日韩在线一区二区| 91福利视频在线| 99re这里只有精品视频首页| 丁香婷婷深情五月亚洲| 国产精品一二三| 国内久久精品视频| 极品美女销魂一区二区三区 | 国产无遮挡一区二区三区毛片日本| 91.com视频| 欧美精品日韩精品| 欧美这里有精品| 欧美日韩日日摸| 精品视频1区2区| 欧美精品精品一区| 欧美一区二区三区视频免费播放| 欧美精品一卡二卡| 日韩欧美电影一区| 日韩欧美视频一区| 26uuu色噜噜精品一区| 精品久久久久久久久久久院品网| 精品第一国产综合精品aⅴ| 精品国产乱码久久| 国产校园另类小说区| 国产精品网站在线观看| 中文字幕在线不卡| 一区二区三区91| 亚洲电影在线播放| 免费在线一区观看| 国产在线一区观看| 成人黄色片在线观看| 日本道色综合久久| 7878成人国产在线观看| 日韩欧美高清dvd碟片| 亚洲国产成人私人影院tom| 中文字幕视频一区| 亚洲国产综合视频在线观看| 免费一区二区视频| 国产传媒欧美日韩成人| 99久久综合99久久综合网站| 欧美性色黄大片| 精品久久久久久最新网址| 国产精品少妇自拍| 亚洲成a天堂v人片| 精品一区二区三区影院在线午夜| 国产aⅴ综合色| 在线观看91精品国产入口| 日韩片之四级片| 亚洲天堂福利av| 免费成人av在线播放| 成人久久视频在线观看| 在线不卡的av| 亚洲欧洲精品一区二区三区| 亚洲v中文字幕| 成人午夜电影久久影院| 6080亚洲精品一区二区| 国产精品乱人伦中文| 天堂一区二区在线免费观看| 丁香另类激情小说| 91麻豆精品国产91久久久久久 | 国产专区综合网| 91黄色免费看| 久久久精品黄色| 青青草伊人久久| 日本精品视频一区二区三区| 久久久久久电影| 偷拍自拍另类欧美| 91亚洲资源网| 中文字幕国产一区二区| 男女男精品网站| 欧美日韩精品一区二区天天拍小说 | 欧美年轻男男videosbes| 中文字幕va一区二区三区| 日本一不卡视频| 欧美三级资源在线| 亚洲三级在线观看| 国产精品中文欧美| 日韩欧美一区二区在线视频| 亚洲一区二区三区免费视频| 岛国精品在线观看| 久久一区二区视频| 奇米亚洲午夜久久精品| 欧美日韩国产高清一区二区| 一色桃子久久精品亚洲| 成人天堂资源www在线| 久久五月婷婷丁香社区| 美女性感视频久久| 91精品免费观看| 亚洲高清在线精品| 日本精品一区二区三区高清| 亚洲男人的天堂一区二区| 99热这里都是精品| 亚洲人成影院在线观看| www.日韩精品| 亚洲女与黑人做爰| 色偷偷88欧美精品久久久| 中文字幕中文字幕一区| av在线免费不卡| 日韩美女视频一区二区| 色成人在线视频| 亚洲高清视频在线| 欧美日韩国产一级二级|