Base class for elements in the PropertyMap, EventMap and NestedClass MetaData tables
Inheritance: MetaDataElement
Exemple #1
0
 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;
         }
     }
 }