OpenTTD Source  20240919-master-gdf0233f4c2
CargoDataEntry Class Reference

A cargo data entry representing one possible row in the station view window's top part. More...

Public Member Functions

CargoDataEntryInsertOrRetrieve (StationID station)
 Insert a new child or retrieve an existing child using a station ID as ID. More...
 
CargoDataEntryInsertOrRetrieve (CargoID cargo)
 Insert a new child or retrieve an existing child using a cargo ID as ID. More...
 
void Update (uint count)
 Update the count for this entry and propagate the change to the parent entry if there is one. More...
 
void Remove (StationID station)
 Remove a child associated with the given station. More...
 
void Remove (CargoID cargo)
 Remove a child associated with the given cargo. More...
 
CargoDataEntryRetrieve (StationID station) const
 Retrieve a child for the given station. More...
 
CargoDataEntryRetrieve (CargoID cargo) const
 Retrieve a child for the given cargo. More...
 
void Resort (CargoSortType type, SortOrder order)
 
StationID GetStation () const
 Get the station ID for this entry.
 
CargoID GetCargo () const
 Get the cargo ID for this entry.
 
uint GetCount () const
 Get the cargo count for this entry.
 
CargoDataEntryGetParent () const
 Get the parent entry for this entry.
 
uint GetNumChildren () const
 Get the number of children for this entry.
 
CargoDataSet::iterator Begin () const
 Get an iterator pointing to the begin of the set of children.
 
CargoDataSet::iterator End () const
 Get an iterator pointing to the end of the set of children.
 
bool HasTransfers () const
 Has this entry transfers.
 
void SetTransfers (bool value)
 Set the transfers state.
 
void Clear ()
 Delete all subentries, reset count and num_children and adapt parent's count.
 

Private Member Functions

 CargoDataEntry (StationID st, uint c, CargoDataEntry *p)
 
 CargoDataEntry (CargoID car, uint c, CargoDataEntry *p)
 
 CargoDataEntry (StationID st)
 
 CargoDataEntry (CargoID car)
 
CargoDataEntryRetrieve (CargoDataSet::iterator i) const
 
template<class Tid >
CargoDataEntryInsertOrRetrieve (Tid s)
 Retrieve a subentry or insert it if it doesn't exist, yet. More...
 
void Remove (CargoDataEntry *comp)
 Remove a subentry from this one and delete it. More...
 
void IncrementSize ()
 Increment.
 

Private Attributes

CargoDataEntryparent
 the parent of this entry.
 
union {
   StationID   station
 ID of the station this entry is associated with.
 
   struct {
      CargoID   cargo
 ID of the cargo this entry is associated with.
 
      bool   transfers
 If there are transfers for this cargo.
 
   } 
 
}; 
 
uint num_children
 the number of subentries belonging to this entry.
 
uint count
 sum of counts of all children or amount of cargo for this entry.
 
CargoDataSet * children
 the children of this entry.
 

Detailed Description

A cargo data entry representing one possible row in the station view window's top part.

Cargo data entries form a tree where each entry can have several children. Parents keep track of the sums of their childrens' cargo counts.

Definition at line 920 of file station_gui.cpp.

Member Function Documentation

◆ InsertOrRetrieve() [1/3]

CargoDataEntry* CargoDataEntry::InsertOrRetrieve ( CargoID  cargo)
inline

Insert a new child or retrieve an existing child using a cargo ID as ID.

Parameters
cargoID of the cargo for which an entry shall be created or retrieved
Returns
a child entry associated with the given cargo.

Definition at line 940 of file station_gui.cpp.

References cargo.

◆ InsertOrRetrieve() [2/3]

CargoDataEntry* CargoDataEntry::InsertOrRetrieve ( StationID  station)
inline

Insert a new child or retrieve an existing child using a station ID as ID.

Parameters
stationID of the station for which an entry shall be created or retrieved
Returns
a child entry associated with the given station.

Definition at line 930 of file station_gui.cpp.

References station.

Referenced by StationViewWindow::EstimateDestinations(), StationViewWindow::HandleCargoWaitingClick(), StationViewWindow::RecalcDestinations(), and StationViewWindow::ShowCargo().

◆ InsertOrRetrieve() [3/3]

template<class Tid >
CargoDataEntry * CargoDataEntry::InsertOrRetrieve ( Tid  child_id)
private

Retrieve a subentry or insert it if it doesn't exist, yet.

Template Parameters
IDtype of ID: either StationID or CargoID
Parameters
child_idID of the child to be inserted or retrieved.
Returns
the new or retrieved subentry

Definition at line 1150 of file station_gui.cpp.

References children, Count, and IncrementSize().

◆ Remove() [1/3]

void CargoDataEntry::Remove ( CargoDataEntry child)
private

Remove a subentry from this one and delete it.

Parameters
childthe entry to be removed. This may also be a synthetic entry which only contains the ID of the entry to be removed. In this case child is not deleted.

Definition at line 1134 of file station_gui.cpp.

References children.

◆ Remove() [2/3]

void CargoDataEntry::Remove ( CargoID  cargo)
inline

Remove a child associated with the given cargo.

Parameters
cargoID of the cargo for which the child should be removed.

Definition at line 961 of file station_gui.cpp.

References cargo, and Remove().

◆ Remove() [3/3]

void CargoDataEntry::Remove ( StationID  station)
inline

Remove a child associated with the given station.

Parameters
stationID of the station for which the child should be removed.

Definition at line 951 of file station_gui.cpp.

References station.

Referenced by StationViewWindow::HandleCargoWaitingClick(), StationViewWindow::OnInvalidateData(), and Remove().

◆ Retrieve() [1/2]

CargoDataEntry* CargoDataEntry::Retrieve ( CargoID  cargo) const
inline

Retrieve a child for the given cargo.

Return nullptr if it doesn't exist.

Parameters
cargoID of the cargo the child we're looking for is associated with.
Returns
a child entry for the given cargo or nullptr.

Definition at line 983 of file station_gui.cpp.

References cargo, children, and Retrieve().

◆ Retrieve() [2/2]

CargoDataEntry* CargoDataEntry::Retrieve ( StationID  station) const
inline

Retrieve a child for the given station.

Return nullptr if it doesn't exist.

Parameters
stationID of the station the child we're looking for is associated with.
Returns
a child entry for the given station or nullptr.

Definition at line 972 of file station_gui.cpp.

References children, and station.

Referenced by StationViewWindow::BuildCargoList(), StationViewWindow::BuildFlowList(), StationViewWindow::HandleCargoWaitingClick(), Retrieve(), StationViewWindow::SetDisplayedRow(), and StationViewWindow::ShowCargo().

◆ Update()

void CargoDataEntry::Update ( uint  count)

Update the count for this entry and propagate the change to the parent entry if there is one.

Parameters
countthe amount to be added to this entry

Definition at line 1169 of file station_gui.cpp.

References count, parent, and Update().

Referenced by StationViewWindow::EstimateDestinations(), StationViewWindow::RecalcDestinations(), StationViewWindow::ShowCargo(), and Update().


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