PERWAPI.MapElem.Read C# (CSharp) Method

Read() static private method

static private Read ( PEReader buff, TableRow maps, MDTable tab ) : void
buff PEReader
maps TableRow
tab MDTable
return void
        internal static void Read(PEReader buff, TableRow[] maps, MDTable tab)
        {
            if (tab == MDTable.NestedClass) {
                for (int i=0; i < maps.Length; i++) {
                    //maps[i] = new MapElem(buff,tab);
                    uint nestClassIx = buff.GetIndex(MDTable.TypeDef);
                    uint enclClassIx = buff.GetIndex(MDTable.TypeDef);
                    ClassDef parent = (ClassDef)buff.GetElement(MDTable.TypeDef,enclClassIx);
                    ClassDef nestClass = ((ClassDef)buff.GetElement(MDTable.TypeDef,nestClassIx)).MakeNestedClass(parent);
                    buff.InsertInTable(MDTable.TypeDef,nestClass.Row,nestClass);
                }
            } else { // event or property map
                MapElem prev = new MapElem(buff,tab);
                maps[0] = prev;
                for (int i=1; i < maps.Length; i++) {
                    maps[i] = new MapElem(buff,tab);
                    prev.endIx = ((MapElem)maps[i]).elemIx;
                    prev = (MapElem)maps[i];
                }
                switch (tab) {
                    case MDTable.PropertyMap:
                        prev.endIx = buff.GetTableSize(MDTable.Property) + 1;
                        break;
                    case MDTable.EventMap:
                        prev.endIx = buff.GetTableSize(MDTable.Event) + 1;
                        break;
                    default:
                        prev.endIx = buff.GetTableSize(tab)+1;
                        break;
                }
            }
        }