summaryrefslogtreecommitdiffstats
path: root/src/leeds/base/relocatableChunk.h
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2021-01-08 23:43:56 +0100
committeraap <aap@papnet.eu>2021-01-08 23:43:56 +0100
commit14a5144de7c70831b2e3d0fc07c6a89c49caaa06 (patch)
treeee8bc32e8efde413f6d6fbde58340e6454e4ff3f /src/leeds/base/relocatableChunk.h
parentanims done. ped fight hacked to compile (diff)
parentAdd Relocatable Chunk stubs (diff)
downloadre3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.tar
re3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.tar.gz
re3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.tar.bz2
re3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.tar.lz
re3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.tar.xz
re3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.tar.zst
re3-14a5144de7c70831b2e3d0fc07c6a89c49caaa06.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