/// <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; }
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()); }
/// <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 }
private void LoadData(CLIFile pFile) { Number = pFile.ReadUInt16(); Flags = (GenericParamAttributes)pFile.ReadUInt16(); Owner.LoadData(pFile); Name = pFile.ReadStringHeap(pFile.ReadHeapIndex(HeapOffsetSizes.Strings32Bit)); }
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(); }
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(); }
/// <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; }
public GenericParameter(ushort number, GenericParamAttributes attributes, UTF8String name, IEnumerable <GenericParameterConstraint> constraints) { Number = number; Attributes = attributes; Name = name; Constraints = constraints.ToList(); }
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); }
public GenericParamOptions(GenericParam gp) { Number = gp.Number; Flags = gp.Flags; Name = gp.Name; Kind = gp.Kind; GenericParamConstraints.AddRange(gp.GenericParamConstraints); CustomAttributes.AddRange(gp.CustomAttributes); }
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); }
void SetFlagValue(GenericParamAttributes flag, bool value) { if (value) { Attributes |= flag; } else { Attributes &= ~flag; } }
/// <summary> /// Modify <see cref="attributes"/> property: <see cref="attributes"/> = /// (<see cref="attributes"/> & <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 }
/// <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); }
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); }
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(); }
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; }
void SetFlagValue(GenericParamAttributes flag, bool value) { if (value) Attributes |= flag; else Attributes &= ~flag; }
bool GetFlagValue(GenericParamAttributes flag) { return (Attributes & flag) != 0; }
bool GetFlagValue(GenericParamAttributes flag) { return((Attributes & flag) != 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) { }
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; }
private void Add(GenericParamAttributes a) { }
public GenericParameter(ushort number, GenericParamAttributes attributes, UTF8String name, params GenericParameterConstraint[] constraints) : this(number, attributes, name, (IEnumerable <GenericParameterConstraint>)constraints) { }
internal GenericParameter (MethodDef owner, MetaData metadata, short index, string name, GenericParamAttributes attr) : this (owner, metadata, index, name, attr, true) { }
/// <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; }
bool GetFlagValue(GenericParamAttributes flag) => (Attributes & flag) != 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; }