/* xlMakeChar - convert an integer to a character node */ xlEXPORT xlValue xlMakeChar(int ch) { xlValue val; val = allocnode(xlCHARACTER); val->value.chcode = ch; return val; }
/* 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; }
/* 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; }
/* 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; }
/* 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; }
/* 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; }
/** * 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; }
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; }
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;