From 087654501bb6200680cce61560267373df947a80 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 8 Jan 2023 01:36:07 +0000 Subject: [PATCH] Codechange: Initialise specs with std::fill/std::copy instead of memset/memcpy. --- src/industry_cmd.cpp | 17 ++++++----------- src/newgrf_airport.cpp | 7 ++++--- src/newgrf_airporttiles.cpp | 4 ++-- src/town_cmd.cpp | 4 ++-- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 6adbca2ffb..2b6566a255 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -76,21 +76,16 @@ IndustryBuildData _industry_builder; ///< In-game manager of industries. */ void ResetIndustries() { - for (IndustryType i = 0; i < NUM_INDUSTRYTYPES; i++) { - /* Reset the spec to default */ - if (i < lengthof(_origin_industry_specs)) { - _industry_specs[i] = _origin_industry_specs[i]; - } else { - _industry_specs[i] = IndustrySpec{}; - } + auto industry_insert = std::copy(std::begin(_origin_industry_specs), std::end(_origin_industry_specs), std::begin(_industry_specs)); + std::fill(industry_insert, std::end(_industry_specs), IndustrySpec{}); + for (IndustryType i = 0; i < lengthof(_origin_industry_specs); i++) { /* Enable only the current climate industries */ - _industry_specs[i].enabled = i < NEW_INDUSTRYOFFSET && - HasBit(_origin_industry_specs[i].climate_availability, _settings_game.game_creation.landscape); + _industry_specs[i].enabled = HasBit(_industry_specs[i].climate_availability, _settings_game.game_creation.landscape); } - memset(&_industry_tile_specs, 0, sizeof(_industry_tile_specs)); - memcpy(&_industry_tile_specs, &_origin_industry_tile_specs, sizeof(_origin_industry_tile_specs)); + auto industry_tile_insert = std::copy(std::begin(_origin_industry_tile_specs), std::end(_origin_industry_tile_specs), std::begin(_industry_tile_specs)); + std::fill(industry_tile_insert, std::end(_industry_tile_specs), IndustryTileSpec{}); /* Reset any overrides that have been set. */ _industile_mngr.ResetOverride(); diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp index fd339e6c94..d1e9547d4a 100644 --- a/src/newgrf_airport.cpp +++ b/src/newgrf_airport.cpp @@ -152,9 +152,10 @@ bool AirportSpec::IsWithinMapBounds(byte table, TileIndex tile) const */ void AirportSpec::ResetAirports() { - extern const AirportSpec _origin_airport_specs[]; - memset(&AirportSpec::specs, 0, sizeof(AirportSpec::specs)); - memcpy(&AirportSpec::specs, &_origin_airport_specs, sizeof(AirportSpec) * NEW_AIRPORT_OFFSET); + extern const AirportSpec _origin_airport_specs[NEW_AIRPORT_OFFSET]; + + auto insert = std::copy(std::begin(_origin_airport_specs), std::end(_origin_airport_specs), std::begin(AirportSpec::specs)); + std::fill(insert, std::end(AirportSpec::specs), AirportSpec{}); _airport_mngr.ResetOverride(); } diff --git a/src/newgrf_airporttiles.cpp b/src/newgrf_airporttiles.cpp index ef2508c219..c2e5576636 100644 --- a/src/newgrf_airporttiles.cpp +++ b/src/newgrf_airporttiles.cpp @@ -57,8 +57,8 @@ AirportTileOverrideManager _airporttile_mngr(NEW_AIRPORTTILE_OFFSET, NUM_AIRPORT */ void AirportTileSpec::ResetAirportTiles() { - memset(&AirportTileSpec::tiles, 0, sizeof(AirportTileSpec::tiles)); - memcpy(&AirportTileSpec::tiles, &_origin_airporttile_specs, sizeof(_origin_airporttile_specs)); + auto insert = std::copy(std::begin(_origin_airporttile_specs), std::end(_origin_airporttile_specs), std::begin(AirportTileSpec::tiles)); + std::fill(insert, std::end(AirportTileSpec::tiles), AirportTileSpec{}); /* Reset any overrides that have been set. */ _airporttile_mngr.ResetOverride(); diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 619d25e990..730a417e04 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -3834,8 +3834,8 @@ HouseSpec _house_specs[NUM_HOUSES]; void ResetHouses() { - memset(&_house_specs, 0, sizeof(_house_specs)); - memcpy(&_house_specs, &_original_house_specs, sizeof(_original_house_specs)); + auto insert = std::copy(std::begin(_original_house_specs), std::end(_original_house_specs), std::begin(_house_specs)); + std::fill(insert, std::end(_house_specs), HouseSpec{}); /* Reset any overrides that have been set. */ _house_mngr.ResetOverride();