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);
 
  175 template <
typename U1,
 
  177 EventImpl * 
MakeEvent (
void (*f)(U1), T1 a1);
 
  190 template <
typename U1, 
typename U2,
 
  191           typename T1, 
typename T2>
 
  192 EventImpl * 
MakeEvent (
void (*f)(U1,U2), T1 a1, T2 a2);
 
  208 template <
typename U1, 
typename U2, 
typename U3,
 
  209           typename T1, 
typename T2, 
typename T3>
 
  210 EventImpl * 
MakeEvent (
void (*f)(U1,U2,U3), T1 a1, T2 a2, T3 a3);
 
  229 template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
  230           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  231 EventImpl * 
MakeEvent (
void (*f)(U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
 
  253 template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  254           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  255 EventImpl * 
MakeEvent (
void (*f)(U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
 
  279 template <
typename T>
 
  292 template <
typename T>
 
  305 template <
typename MEM, 
typename OBJ>
 
  309   class EventMemberImpl0 : 
public EventImpl 
  312     EventMemberImpl0 (OBJ obj, MEM 
function)
 
  314         m_function (
function)
 
  317     virtual ~EventMemberImpl0 ()
 
  321     virtual void Notify (
void)
 
  327   } *ev = 
new EventMemberImpl0 (obj, mem_ptr);
 
  332 template <
typename MEM, 
typename OBJ,
 
  337   class EventMemberImpl1 : 
public EventImpl 
  340     EventMemberImpl1 (OBJ obj, MEM 
function, T1 a1)
 
  342         m_function (
function),
 
  347     virtual ~EventMemberImpl1 ()
 
  351     virtual void Notify (
void)
 
  358   } *ev = 
new EventMemberImpl1 (obj, mem_ptr, a1);
 
  362 template <
typename MEM, 
typename OBJ,
 
  363           typename T1, 
typename T2>
 
  367   class EventMemberImpl2 : 
public EventImpl 
  370     EventMemberImpl2 (OBJ obj, MEM 
function, T1 a1, T2 a2)
 
  372         m_function (
function),
 
  378     virtual ~EventMemberImpl2 ()
 
  382     virtual void Notify (
void)
 
  390   } *ev = 
new EventMemberImpl2 (obj, mem_ptr, a1, a2);
 
  394 template <
typename MEM, 
typename OBJ,
 
  395           typename T1, 
typename T2, 
typename T3>
 
  399   class EventMemberImpl3 : 
public EventImpl 
  402     EventMemberImpl3 (OBJ obj, MEM 
function, T1 a1, T2 a2, T3 a3)
 
  404         m_function (
function),
 
  411     virtual ~EventMemberImpl3 ()
 
  415     virtual void Notify (
void)
 
  424   } *ev = 
new EventMemberImpl3 (obj, mem_ptr, a1, a2, a3);
 
  428 template <
typename MEM, 
typename OBJ,
 
  429           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  433   class EventMemberImpl4 : 
public EventImpl 
  436     EventMemberImpl4 (OBJ obj, MEM 
function, T1 a1, T2 a2, T3 a3, T4 a4)
 
  438         m_function (
function),
 
  446     virtual ~EventMemberImpl4 ()
 
  450     virtual void Notify (
void)
 
  460   } *ev = 
new EventMemberImpl4 (obj, mem_ptr, a1, a2, a3, a4);
 
  464 template <
typename MEM, 
typename OBJ,
 
  465           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  467                        T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
  470   class EventMemberImpl5 : 
public EventImpl 
  473     EventMemberImpl5 (OBJ obj, MEM 
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
  475         m_function (
function),
 
  484     virtual ~EventMemberImpl5 ()
 
  488     virtual void Notify (
void)
 
  499   } *ev = 
new EventMemberImpl5 (obj, mem_ptr, a1, a2, a3, a4, a5);
 
  503 template <
typename U1, 
typename T1>
 
  507   class EventFunctionImpl1 : 
public EventImpl 
  510     typedef void (*F)(U1);
 
  512     EventFunctionImpl1 (F 
function, T1 a1)
 
  513       : m_function (
function),
 
  518     virtual ~EventFunctionImpl1 ()
 
  522     virtual void Notify (
void)
 
  528   } *ev = 
new EventFunctionImpl1 (f, a1);
 
  532 template <
typename U1, 
typename U2, 
typename T1, 
typename T2>
 
  536   class EventFunctionImpl2 : 
public EventImpl 
  539     typedef void (*F)(U1, U2);
 
  541     EventFunctionImpl2 (F 
function, T1 a1, T2 a2)
 
  542       : m_function (
function),
 
  548     virtual ~EventFunctionImpl2 ()
 
  552     virtual void Notify (
void)
 
  554       (*m_function)(m_a1, m_a2);
 
  559   } *ev = 
new EventFunctionImpl2 (f, a1, a2);
 
  563 template <
typename U1, 
typename U2, 
typename U3,
 
  564           typename T1, 
typename T2, 
typename T3>
 
  568   class EventFunctionImpl3 : 
public EventImpl 
  571     typedef void (*F)(U1, U2, U3);
 
  573     EventFunctionImpl3 (F 
function, T1 a1, T2 a2, T3 a3)
 
  574       : m_function (
function),
 
  581     virtual ~EventFunctionImpl3 ()
 
  585     virtual void Notify (
void)
 
  587       (*m_function)(m_a1, m_a2, m_a3);
 
  593   } *ev = 
new EventFunctionImpl3 (f, a1, a2, a3);
 
  597 template <
typename U1, 
typename U2, 
typename U3, 
typename U4,
 
  598           typename T1, 
typename T2, 
typename T3, 
typename T4>
 
  602   class EventFunctionImpl4 : 
public EventImpl 
  605     typedef void (*F)(U1, U2, U3, U4);
 
  607     EventFunctionImpl4 (F 
function, T1 a1, T2 a2, T3 a3, T4 a4)
 
  608       : m_function (
function),
 
  616     virtual ~EventFunctionImpl4 ()
 
  620     virtual void Notify (
void)
 
  622       (*m_function)(m_a1, m_a2, m_a3, m_a4);
 
  629   } *ev = 
new EventFunctionImpl4 (f, a1, a2, a3, a4);
 
  633 template <
typename U1, 
typename U2, 
typename U3, 
typename U4, 
typename U5,
 
  634           typename T1, 
typename T2, 
typename T3, 
typename T4, 
typename T5>
 
  638   class EventFunctionImpl5 : 
public EventImpl 
  641     typedef void (*F)(U1,U2,U3,U4,U5);
 
  643     EventFunctionImpl5 (F 
function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
  644       : m_function (
function),
 
  653     virtual ~EventFunctionImpl5 ()
 
  657     virtual void Notify (
void)
 
  659       (*m_function)(m_a1, m_a2, m_a3, m_a4, m_a5);
 
  667   } *ev = 
new EventFunctionImpl5 (f, a1, a2, a3, a4, a5);
 
ns3::EventImpl declarations. 
 
Helper for the MakeEvent functions which take a class method. 
 
static T & GetReference(T *p)
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
Inspect a type to deduce its features. 
 
TypeTraits introspection template. 
 
EventImpl * MakeEvent(void(*f)(void))
Make an EventImpl from a function pointer taking varying numbers of arguments.