diff options
author | peter1138 <peter1138@openttd.org> | 2019-02-24 18:52:15 +0000 |
---|---|---|
committer | PeterN <peter@fuzzle.org> | 2019-03-09 16:33:47 +0000 |
commit | ed6084523d546641d4ec9ff5f560387d7c40670f (patch) | |
tree | ec96379c0b76df7b6da28e4c33e16ed7d72eef3e | |
parent | 46aca9377b01a6626a972151e6fc4c62eec76ba7 (diff) | |
download | openttd-ed6084523d546641d4ec9ff5f560387d7c40670f.tar.xz |
Codechange: Convert StationList from SmallVector to std::set.
-rw-r--r-- | src/industry_cmd.cpp | 4 | ||||
-rw-r--r-- | src/newgrf_house.cpp | 3 | ||||
-rw-r--r-- | src/script/api/script_industry.cpp | 2 | ||||
-rw-r--r-- | src/station.cpp | 5 | ||||
-rw-r--r-- | src/station_cmd.cpp | 6 | ||||
-rw-r--r-- | src/station_type.h | 8 |
6 files changed, 17 insertions, 11 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index ad12e5450..cc05893fb 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -2432,7 +2432,7 @@ static int WhoCanServiceIndustry(Industry *ind) StationList stations; FindStationsAroundTiles(ind->location, &stations); - if (stations.Length() == 0) return 0; // No stations found at all => nobody services + if (stations.size() == 0) return 0; // No stations found at all => nobody services const Vehicle *v; int result = 0; @@ -2468,7 +2468,7 @@ static int WhoCanServiceIndustry(Industry *ind) /* Same cargo produced by industry is dropped here => not serviced by vehicle v */ if ((o->GetUnloadType() & OUFB_UNLOAD) && !c_accepts) break; - if (stations.Contains(st)) { + if (stations.find(st) != stations.end()) { if (v->owner == _local_company) return 2; // Company services industry result = 1; // Competitor services industry } diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index 314f02b3d..e6abf0962 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -350,8 +350,7 @@ static uint32 GetDistanceFromNearbyHouse(uint8 parameter, TileIndex tile, HouseI /* Collect acceptance stats. */ uint32 res = 0; - for (Station * const * st_iter = sl->Begin(); st_iter != sl->End(); st_iter++) { - const Station *st = *st_iter; + for (Station *st : *sl) { if (HasBit(st->goods[cid].status, GoodsEntry::GES_EVER_ACCEPTED)) SetBit(res, 0); if (HasBit(st->goods[cid].status, GoodsEntry::GES_LAST_MONTH)) SetBit(res, 1); if (HasBit(st->goods[cid].status, GoodsEntry::GES_CURRENT_MONTH)) SetBit(res, 2); diff --git a/src/script/api/script_industry.cpp b/src/script/api/script_industry.cpp index c536ec559..b9025307b 100644 --- a/src/script/api/script_industry.cpp +++ b/src/script/api/script_industry.cpp @@ -134,7 +134,7 @@ Industry *ind = ::Industry::Get(industry_id); StationList stations; ::FindStationsAroundTiles(ind->location, &stations); - return (int32)stations.Length(); + return (int32)stations.size(); } /* static */ int32 ScriptIndustry::GetDistanceManhattanToTile(IndustryID industry_id, TileIndex tile) diff --git a/src/station.cpp b/src/station.cpp index dc50b4f10..04c5a66bd 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -571,3 +571,8 @@ Money AirportMaintenanceCost(Owner owner) /* 3 bits fraction for the maintenance cost factor. */ return total_cost >> 3; } + +bool StationCompare::operator() (const Station *lhs, const Station *rhs) const +{ + return lhs->index < rhs->index; +} diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index a9460e562..5218a75e9 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -3839,7 +3839,7 @@ void FindStationsAroundTiles(const TileArea &location, StationList *stations) /* Insert the station in the set. This will fail if it has * already been added. */ - stations->Include(st); + stations->insert(st); } } } @@ -3867,9 +3867,7 @@ uint MoveGoodsToStation(CargoID type, uint amount, SourceType source_type, Sourc uint best_rating1 = 0; // rating of st1 uint best_rating2 = 0; // rating of st2 - for (Station * const *st_iter = all_stations->Begin(); st_iter != all_stations->End(); ++st_iter) { - Station *st = *st_iter; - + for (Station *st : *all_stations) { /* Is the station reserved exclusively for somebody else? */ if (st->owner != OWNER_NONE && st->town->exclusive_counter > 0 && st->town->exclusivity != st->owner) continue; diff --git a/src/station_type.h b/src/station_type.h index 495e95a08..42d64fcf8 100644 --- a/src/station_type.h +++ b/src/station_type.h @@ -12,9 +12,9 @@ #ifndef STATION_TYPE_H #define STATION_TYPE_H -#include "core/smallvec_type.hpp" #include "core/smallstack_type.hpp" #include "tilearea_type.h" +#include <set> typedef uint16 StationID; typedef uint16 RoadStopID; @@ -90,8 +90,12 @@ enum CatchmentArea { static const uint MAX_LENGTH_STATION_NAME_CHARS = 32; ///< The maximum length of a station name in characters including '\0' +struct StationCompare { + bool operator() (const Station *lhs, const Station *rhs) const; +}; + /** List of stations */ -typedef SmallVector<Station *, 2> StationList; +typedef std::set<Station *, StationCompare> StationList; /** * Structure contains cached list of stations nearby. The list |