Esempio n. 1
0
 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;
 }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
 internal CliMetadataNativeTypeSignature(CliMetadataNativeTypes typeKind)
 {
     this.TypeKind = typeKind;
 }