Example #1
0
 /// <summary>
 /// Writes a method
 /// </summary>
 /// <param name="output">Output</param>
 /// <param name="decompiler">Decompiler</param>
 /// <param name="method">Method</param>
 /// <param name="showToken">true to write tokens</param>
 public void Write(ITextColorWriter output, IDecompiler decompiler, MethodDef method, bool showToken)
 {
     output.Write(decompiler.MetadataTextColorProvider.GetColor(method), NameUtilities.CleanIdentifier(method.Name));
     output.Write(BoxedTextColor.Punctuation, "(");
     foreach (var p in method.Parameters)
     {
         if (p.IsHiddenThisParameter)
         {
             continue;
         }
         if (p.MethodSigIndex > 0)
         {
             output.WriteCommaSpace();
         }
         decompiler.WriteType(output, p.Type.ToTypeDefOrRef(), false, p.ParamDef);
     }
     if (method.CallingConvention == CallingConvention.VarArg || method.CallingConvention == CallingConvention.NativeVarArg)
     {
         if (method.MethodSig.GetParamCount() > 0)
         {
             output.WriteCommaSpace();
         }
         output.Write(BoxedTextColor.Operator, "...");
     }
     output.Write(BoxedTextColor.Punctuation, ")");
     output.WriteSpace();
     output.Write(BoxedTextColor.Punctuation, ":");
     output.WriteSpace();
     decompiler.WriteType(output, method.ReturnType.ToTypeDefOrRef(), false, method.Parameters.ReturnParameter.ParamDef);
     WriteToken(output, method, showToken);
 }
Example #2
0
        public void WriteUserState(ThreadVM vm)
        {
            var  state     = vm.UserState;
            bool needComma = false;

            foreach (var t in UserStates)
            {
                if ((state & t.Item1) != 0)
                {
                    state &= ~t.Item1;
                    if (needComma)
                    {
                        output.WriteCommaSpace();
                    }
                    needComma = true;
                    output.Write(BoxedTextColor.EnumField, t.Item2);
                }
            }
            if (state != 0)
            {
                if (needComma)
                {
                    output.WriteCommaSpace();
                }
                output.Write(BoxedTextColor.Number, string.Format("0x{0:X}", (int)state));
            }
        }
Example #3
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);
        }
Example #4
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);
		}
Example #5
0
		/// <summary>
		/// Writes a method
		/// </summary>
		/// <param name="output">Output</param>
		/// <param name="decompiler">Decompiler</param>
		/// <param name="method">Method</param>
		/// <param name="showToken">true to write tokens</param>
		public void Write(ITextColorWriter output, IDecompiler decompiler, MethodDef method, bool showToken) {
			output.Write(decompiler.MetadataTextColorProvider.GetColor(method), NameUtilities.CleanIdentifier(method.Name));
			output.Write(BoxedTextColor.Punctuation, "(");
			foreach (var p in method.Parameters) {
				if (p.IsHiddenThisParameter)
					continue;
				if (p.MethodSigIndex > 0)
					output.WriteCommaSpace();
				decompiler.WriteType(output, p.Type.ToTypeDefOrRef(), false, p.ParamDef);
			}
			if (method.CallingConvention == CallingConvention.VarArg || method.CallingConvention == CallingConvention.NativeVarArg) {
				if (method.MethodSig.GetParamCount() > 0)
					output.WriteCommaSpace();
				output.Write(BoxedTextColor.Operator, "...");
			}
			output.Write(BoxedTextColor.Punctuation, ")");
			output.WriteSpace();
			output.Write(BoxedTextColor.Punctuation, ":");
			output.WriteSpace();
			decompiler.WriteType(output, method.ReturnType.ToTypeDefOrRef(), false, method.Parameters.ReturnParameter.ParamDef);
			WriteToken(output, method, showToken);
		}