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;
}
}
}