public override dynamic Exec() { Vivid.SynWave.SynFunc funcLink = Vivid.SynWave.SynHost.Active.FindFunc(FuncName); dynamic[] par = new dynamic[CallPars.Pars.Count]; int i = 0; foreach (StructExpr exp in CallPars.Pars) { par[i] = exp.Exec(); i++; } if (funcLink.Type == SynWave.FuncType.SCode) { return(funcLink.Link.Exec()); } else { return(SynHost.Active.RunFunc(funcLink, par)); } return(null); }
public void RegFunc(CFunc func, string name) { var nfunc = new SynFunc(name); nfunc.RealCode = func; RegFunc(nfunc); }
public dynamic RunFunc(SynFunc func, params dynamic[] var) { var new_scope = new SynScope(); PushScope(new_scope); if (func.Type == FuncType.CCode) { var rv = func.RealCode.Invoke(var); PopScope(); return(rv); } else { var rv = func.Link.Exec(); PopScope(); return(rv); } PopScope(); Console.WriteLine("Running:" + func.Name); return(null); }
public dynamic RunMeth(Structs.StructModule mod, string name, params dynamic[] pars) { //Console.WriteLine("Running method:" + name); var m_scope = new SynScope(); PushScope(m_scope); foreach (var vv in mod.Vars) { RegVar(vv); } var meth = mod.FindMethod(name); int pc = 0; if (meth.Pars != null && meth.Pars.Pars != null) { foreach (var p in meth.Pars.Pars) { RegVar(p); p.Value = pars[pc]; } } //var func = meth; //RunFunc(new SynFunc(meth), pars); var func = new SynFunc(meth); var val = func.Link.Exec(); var nv = new Vivid.Structs.Var(); nv.Value = val; PopScope(); return(nv); return(null); }
public void RegFunc(SynFunc func) { Funcs.Add(func); }