49 class NBJunctionTypeIO;
88 std::pair<unsigned int, unsigned int>
getSizes()
const;
98 const NBEdge*
const possProhibitedFrom,
const NBEdge*
const possProhibitedTo)
const;
116 const NBEdge*
const from2,
const NBEdge*
const to2)
const;
128 const NBEdge*
const possProhibitedFrom,
const NBEdge*
const possProhibitedTo,
129 bool regardNonSignalisedLowerPriority)
const;
150 int pos,
const bool checkLaneFoes)
const;
171 int fromLane,
int toLane,
bool mayDefinitelyPass,
const bool checkLaneFoes)
const;
int getIndex(const NBEdge *const from, const NBEdge *const to) const
Returns the index to the internal combination container for the given edge combination.
void computeLeftOutgoingLinkCrossings(bool leftHanded, NBEdge *from, NBEdge *to)
std::vector< bool > LinkInfoCont
NBRequest(const NBEdgeCont &ec, NBNode *junction, const EdgeVector &all, const EdgeVector &incoming, const EdgeVector &outgoing, const NBConnectionProhibits &loadedProhibits)
A SUMO-compliant built logic for a traffic light.
bool forbids(const NBEdge *const possProhibitorFrom, const NBEdge *const possProhibitorTo, const NBEdge *const possProhibitedFrom, const NBEdge *const possProhibitedTo, bool regardNonSignalisedLowerPriority) const
Returns the information whether "prohibited" flow must let "prohibitor" flow pass.
The representation of a single edge during network building.
NBNode * myJunction
the node the request is assigned to
The base class for traffic light logic definitions.
std::vector< LinkInfoCont > CombinationsCont
const EdgeVector & myOutgoing
NBRequest & operator=(const NBRequest &s)
Invalidated assignment operator.
void writeLogic(std::string key, OutputDevice &into, const bool checkLaneFoes) const
std::string getResponseString(const NBEdge *const from, const NBEdge *const to, int fromLane, int toLane, bool mayDefinitelyPass, const bool checkLaneFoes) const
Writes the response of a certain link.
std::string getFoesString(NBEdge *from, NBEdge *to, int toLane, const bool checkLaneFoes) const
size_t distanceCounterClockwise(NBEdge *from, NBEdge *to)
const EdgeVector & myIncoming
static void reportWarnings()
reports warnings if any occured
void buildBitfieldLogic(bool leftHanded)
bool mustBrake(const NBEdge *const possProhibitorFrom, const NBEdge *const possProhibitorTo, const NBEdge *const possProhibitedFrom, const NBEdge *const possProhibitedTo) const
Returns the information whether "prohibited" flow must let "prohibitor" flow pass.
bool laneConflict(const NBEdge *from, const NBEdge *to, int toLane, const NBEdge *prohibitorFrom, const NBEdge *prohibitorTo, int prohibitorToLane) const
return whether the given laneToLane connections prohibit each other under the assumption that the edg...
Storage for edges, including some functionality operating on multiple edges.
void setBlocking(bool leftHanded, NBEdge *from1, NBEdge *to1, NBEdge *from2, NBEdge *to2)
std::map< NBEdge *, LaneVector > OccupiedLanes
std::map< NBConnection, NBConnectionVector > NBConnectionProhibits
Definition of a container for connection block dependencies Includes a list of all connections which ...
int writeLaneResponse(OutputDevice &od, NBEdge *from, int lane, int pos, const bool checkLaneFoes) const
writes the response of a certain lane Returns the next link index within the junction ...
std::vector< NBEdge * > EdgeVector
A storage for options typed value containers)
friend std::ostream & operator<<(std::ostream &os, const NBRequest &r)
prints the request
Represents a single node (junction) during network building.
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 storage of an output device and its base (abstract) implementation.
static size_t myGoodBuilds
void resetCooperating()
reset foes it the number of lanes matches (or exceeds) the number of incoming connections for an edge...
CombinationsCont myForbids
std::pair< unsigned int, unsigned int > getSizes() const
returns the number of the junction's lanes and the number of the junction's links in respect...
void computeRightOutgoingLinkCrossings(bool leftHanded, NBEdge *from, NBEdge *to)