OpenTTD Source: CargoDataEntry Class Reference

OpenTTD Source 15.0-beta1

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.
CargoDataEntry * | InsertOrRetrieve (CargoID cargo)
| Insert a new child or retrieve an existing child using a cargo ID as ID.
void | Update (uint count)
| Update the count for this entry and propagate the change to the parent entry if there is one.
void | Remove (StationID station)
| Remove a child associated with the given station.
void | Remove (CargoID cargo)
| Remove a child associated with the given cargo.
CargoDataEntry * | Retrieve (StationID station) const
| Retrieve a child for the given station.
CargoDataEntry * | Retrieve (CargoID cargo) const
| Retrieve a child for the given cargo.
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.
void | Remove (CargoDataEntry *comp)
| Remove a subentry from this one and delete it.
void | IncrementSize ()
| Increment.

## Private Attributes
CargoDataEntry * | parent
| the parent of this entry.
union { |
StationID station |
| ID of the station this entry is associated with. More...
struct { |
CargoID cargo |
| ID of the cargo this entry is associated with. More...
bool transfers |
| If there are transfers for this cargo. More...
} |  |
}; |  |
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.

## Constructor & Destructor Documentation

## ◆ CargoDataEntry() [1/5]

CargoDataEntry::CargoDataEntry | ( |  | ) |

Definition at line 1065 of file station_gui.cpp.

## ◆ ~CargoDataEntry()

CargoDataEntry::~CargoDataEntry | ( |  | ) |

Definition at line 1105 of file station_gui.cpp.

## ◆ CargoDataEntry() [2/5]

CargoDataEntry::CargoDataEntry | ( | StationID | st,
|  | uint | c,
|  | CargoDataEntry * | p
| ) |  |
| private

Definition at line 1081 of file station_gui.cpp.

## ◆ CargoDataEntry() [3/5]

CargoDataEntry::CargoDataEntry | ( | CargoID | car,
|  | uint | c,
|  | CargoDataEntry * | p
| ) |  |
| private

Definition at line 1073 of file station_gui.cpp.

## ◆ CargoDataEntry() [4/5]

CargoDataEntry::CargoDataEntry | ( | StationID | st | ) |
| private

Definition at line 1089 of file station_gui.cpp.

## ◆ CargoDataEntry() [5/5]

CargoDataEntry::CargoDataEntry | ( | CargoID | car | ) |
| private

Definition at line 1097 of file station_gui.cpp.

## Member Function Documentation

## ◆ Begin()

CargoDataSet::iterator CargoDataEntry::Begin | ( |  | ) | const
| inline

Get an iterator pointing to the begin of the set of children.

Definition at line 1019 of file station_gui.cpp.

References children.

## ◆ Clear()

void CargoDataEntry::Clear | ( |  | ) |

Delete all subentries, reset count and num_children and adapt parent's count.

Definition at line 1114 of file station_gui.cpp.

References children, count, num_children, and parent.

Referenced by StationViewWindow::RecalcDestinations().

## ◆ End()

CargoDataSet::iterator CargoDataEntry::End | ( |  | ) | const
| inline

Get an iterator pointing to the end of the set of children.

Definition at line 1024 of file station_gui.cpp.

References children.

## ◆ GetCargo()

CargoID CargoDataEntry::GetCargo | ( |  | ) | const
| inline

Get the cargo ID for this entry.

Definition at line 999 of file station_gui.cpp.

References cargo.

Referenced by StationViewWindow::DrawEntries(), and StationViewWindow::SetDisplayedRow().

## ◆ GetCount()

uint CargoDataEntry::GetCount | ( |  | ) | const
| inline

Get the cargo count for this entry.

Definition at line 1004 of file station_gui.cpp.

References count.

Referenced by StationViewWindow::EstimateDestinations().

## ◆ GetNumChildren()

uint CargoDataEntry::GetNumChildren | ( |  | ) | const
| inline

Get the number of children for this entry.

Definition at line 1014 of file station_gui.cpp.

References num_children.

