File: CBTimer.h

package info (click to toggle)
capi4hylafax 1%3A01.02.03-10sarge2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,856 kB
  • ctags: 2,966
  • sloc: cpp: 20,126; sh: 7,703; makefile: 215; perl: 36
file content (103 lines) | stat: -rw-r--r-- 3,219 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*---------------------------------------------------------------------------*\

    Copyright (C) 2000 AVM GmbH. All rights reserved.

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY, without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, and WITHOUT
    ANY LIABILITY FOR ANY DAMAGES arising out of or in connection
    with the use or performance of this software. See the
    GNU General Public License for further details.

\*---------------------------------------------------------------------------*/

#ifndef _CBTIMER_H_
#define _CBTIMER_H_

#include "aTypes.h"
#include "aString.h"
#include "Protect.h"

/*===========================================================================*\
    Definitons for CallBack-Functions
\*===========================================================================*/

typedef void (*tCallBackTimerFunc) (void *, void *);

typedef class CBasicTimerSupport *(*tBasicTimerInitFunc) (void);


/*===========================================================================*\
    A Basic Timer class for internal use only
\*===========================================================================*/

class CBasicTimerSupport {
public:
    CBasicTimerSupport (void);
    virtual ~CBasicTimerSupport (void) {}

    void SetHandles (void *handle1, void *handle2);
    void SetCallBack (tCallBackTimerFunc func);
    void DoCallBack (void);

    static tBool Create (tHandle *pTimer, tBasicTimerInitFunc func);
    static void Destroy (tHandle *pTimer);

private:
    tCallBackTimerFunc  m_func;
#ifdef USE_TIMER_POOL
    CBasicTimerSupport *m_next;
#endif
    void               *m_handle1;
    void               *m_handle2;
};


/*===========================================================================*\
    Timer Pool
\*===========================================================================*/
#ifdef USE_TIMER_POOL

tUInt BasicTimerPool_Alloc (tUInt count, tBasicTimerInitFunc func);

void BasicTimerPool_Free (tUInt count);


#endif // USE_TIMER_POOL
/*===========================================================================*\
    CBasicTimerSupport - inline functions
\*===========================================================================*/

inline CBasicTimerSupport::CBasicTimerSupport (void)
  : m_func (0),
#ifdef USE_TIMER_POOL
    m_next (0),
#endif
    m_handle1 (0),
    m_handle2 (0) {
}

inline void CBasicTimerSupport::SetHandles (void *handle1, void *handle2) {
    m_handle1 = handle1;
    m_handle2 = handle2;
}

inline void CBasicTimerSupport::SetCallBack (tCallBackTimerFunc func) {
    m_func = func;
}

inline void CBasicTimerSupport::DoCallBack (void) {
    // dassert (m_func != 0);
    m_func (m_handle1, m_handle2);
}


/*===========================================================================*\
\*===========================================================================*/

#endif