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.