Alexandria.Plugins.General.LuaInstruction.ToString C# (CSharp) Метод

ToString() публичный Метод

public ToString ( ) : string
Результат string
        public override string ToString()
        {
            string text = Opcode.ToString();

            switch (Opcode) {
                case LuaOpcode.Call:
                    text = (A - 1 == A + C - 2) ? "" : string.Format("{0} = ", GetArgumentRegisterRange(A, A + C - 2));
                    return text + string.Format("{0}({1})", GetArgumentRegister(A), GetArgumentRegisterRange(A + 1, A + B - 1));

                case LuaOpcode.Closure:
                    LuaFunction closure = Function.Closures[Bx];
                    text = string.Format("{0} = closure({1}", GetArgumentRegister(A), closure.SourceOrIndex);
                    if (closure.UpValueCount != 0)
                        text += string.Format(", {0}", GetArgumentRegisterRange(A, A + closure.UpValueCount - 1));
                    return text + ")";

                case LuaOpcode.GetGlobal:
                    return string.Format("{0} = {1}", GetArgumentRegister(A), GetArgumentGlobal(Bx));

                case LuaOpcode.LoadBoolean: // R(A) = (bool)B; if(C) PC++
                    return string.Format("{0} = {1}{2}", GetArgumentRegister(A), GetArgumentBoolean(B), (C != 0) ? "; PC++" : "");

                case LuaOpcode.LoadConstant: // R(A) = Constant(Bx)
                    return string.Format("{0} = {1}", GetArgumentRegister(A), GetArgumentLiteral(Bx));

                case LuaOpcode.Move: // R(A) = R(B)
                    return string.Format("{0} = {1}", GetArgumentRegister(A), GetArgumentRegister(B));

                case LuaOpcode.Return: // return R(A to A+B-2); if (B == 0) then return up to 'top'
                    if (A - 1 == A + B - 2)
                        return "return";
                    return string.Format("return {0}", B == 0 ? GetArgumentRegister(A) + " to top" : GetArgumentRegisterRange(A, A + B - 2));

                case LuaOpcode.Self: return string.Format("{0} = {1}; {2} = {3}.{4}", GetArgumentRegister(A + 1), GetArgumentRegister(B), GetArgumentRegister(A), GetArgumentRegister(B), GetArgumentRegisterConstant
                    (C));

                case LuaOpcode.SetGlobal: // Global[Constant[Bx]] = R(A)
                    return string.Format("{0} = {1}", GetArgumentGlobal(Bx), GetArgumentRegister(A));

                default:
                    foreach (LuaOpcodeArgument argument in Arguments)
                        text += " " + GetArgument(argument);
                    break;
            }

            return text;
        }