Beispiel #1
0
        private OneToOneRelation <MetadataToken, uint> InitializeFieldLayouts()
        {
            var tablesStream = DotNetDirectory.Metadata.GetStream <TablesStream>();
            var layoutTable  = tablesStream.GetTable <FieldLayoutRow>(TableIndex.FieldLayout);

            var fieldLayouts = new OneToOneRelation <MetadataToken, uint>();

            for (int i = 0; i < layoutTable.Count; i++)
            {
                var  ownerToken = new MetadataToken(TableIndex.Field, layoutTable[i].Field);
                uint layoutRid  = (uint)(i + 1);
                fieldLayouts.Add(ownerToken, layoutRid);
            }

            return(fieldLayouts);
        }
Beispiel #2
0
        private OneToOneRelation <MetadataToken, uint> InitializeFieldRvas()
        {
            var tablesStream = DotNetDirectory.Metadata.GetStream <TablesStream>();
            var rvaTable     = tablesStream.GetTable <FieldRvaRow>(TableIndex.FieldRva);

            var rvas = new OneToOneRelation <MetadataToken, uint>();

            for (int i = 0; i < rvaTable.Count; i++)
            {
                var  ownerToken = new MetadataToken(TableIndex.Field, rvaTable[i].Field);
                uint rvaRid     = (uint)(i + 1);
                rvas.Add(ownerToken, rvaRid);
            }

            return(rvas);
        }
Beispiel #3
0
        private OneToOneRelation <MetadataToken, uint> InitializeFieldMarshals()
        {
            var tablesStream = DotNetDirectory.Metadata.GetStream <TablesStream>();
            var marshalTable = tablesStream.GetTable <FieldMarshalRow>(TableIndex.FieldMarshal);
            var encoder      = tablesStream.GetIndexEncoder(CodedIndex.HasFieldMarshal);

            var marshals = new OneToOneRelation <MetadataToken, uint>();

            for (int i = 0; i < marshalTable.Count; i++)
            {
                var  ownerToken = encoder.DecodeIndex(marshalTable[i].Parent);
                uint rvaRid     = (uint)(i + 1);
                marshals.Add(ownerToken, rvaRid);
            }

            return(marshals);
        }
Beispiel #4
0
        private OneToOneRelation <MetadataToken, uint> InitializeImplementationMaps()
        {
            var tablesStream = DotNetDirectory.Metadata.GetStream <TablesStream>();
            var mapTable     = tablesStream.GetTable <ImplementationMapRow>(TableIndex.ImplMap);
            var encoder      = tablesStream.GetIndexEncoder(CodedIndex.TypeOrMethodDef);

            var maps = new OneToOneRelation <MetadataToken, uint>();

            for (int i = 0; i < mapTable.Count; i++)
            {
                var  ownerToken = encoder.DecodeIndex(mapTable[i].MemberForwarded);
                uint mapRid     = (uint)(i + 1);
                maps.Add(ownerToken, mapRid);
            }

            return(maps);
        }
Beispiel #5
0
        private OneToOneRelation <MetadataToken, uint> GetConstants()
        {
            var tablesStream  = DotNetDirectory.Metadata.GetStream <TablesStream>();
            var constantTable = tablesStream.GetTable <ConstantRow>(TableIndex.Constant);
            var encoder       = tablesStream.GetIndexEncoder(CodedIndex.HasConstant);

            var constants = new OneToOneRelation <MetadataToken, uint>();

            for (int i = 0; i < constantTable.Count; i++)
            {
                var  ownerToken  = encoder.DecodeIndex(constantTable[i].Parent);
                uint constantRid = (uint)(i + 1);
                constants.Add(ownerToken, constantRid);
            }

            return(constants);
        }