Replace various uses of std::set/map with btree containers.

This commit is contained in:
Jonathan G Rennison
2017-02-08 00:18:09 +00:00
parent 76de8f9b13
commit 9d5f34fea6
10 changed files with 35 additions and 30 deletions

View File

@@ -32,12 +32,11 @@ static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID c
return; return;
} }
CargoMonitorMap::iterator next; for (CargoMonitorMap::iterator it = cargo_monitor_map.begin(); it != cargo_monitor_map.end();) {
for (CargoMonitorMap::iterator it = cargo_monitor_map.begin(); it != cargo_monitor_map.end(); it = next) {
next = it;
next++;
if (DecodeMonitorCompany(it->first) == company) { if (DecodeMonitorCompany(it->first) == company) {
cargo_monitor_map.erase(it); it = cargo_monitor_map.erase(it);
} else {
++it;
} }
} }
} }

View File

@@ -17,8 +17,7 @@
#include "industry.h" #include "industry.h"
#include "town.h" #include "town.h"
#include "core/overflowsafe_type.hpp" #include "core/overflowsafe_type.hpp"
#include <map> #include "3rdparty/cpp-btree/btree_map.h"
struct Station; struct Station;
/** /**
@@ -32,7 +31,7 @@ struct Station;
typedef uint32 CargoMonitorID; ///< Type of the cargo monitor number. typedef uint32 CargoMonitorID; ///< Type of the cargo monitor number.
/** Map type for storing and updating active cargo monitor numbers and their amounts. */ /** Map type for storing and updating active cargo monitor numbers and their amounts. */
typedef std::map<CargoMonitorID, OverflowSafeInt32> CargoMonitorMap; typedef btree::btree_map<CargoMonitorID, OverflowSafeInt32> CargoMonitorMap;
extern CargoMonitorMap _cargo_pickups; extern CargoMonitorMap _cargo_pickups;
extern CargoMonitorMap _cargo_deliveries; extern CargoMonitorMap _cargo_deliveries;

View File

@@ -33,8 +33,8 @@
#include "tunnelbridge_map.h" #include "tunnelbridge_map.h"
#include "pathfinder/npf/aystar.h" #include "pathfinder/npf/aystar.h"
#include "saveload/saveload.h" #include "saveload/saveload.h"
#include "3rdparty/cpp-btree/btree_set.h"
#include <deque> #include <deque>
#include <set>
#include "table/strings.h" #include "table/strings.h"
#include "table/sprites.h" #include "table/sprites.h"
@@ -1119,7 +1119,7 @@ static bool FlowRiver(TileIndex spring, TileIndex begin)
uint height = TileHeight(begin); uint height = TileHeight(begin);
if (IsWaterTile(begin)) return DistanceManhattan(spring, begin) > _settings_game.game_creation.min_river_length; if (IsWaterTile(begin)) return DistanceManhattan(spring, begin) > _settings_game.game_creation.min_river_length;
std::set<TileIndex> marks; btree::btree_set<TileIndex> marks;
SET_MARK(begin); SET_MARK(begin);
/* Breadth first search for the closest tile we can flow down to. */ /* Breadth first search for the closest tile we can flow down to. */
@@ -1156,7 +1156,7 @@ static bool FlowRiver(TileIndex spring, TileIndex begin)
/* Maybe we can make a lake. Find the Nth of the considered tiles. */ /* Maybe we can make a lake. Find the Nth of the considered tiles. */
TileIndex lakeCenter = 0; TileIndex lakeCenter = 0;
int i = RandomRange(count - 1) + 1; int i = RandomRange(count - 1) + 1;
std::set<TileIndex>::const_iterator cit = marks.begin(); btree::btree_set<TileIndex>::const_iterator cit = marks.begin();
while (--i) cit++; while (--i) cit++;
lakeCenter = *cit; lakeCenter = *cit;

View File

