str RUNinline(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p) { Symbol qc; str modnme = getVarConstant(mb, getArg(p, 1)).val.sval; str fcnnme = getVarConstant(mb, getArg(p, 2)).val.sval; (void) stk; (void) p; qc = findSymbol(cntxt ->nspace, getName(modnme), putName(fcnnme)); if (qc) MACROprocessor(cntxt, mb, qc); return MAL_SUCCEED; }
int OPTmacroImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p) { MalBlkPtr target= mb; Module s; Symbol t; str mod,fcn; int j; (void) cntxt; (void) stk; if( p->argc == 3){ mod= getArgDefault(mb,p,1); fcn= getArgDefault(mb,p,2); } else { mod= getArgDefault(mb,p,1); fcn= getArgDefault(mb,p,2); t= findSymbol(cntxt->nspace, putName(mod, strlen(mod)), fcn); if( t == 0) return 0; target= t->def; mod= getArgDefault(mb,p,3); fcn= getArgDefault(mb,p,4); } s = findModule(cntxt->nspace, putName(mod, strlen(mod))); if (s == 0) return 0; if (s->subscope) { j = getSubScope(fcn); for (t = s->subscope[j]; t != NULL; t = t->peer) if (t->def->errors == 0) { if (getSignature(t)->token == FUNCTIONsymbol){ str msg = MACROprocessor(cntxt, target, t); if( msg != MAL_SUCCEED) GDKfree(msg); } } } return 1; }