private static void _ListFunc(LuaProto p, ListFuncDelegate outputEvent) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); string s = (p.Source != null) ? p.Source : "=?"; if (s[0] == '@' || s[0] == '=') { s = s.Substring(1); } else if ((int)s[0] == 27) { s = "(bstring)"; } else { s = "(string)"; } sb.Append(string.Format("{0} <{1}:{2},{3}> ({4} instructions)", p.LineDefined == 0 ? "main" : "function", s, p.LineDefined, p.LastLineDefined, p.Code.Count)).Append("\n"); sb.Append(string.Format( "{0}{1} params, {2} slots, {3} upvalue, {4} locals, {5} constants, {6} functions", p.NumParams, p.IsVarArg ? "+" : "", p.MaxStackSize, p.Upvalues.Count, p.LocVars.Count, p.K.Count, p.P.Count)).Append("\n"); for (int i = 0; i < p.Code.Count; ++i) { var ins = p.Code[i]; var line = p.LineInfo[i]; sb.Append((i + 1).ToString()).Append("\t") .Append("[" + line + "]").Append("\t") .Append(ins.ToString()).Append("\t") .Append("; ").Append(line).Append("\n"); } if (outputEvent != null) { outputEvent(sb.ToString()); } //foreach( var child in p.P ) for (int i = 0; i < p.P.Count; i++) { //_ListFunc( child, outputEvent ); _ListFunc(p.P[i], outputEvent); } }
private static void _ListFunc( LuaProto p, ListFuncDelegate outputEvent ) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); string s = (p.Source != null) ? p.Source : "=?"; if( s[0] == '@' || s[0] == '=' ) s = s.Substring(1); else if( (int)s[0] == 27 ) s = "(bstring)"; else s = "(string)"; sb.Append( string.Format("{0} <{1}:{2},{3}> ({4} instructions)", p.LineDefined==0 ? "main" : "function", s, p.LineDefined, p.LastLineDefined, p.Code.Count) ).Append("\n"); sb.Append( string.Format( "{0}{1} params, {2} slots, {3} upvalue, {4} locals, {5} constants, {6} functions", p.NumParams, p.IsVarArg ? "+" : "", p.MaxStackSize, p.Upvalues.Count, p.LocVars.Count, p.K.Count, p.P.Count ) ).Append("\n"); for( int i=0; i<p.Code.Count; ++i ) { var ins = p.Code[i]; var line = p.LineInfo[i]; sb.Append( (i+1).ToString() ).Append( "\t" ) .Append( "["+line+"]" ).Append( "\t" ) .Append( ins.ToString() ).Append( "\t" ) .Append( "; " ).Append(line).Append("\n"); } if( outputEvent != null ) outputEvent( sb.ToString() ); foreach( var child in p.P ) { _ListFunc( child, outputEvent ); } }