]> git.tdb.fi Git - r2c2.git/blob - source/libr2c2/clock.h
Sync timetable on clock discontinuity
[r2c2.git] / source / libr2c2 / clock.h
1 #ifndef LIBR2C2_CLOCK_H_
2 #define LIBR2C2_CLOCK_H_
3
4 #include <sigc++/signal.h>
5 #include <msp/datafile/objectloader.h>
6 #include <msp/time/timedelta.h>
7
8 namespace R2C2 {
9
10 class Clock
11 {
12 public:
13         class Loader: public Msp::DataFile::ObjectLoader<Clock>
14         {
15         public:
16                 Loader(Clock &);
17
18         private:
19                 void time(Msp::Time::RawTime);
20         };
21
22         sigc::signal<void> signal_minute;
23         sigc::signal<void> signal_discontinuity;
24
25 private:
26         Msp::Time::TimeDelta current_time;
27         float rate;
28         bool stopped;
29
30 public:
31         Clock();
32
33         void set_rate(float);
34         float get_rate() const { return rate; }
35         void set_current_time(const Msp::Time::TimeDelta &);
36         const Msp::Time::TimeDelta &get_current_time() const { return current_time; }
37         void stop(bool);
38         bool is_stopped() const { return stopped; }
39         void tick(const Msp::Time::TimeDelta &);
40         void save(std::list<Msp::DataFile::Statement> &) const;
41 };
42
43 } // namespace R2C2
44
45 #endif