Esempio n. 1
0
		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));
		}
Esempio n. 2
0
		/// <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);
			}
		}
Esempio n. 4
0
		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, ")");
		}
Esempio n. 5
0
		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));
		}
Esempio n. 6
0
		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);
			}
		}
Esempio n. 9
0
		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));
		}
Esempio n. 10
0
		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);
			}
		}
Esempio n. 11
0
		/// <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);
Esempio n. 13
0
		protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
			output.Write(BoxedTextColor.HexPeOptionalHeader64, dnSpy_AsmEditor_Resources.HexNode_OptHeader64);
Esempio n. 14
0
		protected override void Write(ITextColorWriter output, IDecompiler decompiler) => output.Write(analyzedAssembly);
Esempio n. 15
0
		protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) =>
			output.Write(BoxedTextColor.Text, dnSpy_Resources.ResourcesFolder);
Esempio n. 16
0
 protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.Text, dnSpy_Resources.BaseTypeFolder);
Esempio n. 17
0
		protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
			output.Write(BoxedTextColor.HexCor20Header, dnSpy_AsmEditor_Resources.HexNode_Cor20_Header);
Esempio n. 18
0
 void WriteEventInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceEvent, ReadStringsHeap(1));
Esempio n. 19
0
		void WriteMemberRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(1));
Esempio n. 20
0
 void WriteParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Parameter, ReadStringsHeap(2));
Esempio n. 21
0
 void WriteMemberRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(1));
Esempio n. 22
0
 void WriteFieldInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceField, ReadStringsHeap(1));
Esempio n. 23
0
 /// <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);
 }
Esempio n. 24
0
 /// <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);
Esempio n. 25
0
 protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.HexTablesStream, dnSpy_AsmEditor_Resources.HexNode_TablesStream);
Esempio n. 26
0
 void WritePropertyInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceProperty, ReadStringsHeap(1));
Esempio n. 27
0
		void WriteFieldInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceField, ReadStringsHeap(1));
Esempio n. 28
0
 void WriteModuleRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.AssemblyModule, ReadStringsHeap(0));
Esempio n. 29
0
		void WritePropertyInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceProperty, ReadStringsHeap(1));
Esempio n. 30
0
 void WriteImplMapInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(2));
Esempio n. 31
0
		protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
			output.Write(BoxedTextColor.HexStorageSignature, dnSpy_AsmEditor_Resources.HexNode_StorageSignature);
Esempio n. 32
0
 void WriteAssemblyRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Assembly, ReadStringsHeap(6));
Esempio n. 33
0
		protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
			output.Write(BoxedTextColor.HexTablesStream, dnSpy_AsmEditor_Resources.HexNode_TablesStream);
Esempio n. 34
0
 void WriteGenericParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.TypeGenericParameter, ReadStringsHeap(3));
Esempio n. 35
0
 void OutputWrite(string s, object color) => output.Write(color, s);
Esempio n. 36
0
 protected override void Write(ITextColorWriter output, IDecompiler decompiler) =>
 output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.OverridesTreeNode);
Esempio n. 37
0
        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);
        }
Esempio n. 38
0
 protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.Text, "Assembly Child");
Esempio n. 39
0
		protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) =>
			output.Write(BoxedTextColor.Text, Message);
Esempio n. 40
0
		void WriteImplMapInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(2));
Esempio n. 41
0
		protected override void Write(ITextColorWriter output, IDecompiler decompiler) =>
			output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.InstantiatedByTreeNode);
Esempio n. 42
0
		void WriteGenericParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.TypeGenericParameter, ReadStringsHeap(3));
Esempio n. 43
0
		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, ".");
				}
			}
		}
Esempio n. 44
0
 internal void WriteAppDomainName(ITextColorWriter output, DbgModuleBreakpoint bp) => output.Write(BoxedTextColor.String, bp.AppDomainName ?? string.Empty);
Esempio n. 45
0
		void WriteParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Parameter, ReadStringsHeap(2));
Esempio n. 46
0
 protected override void Write(ITextColorWriter output, ILanguage language) =>
 output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.ExposedByTreeNode);
Esempio n. 47
0
		void WriteEventInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceEvent, ReadStringsHeap(1));
Esempio n. 48
0
 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);
 }
Esempio n. 49
0
		void WriteModuleRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.AssemblyModule, ReadStringsHeap(0));
Esempio n. 50
0
 protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.HexStorageSignature, dnSpy_AsmEditor_Resources.HexNode_StorageSignature);
Esempio n. 51
0
		void WriteAssemblyRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Assembly, ReadStringsHeap(6));
Esempio n. 52
0
        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);
        }
Esempio n. 53
0
 protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.HexCor20Header, dnSpy_AsmEditor_Resources.HexNode_Cor20_Header);
Esempio n. 54
0
 protected override void Write(ITextColorWriter output, IDecompiler decompiler) =>
 output.Write(BoxedTextColor.Text, dnSpy_Resources.ReferencesFolder);