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