54 template <
typename MEM,
typename OBJ>
55 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj);
67 template <
typename MEM,
typename OBJ,
69 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1);
83 template <
typename MEM,
typename OBJ,
84 typename T1,
typename T2>
85 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
101 template <
typename MEM,
typename OBJ,
102 typename T1,
typename T2,
typename T3>
103 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
121 template <
typename MEM,
typename OBJ,
122 typename T1,
typename T2,
typename T3,
typename T4>
123 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4);
143 template <
typename MEM,
typename OBJ,
144 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
145 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj,
146 T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
168 template <
typename MEM,
typename OBJ,
169 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
170 EventImpl *
MakeEvent (MEM mem_ptr, OBJ obj,
171 T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6);
201 template <
typename U1,
216 template <
typename U1,
typename U2,
217 typename T1,
typename T2>
218 EventImpl *
MakeEvent (
void (*
f)(U1,U2), T1 a1, T2 a2);
234 template <
typename U1,
typename U2,
typename U3,
235 typename T1,
typename T2,
typename T3>
236 EventImpl *
MakeEvent (
void (*
f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
255 template <
typename U1,
typename U2,
typename U3,
typename U4,
256 typename T1,
typename T2,
typename T3,
typename T4>
257 EventImpl *
MakeEvent (
void (*
f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
279 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
280 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
281 EventImpl *
MakeEvent (
void (*
f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
306 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
typename U6,
307 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
308 EventImpl *
MakeEvent (
void (*
f)(U1,U2,U3,U4,U5,U6), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6);
332 template <
typename T>
345 template <
typename T>
358 template <
typename MEM,
typename OBJ>
362 class EventMemberImpl0 :
public EventImpl 365 EventMemberImpl0 (OBJ obj, MEM
function)
367 m_function (
function)
370 virtual ~EventMemberImpl0 ()
374 virtual void Notify (
void)
380 } *ev =
new EventMemberImpl0 (obj, mem_ptr);
385 template <
typename MEM,
typename OBJ,
390 class EventMemberImpl1 :
public EventImpl 393 EventMemberImpl1 (OBJ obj, MEM
function, T1 a1)
395 m_function (
function),
400 virtual ~EventMemberImpl1 ()
404 virtual void Notify (
void)
411 } *ev =
new EventMemberImpl1 (obj, mem_ptr, a1);
415 template <
typename MEM,
typename OBJ,
416 typename T1,
typename T2>
420 class EventMemberImpl2 :
public EventImpl 423 EventMemberImpl2 (OBJ obj, MEM
function, T1 a1, T2 a2)
425 m_function (
function),
431 virtual ~EventMemberImpl2 ()
435 virtual void Notify (
void)
443 } *ev =
new EventMemberImpl2 (obj, mem_ptr, a1, a2);
447 template <
typename MEM,
typename OBJ,
448 typename T1,
typename T2,
typename T3>
452 class EventMemberImpl3 :
public EventImpl 455 EventMemberImpl3 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3)
457 m_function (
function),
464 virtual ~EventMemberImpl3 ()
468 virtual void Notify (
void)
477 } *ev =
new EventMemberImpl3 (obj, mem_ptr, a1, a2, a3);
481 template <
typename MEM,
typename OBJ,
482 typename T1,
typename T2,
typename T3,
typename T4>
486 class EventMemberImpl4 :
public EventImpl 489 EventMemberImpl4 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3, T4 a4)
491 m_function (
function),
499 virtual ~EventMemberImpl4 ()
503 virtual void Notify (
void)
513 } *ev =
new EventMemberImpl4 (obj, mem_ptr, a1, a2, a3, a4);
517 template <
typename MEM,
typename OBJ,
518 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
520 T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
523 class EventMemberImpl5 :
public EventImpl 526 EventMemberImpl5 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
528 m_function (
function),
537 virtual ~EventMemberImpl5 ()
541 virtual void Notify (
void)
552 } *ev =
new EventMemberImpl5 (obj, mem_ptr, a1, a2, a3, a4, a5);
556 template <
typename MEM,
typename OBJ,
557 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
559 T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)
562 class EventMemberImpl6 :
public EventImpl 565 EventMemberImpl6 (OBJ obj, MEM
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)
567 m_function (
function),
577 virtual ~EventMemberImpl6 ()
581 virtual void Notify (
void)
593 } *ev =
new EventMemberImpl6 (obj, mem_ptr, a1, a2, a3, a4, a5, a6);
597 template <
typename U1,
typename T1>
601 class EventFunctionImpl1 :
public EventImpl 604 typedef void (*F)(U1);
606 EventFunctionImpl1 (F
function, T1 a1)
607 : m_function (
function),
612 virtual ~EventFunctionImpl1 ()
616 virtual void Notify (
void)
622 } *ev =
new EventFunctionImpl1 (
f, a1);
626 template <
typename U1,
typename U2,
typename T1,
typename T2>
630 class EventFunctionImpl2 :
public EventImpl 633 typedef void (*F)(U1, U2);
635 EventFunctionImpl2 (F
function, T1 a1, T2 a2)
636 : m_function (
function),
642 virtual ~EventFunctionImpl2 ()
646 virtual void Notify (
void)
648 (*m_function)(m_a1, m_a2);
653 } *ev =
new EventFunctionImpl2 (
f, a1, a2);
657 template <
typename U1,
typename U2,
typename U3,
658 typename T1,
typename T2,
typename T3>
662 class EventFunctionImpl3 :
public EventImpl 665 typedef void (*F)(U1, U2, U3);
667 EventFunctionImpl3 (F
function, T1 a1, T2 a2, T3 a3)
668 : m_function (
function),
675 virtual ~EventFunctionImpl3 ()
679 virtual void Notify (
void)
681 (*m_function)(m_a1, m_a2, m_a3);
687 } *ev =
new EventFunctionImpl3 (
f, a1, a2, a3);
691 template <
typename U1,
typename U2,
typename U3,
typename U4,
692 typename T1,
typename T2,
typename T3,
typename T4>
696 class EventFunctionImpl4 :
public EventImpl 699 typedef void (*F)(U1, U2, U3, U4);
701 EventFunctionImpl4 (F
function, T1 a1, T2 a2, T3 a3, T4 a4)
702 : m_function (
function),
710 virtual ~EventFunctionImpl4 ()
714 virtual void Notify (
void)
716 (*m_function)(m_a1, m_a2, m_a3, m_a4);
723 } *ev =
new EventFunctionImpl4 (
f, a1, a2, a3, a4);
727 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
728 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
732 class EventFunctionImpl5 :
public EventImpl 735 typedef void (*F)(U1,U2,U3,U4,U5);
737 EventFunctionImpl5 (F
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
738 : m_function (
function),
747 virtual ~EventFunctionImpl5 ()
751 virtual void Notify (
void)
753 (*m_function)(m_a1, m_a2, m_a3, m_a4, m_a5);
761 } *ev =
new EventFunctionImpl5 (
f, a1, a2, a3, a4, a5);
765 template <
typename U1,
typename U2,
typename U3,
typename U4,
typename U5,
typename U6,
766 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
767 EventImpl *
MakeEvent (
void (*
f)(U1,U2,U3,U4,U5,U6), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)
770 class EventFunctionImpl6 :
public EventImpl 773 typedef void (*F)(U1,U2,U3,U4,U5,U6);
775 EventFunctionImpl6 (F
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)
776 : m_function (
function),
786 virtual ~EventFunctionImpl6 ()
790 virtual void Notify (
void)
792 (*m_function)(m_a1, m_a2, m_a3, m_a4, m_a5, m_a6);
801 } *ev =
new EventFunctionImpl6 (
f, a1, a2, a3, a4, a5, a6);
ns3::EventImpl declarations.
Helper for the MakeEvent functions which take a class method.
ReferenceTraits< T >::ReferencedType ReferencedType
Referenced type.
static T & GetReference(T *p)
double f(double x, void *params)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Inspect a type to deduce its features.
ns3::TypeTraits introspection declaration and template implementation.
EventImpl * MakeEvent(void(*f)(void))
Make an EventImpl from a function pointer taking varying numbers of arguments.