Itasca C++ Interface
Toggle main menu visibility
Loading...
Searching...
No Matches
callback.h
1
#pragma once
2
3
// Note - VS2010 does not support variadic templates :(
4
// MOO NOTE: Do not use these in new codes, between lambdas and std::function
5
// it really doesn't make sense. Remove in old code when you are messing around
6
// with it anyway.
7
8
template
<
class
R>
9
class
Callback0
{
10
public
:
11
virtual
~Callback0
() {}
12
virtual
R execute()=0;
13
};
14
15
template
<
class
R,
class
Arg1>
16
class
Callback1
{
17
public
:
18
virtual
~Callback1
() {}
19
virtual
R execute(Arg1 a)=0;
20
};
21
22
template
<
class
R,
class
Arg1,
class
Arg2>
23
class
Callback2
{
24
public
:
25
virtual
~Callback2
() {}
26
virtual
R execute(Arg1 a,Arg2 b)=0;
27
};
28
29
template
<
class
R,
class
Arg1,
class
Arg2,
class
Arg3>
30
class
Callback3
{
31
public
:
32
virtual
~Callback3
() {}
33
virtual
R execute(Arg1 a,Arg2 b,Arg3 c)=0;
34
};
35
36
template
<
class
R,
class
Arg1,
class
Arg2,
class
Arg3,
class
Arg4>
37
class
Callback4
{
38
public
:
39
virtual
~Callback4
() {}
40
virtual
R execute(Arg1 a,Arg2 b,Arg3 c,Arg4 d)=0;
41
};
42
43
template
<
class
R>
44
class
Callback0Static :
public
Callback0
<R> {
45
public
:
46
typedef
R (*type)();
47
Callback0Static(type t) : t_(t) { }
48
virtual
R execute() {
return
t_(); }
49
private
:
50
type t_;
51
};
52
53
template
<
class
R,
class
Arg1>
54
class
Callback1Static :
public
Callback1
<R,Arg1> {
55
public
:
56
typedef
R (*type)(Arg1 a);
57
Callback1Static(type t) : t_(t) { }
58
virtual
R execute(Arg1 a) {
return
t_(a); }
59
private
:
60
type t_;
61
};
62
63
template
<
class
R,
class
Arg1,
class
Arg2>
64
class
Callback2Static :
public
Callback2
<R,Arg1,Arg2> {
65
public
:
66
typedef
R (*type)(Arg1 a,Arg2 b);
67
Callback2Static(type t) : t_(t) { }
68
virtual
R execute(Arg1 a,Arg2 b) {
return
t_(a,b); }
69
private
:
70
type t_;
71
};
72
73
template
<
class
R,
class
Arg1,
class
Arg2,
class
Arg3>
74
class
Callback3Static :
public
Callback3
<R,Arg1,Arg2,Arg3> {
75
public
:
76
typedef
R (*type)(Arg1 a,Arg2 b,Arg3 c);
77
Callback3Static(type t) : t_(t) { }
78
virtual
R execute(Arg1 a,Arg2 b,Arg3 c) {
return
t_(a,b,c); }
79
private
:
80
type t_;
81
};
82
83
template
<
class
R,
class
Arg1,
class
Arg2,
class
Arg3,
class
Arg4>
84
class
Callback4Static :
public
Callback4
<R,Arg1,Arg2,Arg3,Arg4> {
85
public
:
86
typedef
R (*type)(Arg1 a,Arg2 b,Arg3 c,Arg4 d);
87
Callback4Static(type t) : t_(t) { }
88
R execute(Arg1 a,Arg2 b,Arg3 c,Arg4 d)
override
{
return
t_(a,b,c,d); }
89
private
:
90
type t_;
91
};
92
93
template
<
class
R,
class
S,R (S::*MFP)()>
94
class
Callback0Method :
public
Callback0
<R> {
95
public
:
96
Callback0Method(S *s) : s_(s) { }
97
virtual
R execute() {
return
(s_->*MFP)(); }
98
private
:
99
S *s_;
100
};
101
102
template
<
class
R,
class
Arg1,
class
S,R (S::*MFP)(Arg1)>
103
class
Callback1Method :
public
Callback1
<R,Arg1> {
104
public
:
105
Callback1Method(S *s) : s_(s) { }
106
virtual
R execute(Arg1 a) {
return
(s_->*MFP)(a); }
107
private
:
108
S *s_;
109
};
110
111
template
<
class
R,
class
Arg1,
class
Arg2,
class
S,R (S::*MFP)(Arg1,Arg2)>
112
class
Callback2Method :
public
Callback2
<R,Arg1,Arg2> {
113
public
:
114
Callback2Method(S *s) : s_(s) { }
115
virtual
R execute(Arg1 a,Arg2 b) {
return
(s_->*MFP)(a,b); }
116
private
:
117
S *s_;
118
};
119
120
template
<
class
R,
class
Arg1,
class
Arg2,
class
Arg3,
class
S,R (S::*MFP)(Arg1,Arg2,Arg3)>
121
class
Callback3Method :
public
Callback3
<R,Arg1,Arg2,Arg3> {
122
public
:
123
Callback3Method(S *s) : s_(s) { }
124
R execute(Arg1 a,Arg2 b,Arg3 c)
override
{
return
(s_->*MFP)(a,b,c); }
125
private
:
126
S *s_;
127
};
128
129
template
<
class
R,
class
Arg1,
class
Arg2,
class
Arg3,
class
Arg4,
class
S,R (S::*MFP)(Arg1,Arg2,Arg3,Arg4)>
130
class
Callback4Method :
public
Callback4
<R,Arg1,Arg2,Arg3,Arg4> {
131
public
:
132
Callback4Method(S *s) : s_(s) { }
133
R execute(Arg1 a,Arg2 b,Arg3 c,Arg4 d)
override
{
return
(s_->*MFP)(a,b,c,d); }
134
private
:
135
S *s_;
136
};
137
138
// EoF
Callback0
Definition
callback.h:9
Callback1
Definition
callback.h:16
Callback2
Definition
callback.h:23
Callback3
Definition
callback.h:30
Callback4
Definition
callback.h:37
common
base
src
callback.h
Generated by
1.18.0