]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/tracktype.cpp
Move double-address logic to drivers
[r2c2.git] / source / libr2c2 / tracktype.cpp
index 4ac096767bac5a1e5efa580f4c8da5c3c700a46b..1679dc3f93f8a736efa4f54718cb7a6040bb9db3 100644 (file)
@@ -15,7 +15,7 @@ namespace R2C2 {
 
 TrackType::TrackType(const ArticleNumber &an):
        art_nr(an),
-       double_address(false),
+       state_bits(0),
        autofit_preference(1)
 { }
 
@@ -171,11 +171,12 @@ TrackType::Endpoint::Endpoint(float x, float y, float d, unsigned p):
 
 
 TrackType::Loader::Loader(TrackType &t):
-       Msp::DataFile::BasicLoader<TrackType>(t)
+       Msp::DataFile::BasicLoader<TrackType>(t),
+       state_bits_set(false)
 {
        add("autofit_preference", &TrackType::autofit_preference);
        add("description", &TrackType::description);
-       add("double_address", &TrackType::double_address);
+       add("state_bits",  &Loader::state_bits);
        add("part",        &Loader::part);
 }
 
@@ -189,6 +190,15 @@ void TrackType::Loader::part()
        TrackPart p;
        load_sub(p);
        obj.parts.push_back(p);
+       if(!state_bits_set && p.get_path())
+               while(p.get_path()>=(1U<<obj.state_bits))
+                       ++obj.state_bits;
+}
+
+void TrackType::Loader::state_bits(unsigned b)
+{
+       obj.state_bits = b;
+       state_bits_set = true;
 }
 
 } // namespace R2C2