(svn r11009) -Codechange: unvirtualise IsValid as that isn't needed with templates. This gives up to 10% performance increase in games with lots of vehicles.

This commit is contained in:
rubidium 2007-08-30 20:40:33 +00:00
parent 9833639b00
commit 8a6cc3aa10
12 changed files with 23 additions and 47 deletions

View File

@ -43,7 +43,7 @@ struct CargoPacket : PoolItem<CargoPacket, CargoPacketID, &_CargoPacket_pool> {
* Is this a valid cargo packet ?
* @return true if and only it is valid
*/
bool IsValid() const { return this->count != 0; }
inline bool IsValid() const { return this->count != 0; }
/**
* Checks whether the cargo packet is from (exactly) the same source

View File

@ -23,7 +23,7 @@ struct Depot : PoolItem<Depot, DepotID, &_Depot_pool> {
Depot(TileIndex xy = 0) : xy(xy) {}
~Depot();
bool IsValid() const { return this->xy != 0; }
inline bool IsValid() const { return this->xy != 0; }
};
static inline bool IsValidDepotID(DepotID index)

View File

@ -284,7 +284,7 @@ struct EngineRenew : PoolItem<EngineRenew, EngineRenewID, &_EngineRenew_pool> {
EngineRenew(EngineID from = INVALID_ENGINE, EngineID to = INVALID_ENGINE) : from(from), to(to), next(NULL) {}
~EngineRenew() { this->from = INVALID_ENGINE; }
bool IsValid() const { return this->from != INVALID_ENGINE; }
inline bool IsValid() const { return this->from != INVALID_ENGINE; }
};
#define FOR_ALL_ENGINE_RENEWS_FROM(er, start) for (er = GetEngineRenew(start); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) if (er->IsValid())

View File

@ -123,7 +123,7 @@ struct Industry : PoolItem<Industry, IndustryID, &_Industry_pool> {
Industry(TileIndex tile = 0) : xy(tile) {}
~Industry();
bool IsValid() const { return this->xy != 0; }
inline bool IsValid() const { return this->xy != 0; }
};
struct IndustryTileTable {

View File

@ -225,15 +225,6 @@ struct PoolItem {
{
}
/**
* Is this a valid object or not?
* @return true if and only if it is valid
*/
virtual bool IsValid() const
{
return false;
}
private:
/**
* Allocate a pool item; possibly allocate a new block in the pool.

View File

@ -107,7 +107,11 @@ struct Order : PoolItem<Order, OrderID, &_Order_pool> {
Order() : refit_cargo(CT_NO_REFIT) {}
~Order() { this->type = OT_NOTHING; }
bool IsValid() const;
/**
* Check if a Order really exists.
*/
inline bool IsValid() const { return this->type != OT_NOTHING; }
void Free();
void FreeChain();
};
@ -140,14 +144,6 @@ static inline VehicleOrderID GetNumOrders()
return GetOrderPoolSize();
}
/**
* Check if a Order really exists.
*/
inline bool Order::IsValid() const
{
return this->type != OT_NOTHING;
}
inline void Order::Free()
{
this->type = OT_NOTHING;

View File

@ -26,7 +26,7 @@ struct Sign : PoolItem<Sign, SignID, &_Sign_pool> {
/** Destroy the sign */
~Sign();
bool IsValid() const { return this->str != STR_NULL; }
inline bool IsValid() const { return this->str != STR_NULL; }
};
enum {

View File

@ -237,14 +237,6 @@ bool Station::IsBuoy() const
return (had_vehicle_of_type & HVOT_BUOY) != 0;
}
/** Determines whether a station exists
* @todo replace 0 by INVALID_TILE
*/
bool Station::IsValid() const
{
return xy != 0;
}
/************************************************************************/
/* StationRect implementation */
@ -437,12 +429,6 @@ RoadStop::~RoadStop()
xy = 0;
}
/** Determines whether a RoadStop is a valid (i.e. existing) one */
bool RoadStop::IsValid() const
{
return xy != 0;
}
/** Checks whether there is a free bay in this road stop */
bool RoadStop::HasFreeBay() const
{

View File

@ -65,7 +65,11 @@ struct RoadStop : PoolItem<RoadStop, RoadStopID, &_RoadStop_pool> {
RoadStop(TileIndex tile = 0);
virtual ~RoadStop();
bool IsValid() const;
/**
* Determines whether a road stop exists
* @return true if and only is the road stop exists
*/
inline bool IsValid() const { return this->xy != 0; }
/* For accessing status */
bool HasFreeBay() const;
@ -175,7 +179,12 @@ public:
uint GetPlatformLength(TileIndex tile, DiagDirection dir) const;
uint GetPlatformLength(TileIndex tile) const;
bool IsBuoy() const;
bool IsValid() const;
/**
* Determines whether a station exists
* @return true if and only is the station exists
*/
inline bool IsValid() const { return this->xy != 0; }
};
enum StationType {

View File

@ -159,7 +159,7 @@ struct Town : PoolItem<Town, TownID, &_Town_pool> {
/** Destroy the town */
~Town();
bool IsValid() const { return this->xy != 0; }
inline bool IsValid() const { return this->xy != 0; }
};
struct HouseSpec {

View File

@ -418,12 +418,6 @@ Waypoint::~Waypoint()
this->xy = 0;
}
bool Waypoint::IsValid() const
{
return this->xy != 0;
}
/**
* Fix savegames which stored waypoints in their old format
*/

View File

@ -30,7 +30,7 @@ struct Waypoint : PoolItem<Waypoint, WaypointID, &_Waypoint_pool> {
Waypoint(TileIndex tile = 0);
~Waypoint();
bool IsValid() const;
inline bool IsValid() const { return this->xy != 0; }
};
static inline bool IsValidWaypointID(WaypointID index)