public override void VisitPropertySig(PropertySig property)
 {
     m_sigWriter.Write(property.CallingConvention);
     Write(property.ParamCount);
     Write(property.Type);
     Write(property.Parameters);
 }
示例#2
0
		public PropertySig GetPropSig (uint index)
		{
			PropertySig p = m_signatures [index] as PropertySig;
			if (p == null) {
				p = new PropertySig (index);
				p.Accept (this);
				m_signatures [index] = p;
			}
			return p;
		}
        public override void VisitPropertySig(PropertySig property)
        {
            int start;

            Utilities.ReadCompressedInteger(m_blobData, (int)property.BlobIndex, out start);
            property.CallingConvention = m_blobData [start];
            property.Property          = (property.CallingConvention & 0x8) != 0;
            property.ParamCount        = Utilities.ReadCompressedInteger(m_blobData, start + 1, out start);
            property.Type       = this.ReadType(m_blobData, start, out start);
            property.Parameters = this.ReadParameters(property.ParamCount, m_blobData, start);
        }
        public PropertySig GetPropSig(uint index)
        {
            PropertySig p = m_signatures [index] as PropertySig;

            if (p == null)
            {
                p = new PropertySig(index);
                p.Accept(this);
                m_signatures [index] = p;
            }
            return(p);
        }
示例#5
0
		public uint AddPropertySig (PropertySig ps)
		{
			return AddSignature (ps);
		}
示例#6
0
		public override void VisitPropertySig (PropertySig property)
		{
			m_sigWriter.Write (property.CallingConvention);
			Write (property.ParamCount);
			Write (property.CustomMods);
			Write (property.Type);
			Write (property.Parameters);
		}
        public PropertySig GetPropertySig(PropertyDefinition prop)
        {
            PropertySig ps = new PropertySig ();
            ps.CallingConvention |= 0x8;

            bool hasThis;
            bool explicitThis;
            MethodCallingConvention mcc;
            ParameterDefinitionCollection parameters = prop.Parameters;

            MethodDefinition meth;
            if (prop.GetMethod != null)
                meth = prop.GetMethod;
            else if (prop.SetMethod != null)
                meth = prop.SetMethod;
            else
                meth = null;

            if (meth != null) {
                hasThis = meth.HasThis;
                explicitThis = meth.ExplicitThis;
                mcc = meth.CallingConvention;
            } else {
                hasThis = explicitThis = false;
                mcc = MethodCallingConvention.Default;
            }

            if (hasThis)
                ps.CallingConvention |= 0x20;
            if (explicitThis)
                ps.CallingConvention |= 0x40;

            if ((mcc & MethodCallingConvention.VarArg) != 0)
                ps.CallingConvention |= 0x5;

            int paramCount = parameters != null ? parameters.Count : 0;

            ps.ParamCount = paramCount;
            ps.Parameters = GetParametersSig (parameters);

            ps.Type = GetSigType (prop.PropertyType);

            return ps;
        }
 public uint AddPropertySig(PropertySig ps)
 {
     return(AddSignature(ps));
 }
示例#9
0
 public override void VisitPropertySig(PropertySig property)
 {
     int start;
     Utilities.ReadCompressedInteger (m_blobData, (int) property.BlobIndex, out start);
     property.CallingConvention = m_blobData [start];
     property.Property = (property.CallingConvention & 0x8) != 0;
     property.ParamCount = Utilities.ReadCompressedInteger (m_blobData, start + 1, out start);
     property.CustomMods = ReadCustomMods (m_blobData, start, out start);
     property.Type = ReadType (m_blobData, start, out start);
     property.Parameters = ReadParameters (property.ParamCount, m_blobData, start, out start);
 }