Mercurial > hg > openttd
changeset 8834:a2a57c9df9c9 draft
(svn r12582) -Codechange: move some (needlessly) static inlined functions from order_base.h to order_cmd.cpp.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 05 Apr 2008 20:57:01 +0000 |
parents | 7a347391f79c |
children | e8296a8dbe93 |
files | src/order_base.h src/order_cmd.cpp |
diffstat | 2 files changed, 59 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/src/order_base.h +++ b/src/order_base.h @@ -40,7 +40,16 @@ */ 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 @@ 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; -} - +/* (Un)pack routines */ +uint32 PackOrder(const Order *order); +Order UnpackOrder(uint32 packed); +Order UnpackOldOrder(uint16 packed); void AssignOrder(Order *order, Order data); -Order UnpackOldOrder(uint16 packed); #endif /* ORDER_H */
--- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -40,6 +40,52 @@ DEFINE_OLD_POOL_GENERIC(Order, Order) +void Order::Free() +{ + this->type = OT_NOTHING; + this->flags = 0; + this->dest = 0; + this->next = NULL; +} + +void Order::FreeChain() +{ + if (next != NULL) next->FreeChain(); + delete this; +} + +static 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; +} + +uint32 PackOrder(const Order *order) +{ + return order->dest << 16 | order->flags << 8 | order->type; +} + +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; +} + /** * * Unpacks a order from savegames made with TTD(Patch)