X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Froute.h;h=2133b766532c8c5287ebe6c3b57a89e7b33b0d52;hb=d6516b0d9faa26fe6c64000c34f8d820f91ac479;hp=5c87971280300067ed055d5a6d15c3df31f0e576;hpb=7e27b311e33beda1746eb63e0945633f262427f6;p=r2c2.git diff --git a/source/libr2c2/route.h b/source/libr2c2/route.h index 5c87971..2133b76 100644 --- a/source/libr2c2/route.h +++ b/source/libr2c2/route.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2007-2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #ifndef LIBR2C2_ROUTE_H_ #define LIBR2C2_ROUTE_H_ @@ -12,21 +5,24 @@ Distributed under the GPL #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; @@ -35,42 +31,35 @@ public: Loader(Route &); private: virtual void finish(); + void name(const std::string &); void turnout(unsigned, unsigned); }; - sigc::signal signal_name_changed; - private: - Layout &layout; - std::string name; bool temporary; - std::set tracks; TurnoutMap turnouts; public: Route(Layout &); ~Route(); - void set_name(const std::string &); - const std::string &get_name() const { return name; } void set_temporary(bool); bool is_temporary() const { return temporary; } - void set_turnout(unsigned, unsigned); void update_turnouts(); +private: + void update_turnout(Track &); +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; private: - unsigned check_validity(Track &) const; - void track_removed(Track &); + void add_turnout(Track &, unsigned); + virtual void on_track_added(Track &); public: + void save(std::list &) const; + virtual Msp::DataFile::Statement save_reference() const; + static Route *find(const TrackIter &, Track &); static Route *find(const TrackIter &, const Route &); static Route *find(const TrackIter &, const Zone &);