3 #include "trafficmanager.h"
10 TrafficManager::TrafficManager(Control &c, Layout &l):
14 const set<Track *> &tracks=layout.get_tracks();
16 set<Track *> used_tracks;
17 for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
19 if(unsigned tid=(*i)->get_turnout_id())
20 new Turnout(control, tid);
21 if(unsigned sid=(*i)->get_sensor_id())
22 new Sensor(control, sid);
24 if(used_tracks.count(*i)==0)
26 Block *block=new Block(*this, **i);
27 blocks.push_back(block);
28 used_tracks.insert(block->get_tracks().begin(), block->get_tracks().end());
32 for(BlockSeq::iterator i=blocks.begin(); i!=blocks.end(); ++i)
34 for(BlockSeq::iterator j=i; j!=blocks.end(); ++j)
36 (*i)->check_link(**j);
41 TrafficManager::~TrafficManager()
43 for(BlockSeq::iterator i=blocks.begin(); i!=blocks.end(); ++i)
45 for(TrainSeq::iterator i=trains.begin(); i!=trains.end(); ++i)
49 Block *TrafficManager::get_block_by_track(const Track *t) const
51 for(BlockSeq::const_iterator i=blocks.begin(); i!=blocks.end(); ++i)
53 const set<Track *> &tracks=(*i)->get_tracks();
54 if(tracks.count(const_cast<Track *>(t)))
61 void TrafficManager::add_train(Train *t)
63 if(find(trains.begin(), trains.end(), t)==trains.end())
67 void TrafficManager::turnout_route_changed(unsigned, Turnout *)
71 } // namespace Marklin