diff --git a/src/sl/saveload.cpp b/src/sl/saveload.cpp index 464f0771e4..44ce8427d0 100644 --- a/src/sl/saveload.cpp +++ b/src/sl/saveload.cpp @@ -1990,6 +1990,21 @@ std::vector SlFilterObject(const SaveLoadTable &slt) return save; } +void SlFilterNamedSaveLoadTable(const NamedSaveLoadTable &nslt, std::vector &save) +{ + for (auto &nsld : nslt) { + if ((nsld.nsl_flags & NSLF_TABLE_ONLY) != 0) continue; + SlFilterObjectMember(nsld.save_load, save); + } +} + +std::vector SlFilterNamedSaveLoadTable(const NamedSaveLoadTable &nslt) +{ + std::vector save; + SlFilterNamedSaveLoadTable(nslt, save); + return save; +} + template bool SlObjectMemberGeneric(void *object, const SaveLoad &sld) { @@ -2449,10 +2464,7 @@ SaveLoadTableData SlTableHeaderOrRiff(const NamedSaveLoadTable &slt) if (SlIsTableChunk()) return SlTableHeader(slt); SaveLoadTableData saveloads; - for (auto &nsld : slt) { - if ((nsld.nsl_flags & NSLF_TABLE_ONLY) != 0) continue; - SlFilterObjectMember(nsld.save_load, saveloads); - } + SlFilterNamedSaveLoadTable(slt, saveloads); return saveloads; } diff --git a/src/sl/saveload.h b/src/sl/saveload.h index c448f6beee..da75c34c7a 100644 --- a/src/sl/saveload.h +++ b/src/sl/saveload.h @@ -1080,6 +1080,7 @@ void SlObject(void *object, const SaveLoadTable &slt); bool SlObjectMember(void *object, const SaveLoad &sld); std::vector SlFilterObject(const SaveLoadTable &slt); +std::vector SlFilterNamedSaveLoadTable(const NamedSaveLoadTable &nslt); void SlObjectSaveFiltered(void *object, const SaveLoadTable &slt); void SlObjectLoadFiltered(void *object, const SaveLoadTable &slt); void SlObjectPtrOrNullFiltered(void *object, const SaveLoadTable &slt);