Referenced by StationViewWindow::OnPaint().

## ◆ GetParent()

CargoDataEntry * CargoDataEntry::GetParent | ( |  | ) | const
| inline

Get the parent entry for this entry.

Definition at line 1009 of file station_gui.cpp.

References parent.

Referenced by StationViewWindow::SetDisplayedRow().

## ◆ GetStation()

StationID CargoDataEntry::GetStation | ( |  | ) | const
| inline

Get the station ID for this entry.

Definition at line 994 of file station_gui.cpp.

References station.

Referenced by StationViewWindow::BuildCargoList(), StationViewWindow::BuildFlowList(), StationViewWindow::EstimateDestinations(), and StationViewWindow::SetDisplayedRow().

## ◆ HasTransfers()

bool CargoDataEntry::HasTransfers | ( |  | ) | const
| inline

Has this entry transfers.

Definition at line 1029 of file station_gui.cpp.

References transfers.

## ◆ IncrementSize()

void CargoDataEntry::IncrementSize | ( |  | ) |
| private

Increment.

Definition at line 1178 of file station_gui.cpp.

References IncrementSize(), num_children, and parent.

Referenced by IncrementSize(), and InsertOrRetrieve().

## ◆ 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 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

  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 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

  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 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

  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 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

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

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

Definition at line 951 of file station_gui.cpp.

References Remove(), and station.

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

## ◆ Resort()

void CargoDataEntry::Resort | ( | CargoSortType | type,
|  | SortOrder | order
| ) |  |

Definition at line 1184 of file station_gui.cpp.

## ◆ Retrieve() [1/3]

CargoDataEntry * CargoDataEntry::Retrieve | ( | CargoDataSet::iterator | i | ) | const
| private

Definition at line 1191 of file station_gui.cpp.

## ◆ Retrieve() [2/3]

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 983 of file station_gui.cpp.

References cargo, children, and Retrieve().

## ◆ Retrieve() [3/3]

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 972 of file station_gui.cpp.

References children, Retrieve(), and station.

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

## ◆ SetTransfers()

void CargoDataEntry::SetTransfers | ( | bool | value | ) |
| inline

Set the transfers state.

Definition at line 1034 of file station_gui.cpp.

References transfers.

Referenced by 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 1169 of file station_gui.cpp.

References count, parent, and Update().

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

## Field Documentation

## ◆ cargo

CargoID CargoDataEntry::cargo

ID of the cargo this entry is associated with.

Definition at line 1056 of file station_gui.cpp.

Referenced by GetCargo(), InsertOrRetrieve(), Remove(), and Retrieve().

## ◆ children

CargoDataSet* CargoDataEntry::children
| private

the children of this entry.

Definition at line 1062 of file station_gui.cpp.

Referenced by Begin(), Clear(), End(), InsertOrRetrieve(), Remove(), Retrieve(), and Retrieve().

## ◆ count

uint CargoDataEntry::count
| private

sum of counts of all children or amount of cargo for this entry.

Definition at line 1061 of file station_gui.cpp.

Referenced by Clear(), GetCount(), and Update().

## ◆ num_children

uint CargoDataEntry::num_children
| private

the number of subentries belonging to this entry.

Definition at line 1060 of file station_gui.cpp.

Referenced by Clear(), GetNumChildren(), and IncrementSize().

## ◆ parent

CargoDataEntry* CargoDataEntry::parent
| private

the parent of this entry.

Definition at line 1052 of file station_gui.cpp.

Referenced by Clear(), GetParent(), IncrementSize(), and Update().

## ◆ station

StationID CargoDataEntry::station

ID of the station this entry is associated with.

Definition at line 1054 of file station_gui.cpp.

Referenced by GetStation(), InsertOrRetrieve(), Remove(), and Retrieve().

## ◆ transfers

bool CargoDataEntry::transfers

If there are transfers for this cargo.

Definition at line 1057 of file station_gui.cpp.

Referenced by HasTransfers(), and SetTransfers().

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

- src/station_gui.cpp