summaryrefslogtreecommitdiff
path: root/src/order_base.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-04-05 20:57:01 +0000
committerrubidium <rubidium@openttd.org>2008-04-05 20:57:01 +0000
commit669b4bc609ee720ee7ed6cdbe6d0a5fed973c4c3 (patch)
tree67a701930ea78526c28cf16af313d5564a1ac57f /src/order_base.h
parent84211a8feaf79cf56edde66cecb69aaafcc0d2a8 (diff)
downloadopenttd-669b4bc609ee720ee7ed6cdbe6d0a5fed973c4c3.tar.xz
(svn r12582) -Codechange: move some (needlessly) static inlined functions from order_base.h to order_cmd.cpp.
Diffstat (limited to 'src/order_base.h')
-rw-r--r--src/order_base.h63
1 files changed, 13 insertions, 50 deletions
diff --git a/src/order_base.h b/src/order_base.h
index 12663b3c9..d2fc9a98d 100644
--- a/src/order_base.h
+++ b/src/order_base.h
@@ -40,7 +40,16 @@ struct Order : PoolItem<Order, OrderID, &_Order_pool> {
*/
inline bool IsValid() const { return this->type != OT_NOTHING; }
+ /**
+ * 'Free' the order
+ * @note ONLY use on "current_order" vehicle orders!
+ */
void Free();
+
+ /**
+ * Free a complete order chain.
+ * @note do not use on "current_order" vehicle orders!
+ */
void FreeChain();
bool ShouldStopAtStation(const Vehicle *v, StationID station) const;
@@ -61,62 +70,16 @@ static inline VehicleOrderID GetNumOrders()
return GetOrderPoolSize();
}
-inline void Order::Free()
-{
- this->type = OT_NOTHING;
- this->flags = 0;
- this->dest = 0;
- this->next = NULL;
-}
-
-inline void Order::FreeChain()
-{
- if (next != NULL) next->FreeChain();
- delete this;
-}
-
#define FOR_ALL_ORDERS_FROM(order, start) for (order = GetOrder(start); order != NULL; order = (order->index + 1U < GetOrderPoolSize()) ? GetOrder(order->index + 1U) : NULL) if (order->IsValid())
#define FOR_ALL_ORDERS(order) FOR_ALL_ORDERS_FROM(order, 0)
#define FOR_VEHICLE_ORDERS(v, order) for (order = v->orders; order != NULL; order = order->next)
-static inline bool HasOrderPoolFree(uint amount)
-{
- const Order *order;
-
- /* There is always room if not all blocks in the pool are reserved */
- if (_Order_pool.CanAllocateMoreBlocks()) return true;
-
- FOR_ALL_ORDERS(order) if (!order->IsValid() && --amount == 0) return true;
-
- return false;
-}
-
-
-/* Pack and unpack routines */
-
-static inline uint32 PackOrder(const Order *order)
-{
- return order->dest << 16 | order->flags << 8 | order->type;
-}
-
-static inline Order UnpackOrder(uint32 packed)
-{
- Order order;
- order.type = (OrderType)GB(packed, 0, 8);
- order.flags = GB(packed, 8, 8);
- order.dest = GB(packed, 16, 16);
- order.next = NULL;
- order.index = 0; // avoid compiler warning
- order.refit_cargo = CT_NO_REFIT;
- order.refit_subtype = 0;
- order.wait_time = 0;
- order.travel_time = 0;
- return order;
-}
-
-void AssignOrder(Order *order, Order data);
+/* (Un)pack routines */
+uint32 PackOrder(const Order *order);
+Order UnpackOrder(uint32 packed);
Order UnpackOldOrder(uint16 packed);
+void AssignOrder(Order *order, Order data);
#endif /* ORDER_H */