diff options
author | Michael <60937741+majesticCoding@users.noreply.github.com> | 2021-01-09 16:36:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-09 16:36:44 +0100 |
commit | 5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3 (patch) | |
tree | 672024c0e3bf8cc3e0b96a89d6bed0680ab5284c /src/leeds/base/relocatableChunk.h | |
parent | Allocator fix (diff) | |
parent | Merge remote-tracking branch 'upstream/lcs' into lcs (diff) | |
download | re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.tar re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.tar.gz re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.tar.bz2 re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.tar.lz re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.tar.xz re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.tar.zst re3-5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3.zip |
Diffstat (limited to 'src/leeds/base/relocatableChunk.h')
-rw-r--r-- | src/leeds/base/relocatableChunk.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/leeds/base/relocatableChunk.h b/src/leeds/base/relocatableChunk.h new file mode 100644 index 00000000..ea910240 --- /dev/null +++ b/src/leeds/base/relocatableChunk.h @@ -0,0 +1,51 @@ +#pragma once + +namespace base +{ + // TODO(LCS): add actual struct fields + + struct sChunkHeader; + struct sDataBlock; + struct sFileLine; + + class cRelocatableChunk + { + public: + void* Load(void* data, bool bShrink); + void* Load(const char* name, bool bShrink); + void Fixup(const sChunkHeader& header, void* data); + void Fixup(void* data); + void* Shrink(const sChunkHeader& header, void* data); + void* Shrink(void* data); + }; + + class cRelocatableChunkClassInfo + { + public: + cRelocatableChunkClassInfo(const char* class_name, const void* pVmt, int size); + }; + + class cRelocatableChunkWriter + { + public: + cRelocatableChunkWriter(); + ~cRelocatableChunkWriter(); + + void AddPatch(void* addr); + void AddPatchWithInfo(const char* str, int unk, void* addr); + void AllocateRaw(void* addr, uint32 size, uint32 align, bool a5 = false, bool a6 = false); + + void Clear(); + void Class(void* ptr, const cRelocatableChunkClassInfo& classInfo); + void DebugFileLine(void*); + + void PatchFunc(void* ptr); + + bool IsAllocated(void* addr); + + void Reserve(int, int); + + void Save(const char* filename, uint32 a3, uint32 a4, bool a5); + void Save(void* file, uint32 a3, uint32 a4, bool a5, sChunkHeader* pHeader); + }; +};
\ No newline at end of file |