public Instruction CopyTo(Dictionary <object, object> ops, Instruction instr) { instr.OpCode = this.Code.ToOpCode(); instr.Operand = BodyUtils.ToOperandModel(ops, this.Operand); instr.SequencePoint = this.SequencePoint; return(instr); }
protected override void CopyItemsAsText(LocalVM[] locals) { Array.Sort(locals, (a, b) => a.Index.CompareTo(b.Index)); var output = new PlainTextOutput(); for (int i = 0; i < locals.Length; i++) { if (i > 0) { output.WriteLine(); } var local = locals[i]; output.Write(local.Index.ToString(), TextTokenType.Number); output.Write('\t', TextTokenType.Text); output.Write(local.IsPinned ? "P" : string.Empty, TextTokenType.Text); output.Write('\t', TextTokenType.Text); output.Write(local.IsCompilerGenerated ? "C" : string.Empty, TextTokenType.Text); output.Write('\t', TextTokenType.Text); output.Write(local.Name ?? string.Empty, TextTokenType.Local); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, local.Type); } if (locals.Length > 1) { output.WriteLine(); } Clipboard.SetText(output.ToString()); }
public ExceptionHandlerOptions(Dictionary <object, object> ops, ExceptionHandler eh) { this.TryStart = (InstructionVM)BodyUtils.TryGetVM(ops, eh.TryStart); this.TryEnd = (InstructionVM)BodyUtils.TryGetVM(ops, eh.TryEnd); this.FilterStart = (InstructionVM)BodyUtils.TryGetVM(ops, eh.FilterStart); this.HandlerStart = (InstructionVM)BodyUtils.TryGetVM(ops, eh.HandlerStart); this.HandlerEnd = (InstructionVM)BodyUtils.TryGetVM(ops, eh.HandlerEnd); this.CatchType = eh.CatchType; this.HandlerType = eh.HandlerType; }
public ExceptionHandler CopyTo(Dictionary <object, object> ops, ExceptionHandler eh) { eh.TryStart = BodyUtils.TryGetModel(ops, this.TryStart) as Instruction; eh.TryEnd = BodyUtils.TryGetModel(ops, this.TryEnd) as Instruction; eh.FilterStart = BodyUtils.TryGetModel(ops, this.FilterStart) as Instruction; eh.HandlerStart = BodyUtils.TryGetModel(ops, this.HandlerStart) as Instruction; eh.HandlerEnd = BodyUtils.TryGetModel(ops, this.HandlerEnd) as Instruction; eh.CatchType = this.CatchType; eh.HandlerType = this.HandlerType; return(eh); }
protected override void CopyItemsAsText(ExceptionHandlerVM[] ehs) { Array.Sort(ehs, (a, b) => a.Index.CompareTo(b.Index)); var output = new PlainTextOutput(); for (int i = 0; i < ehs.Length; i++) { if (i > 0) { output.WriteLine(); } var eh = ehs[i]; output.Write(eh.Index.ToString(), TextTokenType.Number); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, eh.TryStartVM.SelectedItem); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, eh.TryEndVM.SelectedItem); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, eh.FilterStartVM.SelectedItem); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, eh.HandlerStartVM.SelectedItem); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, eh.HandlerEndVM.SelectedItem); output.Write('\t', TextTokenType.Text); output.Write(((EnumVM)eh.HandlerTypeVM.Items[eh.HandlerTypeVM.SelectedIndex]).Name, TextTokenType.Text); output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, eh.CatchType); } if (ehs.Length > 1) { output.WriteLine(); } Clipboard.SetText(output.ToString()); }
public static void CopyItemsAsTextToClipboard(InstructionVM[] instrs) { var output = new PlainTextOutput(); for (int i = 0; i < instrs.Length; i++) { if (i > 0) { output.WriteLine(); } var instr = instrs[i]; output.Write(instr.Index.ToString(), TextTokenType.Number); output.Write('\t', TextTokenType.Text); output.Write(string.Format("{0:X4}", instr.Offset), TextTokenType.Label); output.Write('\t', TextTokenType.Text); output.Write(instr.Code.ToOpCode().ToString(), TextTokenType.OpCode); switch (instr.InstructionOperandVM.InstructionOperandType) { case InstructionOperandType.None: break; case InstructionOperandType.SByte: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.SByte.StringValue, TextTokenType.Number); break; case InstructionOperandType.Byte: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.Byte.StringValue, TextTokenType.Number); break; case InstructionOperandType.Int32: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.Int32.StringValue, TextTokenType.Number); break; case InstructionOperandType.Int64: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.Int64.StringValue, TextTokenType.Number); break; case InstructionOperandType.Single: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.Single.StringValue, TextTokenType.Number); break; case InstructionOperandType.Double: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.Double.StringValue, TextTokenType.Number); break; case InstructionOperandType.String: output.Write('\t', TextTokenType.Text); output.Write(instr.InstructionOperandVM.String.StringValue, TextTokenType.String); break; case InstructionOperandType.Field: case InstructionOperandType.Method: case InstructionOperandType.Token: case InstructionOperandType.Type: case InstructionOperandType.MethodSig: case InstructionOperandType.BranchTarget: case InstructionOperandType.SwitchTargets: case InstructionOperandType.Local: case InstructionOperandType.Parameter: output.Write('\t', TextTokenType.Text); BodyUtils.WriteObject(output, instr.InstructionOperandVM.Value); break; default: throw new InvalidOperationException(); } } if (instrs.Length > 1) { output.WriteLine(); } Clipboard.SetText(output.ToString()); }
public InstructionOptions(Dictionary <object, object> ops, Instruction instr) { this.Code = instr.OpCode.Code; this.Operand = BodyUtils.ToOperandVM(ops, instr.Operand); this.SequencePoint = instr.SequencePoint; }