OpenTTD
Data Structures | Macros | Typedefs | Functions | Variables
group.h File Reference

Base class for groups and group functions. More...

#include "group_type.h"
#include "core/pool_type.hpp"
#include "company_type.h"
#include "vehicle_type.h"
#include "engine_type.h"

Go to the source code of this file.

Data Structures

struct  GroupStatistics
 Statistics and caches on the vehicles in a group. More...
 
struct  Group
 Group data. More...
 

Macros

#define FOR_ALL_GROUPS_FROM(var, start)   FOR_ALL_ITEMS_FROM(Group, group_index, var, start)
 
#define FOR_ALL_GROUPS(var)   FOR_ALL_GROUPS_FROM(var, 0)
 

Typedefs

typedef Pool< Group, GroupID, 16, 64000 > GroupPool
 

Functions

static bool IsDefaultGroupID (GroupID index)
 
static bool IsAllGroupID (GroupID id_g)
 Checks if a GroupID stands for all vehicles of a company. More...
 
uint GetGroupNumEngines (CompanyID company, GroupID id_g, EngineID id_e)
 Get the number of engines with EngineID id_e in the group with GroupID id_g and its sub-groups. More...
 
void SetTrainGroupID (Train *v, GroupID grp)
 Affect the groupID of a train to new_g. More...
 
void UpdateTrainGroupID (Train *v)
 Recalculates the groupID of a train. More...
 
void RemoveVehicleFromGroup (const Vehicle *v)
 Decrease the num_vehicle variable before delete an front engine from a group. More...
 
void RemoveAllGroupsForCompany (const CompanyID company)
 
bool GroupIsInGroup (GroupID search, GroupID group)
 Test if GroupID group is a descendant of (or is) GroupID search. More...
 

Variables

GroupPool _group_pool
 Pool of groups.
 
GroupID _new_group_id
 

Detailed Description

Base class for groups and group functions.

Definition in file group.h.

Function Documentation

◆ GetGroupNumEngines()

uint GetGroupNumEngines ( CompanyID  company,
GroupID  id_g,
EngineID  id_e 
)

Get the number of engines with EngineID id_e in the group with GroupID id_g and its sub-groups.

Parameters
companyThe company the group belongs to
id_gThe GroupID of the group used
id_eThe EngineID of the engine to count
Returns
The number of engines with EngineID id_e in the group

Definition at line 693 of file group_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().

Referenced by InvalidateAutoreplaceWindow(), and IsAllGroupID().

◆ GroupIsInGroup()

bool GroupIsInGroup ( GroupID  search,
GroupID  group 
)

Test if GroupID group is a descendant of (or is) GroupID search.

Parameters
searchThe GroupID to search in
groupThe GroupID to search for
Returns
True iff group is search or a descendant of search

Definition at line 720 of file group_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), INVALID_GROUP, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID().

Referenced by GetEngineReplacement().

◆ IsAllGroupID()

static bool IsAllGroupID ( GroupID  id_g)
inlinestatic

Checks if a GroupID stands for all vehicles of a company.

Parameters
id_gThe GroupID to check
Returns
true is id_g is identical to ALL_GROUP

Definition at line 91 of file group.h.

References ALL_GROUP, GetGroupNumEngines(), RemoveVehicleFromGroup(), SetTrainGroupID(), and UpdateTrainGroupID().

Referenced by CmdSetAutoReplace(), VehicleGroupWindow::DirtyHighlightedGroupWidget(), VehicleGroupWindow::OnClick(), and VehicleGroupWindow::OnInvalidateData().

◆ RemoveVehicleFromGroup()

void RemoveVehicleFromGroup ( const Vehicle v)

Decrease the num_vehicle variable before delete an front engine from a group.

Note
Called in CmdSellRailWagon and DeleteLasWagon,
Parameters
vFrontEngine of the train we want to remove.

Definition at line 630 of file group_cmd.cpp.

References Vehicle::IsPrimaryVehicle().

Referenced by IsAllGroupID().

◆ SetTrainGroupID()

void SetTrainGroupID ( Train v,
GroupID  new_g 
)

Affect the groupID of a train to new_g.

Note
called in CmdAddVehicleGroup and CmdMoveRailVehicle
Parameters
vFirst vehicle of the chain.
new_gindex of array group

Definition at line 644 of file group_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID().

Referenced by IsAllGroupID().

◆ UpdateTrainGroupID()

void UpdateTrainGroupID ( Train v)

Recalculates the groupID of a train.

Should be called each time a vehicle is added to/removed from the chain,.

Note
this needs to be called too for 'wagon chains' (in the depot, without an engine)
Called in CmdBuildRailVehicle, CmdBuildRailWagon, CmdMoveRailVehicle, CmdSellRailWagon
Parameters
vFirst vehicle of the chain.

Definition at line 669 of file group_cmd.cpp.

Referenced by IsAllGroupID(), and NormaliseTrainHead().