1 #ifndef LIBMARKLIN_TRAIN_H_
2 #define LIBMARKLIN_TRAIN_H_
4 #include <sigc++/signal.h>
5 #include <sigc++/trackable.h>
14 class Train: public sigc::trackable
22 BlockRef(Block *s, unsigned e): block(s), entry(e) { }
25 TrafficManager &trfc_mgr;
28 std::list<BlockRef> cur_blocks;
29 std::list<BlockRef> rsv_blocks;
30 unsigned target_speed;
33 sigc::signal<void, const std::string &> signal_name_changed;
35 Train(TrafficManager &, Locomotive &);
36 void set_name(const std::string &);
37 void set_speed(unsigned);
38 const std::string &get_name() const { return name; }
39 Locomotive &get_locomotive() const { return loco; }
40 void place(Block *, unsigned);
41 bool free_block(Block *);
44 void sensor_event(bool, Sensor *);
47 typedef std::list<Train *> TrainSeq;
49 } // namespace Marklin