static void WriteLong(this ISyntaxHighlightOutput output, InstructionVM instr) { output.WriteShort(instr); output.WriteSpace(); output.Write(instr.Code.ToOpCode().Name, TextTokenKind.OpCode); output.WriteSpace(); Write(output, instr.InstructionOperandVM); }
static void Write(this ISyntaxHighlightOutput output, IList <InstructionVM> instrs) { output.Write("[", TextTokenKind.Operator); for (int i = 0; i < instrs.Count; i++) { if (i > 0) { output.Write(",", TextTokenKind.Operator); output.WriteSpace(); } output.WriteShort(instrs[i]); } output.Write("]", TextTokenKind.Operator); }
public static void WriteObject(ISyntaxHighlightOutput output, object obj, WriteObjectFlags flags = WriteObjectFlags.None) { if (IsNull(obj)) { output.Write("null", TextTokenKind.Keyword); return; } var mr = obj as IMemberRef; if (mr != null) { if (simpleILPrinter.Write(SyntaxHighlightOutputToTextOutput.Create(output), mr)) { return; } } var local = obj as LocalVM; if (local != null) { output.Write(IdentifierEscaper.Escape(GetLocalName(local.Name, local.Index)), TextTokenKind.Local); output.WriteSpace(); output.WriteLocalParameterIndex(local.Index); return; } var parameter = obj as Parameter; if (parameter != null) { if (parameter.IsHiddenThisParameter) { output.Write("this", TextTokenKind.Keyword); } else { output.Write(IdentifierEscaper.Escape(GetParameterName(parameter.Name, parameter.Index)), TextTokenKind.Parameter); output.WriteSpace(); output.WriteLocalParameterIndex(parameter.Index); } return; } var instr = obj as InstructionVM; if (instr != null) { if ((flags & WriteObjectFlags.ShortInstruction) != 0) { output.WriteShort(instr); } else { output.WriteLong(instr); } return; } var instrs = obj as IList <InstructionVM>; if (instrs != null) { output.Write(instrs); return; } var methodSig = obj as MethodSig; if (methodSig != null) { simpleILPrinter.Write(SyntaxHighlightOutputToTextOutput.Create(output), methodSig); return; } if (obj is TypeSig) { simpleILPrinter.Write(SyntaxHighlightOutputToTextOutput.Create(output), obj as TypeSig); return; } if (obj is Code) { output.Write(((Code)obj).ToOpCode().Name, TextTokenKind.OpCode); return; } // This code gets called by the combobox and it sometimes passes in the empty string. // It's never shown in the UI. Debug.Assert(string.Empty.Equals(obj), "Shouldn't be here"); output.Write(obj.ToString(), TextTokenKind.Text); }