internal CliMetadataConstantLockedTableRow(byte state, ICliMetadataRoot metadataRoot, CliMetadataNativeTypes @type, CliMetadataHasConstantTag parentSource, uint parentIndex, uint valueIndex) { this.metadataRoot = metadataRoot; this.state = state; this.@type = @type; this.parentSource = parentSource; this.parentIndex = parentIndex; this.valueIndex = valueIndex; }
public override sealed void Read() { if (this.fullyRead) { return; } for (uint index = 1; (index <= this.Count); index++) { bool gotLock = false; Monitor.Enter(this.syncObject, ref gotLock); if (!(base.ItemLoaded(index))) { this.fStream.Seek((this.streamOffset + ((index - 1) * this.__size)), SeekOrigin.Begin); CliMetadataNativeTypes type = ((CliMetadataNativeTypes)(this.reader.ReadUInt16())); uint parentIndex; CliMetadataHasConstantTag parentSource; switch (this.state) { case 2: case 3: parentIndex = this.reader.ReadUInt32(); break; default: parentIndex = this.reader.ReadUInt16(); break; } parentSource = ((CliMetadataHasConstantTag)((parentIndex & 3))); parentIndex = (parentIndex >> 2); uint valueIndex; switch (this.state) { case 1: case 3: valueIndex = this.reader.ReadUInt32(); break; default: valueIndex = this.reader.ReadUInt16(); break; } base.InjectLoadedItem(new CliMetadataConstantLockedTableRow(this.state, this.metadataRoot, type, parentSource, parentIndex, valueIndex), index); } if (gotLock) { Monitor.Exit(this.syncObject); } } this.fullyRead = true; }
protected override sealed ICliMetadataConstantTableRow ReadElementAt(uint index) { bool gotLock = false; Monitor.Enter(this.syncObject, ref gotLock); if (index == 0) { return(null); } this.fStream.Seek((this.streamOffset + ((index - 1) * this.__size)), SeekOrigin.Begin); CliMetadataNativeTypes type = ((CliMetadataNativeTypes)(this.reader.ReadUInt16())); uint parentIndex; CliMetadataHasConstantTag parentSource; switch (this.state) { case 2: case 3: parentIndex = this.reader.ReadUInt32(); break; default: parentIndex = this.reader.ReadUInt16(); break; } parentSource = ((CliMetadataHasConstantTag)((parentIndex & 3))); parentIndex = (parentIndex >> 2); uint valueIndex; switch (this.state) { case 1: case 3: valueIndex = this.reader.ReadUInt32(); break; default: valueIndex = this.reader.ReadUInt16(); break; } if (gotLock) { Monitor.Exit(this.syncObject); } return(new CliMetadataConstantLockedTableRow(this.state, this.metadataRoot, type, parentSource, parentIndex, valueIndex)); }
internal CliMetadataNativeTypeSignature(CliMetadataNativeTypes typeKind) { this.TypeKind = typeKind; }