コード例 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GenericParamRow"/> struct.
 /// </summary>
 /// <param name="number">The number.</param>
 /// <param name="flags">The flags.</param>
 /// <param name="ownerTableIdx">The owner table idx.</param>
 /// <param name="nameStringIdx">The name string idx.</param>
 public GenericParamRow(ushort number, GenericParamAttributes flags, TokenTypes ownerTableIdx, TokenTypes nameStringIdx)
 {
     _number = number;
     _flags = flags;
     _ownerTableIdx = ownerTableIdx;
     _nameStringIdx = nameStringIdx;
 }
コード例 #2
0
        internal static string ToString(GenericParamAttributes flags)
        {
            var sb = new StringBuilder();

            switch ((flags & GenericParamAttributes.VarianceMask))
            {
            case GenericParamAttributes.NonVariant: sb.Append("NonVariant"); break;

            case GenericParamAttributes.Covariant: sb.Append("Covariant"); break;

            case GenericParamAttributes.Contravariant: sb.Append("Contravariant"); break;

            default: sb.Append("Variance_UNKNOWN"); break;
            }

            switch ((flags & GenericParamAttributes.SpecialConstraintMask))
            {
            case GenericParamAttributes.NoSpecialConstraint: sb.Append(" | NoSpecialConstraint"); break;

            case GenericParamAttributes.ReferenceTypeConstraint: sb.Append(" | ReferenceTypeConstraint"); break;

            case GenericParamAttributes.NotNullableValueTypeConstraint: sb.Append(" | NotNullableValueTypeConstraint"); break;

            case GenericParamAttributes.DefaultConstructorConstraint: sb.Append(" | DefaultConstructorConstraint"); break;

            default: sb.Append(" | SpecialConstraint_UNKNOWN"); break;
            }

            return(sb.ToString());
        }
コード例 #3
0
        /// <summary>
        /// Set or clear flags in <see cref="attributes"/>
        /// </summary>
        /// <param name="set"><c>true</c> if flags should be set, <c>false</c> if flags should
        /// be cleared</param>
        /// <param name="flags">Flags to set or clear</param>
        void ModifyAttributes(bool set, GenericParamAttributes flags)
        {
#if THREAD_SAFE
            int origVal, newVal;
            do
            {
                origVal = attributes;
                if (set)
                {
                    newVal = origVal | (int)flags;
                }
                else
                {
                    newVal = origVal & ~(int)flags;
                }
            } while (Interlocked.CompareExchange(ref attributes, newVal, origVal) != origVal);
#else
            if (set)
            {
                attributes |= (int)flags;
            }
            else
            {
                attributes &= ~(int)flags;
            }
#endif
        }
コード例 #4
0
		private void LoadData(CLIFile pFile)
		{
			Number = pFile.ReadUInt16();
			Flags = (GenericParamAttributes)pFile.ReadUInt16();
			Owner.LoadData(pFile);
			Name = pFile.ReadStringHeap(pFile.ReadHeapIndex(HeapOffsetSizes.Strings32Bit));
		}
コード例 #5
0
 public void Read(ClrModuleReader reader)
 {
     this.Number = reader.Binary.ReadUInt16();
     this.Flags  = (GenericParamAttributes)reader.Binary.ReadUInt16();
     this.Owner  = reader.ReadCodedIndex <TypeOrMethodDef>();
     this.Name   = reader.ReadString();
 }
コード例 #6
0
 public void Read(ClrModuleReader reader)
 {
     this.Number = reader.Binary.ReadUInt16();
     this.Flags = (GenericParamAttributes)reader.Binary.ReadUInt16();
     this.Owner = reader.ReadCodedIndex<TypeOrMethodDef>();
     this.Name = reader.ReadString();
 }
コード例 #7
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="number">The generic param number</param>
 /// <param name="flags">Flags</param>
 /// <param name="name">Name</param>
 public GenericParamUser(ushort number, GenericParamAttributes flags, UTF8String name)
 {
     this.genericParamConstraints = new LazyList <GenericParamConstraint>(this);
     this.number     = number;
     this.attributes = (int)flags;
     this.name       = name;
 }
コード例 #8
0
 public GenericParameter(ushort number, GenericParamAttributes attributes, UTF8String name, IEnumerable <GenericParameterConstraint> constraints)
 {
     Number      = number;
     Attributes  = attributes;
     Name        = name;
     Constraints = constraints.ToList();
 }
コード例 #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GenericParamRow"/> struct.
 /// </summary>
 /// <param name="number">The number.</param>
 /// <param name="flags">The flags.</param>
 /// <param name="ownerTableIdx">The owner table idx.</param>
 /// <param name="nameStringIdx">The name string idx.</param>
 public GenericParamRow(ushort number, GenericParamAttributes flags, TokenTypes ownerTableIdx,
                        TokenTypes nameStringIdx)
 {
     _number        = number;
     _flags         = flags;
     _ownerTableIdx = ownerTableIdx;
     _nameStringIdx = nameStringIdx;
 }
