X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fblock.cpp;h=bf77433491df7b210631dd886c0d7435ced23e93;hb=73edcbd8841752a2722fc8b3927fee2abbbba750;hp=6103509f3647ce053d7c653f3eae28ab3a2b3ca9;hpb=e214fd389b9819eac0379cfb78e0f446e267b839;p=r2c2.git diff --git a/source/libr2c2/block.cpp b/source/libr2c2/block.cpp index 6103509..bf77433 100644 --- a/source/libr2c2/block.cpp +++ b/source/libr2c2/block.cpp @@ -14,7 +14,7 @@ using namespace Msp; 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()), @@ -38,7 +38,7 @@ Block::Block(Layout &l, Track &start): 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 @@ -79,9 +79,12 @@ Block::~Block() 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