public byte[] ReadBytes(MemoryOffset offset, int count) { var bytes = new byte[count]; Marshal.Copy(ToAddress(offset), bytes, 0, count); return(bytes); }
public unsafe void Write <T>(MemoryOffset offset, T value) where T : unmanaged { Unsafe.Write(ToAddress(offset), value); }
public T ReadStructure <T>(MemoryOffset offset) where T : struct { return(Marshal.PtrToStructure <T>(ToAddress(offset))); }
public MemoryOffset ReadOffset(MemoryOffset offset) { return(ToOffset((MemoryAddress)Read <uint>(offset))); }
public bool IsInRange(MemoryOffset offset) { var offs = (int)offset; return(offs >= 0 && offs < Length); }
public unsafe T Read <T>(MemoryOffset offset) where T : unmanaged { return(Unsafe.Read <T>(ToAddress(offset))); }
public MemoryAddress ToAddress(MemoryOffset offset) { return(Address + offset); }
public void DestroyStructure <T>(MemoryOffset offset) where T : struct { Marshal.DestroyStructure <T>(ToAddress(offset)); }
public void WriteStructure <T>(MemoryOffset offset, T value) where T : struct { Marshal.StructureToPtr(value, ToAddress(offset), false); }
public void WriteBytes(MemoryOffset offset, byte[] values) { Marshal.Copy(values, 0, ToAddress(offset), values.Length); }
public void WriteOffset(MemoryOffset offset, MemoryOffset value) { Write(offset, (uint)ToAddress(value)); }