コード例 #10
0
		public GenericParamOptions(GenericParam gp) {
			this.Number = gp.Number;
			this.Flags = gp.Flags;
			this.Name = gp.Name;
			this.Kind = gp.Kind;
			this.GenericParamConstraints.AddRange(gp.GenericParamConstraints);
			this.CustomAttributes.AddRange(gp.CustomAttributes);
		}
コード例 #11
0
		public GenericParamOptions(GenericParam gp) {
			Number = gp.Number;
			Flags = gp.Flags;
			Name = gp.Name;
			Kind = gp.Kind;
			GenericParamConstraints.AddRange(gp.GenericParamConstraints);
			CustomAttributes.AddRange(gp.CustomAttributes);
		}
コード例 #12
0
 public GenericParamOptions(GenericParam gp)
 {
     Number = gp.Number;
     Flags  = gp.Flags;
     Name   = gp.Name;
     Kind   = gp.Kind;
     GenericParamConstraints.AddRange(gp.GenericParamConstraints);
     CustomAttributes.AddRange(gp.CustomAttributes);
 }
コード例 #13
0
 public GenericParamOptions(GenericParam gp)
 {
     this.Number = gp.Number;
     this.Flags  = gp.Flags;
     this.Name   = gp.Name;
     this.Kind   = gp.Kind;
     this.GenericParamConstraints.AddRange(gp.GenericParamConstraints);
     this.CustomAttributes.AddRange(gp.CustomAttributes);
 }
コード例 #14
0
        public GenericParamRow CreateGenericParamRow(ushort _number, GenericParamAttributes _flags, MetadataToken _owner, uint _name)
        {
            GenericParamRow row = new GenericParamRow();

            row.Number = _number;
            row.Flags  = _flags;
            row.Owner  = _owner;
            row.Name   = _name;
            return(row);
        }
コード例 #15
0
 void SetFlagValue(GenericParamAttributes flag, bool value)
 {
     if (value)
     {
         Attributes |= flag;
     }
     else
     {
         Attributes &= ~flag;
     }
 }
コード例 #16
0
        /// <summary>
        /// Modify <see cref="attributes"/> property: <see cref="attributes"/> =
        /// (<see cref="attributes"/> &amp; <paramref name="andMask"/>) | <paramref name="orMask"/>.
        /// </summary>
        /// <param name="andMask">Value to <c>AND</c></param>
        /// <param name="orMask">Value to OR</param>
        void ModifyAttributes(GenericParamAttributes andMask, GenericParamAttributes orMask)
        {
#if THREAD_SAFE
            int origVal, newVal;
            do
            {
                origVal = attributes;
                newVal  = (origVal & (int)andMask) | (int)orMask;
            } while (Interlocked.CompareExchange(ref attributes, newVal, origVal) != origVal);
#else
            attributes = (attributes & (int)andMask) | (int)orMask;
#endif
        }
コード例 #17
0
        /// <summary>
        /// Initialises a new instance of the GenericParamMetadataTableRow class
        /// </summary>
        /// <param name="contents">The contents of the file</param>
        /// <param name="offset">The offset of the current row</param>
        public GenericParamMetadataTableRow(byte[] contents, Offset offset, ICodedIndexResolver resolver, IIndexDetails indexDetails)
        {
            this.FileOffset = offset;

            int  sizeOfCodeIndex   = resolver.GetSizeOfIndex(CodedIndexes.TypeOrMethodDef);
            byte sizeOfStringIndex = indexDetails.GetSizeOfStringIndex();

            _number     = FieldReader.ToUInt16(contents, offset.Shift(2));
            _flags      = (GenericParamAttributes)FieldReader.ToUInt16(contents, offset.Shift(2));
            _ownerIndex = resolver.Resolve(CodedIndexes.TypeOrMethodDef,
                                           FieldReader.ToUInt32(contents, offset.Shift(sizeOfCodeIndex), sizeOfCodeIndex)
                                           );
            _nameIndex = new StringIndex(contents, sizeOfStringIndex, offset);
        }
コード例 #18
0
        public GenericParameterImpl(AssemblyLoader loader, MetadataRow row, int index, long id)
        {
            _loader = loader;

            MetadataToken = SimpleIndex.MakeToken(TableId.GenericParam, index + 1);

            Name = row[Schema.GenericParam.Name].String;
            Id   = id;
            var position = (int)row[Schema.GenericParam.Number].Value;

            _flags       = (GenericParamAttributes)row[Schema.GenericParam.Flags].Value;
            _owner       = row[Schema.GenericParam.Owner].Value;
            _constraints = new ConstraintsImpl(this);

            _info = new GenericParameterInfo(position, Variance, SpecialConstraints);
        }
