private uint ResolveEndOfMethodList(int idxInTableRows) { var typeDefRows = this.TableRows[MetaDataTableType.TypeDef]; var methodDefRows = this.TableRows[MetaDataTableType.MethodDef]; TypeDefTableRow row = (TypeDefTableRow)typeDefRows[idxInTableRows]; //Console.WriteLine($"{idxInTableRows + 1 >= typeDefRows.Count}: {(uint)methodDefRows.Count - 1} {((TypeDefTableRow) typeDefRows[idxInTableRows + 1])?.MethodList}"); return(idxInTableRows + 1 >= typeDefRows.Count ? (uint)methodDefRows.Count - 1 : ((TypeDefTableRow)typeDefRows[idxInTableRows + 1]).MethodList); }
public List <MethodTableRow> GetMethodTableRowsFromTypeDef(TypeDefTableRow typeDef) { int posInTableRows = this.TableRows[MetaDataTableType.TypeDef].FindIndex((x) => x == typeDef); List <MethodTableRow> methodTableRows = new List <MethodTableRow>(); List <TableRow> methodRows = this.TableRows[MetaDataTableType.MethodDef]; int currentOffset = typeDef.MethodList - 1; int endOfList = (int)ResolveEndOfMethodList(posInTableRows) - 1; int deltaMethodList = endOfList - currentOffset; for (int i = 0; i < deltaMethodList; i++) { MethodTableRow methodTableRow = (MethodTableRow)methodRows[currentOffset]; methodTableRows.Add(methodTableRow); currentOffset++; } return(methodTableRows); }