Пример #1
0
char*match2str(const char*src,const size_t start,const size_t end, const char*long_delim) {
	char* buf = _stralloc(end-start+1);
	char* rd = (char*)src+start;
	char* wr = buf;
	size_t sz = end-start-1, ofs = 0;
	char* ret = NULL;

	if(end>start) {
//	printf("match2str orig = \"%*.*s\" sz=%li\n",(int)(end-start),(int)(end-start),rd,sz);
//		memset(buf,0,end-start);
//	printf("              => \"%s\"\n",buf);
		while(ofs<sz) {
			unescape_chr_l(&rd, &wr, 0, long_delim);
			ofs = rd-src-start;
//		printf("match2str orig = \"%*.*s\"\n",(int)(end-start-ofs),(int)(end-start-ofs),rd);
//		printf("              => \"%s\" %p %p %li\n",buf,rd,buf,ofs);
		};
		if(ofs==sz) {
			*wr = *rd;
			wr += 1;
		}
	}
	*wr = 0;

//	printf("match2str => \"%s\"\n\n",buf);

//	static char buf[256];
//	memset(buf,0,256);
//	strncpy(buf,src+start,end-start);
	ret = regstr(buf);
	_strfree(buf);
	return ret;
}
Пример #2
0
wast_t wa_new(const char* op, int l, int c) {
	wast_t ret = (wast_t)malloc(sizeof(struct _walkable_ast_t));
	memset(ret,0,sizeof(struct _walkable_ast_t));
	/*ret->label = strdup(op);*/
	ret->label = regstr(op);
	ret->l = l;
	ret->c = c;
	return ret;
}
Пример #3
0
Файл: vm.c Проект: graue/intp
/* setup */
v initvm(v)
{
	sk = makestack();
	rsk = makestack();
	regstk();
	regstr();
	regctl();
	regnum();
}
Пример #4
0
void ast_serialize(const ast_node_t ast,int(*func)(int,void*),void*param) {
	char*srcptr;
	/* if ast is nil, output '()' */
	/*inside_lisp = 1;*/
	if(ast==PRODUCTION_OK_BUT_EMPTY) {
		func('E', param);
		func('M', param);
		func('P', param);
		func('T', param);
		func('Y', param);
		func(0, param);
		return;
	}
	if(!ast) {
		func('(',param);
		func(')',param);
	/* if ast is pair, serialize list */
	} else if(isPair(ast)) {
		func('(',param);
		if(ast->node_flags&IS_FOREST) {
		func('@',param);
		func(' ',param);
		}
		ast_ser_list(ast,func,param);
		func(')',param);
	/* if ast is atom, output atom */
	} else if(isAtom(ast)) {
		srcptr=regstr(getAtom(ast));
		while(*srcptr!=0) {
			escape_chr(&srcptr,func,param, _LISP);
		}
/*		*output+=strlen(getAtom(ast));*/
	}
	func('\0',param);
	/*inside_lisp = 0;*/
}
Пример #5
0
void init_strreg() {
	/*init_hashtab(&str_registry, (hash_func) strreg_h, (compare_func) strcmp);*/
	/* pre-fill registry with all hardcoded strings used in the tokenizer */
	STR__whitespace		= regstr("_whitespace");
	STR__start		= regstr("_start");
	STR_Grammar		= regstr("Grammar");
	STR_Comment		= regstr("Comment");
	STR_eos			= regstr("eos");
	STR_Alt			= regstr("Alt");
	STR_RawSeq		= regstr("RawSeq");
	STR_Seq			= regstr("Seq");
	STR_NT			= regstr("NT");
	STR_Epsilon		= regstr("Epsilon");
	STR_EOF			= regstr("EOF");
	STR_Rep0N		= regstr("Rep0N");
	STR_Rep01		= regstr("Rep01");
	STR_Rep1N		= regstr("Rep1N");
	STR_RE			= regstr("RE");
	STR_RPL			= regstr("RPL");
	STR_STR			= regstr("STR");
	STR_BOW			= regstr("BOW");
	STR_AddToBag		= regstr("AddToBag");
	STR_BKeep		= regstr("BKeep");
	STR_T			= regstr("T");
	STR_Prefix		= regstr("Prefix");
	STR_Postfix		= regstr("Postfix");
	STR_TransientRule	= regstr("TransientRule");
	STR_OperatorRule	= regstr("OperatorRule");
	STR_Space		= regstr("Space");
	STR_NewLine		= regstr("NewLine");
	STR_Indent		= regstr("Indent");
	STR_Dedent		= regstr("Dedent");
	STR_strip_me		= regstr("strip.me");
	/*atexit(deinit_strreg);*/
}
Пример #6
0
void OSInfo::fillXml(QDomDocument &doc, QDomElement &root, const QString &os, const QString &osver, const QList<QHostAddress> &qlBind) {
	QDomElement tag;
	QDomText t;
	bool bIs64;
	bool bSSE2 = false;
	QString cpu_id, cpu_extid;

	tag=doc.createElement(QLatin1String("machash"));
	root.appendChild(tag);
	t=doc.createTextNode(OSInfo::getMacHash(qlBind));
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("version"));
	root.appendChild(tag);
	t=doc.createTextNode(QLatin1String(MUMTEXT(MUMBLE_VERSION_STRING)));
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("release"));
	root.appendChild(tag);
	t=doc.createTextNode(QLatin1String(MUMBLE_RELEASE));
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("os"));
	root.appendChild(tag);
	t=doc.createTextNode(os);
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("osver"));
	root.appendChild(tag);
	t=doc.createTextNode(osver);
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("qt"));
	root.appendChild(tag);
	t=doc.createTextNode(QString::fromLatin1(qVersion()));
	tag.appendChild(t);

