summaryrefslogtreecommitdiff
path: root/src/order_base.h
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-05-22 15:13:50 +0000
committersmatz <smatz@openttd.org>2009-05-22 15:13:50 +0000
commit62a7948af0ca9eb3b190a54918201e1075edcbbc (patch)
tree27a79b7850682cd43cac2462c3410ed8b567c4b2 /src/order_base.h
parent04723b240ebc7384954f73590be517ad2a47ce04 (diff)
downloadopenttd-62a7948af0ca9eb3b190a54918201e1075edcbbc.tar.xz
(svn r16378) -Codechange: replace OldPool with simpler Pool. Compilation time, binary size and run time (with asserts disabled) should be improved
Diffstat (limited to 'src/order_base.h')
-rw-r--r--src/order_base.h36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/order_base.h b/src/order_base.h
index 544c31b2d..6630efe64 100644
--- a/src/order_base.h
+++ b/src/order_base.h
@@ -6,7 +6,7 @@
#define ORDER_BASE_H
#include "order_type.h"
-#include "oldpool.h"
+#include "core/pool.hpp"
#include "core/bitmath_func.hpp"
#include "cargo_type.h"
#include "depot_type.h"
@@ -14,15 +14,17 @@
#include "vehicle_type.h"
#include "waypoint_type.h"
-DECLARE_OLD_POOL(Order, Order, 6, 1000)
-DECLARE_OLD_POOL(OrderList, OrderList, 4, 4000)
+typedef Pool<Order, OrderID, 256, 64000> OrderPool;
+typedef Pool<OrderList, OrderListID, 128, 64000> OrderListPool;
+extern OrderPool _order_pool;
+extern OrderListPool _orderlist_pool;
/* If you change this, keep in mind that it is saved on 3 places:
* - Load_ORDR, all the global orders
* - Vehicle -> current_order
* - REF_ORDER (all REFs are currently limited to 16 bits!!)
*/
-struct Order : PoolItem<Order, OrderID, &_Order_pool> {
+struct Order : OrderPool::PoolItem<&_order_pool> {
private:
friend const struct SaveLoad *GetVehicleDescription(VehicleType vt); ///< Saving and loading the current order of vehicles.
friend void Load_VEHS(); ///< Loading of ancient vehicles.
@@ -42,7 +44,7 @@ public:
uint16 travel_time; ///< How long in ticks the journey to this destination should take.
Order() : refit_cargo(CT_NO_REFIT) {}
- ~Order() { this->type = OT_NOTHING; }
+ ~Order() {}
/**
* Create an order based on a packed representation of that order.
@@ -51,12 +53,6 @@ public:
Order(uint32 packed);
/**
- * Check if a Order really exists.
- * @return true if the order is valid.
- */
- inline bool IsValid() const { return this->type != OT_NOTHING; }
-
- /**
* Check whether this order is of the given type.
* @param type the type to check against.
* @return true if the order matches.
@@ -246,7 +242,7 @@ public:
/** Shared order list linking together the linked list of orders and the list
* of vehicles sharing this order list.
*/
-struct OrderList : PoolItem<OrderList, OrderListID, &_OrderList_pool> {
+struct OrderList : OrderListPool::PoolItem<&_orderlist_pool> {
private:
friend void AfterLoadVehicles(bool part_of_load); ///< For instantiating the shared vehicle chain
friend const struct SaveLoad *GetOrderListDescription(); ///< Saving and loading of order lists.
@@ -265,16 +261,20 @@ public:
timetable_duration(0) { }
/** Create an order list with the given order chain for the given vehicle.
- * @param chain is the pointer to the first order of the order chain
- * @param v is any vehicle of the shared order vehicle chain (does not need to be the first)
+ * @param chain pointer to the first order of the order chain
+ * @param v any vehicle using this orderlist
*/
- OrderList(Order *chain, Vehicle *v);
+ OrderList(Order *chain, Vehicle *v) { this->Initialize(chain, v); }
/** Destructor. Invalidates OrderList for re-usage by the pool. */
- ~OrderList() { this->num_orders = INVALID_VEH_ORDER_ID; }
+ ~OrderList() {}
- /** Checks, if this is a valid order list. */
- inline bool IsValid() const { return this->num_orders != INVALID_VEH_ORDER_ID; }
+ /**
+ * Recomputes everything.
+ * @param chain first order in the chain
+ * @param v one of vehicle that is using this orderlist
+ */
+ void Initialize(Order *chain, Vehicle *v);
/**
* Get the first order of the order chain.