106 template <
typename T>
115 template <
typename T>
151 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
161 template <
typename R>
168 template <
typename R,
typename T1>
175 template <
typename R,
typename T1,
typename T2>
182 template <
typename R,
typename T1,
typename T2,
typename T3>
189 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
196 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
200 virtual R
operator() (T1, T2, T3, T4, T5) = 0;
203 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
207 virtual R
operator() (T1, T2, T3, T4, T5, T6) = 0;
210 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
214 virtual R
operator() (T1, T2, T3, T4, T5, T6, T7) = 0;
217 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
221 virtual R
operator() (T1, T2, T3, T4, T5, T6, T7, T8) = 0;
224 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
225 class CallbackImpl :
public CallbackImplBase {
228 virtual R
operator() (T1, T2, T3, T4, T5, T6, T7, T8, T9) = 0;
237 template <
typename T,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
337 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) {
338 return m_functor (a1,a2,a3,a4,a5,a6,a7,a8);
352 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9) {
353 return m_functor (a1,a2,a3,a4,a5,a6,a7,a8,a9);
363 FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *otherDerived =
364 dynamic_cast<FunctorCallbackImpl<T,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *
> (
PeekPointer (other));
365 if (otherDerived == 0)
383 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>
484 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) {
499 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, T9 a9) {
510 MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *otherDerived =
511 dynamic_cast<MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> const *
> (
PeekPointer (other));
512 if (otherDerived == 0)
532 template <
typename T,
typename R,
typename TX,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
540 template <
typename FUNCTOR,
typename ARG>
633 R
operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8) {
644 BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5,T6,T7,T8> const *otherDerived =
645 dynamic_cast<BoundFunctorCallbackImpl<T,R,TX,T1,T2,T3,T4,T5,T6,T7,T8> const *
> (
PeekPointer (other));
646 if (otherDerived == 0)
666 template <
typename T,
typename R,
typename TX1,
typename TX2,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
675 template <
typename FUNCTOR,
typename ARG1,
typename ARG2>
765 TwoBoundFunctorCallbackImpl<T,R,TX1,TX2,T1,T2,T3,T4,T5,T6,T7> const *otherDerived =
766 dynamic_cast<TwoBoundFunctorCallbackImpl<T,R,TX1,TX2,T1,T2,T3,T4,T5,T6,T7> const *
> (
PeekPointer (other));
767 if (otherDerived == 0)
788 template <
typename T,
typename R,
typename TX1,
typename TX2,
typename TX3,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
798 template <
typename FUNCTOR,
typename ARG1,
typename ARG2,
typename ARG3>
875 ThreeBoundFunctorCallbackImpl<T,R,TX1,TX2,TX3,T1,T2,T3,T4,T5,T6> const *otherDerived =
876 dynamic_cast<ThreeBoundFunctorCallbackImpl<T,R,TX1,TX2,TX3,T1,T2,T3,T4,T5,T6> const *
> (
PeekPointer (other));
877 if (otherDerived == 0)
917 static std::string
Demangle (
const std::string& mangled);
991 template <
typename FUNCTOR>
993 :
CallbackBase (
Create<
FunctorCallbackImpl<FUNCTOR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > (functor))
1002 template <
typename OBJ_PTR,
typename MEM_PTR>
1004 :
CallbackBase (
Create<
MemPtrCallbackImpl<OBJ_PTR,MEM_PTR,R,T1,T2,T3,T4,T5,T6,T7,T8,T9> > (objPtr, memPtr))
1022 template <
typename T>
1027 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>,
1028 R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*
this, a),
false);
1039 template <
typename TX1,
typename TX2>
1044 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>,
1045 R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*
this, a1, a2),
false);
1057 template <
typename TX1,
typename TX2,
typename TX3>
1062 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>,
1063 R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (*
this, a1, a2, a3),
false);
1143 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6);
1155 R
operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7)
const {
1156 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6,a7);
1169 R
operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
const {
1170 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6,a7,a8);
1184 R
operator() (T1 a1, T2 a2, T3 a3, T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, T9 a9)
const {
1185 return (*(
DoPeekImpl ()))(a1,a2,a3,a4,a5,a6,a7,a8,a9);
1232 else if (other == 0)
1250 NS_FATAL_ERROR (
"Incompatible types. (feed to \"c++filt -t\" if needed)" << std::endl <<
1251 "got=" <<
Demangle (
typeid (*other).name () ) << std::endl <<
1252 "expected=" <<
Demangle (
typeid (*expected).name () ));
1267 template <
typename R,
typename T1,
typename T2,
1268 typename T3,
typename T4,
1269 typename T5,
typename T6,
1270 typename T7,
typename T8,
1272 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)
1289 template <
typename T,
typename OBJ,
typename R>
1293 template <
typename T,
typename OBJ,
typename R>
1297 template <
typename T,
typename OBJ,
typename R,
typename T1>
1301 template <
typename T,
typename OBJ,
typename R,
typename T1>
1302 Callback<R,T1>
MakeCallback (R (T::*memPtr)(T1)
const, OBJ objPtr) {
1303 return Callback<R,T1> (objPtr, memPtr);
1305 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2>
1309 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2>
1310 Callback<R,T1,T2>
MakeCallback (R (T::*memPtr)(T1,T2)
const, OBJ objPtr) {
1311 return Callback<R,T1,T2> (objPtr, memPtr);
1313 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3>
1317 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3>
1318 Callback<R,T1,T2,T3>
MakeCallback (R (T::*memPtr)(T1,T2,T3)
const, OBJ objPtr) {
1319 return Callback<R,T1,T2,T3> (objPtr, memPtr);
1321 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
1325 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
1326 Callback<R,T1,T2,T3,T4>
MakeCallback (R (T::*memPtr)(T1,T2,T3,T4)
const, OBJ objPtr) {
1327 return Callback<R,T1,T2,T3,T4> (objPtr, memPtr);
1329 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1330 Callback<R,T1,T2,T3,T4,T5> MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5), OBJ objPtr) {
1333 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1334 Callback<R,T1,T2,T3,T4,T5>
MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5)
const, OBJ objPtr) {
1335 return Callback<R,T1,T2,T3,T4,T5> (objPtr, memPtr);
1337 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1338 Callback<R,T1,T2,T3,T4,T5,T6> MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6), OBJ objPtr) {
1341 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1342 Callback<R,T1,T2,T3,T4,T5,T6>
MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6)
const, OBJ objPtr) {
1343 return Callback<R,T1,T2,T3,T4,T5,T6> (objPtr, memPtr);
1345 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1346 Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6,T7), OBJ objPtr) {
1349 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1350 Callback<R,T1,T2,T3,T4,T5,T6,T7>
MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6,T7)
const, OBJ objPtr) {
1351 return Callback<R,T1,T2,T3,T4,T5,T6,T7> (objPtr, memPtr);
1353 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
1354 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6,T7,T8), OBJ objPtr) {
1357 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
1358 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8>
MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6,T7,T8)
const, OBJ objPtr) {
1359 return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (objPtr, memPtr);
1361 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
1362 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6,T7,T8,T9), OBJ objPtr) {
1363 return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (objPtr, memPtr);
1365 template <
typename T,
typename OBJ,
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
1366 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9>
MakeCallback (R (T::*memPtr)(T1,T2,T3,T4,T5,T6,T7,T8,T9)
const, OBJ objPtr) {
1367 return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (objPtr, memPtr);
1382 template <
typename R>
1386 template <
typename R,
typename T1>
1390 template <
typename R,
typename T1,
typename T2>
1394 template <
typename R,
typename T1,
typename T2,
typename T3>
1398 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
1402 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1406 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1407 Callback<R,T1,T2,T3,T4,T5,T6> MakeCallback (R (*fnPtr)(T1,T2,T3,T4,T5,T6)) {
1410 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1411 Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeCallback (R (*fnPtr)(T1,T2,T3,T4,T5,T6,T7)) {
1414 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
1415 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeCallback (R (*fnPtr)(T1,T2,T3,T4,T5,T6,T7,T8)) {
1416 return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> (fnPtr,
true,
true);
1418 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
1419 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> MakeCallback (R (*fnPtr)(T1,T2,T3,T4,T5,T6,T7,T8,T9)) {
1420 return Callback<R,T1,T2,T3,T4,T5,T6,T7,T8,T9> (fnPtr,
true,
true);
1435 template <
typename R>
1439 template <
typename R,
typename T1>
1443 template <
typename R,
typename T1,
typename T2>
1447 template <
typename R,
typename T1,
typename T2,
typename T3>
1451 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
1455 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1459 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1463 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1467 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
1471 template <
typename R,
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8,
typename T9>
1486 template <
typename R,
typename TX,
typename ARG>
1489 Create<BoundFunctorCallbackImpl<R (*)(TX),R,TX,empty,empty,empty,empty,empty,empty,empty,empty> >(fnPtr, a1);
1492 template <
typename R,
typename TX,
typename ARG,
1496 Create<BoundFunctorCallbackImpl<R (*)(TX,T1),R,TX,T1,empty,empty,empty,empty,empty,empty,empty> > (fnPtr, a1);
1499 template <
typename R,
typename TX,
typename ARG,
1500 typename T1,
typename T2>
1503 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2),R,TX,T1,T2,empty,empty,empty,empty,empty,empty> > (fnPtr, a1);
1506 template <
typename R,
typename TX,
typename ARG,
1507 typename T1,
typename T2,
typename T3>
1510 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3),R,TX,T1,T2,T3,empty,empty,empty,empty,empty> > (fnPtr, a1);
1513 template <
typename R,
typename TX,
typename ARG,
1514 typename T1,
typename T2,
typename T3,
typename T4>
1517 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4),R,TX,T1,T2,T3,T4,empty,empty,empty,empty> > (fnPtr, a1);
1520 template <
typename R,
typename TX,
typename ARG,
1521 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1522 Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr)(TX,T1,T2,T3,T4,T5), ARG a1) {
1524 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5),R,TX,T1,T2,T3,T4,T5,empty,empty,empty> > (fnPtr, a1);
1527 template <
typename R,
typename TX,
typename ARG,
1528 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1529 Callback<R,T1,T2,T3,T4,T5,T6> MakeBoundCallback (R (*fnPtr)(TX,T1,T2,T3,T4,T5,T6), ARG a1) {
1531 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5,T6),R,TX,T1,T2,T3,T4,T5,T6,empty,empty> > (fnPtr, a1);
1534 template <
typename R,
typename TX,
typename ARG,
1535 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1536 Callback<R,T1,T2,T3,T4,T5,T6,T7> MakeBoundCallback (R (*fnPtr)(TX,T1,T2,T3,T4,T5,T6,T7), ARG a1) {
1538 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5,T6,T7),R,TX,T1,T2,T3,T4,T5,T6,T7,empty> > (fnPtr, a1);
1541 template <
typename R,
typename TX,
typename ARG,
1542 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7,
typename T8>
1543 Callback<R,T1,T2,T3,T4,T5,T6,T7,T8> MakeBoundCallback (R (*fnPtr)(TX,T1,T2,T3,T4,T5,T6,T7,T8), ARG a1) {
1545 Create<BoundFunctorCallbackImpl<R (*)(TX,T1,T2,T3,T4,T5,T6,T7,T8),R,TX,T1,T2,T3,T4,T5,T6,T7,T8> > (fnPtr, a1);
1559 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2>
1562 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2),R,TX1,TX2,empty,empty,empty,empty,empty,empty,empty> >(fnPtr, a1, a2);
1565 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1569 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1),R,TX1,TX2,T1,empty,empty,empty,empty,empty,empty> > (fnPtr, a1, a2);
1572 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1573 typename T1,
typename T2>
1576 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2),R,TX1,TX2,T1,T2,empty,empty,empty,empty,empty> > (fnPtr, a1, a2);
1579 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1580 typename T1,
typename T2,
typename T3>
1583 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3),R,TX1,TX2,T1,T2,T3,empty,empty,empty,empty> > (fnPtr, a1, a2);
1586 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1587 typename T1,
typename T2,
typename T3,
typename T4>
1588 Callback<R,T1,T2,T3,T4> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4), ARG1 a1, ARG2 a2) {
1590 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4),R,TX1,TX2,T1,T2,T3,T4,empty,empty,empty> > (fnPtr, a1, a2);
1593 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1594 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1595 Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4,T5), ARG1 a1, ARG2 a2) {
1597 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4,T5),R,TX1,TX2,T1,T2,T3,T4,T5,empty,empty> > (fnPtr, a1, a2);
1600 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1601 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1602 Callback<R,T1,T2,T3,T4,T5,T6> MakeBoundCallback (R (*fnPtr)(TX1,TX2,T1,T2,T3,T4,T5,T6), ARG1 a1, ARG2 a2) {
1604 Create<TwoBoundFunctorCallbackImpl<R (*)(TX1,TX2,T1,T2,T3,T4,T5,T6),R,TX1,TX2,T1,T2,T3,T4,T5,T6,empty> > (fnPtr, a1, a2);
1607 template <
typename R,
typename TX1,
typename TX2,
typename ARG1,
typename ARG2,
1608 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
typename T7>
1609 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) {
1611 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);
1626 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3>
1629 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3),R,TX1,TX2,TX3,empty,empty,empty,empty,empty,empty> >(fnPtr, a1, a2, a3);
1632 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1636 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1),R,TX1,TX2,TX3,T1,empty,empty,empty,empty,empty> > (fnPtr, a1, a2, a3);
1639 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1640 typename T1,
typename T2>
1643 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2),R,TX1,TX2,TX3,T1,T2,empty,empty,empty,empty> > (fnPtr, a1, a2, a3);
1646 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1647 typename T1,
typename T2,
typename T3>
1648 Callback<R,T1,T2,T3> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3), ARG1 a1, ARG2 a2, ARG3 a3) {
1650 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2,T3),R,TX1,TX2,TX3,T1,T2,T3,empty,empty,empty> > (fnPtr, a1, a2, a3);
1653 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1654 typename T1,
typename T2,
typename T3,
typename T4>
1655 Callback<R,T1,T2,T3,T4> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3,T4), ARG1 a1, ARG2 a2, ARG3 a3) {
1657 Create<ThreeBoundFunctorCallbackImpl<R (*)(TX1,TX2,TX3,T1,T2,T3,T4),R,TX1,TX2,TX3,T1,T2,T3,T4,empty,empty> > (fnPtr, a1, a2, a3);
1660 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1661 typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
1662 Callback<R,T1,T2,T3,T4,T5> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3,T1,T2,T3,T4,T5), ARG1 a1, ARG2 a2, ARG3 a3) {
1664 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);
1667 template <
typename R,
typename TX1,
typename TX2,
typename TX3,
typename ARG1,
typename ARG2,
typename ARG3,
1668 typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
1669 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) {
1671 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);
1701 template <
typename T>
1730 template <
typename T>
1733 if (value.CheckType (
m_value))
NS_FATAL_x macro definitions.
CallbackValue()
Constructor.
Smart pointer class similar to boost::intrusive_ptr.
virtual ~MemPtrCallbackImpl()
void DoAssign(Ptr< const CallbackImplBase > other)
Adopt the other's implementation, if type compatible.
virtual ~BoundFunctorCallbackImpl()
virtual ~FunctorCallbackImpl()
Smart pointer implementation.
Hold a value for an Attribute.
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.
Callback< R, T3, T4, T5, T6, T7, T8, T9 > TwoBind(TX1 a1, TX2 a2)
Bind the first two arguments.
bool IsNull(void) const
Check for null implementation.
U * PeekPointer(const Ptr< U > &p)
R operator()(void)
Functor with varying numbers of arguments.
void Assign(const CallbackBase &other)
Adopt the other's implementation, if type compatible.
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.
#define NS_FATAL_ERROR(msg)
Fatal error handling.
virtual ~CallbackValue()
Destructor.
Callback< R > MakeNullCallback(void)
CallbackBase m_value
the CallbackBase
bool GetAccessor(T &value) const
Give value my callback, if type compatible.
CallbackImpl for functors with first three arguments bound at construction.
AttributeValue implementation for Callback.
The unqualified CallbackImpl class.
#define ATTRIBUTE_CHECKER_DEFINE(type)
Declare the AttributeChecker class Checker and the MakeTypeChecker function for class 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.
bool CheckType(const CallbackBase &other) const
Check for compatible types.
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
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
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.
bool DoCheckType(Ptr< const CallbackImplBase > other) const
Check for compatible types.
Abstract base class for CallbackImpl Provides reference counting and equality test.
CallbackImpl for functors with first two arguments bound at construction.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
Callback(Ptr< CallbackImpl< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > > const &impl)
Construct from a CallbackImpl pointer.
R operator()(void) const
Functor with varying numbers of arguments.
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.
static std::string Demangle(const std::string &mangled)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
bool IsEqual(const CallbackBase &other) const
Equality test.
Ptr< T > Create(void)
Create class instances by constructors with varying numbers of arguments and return them by Ptr...
static T & GetReference(T *const p)
TypeTraits< TX1 >::ReferencedType m_a1
first bound argument
Callback(OBJ_PTR const &objPtr, MEM_PTR memPtr)
Construct a member function pointer call back.
virtual ~ThreeBoundFunctorCallbackImpl()
Declaration of Attribute helper macros.
#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
Callback(FUNCTOR const &functor, bool, bool)
Construct a functor call back, supporting operator() calls.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
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
Abstract operator.
Type trait reference values.
virtual std::string SerializeToString(Ptr< const AttributeChecker > checker) const
Serialize to string.
virtual bool IsEqual(Ptr< const CallbackImplBase > other) const
Equality test.
void Nullify(void)
Discard the implementation, set it to null.
virtual ~TwoBoundFunctorCallbackImpl()
TypeTraits< TX2 >::ReferencedType m_a2
second bound argument
CallbackBase(Ptr< CallbackImplBase > impl)
Construct from a pimpl.
A template-based reference counting class.
virtual Ptr< AttributeValue > Copy(void) const
CallbackImpl< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > * DoPeekImpl(void) const
Ptr< CallbackImplBase > m_impl
the pimpl
void Set(CallbackBase base)
Reference counting for smart pointers.
TypeTraits< TX2 >::ReferencedType m_a2
second bound argument
Ptr< CallbackImplBase > GetImpl(void) const
ThreeBoundFunctorCallbackImpl(FUNCTOR functor, ARG1 arg1, ARG2 arg2, ARG3 arg3)
Construct from functor and three arguments.
R operator()(void)
Functor with varying numbers of arguments.