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");
139 return (
unsigned int)(vmax / minDecel);
157 const EdgeVector& incoming = (*i)->getIncomingEdges();
158 copy(incoming.begin(), incoming.end(), back_inserter(
myIncomingEdges));
159 const EdgeVector& outgoing = (*i)->getOutgoingEdges();
160 copy(outgoing.begin(), outgoing.end(), back_inserter(myOutgoing));
168 EdgeVector::iterator k = find(myOutgoing.begin(), myOutgoing.end(), edge);
169 if (k != myOutgoing.end()) {
172 (*j)->setIsInnerEdge();
189 std::vector<NBNode*>::const_iterator i =
200 std::vector<NBNode*>::const_iterator i =
205 if (!node->hasOutgoing(to)) {
214 const NBEdge*
const possProhibitedTo,
215 const NBEdge*
const possProhibitorFrom,
216 const NBEdge*
const possProhibitorTo,
217 bool regardNonSignalisedLowerPriority)
const {
218 return forbids(possProhibitorFrom, possProhibitorTo,
219 possProhibitedFrom, possProhibitedTo,
220 regardNonSignalisedLowerPriority);
227 bool regardNonSignalisedLowerPriority)
const {
230 regardNonSignalisedLowerPriority);
236 const NBEdge*
const possProhibitorTo,
237 const NBEdge*
const possProhibitedFrom,
238 const NBEdge*
const possProhibitedTo,
239 bool regardNonSignalisedLowerPriority)
const {
240 if (possProhibitorFrom == 0 || possProhibitorTo == 0 || possProhibitedFrom == 0 || possProhibitedTo == 0) {
244 std::vector<NBNode*>::const_iterator incoming =
246 std::vector<NBNode*>::const_iterator outgoing =
249 NBNode* incnode = *incoming;
250 NBNode* outnode = *outgoing;
251 EdgeVector::const_iterator i;
252 if (incnode != outnode) {
257 for (i = ev1.begin(); i != ev1.end(); ++i) {
258 std::vector<NBNode*>::const_iterator outgoing2 =
263 NBNode* outnode2 = *outgoing2;
264 if (incnode != outnode2) {
267 bool ret1 = incnode->
foes(possProhibitorTo, *i,
268 possProhibitedFrom, possProhibitedTo);
269 bool ret2 = incnode->forbids(possProhibitorFrom, possProhibitorTo,
270 possProhibitedTo, *i,
271 regardNonSignalisedLowerPriority);
272 bool ret = ret1 || ret2;
281 for (i = ev2.begin(); i != ev2.end(); ++i) {
282 std::vector<NBNode*>::const_iterator incoming2 =
287 NBNode* incnode2 = *incoming2;
288 if (incnode2 != outnode) {
291 bool ret1 = incnode2->
foes(possProhibitorTo, *i,
292 possProhibitedFrom, possProhibitedTo);
293 bool ret2 = incnode2->
forbids(possProhibitorTo, *i,
294 possProhibitedFrom, possProhibitedTo,
295 regardNonSignalisedLowerPriority);
296 bool ret = ret1 || ret2;
305 return incnode->forbids(possProhibitorFrom, possProhibitorTo,
306 possProhibitedFrom, possProhibitedTo,
307 regardNonSignalisedLowerPriority);
313 const NBEdge*
const from2,
const NBEdge*
const to2)
const {
314 if (to1 == 0 || to2 == 0) {
318 std::vector<NBNode*>::const_iterator incoming =
321 std::vector<NBNode*>::const_iterator outgoing =
325 NBNode* incnode = *incoming;
326 NBNode* outnode = *outgoing;
327 if (incnode != outnode) {
330 return incnode->
foes(from1, to1, from2, to2);
360 std::vector<std::string>
379 for (
unsigned int j = 0; j < noLanes; j++) {
381 for (std::vector<NBEdge::Connection>::iterator k = connected.begin(); k != connected.end(); k++) {