Example #1
0
        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);
        }
Example #2
0
        public void RegFunc(CFunc func, string name)
        {
            var nfunc = new SynFunc(name);

            nfunc.RealCode = func;
            RegFunc(nfunc);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
 public void RegFunc(SynFunc func)
 {
     Funcs.Add(func);
 }