⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unode.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.21.03.27;	author tsurace;	state Beta;branches;next	;desc@Unode structure management.@2.1log@Roll.@text@/* unode.c: Allocation and general routines dealing with user nodes */
/* $Id: unode.c 1.1 1995/10/12 21:03:27 tsurace Beta tsurace $ */

#include "vt.h"

static int id = 0;			/* Used to assign unique IDs   */
static Unode recycle_ring;		/* Re-use discarded unodes     */
extern int debug;
extern Dframe *dstack;

void init_unalloc()
{
	recycle_ring.next = recycle_ring.prev = &recycle_ring;
}

Unode *unalloc()
{
	Unode *ret;

	if (recycle_ring.next != &recycle_ring) {
		ret = recycle_ring.next;
		recycle_ring.next = ret->next;
		ret->next->prev = &recycle_ring;
	} else
		ret = New(Unode);
	ret->frefs = NULL;
	ret->dummy = 0;
	ret->id = id++;
	return ret;
}

void destroy_pointers(frefs)
	Flist *frefs;
{
	Flist *next;

	for (; frefs; frefs = next) {
		next = frefs->next;
		frefs->fr->type = F_NULL;
		Discard(frefs, Flist);
	}
}

void discard_unode(un)
	Unode *un;
{
	un->id = -1;
	un->next = recycle_ring.next;
	un->prev = &recycle_ring;
	recycle_ring.next = recycle_ring.next->prev = un;
}

void add_fref(frefs, frame)
	Flist **frefs;
	Dframe *frame;
{
	Flist *fr;

	fr = New(Flist);
	fr->fr = frame;
	fr->next = *frefs;
	*frefs = fr;
}

void move_fref(frefs, old, new)
	Flist *frefs;
	Dframe *old, *new;
{
	while (frefs->fr != old)
		 frefs = frefs->next;
	frefs->fr = new;
}

void elim_fref(frefs, frame)
	Flist **frefs;
	Dframe *frame;
{
	Flist *next;

	while ((*frefs)->fr != frame)
		frefs = &(*frefs)->next;
	next = (*frefs)->next;
	Discard(*frefs, Flist);
	*frefs = next;
}


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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -