コード例 #1
0
 /// <summary>
 /// Write a <see cref="CallingConventionSig"/> signature
 /// </summary>
 /// <param name="helper">Helper</param>
 /// <param name="sig">The signature</param>
 /// <returns>The signature as a byte array</returns>
 public static byte[] Write(ISignatureWriterHelper helper, CallingConventionSig sig)
 {
     using (var writer = new SignatureWriter(helper)) {
         writer.Write(sig);
         return(writer.GetResult());
     }
 }
コード例 #2
0
 internal static byte[] Write(ISignatureWriterHelper helper, CallingConventionSig sig, DataWriterContext context)
 {
     using (var writer = new SignatureWriter(helper, context)) {
         writer.Write(sig);
         return(writer.GetResult());
     }
 }
コード例 #3
0
ファイル: MemberRefOptions.cs プロジェクト: xornand/dnSpy
 public MemberRefOptions(MemberRef mr)
 {
     this.Class     = mr.Class;
     this.Name      = mr.Name;
     this.Signature = mr.Signature;
     this.CustomAttributes.AddRange(mr.CustomAttributes);
 }
コード例 #4
0
ファイル: TypeBlobAnalyzer.cs プロジェクト: topud/ConfuserEx
        private static IMemberDef FindArgumentMemberDef(UTF8String name, CallingConventionSig propertySig, TypeDef attrType)
        {
            while (attrType != null)
            {
                var property = attrType.FindProperty(name, propertySig);

                if (property != null)
                {
                    return(property);
                }
                attrType = attrType.BaseType.ResolveTypeDef();
            }

            return(null);
        }
コード例 #5
0
        CallingConventionSig?ResolveGenericArgs(CallingConventionSig sig)
        {
            if (!recursionCounter.Increment())
            {
                return(null);
            }

            CallingConventionSig?result;
            MethodSig?           msig;
            FieldSig?            fsig;
            LocalSig?            lsig;
            PropertySig?         psig;
            GenericInstMethodSig?gsig;

            if (!((msig = sig as MethodSig) is null))
            {
                result = ResolveGenericArgs(msig);
            }
コード例 #6
0
        CallingConventionSig ResolveGenericArgs(CallingConventionSig sig)
        {
            if (!recursionCounter.Increment())
            {
                return(null);
            }

            CallingConventionSig result;
            MethodSig            msig;
            FieldSig             fsig;
            LocalSig             lsig;
            PropertySig          psig;
            GenericInstMethodSig gsig;

            if ((msig = sig as MethodSig) != null)
            {
                result = ResolveGenericArgs(msig);
            }
            else if ((fsig = sig as FieldSig) != null)
            {
                result = ResolveGenericArgs(fsig);
            }
            else if ((lsig = sig as LocalSig) != null)
            {
                result = ResolveGenericArgs(lsig);
            }
            else if ((psig = sig as PropertySig) != null)
            {
                result = ResolveGenericArgs(psig);
            }
            else if ((gsig = sig as GenericInstMethodSig) != null)
            {
                result = ResolveGenericArgs(gsig);
            }
            else
            {
                result = null;
            }

            recursionCounter.Decrement();

            return(result);
        }
コード例 #7
0
        private void Write(CallingConventionSig sig)
        {
            if (sig == null)
            {
                helper.Error("sig is null");
                return;
            }
            if (!recursionCounter.Increment())
            {
                helper.Error("Infinite recursion");
                return;
            }

            MethodBaseSig        mbs;
            FieldSig             fs;
            LocalSig             ls;
            GenericInstMethodSig gim;

            if ((mbs = sig as MethodBaseSig) != null)
            {
                Write(mbs);
            }
            else if ((fs = sig as FieldSig) != null)
            {
                Write(fs);
            }
            else if ((ls = sig as LocalSig) != null)
            {
                Write(ls);
            }
            else if ((gim = sig as GenericInstMethodSig) != null)
            {
                Write(gim);
            }
            else
            {
                helper.Error("Unknown calling convention sig");
                writer.Write((byte)sig.GetCallingConvention());
            }

            recursionCounter.Decrement();
        }
コード例 #8
0
ファイル: SignatureWriter.cs プロジェクト: yyjdelete/dnlib
        void Write(CallingConventionSig sig)
        {
            if (sig is null)
            {
                helper.Error("sig is null");
                return;
            }
            if (!recursionCounter.Increment())
            {
                helper.Error("Infinite recursion");
                return;
            }

            MethodBaseSig        mbs;
            FieldSig             fs;
            LocalSig             ls;
            GenericInstMethodSig gim;

            if (!((mbs = sig as MethodBaseSig) is null))
            {
                Write(mbs);
            }
コード例 #9
0
ファイル: MemberRefFinder.cs プロジェクト: whztt07/de4dot
        void Add(CallingConventionSig sig)
        {
            if (sig == null)
            {
                return;
            }

            var fs = sig as FieldSig;

            if (fs != null)
            {
                Add(fs);
                return;
            }

            var mbs = sig as MethodBaseSig;

            if (mbs != null)
            {
                Add(mbs);
                return;
            }

            var ls = sig as LocalSig;

            if (ls != null)
            {
                Add(ls);
                return;
            }

            var gims = sig as GenericInstMethodSig;

            if (gims != null)
            {
                Add(gims);
                return;
            }
        }
コード例 #10
0
 public MethodSpecOptions(MethodSpec ms)
 {
     Method        = ms.Method;
     Instantiation = ms.Instantiation;
     CustomAttributes.AddRange(ms.CustomAttributes);
 }
コード例 #11
0
		/// <summary>
		/// Write a <see cref="CallingConventionSig"/> signature
		/// </summary>
		/// <param name="helper">Helper</param>
		/// <param name="sig">The signature</param>
		/// <returns>The signature as a byte array</returns>
		public static byte[] Write(ISignatureWriterHelper helper, CallingConventionSig sig) {
			using (var writer = new SignatureWriter(helper)) {
				writer.Write(sig);
				return writer.GetResult();
			}
		}
コード例 #12
0
		void Write(CallingConventionSig sig) {
			if (sig == null) {
				helper.Error("sig is null");
				return;
			}
			if (!recursionCounter.Increment()) {
				helper.Error("Infinite recursion");
				return;
			}

			MethodBaseSig mbs;
			FieldSig fs;
			LocalSig ls;
			GenericInstMethodSig gim;

			if ((mbs = sig as MethodBaseSig) != null)
				Write(mbs);
			else if ((fs = sig as FieldSig) != null)
				Write(fs);
			else if ((ls = sig as LocalSig) != null)
				Write(ls);
			else if ((gim = sig as GenericInstMethodSig) != null)
				Write(gim);
			else {
				helper.Error("Unknown calling convention sig");
				writer.Write((byte)sig.GetCallingConvention());
			}

			recursionCounter.Decrement();
		}
コード例 #13
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="name">Name</param>
		/// <param name="signature">Signature</param>
		/// <param name="flags">Flags</param>
		public FieldDefUser(UTF8String name, FieldSig signature, FieldAttributes flags) {
			this.name = name;
			this.signature = signature;
			this.flags = flags;
		}
コード例 #14
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="name">Name</param>
		/// <param name="sig">Property signature</param>
		/// <param name="flags">Flags</param>
		public PropertyDefUser(UTF8String name, PropertySig sig, PropertyAttributes flags) {
			this.name = name;
			this.type = sig;
			this.flags = flags;
		}