X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Flayout.h;h=2a1817f5e021616ba5929f293629c2d78baded51;hb=010d8321e982d1684fcbff5bf6fc2bdec7cb7bae;hp=c292af6ed29167d47e2c7068cf3c939757d48187;hpb=6c61179fe09af2f5366d50f10aadbf5f83438087;p=r2c2.git diff --git a/source/libmarklin/layout.h b/source/libmarklin/layout.h index c292af6..2a1817f 100644 --- a/source/libmarklin/layout.h +++ b/source/libmarklin/layout.h @@ -1,8 +1,15 @@ +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + #ifndef LIBMARKLIN_LAYOUT_H_ #define LIBMARKLIN_LAYOUT_H_ #include -#include +#include #include "route.h" #include "track.h" @@ -13,34 +20,44 @@ class Catalogue; class Layout { public: - class Loader: public Msp::Parser::Loader + class Loader: public Msp::DataFile::BasicLoader { public: Loader(Layout &); - Layout &get_object() { return layout; } private: - Layout &layout; - + virtual void finish(); + void route(const std::string &); void track(unsigned); }; - sigc::signal signal_track_added; - sigc::signal signal_track_removed; +public: + sigc::signal signal_track_added; + sigc::signal signal_track_removed; + sigc::signal signal_route_added; + sigc::signal signal_route_removed; - Layout(Catalogue &); - const TrackSeq &get_tracks() const { return tracks; } - void add_track(Track *); - void remove_track(Track *); - void check_links(); - void load(const std::string &); - int save(const std::string &); - ~Layout(); private: - Catalogue &catalogue; - std::string filename; + const Catalogue &catalogue; std::string base; - TrackSeq tracks; - RouteSeq routes; + std::set tracks; + std::set routes; + +public: + Layout(const Catalogue &); + ~Layout(); + + const Catalogue &get_catalogue() const { return catalogue; } + const std::string &get_base() const { return base; } + const std::set &get_tracks() const { return tracks; } + void add_track(Track &); + void remove_track(Track &); + void add_route(Route &); + const std::set &get_routes() const { return routes; } + void remove_route(Route &); + void save(const std::string &); +private: + void check_links(); + void check_routes(); }; } // namespace Marklin