@@ -3,11 +3,12 @@
#include "../stdafx.h" #include "../stdafx.h"
#include "../core/math_func.hpp" #include "../core/math_func.hpp"
#include "mcf.h" #include "mcf.h"
#include "../3rdparty/cpp-btree/btree_map.h"
#include <set> #include <set>
#include "../safeguards.h" #include "../safeguards.h"
typedef std::map<NodeID, Path *> PathViaMap; typedef btree::btree_map<NodeID, Path *> PathViaMap;
/** /**
* This is a wrapper around Tannotation* which also stores a cache of GetAnnotation() and GetNode() * This is a wrapper around Tannotation* which also stores a cache of GetAnnotation() and GetNode()

View File

@@ -14,9 +14,9 @@
#include "../cargo_type.h" #include "../cargo_type.h"
#include "../vehicle_base.h" #include "../vehicle_base.h"
#include "../3rdparty/cpp-btree/btree_set.h"
#include <vector> #include <vector>
#include <map> #include <map>
#include <set>
/** /**
* Utility to refresh links a consist will visit. * Utility to refresh links a consist will visit.
@@ -67,7 +67,7 @@ protected:
* Default constructor should not be called but has to be visible for * Default constructor should not be called but has to be visible for
* usage in std::set. * usage in std::set.
*/ */
Hop() {NOT_REACHED();} Hop() {}
/** /**
* Real constructor, only use this one. * Real constructor, only use this one.
@@ -80,7 +80,7 @@ protected:
}; };
typedef std::vector<RefitDesc> RefitList; typedef std::vector<RefitDesc> RefitList;
typedef std::set<Hop> HopSet; typedef btree::btree_set<Hop> HopSet;
Vehicle *vehicle; ///< Vehicle for which the links should be refreshed. Vehicle *vehicle; ///< Vehicle for which the links should be refreshed.
uint capacities[NUM_CARGO]; ///< Current added capacities per cargo ID in the consist. uint capacities[NUM_CARGO]; ///< Current added capacities per cargo ID in the consist.

View File

@@ -41,7 +41,6 @@
#include "date_func.h" #include "date_func.h"
#include "string_func.h" #include "string_func.h"
#include "network/network.h" #include "network/network.h"
#include <map>
#include "smallmap_gui.h" #include "smallmap_gui.h"
#include "genworld.h" #include "genworld.h"
#include "error.h" #include "error.h"
@@ -52,6 +51,8 @@
#include "table/strings.h" #include "table/strings.h"
#include "table/build_industry.h" #include "table/build_industry.h"
#include "3rdparty/cpp-btree/btree_map.h"
#include "safeguards.h" #include "safeguards.h"
/* TTDPatch extended GRF format codec /* TTDPatch extended GRF format codec
@@ -90,7 +91,7 @@ private:
}; };
/** Currently referenceable spritesets */ /** Currently referenceable spritesets */
std::map<uint, SpriteSet> spritesets[GSF_END]; btree::btree_map<uint, SpriteSet> spritesets[GSF_END];
public: public:
/* Global state */ /* Global state */
@@ -347,6 +348,7 @@ struct GRFLocation {
uint32 grfid; uint32 grfid;
uint32 nfoline; uint32 nfoline;
GRFLocation() { }
GRFLocation(uint32 grfid, uint32 nfoline) : grfid(grfid), nfoline(nfoline) { } GRFLocation(uint32 grfid, uint32 nfoline) : grfid(grfid), nfoline(nfoline) { }
bool operator<(const GRFLocation &other) const bool operator<(const GRFLocation &other) const
@@ -360,8 +362,8 @@ struct GRFLocation {
} }
}; };
static std::map<GRFLocation, SpriteID> _grm_sprites; static btree::btree_map<GRFLocation, SpriteID> _grm_sprites;
typedef std::map<GRFLocation, byte*> GRFLineToSpriteOverride; typedef btree::btree_map<GRFLocation, byte*> GRFLineToSpriteOverride;
static GRFLineToSpriteOverride _grf_line_to_action6_sprite_override; static GRFLineToSpriteOverride _grf_line_to_action6_sprite_override;
/** /**
@@ -5931,7 +5933,7 @@ static void CfgApply(ByteReader *buf)
GRFLineToSpriteOverride::iterator it = _grf_line_to_action6_sprite_override.find(location); GRFLineToSpriteOverride::iterator it = _grf_line_to_action6_sprite_override.find(location);
if (it != _grf_line_to_action6_sprite_override.end()) { if (it != _grf_line_to_action6_sprite_override.end()) {
free(preload_sprite); free(preload_sprite);
preload_sprite = _grf_line_to_action6_sprite_override[location]; preload_sprite = it->second;
} else { } else {
_grf_line_to_action6_sprite_override[location] = preload_sprite; _grf_line_to_action6_sprite_override[location] = preload_sprite;
} }
@@ -8760,7 +8762,7 @@ static void DecodeSpecialSprite(byte *buf, uint num, GrfLoadingStage stage)
FioReadBlock(buf, num); FioReadBlock(buf, num);
} else { } else {
/* Use the preloaded sprite data. */ /* Use the preloaded sprite data. */
buf = _grf_line_to_action6_sprite_override[location]; buf = it->second;
grfmsg(7, "DecodeSpecialSprite: Using preloaded pseudo sprite data"); grfmsg(7, "DecodeSpecialSprite: Using preloaded pseudo sprite data");
/* Skip the real (original) content of this action. */ /* Skip the real (original) content of this action. */

