public override void Parse(VoidPtr address) { MoveDefLookupOffsetNode o; bint* addr = First; VoidPtr current = BaseAddress + *addr++; VoidPtr next = BaseAddress + *addr++; int size = 0; for (int i = 1; i < Count; i++) { size = (int)next - (int)current; (o = new MoveDefLookupOffsetNode()).Initialize(this, current, size); if (_root._lookupSizes.ContainsKey(o.DataOffset)) if (_root._lookupSizes[o.DataOffset].DataSize < o.DataSize) _root._lookupSizes[o.DataOffset] = o; else { } else _root._lookupSizes.Add(o.DataOffset, o); current = next; next = BaseAddress + *addr++; } size = ((int)_offset - (int)(current - BaseAddress)); (o = new MoveDefLookupOffsetNode()).Initialize(this, current, size); if (!_root._lookupSizes.ContainsKey(o.DataOffset)) _root._lookupSizes.Add(o.DataOffset, o); //Sorting by data offset will allow us to get the exact size of every entry! Children.Sort(MoveDefLookupOffsetNode.LookupCompare); }
public override void OnPopulate() { MoveDefLookupOffsetNode o; bint * addr = First; VoidPtr current = BaseAddress + *addr++; VoidPtr next = BaseAddress + *addr++; int size = 0; for (int i = 1; i < Count; i++) { size = (int)next - (int)current; (o = new MoveDefLookupOffsetNode()).Initialize(this, current, size); if (Root._lookupSizes.ContainsKey(o.DataOffset)) { if (Root._lookupSizes[o.DataOffset].DataSize < o.DataSize) { Root._lookupSizes[o.DataOffset] = o; } else { } } else { Root._lookupSizes.Add(o.DataOffset, o); } current = next; next = BaseAddress + *addr++; } size = (int)_offset - (int)(current - BaseAddress); (o = new MoveDefLookupOffsetNode()).Initialize(this, current, size); if (!Root._lookupSizes.ContainsKey(o.DataOffset)) { Root._lookupSizes.Add(o.DataOffset, o); } //Sorting by data offset will allow us to get the exact size of every entry! Children.Sort(MoveDefLookupOffsetNode.LookupCompare); }