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

📄 sconst.c

📁 使用BorlandC++4.5编译的一个MUD客户端程序
💻 C
字号:
/* sconst.c: Handle addition and removal of string constants */
/* $Id: sconst.c 2.1 1995/10/24 15:46:14 tsurace Release $ */

#include "vt.h"
#define STSIZE 101

struct sconst {
	Rstr *rs;			/* Given to program		*/
	int refs;			/* Ref count from programs only */
	struct sconst *next;
};

static struct sconst *sctab[STSIZE];

Rstr *add_sconst(cstr)
	Cstr *cstr;
{
	int ind;
	struct sconst *new, *sc;

	ind = hash(cstr->s, STSIZE);
	for (sc = sctab[ind]; sc; sc = sc->next) {
		if (streq(sc->rs->str.c.s, cstr->s))
			break;
	}
	if (sc) {
		sc->refs++;
		return sc->rs;
	}
	new = New(struct sconst);
	new->rs = New(Rstr);
	new->rs->str.c = *cstr;
	new->rs->str.sz = cstr->l + 1;
	new->rs->refs = 1;
	new->refs = 1;
	new->next = sctab[ind];
	sctab[ind] = new;
	cstr->s = NULL;
	return new->rs;
}

void del_sconst(rs)
	Rstr *rs;
{
	int ind;
	struct sconst **sc, *next;

	ind = hash(rs->str.c.s, STSIZE);
	for (sc = &sctab[ind]; (*sc)->rs != rs; sc = &(*sc)->next);
	if (--(*sc)->refs)
		return;
	dec_ref_rstr(rs);
	next = (*sc)->next;
	Discard(*sc, struct sconst);
	*sc = next;
}


⌨️ 快捷键说明

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