summaryrefslogtreecommitdiffstats
path: root/src/leeds/base/relocatableChunk.h
diff options
context:
space:
mode:
authorMichael <60937741+majesticCoding@users.noreply.github.com>2021-01-09 16:36:44 +0100
committerGitHub <noreply@github.com>2021-01-09 16:36:44 +0100
commit5a5f06ef2a40ba52cca60071cb95687fc8a0b1c3 (patch)
tree672024c0e3bf8cc3e0b96a89d6bed0680ab5284c /src/leeds/base/relocatableChunk.h
parentAllocator fix (diff)
parentMerge remote-tracking branch 'upstream/lcs' into lcs (diff)
downloadre3-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.h51
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