X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Froute.h;h=bcb76e143635fa4b0180f24e698dfee292509bef;hb=02c9a9779954d993cb73fe5f7a72b0847e87f633;hp=6d2d71034d532fa55301bf619b033d8f31e29489;hpb=1d735b80482317fd930eb47ca255ab9f1f120a7d;p=r2c2.git diff --git a/source/libmarklin/route.h b/source/libmarklin/route.h index 6d2d710..bcb76e1 100644 --- a/source/libmarklin/route.h +++ b/source/libmarklin/route.h @@ -1,27 +1,54 @@ +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2007-2009 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + #ifndef LIBMARKLIN_ROUTE_H_ #define LIBMARKLIN_ROUTE_H_ -#include #include #include #include +#include namespace Marklin { +class Layout; class Track; class Turnout; class Route { public: - Route(); - const std::map &get_turnouts() const { return turnouts; } - void add_track(Track *); - ~Route(); + class Loader: public Msp::DataFile::BasicLoader + { + public: + Loader(Route &); + private: + void turnout(unsigned, unsigned); + }; + private: std::string name; - std::set tracks; - std::map turnouts; + std::set tracks; + std::map turnouts; + +public: + Route(Layout &, const std::string &); + + const std::string &get_name() const { return name; } + int get_turnout(unsigned) const; + const std::map &get_turnouts() const { return turnouts; } + void add_track(const Track &); + void add_tracks(const std::set &); + 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 &); }; } // namespace Marklin