void WriteILOffset(ITextColorWriter output, uint offset) { // Offsets are always in hex if (offset <= ushort.MaxValue) output.Write(BoxedTextColor.Number, string.Format(GetHexFormatUInt16(), offset)); else output.Write(BoxedTextColor.Number, string.Format(GetHexFormatUInt32(), offset)); }
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) { var tdr = TryGetTypeDefOrRef(); if (tdr == null) output.Write(BoxedTextColor.Error, "???"); else new NodePrinter().Write(output, decompiler, tdr, GetShowToken(options)); }
/// <summary> /// Writes a file /// </summary> /// <param name="output">Output</param> /// <param name="decompiler">Decompiler</param> /// <param name="document">Document</param> public void Write(ITextColorWriter output, IDecompiler decompiler, IDsDocument document) { var filename = GetFilename(document); var peImage = document.PEImage; if (peImage != null) output.Write(IsExe(peImage) ? BoxedTextColor.AssemblyExe : BoxedTextColor.Assembly, NameUtilities.CleanName(filename)); else output.Write(BoxedTextColor.Text, NameUtilities.CleanName(filename)); }
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) { output.Write(BoxedTextColor.Number, string.Format("{0:X2}", (byte)MetaDataTableVM.Table)); output.WriteSpace(); output.Write(BoxedTextColor.HexTableName, string.Format("{0}", MetaDataTableVM.Table)); output.WriteSpace(); output.Write(BoxedTextColor.Punctuation, "("); output.Write(BoxedTextColor.Number, string.Format("{0}", MetaDataTableVM.Rows)); output.Write(BoxedTextColor.Punctuation, ")"); }
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) { output.Write(BoxedTextColor.HexPeSection, dnSpy_AsmEditor_Resources.HexNode_PE_Section); output.WriteSpace(); output.Write(BoxedTextColor.Operator, "#"); output.Write(BoxedTextColor.Number, SectionNumber.ToString()); output.Write(BoxedTextColor.Punctuation, ":"); output.WriteSpace(); output.Write(BoxedTextColor.HexPeSectionName, string.Format("{0}", imageSectionHeaderVM.NameVM.String)); }
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) { output.Write(BoxedTextColor.Number, string.Format("{0}", index + 1)); if (infoTuple != null) { output.WriteSpace(); output.Write(BoxedTextColor.Operator, "-"); output.WriteSpace(); infoTuple.Item2(output); } }
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) { if ((options & DocumentNodeWriteOptions.ToolTip) == 0) new NodePrinter().Write(output, decompiler, Document); else { output.Write(BoxedTextColor.Text, TargetFrameworkUtils.GetArchString(Document.PEImage.ImageNTHeaders.FileHeader.Machine)); output.WriteLine(); output.WriteFilename(Document.Filename); } }
protected override void Write(ITextColorWriter output, IDecompiler decompiler) { if (hidesParent) { output.Write(BoxedTextColor.Punctuation, "("); output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.HidesParent); output.Write(BoxedTextColor.Punctuation, ")"); output.WriteSpace(); } decompiler.WriteType(output, analyzedProperty.DeclaringType, true); output.Write(BoxedTextColor.Operator, "."); new NodePrinter().Write(output, decompiler, analyzedProperty, Context.ShowToken, null); }
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) { if ((options & DocumentNodeWriteOptions.ToolTip) == 0) new NodePrinter().Write(output, decompiler, Document.AssemblyDef, false, Context.ShowAssemblyVersion, Context.ShowAssemblyPublicKeyToken); else { output.Write(Document.AssemblyDef); output.WriteLine(); output.Write(BoxedTextColor.Text, TargetFrameworkInfo.Create(Document.AssemblyDef.ManifestModule).ToString()); output.WriteLine(); output.Write(BoxedTextColor.Text, TargetFrameworkUtils.GetArchString(Document.AssemblyDef.ManifestModule)); output.WriteLine(); output.WriteFilename(Document.Filename); } }
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) { if ((options & DocumentNodeWriteOptions.ToolTip) == 0) new NodePrinter().Write(output, decompiler, Document.ModuleDef, false); else { output.WriteModule(Document.ModuleDef.Name); output.WriteLine(); output.Write(BoxedTextColor.Text, TargetFrameworkInfo.Create(Document.ModuleDef).ToString()); output.WriteLine(); output.Write(BoxedTextColor.Text, TargetFrameworkUtils.GetArchString(Document.ModuleDef)); output.WriteLine(); output.WriteFilename(Document.Filename); } }
/// <summary> /// Writes an assembly /// </summary> /// <param name="output">Output</param> /// <param name="decompiler">Decompiler</param> /// <param name="asm">Assembly</param> /// <param name="showToken">true to write tokens</param> /// <param name="showAssemblyVersion">true to write version</param> /// <param name="showAssemblyPublicKeyToken">true to write public key token</param> public void Write(ITextColorWriter output, IDecompiler decompiler, AssemblyDef asm, bool showToken, bool showAssemblyVersion, bool showAssemblyPublicKeyToken) { output.Write(IsExe(asm.ManifestModule) ? BoxedTextColor.AssemblyExe : BoxedTextColor.Assembly, asm.Name); bool showAsmVer = showAssemblyVersion; bool showPublicKeyToken = showAssemblyPublicKeyToken && !PublicKeyBase.IsNullOrEmpty2(asm.PublicKeyToken); if (showAsmVer || showPublicKeyToken) { output.WriteSpace(); output.Write(BoxedTextColor.Punctuation, "("); bool needComma = false; if (showAsmVer) { if (needComma) output.WriteCommaSpace(); needComma = true; output.Write(asm.Version); } if (showPublicKeyToken) { if (needComma) output.WriteCommaSpace(); needComma = true; var pkt = asm.PublicKeyToken; if (PublicKeyBase.IsNullOrEmpty2(pkt)) output.Write(BoxedTextColor.Keyword, "null"); else output.Write(BoxedTextColor.Number, pkt.ToString()); } output.Write(BoxedTextColor.Punctuation, ")"); } WriteToken(output, asm, showToken); }
void WriteMemberRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(1));
void WritePropertyInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceProperty, ReadStringsHeap(1));
/// <summary> /// Creates a new <see cref="IDecompilerOutput"/> instance /// </summary> /// <param name="output">Output to use</param> /// <returns></returns> public static IDecompilerOutput Create(ITextColorWriter output) => new TextColorWriterToDecompilerOutput(output);
public override void WriteNamespaceToolTip(ITextColorWriter output, string @namespace) => new VisualBasicFormatter(output, DefaultFormatterOptions, null).WriteNamespaceToolTip(@namespace);
public override void WriteToolTip(ITextColorWriter output, IMemberRef member, IHasCustomAttribute typeAttributes) => new VisualBasicFormatter(output, DefaultFormatterOptions, null).WriteToolTip(member);
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.HexStorageHeader, dnSpy_AsmEditor_Resources.HexNode_StorageHeader);
/// <summary> /// Formats an object ID name /// </summary> /// <param name="context">Evaluation context</param> /// <param name="output">Output</param> /// <param name="id">Object id</param> public abstract void FormatObjectIdName(DbgEvaluationContext context, ITextColorWriter output, uint id);
void WriteManifestResourceInfo(ITextColorWriter output) => output.WriteFilename(ReadStringsHeap(2));
/// <summary> /// Formats a stowed exception name /// </summary> /// <param name="context">Evaluation context</param> /// <param name="output">Output</param> /// <param name="id">Stowed exception id</param> public abstract void FormatStowedExceptionName(DbgEvaluationContext context, ITextColorWriter output, uint id);
/// <summary> /// Formats a return value name /// </summary> /// <param name="context">Evaluation context</param> /// <param name="output">Output</param> /// <param name="id">Return value id</param> public abstract void FormatReturnValueName(DbgEvaluationContext context, ITextColorWriter output, uint id);
public override void Format(ITextColorWriter writer, DbgStackFrameFormatOptions options) { writer.Write(BoxedTextColor.Punctuation, "["); writer.Write(BoxedTextColor.Text, name); writer.Write(BoxedTextColor.Punctuation, "]"); }
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.HexTablesStream, dnSpy_AsmEditor_Resources.HexNode_TablesStream);
/// <inheritdoc/> protected sealed override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => output.WriteFilename(Resource.Name);
void WriteImplMapInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(2));
/// <summary> /// Formats a stack frame /// </summary> /// <param name="evalInfo">Evaluation info</param> /// <param name="output">Output</param> /// <param name="options">Stack frame options</param> /// <param name="valueOptions">Value option</param> /// <param name="cultureInfo">Culture or null to use invariant culture</param> public abstract void FormatFrame(DbgEvaluationInfo evalInfo, ITextColorWriter output, DbgStackFrameFormatterOptions options, DbgValueFormatterOptions valueOptions, CultureInfo cultureInfo);
void WriteFileInfo(ITextColorWriter output) => output.WriteFilename(ReadStringsHeap(1));
public virtual void WriteToolTip(ITextColorWriter output, IMemberRef member, IHasCustomAttribute typeAttributes) => new CSharpFormatter(output, DefaultFormatterOptions, null).WriteToolTip(member);
public VisualBasicPrimitiveValueFormatter(ITextColorWriter output, ValueFormatterOptions options, CultureInfo cultureInfo) { this.output = output; this.options = options; this.cultureInfo = cultureInfo; }
public override void Write(ITextColorWriter output, IMemberRef member, FormatterOptions flags) => new VisualBasicFormatter(output, flags, null).Write(member);
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Resources.BaseTypeFolder);
TextColorWriterToDecompilerOutput(ITextColorWriter output) { this.output = output; indenter = new Indenter(4, 4, true); offset = 0; }
/// <summary> /// Formats the actual type. Returns false if nothing was written to <paramref name="output"/> /// </summary> /// <param name="context">Evaluation context</param> /// <param name="frame">Frame</param> /// <param name="output">Output</param> /// <param name="cultureInfo">Culture or null to use invariant culture</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns></returns> public virtual bool FormatActualType(DbgEvaluationContext context, DbgStackFrame frame, ITextColorWriter output, CultureInfo cultureInfo, CancellationToken cancellationToken) => false;
public TabPrinter(ITextColorWriter output) { this.output = output; }
/// <summary> /// Formats a value's type /// </summary> /// <param name="evalInfo">Evaluation info</param> /// <param name="output">Output</param> /// <param name="value">Value to format</param> /// <param name="options">Options</param> /// <param name="cultureInfo">Culture or null to use invariant culture</param> public abstract void FormatType(DbgEvaluationInfo evalInfo, ITextColorWriter output, DbgValue value, DbgValueFormatterTypeOptions options, CultureInfo cultureInfo);
protected override void Write(ITextColorWriter output, ILanguage language) => output.Write(BoxedTextColor.Text, dnSpy_Resources.DerivedTypes);
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => WriteCore(output, options);
void WriteNamespaceName(ITextColorWriter output, int nsIndex, int nameIndex) { var ns = ReadStringsHeap(nsIndex); var name = ReadStringsHeap(nameIndex); output.Write(BoxedTextColor.Type, name); if (!string.IsNullOrEmpty(ns)) { output.WriteSpace(); output.Write(BoxedTextColor.Operator, "-"); output.WriteSpace(); var parts = ns.Split('.'); for (int i = 0; i < parts.Length; i++) { output.Write(BoxedTextColor.Namespace, parts[i]); if (i + 1 < parts.Length) output.Write(BoxedTextColor.Operator, "."); } } }
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.InstantiatedByTreeNode);
void WriteFieldInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceField, ReadStringsHeap(1));
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.UsedByTreeNode);
public override void WriteToolTip(ITextColorWriter output, ISourceVariable variable) => new VisualBasicFormatter(output, DefaultFormatterOptions, null).WriteToolTip(variable);
protected abstract void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options);
public BreakpointPrinter(ITextColorWriter output, bool useHex, IDecompiler decompiler) { this.output = output; this.useHex = useHex; this.decompiler = decompiler; }
void WriteTypeDefInfo(ITextColorWriter output) => WriteNamespaceName(output, 2, 1);
void WriteToken(ITextColorWriter output, uint token) { // Tokens are always in hex output.Write(BoxedTextColor.Number, string.Format(GetHexFormatUInt32(), token)); }
void WriteParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Parameter, ReadStringsHeap(2));
/// <inheritdoc/> protected sealed override void Write(ITextColorWriter output, IDecompiler decompiler) => output.WriteFilename(Resource.Name);
void WriteEventInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceEvent, ReadStringsHeap(1));
/// <inheritdoc/> protected sealed override void WriteToolTip(ITextColorWriter output, IDecompiler decompiler) => base.WriteToolTip(output, decompiler);
void WriteModuleRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.AssemblyModule, ReadStringsHeap(0));
protected abstract void FormatTypeName(ITextColorWriter output, DmdType type);
void WriteAssemblyRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Assembly, ReadStringsHeap(6));
protected abstract void FormatFieldName(ITextColorWriter output, DmdFieldInfo field);
void WriteExportedTypeInfo(ITextColorWriter output) => WriteNamespaceName(output, 3, 2);
protected abstract void FormatPropertyName(ITextColorWriter output, DmdPropertyInfo property);
void WriteGenericParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.TypeGenericParameter, ReadStringsHeap(3));
public abstract void FormatArrayName(ITextColorWriter output, int[] indexes);
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => new NodePrinter().Write(output, decompiler, ModuleRef, GetShowToken(options));
internal void FormatTypeName2(ITextColorWriter output, DmdType type) => FormatTypeName(output, type);