public static RangeEntry Create(MonoSymbolFile file, TargetMemoryAccess memory,
TargetReader reader, byte[] contents)
{
int domain = reader.BinaryReader.ReadInt32 ();
int index = reader.BinaryReader.ReadInt32 ();
TargetAddress wrapper_data = reader.ReadAddress ();
TargetAddress method = reader.ReadAddress ();
reader.ReadAddress (); /* address_list */
TargetAddress code_start = reader.ReadAddress ();
TargetAddress wrapper_addr = reader.ReadAddress ();
int code_size = reader.BinaryReader.ReadInt32 ();
WrapperEntry wrapper = null;
if (!wrapper_data.IsNull) {
int wrapper_size = 4 + 3 * memory.TargetMemoryInfo.TargetAddressSize;
TargetReader wrapper_reader = new TargetReader (
memory.ReadMemory (wrapper_data, wrapper_size));
TargetAddress name_address = wrapper_reader.ReadAddress ();
TargetAddress cil_address = wrapper_reader.ReadAddress ();
int wrapper_type = wrapper_reader.BinaryReader.ReadInt32 ();
string name = "<" + memory.ReadString (name_address) + ">";
string cil_code = memory.ReadString (cil_address);
wrapper = new WrapperEntry (
wrapper_addr, (WrapperType) wrapper_type, name, cil_code);
}
return new RangeEntry (
file, domain, index, wrapper, method,
code_start, code_start + code_size, contents);
}