Saveload: Add object ptr param to table object save/load helpers

This commit is contained in:
Jonathan G Rennison
2024-07-16 21:28:46 +01:00
parent c2e7c67204
commit 3c53e9a920
3 changed files with 15 additions and 19 deletions

View File

@@ -107,11 +107,7 @@ static void Load_CHTS()
UnknownCheatHandler uch{};
SaveLoadTableData slt = SlTableHeader(GetCheatsDesc(false), &uch);
if (SlIterateArray() == -1) return;
SlObjectLoadFiltered(&_cheats, slt);
if (SlIterateArray() != -1) {
SlErrorCorruptFmt("Too many CHTS entries");
}
SlLoadTableObjectChunk(slt, &_cheats);
} else {
size_t count = SlGetFieldLength();
SaveLoadTableData slt = SlTableHeaderOrRiff(GetCheatsDesc(false));

View File

@@ -2483,16 +2483,16 @@ SaveLoadTableData SlPrepareNamedSaveLoadTableForPtrOrNull(const NamedSaveLoadTab
return saveloads;
}
void SlSaveTableObjectChunk(const SaveLoadTable &slt)
void SlSaveTableObjectChunk(const SaveLoadTable &slt, void *object)
{
SlSetArrayIndex(0);
SlObjectSaveFiltered(nullptr, slt);
SlObjectSaveFiltered(object, slt);
}
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt)
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt, void *object)
{
if (SlIsTableChunk() && SlIterateArray() == -1) return;
SlObjectLoadFiltered(nullptr, slt);
SlObjectLoadFiltered(object, slt);
if (SlIsTableChunk() && SlIterateArray() != -1) {
uint32_t id = _sl.current_chunk_id;
SlErrorCorruptFmt("Too many %s entries", ChunkIDDumper()(id));

View File

@@ -1096,8 +1096,8 @@ void SlSkipTableHeader();
[[nodiscard]] SaveLoadTableData SlTableHeader(const NamedSaveLoadTable &slt, TableHeaderSpecialHandler *special_handler = nullptr);
[[nodiscard]] SaveLoadTableData SlTableHeaderOrRiff(const NamedSaveLoadTable &slt);
[[nodiscard]] SaveLoadTableData SlPrepareNamedSaveLoadTableForPtrOrNull(const NamedSaveLoadTable &slt);
void SlSaveTableObjectChunk(const SaveLoadTable &slt);
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt);
void SlSaveTableObjectChunk(const SaveLoadTable &slt, void *object = nullptr);
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt, void *object = nullptr);
void SlLoadTableWithArrayLengthPrefixesMissing();
void SlSetStructListLength(size_t length);
@@ -1105,24 +1105,24 @@ size_t SlGetStructListLength(size_t limit);
void SlSkipChunkContents();
inline void SlSaveTableObjectChunk(const NamedSaveLoadTable &slt)
inline void SlSaveTableObjectChunk(const NamedSaveLoadTable &slt, void *object = nullptr)
{
SlSaveTableObjectChunk(SlTableHeader(slt));
SlSaveTableObjectChunk(SlTableHeader(slt), object);
}
inline void SlLoadTableObjectChunk(const NamedSaveLoadTable &slt)
inline void SlLoadTableObjectChunk(const NamedSaveLoadTable &slt, void *object = nullptr)
{
SlLoadTableOrRiffFiltered(SlTableHeader(slt));
SlLoadTableOrRiffFiltered(SlTableHeader(slt), object);
}
inline void SlLoadTableObjectChunk(const SaveLoadTable &slt)
inline void SlLoadTableObjectChunk(const SaveLoadTable &slt, void *object = nullptr)
{
SlLoadTableOrRiffFiltered(slt);
SlLoadTableOrRiffFiltered(slt, object);
}
inline void SlLoadTableOrRiffFiltered(const NamedSaveLoadTable &slt)
inline void SlLoadTableOrRiffFiltered(const NamedSaveLoadTable &slt, void *object = nullptr)
{
SlLoadTableOrRiffFiltered(SlTableHeaderOrRiff(slt));
SlLoadTableOrRiffFiltered(SlTableHeaderOrRiff(slt), object);
}
[[noreturn]] void CDECL SlErrorFmt(StringID string, const char *msg, ...) WARN_FORMAT(2, 3);