Ejemplo 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));
		}
Ejemplo n.º 2
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));
		}
Ejemplo n.º 3
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));
		}
Ejemplo 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, ")");
		}
Ejemplo 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));
		}
Ejemplo n.º 6
0
		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);
			}
		}
Ejemplo n.º 7
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);
			}
		}
Ejemplo n.º 8
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);
		}
Ejemplo n.º 9
0
		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);
			}
		}
Ejemplo n.º 10
0
		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);
			}
		}
Ejemplo 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);
		}
Ejemplo n.º 12
0
		void WriteMemberRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(1));
Ejemplo n.º 13
0
		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);
Ejemplo n.º 15
0
 public override void WriteNamespaceToolTip(ITextColorWriter output, string @namespace) =>
 new VisualBasicFormatter(output, DefaultFormatterOptions, null).WriteNamespaceToolTip(@namespace);
Ejemplo n.º 16
0
 public override void WriteToolTip(ITextColorWriter output, IMemberRef member, IHasCustomAttribute typeAttributes) =>
 new VisualBasicFormatter(output, DefaultFormatterOptions, null).WriteToolTip(member);
Ejemplo n.º 17
0
 protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.HexStorageHeader, dnSpy_AsmEditor_Resources.HexNode_StorageHeader);
Ejemplo n.º 18
0
 /// <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);
Ejemplo n.º 19
0
		void WriteManifestResourceInfo(ITextColorWriter output) => output.WriteFilename(ReadStringsHeap(2));
Ejemplo n.º 20
0
 /// <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);
Ejemplo n.º 21
0
 /// <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);
Ejemplo n.º 22
0
 public override void Format(ITextColorWriter writer, DbgStackFrameFormatOptions options)
 {
     writer.Write(BoxedTextColor.Punctuation, "[");
     writer.Write(BoxedTextColor.Text, name);
     writer.Write(BoxedTextColor.Punctuation, "]");
 }
Ejemplo n.º 23
0
 protected override void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options) =>
 output.Write(BoxedTextColor.HexTablesStream, dnSpy_AsmEditor_Resources.HexNode_TablesStream);
Ejemplo n.º 24
0
 /// <inheritdoc/>
 protected sealed override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) =>
 output.WriteFilename(Resource.Name);
Ejemplo n.º 25
0
		void WriteImplMapInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceMethod, ReadStringsHeap(2));
Ejemplo n.º 26
0
 /// <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);
Ejemplo n.º 27
0
		void WriteFileInfo(ITextColorWriter output) => output.WriteFilename(ReadStringsHeap(1));
Ejemplo n.º 28
0
 public virtual void WriteToolTip(ITextColorWriter output, IMemberRef member, IHasCustomAttribute typeAttributes) =>
 new CSharpFormatter(output, DefaultFormatterOptions, null).WriteToolTip(member);
Ejemplo n.º 29
0
 public VisualBasicPrimitiveValueFormatter(ITextColorWriter output, ValueFormatterOptions options, CultureInfo cultureInfo)
 {
     this.output      = output;
     this.options     = options;
     this.cultureInfo = cultureInfo;
 }
Ejemplo n.º 30
0
 public override void Write(ITextColorWriter output, IMemberRef member, FormatterOptions flags) =>
 new VisualBasicFormatter(output, flags, null).Write(member);
Ejemplo n.º 31
0
 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;
 }
Ejemplo n.º 33
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;
Ejemplo n.º 34
0
		public TabPrinter(ITextColorWriter output) {
			this.output = output;
		}
Ejemplo n.º 35
0
 /// <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);
Ejemplo n.º 36
0
 protected override void Write(ITextColorWriter output, ILanguage language) =>
 output.Write(BoxedTextColor.Text, dnSpy_Resources.DerivedTypes);
Ejemplo n.º 37
0
		protected override void WriteCore(ITextColorWriter output, IDecompiler decompiler, DocumentNodeWriteOptions options) => WriteCore(output, options);
Ejemplo n.º 38
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, ".");
				}
			}
		}
Ejemplo n.º 39
0
		protected override void Write(ITextColorWriter output, IDecompiler decompiler) =>
			output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.InstantiatedByTreeNode);
Ejemplo n.º 40
0
		void WriteFieldInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceField, ReadStringsHeap(1));
Ejemplo n.º 41
0
 protected override void Write(ITextColorWriter output, IDecompiler decompiler) =>
 output.Write(BoxedTextColor.Text, dnSpy_Analyzer_Resources.UsedByTreeNode);
Ejemplo n.º 42
0
 public override void WriteToolTip(ITextColorWriter output, ISourceVariable variable) =>
 new VisualBasicFormatter(output, DefaultFormatterOptions, null).WriteToolTip(variable);
Ejemplo n.º 43
0
		protected abstract void WriteCore(ITextColorWriter output, DocumentNodeWriteOptions options);
Ejemplo n.º 44
0
 public BreakpointPrinter(ITextColorWriter output, bool useHex, IDecompiler decompiler)
 {
     this.output     = output;
     this.useHex     = useHex;
     this.decompiler = decompiler;
 }
Ejemplo n.º 45
0
		void WriteTypeDefInfo(ITextColorWriter output) => WriteNamespaceName(output, 2, 1);
Ejemplo n.º 46
0
 void WriteToken(ITextColorWriter output, uint token)
 {
     // Tokens are always in hex
     output.Write(BoxedTextColor.Number, string.Format(GetHexFormatUInt32(), token));
 }
Ejemplo n.º 47
0
		void WriteParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Parameter, ReadStringsHeap(2));
Ejemplo n.º 48
0
 /// <inheritdoc/>
 protected sealed override void Write(ITextColorWriter output, IDecompiler decompiler) =>
 output.WriteFilename(Resource.Name);
Ejemplo n.º 49
0
		void WriteEventInfo(ITextColorWriter output) => output.Write(BoxedTextColor.InstanceEvent, ReadStringsHeap(1));
Ejemplo n.º 50
0
 /// <inheritdoc/>
 protected sealed override void WriteToolTip(ITextColorWriter output, IDecompiler decompiler) =>
 base.WriteToolTip(output, decompiler);
Ejemplo n.º 51
0
		void WriteModuleRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.AssemblyModule, ReadStringsHeap(0));
 protected abstract void FormatTypeName(ITextColorWriter output, DmdType type);
Ejemplo n.º 53
0
		void WriteAssemblyRefInfo(ITextColorWriter output) => output.Write(BoxedTextColor.Assembly, ReadStringsHeap(6));
 protected abstract void FormatFieldName(ITextColorWriter output, DmdFieldInfo field);
Ejemplo n.º 55
0
		void WriteExportedTypeInfo(ITextColorWriter output) => WriteNamespaceName(output, 3, 2);
 protected abstract void FormatPropertyName(ITextColorWriter output, DmdPropertyInfo property);
Ejemplo n.º 57
0
		void WriteGenericParamInfo(ITextColorWriter output) => output.Write(BoxedTextColor.TypeGenericParameter, ReadStringsHeap(3));
 public abstract void FormatArrayName(ITextColorWriter output, int[] indexes);
Ejemplo n.º 59
0
		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);