OpenTTD Source: CargoDataEntry Class Reference

OpenTTD Source 14.1

Public Member Functions | Private Member Functions | Private Attributes
CargoDataEntry Class Reference

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

## Public Member Functions
CargoDataEntry * | InsertOrRetrieve (StationID station)
| Insert a new child or retrieve an existing child using a station ID as ID. More...
CargoDataEntry * | InsertOrRetrieve (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...
CargoDataEntry * | Retrieve (StationID station) const
| Retrieve a child for the given station. More...
CargoDataEntry * | Retrieve (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.
CargoDataEntry * | GetParent () 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)
CargoDataEntry * | Retrieve (CargoDataSet::iterator i) const
template<class Tid >
CargoDataEntry * | InsertOrRetrieve (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
CargoDataEntry * | parent
| 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 883 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

  cargo | ID of the cargo for which an entry shall be created or retrieved

Returns
  a child entry associated with the given cargo.

Definition at line 903 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

  station | ID of the station for which an entry shall be created or retrieved

Returns
  a child entry associated with the given station.

Definition at line 893 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

  ID | type of ID: either StationID or CargoID

Parameters

  child_id | ID of the child to be inserted or retrieved.

Returns
  the new or retrieved subentry

Definition at line 1113 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

  child | the 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 1097 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

  cargo | ID of the cargo for which the child should be removed.

Definition at line 924 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

  station | ID of the station for which the child should be removed.

Definition at line 914 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

  cargo | ID 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 946 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

  station | ID 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 935 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

  count | the amount to be added to this entry

Definition at line 1132 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:

- src/station_gui.cpp