46 #ifdef CHECK_MEMORY_LEAKS
48 #endif // CHECK_MEMORY_LEAKS
59 const std::vector<NBNode*>& junctions,
const std::string& programID,
62 myControlledNodes(junctions),
63 mySubID(programID), myOffset(offset),
77 for (std::vector<NBNode*>::const_iterator i = junctions.begin(); i != junctions.end(); i++) {
78 (*i)->addTrafficLight(
this);
111 for (std::vector<NBNode*>::iterator it = nodes.begin(); it != nodes.end(); it++) {
112 (*it)->removeTrafficLight(
this);
114 WRITE_WARNING(
"The traffic light '" +
getID() +
"' does not control any links; it will not be build.");
121 if (oc.
isSet(
"tls.yellow.time")) {
122 brakingTime = oc.
getInt(
"tls.yellow.time");
137 return (
unsigned int)(vmax / minDecel);
155 const EdgeVector& incoming = (*i)->getIncomingEdges();
156 copy(incoming.begin(), incoming.end(), back_inserter(
myIncomingEdges));
157 const EdgeVector& outgoing = (*i)->getOutgoingEdges();
158 copy(outgoing.begin(), outgoing.end(), back_inserter(myOutgoing));
166 EdgeVector::iterator k = find(myOutgoing.begin(), myOutgoing.end(), edge);
167 if (k != myOutgoing.end()) {
170 (*j)->setIsInnerEdge();
187 std::vector<NBNode*>::const_iterator i =
198 std::vector<NBNode*>::const_iterator i =
203 if (!node->hasOutgoing(to)) {
212 const NBEdge*
const possProhibitedTo,
213 const NBEdge*
const possProhibitorFrom,
214 const NBEdge*
const possProhibitorTo,
215 bool regardNonSignalisedLowerPriority)
const {
216 return forbids(possProhibitorFrom, possProhibitorTo,
217 possProhibitedFrom, possProhibitedTo,
218 regardNonSignalisedLowerPriority);
225 bool regardNonSignalisedLowerPriority)
const {
228 regardNonSignalisedLowerPriority);
234 const NBEdge*
const possProhibitorTo,
235 const NBEdge*
const possProhibitedFrom,
236 const NBEdge*
const possProhibitedTo,
237 bool regardNonSignalisedLowerPriority)
const {
238 if (possProhibitorFrom == 0 || possProhibitorTo == 0 || possProhibitedFrom == 0 || possProhibitedTo == 0) {
242 std::vector<NBNode*>::const_iterator incoming =
244 std::vector<NBNode*>::const_iterator outgoing =
247 NBNode* incnode = *incoming;
248 NBNode* outnode = *outgoing;
249 EdgeVector::const_iterator i;
250 if (incnode != outnode) {
255 for (i = ev1.begin(); i != ev1.end(); ++i) {
256 std::vector<NBNode*>::const_iterator outgoing2 =
261 NBNode* outnode2 = *outgoing2;
262 if (incnode != outnode2) {
265 bool ret1 = incnode->
foes(possProhibitorTo, *i,
266 possProhibitedFrom, possProhibitedTo);
267 bool ret2 = incnode->forbids(possProhibitorFrom, possProhibitorTo,
268 possProhibitedTo, *i,
269 regardNonSignalisedLowerPriority);
270 bool ret = ret1 || ret2;
279 for (i = ev2.begin(); i != ev2.end(); ++i) {
280 std::vector<NBNode*>::const_iterator incoming2 =
285 NBNode* incnode2 = *incoming2;
286 if (incnode2 != outnode) {
289 bool ret1 = incnode2->
foes(possProhibitorTo, *i,
290 possProhibitedFrom, possProhibitedTo);
291 bool ret2 = incnode2->
forbids(possProhibitorTo, *i,
292 possProhibitedFrom, possProhibitedTo,
293 regardNonSignalisedLowerPriority);
294 bool ret = ret1 || ret2;
303 return incnode->forbids(possProhibitorFrom, possProhibitorTo,
304 possProhibitedFrom, possProhibitedTo,
305 regardNonSignalisedLowerPriority);
311 const NBEdge*
const from2,
const NBEdge*
const to2)
const {
312 if (to1 == 0 || to2 == 0) {
316 std::vector<NBNode*>::const_iterator incoming =
319 std::vector<NBNode*>::const_iterator outgoing =
323 NBNode* incnode = *incoming;
324 NBNode* outnode = *outgoing;
325 if (incnode != outnode) {
328 return incnode->
foes(from1, to1, from2, to2);
371 for (
unsigned int j = 0; j < noLanes; j++) {
373 for (std::vector<NBEdge::Connection>::iterator k = connected.begin(); k != connected.end(); k++) {