OLD | NEW |
1 // This file was GENERATED by command: | 1 // This file was GENERATED by command: |
2 // pump.py callback.h.pump | 2 // pump.py callback.h.pump |
3 // DO NOT EDIT BY HAND!!! | 3 // DO NOT EDIT BY HAND!!! |
4 | 4 |
5 | 5 |
6 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 6 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
7 // Use of this source code is governed by a BSD-style license that can be | 7 // Use of this source code is governed by a BSD-style license that can be |
8 // found in the LICENSE file. | 8 // found in the LICENSE file. |
9 | 9 |
10 #ifndef BASE_CALLBACK_H_ | 10 #ifndef BASE_CALLBACK_H_ |
(...skipping 21 matching lines...) Expand all Loading... |
32 // | 32 // |
33 // MEMORY MANAGEMENT AND PASSING | 33 // MEMORY MANAGEMENT AND PASSING |
34 // | 34 // |
35 // The Callback objects themselves should be passed by const-reference, and | 35 // The Callback objects themselves should be passed by const-reference, and |
36 // stored by copy. They internally store their state via a refcounted class | 36 // stored by copy. They internally store their state via a refcounted class |
37 // and thus do not need to be deleted. | 37 // and thus do not need to be deleted. |
38 // | 38 // |
39 // The reason to pass via a const-reference is to avoid unnecessary | 39 // The reason to pass via a const-reference is to avoid unnecessary |
40 // AddRef/Release pairs to the internal state. | 40 // AddRef/Release pairs to the internal state. |
41 // | 41 // |
| 42 // If a Callback variable must be empty during the Run() of a previous value of |
| 43 // that variable, use ResetAndRun(). E.g. if MyClass has a member variable |
| 44 // Callback which gets set as a side-effect of Run()'ing the Callback (to |
| 45 // something else), ResetAndRun() can be handy. |
42 // | 46 // |
43 // EXAMPLE USAGE: | 47 // EXAMPLE USAGE: |
44 // | 48 // |
45 // /* Binding a normal function. */ | 49 // /* Binding a normal function. */ |
46 // int Return5() { return 5; } | 50 // int Return5() { return 5; } |
47 // base::Callback<int(void)> func_cb = base::Bind(&Return5); | 51 // base::Callback<int(void)> func_cb = base::Bind(&Return5); |
48 // LOG(INFO) << func_cb.Run(); // Prints 5. | 52 // LOG(INFO) << func_cb.Run(); // Prints 5. |
49 // | 53 // |
50 // void PrintHi() { LOG(INFO) << "hi."; } | 54 // void PrintHi() { LOG(INFO) << "hi."; } |
51 // base::Closure void_func_cb = base::Bind(&PrintHi); | 55 // base::Closure void_func_cb = base::Bind(&PrintHi); |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 return CallbackBase::Equals(other); | 269 return CallbackBase::Equals(other); |
266 } | 270 } |
267 | 271 |
268 R Run() const { | 272 R Run() const { |
269 PolymorphicInvoke f = | 273 PolymorphicInvoke f = |
270 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 274 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
271 | 275 |
272 return f(bind_state_.get()); | 276 return f(bind_state_.get()); |
273 } | 277 } |
274 | 278 |
| 279 |
| 280 R ResetAndRun() { |
| 281 Callback<RunType> tmp(*this); |
| 282 Reset(); |
| 283 tmp.Run(); |
| 284 } |
| 285 |
275 private: | 286 private: |
276 typedef R(*PolymorphicInvoke)( | 287 typedef R(*PolymorphicInvoke)( |
277 internal::BindStateBase*); | 288 internal::BindStateBase*); |
278 | 289 |
279 }; | 290 }; |
280 | 291 |
281 template <typename R, typename A1> | 292 template <typename R, typename A1> |
282 class Callback<R(A1)> : public internal::CallbackBase { | 293 class Callback<R(A1)> : public internal::CallbackBase { |
283 public: | 294 public: |
284 typedef R(RunType)(A1); | 295 typedef R(RunType)(A1); |
(...skipping 19 matching lines...) Expand all Loading... |
304 return CallbackBase::Equals(other); | 315 return CallbackBase::Equals(other); |
305 } | 316 } |
306 | 317 |
307 R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1) const { | 318 R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1) const { |
308 PolymorphicInvoke f = | 319 PolymorphicInvoke f = |
309 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 320 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
310 | 321 |
311 return f(bind_state_.get(), internal::CallbackForward(a1)); | 322 return f(bind_state_.get(), internal::CallbackForward(a1)); |
312 } | 323 } |
313 | 324 |
| 325 |
| 326 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1) { |
| 327 Callback<RunType> tmp(*this); |
| 328 Reset(); |
| 329 tmp.Run(internal::CallbackForward(a1)); |
| 330 } |
| 331 |
314 private: | 332 private: |
315 typedef R(*PolymorphicInvoke)( | 333 typedef R(*PolymorphicInvoke)( |
316 internal::BindStateBase*, | 334 internal::BindStateBase*, |
317 typename internal::CallbackParamTraits<A1>::ForwardType); | 335 typename internal::CallbackParamTraits<A1>::ForwardType); |
318 | 336 |
319 }; | 337 }; |
320 | 338 |
321 template <typename R, typename A1, typename A2> | 339 template <typename R, typename A1, typename A2> |
322 class Callback<R(A1, A2)> : public internal::CallbackBase { | 340 class Callback<R(A1, A2)> : public internal::CallbackBase { |
323 public: | 341 public: |
(...skipping 22 matching lines...) Expand all Loading... |
346 | 364 |
347 R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, | 365 R Run(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
348 typename internal::CallbackParamTraits<A2>::ForwardType a2) const { | 366 typename internal::CallbackParamTraits<A2>::ForwardType a2) const { |
349 PolymorphicInvoke f = | 367 PolymorphicInvoke f = |
350 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 368 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
351 | 369 |
352 return f(bind_state_.get(), internal::CallbackForward(a1), | 370 return f(bind_state_.get(), internal::CallbackForward(a1), |
353 internal::CallbackForward(a2)); | 371 internal::CallbackForward(a2)); |
354 } | 372 } |
355 | 373 |
| 374 |
| 375 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
| 376 typename internal::CallbackParamTraits<A2>::ForwardType a2) { |
| 377 Callback<RunType> tmp(*this); |
| 378 Reset(); |
| 379 tmp.Run(internal::CallbackForward(a1), |
| 380 internal::CallbackForward(a2)); |
| 381 } |
| 382 |
356 private: | 383 private: |
357 typedef R(*PolymorphicInvoke)( | 384 typedef R(*PolymorphicInvoke)( |
358 internal::BindStateBase*, | 385 internal::BindStateBase*, |
359 typename internal::CallbackParamTraits<A1>::ForwardType, | 386 typename internal::CallbackParamTraits<A1>::ForwardType, |
360 typename internal::CallbackParamTraits<A2>::ForwardType); | 387 typename internal::CallbackParamTraits<A2>::ForwardType); |
361 | 388 |
362 }; | 389 }; |
363 | 390 |
364 template <typename R, typename A1, typename A2, typename A3> | 391 template <typename R, typename A1, typename A2, typename A3> |
365 class Callback<R(A1, A2, A3)> : public internal::CallbackBase { | 392 class Callback<R(A1, A2, A3)> : public internal::CallbackBase { |
(...skipping 25 matching lines...) Expand all Loading... |
391 typename internal::CallbackParamTraits<A2>::ForwardType a2, | 418 typename internal::CallbackParamTraits<A2>::ForwardType a2, |
392 typename internal::CallbackParamTraits<A3>::ForwardType a3) const { | 419 typename internal::CallbackParamTraits<A3>::ForwardType a3) const { |
393 PolymorphicInvoke f = | 420 PolymorphicInvoke f = |
394 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 421 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
395 | 422 |
396 return f(bind_state_.get(), internal::CallbackForward(a1), | 423 return f(bind_state_.get(), internal::CallbackForward(a1), |
397 internal::CallbackForward(a2), | 424 internal::CallbackForward(a2), |
398 internal::CallbackForward(a3)); | 425 internal::CallbackForward(a3)); |
399 } | 426 } |
400 | 427 |
| 428 |
| 429 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
| 430 typename internal::CallbackParamTraits<A2>::ForwardType a2, |
| 431 typename internal::CallbackParamTraits<A3>::ForwardType a3) { |
| 432 Callback<RunType> tmp(*this); |
| 433 Reset(); |
| 434 tmp.Run(internal::CallbackForward(a1), |
| 435 internal::CallbackForward(a2), |
| 436 internal::CallbackForward(a3)); |
| 437 } |
| 438 |
401 private: | 439 private: |
402 typedef R(*PolymorphicInvoke)( | 440 typedef R(*PolymorphicInvoke)( |
403 internal::BindStateBase*, | 441 internal::BindStateBase*, |
404 typename internal::CallbackParamTraits<A1>::ForwardType, | 442 typename internal::CallbackParamTraits<A1>::ForwardType, |
405 typename internal::CallbackParamTraits<A2>::ForwardType, | 443 typename internal::CallbackParamTraits<A2>::ForwardType, |
406 typename internal::CallbackParamTraits<A3>::ForwardType); | 444 typename internal::CallbackParamTraits<A3>::ForwardType); |
407 | 445 |
408 }; | 446 }; |
409 | 447 |
410 template <typename R, typename A1, typename A2, typename A3, typename A4> | 448 template <typename R, typename A1, typename A2, typename A3, typename A4> |
(...skipping 28 matching lines...) Expand all Loading... |
439 typename internal::CallbackParamTraits<A4>::ForwardType a4) const { | 477 typename internal::CallbackParamTraits<A4>::ForwardType a4) const { |
440 PolymorphicInvoke f = | 478 PolymorphicInvoke f = |
441 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 479 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
442 | 480 |
443 return f(bind_state_.get(), internal::CallbackForward(a1), | 481 return f(bind_state_.get(), internal::CallbackForward(a1), |
444 internal::CallbackForward(a2), | 482 internal::CallbackForward(a2), |
445 internal::CallbackForward(a3), | 483 internal::CallbackForward(a3), |
446 internal::CallbackForward(a4)); | 484 internal::CallbackForward(a4)); |
447 } | 485 } |
448 | 486 |
| 487 |
| 488 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
| 489 typename internal::CallbackParamTraits<A2>::ForwardType a2, |
| 490 typename internal::CallbackParamTraits<A3>::ForwardType a3, |
| 491 typename internal::CallbackParamTraits<A4>::ForwardType a4) { |
| 492 Callback<RunType> tmp(*this); |
| 493 Reset(); |
| 494 tmp.Run(internal::CallbackForward(a1), |
| 495 internal::CallbackForward(a2), |
| 496 internal::CallbackForward(a3), |
| 497 internal::CallbackForward(a4)); |
| 498 } |
| 499 |
449 private: | 500 private: |
450 typedef R(*PolymorphicInvoke)( | 501 typedef R(*PolymorphicInvoke)( |
451 internal::BindStateBase*, | 502 internal::BindStateBase*, |
452 typename internal::CallbackParamTraits<A1>::ForwardType, | 503 typename internal::CallbackParamTraits<A1>::ForwardType, |
453 typename internal::CallbackParamTraits<A2>::ForwardType, | 504 typename internal::CallbackParamTraits<A2>::ForwardType, |
454 typename internal::CallbackParamTraits<A3>::ForwardType, | 505 typename internal::CallbackParamTraits<A3>::ForwardType, |
455 typename internal::CallbackParamTraits<A4>::ForwardType); | 506 typename internal::CallbackParamTraits<A4>::ForwardType); |
456 | 507 |
457 }; | 508 }; |
458 | 509 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 PolymorphicInvoke f = | 542 PolymorphicInvoke f = |
492 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 543 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
493 | 544 |
494 return f(bind_state_.get(), internal::CallbackForward(a1), | 545 return f(bind_state_.get(), internal::CallbackForward(a1), |
495 internal::CallbackForward(a2), | 546 internal::CallbackForward(a2), |
496 internal::CallbackForward(a3), | 547 internal::CallbackForward(a3), |
497 internal::CallbackForward(a4), | 548 internal::CallbackForward(a4), |
498 internal::CallbackForward(a5)); | 549 internal::CallbackForward(a5)); |
499 } | 550 } |
500 | 551 |
| 552 |
| 553 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
| 554 typename internal::CallbackParamTraits<A2>::ForwardType a2, |
| 555 typename internal::CallbackParamTraits<A3>::ForwardType a3, |
| 556 typename internal::CallbackParamTraits<A4>::ForwardType a4, |
| 557 typename internal::CallbackParamTraits<A5>::ForwardType a5) { |
| 558 Callback<RunType> tmp(*this); |
| 559 Reset(); |
| 560 tmp.Run(internal::CallbackForward(a1), |
| 561 internal::CallbackForward(a2), |
| 562 internal::CallbackForward(a3), |
| 563 internal::CallbackForward(a4), |
| 564 internal::CallbackForward(a5)); |
| 565 } |
| 566 |
501 private: | 567 private: |
502 typedef R(*PolymorphicInvoke)( | 568 typedef R(*PolymorphicInvoke)( |
503 internal::BindStateBase*, | 569 internal::BindStateBase*, |
504 typename internal::CallbackParamTraits<A1>::ForwardType, | 570 typename internal::CallbackParamTraits<A1>::ForwardType, |
505 typename internal::CallbackParamTraits<A2>::ForwardType, | 571 typename internal::CallbackParamTraits<A2>::ForwardType, |
506 typename internal::CallbackParamTraits<A3>::ForwardType, | 572 typename internal::CallbackParamTraits<A3>::ForwardType, |
507 typename internal::CallbackParamTraits<A4>::ForwardType, | 573 typename internal::CallbackParamTraits<A4>::ForwardType, |
508 typename internal::CallbackParamTraits<A5>::ForwardType); | 574 typename internal::CallbackParamTraits<A5>::ForwardType); |
509 | 575 |
510 }; | 576 }; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); | 612 reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_); |
547 | 613 |
548 return f(bind_state_.get(), internal::CallbackForward(a1), | 614 return f(bind_state_.get(), internal::CallbackForward(a1), |
549 internal::CallbackForward(a2), | 615 internal::CallbackForward(a2), |
550 internal::CallbackForward(a3), | 616 internal::CallbackForward(a3), |
551 internal::CallbackForward(a4), | 617 internal::CallbackForward(a4), |
552 internal::CallbackForward(a5), | 618 internal::CallbackForward(a5), |
553 internal::CallbackForward(a6)); | 619 internal::CallbackForward(a6)); |
554 } | 620 } |
555 | 621 |
| 622 |
| 623 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
| 624 typename internal::CallbackParamTraits<A2>::ForwardType a2, |
| 625 typename internal::CallbackParamTraits<A3>::ForwardType a3, |
| 626 typename internal::CallbackParamTraits<A4>::ForwardType a4, |
| 627 typename internal::CallbackParamTraits<A5>::ForwardType a5, |
| 628 typename internal::CallbackParamTraits<A6>::ForwardType a6) { |
| 629 Callback<RunType> tmp(*this); |
| 630 Reset(); |
| 631 tmp.Run(internal::CallbackForward(a1), |
| 632 internal::CallbackForward(a2), |
| 633 internal::CallbackForward(a3), |
| 634 internal::CallbackForward(a4), |
| 635 internal::CallbackForward(a5), |
| 636 internal::CallbackForward(a6)); |
| 637 } |
| 638 |
556 private: | 639 private: |
557 typedef R(*PolymorphicInvoke)( | 640 typedef R(*PolymorphicInvoke)( |
558 internal::BindStateBase*, | 641 internal::BindStateBase*, |
559 typename internal::CallbackParamTraits<A1>::ForwardType, | 642 typename internal::CallbackParamTraits<A1>::ForwardType, |
560 typename internal::CallbackParamTraits<A2>::ForwardType, | 643 typename internal::CallbackParamTraits<A2>::ForwardType, |
561 typename internal::CallbackParamTraits<A3>::ForwardType, | 644 typename internal::CallbackParamTraits<A3>::ForwardType, |
562 typename internal::CallbackParamTraits<A4>::ForwardType, | 645 typename internal::CallbackParamTraits<A4>::ForwardType, |
563 typename internal::CallbackParamTraits<A5>::ForwardType, | 646 typename internal::CallbackParamTraits<A5>::ForwardType, |
564 typename internal::CallbackParamTraits<A6>::ForwardType); | 647 typename internal::CallbackParamTraits<A6>::ForwardType); |
565 | 648 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 | 687 |
605 return f(bind_state_.get(), internal::CallbackForward(a1), | 688 return f(bind_state_.get(), internal::CallbackForward(a1), |
606 internal::CallbackForward(a2), | 689 internal::CallbackForward(a2), |
607 internal::CallbackForward(a3), | 690 internal::CallbackForward(a3), |
608 internal::CallbackForward(a4), | 691 internal::CallbackForward(a4), |
609 internal::CallbackForward(a5), | 692 internal::CallbackForward(a5), |
610 internal::CallbackForward(a6), | 693 internal::CallbackForward(a6), |
611 internal::CallbackForward(a7)); | 694 internal::CallbackForward(a7)); |
612 } | 695 } |
613 | 696 |
| 697 |
| 698 R ResetAndRun(typename internal::CallbackParamTraits<A1>::ForwardType a1, |
| 699 typename internal::CallbackParamTraits<A2>::ForwardType a2, |
| 700 typename internal::CallbackParamTraits<A3>::ForwardType a3, |
| 701 typename internal::CallbackParamTraits<A4>::ForwardType a4, |
| 702 typename internal::CallbackParamTraits<A5>::ForwardType a5, |
| 703 typename internal::CallbackParamTraits<A6>::ForwardType a6, |
| 704 typename internal::CallbackParamTraits<A7>::ForwardType a7) { |
| 705 Callback<RunType> tmp(*this); |
| 706 Reset(); |
| 707 tmp.Run(internal::CallbackForward(a1), |
| 708 internal::CallbackForward(a2), |
| 709 internal::CallbackForward(a3), |
| 710 internal::CallbackForward(a4), |
| 711 internal::CallbackForward(a5), |
| 712 internal::CallbackForward(a6), |
| 713 internal::CallbackForward(a7)); |
| 714 } |
| 715 |
614 private: | 716 private: |
615 typedef R(*PolymorphicInvoke)( | 717 typedef R(*PolymorphicInvoke)( |
616 internal::BindStateBase*, | 718 internal::BindStateBase*, |
617 typename internal::CallbackParamTraits<A1>::ForwardType, | 719 typename internal::CallbackParamTraits<A1>::ForwardType, |
618 typename internal::CallbackParamTraits<A2>::ForwardType, | 720 typename internal::CallbackParamTraits<A2>::ForwardType, |
619 typename internal::CallbackParamTraits<A3>::ForwardType, | 721 typename internal::CallbackParamTraits<A3>::ForwardType, |
620 typename internal::CallbackParamTraits<A4>::ForwardType, | 722 typename internal::CallbackParamTraits<A4>::ForwardType, |
621 typename internal::CallbackParamTraits<A5>::ForwardType, | 723 typename internal::CallbackParamTraits<A5>::ForwardType, |
622 typename internal::CallbackParamTraits<A6>::ForwardType, | 724 typename internal::CallbackParamTraits<A6>::ForwardType, |
623 typename internal::CallbackParamTraits<A7>::ForwardType); | 725 typename internal::CallbackParamTraits<A7>::ForwardType); |
624 | 726 |
625 }; | 727 }; |
626 | 728 |
627 | 729 |
628 // Syntactic sugar to make Callbacks<void(void)> easier to declare since it | 730 // Syntactic sugar to make Callbacks<void(void)> easier to declare since it |
629 // will be used in a lot of APIs with delayed execution. | 731 // will be used in a lot of APIs with delayed execution. |
630 typedef Callback<void(void)> Closure; | 732 typedef Callback<void(void)> Closure; |
631 | 733 |
632 } // namespace base | 734 } // namespace base |
633 | 735 |
634 #endif // BASE_CALLBACK_H | 736 #endif // BASE_CALLBACK_H |
OLD | NEW |