X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Froute.h;fp=source%2Flibmarklin%2Froute.h;h=6b36f46ec3ed5a68fbad407aef800f2d76f64eb1;hb=f409cd39a687900724d987c9db629cbff0dd49be;hp=010bb873c8e0971ae0a8022677df26b001b04a7a;hpb=0ba614d0d72aed74edcf03f8bb9f655d06719641;p=r2c2.git diff --git a/source/libmarklin/route.h b/source/libmarklin/route.h index 010bb87..6b36f46 100644 --- a/source/libmarklin/route.h +++ b/source/libmarklin/route.h @@ -22,11 +22,17 @@ class Track; class Route: public sigc::trackable { public: + typedef std::map TurnoutMap; + class Loader: public Msp::DataFile::BasicLoader { + private: + TurnoutMap turnouts; + public: Loader(Route &); private: + virtual void finish(); void turnout(unsigned, unsigned); }; @@ -35,7 +41,7 @@ private: std::string name; bool temporary; std::set tracks; - std::map turnouts; + TurnoutMap turnouts; public: Route(Layout &, const std::string &); @@ -44,14 +50,15 @@ public: const std::string &get_name() const { return name; } void set_temporary(bool); bool is_temporary() const { return temporary; } + void update_turnouts(); int get_turnout(unsigned) const; const std::map &get_turnouts() const { return turnouts; } void add_track(const Track &); void add_tracks(const std::set &); + void add_track_chain(const Track &, unsigned, const TurnoutMap &); const std::set &get_tracks() const { return tracks; } void save(std::list &) const; private: - void update_turnouts(); unsigned check_validity(const Track &) const; void track_removed(Track &);