CargoList< Tinst > Class Template Reference

Simple collection class for a list of cargo packets. More...

#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 ListPackets () 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.

Detailed Description

template<class Tinst>
class CargoList< Tinst >

Simple collection class for a list of cargo packets.

Template Parameters:
Tinst The actual instantation of this cargo list

Definition at line 191 of file cargopacket.h.


Member Enumeration Documentation

template<class Tinst>
enum CargoList::MoveToAction

Kind of actions that could be done with packets on move.

Enumerator:
MTA_FINAL_DELIVERY 

"Deliver" the packet to the final destination, i.e. destroy the packet

MTA_CARGO_LOAD 

Load the packet onto a vehicle, i.e. set the last loaded station ID.

MTA_TRANSFER 

The cargo is moved as part of a transfer.

MTA_UNLOAD 

The cargo is moved as part of a forced unload.

Definition at line 201 of file cargopacket.h.


Member Function Documentation

template<class Tinst >
void CargoList< Tinst >::AddToCache ( const CargoPacket cp  )  [inline, protected]

Update the cache to reflect adding of this packet.

Increases count and days_in_transit

Parameters:
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().

template<class Tinst >
void CargoList< Tinst >::Append ( CargoPacket cp  )  [inline]

Appends the given cargo packet.

Warning:
After appending this packet may not exist anymore!
Note:
Do not use the cargo packet anymore after it has been appended to this CargoList!
Parameters:
cp the cargo packet to add
Precondition:
cp != NULL

Definition at line 116 of file cargopacket.cpp.

References CargoList< Tinst >::AddToCache(), CargoPacket::count, CargoPacket::feeder_share, CargoPacket::MAX_COUNT, and CargoList< Tinst >::packets.

Referenced by Load_VEHS().

template<class Tinst>
FORCEINLINE uint CargoList< Tinst >::Count (  )  const [inline]
template<class Tinst>
FORCEINLINE uint CargoList< Tinst >::DaysInTransit (  )  const [inline]

Returns average number of days in transit for a cargo entity.

Returns:
the before mentioned number

Definition at line 274 of file cargopacket.h.

template<class Tinst>
FORCEINLINE bool CargoList< Tinst >::Empty (  )  const [inline]
template<class Tinst >
template<class Tother_inst >
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:

  • MTA_FINAL_DELIVERY: destroys the packets that do not originate from a specific station
  • MTA_CARGO_LOAD: sets the loaded_at_xy value of the moved packets
  • MTA_TRANSFER: just move without side effects
  • MTA_UNLOAD: just move without side effects
    Parameters:
    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:

    • MTA_FINAL_DELIVERY - station ID of packet's origin not to remove
    • MTA_CARGO_LOAD - station's tile index of load
    • MTA_TRANSFER - unused
    • MTA_UNLOAD - unused
    payment The payment helper
    Precondition:
    mta == MTA_FINAL_DELIVERY || dest != NULL
    mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL
    Returns:
    true if there are still packets that might be moved from this cargo list

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.

Referenced by LoadUnloadVehicle().

template<class Tinst>
FORCEINLINE const List* CargoList< Tinst >::Packets (  )  const [inline]

Returns a pointer to the cargo packet list (so you can iterate over it etc).

Returns:
pointer to the packet list

Definition at line 238 of file cargopacket.h.

Referenced by StationViewWindow::OrderWaitingCargo().

template<class Tinst >
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

Parameters:
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().

template<class Tinst>
FORCEINLINE StationID CargoList< Tinst >::Source (  )  const [inline]

Returns source of the first cargo packet in this list.

Returns:
the before mentioned source

Definition at line 265 of file cargopacket.h.

Referenced by DrawRoadVehDetails(), DrawShipDetails(), and GetCargoSummaryOfArticulatedVehicle().

template<class Tinst >
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.

Parameters:
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().

Referenced by Vehicle::PreDestructor(), RefitVehicle(), and Station::~Station().


The documentation for this class was generated from the following files:

Generated on Sat Jul 17 18:43:56 2010 for OpenTTD by  doxygen 1.6.1