]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/block.cpp
Create a base class to handle common operations in Block, Route and Zone
[r2c2.git] / source / libr2c2 / block.cpp
index 6103509f3647ce053d7c653f3eae28ab3a2b3ca9..bf77433491df7b210631dd886c0d7435ced23e93 100644 (file)
@@ -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