115 std::vector<ConstMSEdgeVector>
edges;
151 std::map<const MSDriveWay*, std::set<const MSDriveWay*, ComparatorNumericalIdLess>>
myDriveWaySucc;
std::vector< const MSEdge * > ConstMSEdgeVector
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_RAIL_CLASSES
classes which drive on tracks
A road/street connecting two junctions.
Interface for objects listening to vehicle state changes.
VehicleState
Definition of a vehicle state.
A base class for constraints.
void loadDeadlockRoute(const ConstMSEdgeVector &edges)
static bool isSignalized(SUMOVehicleClass svc)
void notifyApproach(const MSLink *link)
switch rail signal to active
void addSignal(MSRailSignal *signal)
void vehicleStateChanged(const SUMOVehicle *const vehicle, MSNet::VehicleState to, const std::string &info="")
Called if a vehicle changes its state.
std::vector< Deadlock > myLoadedDeadlocks
void addDrivewayFollower(const MSDriveWay *dw, const MSDriveWay *dw2)
std::vector< MSRailSignal * > mySignals
list of all rail signals
static bool hasInstance()
void findDeadlockFoesFromRoutes(const MSDriveWay *dw, const Deadlock &dl, int signalIndex, std::vector< const MSDriveWay * > deadlockFoes)
MSRailSignalControl()
Constructor.
void loadDeadlockCheck(std::vector< const MSRailSignal * > signals)
std::set< const MSEdge * > myUsedEdges
all rail edges that are part of a known route
void addWaitRelation(const SUMOVehicle *waits, const MSRailSignal *rs, const SUMOVehicle *reason, MSRailSignalConstraint *constraint=nullptr)
static MSRailSignalControl * myInstance
std::map< const SUMOVehicle *, WaitRelation > myWaitRelations
void addDWDeadlockChecks(const MSRailSignal *rs, MSDriveWay *dw)
check whether the given signal and driveway are part of a deadlock circle
static MSRailSignalControl & getInstance()
std::map< const MSDriveWay *, std::set< const MSDriveWay * > > myDriveWayPred
static bool isUsingDriveWays(SVCPermissions svc)
void updateDriveways(const MSEdge *used)
compute additioanl deadlock-check requirements for registered driveways
static SVCPermissions mySignalizedClasses
signalized classes
bool haveDeadlock(const SUMOVehicle *veh) const
whether there is a circle in the waiting-for relationships that contains the given vehicle
const std::vector< MSRailSignal * > & getSignals() const
static bool isMovingBlock(SVCPermissions svc)
std::set< std::set< const SUMOVehicle * > > myWrittenDeadlocks
void updateSignals(SUMOTime t)
update active rail signals
std::set< MSRailSignal *, ComparatorNumericalIdLess > myActiveSignals
std::map< std::pair< int, int >, bool > myDriveWayCompatibility
static void clearState()
Perform resets events when quick-loading state.
static SVCPermissions myMBClasses
static void initSignalized(SVCPermissions svc, SVCPermissions mbSvc)
std::map< const MSDriveWay *, std::set< const MSDriveWay *, ComparatorNumericalIdLess > > myDriveWaySucc
std::map< const MSRailSignal *, std::vector< std::pair< int, int > > > mySignalDeadlocks
void resetWaitRelations()
reset all waiting-for relationships at the start of the simulation step
void findDeadlockFoes(const MSDriveWay *dw, const Deadlock &dl, int signalIndex, std::vector< const MSDriveWay * > deadlockFoes)
std::vector< std::pair< MSLink *, int > > mySwitchedGreenFlanks
list of signals that switched green along with driveway index
Representation of a vehicle.
storage for loaded deadlocks
ConstMSEdgeVector forwardEnds
std::vector< const MSRailSignal * > signals
std::vector< ConstMSEdgeVector > edges
MSRailSignalConstraint * constraint
WaitRelation(const MSRailSignal *_railSignal=nullptr, const SUMOVehicle *_foe=nullptr, MSRailSignalConstraint *_constraint=nullptr)
const MSRailSignal * railSignal