public Context CreateSubContext(ObjLuaFunction fkt, out string paramlist) { Context c = new Context(globals, indent + "\t"); paramlist = ""; if (fkt != null) { int lc = 0; for (int i = 0; i < fkt.ArgumentCount; i++) { if (i > 0) { paramlist += ", "; } paramlist += "param" + i; c.ForceDefineLocal((ushort)lc, "param" + i); c.SetLocal((ushort)lc, 0.0); lc++; } /*for (int i=0; i<fkt.StackSize; i++) * { * c.ForceDefineLocal((ushort)lc, "stack"+i); * c.SetLocal((ushort)lc, 0.0); * lc++; * }*/ } return(c); }
public void Run(Context cx) { ObjLuaFunction fkt = cx.KProto(BX); cx.SetReg(this.A, fkt); System.IO.StreamWriter sw = new System.IO.StreamWriter(new System.IO.MemoryStream()); string paramlist; Context scx = cx.CreateSubContext(fkt, out paramlist); sw.WriteLine(); sw.WriteLine(cx.Indent + "function {{name}}(" + paramlist + ")"); fkt.ToSource(sw, scx); sw.Write(cx.Indent + "end"); sw.WriteLine(); sw.Flush(); sw.BaseStream.Seek(0, System.IO.SeekOrigin.Begin); System.IO.StreamReader sr = new System.IO.StreamReader(sw.BaseStream); cx.SetSReg(A, sr.ReadToEnd()); sw.Close(); }
internal void Init(ObjLuaFunction parent) { this.parent = parent; pc = -1; }
public CONCAT(uint val, ObjLuaFunction parent) : base(val, parent) { }
public TextLine(uint val, ObjLuaFunction parent, string txt) : base(val, parent) { this.txt = txt; }
public FORLOOP(uint val, ObjLuaFunction parent) : base(val, parent) { }
public RETURN(uint val, ObjLuaFunction parent) : base(val, parent) { }
public GETTABLE(uint val, ObjLuaFunction parent) : base(val, parent) { }
public LOADK(uint val, ObjLuaFunction parent) : base(val, parent) { }
public GT(uint val, ObjLuaFunction parent) : base(">", "<=", val, parent) { }
public LT(uint val, ObjLuaFunction parent) : base("<", ">=", val, parent) { }
public EQ(uint val, ObjLuaFunction parent) : base("==", "~=", val, parent) { }
public IF(string symb, string nsymb, uint val, ObjLuaFunction parent) : base(val, parent) { this.symb = symb; this.nsymb = nsymb; }
public CLOSURE(uint val, ObjLuaFunction parent) : base(val, parent) { }
public Operator(uint val, ObjLuaFunction parent) : base(val, parent) { }
public MOVE(uint val, ObjLuaFunction parent) : base(val, parent) { }
public SELF(uint val, ObjLuaFunction parent) : base(val, parent) { }
public GETGLOBAL(uint val, ObjLuaFunction parent) : base(val, parent) { }
public TEST(uint val, ObjLuaFunction parent) : base(val, parent) { }
public CALL(uint val, ObjLuaFunction parent) : base(val, parent) { }
public TFORREP(uint val, ObjLuaFunction parent) : base(val, parent) { }