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)); }
/// <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}", index + 1)); if (infoTuple != null) { output.WriteSpace(); output.Write(BoxedTextColor.Operator, "-"); output.WriteSpace(); infoTuple.Item2(output); } }
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 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); } }
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)); }
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); } }
/// <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); }
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.ExtensionMethodsTreeNode);
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.HexPeOptionalHeader64, dnSpy_AsmEditor_Resources.HexNode_OptHeader64);
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(analyzedAssembly);
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.Text, dnSpy_Resources.ResourcesFolder);
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.Text, dnSpy_Resources.BaseTypeFolder);
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.HexCor20Header, dnSpy_AsmEditor_Resources.HexNode_Cor20_Header);
void WriteEventInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceEvent, ReadStringsHeap(1));
void WriteMemberRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(1));
void WriteParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Parameter, ReadStringsHeap(2));
void WriteFieldInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceField, ReadStringsHeap(1));
/// <summary> /// Writes text and a newline using default text color (<see cref="BoxedTextColor.Text"/>) /// </summary> /// <param name="writer">Writer</param> /// <param name="text">Text</param> public static void WriteLine(this ITextColorWriter writer, string text = null) { writer.Write(BoxedTextColor.Text, text); writer.Write(BoxedTextColor.Text, Environment.NewLine); }
/// <summary> /// Writes text using default text color (<see cref="BoxedTextColor.Text"/>) /// </summary> /// <param name="writer">Writer</param> /// <param name="text">Text</param> public static void Write(this ITextColorWriter writer, string text) => writer.Write(BoxedTextColor.Text, text);
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.HexTablesStream, dnSpy_AsmEditor_Resources.HexNode_TablesStream);
void WritePropertyInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceProperty, ReadStringsHeap(1));
void WriteModuleRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.AssemblyModule, ReadStringsHeap(0));
void WriteImplMapInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(2));
protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.HexStorageSignature, dnSpy_AsmEditor_Resources.HexNode_StorageSignature);
void WriteAssemblyRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Assembly, ReadStringsHeap(6));
void WriteGenericParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.TypeGenericParameter, ReadStringsHeap(3));
void OutputWrite(string s, object color) => output.Write(color, s);
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.OverridesTreeNode);
void CreateUI(ITextColorWriter output, object o, bool includeNamespace) { var ns = o as NamespaceSearchResult; if (ns != null) { output.WriteNamespace(ns.Namespace); return; } var td = o as TypeDef; if (td != null) { Debug.Assert(Context.Decompiler != null); Context.Decompiler.WriteType(output, td, includeNamespace); return; } var md = o as MethodDef; if (md != null) { output.Write(TextColorHelper.GetColor(md), IdentifierEscaper.Escape(md.Name)); return; } var fd = o as FieldDef; if (fd != null) { output.Write(TextColorHelper.GetColor(fd), IdentifierEscaper.Escape(fd.Name)); return; } var pd = o as PropertyDef; if (pd != null) { output.Write(TextColorHelper.GetColor(pd), IdentifierEscaper.Escape(pd.Name)); return; } var ed = o as EventDef; if (ed != null) { output.Write(TextColorHelper.GetColor(ed), IdentifierEscaper.Escape(ed.Name)); return; } var asm = o as AssemblyDef; if (asm != null) { output.Write(asm); return; } var mod = o as ModuleDef; if (mod != null) { output.WriteModule(mod.FullName); return; } var asmRef = o as AssemblyRef; if (asmRef != null) { output.Write(asmRef); return; } var modRef = o as ModuleRef; if (modRef != null) { output.WriteModule(modRef.FullName); return; } var paramDef = o as ParamDef; if (paramDef != null) { output.Write(BoxedTextColor.Parameter, IdentifierEscaper.Escape(paramDef.Name)); return; } // non-.NET file var document = o as IDsDocument; if (document != null) { output.Write(BoxedTextColor.Text, document.GetShortName()); return; } var resNode = o as ResourceNode; if (resNode != null) { output.WriteFilename(resNode.Name); return; } var resElNode = o as ResourceElementNode; if (resElNode != null) { output.WriteFilename(resElNode.Name); return; } var em = o as ErrorMessage; if (em != null) { output.Write(em.Color, em.Text); return; } Debug.Assert(o == null); }
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.Text, "Assembly Child");
protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => output.Write(BoxedTextColor.Text, Message);
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.InstantiatedByTreeNode);
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, "."); } } }
internal void WriteAppDomainName(ITextColorWriter output, DbgModuleBreakpoint bp) => output.Write(BoxedTextColor.String, bp.AppDomainName ?? string.Empty);
protected override void Write(ITextColorWriter output, ILanguage language) => output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.ExposedByTreeNode);
protected override void Write(ITextColorWriter output, IDecompiler decompiler) { decompiler.WriteType(output, analyzedField.DeclaringType, true); output.Write(BoxedTextColor.Operator, "."); new NodePrinter().Write(output, decompiler, analyzedField, Context.ShowToken); }
void CreateUI(ITextColorWriter output, object o, bool includeNamespace) { if (o is NamespaceSearchResult ns) { output.WriteNamespace(ns.Namespace); return; } if (o is TypeDef td) { Debug.Assert(Context.Decompiler != null); Context.Decompiler.WriteType(output, td, includeNamespace); return; } if (o is MethodDef md) { output.Write(Context.Decompiler.MetadataTextColorProvider.GetColor(md), IdentifierEscaper.Escape(md.Name)); return; } if (o is FieldDef fd) { output.Write(Context.Decompiler.MetadataTextColorProvider.GetColor(fd), IdentifierEscaper.Escape(fd.Name)); return; } if (o is PropertyDef pd) { output.Write(Context.Decompiler.MetadataTextColorProvider.GetColor(pd), IdentifierEscaper.Escape(pd.Name)); return; } if (o is EventDef ed) { output.Write(Context.Decompiler.MetadataTextColorProvider.GetColor(ed), IdentifierEscaper.Escape(ed.Name)); return; } if (o is AssemblyDef asm) { output.Write(asm); return; } if (o is ModuleDef mod) { output.WriteModule(mod.FullName); return; } if (o is AssemblyRef asmRef) { output.Write(asmRef); return; } if (o is ModuleRef modRef) { output.WriteModule(modRef.FullName); return; } if (o is ParamDef paramDef) { output.Write(BoxedTextColor.Parameter, IdentifierEscaper.Escape(paramDef.Name)); return; } // non-.NET file if (o is IDsDocument document) { output.Write(BoxedTextColor.Text, document.GetShortName()); return; } if (o is ResourceNode resNode) { output.WriteFilename(resNode.Name); return; } if (o is ResourceElementNode resElNode) { output.WriteFilename(resElNode.Name); return; } if (o is ErrorMessage em) { output.Write(em.Color, em.Text); return; } Debug.Assert(o == null); }
protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(BoxedTextColor.Text, dnSpy_Resources.ReferencesFolder);