View File

@@ -24,6 +24,8 @@
#include "table/strings.h" #include "table/strings.h"
#include "table/palette_convert.h" #include "table/palette_convert.h"
#include "3rdparty/cpp-btree/btree_map.h"
#include "safeguards.h" #include "safeguards.h"
/* Default of 4MB spritecache */ /* Default of 4MB spritecache */
@@ -476,7 +478,7 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty
/** Map from sprite numbers to position in the GRF file. */ /** Map from sprite numbers to position in the GRF file. */
static std::map<uint32, size_t> _grf_sprite_offsets; static btree::btree_map<uint32, size_t> _grf_sprite_offsets;
/** /**
* Get the file offset for a specific sprite in the sprite section of a GRF. * Get the file offset for a specific sprite in the sprite section of a GRF.
@@ -485,7 +487,8 @@ static std::map<uint32, size_t> _grf_sprite_offsets;
*/ */
size_t GetGRFSpriteOffset(uint32 id) size_t GetGRFSpriteOffset(uint32 id)
{ {
return _grf_sprite_offsets.find(id) != _grf_sprite_offsets.end() ? _grf_sprite_offsets[id] : SIZE_MAX; auto iter = _grf_sprite_offsets.find(id);
return iter != _grf_sprite_offsets.end() ? iter->second : SIZE_MAX;
} }
/** /**

View File

@@ -21,15 +21,15 @@
#include "table/strings.h" #include "table/strings.h"
#include <map> #include "3rdparty/cpp-btree/btree_set.h"
#include <set> #include "3rdparty/cpp-btree/btree_map.h"
#include "safeguards.h" #include "safeguards.h"
/** Set of tiles. */ /** Set of tiles. */
typedef std::set<TileIndex> TileIndexSet; typedef btree::btree_set<TileIndex> TileIndexSet;
/** Mapping of tiles to their height. */ /** Mapping of tiles to their height. */
typedef std::map<TileIndex, int> TileIndexToHeightMap; typedef btree::btree_map<TileIndex, int> TileIndexToHeightMap;
/** State of the terraforming. */ /** State of the terraforming. */
struct TerraformerState { struct TerraformerState {

View File

@@ -18,7 +18,7 @@
#include "rail_map.h" #include "rail_map.h"
#include "tile_type.h" #include "tile_type.h"
#include "group_type.h" #include "group_type.h"
#include <map> #include "3rdparty/cpp-btree/btree_map.h"
#include <vector> #include <vector>
struct Train; struct Train;
@@ -50,7 +50,7 @@ struct TraceRestrictMappingItem {
: program_id(program_id_) { } : program_id(program_id_) { }
}; };
typedef std::map<TraceRestrictRefId, TraceRestrictMappingItem> TraceRestrictMapping; typedef btree::btree_map<TraceRestrictRefId, TraceRestrictMappingItem> TraceRestrictMapping;
/** The actual mapping from TraceRestrictRefId to TraceRestrictProgramID. */ /** The actual mapping from TraceRestrictRefId to TraceRestrictProgramID. */
extern TraceRestrictMapping _tracerestrictprogram_mapping; extern TraceRestrictMapping _tracerestrictprogram_mapping;

View File

@@ -57,6 +57,7 @@
#include "tbtr_template_vehicle_func.h" #include "tbtr_template_vehicle_func.h"
#include "string_func.h" #include "string_func.h"
#include "scope_info.h" #include "scope_info.h"
#include "3rdparty/cpp-btree/btree_set.h"
#include "table/strings.h" #include "table/strings.h"
@@ -75,7 +76,7 @@ uint16 _returned_mail_refit_capacity; ///< Stores the mail capacity after a refi
VehiclePool _vehicle_pool("Vehicle"); VehiclePool _vehicle_pool("Vehicle");
INSTANTIATE_POOL_METHODS(Vehicle) INSTANTIATE_POOL_METHODS(Vehicle)
static std::set<Vehicle *> _vehicles_to_pay_repair; static btree::btree_set<Vehicle *> _vehicles_to_pay_repair;
/** /**
* Determine shared bounds of all sprites. * Determine shared bounds of all sprites.