8 template <
typename MEM,
typename OBJ>
9 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj);
11 template <
typename MEM,
typename OBJ,
13 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1);
15 template <
typename MEM,
typename OBJ,
16 typename T1,
typename T2>
17 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
19 template <
typename MEM,
typename OBJ,
20 typename T1,
typename T2,
typename T3>
21 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
23 template <
typename MEM,
typename OBJ,
24 typename T1,
typename T2,
typename T3,
typename T4>
25 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4);
27 template <
typename MEM,
typename OBJ,
28 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
29 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj,
30 T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
33 template <
typename U1,
35 EventImpl *
MakeEvent (
void (*f)(U1), T1 a1);
37 template <
typename U1,
typename U2,
38 typename T1,
typename T2>
39 EventImpl *
MakeEvent (
void (*f)(U1,U2), T1 a1, T2 a2);
41 template <
typename U1,
typename U2,
typename U3,
42 typename T1,
typename T2,
typename T3>
43 EventImpl *
MakeEvent (
void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
45 template <
typename U1,
typename U2,
typename U3,
typename U4,
46 typename T1,
typename T2,
typename T3,
typename T4>
47 EventImpl *
MakeEvent (
void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
49 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
50 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
51 EventImpl *
MakeEvent (
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
76 template <
typename MEM,
typename OBJ>
83 EventMemberImpl0 (OBJ obj, MEM
function)
88 virtual ~EventMemberImpl0 ()
92 virtual void Notify (
void)
98 } *ev =
new EventMemberImpl0 (obj, mem_ptr);
103 template <
typename MEM,
typename OBJ,
108 class EventMemberImpl1 :
public EventImpl
111 EventMemberImpl1 (OBJ obj, MEM
function, T1 a1)
113 m_function (
function),
118 virtual ~EventMemberImpl1 ()
122 virtual void Notify (
void)
129 } *ev =
new EventMemberImpl1 (obj, mem_ptr, a1);
133 template <
typename MEM,
typename OBJ,
134 typename T1,
typename T2>
138 class EventMemberImpl2 :
public EventImpl
141 EventMemberImpl2 (OBJ obj, MEM
function, T1 a1, T2 a2)
143 m_function (
function),
149 virtual ~EventMemberImpl2 ()
153 virtual void Notify (
void)
161 } *ev =
new EventMemberImpl2 (obj, mem_ptr, a1, a2);
165 template <
typename MEM,
typename OBJ,
166 typename T1,
typename T2,
typename T3>
170 class EventMemberImpl3 :
public EventImpl
173 EventMemberImpl3 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3)
175 m_function (
function),
182 virtual ~EventMemberImpl3 ()
186 virtual void Notify (
void)
195 } *ev =
new EventMemberImpl3 (obj, mem_ptr, a1, a2, a3);
199 template <
typename MEM,
typename OBJ,
200 typename T1,
typename T2,
typename T3,
typename T4>
204 class EventMemberImpl4 :
public EventImpl
207 EventMemberImpl4 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3, T4 a4)
209 m_function (
function),
217 virtual ~EventMemberImpl4 ()
221 virtual void Notify (
void)
231 } *ev =
new EventMemberImpl4 (obj, mem_ptr, a1, a2, a3, a4);
235 template <
typename MEM,
typename OBJ,
236 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
238 T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
241 class EventMemberImpl5 :
public EventImpl
244 EventMemberImpl5 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
246 m_function (
function),
255 virtual ~EventMemberImpl5 ()
259 virtual void Notify (
void)
270 } *ev =
new EventMemberImpl5 (obj, mem_ptr, a1, a2, a3, a4, a5);
274 template <
typename U1,
typename T1>
278 class EventFunctionImpl1 :
public EventImpl
281 typedef void (*F)(U1);
283 EventFunctionImpl1 (F
function, T1 a1)
284 : m_function (
function),
289 virtual ~EventFunctionImpl1 ()
293 virtual void Notify (
void)
299 } *ev =
new EventFunctionImpl1 (f, a1);
303 template <
typename U1,
typename U2,
typename T1,
typename T2>
307 class EventFunctionImpl2 :
public EventImpl
310 typedef void (*F)(U1, U2);
312 EventFunctionImpl2 (F
function, T1 a1, T2 a2)
313 : m_function (
function),
319 virtual ~EventFunctionImpl2 ()
323 virtual void Notify (
void)
325 (*m_function)(m_a1, m_a2);
330 } *ev =
new EventFunctionImpl2 (f, a1, a2);
334 template <
typename U1,
typename U2,
typename U3,
335 typename T1,
typename T2,
typename T3>
339 class EventFunctionImpl3 :
public EventImpl
342 typedef void (*F)(U1, U2, U3);
344 EventFunctionImpl3 (F
function, T1 a1, T2 a2, T3 a3)
345 : m_function (
function),
352 virtual ~EventFunctionImpl3 ()
356 virtual void Notify (
void)
358 (*m_function)(m_a1, m_a2, m_a3);
364 } *ev =
new EventFunctionImpl3 (f, a1, a2, a3);
368 template <
typename U1,
typename U2,
typename U3,
typename U4,
369 typename T1,
typename T2,
typename T3,
typename T4>
373 class EventFunctionImpl4 :
public EventImpl
376 typedef void (*F)(U1, U2, U3, U4);
378 EventFunctionImpl4 (F
function, T1 a1, T2 a2, T3 a3, T4 a4)
379 : m_function (
function),
387 virtual ~EventFunctionImpl4 ()
391 virtual void Notify (
void)
393 (*m_function)(m_a1, m_a2, m_a3, m_a4);
400 } *ev =
new EventFunctionImpl4 (f, a1, a2, a3, a4);
404 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
405 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
409 class EventFunctionImpl5 :
public EventImpl
412 typedef void (*F)(U1,U2,U3,U4,U5);
414 EventFunctionImpl5 (F
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
415 : m_function (
function),
424 virtual ~EventFunctionImpl5 ()
428 virtual void Notify (
void)
430 (*m_function)(m_a1, m_a2, m_a3, m_a4, m_a5);
438 } *ev =
new EventFunctionImpl5 (f, a1, a2, a3, a4, a5);
static T & GetReference(T *p)
ReferenceTraits< T >::ReferencedType ReferencedType
Referenced type.
EventImpl * MakeEvent(void(*f)(void))