diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/saveload/autoreplace_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/company_sl.cpp | 6 | ||||
-rw-r--r-- | src/saveload/depot_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/economy_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/gamelog_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/industry_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/linkgraph_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/map_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/misc_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/newgrf_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/object_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/order_sl.cpp | 15 | ||||
-rw-r--r-- | src/saveload/saveload.cpp | 63 | ||||
-rw-r--r-- | src/saveload/saveload.h | 21 | ||||
-rw-r--r-- | src/saveload/settings_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/station_sl.cpp | 15 | ||||
-rw-r--r-- | src/saveload/town_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/vehicle_sl.cpp | 5 | ||||
-rw-r--r-- | src/saveload/waypoint_sl.cpp | 5 |
19 files changed, 42 insertions, 148 deletions
diff --git a/src/saveload/autoreplace_sl.cpp b/src/saveload/autoreplace_sl.cpp index 6a9dd8f00..6d5e08f11 100644 --- a/src/saveload/autoreplace_sl.cpp +++ b/src/saveload/autoreplace_sl.cpp @@ -26,10 +26,7 @@ static const SaveLoad _engine_renew_desc[] = { }; struct ERNWChunkHandler : ChunkHandler { - ERNWChunkHandler() : ChunkHandler('ERNW', CH_TABLE) - { - this->fix_pointers = true; - } + ERNWChunkHandler() : ChunkHandler('ERNW', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/company_sl.cpp b/src/saveload/company_sl.cpp index fab674f8b..cc8a9f9cb 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -498,11 +498,7 @@ static const SaveLoad _company_desc[] = { }; struct PLYRChunkHandler : ChunkHandler { - PLYRChunkHandler() : ChunkHandler('PLYR', CH_TABLE) - { - this->load_check = true; - this->fix_pointers = true; - } + PLYRChunkHandler() : ChunkHandler('PLYR', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/depot_sl.cpp b/src/saveload/depot_sl.cpp index ef0c406e2..2a7859211 100644 --- a/src/saveload/depot_sl.cpp +++ b/src/saveload/depot_sl.cpp @@ -30,10 +30,7 @@ static const SaveLoad _depot_desc[] = { }; struct DEPTChunkHandler : ChunkHandler { - DEPTChunkHandler() : ChunkHandler('DEPT', CH_TABLE) - { - this->fix_pointers = true; - } + DEPTChunkHandler() : ChunkHandler('DEPT', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/economy_sl.cpp b/src/saveload/economy_sl.cpp index 3ce1441ee..4625e831a 100644 --- a/src/saveload/economy_sl.cpp +++ b/src/saveload/economy_sl.cpp @@ -89,10 +89,7 @@ static const SaveLoad _cargopayment_desc[] = { }; struct CAPYChunkHandler : ChunkHandler { - CAPYChunkHandler() : ChunkHandler('CAPY', CH_TABLE) - { - this->fix_pointers = true; - } + CAPYChunkHandler() : ChunkHandler('CAPY', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/gamelog_sl.cpp b/src/saveload/gamelog_sl.cpp index 3d71f2ff9..89db17424 100644 --- a/src/saveload/gamelog_sl.cpp +++ b/src/saveload/gamelog_sl.cpp @@ -348,10 +348,7 @@ static const SaveLoad _gamelog_desc[] = { }; struct GLOGChunkHandler : ChunkHandler { - GLOGChunkHandler() : ChunkHandler('GLOG', CH_TABLE) - { - this->load_check = true; - } + GLOGChunkHandler() : ChunkHandler('GLOG', CH_TABLE) {} void LoadCommon(LoggedAction *&gamelog_action, uint &gamelog_actions) const { diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp index d70e1a4ee..6d1645e39 100644 --- a/src/saveload/industry_sl.cpp +++ b/src/saveload/industry_sl.cpp @@ -75,10 +75,7 @@ static const SaveLoad _industry_desc[] = { }; struct INDYChunkHandler : ChunkHandler { - INDYChunkHandler() : ChunkHandler('INDY', CH_TABLE) - { - this->fix_pointers = true; - } + INDYChunkHandler() : ChunkHandler('INDY', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/linkgraph_sl.cpp b/src/saveload/linkgraph_sl.cpp index 70dfb7b39..e1094326b 100644 --- a/src/saveload/linkgraph_sl.cpp +++ b/src/saveload/linkgraph_sl.cpp @@ -301,10 +301,7 @@ struct LGRJChunkHandler : ChunkHandler { * Link graph schedule. */ struct LGRSChunkHandler : ChunkHandler { - LGRSChunkHandler() : ChunkHandler('LGRS', CH_TABLE) - { - this->fix_pointers = true; - } + LGRSChunkHandler() : ChunkHandler('LGRS', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp index d654f3f6b..07a36d6a3 100644 --- a/src/saveload/map_sl.cpp +++ b/src/saveload/map_sl.cpp @@ -28,10 +28,7 @@ static const SaveLoad _map_desc[] = { }; struct MAPSChunkHandler : ChunkHandler { - MAPSChunkHandler() : ChunkHandler('MAPS', CH_TABLE) - { - this->load_check = true; - } + MAPSChunkHandler() : ChunkHandler('MAPS', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/misc_sl.cpp b/src/saveload/misc_sl.cpp index a7e00f88c..779e10098 100644 --- a/src/saveload/misc_sl.cpp +++ b/src/saveload/misc_sl.cpp @@ -96,10 +96,7 @@ static const SaveLoad _date_check_desc[] = { /* Save load date related variables as well as persistent tick counters * XXX: currently some unrelated stuff is just put here */ struct DATEChunkHandler : ChunkHandler { - DATEChunkHandler() : ChunkHandler('DATE', CH_TABLE) - { - this->load_check = true; - } + DATEChunkHandler() : ChunkHandler('DATE', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/newgrf_sl.cpp b/src/saveload/newgrf_sl.cpp index 43f0bd01a..9584d503e 100644 --- a/src/saveload/newgrf_sl.cpp +++ b/src/saveload/newgrf_sl.cpp @@ -74,10 +74,7 @@ static const SaveLoad _grfconfig_desc[] = { struct NGRFChunkHandler : ChunkHandler { - NGRFChunkHandler() : ChunkHandler('NGRF', CH_TABLE) - { - this->load_check = true; - } + NGRFChunkHandler() : ChunkHandler('NGRF', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/object_sl.cpp b/src/saveload/object_sl.cpp index fc4997002..a61050303 100644 --- a/src/saveload/object_sl.cpp +++ b/src/saveload/object_sl.cpp @@ -30,10 +30,7 @@ static const SaveLoad _object_desc[] = { }; struct OBJSChunkHandler : ChunkHandler { - OBJSChunkHandler() : ChunkHandler('OBJS', CH_TABLE) - { - this->fix_pointers = true; - } + OBJSChunkHandler() : ChunkHandler('OBJS', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/order_sl.cpp b/src/saveload/order_sl.cpp index 16ee42013..9ec0d0e25 100644 --- a/src/saveload/order_sl.cpp +++ b/src/saveload/order_sl.cpp @@ -119,10 +119,7 @@ SaveLoadTable GetOrderDescription() } struct ORDRChunkHandler : ChunkHandler { - ORDRChunkHandler() : ChunkHandler('ORDR', CH_TABLE) - { - this->fix_pointers = true; - } + ORDRChunkHandler() : ChunkHandler('ORDR', CH_TABLE) {} void Save() const override { @@ -215,10 +212,7 @@ SaveLoadTable GetOrderListDescription() } struct ORDLChunkHandler : ChunkHandler { - ORDLChunkHandler() : ChunkHandler('ORDL', CH_TABLE) - { - this->fix_pointers = true; - } + ORDLChunkHandler() : ChunkHandler('ORDL', CH_TABLE) {} void Save() const override { @@ -277,10 +271,7 @@ SaveLoadTable GetOrderBackupDescription() } struct BKORChunkHandler : ChunkHandler { - BKORChunkHandler() : ChunkHandler('BKOR', CH_TABLE) - { - this->fix_pointers = true; - } + BKORChunkHandler() : ChunkHandler('BKOR', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 39941c268..6e3d8f8e0 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -314,10 +314,8 @@ static void SlNullPointers() _sl_version = SAVEGAME_VERSION; for (const ChunkHandler &ch : ChunkHandlers()) { - if (ch.fix_pointers) { - Debug(sl, 3, "Nulling pointers for {:c}{:c}{:c}{:c}", ch.id >> 24, ch.id >> 16, ch.id >> 8, ch.id); - ch.FixPointers(); - } + Debug(sl, 3, "Nulling pointers for {:c}{:c}{:c}{:c}", ch.id >> 24, ch.id >> 16, ch.id >> 8, ch.id); + ch.FixPointers(); } assert(_sl.action == SLA_NULL); @@ -2114,45 +2112,22 @@ void SlAutolength(AutolengthProc *proc, void *arg) if (offs != _sl.dumper->GetSize()) SlErrorCorrupt("Invalid chunk size"); } -void ChunkHandler::Save() const -{ - assert(this->save_proc != nullptr); - this->save_proc(); -} - -void ChunkHandler::Load() const -{ - assert(this->load_proc != nullptr); - this->load_proc(); -} - -void ChunkHandler::FixPointers() const -{ - assert(this->ptrs_proc != nullptr); - this->ptrs_proc(); -} - void ChunkHandler::LoadCheck(size_t len) const { - if (this->load_check) { - assert(this->load_check_proc != nullptr); - this->load_check_proc(); - } else { - switch (_sl.block_mode) { - case CH_TABLE: - case CH_SPARSE_TABLE: - SlTableHeader({}); - FALLTHROUGH; - case CH_ARRAY: - case CH_SPARSE_ARRAY: - SlSkipArray(); - break; - case CH_RIFF: - SlSkipBytes(len); - break; - default: - NOT_REACHED(); - } + switch (_sl.block_mode) { + case CH_TABLE: + case CH_SPARSE_TABLE: + SlTableHeader({}); + FALLTHROUGH; + case CH_ARRAY: + case CH_SPARSE_ARRAY: + SlSkipArray(); + break; + case CH_RIFF: + SlSkipBytes(len); + break; + default: + NOT_REACHED(); } } @@ -2352,10 +2327,8 @@ static void SlFixPointers() _sl.action = SLA_PTRS; for (const ChunkHandler &ch : ChunkHandlers()) { - if (ch.fix_pointers) { - Debug(sl, 3, "Fixing pointers for {:c}{:c}{:c}{:c}", ch.id >> 24, ch.id >> 16, ch.id >> 8, ch.id); - ch.FixPointers(); - } + Debug(sl, 3, "Fixing pointers for {:c}{:c}{:c}{:c}", ch.id >> 24, ch.id >> 16, ch.id >> 8, ch.id); + ch.FixPointers(); } assert(_sl.action == SLA_PTRS); diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 2f5ebba1f..7fc802713 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -384,7 +384,6 @@ void DoExitSave(); SaveOrLoadResult SaveWithFilter(struct SaveFilter *writer, bool threaded); SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader); -typedef void ChunkSaveLoadProc(); typedef void AutolengthProc(void *arg); /** Type of a chunk. */ @@ -402,37 +401,23 @@ enum ChunkType { /** Handlers and description of chunk. */ struct ChunkHandler { uint32 id; ///< Unique ID (4 letters). - ChunkSaveLoadProc *save_proc; ///< Save procedure of the chunk. - ChunkSaveLoadProc *load_proc; ///< Load procedure of the chunk. - ChunkSaveLoadProc *ptrs_proc; ///< Manipulate pointers in the chunk. - ChunkSaveLoadProc *load_check_proc; ///< Load procedure for game preview. ChunkType type; ///< Type of the chunk. @see ChunkType - bool fix_pointers = false; - bool load_check = false; - ChunkHandler(uint32 id, ChunkType type) : id(id), type(type) {} - ChunkHandler(uint32 id, ChunkSaveLoadProc *save_proc, ChunkSaveLoadProc *load_proc, ChunkSaveLoadProc *ptrs_proc, ChunkSaveLoadProc *load_check_proc, ChunkType type) - : id(id), save_proc(save_proc), load_proc(load_proc), ptrs_proc(ptrs_proc), load_check_proc(load_check_proc), type(type) - { - this->fix_pointers = ptrs_proc != nullptr; - this->load_check = load_check_proc != nullptr; - } - virtual ~ChunkHandler() {} /** * Save the chunk. * Must be overridden, unless Chunk type is CH_READONLY. */ - virtual void Save() const; + virtual void Save() const { NOT_REACHED(); } /** * Load the chunk. * Must be overridden. */ - virtual void Load() const; + virtual void Load() const = 0; /** * Fix the pointers. @@ -440,7 +425,7 @@ struct ChunkHandler { * On load, pointers are filled with indices and need to be fixed to point to the real object. * Must be overridden if the chunk saves any pointer. */ - virtual void FixPointers() const; + virtual void FixPointers() const {} /** * Load the chunk for game preview. diff --git a/src/saveload/settings_sl.cpp b/src/saveload/settings_sl.cpp index 53254cde7..59b00e0f0 100644 --- a/src/saveload/settings_sl.cpp +++ b/src/saveload/settings_sl.cpp @@ -157,10 +157,7 @@ struct OPTSChunkHandler : ChunkHandler { }; struct PATSChunkHandler : ChunkHandler { - PATSChunkHandler() : ChunkHandler('PATS', CH_TABLE) - { - this->load_check = true; - } + PATSChunkHandler() : ChunkHandler('PATS', CH_TABLE) {} void Load() const override { diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index 9c97792ce..20d70066e 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -485,10 +485,7 @@ static const SaveLoad _old_station_desc[] = { }; struct STNSChunkHandler : ChunkHandler { - STNSChunkHandler() : ChunkHandler('STNS', CH_READONLY) - { - this->fix_pointers = true; - } + STNSChunkHandler() : ChunkHandler('STNS', CH_READONLY) {} void Load() const override { @@ -659,10 +656,7 @@ static const SaveLoad _station_desc[] = { }; struct STNNChunkHandler : ChunkHandler { - STNNChunkHandler() : ChunkHandler('STNN', CH_TABLE) - { - this->fix_pointers = true; - } + STNNChunkHandler() : ChunkHandler('STNN', CH_TABLE) {} void Save() const override { @@ -705,10 +699,7 @@ struct STNNChunkHandler : ChunkHandler { }; struct ROADChunkHandler : ChunkHandler { - ROADChunkHandler() : ChunkHandler('ROAD', CH_TABLE) - { - this->fix_pointers = true; - } + ROADChunkHandler() : ChunkHandler('ROAD', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/town_sl.cpp b/src/saveload/town_sl.cpp index 09c575e6a..edf38178d 100644 --- a/src/saveload/town_sl.cpp +++ b/src/saveload/town_sl.cpp @@ -287,10 +287,7 @@ struct HIDSChunkHandler : ChunkHandler { }; struct CITYChunkHandler : ChunkHandler { - CITYChunkHandler() : ChunkHandler('CITY', CH_TABLE) - { - this->fix_pointers = true; - } + CITYChunkHandler() : ChunkHandler('CITY', CH_TABLE) {} void Save() const override { diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 24b3a13c9..85df6efce 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -995,10 +995,7 @@ const static SaveLoad _vehicle_desc[] = { }; struct VEHSChunkHandler : ChunkHandler { - VEHSChunkHandler() : ChunkHandler('VEHS', CH_SPARSE_TABLE) - { - this->fix_pointers = true; - } + VEHSChunkHandler() : ChunkHandler('VEHS', CH_SPARSE_TABLE) {} void Save() const override { diff --git a/src/saveload/waypoint_sl.cpp b/src/saveload/waypoint_sl.cpp index 739fd5655..e81148fa5 100644 --- a/src/saveload/waypoint_sl.cpp +++ b/src/saveload/waypoint_sl.cpp @@ -183,10 +183,7 @@ static const SaveLoad _old_waypoint_desc[] = { }; struct CHKPChunkHandler : ChunkHandler { - CHKPChunkHandler() : ChunkHandler('CHKP', CH_READONLY) - { - this->fix_pointers = true; - } + CHKPChunkHandler() : ChunkHandler('CHKP', CH_READONLY) {} void Load() const override { |