#include <sigc++/sigc++.h>
#include <msp/datafile/loader.h>
#include <msp/time/timestamp.h>
#include <sigc++/sigc++.h>
#include <msp/datafile/loader.h>
#include <msp/time/timestamp.h>
void track(ArticleNumber);
void train(unsigned, unsigned, const std::string &);
void train(ArticleNumber, unsigned, const std::string &);
void track(ArticleNumber);
void train(unsigned, unsigned, const std::string &);
void train(ArticleNumber, unsigned, const std::string &);
sigc::signal<void, Track &> signal_track_added;
sigc::signal<void, Track &> signal_track_removed;
sigc::signal<void, Route &> signal_route_added;
sigc::signal<void, Route &> signal_route_removed;
sigc::signal<void, Track &> signal_track_added;
sigc::signal<void, Track &> signal_track_removed;
sigc::signal<void, Route &> signal_route_added;
sigc::signal<void, Route &> signal_route_removed;
sigc::signal<void, Train &> signal_train_added;
sigc::signal<void, Train &> signal_train_removed;
sigc::signal<void, Vehicle &> signal_vehicle_added;
sigc::signal<void, Vehicle &> signal_vehicle_removed;
sigc::signal<void, Block &, Train *> signal_block_reserved;
sigc::signal<void, Train &> signal_train_added;
sigc::signal<void, Train &> signal_train_removed;
sigc::signal<void, Vehicle &> signal_vehicle_added;
sigc::signal<void, Vehicle &> signal_vehicle_removed;
sigc::signal<void, Block &, Train *> signal_block_reserved;
std::set<Block *> blocks;
std::map<unsigned, Train *> trains;
std::set<Vehicle *> vehicles;
std::set<Block *> blocks;
std::map<unsigned, Train *> trains;
std::set<Vehicle *> vehicles;
+ void add_zone(Zone &);
+ const ZoneSet &get_zones() const { return zones; }
+ ZoneArray get_zones(const std::string &) const;
+ Zone &get_zone(const std::string &, unsigned) const;
+ void remove_zone(Zone &);
+
void add_train(Train &);
Train &get_train(unsigned) const;
const std::map<unsigned, Train *> &get_trains() const { return trains; }
void add_train(Train &);
Train &get_train(unsigned) const;
const std::map<unsigned, Train *> &get_trains() const { return trains; }