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.