Пример #1
0
/* xlMakeChar - convert an integer to a character node */
xlEXPORT xlValue xlMakeChar(int ch)
{
    xlValue val;
    val = allocnode(xlCHARACTER);
    val->value.chcode = ch;
    return val;
}
Пример #2
0
/* xlNewStream - allocate and initialize a new stream */
xlEXPORT xlValue xlNewStream(int type,short flags)
{
    xlValue val = allocnode(type);
    xlSetPFlags(val,flags);
    xlSetSaveCh(val,'\0');
    return val;
}
Пример #3
0
/* xlMakeFlonum - convert a floating point number to a flonum node */
xlEXPORT xlValue xlMakeFlonum(xlFLOTYPE n)
{
    xlValue val;
    val = allocnode(xlFLONUM);
    val->value.flonum = n;
    return val;
}
Пример #4
0
/* xlMakeXSubr - convert a function to an xsubr */
xlEXPORT xlValue xlMakeXSubr(char *name,void (*subr)(void))
{
    xlValue val;
    val = allocnode(xlXSUBR);
    val->value.subr.subr = (xlValue (*)(void))subr;
    val->value.subr.name = xlCopyCString(name);
    return val;
}
Пример #5
0
/* xlMakeForeignPtr - convert a c pointer to a foreign pointer */
xlEXPORT xlValue xlMakeForeignPtr(xlValue type,void *p)
{
    xlValue val;
    xlCPush(type);
    val = allocnode(xlFOREIGNPTR);
    xlSetFPType(val,xlPop());
    xlSetFPtr(val,p);
    return val;
}
Пример #6
0
/* xlMakeFixnum - convert an integer to a fixnum node */
xlEXPORT xlValue xlMakeFixnum(xlFIXTYPE n)
{
    xlValue val;
    if (xlSmallFixnumP(n))
        return xlMakeSmallFixnum(n);
    val = allocnode(xlFIXNUM);
    val->value.fixnum = n;
    return val;
}
Пример #7
0
    /**
     * TODO
     */
    inline bool push(void * const data) {
        if (!data) return false;
        Node * n = allocnode();
        n->data = data; n->next = NULL;
        WMB();
        tail->next = n;
        tail       = n;

        return true;
    }
Пример #8
0
void
insertnode(uint32_t key, uint32_t offset)
{
	int i;
	Node *n, **l;

	l = llookup(key);
	if(*l == nil){
		if(l==&hash[key&(nhash-1)])
			nnew++;
		*l = allocnode();
		(*l)->key = key;
	}
	n = *l;

	/* add or replace last */
	for(i=0; i<NOFF-1 && n->offset[i]!=-1; i++)
		;
	n->offset[i] = offset;
}
Пример #9
0
int Re::CompileS(const char *ptr, int caseflag, int &errindex)
{
	expr=ptr;
	origexpr=expr;
	init();
	nextid=0;
	first=0;
	isCaret=0;
	isDummy=0;
	casesensitive=caseflag;
	matchFull=0;

int	rc=0;

	try
	{
	RegExpNode **p=CompileOrClause(&first);

		if (*expr == '!')
		{
		int dummy;

			++expr;
			if ((chainedre=new Re) == 0)
				outofmem();
			if ( chainedre->CompileS(expr, caseflag, dummy) < 0)
			{
				expr += dummy;
				throw -1;
			}
			chainedre->prevre=this;
			if (VerboseLevel() > 7)
				merr.write("\n*** CHAINED TO ***\n");

		} else if (curchar())	throw -1;

		final=*p=allocnode();
		final->thechar=REFINAL;