A cargo data entry representing one possible row in the station view window's top part. More...
#include <station_gui.h>
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. | |
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 ID > | |
CargoDataEntry * | InsertOrRetrieve (ID 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. | |
CargoID cargo | |
ID of the cargo this entry is associated with. | |
}; | |
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 |
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 75 of file station_gui.h.
CargoDataEntry* CargoDataEntry::InsertOrRetrieve | ( | CargoID | cargo | ) | [inline] |
Insert a new child or retrieve an existing child using a cargo ID as ID.
cargo | ID of the cargo for which an entry shall be created or retrieved |
Definition at line 92 of file station_gui.h.
CargoDataEntry * CargoDataEntry::InsertOrRetrieve | ( | ID | child_id | ) | [private] |
Retrieve a subentry or insert it if it doesn't exist, yet.
ID | type of ID: either StationID or CargoID |
child_id | ID of the child to be inserted or retrieved. |
Definition at line 938 of file station_gui.cpp.
References children, and IncrementSize().
CargoDataEntry* CargoDataEntry::InsertOrRetrieve | ( | StationID | station | ) | [inline] |
Insert a new child or retrieve an existing child using a station ID as ID.
station | ID of the station for which an entry shall be created or retrieved |
Definition at line 85 of file station_gui.h.
Referenced by StationViewWindow::EstimateDestinations(), StationViewWindow::HandleCargoWaitingClick(), StationViewWindow::RecalcDestinations(), and StationViewWindow::ShowCargo().
void CargoDataEntry::Remove | ( | CargoID | cargo | ) | [inline] |
Remove a child associated with the given cargo.
cargo | ID of the cargo for which the child should be removed. |
Definition at line 106 of file station_gui.h.
References Remove().
Referenced by Remove().
void CargoDataEntry::Remove | ( | CargoDataEntry * | child | ) | [private] |
Remove a subentry from this one and delete it.
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 922 of file station_gui.cpp.
References children.
void CargoDataEntry::Remove | ( | StationID | station | ) | [inline] |
Remove a child associated with the given station.
station | ID of the station for which the child should be removed. |
Definition at line 100 of file station_gui.h.
References Remove().
Referenced by StationViewWindow::HandleCargoWaitingClick(), StationViewWindow::OnInvalidateData(), and Remove().
CargoDataEntry* CargoDataEntry::Retrieve | ( | CargoID | cargo | ) | const [inline] |
Retrieve a child for the given cargo.
Return NULL if it doesn't exist.
cargo | ID of the cargo the child we're looking for is associated with. |
Definition at line 120 of file station_gui.h.
References children, and Retrieve().
Referenced by Retrieve().
CargoDataEntry* CargoDataEntry::Retrieve | ( | StationID | station | ) | const [inline] |
Retrieve a child for the given station.
Return NULL if it doesn't exist.
station | ID of the station the child we're looking for is associated with. |
Definition at line 113 of file station_gui.h.
References children, and Retrieve().
Referenced by StationViewWindow::BuildCargoList(), StationViewWindow::BuildFlowList(), StationViewWindow::HandleCargoWaitingClick(), Retrieve(), StationViewWindow::SetDisplayedRow(), and StationViewWindow::ShowCargo().
void CargoDataEntry::Update | ( | uint | count | ) |
Update the count for this entry and propagate the change to the parent entry if there is one.
count | the amount to be added to this entry |
Definition at line 957 of file station_gui.cpp.
References parent, and Update().
Referenced by StationViewWindow::EstimateDestinations(), StationViewWindow::RecalcDestinations(), StationViewWindow::ShowCargo(), and Update().