Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cTimer.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cTimer_H
7 #define _INC_cTimer_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
17 
18 namespace GrayLib
19 {
21  class cTimerGroup;
22 
24  {
29 
30  friend class cTimerGroup;
31  private:
32  cTimerGroup* m_pTimerGroup;
33  cTimeSys m_tCallNext;
34  protected:
35  virtual void OnTimer();
36  public:
37  cTimerInst(cTimerGroup* pTimerGroup = nullptr, TIMESYS_t tCallNext = cTimeSys::k_CLEAR);
38  virtual ~cTimerInst();
39 
40  TIMESYS_t get_SortValue() const noexcept
41  {
42  return m_tCallNext.get_TimeSys();
43  }
44 
45  bool SetTimer(TIMESYS_t tCallNext);
46  void KillTimer();
47  };
49 
50  typedef void (GRAYCALL* TIMER_FUNC_t)(cTimerInst* pTimer, UINT_PTR nUserArg); // like FARPROC
51 
53  {
57  private:
58  TIMER_FUNC_t m_pFunc;
59  UINT_PTR m_nUserArg;
60 
61  protected:
62  virtual void OnTimer() override
63  {
65  m_pFunc(this, m_nUserArg);
66  }
67 
68  public:
69  cTimerFunc(TIMER_FUNC_t pFunc, UINT_PTR nUserArg, cTimerGroup* pTimerGroup = nullptr, TIMESYS_t tCallNext = cTimeSys::k_CLEAR)
70  : cTimerInst(pTimerGroup, tCallNext)
71  , m_pFunc(pFunc)
72  , m_nUserArg(nUserArg)
73  {
74  }
75  };
77 
79  {
83  friend class cTimerInst;
84 
85  private:
88 
89  public:
90  cTimerGroup(void);
91  ~cTimerGroup(void);
92 
94  {
95  return m_aTimersHash.GetSize();
96  }
97 
98  void DeleteTimerInst(cTimerInst* pTimer);
99  void AddTimerInst(cTimerInst* pTimer);
100  cTimerFuncPtr AddTimerFunc(TIMER_FUNC_t pFunc, UINT_PTR nUserArg, TIMESYS_t tCallNext = cTimeSys::k_CLEAR);
101 
102  TIMESYSD_t get_TimeTilNext() const;
103  void TickTimers();
104 
105  UNITTEST_FRIEND(cTimer );
106  };
107 };
108 #endif // _INC_cTimer_H
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
Definition: cTimer.h:53
virtual void OnTimer() override
Definition: cTimer.h:62
cTimerFunc(TIMER_FUNC_t pFunc, UINT_PTR nUserArg, cTimerGroup *pTimerGroup=nullptr, TIMESYS_t tCallNext=cTimeSys::k_CLEAR)
Definition: cTimer.h:69
Definition: cTimer.h:79
ITERATE_t get_TimerQty() const
Definition: cTimer.h:93
Definition: cTimer.h:24
TIMESYS_t get_SortValue() const noexcept
Definition: cTimer.h:40
ITERATE_t GetSize() const noexcept
Definition: cArray.h:137
Definition: cArraySortRef.h:60
Definition: cArraySortRef.h:113
Definition: cRefPtr.h:22
Definition: cRefPtr.h:225
Definition: cTimeSys.h:93
static const TIMESYS_t k_CLEAR
Definition: cTimeSys.h:99
TIMESYS_t get_TimeSys() const noexcept
Definition: cTimeSys.h:147
Definition: cMesh.h:22
void(GRAYCALL * TIMER_FUNC_t)(cTimerInst *pTimer, UINT_PTR nUserArg)
Definition: cTimer.h:50
UNITTEST2_PREDEF(cQuadtree)
cRefPtr< cTimerInst > cTimerInstPtr
Definition: cTimer.h:48
cRefPtr< cTimerFunc > cTimerFuncPtr
Definition: cTimer.h:76
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
int ITERATE_t
like size_t but signed
Definition: Index.h:28
UINT32 TIMESYS_t
TIMESYS_t = The normal system tick timer. milli-seconds since start of system/app ?
Definition: cTimeSys.h:27