X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Froute.h;h=9b440cb255bdb33bdf9f4981c1138be91ec466ca;hb=cb4e53ba1b8ea41b978190de6668e9862b9cfea8;hp=4f5d0564934e665bbc86c9c7f0827965141e535e;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/libr2c2/route.h b/source/libr2c2/route.h index 4f5d056..9b440cb 100644 --- a/source/libr2c2/route.h +++ b/source/libr2c2/route.h @@ -5,21 +5,24 @@ #include #include #include -#include +#include +#include "trackchain.h" namespace R2C2 { class Layout; +class Object; class Track; class TrackIter; class Zone; -class Route: public sigc::trackable + +class Route: public TrackChain { public: typedef std::map TurnoutMap; - class Loader: public Msp::DataFile::BasicLoader + class Loader: public Msp::DataFile::ObjectLoader { private: TurnoutMap turnouts; @@ -34,10 +37,8 @@ public: sigc::signal signal_name_changed; private: - Layout &layout; std::string name; bool temporary; - std::set tracks; TurnoutMap turnouts; public: @@ -53,17 +54,13 @@ public: int get_turnout(unsigned) const; unsigned get_path(Track &) const; const std::map &get_turnouts() const { return turnouts; } - void add_track(Track &); - void add_tracks(const std::set &); - void add_track_chain(Track &, unsigned, const TurnoutMap &); - const std::set &get_tracks() const { return tracks; } - bool has_track(Track &) const; - void save(std::list &) const; + void add_track_chain(const TrackIter &, const TurnoutMap &); private: - unsigned check_validity(Track &) const; - void track_removed(Track &); + virtual void on_track_added(Track &); public: + void save(std::list &) const; + static Route *find(const TrackIter &, Track &); static Route *find(const TrackIter &, const Route &); static Route *find(const TrackIter &, const Zone &);