]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/tracktype.cpp
Add TrackIter and BlockIter classes
[r2c2.git] / source / libmarklin / tracktype.cpp
index 314c797c97ec813928382b02a9374c6b528c47fa..1a39877a94bbb649d86b193e133c4030aa61a1a1 100644 (file)
@@ -14,7 +14,8 @@ using namespace Msp;
 namespace Marklin {
 
 TrackType::TrackType(unsigned a):
-       art_nr(a)
+       art_nr(a),
+       double_address(false)
 { }
 
 float TrackType::get_total_length() const
@@ -52,9 +53,9 @@ bool TrackType::is_turnout() const
        return endpoints.size()>2;
 }
 
-bool TrackType::is_double_address() const
+bool TrackType::is_dead_end() const
 {
-       return get_n_paths()>2;
+       return endpoints.size()<2;
 }
 
 TrackPoint TrackType::get_point(unsigned epi, unsigned path, float d) const
@@ -89,7 +90,7 @@ TrackPoint TrackType::get_point(unsigned epi, unsigned path, float d) const
        while(1)
        {
                float plen = part->get_length();
-               if(d<plen)
+               if(d<=plen)
                {
                        if(part_ep==1)
                                d = plen-d;
@@ -158,6 +159,7 @@ TrackType::Loader::Loader(TrackType &t):
        Msp::DataFile::BasicLoader<TrackType>(t)
 {
        add("description", &TrackType::description);
+       add("double_address", &TrackType::double_address);
        add("part",        &Loader::part);
 }