19 #ifndef NBTrafficLightDefinition_h 20 #define NBTrafficLightDefinition_h 100 const std::vector<NBNode*>& junctions,
101 const std::string& programID,
115 const std::string& programID,
201 bool regardNonSignalisedLowerPriority)
const;
213 const NBEdge*
const possProhibitorFrom,
const NBEdge*
const possProhibitorTo,
214 bool regardNonSignalisedLowerPriority)
const;
228 const NBEdge*
const possProhibitedFrom,
const NBEdge*
const possProhibitedTo,
229 bool regardNonSignalisedLowerPriority,
230 bool sameNodeOnly =
false)
const;
241 const NBEdge*
const from2,
const NBEdge*
const to2)
const;
279 NBEdge* by,
int byLane) = 0;
439 return (from1 == o.
from1 && to1 == o.
to1 440 && from2 == o.
from2 && to2 == o.
to2);
444 if (from1 != o.
from1) {
445 return from1 < o.
from1;
450 if (from2 != o.
from2) {
451 return from2 < o.
from2;
bool operator==(const StreamPair &o) const
virtual void setParticipantsInformation()
Builds the list of participating nodes/edges/links.
StreamPair(const NBEdge *_from1, const NBEdge *_to1, const NBEdge *_from2, const NBEdge *_to2)
TrafficLightType myType
The algorithm type for the traffic light.
virtual bool rightOnRedConflict(int index, int foeIndex) const
whether the given index must yield to the foeIndex while turning right on a red light ...
virtual void addNode(NBNode *node)
Adds a node to the traffic light logic.
virtual void removeConnection(const NBConnection &conn, bool reconstruct=true)
removes the given connection from the traffic light if recontruct=true, reconstructs the logic and in...
virtual bool usingSignalGroups() const
whether this definition uses signal group (multiple connections with the same link index) ...
void collectAllLinks()
helper method for use in NBOwnTLDef and NBLoadedSUMOTLDef
static const std::string DummyID
id for temporary definitions
RightOnRedConflicts myRightOnRedConflicts
A SUMO-compliant built logic for a traffic light.
EdgeVector myIncomingEdges
The list of incoming edges.
virtual ~NBTrafficLightDefinition()
Destructor.
The representation of a single edge during network building.
TrafficLightType getType() const
get the algorithm type (static etc..)
Signal is blinking yellow.
const NBConnectionVector & getControlledLinks() const
returns the controlled links (depends on previous call to collectLinks)
NBTrafficLightLogic * compute(OptionsCont &oc)
Computes the traffic light logic.
The base class for traffic light logic definitions.
virtual void replaceRemoved(NBEdge *removed, int removedLane, NBEdge *by, int byLane)=0
Replaces a removed edge/lane.
virtual void shiftTLConnectionLaneIndex(NBEdge *edge, int offset, int threshold=-1)
patches (loaded) signal plans by modifying lane indices
static const SUMOTime UNSPECIFIED_DURATION
Signal shows red/yellow (unused)
std::set< std::pair< int, int > > RightOnRedConflicts
int computeBrakingTime(double minDecel) const
Computes the time vehicles may need to brake.
bool needsCont(const NBEdge *fromE, const NBEdge *toE, const NBEdge *otherFromE, const NBEdge *otherToE) const
TLColor
An enumeration of possible tl-signal states.
NBTrafficLightDefinition(const std::string &id, const std::vector< NBNode *> &junctions, const std::string &programID, SUMOTime offset, TrafficLightType type)
Constructor.
SUMOTime myOffset
The offset in the program.
#define UNUSED_PARAMETER(x)
NBConnectionVector & getControlledLinks()
returns the controlled links (non const version)
virtual void collectLinks()=0
Collects the links participating in this traffic light.
virtual void initNeedsContRelation() const
std::set< StreamPair > NeedsContRelation
SUMOTime getOffset()
Returns the offset.
virtual void collectEdges()
Build the list of participating edges.
std::string getDescription() const
get ID and programID together (for convenient debugging)
virtual int getMaxIndex()=0
Returns the maximum index controlled by this traffic light and assigned to a connection.
std::set< std::string > myControlledInnerEdges
Set of inner edges that shall be controlled, though.
virtual void remapRemoved(NBEdge *removed, const EdgeVector &incoming, const EdgeVector &outgoing)=0
Replaces occurences of the removed edge in incoming/outgoing edges of all definitions.
bool operator<(const StreamPair &o) const
virtual NBTrafficLightLogic * myCompute(int brakingTime)=0
Computes the traffic light logic finally in dependence to the type.
static const std::string DefaultProgramID
void setProgramID(const std::string &programID)
Sets the programID.
void addControlledInnerEdges(const std::vector< std::string > &edges)
Adds the given ids into the list of inner edges controlled by the tls.
const std::string & getProgramID() const
Returns the ProgramID.
An upper class for objects with additional parameters.
virtual void removeNode(NBNode *node)
Removes the given node from the list of controlled nodes.
Base class for objects which have an id.
std::vector< NBConnection > NBConnectionVector
Definition of a connection vector.
const EdgeVector & getIncomingEdges() const
Returns the list of incoming edges (must be build first)
bool myRightOnRedConflictsReady
virtual bool amInvalid() const
bool forbids(const NBEdge *const possProhibitorFrom, const NBEdge *const possProhibitorTo, const NBEdge *const possProhibitedFrom, const NBEdge *const possProhibitedTo, bool regardNonSignalisedLowerPriority, bool sameNodeOnly=false) const
Returns the information whether "prohibited" flow must let "prohibitor" flow pass.
bool myNeedsContRelationReady
std::vector< NBEdge * > EdgeVector
container for (sorted) edges
const std::vector< NBNode * > & getNodes() const
Returns the list of controlled nodes.
A storage for options typed value containers)
NeedsContRelation myNeedsContRelation
Represents a single node (junction) during network building.
data structure for caching needsCont information
virtual int getMaxValidIndex()
Returns the maximum index controlled by this traffic light.
std::vector< NBNode * > myControlledNodes
The container with participating nodes.
bool foes(const NBEdge *const from1, const NBEdge *const to1, const NBEdge *const from2, const NBEdge *const to2) const
Returns the information whether the given flows cross.
static std::set< NBEdge * > collectReachable(EdgeVector outer, const EdgeVector &within, bool checkControlled)
NBConnectionVector myControlledLinks
The list of controlled links.
bool mustBrake(const NBEdge *const from, const NBEdge *const to) const
Returns the information whether the described flow must let any other flow pass.
std::vector< std::string > getControlledInnerEdges() const
Retrieve the ids of edges explicitly controlled by the tls.
EdgeVector myEdgesWithin
The list of edges within the area controlled by the tls.
virtual void setTLControllingInformation() const =0
Informs edges about being controlled by a tls.
virtual void setType(TrafficLightType type)
set the algorithm type (static etc..)
std::string mySubID
The tls program's subid.