コード例 #19
0
		internal static string ToString(GenericParamAttributes flags) {
			var sb = new StringBuilder();

			switch ((flags & GenericParamAttributes.VarianceMask)) {
			case GenericParamAttributes.NonVariant: sb.Append("NonVariant"); break;
			case GenericParamAttributes.Covariant: sb.Append("Covariant"); break;
			case GenericParamAttributes.Contravariant: sb.Append("Contravariant"); break;
			default: sb.Append("Variance_UNKNOWN"); break;
			}

			switch ((flags & GenericParamAttributes.SpecialConstraintMask)) {
			case GenericParamAttributes.NoSpecialConstraint: sb.Append(" | NoSpecialConstraint"); break;
			case GenericParamAttributes.ReferenceTypeConstraint: sb.Append(" | ReferenceTypeConstraint"); break;
			case GenericParamAttributes.NotNullableValueTypeConstraint: sb.Append(" | NotNullableValueTypeConstraint"); break;
			case GenericParamAttributes.DefaultConstructorConstraint: sb.Append(" | DefaultConstructorConstraint"); break;
			default: sb.Append(" | SpecialConstraint_UNKNOWN"); break;
			}

			return sb.ToString();
		}
コード例 #20
0
 public GenericParamRow CreateGenericParamRow(ushort _number, GenericParamAttributes _flags, MetadataToken _owner, uint _name)
 {
     GenericParamRow row = new GenericParamRow ();
     row.Number = _number;
     row.Flags = _flags;
     row.Owner = _owner;
     row.Name = _name;
     return row;
 }
コード例 #21
0
ファイル: GenericParamVM.cs プロジェクト: GreenDamTan/dnSpy
		void SetFlagValue(GenericParamAttributes flag, bool value) {
			if (value)
				Attributes |= flag;
			else
				Attributes &= ~flag;
		}
コード例 #22
0
ファイル: GenericParamVM.cs プロジェクト: GreenDamTan/dnSpy
		bool GetFlagValue(GenericParamAttributes flag) {
			return (Attributes & flag) != 0;
		}
コード例 #23
0
 bool GetFlagValue(GenericParamAttributes flag)
 {
     return((Attributes & flag) != 0);
 }
コード例 #24
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="number">The generic param number</param>
 /// <param name="flags">Flags</param>
 public GenericParamUser(ushort number, GenericParamAttributes flags)
     : this(number, flags, UTF8String.Empty)
 {
 }
コード例 #25
0
ファイル: MDAPI.cs プロジェクト: arkanoid1/dnSpy
		public static unsafe bool GetGenericParamNumAndAttrs(IMetaDataImport2 mdi2, uint token, out ushort number, out GenericParamAttributes attrs) {
			number = ushort.MaxValue;
			attrs = 0;
			if (mdi2 == null)
				return false;

			uint ulParamSeq, dwParamFlags;
			int hr = mdi2.GetGenericParamProps(token, new IntPtr(&ulParamSeq), new IntPtr(&dwParamFlags), IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, 0, IntPtr.Zero);
			if (hr != 0)
				return false;

			number = (ushort)ulParamSeq;
			attrs = (GenericParamAttributes)dwParamFlags;
			return true;
		}
コード例 #26
0
 private void Add(GenericParamAttributes a)
 {
 }
コード例 #27
0
 public GenericParameter(ushort number, GenericParamAttributes attributes, UTF8String name, params GenericParameterConstraint[] constraints) : this(number, attributes, name, (IEnumerable <GenericParameterConstraint>)constraints)
 {
 }
コード例 #28
0
		internal GenericParameter (MethodDef owner, MetaData metadata,
				short index, string name, GenericParamAttributes attr) : this (owner, metadata, index, name, attr, true)
		{
		}
コード例 #29
0
		/// <summary>
		///  Add a named generic type parameter with attributes
		/// </summary>
		public GenericParameter AddGenericParameter (short index, string name, GenericParamAttributes attr) 
		{
			GenericParameter gp = new GenericParameter (this, metaData, index, name, attr);
			metaData.AddToTable (MDTable.GenericParam, gp);
			gen_param_count ++;
			return gp;
		}
コード例 #30
0
 bool GetFlagValue(GenericParamAttributes flag) => (Attributes & flag) != 0;
コード例 #31
0
		private GenericParameter (MetaDataElement owner, MetaData metadata,
				short index, string name, GenericParamAttributes attr, bool nadda) {
			this.owner = owner;
			this.metadata = metadata;
			this.index = index;
			tabIx = MDTable.GenericParam;
			this.name = name;
			this.attr = attr;
		}
コード例 #32
0
ファイル: GenericParamVM.cs プロジェクト: manojdjoshi/dnSpy
		bool GetFlagValue(GenericParamAttributes flag) => (Attributes & flag) != 0;