#if defined(Q_OS_WIN)
	BOOL bIsWow64 = FALSE;
	IsWow64Process(GetCurrentProcess(), &bIsWow64);
	bIs64 = bIsWow64;
#elif defined(Q_OS_MAC)
	size_t len = sizeof(bool);
	sysctlbyname("hw.cpu64bit_capable", &bIs64, &len, NULL, 0);
#else
	bIs64 = (QSysInfo::WordSize == 64);
#endif
	tag=doc.createElement(QLatin1String("is64bit"));
	root.appendChild(tag);
	t=doc.createTextNode(QString::number(bIs64 ? 1 : 0));
	tag.appendChild(t);

#if defined(Q_OS_WIN)
#define regstr(x) QString::fromLatin1(reinterpret_cast<const char *>(& x), 4)
	int chop;
	int cpuinfo[4];

	__cpuid(cpuinfo, 1);
	bSSE2 = (cpuinfo[3] & 0x04000000);

	__cpuid(cpuinfo, 0);

	cpu_id = regstr(cpuinfo[1]) + regstr(cpuinfo[3]) + regstr(cpuinfo[2]);

	for (unsigned int j=2; j<=4;++j) {
		__cpuid(cpuinfo, 0x80000000 + j);
		cpu_extid += regstr(cpuinfo[0]) + regstr(cpuinfo[1]) + regstr(cpuinfo[2]) + regstr(cpuinfo[3]);
	}

	cpu_id = cpu_id.trimmed();
	chop = cpu_id.indexOf(QLatin1Char('\0'));
	if (chop != -1)
		cpu_id.truncate(chop);

	cpu_extid = cpu_extid.trimmed();
	chop = cpu_extid.indexOf(QLatin1Char('\0'));
	if (chop != -1)
		cpu_extid.truncate(chop);
#endif

	tag=doc.createElement(QLatin1String("cpu_id"));
	root.appendChild(tag);
	t=doc.createTextNode(cpu_id);
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("cpu_extid"));
	root.appendChild(tag);
	t=doc.createTextNode(cpu_extid);
	tag.appendChild(t);

	tag=doc.createElement(QLatin1String("cpu_sse2"));
	root.appendChild(tag);
	t=doc.createTextNode(QString::number(bSSE2 ? 1 : 0));
	tag.appendChild(t);
}