124 virtual std::string
GetTypeid (
void)
const = 0;
131 static std::string
Demangle (
const std::string& mangled);
138 template <
typename T>
141 std::string typeName;
144 typeName =
typeid (T).name ();
147 catch (
const std::bad_typeid &e)
149 typeName = e.what ();
162 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
172 template <
typename R>
186 static std::string
id =
"CallbackImpl<" +
193 template <
typename R,
typename T1>
207 static std::string
id =
"CallbackImpl<" +
208 GetCppTypeid<R> () +
"," +
209 GetCppTypeid<T1> () +
215 template <
typename R,
typename T1,
typename T2>
229 static std::string
id =
"CallbackImpl<" +
230 GetCppTypeid<R> () +
"," +
231 GetCppTypeid<T1> () +
"," +
232 GetCppTypeid<T2> () +
238 template <
typename R,
typename T1,
typename T2,
typename T3>
252 static std::string
id =
"CallbackImpl<" +
253 GetCppTypeid<R> () +
"," +
254 GetCppTypeid<T1> () +
"," +
255 GetCppTypeid<T2> () +
"," +
256 GetCppTypeid<T3> () +
262 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
276 static std::string
id =
"CallbackImpl<" +
277 GetCppTypeid<R> () +
"," +
278 GetCppTypeid<T1> () +
"," +
279 GetCppTypeid<T2> () +
"," +
280 GetCppTypeid<T3> () +
"," +
281 GetCppTypeid<T4> () +
287 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
293 virtual R
operator() (T1, T2, T3, T4, T5) = 0;
301 static std::string
id =
"CallbackImpl<" +
302 GetCppTypeid<R> () +
"," +
303 GetCppTypeid<T1> () +
"," +
304 GetCppTypeid<T2> () +
"," +
305 GetCppTypeid<T3> () +
"," +
306 GetCppTypeid<T4> () +
"," +
307 GetCppTypeid<T5> () +
313 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
319 virtual R
operator() (T1, T2, T3, T4, T5, T6) = 0;
327 static std::string
id =
"CallbackImpl<" +
328 GetCppTypeid<R> () +
"," +
329 GetCppTypeid<T1> () +
"," +
330 GetCppTypeid<T2> () +
"," +
331 GetCppTypeid<T3> () +
"," +
332 GetCppTypeid<T4> () +
"," +
333 GetCppTypeid<T5> () +
"," +
334 GetCppTypeid<T6> () +
340 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
346 virtual R
operator() (T1, T2, T3, T4, T5, T6, T7) = 0;
354 static std::string
id =
"CallbackImpl<" +
355 GetCppTypeid<R> () +
"," +
356 GetCppTypeid<T1> () +
"," +
357 GetCppTypeid<T2> () +
"," +
358 GetCppTypeid<T3> () +
"," +
359 GetCppTypeid<T4> () +
"," +
360 GetCppTypeid<T5> () +
"," +
361 GetCppTypeid<T6> () +
"," +
362 GetCppTypeid<T7> () +
368 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
374 virtual R
operator() (T1, T2, T3, T4, T5, T6, T7, T8) = 0;
382 static std::string
id =
"CallbackImpl<" +
383 GetCppTypeid<R> () +
"," +
384 GetCppTypeid<T1> () +
"," +
385 GetCppTypeid<T2> () +
"," +
386 GetCppTypeid<T3> () +
"," +
387 GetCppTypeid<T4> () +
"," +
388 GetCppTypeid<T5> () +
"," +
389 GetCppTypeid<T6> () +
"," +
390 GetCppTypeid<T7> () +
"," +
391 GetCppTypeid<T8> () +
397 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
398 class CallbackImpl :
public CallbackImplBase
403 virtual R
operator() (T1, T2, T3, T4, T5, T6, T7, T8, T9) = 0;
411 static std::string
id =
"CallbackImpl<" +
412 GetCppTypeid<R> () +
"," +
413 GetCppTypeid<T1> () +
"," +
414 GetCppTypeid<T2> () +
"," +
415 GetCppTypeid<T3> () +
"," +
416 GetCppTypeid<T4> () +
"," +
417 GetCppTypeid<T5> () +
"," +
418 GetCppTypeid<T6> () +
"," +
419 GetCppTypeid<T7> () +
"," +
420 GetCppTypeid<T8> () +
"," +
421 GetCppTypeid<T9> () +
434 template <
typename T,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
545 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
547 return m_functor (a1,a2,a3,a4,a5,a6,a7,a8);
561 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9)
563 return m_functor (a1,a2,a3,a4,a5,a6,a7,a8,a9);
574 FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *otherDerived =
575 dynamic_cast<FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *
> (
PeekPointer (other));
576 if (otherDerived == 0)
597 template <
typename OBJ_PTR,
typename MEM_PTR,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
709 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
725 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, T9 a9)
738 MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *otherDerived =
739 dynamic_cast<MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *
> (
PeekPointer (other));
740 if (otherDerived == 0)
763 template <
typename T,
typename R,
typename TX,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
776 template <
typename FUNCTOR,
typename ARG>
879 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
892 BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5,T6,T7,T8> const *otherDerived =
893 dynamic_cast<BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5,T6,T7,T8> const *
> (
PeekPointer (other));
894 if (otherDerived == 0)
899 || otherDerived->
m_a !=
m_a)
918 template <
typename T,
typename R,
typename TX1,
typename TX2,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
934 template <
typename FUNCTOR,
typename ARG1,
typename ARG2>
1035 TwoBoundFunctorCallbackImpl<T,R,TX1,TX2,T1,T2,T3,T4,T5,T6,T7> const *otherDerived =
1036 dynamic_cast<TwoBoundFunctorCallbackImpl<T,R,TX1,TX2,T1,T2,T3,T4,T5,T6,T7> const *
> (
PeekPointer (other));
1037 if (otherDerived == 0)
1063 template <
typename T,
typename R,
typename TX1,
typename TX2,
typename TX3,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1082 template <
typename FUNCTOR,
typename ARG1,
typename ARG2,
typename ARG3>
1169 ThreeBoundFunctorCallbackImpl<T,R,TX1,TX2,TX3,T1,T2,T3,T4,T5,T6> const *otherDerived =
1170 dynamic_cast<ThreeBoundFunctorCallbackImpl<T,R,TX1,TX2,TX3,T1,T2,T3,T4,T5,T6> const *
> (
PeekPointer (other));
1171 if (otherDerived == 0)
1272 template<
typename R,
1277 typename T9 =
empty>
1294 template <
typename FUNCTOR>
1296 :
CallbackBase (
Create<
FunctorCallbackImpl<FUNCTOR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > (functor))
1307 template <
typename OBJ_PTR,
typename MEM_PTR>
1309 :
CallbackBase (
Create<
MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > (objPtr, memPtr))
1328 template <
typename T>
1334 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>,
1335 R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*
this, a),
false);
1348 template <
typename TX1,
typename TX2>
1354 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>,
1355 R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*
this, a1, a2),
false);
1370 template <
typename TX1,
typename TX2,
typename TX3>
1376 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>,
1377 R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*
this, a1, a2, a3),
false);
1466 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6);
1478 R
operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7)
const 1480 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6,a7);
1493 R
operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
const 1495 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6,a7,a8);
1509 R
operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, T9 a9)
const 1511 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6,a7,a8,a9);
1566 else if (other == 0)
1580 std::string othTid = other->GetTypeid ();
1582 NS_FATAL_ERROR_CONT (
"Incompatible types. (feed to \"c++filt -t\" if needed)" << std::endl <<
1583 "got=" << othTid << std::endl <<
1584 "expected=" << myTid);
1601 template <
typename R,
typename T1,
typename T2,
1602 typename T3,
typename T4,
1603 typename T5,
typename T6,
1604 typename T7,
typename T8,
1606 bool operator != (
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> a,
Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> b)
1641 template <
typename T,
typename OBJ,
typename R,
typename... Ts>
1644 return Callback<R,Ts...> (objPtr, memPtr);
1646 template <
typename T,
typename OBJ,
typename R,
typename... Ts>
1647 Callback<R,Ts...>
MakeCallback (R (T::*memPtr)(Ts...)
const, OBJ objPtr)
1649 return Callback<R,Ts...> (objPtr, memPtr);
1664 template <
typename R,
typename... Ts>
1667 return Callback<R,Ts...> (fnPtr,
true,
true);
1681 template <
typename R,
typename... Ts>
1702 template <
typename R,
typename TX,
typename ARG>
1706 Create<BoundFunctorCallbackImpl<R (*)(TX),R,TX,empty,empty,empty,empty,empty,empty,empty,empty> > (fnPtr, a1);
1709 template <
typename R,
typename TX,
typename ARG,
1714 Create<BoundFunctorCallbackImpl<R (*)(TX,T1),R,TX,T1,empty,empty,empty,empty,empty,empty,empty> > (fnPtr, a1);
1717 template <
typename R,
typename TX,
typename ARG,
1718 typename T1,
typename T2>
1722 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2),R,TX,T1,T2,empty,empty,empty,empty,empty,empty> > (fnPtr, a1);
1725 template <
typename R,
typename TX,
typename ARG,
1726 typename T1,
typename T2,
typename T3>
1730 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3),R,TX,T1,T2,T3,empty,empty,empty,empty,empty> > (fnPtr, a1);
1733 template <
typename R,
typename TX,
typename ARG,
1734 typename T1,
typename T2,
typename T3,
typename T4>
1738 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4),R,TX,T1,T2,T3,T4,empty,empty,empty,empty> > (fnPtr, a1);
1741 template <
typename R,
typename TX,
typename ARG,
1742 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1743 Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr)(
TX,T1,T2,T3,T4,T5), ARG a1)
1746 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5),R,TX,T1,T2,T3,T4,T5,empty,empty,empty> > (fnPtr, a1);
1749 template <
typename R,
typename TX,
typename ARG,
1750 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1751 Callback<R,T1,T2,T3,T4,T5,T6> MakeBoundCallback (R (*fnPtr)(
TX,T1,T2,T3,T4,T5,T6), ARG a1)
1754 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5,T6),R,TX,T1,T2,T3,T4,T5,T6,empty,empty> > (fnPtr, a1);
1757 template <
typename R,
typename TX,
typename ARG,
1758 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1759 Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeBoundCallback (R (*fnPtr)(
TX,T1,T2,T3,T4,T5,T6,T7), ARG a1)
1762 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5,T6,T7),R,TX,T1,T2,T3,T4,T5,T6,T7,empty> > (fnPtr, a1);
1765 template <
typename R,
typename TX,
typename ARG,
1766 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
1767 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeBoundCallback (R (*fnPtr)(
TX,T1,T2,T3,T4,T5,T6,T7,T8), ARG a1)
1770 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5,T6,T7,T8),R,TX,T1,T2,T3,T4,T5,T6,T7,T8> > (fnPtr, a1);
1791 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2>
1795 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2),R,TX1,TX2,empty,empty,empty,empty,empty,empty,empty> > (fnPtr, a1, a2);
1798 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1803 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1),R,TX1,TX2,T1,empty,empty,empty,empty,empty,empty> > (fnPtr, a1, a2);
1806 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1807 typename T1,
typename T2>
1811 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2),R,TX1,TX2,T1,T2,empty,empty,empty,empty,empty> > (fnPtr, a1, a2);
1814 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1815 typename T1,
typename T2,
typename T3>
1819 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3),R,TX1,TX2,T1,T2,T3,empty,empty,empty,empty> > (fnPtr, a1, a2);
1822 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1823 typename T1,
typename T2,
typename T3,
typename T4>
1824 Callback<R,T1,T2,T3,T4> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4), ARG1 a1, ARG2 a2)
1827 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4),R,TX1,TX2,T1,T2,T3,T4,empty,empty,empty> > (fnPtr, a1, a2);
1830 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1831 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1832 Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4,T5), ARG1 a1, ARG2 a2)
1835 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4,T5),R,TX1,TX2,T1,T2,T3,T4,T5,empty,empty> > (fnPtr, a1, a2);
1838 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1839 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1840 Callback<R,T1,T2,T3,T4,T5,T6> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4,T5,T6), ARG1 a1, ARG2 a2)
1843 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4,T5,T6),R,TX1,TX2,T1,T2,T3,T4,T5,T6,empty> > (fnPtr, a1, a2);
1846 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1847 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1848 Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4,T5,T6,T7), ARG1 a1, ARG2 a2)
1851 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4,T5,T6,T7),R,TX1,TX2,T1,T2,T3,T4,T5,T6,T7> > (fnPtr, a1, a2);
1875 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3>
1879 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3),R,TX1,TX2,TX3,empty,empty,empty,empty,empty,empty> > (fnPtr, a1, a2, a3);
1882 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1887 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1),R,TX1,TX2,TX3,T1,empty,empty,empty,empty,empty> > (fnPtr, a1, a2, a3);
1890 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1891 typename T1,
typename T2>
1895 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2),R,TX1,TX2,TX3,T1,T2,empty,empty,empty,empty> > (fnPtr, a1, a2, a3);
1898 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1899 typename T1,
typename T2,
typename T3>
1900 Callback<R,T1,T2,T3> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3), ARG1 a1, ARG2 a2, ARG3 a3)
1903 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2,T3),R,TX1,TX2,TX3,T1,T2,T3,empty,empty,empty> > (fnPtr, a1, a2, a3);
1906 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1907 typename T1,
typename T2,
typename T3,
typename T4>
1908 Callback<R,T1,T2,T3,T4> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3,T4), ARG1 a1, ARG2 a2, ARG3 a3)
1911 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2,T3,T4),R,TX1,TX2,TX3,T1,T2,T3,T4,empty,empty> > (fnPtr, a1, a2, a3);
1914 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1915 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1916 Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3,T4,T5), ARG1 a1, ARG2 a2, ARG3 a3)
1919 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2,T3,T4,T5),R,TX1,TX2,TX3,T1,T2,T3,T4,T5,empty> > (fnPtr, a1, a2, a3);
1922 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1923 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1924 Callback<R,T1,T2,T3,T4,T5,T6> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3,T4,T5,T6), ARG1 a1, ARG2 a2, ARG3 a3)
1927 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2,T3,T4,T5,T6),R,TX1,TX2,TX3,T1,T2,T3,T4,T5,T6> > (fnPtr, a1, a2, a3);
1958 template <
typename T>
1988 template <
typename T>
1991 if (value.CheckType (
m_value))
NS_FATAL_x macro definitions.
static std::string DoGetTypeid(void)
Get the name of this object type.
CallbackValue()
Constructor.
static std::string GetCppTypeid(void)
Helper to get the C++ typeid as a string.
Smart pointer class similar to boost::intrusive_ptr.
#define NS_FATAL_ERROR_CONT(msg)
Report a fatal error with a message, deferring termination.
virtual ~MemPtrCallbackImpl()
virtual ~BoundFunctorCallbackImpl()
virtual ~FunctorCallbackImpl()
ns3::Ptr smart pointer declaration and implementation.
Hold a value for an Attribute.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const =0
Equality test.
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
Make Callbacks with one bound argument.
virtual std::string SerializeToString(Ptr< const AttributeChecker > checker) const
Serialize to string.
Callback< R, T3, T4, T5, T6, T7, T8, T9 > TwoBind(TX1 a1, TX2 a2)
Bind the first two arguments.
static std::string DoGetTypeid(void)
Get the name of this object type.
U * PeekPointer(const Ptr< U > &p)
R operator()(void)
Functor with varying numbers of arguments.
Callback< R, T2, T3, T4, T5, T6, T7, T8, T9 > Bind(T a)
Bind the first arguments.
Base class for Callback class.
MemPtrCallbackImpl(OBJ_PTR const &objPtr, MEM_PTR memPtr)
Construct from an object pointer and member function pointer.
bool CheckType(const CallbackBase &other) const
Check for compatible types.
virtual ~CallbackValue()
Destructor.
bool Assign(const CallbackBase &other)
Adopt the other's implementation, if type compatible.
CallbackBase m_value
the CallbackBase
Callback< R, Ts... > MakeNullCallback(void)
bool IsEqual(const CallbackBase &other) const
Equality test.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
CallbackImpl for functors with first three arguments bound at construction.
bool DoAssign(Ptr< const CallbackImplBase > other)
Adopt the other's implementation, if type compatible.
AttributeValue implementation for Callback.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
virtual std::string GetTypeid(void) const
Get the name of this object type.
The unqualified CallbackImpl class.
#define ATTRIBUTE_CHECKER_DEFINE(type)
Declare the AttributeChecker class typeChecker and the MaketypeChecker function for class type...
virtual std::string GetTypeid(void) const =0
Get the name of this object type.
static std::string DoGetTypeid(void)
Get the name of this object type.
R operator()(void)
Functor with varying numbers of arguments.
TypeTraits< TX >::ReferencedType m_a
the bound argument
make Callback use a separate empty type
R operator()(void)
Functor with varying numbers of arguments.
FunctorCallbackImpl(T const &functor)
Construct from a functor.
Trait class to convert a pointer into a reference, used by MemPtrCallBackImpl.
BoundFunctorCallbackImpl(FUNCTOR functor, ARG a)
Construct from functor and a bound argument.
OBJ_PTR const m_objPtr
the object pointer
ns3::AttributeValue, ns3::AttributeAccessor and ns3::AttributeChecker declarations.
MEM_PTR m_memPtr
the member function pointer
static std::string DoGetTypeid(void)
Get the name of this object type.
virtual Ptr< AttributeValue > Copy(void) const
CallbackImpl for pointer to member functions.
Callback< R, T4, T5, T6, T7, T8, T9 > ThreeBind(TX1 a1, TX2 a2, TX3 a3)
Bind the first three arguments.
Abstract base class for CallbackImpl Provides reference counting and equality test.
static std::string DoGetTypeid(void)
Get the name of this object type.
virtual std::string GetTypeid(void) const
Get the name of this object type.
CallbackImpl for functors with first two arguments bound at construction.
R operator()(void) const
Functor with varying numbers of arguments.
Callback(Ptr< CallbackImpl< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > > const &impl)
Construct from a CallbackImpl pointer.
Ptr< T > Create(Ts... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr...
CallbackImpl< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > * DoPeekImpl(void) const
bool DoCheckType(Ptr< const CallbackImplBase > other) const
Check for compatible types.
TypeTraits< TX3 >::ReferencedType m_a3
third bound argument
bool operator!=(Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > a, Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > b)
Inequality test.
virtual ~CallbackImplBase()
Virtual destructor.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static std::string DoGetTypeid(void)
Get the name of this object type.
virtual std::string GetTypeid(void) const
Get the name of this object type.
#define NS_FATAL_ERROR_NO_MSG()
Report a fatal error and terminate.
virtual std::string GetTypeid(void) const
Get the name of this object type.
virtual std::string GetTypeid(void) const
Get the name of this object type.
virtual std::string GetTypeid(void) const
Get the name of this object type.
static T & GetReference(T *const p)
static std::string DoGetTypeid(void)
Get the name of this object type.
TypeTraits< TX1 >::ReferencedType m_a1
first bound argument
static std::string DoGetTypeid(void)
Get the name of this object type.
Callback(OBJ_PTR const &objPtr, MEM_PTR memPtr)
Construct a member function pointer call back.
virtual ~ThreeBoundFunctorCallbackImpl()
Attribute helper (ATTRIBUTE_ )macros definition.
static std::string DoGetTypeid(void)
Get the name of this object type.
static std::string DoGetTypeid(void)
Get the name of this object type.
#define ATTRIBUTE_ACCESSOR_DEFINE(type)
Define the attribute accessor functions MakeTypeAccessor for class type.
R operator()(void)
Functor with varying numbers of arguments.
TypeTraits< TX1 >::ReferencedType m_a1
first bound argument
Inspect a type to deduce its features.
The PHY layer is sending a packet.
Callback(FUNCTOR const &functor, bool, bool)
Construct a functor call back, supporting operator() calls.
CallbackImpl for functors with first argument bound at construction.
TwoBoundFunctorCallbackImpl(FUNCTOR functor, ARG1 arg1, ARG2 arg2)
Construct from functor and two arguments.
CallbackImpl with functors.
virtual bool DeserializeFromString(std::string value, Ptr< const AttributeChecker > checker)
Deserialize from string (not implemented)
virtual R operator()(T1, T2, T3, T4, T5, T6, T7, T8, T9)=0
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
bool GetAccessor(T &value) const
Give value my callback, if type compatible.
void Nullify(void)
Discard the implementation, set it to null.
ns3::empty declaration, used by callbacks.
virtual std::string GetTypeid(void) const
Get the name of this object type.
virtual ~TwoBoundFunctorCallbackImpl()
TypeTraits< TX2 >::ReferencedType m_a2
second bound argument
CallbackBase(Ptr< CallbackImplBase > impl)
Construct from a pimpl.
Ptr< CallbackImplBase > GetImpl(void) const
bool IsNull(void) const
Check for null implementation.
A template-based reference counting class.
static std::string Demangle(const std::string &mangled)
virtual std::string GetTypeid(void) const
Get the name of this object type.
virtual std::string GetTypeid(void) const
Get the name of this object type.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
Ptr< CallbackImplBase > m_impl
the pimpl
void Set(CallbackBase base)
ns3::SimpleRefCount declaration and template implementation.
TypeTraits< TX2 >::ReferencedType m_a2
second bound argument
virtual std::string GetTypeid(void) const
Get the name of this object type.
ns3::TypeTraits introspection declaration and template implementation.
ThreeBoundFunctorCallbackImpl(FUNCTOR functor, ARG1 arg1, ARG2 arg2, ARG3 arg3)
Construct from functor and three arguments.
R operator()(void)
Functor with varying numbers of arguments.