namespace R2C2 {
Block::Block(Layout &l, Track &start):
- layout(l),
+ TrackChain(l),
id(0),
sensor_id(start.get_sensor_id()),
turnout_id(start.get_turnout_id()),
if(links[i]->get_sensor_id()==sensor_id && links[i]->get_turnout_id()==turnout_id)
{
queue.push_back(links[i]);
- tracks.insert(links[i]);
+ add_track(*links[i]);
links[i]->set_block(this);
}
else
delete sensor;
}
-bool Block::has_track(Track &t) const
+TrackChain::Validity Block::check_validity(Track &track) const
{
- return tracks.count(&t);
+ if(track.get_sensor_id()!=sensor_id || track.get_turnout_id()!=turnout_id)
+ return INCOMPATIBLE;
+
+ return TrackChain::check_validity(track);
}
const Block::Endpoint &Block::get_endpoint(unsigned i) const