OSDN Git Service

initial files
[iptd/iPTd_R3.git] / src / Raym / Timer.h
1 //
2 //
3 //
4
5 #pragma once
6
7 #include <Raym/Object.h>
8
9 namespace Raym
10 {
11
12 class Timer;
13
14 class TimerDelegate
15 {
16 public:
17     virtual void timerExpired(Timer *timer, void *userInfo) = 0;
18 };
19
20 class Timer : public Object
21 {
22 private:
23     TimeInterval      _interval;
24     TimerDelegate *   _delegate;
25     void *              _userInfo;
26     bool                _repeats;
27     enum _state
28     {
29         ST_IDLE,
30         ST_READY,
31         ST_RUN,
32         ST_DONE
33     }                   _state;
34
35     bool start();
36
37 protected:
38     Timer();
39     ~Timer();
40
41
42 public:
43     static Timer *scheduledTimerWithTimeInterval(TimeInterval interval, TimerDelegate *delegate, void *userInfo, bool repeats);
44     static Timer *alloc();
45
46     Timer *initWithTimeInterval(TimeInterval interval, TimerDelegate *delegate, void *userInfo, bool repeats);
47     void fire();
48
49     void invalidate();
50
51     void run();
52
53     void setRepeats(bool repeats);
54     void setTimeInterval(TimeInterval interval);
55     void setUserInfo(void *userInfo);
56     bool valid();
57
58     virtual const char *className();
59 };
60
61 } // Raym
62