#pragma once

void SafeWriteBuf(uintptr_t addr, void * data, size_t len);
void SafeWrite8(uintptr_t addr, UInt8 data);
void SafeWrite16(uintptr_t addr, UInt16 data);
void SafeWrite32(uintptr_t addr, UInt32 data);
void SafeWrite64(uintptr_t addr, UInt64 data);

// ### warning: if you try to branch more than +/- 2GB with these, they will fail and return false
// ### this is a limitation of the 'jmp' instruction and more generally the x64 ISA
// 5 bytes written to src
bool SafeWriteJump(uintptr_t src, uintptr_t dst);
bool SafeWriteCall(uintptr_t src, uintptr_t dst);
