#ifndef LIBR2C2_LAYOUT_H_
#define LIBR2C2_LAYOUT_H_
#include <set>
#include <sigc++/sigc++.h>
#ifndef LIBR2C2_LAYOUT_H_
#define LIBR2C2_LAYOUT_H_
#include <set>
#include <sigc++/sigc++.h>
void track(unsigned);
void track(ArticleNumber);
void train(unsigned, unsigned, const std::string &);
void train(ArticleNumber, unsigned, const std::string &);
void track(unsigned);
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, 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, Zone &> signal_zone_added;
sigc::signal<void, Route &> signal_route_added;
sigc::signal<void, Route &> signal_route_removed;
sigc::signal<void, Zone &> signal_zone_added;
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, Vehicle &> signal_vehicle_added;
sigc::signal<void, Vehicle &> signal_vehicle_removed;
sigc::signal<void, Block &, Train *> signal_block_reserved;
- unsigned allocate_turnout_id(bool);
+ unsigned allocate_turnout_id();
+
+ void add_signal(Signal &);
+ const std::set<Signal *> &get_signals() const { return signals; }
+ void remove_signal(Signal &);