]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/block.cpp
Simplify some interfaces by using track and block iterators
[r2c2.git] / source / libr2c2 / block.cpp
index 8bab92c1f87f63159ebda4f221cc0e1535de2d39..386f2378a3b20011733cb54a17880cdd64a2d50b 100644 (file)
@@ -52,7 +52,7 @@ Block::Block(Layout &l, Track &start):
        {
                unsigned path = 1<<i;
                endpoints[i].paths |= path;
-               find_paths(TrackIter(endpoints[i].track, endpoints[i].track_ep), path);
+               find_paths(endpoints[i].track_iter(), path);
        }
 
        if(sensor_id && layout.has_driver())
@@ -105,7 +105,7 @@ float Block::get_path_length(unsigned entry, const Route *route) const
        if(entry>=endpoints.size())
                throw out_of_range("Block::get_path_length");
 
-       TrackIter t_iter(endpoints[entry].track, endpoints[entry].track_ep);
+       TrackIter t_iter = endpoints[entry].track_iter();
 
        float result = 0;
        while(t_iter && has_track(*t_iter))
@@ -185,7 +185,7 @@ void Block::tick(const Time::TimeDelta &dt)
        }
 }
 
-void Block::find_paths(TrackIter track, unsigned path)
+void Block::find_paths(const TrackIter &track, unsigned path)
 {
        unsigned mask = track.endpoint().paths;
        for(unsigned i=0; mask>>i; ++i)
@@ -254,4 +254,9 @@ Block::Endpoint::Endpoint(Track *t, unsigned e):
        paths(0)
 { }
 
+TrackIter Block::Endpoint::track_iter() const
+{
+       return TrackIter(track, track_ep);
+}
+
 } // namespace R2C2