OpenTTD Source  20240917-master-g9ab0a47812
CargoList< Tinst, Tcont > Class Template Reference

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

#include <cargopacket.h>

Public Types

enum  MoveToAction {
  MTA_BEGIN = 0, MTA_TRANSFER = 0, MTA_DELIVER, MTA_KEEP,
  MTA_LOAD, MTA_END, NUM_MOVE_TO_ACTION = MTA_END
}
 Kind of actions that could be done with packets on move. More...
 
typedef Tcont::iterator Iterator
 The iterator for our container.
 
typedef Tcont::reverse_iterator ReverseIterator
 The reverse iterator for our container.
 
typedef Tcont::const_iterator ConstIterator
 The const iterator for our container.
 
typedef Tcont::const_reverse_iterator ConstReverseIterator
 The const reverse iterator for our container.
 

Public Member Functions

 CargoList ()
 Create the cargo list.
 
 ~CargoList ()
 Destroy the cargolist ("frees" all cargo packets).
 
void OnCleanPool ()
 Empty the cargo list, but don't free the cargo packets; the cargo packets are cleaned by CargoPacket's CleanPool.
 
const Tcont * Packets () const
 Returns a pointer to the cargo packet list (so you can iterate over it etc). More...
 
uint PeriodsInTransit () const
 Returns average number of cargo aging periods in transit for a cargo entity. More...
 
void InvalidateCache ()
 Invalidates the cached data and rebuilds it.
 

Protected Member Functions

void AddToCache (const CargoPacket *cp)
 Update the cache to reflect adding of this packet. More...
 
void RemoveFromCache (const CargoPacket *cp, uint count)
 Update the cached values to reflect the removal of this packet or part of it. More...
 

Static Protected Member Functions

static bool TryMerge (CargoPacket *cp, CargoPacket *icp)
 Tries to merge the second packet into the first and return if that was successful. More...
 

Protected Attributes

uint count
 Cache for the number of cargo entities.
 
uint64_t cargo_periods_in_transit
 Cache for the sum of number of cargo aging periods in transit of each entity; comparable to man-hours.
 
Tcont packets
 The cargo packets in this list.
 

Detailed Description

template<class Tinst, class Tcont>
class CargoList< Tinst, Tcont >

Simple collection class for a list of cargo packets.

Template Parameters
TinstActual instantiation of this cargo list.

Definition at line 33 of file cargopacket.h.

Member Enumeration Documentation

◆ MoveToAction

template<class Tinst , class Tcont >
enum CargoList::MoveToAction

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

Enumerator
MTA_TRANSFER 

Transfer the cargo to the station.

MTA_DELIVER 

Deliver the cargo to some town or industry.

MTA_KEEP 

Keep the cargo in the vehicle.

MTA_LOAD 

Load the cargo from the station.

Definition at line 295 of file cargopacket.h.

Member Function Documentation

◆ AddToCache()

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

Update the cache to reflect adding of this packet.

Increases count and periods_in_transit.

Parameters
cpNew packet to be inserted.

Definition at line 202 of file cargopacket.cpp.

Referenced by StationCargoReroute::operator()().

◆ Packets()

template<class Tinst , class Tcont >
const Tcont* CargoList< Tinst, Tcont >::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 329 of file cargopacket.h.

Referenced by CargoPacket::AfterLoad(), StationViewWindow::BuildCargoList(), and SwapPackets().

◆ PeriodsInTransit()

template<class Tinst , class Tcont >
uint CargoList< Tinst, Tcont >::PeriodsInTransit ( ) const
inline

Returns average number of cargo aging periods in transit for a cargo entity.

Returns
The before mentioned number.

Definition at line 338 of file cargopacket.h.

◆ RemoveFromCache()

template<class Tinst , class Tcont >
void CargoList< Tinst, Tcont >::RemoveFromCache ( const CargoPacket cp,
uint  count 
)
protected

Update the cached values to reflect the removal of this packet or part of it.

Decreases count and periods_in_transit.

Parameters
cpPacket to be removed from cache.
countAmount of cargo from the given packet to be removed.

Definition at line 189 of file cargopacket.cpp.

Referenced by CargoLoad::operator()(), CargoReservation::operator()(), and StationCargoReroute::operator()().

◆ TryMerge()

template<class Tinst , class Tcont >
bool CargoList< Tinst, Tcont >::TryMerge ( CargoPacket icp,
CargoPacket cp 
)
staticprotected

Tries to merge the second packet into the first and return if that was successful.

Parameters
icpPacket to be merged into.
cpPacket to be eliminated.
Returns
If the packets could be merged.

Definition at line 228 of file cargopacket.cpp.


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