changeset 11951:8bbe44fa53e2 draft

(svn r16354) -Codechange: use 'new' pool accessors and methods for Engine too
author smatz <smatz@openttd.org>
date Mon, 18 May 2009 19:32:16 +0000
parents 13ee49bccba3
children 82e90bc0a1d9
files src/ai/api/ai_engine.cpp src/autoreplace_cmd.cpp src/engine.cpp src/engine_base.h src/vehicle.cpp
diffstat 5 files changed, 15 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/api/ai_engine.cpp
+++ b/src/ai/api/ai_engine.cpp
@@ -15,7 +15,8 @@
 
 /* static */ bool AIEngine::IsValidEngine(EngineID engine_id)
 {
-	return ::IsEngineIndex(engine_id) && HasBit(::Engine::Get(engine_id)->company_avail, _current_company);
+	const Engine *e = ::Engine::GetIfValid(engine_id);
+	return e != NULL && HasBit(e->company_avail, _current_company);
 }
 
 /* static */ char *AIEngine::GetName(EngineID engine_id)
--- a/src/autoreplace_cmd.cpp
+++ b/src/autoreplace_cmd.cpp
@@ -42,7 +42,7 @@
 {
 	/* First we make sure that it's a valid type the user requested
 	 * check that it's an engine that is in the engine array */
-	if (!IsEngineIndex(from) || !IsEngineIndex(to)) return false;
+	if (!Engine::IsValidID(from) || !Engine::IsValidID(to)) return false;
 
 	/* we can't replace an engine into itself (that would be autorenew) */
 	if (from == to) return false;
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -620,11 +620,8 @@
  */
 CommandCost CmdWantEnginePreview(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 {
-	Engine *e;
-
-	if (!IsEngineIndex(p1)) return CMD_ERROR;
-	e = Engine::Get(p1);
-	if (GetBestCompany(e->preview_company_rank) != _current_company) return CMD_ERROR;
+	Engine *e = Engine::GetIfValid(p1);
+	if (e == NULL || GetBestCompany(e->preview_company_rank) != _current_company) return CMD_ERROR;
 
 	if (flags & DC_EXEC) AcceptEnginePreview(p1, _current_company);
 
@@ -734,7 +731,8 @@
  */
 CommandCost CmdRenameEngine(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 {
-	if (!IsEngineIndex(p1)) return CMD_ERROR;
+	Engine *e = Engine::GetIfValid(p1);
+	if (e == NULL) return CMD_ERROR;
 
 	bool reset = StrEmpty(text);
 
@@ -744,7 +742,6 @@
 	}
 
 	if (flags & DC_EXEC) {
-		Engine *e = Engine::Get(p1);
 		free(e->name);
 
 		if (reset) {
@@ -769,10 +766,10 @@
  */
 bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company)
 {
+	const Engine *e = Engine::GetIfValid(engine);
+
 	/* check if it's an engine that is in the engine array */
-	if (!IsEngineIndex(engine)) return false;
-
-	const Engine *e = Engine::Get(engine);
+	if (e == NULL) return false;
 
 	/* check if it's an engine of specified type */
 	if (e->type != type) return false;
@@ -797,10 +794,10 @@
  */
 bool IsEngineRefittable(EngineID engine)
 {
+	const Engine *e = Engine::GetIfValid(engine);
+
 	/* check if it's an engine that is in the engine array */
-	if (!IsEngineIndex(engine)) return false;
-
-	const Engine *e = Engine::Get(engine);
+	if (e == NULL) return false;
 
 	if (e->type == VEH_SHIP && !e->u.ship.refittable) return false;
 
--- a/src/engine_base.h
+++ b/src/engine_base.h
@@ -82,11 +82,6 @@
 
 extern EngineOverrideManager _engine_mngr;
 
-static inline bool IsEngineIndex(uint index)
-{
-	return index < Engine::GetPoolSize();
-}
-
 #define FOR_ALL_ENGINES_FROM(e, start) for (e = Engine::Get(start); e != NULL; e = (e->index + 1U < Engine::GetPoolSize()) ? Engine::Get(e->index + 1U) : NULL) if (e->IsValid())
 #define FOR_ALL_ENGINES(e) FOR_ALL_ENGINES_FROM(e, 0)
 
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -1747,8 +1747,8 @@
  */
 bool CanVehicleUseStation(EngineID engine_type, const Station *st)
 {
-	assert(IsEngineIndex(engine_type));
-	const Engine *e = Engine::Get(engine_type);
+	const Engine *e = Engine::GetIfValid(engine_type);
+	assert(e != NULL);
 
 	switch (e->type) {
 		case VEH_TRAIN: