From 56dd31f33bd40d08ec3453258c35af10e4638d6a Mon Sep 17 00:00:00 2001 From: tron Date: Fri, 3 Dec 2004 21:57:05 +0000 Subject: (svn r920) Replace vehicle info macros with inline functions and add asserts to check limits --- engine.h | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'engine.h') diff --git a/engine.h b/engine.h index 3cb0407ec..b8f3ee215 100644 --- a/engine.h +++ b/engine.h @@ -156,12 +156,29 @@ extern RailVehicleInfo _rail_vehicle_info[NUM_TRAIN_ENGINES]; extern ShipVehicleInfo _ship_vehicle_info[NUM_SHIP_ENGINES]; extern AircraftVehicleInfo _aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES]; extern RoadVehicleInfo _road_vehicle_info[NUM_ROAD_ENGINES]; -/* TODO: Change this to return a pointer type instead, for the sake of consistency. - * --pasky. XXX - really needed? Why?. Best to remove the pointer type as well cause - * _map uses it that way...less conflicts - Darkvater */ -#define rail_vehinfo(e) _rail_vehicle_info[e] -#define ship_vehicle_info(e) _ship_vehicle_info[e - SHIP_ENGINES_INDEX] -#define aircraft_vehinfo(e) _aircraft_vehicle_info[e - AIRCRAFT_ENGINES_INDEX] -#define road_vehicle_info(e) (&_road_vehicle_info[e - ROAD_ENGINES_INDEX]) + +static inline RailVehicleInfo *rail_vehinfo(uint e) +{ + assert(e < lengthof(_rail_vehicle_info)); + return &_rail_vehicle_info[e]; +} + +static inline ShipVehicleInfo *ShipVehInfo(uint e) +{ + assert(e - SHIP_ENGINES_INDEX < lengthof(_ship_vehicle_info)); + return &_ship_vehicle_info[e - SHIP_ENGINES_INDEX]; +} + +static inline AircraftVehicleInfo *AircraftVehInfo(uint e) +{ + assert(e - AIRCRAFT_ENGINES_INDEX < lengthof(_aircraft_vehicle_info)); + return &_aircraft_vehicle_info[e - AIRCRAFT_ENGINES_INDEX]; +} + +static inline RoadVehicleInfo *RoadVehInfo(uint e) +{ + assert(e - ROAD_ENGINES_INDEX < lengthof(_road_vehicle_info)); + return &_road_vehicle_info[e - ROAD_ENGINES_INDEX]; +} #endif -- cgit v1.2.3-54-g00ecf