#include <cargopacket.h>
Public Types | |
enum | MoveToAction { MTA_FINAL_DELIVERY, MTA_CARGO_LOAD, MTA_TRANSFER, MTA_UNLOAD } |
Kind of actions that could be done with packets on move. More... | |
typedef std::list< CargoPacket * > | List |
Container with cargo packets. | |
typedef List::iterator | Iterator |
The iterator for our container. | |
typedef List::const_iterator | ConstIterator |
The const iterator for our container. | |
Public Member Functions | |
CargoList () | |
Create the cargo list. | |
~CargoList () | |
And destroy it ("frees" all cargo packets). | |
FORCEINLINE const List * | Packets () const |
Returns a pointer to the cargo packet list (so you can iterate over it etc). | |
FORCEINLINE bool | Empty () const |
Checks whether this list is empty. | |
FORCEINLINE uint | Count () const |
Returns the number of cargo entities in this list. | |
FORCEINLINE StationID | Source () const |
Returns source of the first cargo packet in this list. | |
FORCEINLINE uint | DaysInTransit () const |
Returns average number of days in transit for a cargo entity. | |
void | Append (CargoPacket *cp) |
Appends the given cargo packet. | |
void | Truncate (uint max_remaining) |
Truncates the cargo in this list to the given amount. | |
template<class Tother_inst> | |
bool | MoveTo (Tother_inst *dest, uint count, MoveToAction mta, CargoPayment *payment, uint data=0) |
Moves the given amount of cargo to another list. | |
void | InvalidateCache () |
Invalidates the cached data and rebuild it. | |
Protected Member Functions | |
void | AddToCache (const CargoPacket *cp) |
Update the cache to reflect adding of this packet. | |
void | RemoveFromCache (const CargoPacket *cp) |
Update the cached values to reflect the removal of this packet. | |
Protected Attributes | |
uint | count |
Cache for the number of cargo entities. | |
uint | cargo_days_in_transit |
Cache for the sum of number of days in transit of each entity; comparable to man-hours. | |
List | packets |
The cargo packets in this list. |
Tinst | The actual instantation of this cargo list |
Definition at line 191 of file cargopacket.h.
enum CargoList::MoveToAction |
Kind of actions that could be done with packets on move.
Definition at line 201 of file cargopacket.h.
void CargoList< Tinst >::AddToCache | ( | const CargoPacket * | cp | ) | [inline, protected] |
Update the cache to reflect adding of this packet.
Increases count and days_in_transit
cp | a new packet to be inserted |
Reimplemented in VehicleCargoList.
Definition at line 109 of file cargopacket.cpp.
References CargoList< Tinst >::cargo_days_in_transit, CargoPacket::count, CargoList< Tinst >::count, and CargoPacket::days_in_transit.
Referenced by CargoList< Tinst >::Append(), and CargoList< Tinst >::InvalidateCache().
void CargoList< Tinst >::RemoveFromCache | ( | const CargoPacket * | cp | ) | [inline, protected] |
Update the cached values to reflect the removal of this packet.
Decreases count and days_in_transit
cp | Packet to be removed from cache |
Reimplemented in VehicleCargoList.
Definition at line 102 of file cargopacket.cpp.
References CargoList< Tinst >::cargo_days_in_transit, CargoPacket::count, CargoList< Tinst >::count, and CargoPacket::days_in_transit.
Referenced by CargoList< Tinst >::MoveTo(), and CargoList< Tinst >::Truncate().
Returns a pointer to the cargo packet list (so you can iterate over it etc).
Definition at line 238 of file cargopacket.h.
FORCEINLINE bool CargoList< Tinst >::Empty | ( | ) | const [inline] |
Checks whether this list is empty.
Definition at line 247 of file cargopacket.h.
Referenced by CargoList< VehicleCargoList >::Source().
FORCEINLINE uint CargoList< Tinst >::Count | ( | ) | const [inline] |
Returns the number of cargo entities in this list.
Definition at line 256 of file cargopacket.h.
Returns source of the first cargo packet in this list.
Definition at line 265 of file cargopacket.h.
FORCEINLINE uint CargoList< Tinst >::DaysInTransit | ( | ) | const [inline] |
Returns average number of days in transit for a cargo entity.
Definition at line 274 of file cargopacket.h.
void CargoList< Tinst >::Append | ( | CargoPacket * | cp | ) | [inline] |
Appends the given cargo packet.
cp | the cargo packet to add |
Definition at line 116 of file cargopacket.cpp.
References CargoList< Tinst >::AddToCache(), CargoPacket::count, CargoPacket::feeder_share, CargoPacket::MAX_COUNT, and CargoList< Tinst >::packets.
void CargoList< Tinst >::Truncate | ( | uint | max_remaining | ) | [inline] |
Truncates the cargo in this list to the given amount.
It leaves the first count cargo entities and removes the rest.
max_remaining | the maximum amount of entities to be in the list after the command |
Definition at line 138 of file cargopacket.cpp.
References CargoList< Tinst >::cargo_days_in_transit, CargoList< Tinst >::count, CargoPacket::count, CargoPacket::days_in_transit, CargoList< Tinst >::packets, and CargoList< Tinst >::RemoveFromCache().
bool CargoList< Tinst >::MoveTo | ( | Tother_inst * | dest, | |
uint | count, | |||
MoveToAction | mta, | |||
CargoPayment * | payment, | |||
uint | data = 0 | |||
) | [inline] |
Moves the given amount of cargo to another list.
Depending on the value of mta the side effects of this function differ:
dest | the destination to move the cargo to | |
count | the amount of cargo entities to move | |
mta | how to handle the moving (side effects) | |
data | Depending on mta the data of this variable differs:
| |
payment | The payment helper |
mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL
Definition at line 166 of file cargopacket.cpp.
References CargoPacket::count, CargoPacket::days_in_transit, CargoPacket::feeder_share, CargoPacket::loaded_at_xy, CargoList< Tinst >::MTA_CARGO_LOAD, CargoList< Tinst >::MTA_FINAL_DELIVERY, CargoList< Tinst >::MTA_TRANSFER, CargoList< Tinst >::MTA_UNLOAD, CargoList< Tinst >::packets, CargoPayment::PayFinalDelivery(), CargoPayment::PayTransfer(), CargoList< Tinst >::RemoveFromCache(), CargoPacket::source, CargoPacket::source_id, CargoPacket::source_type, and CargoPacket::source_xy.