X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftracktype.cpp;h=9f2979bebff80ca4112eb2c3013d6a4209da1ddf;hb=975ea87cc7be179618b06291cb2506a2523cad1f;hp=314c797c97ec813928382b02a9374c6b528c47fa;hpb=47bff0c8939de3ae20b5ced1ee2f6a264397dcee;p=r2c2.git diff --git a/source/libmarklin/tracktype.cpp b/source/libmarklin/tracktype.cpp index 314c797..9f2979b 100644 --- a/source/libmarklin/tracktype.cpp +++ b/source/libmarklin/tracktype.cpp @@ -13,8 +13,10 @@ using namespace Msp; namespace Marklin { -TrackType::TrackType(unsigned a): - art_nr(a) +TrackType::TrackType(const ArticleNumber &an): + art_nr(an), + double_address(false), + autofit_preference(1) { } float TrackType::get_total_length() const @@ -52,9 +54,17 @@ 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; +} + +const TrackType::Endpoint &TrackType::get_endpoint(unsigned i) const +{ + if(i>=endpoints.size()) + throw InvalidParameterValue("Endpoint index out of range"); + + return endpoints[i]; } TrackPoint TrackType::get_point(unsigned epi, unsigned path, float d) const @@ -89,7 +99,7 @@ TrackPoint TrackType::get_point(unsigned epi, unsigned path, float d) const while(1) { float plen = part->get_length(); - if(d(t) { + add("autofit_preference", &TrackType::autofit_preference); add("description", &TrackType::description); + add("double_address", &TrackType::double_address); add("part", &Loader::part); }