internal DataConstant GetDataConstant(uint rva, Type constType)
{
BaseStream.Seek(GetOffset(rva),SeekOrigin.Begin);
if (constType is PrimitiveType) {
switch (constType.GetTypeIndex()) {
case ((int)ElementType.I1) : return new IntConst(ReadByte());
case ((int)ElementType.I2) : return new IntConst(ReadInt16());
case ((int)ElementType.I4) : return new IntConst(ReadInt32());
case ((int)ElementType.I8) : return new IntConst(ReadInt64());
case ((int)ElementType.R4) : return new FloatConst(ReadSingle());
case ((int)ElementType.R8) : return new DoubleConst(ReadDouble());
case ((int)ElementType.String) : return new StringConst(ReadString());
}
} else if (constType is ManagedPointer) {
uint dataRVA = ReadUInt32();
Type baseType = ((ManagedPointer)constType).GetBaseType();
return new AddressConstant(GetDataConstant(dataRVA,baseType));
} // need to do repeated constant??
return null;
}