| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 template<typename R, typename A1, typename A2, typename A3, typename A4, typenam
e A5, typename A6> | 418 template<typename R, typename A1, typename A2, typename A3, typename A4, typenam
e A5, typename A6> |
| 419 class FunctionImpl<R(A1, A2, A3, A4, A5, A6)> : public FunctionImplBase { | 419 class FunctionImpl<R(A1, A2, A3, A4, A5, A6)> : public FunctionImplBase { |
| 420 public: | 420 public: |
| 421 virtual R operator()(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) = 0; | 421 virtual R operator()(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) = 0; |
| 422 }; | 422 }; |
| 423 | 423 |
| 424 template<typename FunctionWrapper, typename FunctionType> | 424 template<typename FunctionWrapper, typename FunctionType> |
| 425 class UnboundFunctionImpl; | 425 class UnboundFunctionImpl; |
| 426 | 426 |
| 427 template<typename FunctionWrapper, typename R, typename P1> | 427 template<typename FunctionWrapper, typename R, typename P1> |
| 428 class UnboundFunctionImpl<FunctionWrapper, R(P1)> FINAL : public FunctionImpl<ty
pename FunctionWrapper::ResultType(P1)> { | 428 class UnboundFunctionImpl<FunctionWrapper, R(P1)> final : public FunctionImpl<ty
pename FunctionWrapper::ResultType(P1)> { |
| 429 public: | 429 public: |
| 430 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 430 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
| 431 : m_functionWrapper(functionWrapper) | 431 : m_functionWrapper(functionWrapper) |
| 432 { | 432 { |
| 433 } | 433 } |
| 434 | 434 |
| 435 virtual typename FunctionWrapper::ResultType operator()(P1 p1) OVERRIDE | 435 virtual typename FunctionWrapper::ResultType operator()(P1 p1) override |
| 436 { | 436 { |
| 437 return m_functionWrapper(p1); | 437 return m_functionWrapper(p1); |
| 438 } | 438 } |
| 439 | 439 |
| 440 private: | 440 private: |
| 441 FunctionWrapper m_functionWrapper; | 441 FunctionWrapper m_functionWrapper; |
| 442 }; | 442 }; |
| 443 | 443 |
| 444 template<typename FunctionWrapper, typename R, typename P1, typename P2> | 444 template<typename FunctionWrapper, typename R, typename P1, typename P2> |
| 445 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2)> FINAL : public FunctionImp
l<typename FunctionWrapper::ResultType(P1, P2)> { | 445 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2)> final : public FunctionImp
l<typename FunctionWrapper::ResultType(P1, P2)> { |
| 446 public: | 446 public: |
| 447 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 447 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
| 448 : m_functionWrapper(functionWrapper) | 448 : m_functionWrapper(functionWrapper) |
| 449 { | 449 { |
| 450 } | 450 } |
| 451 | 451 |
| 452 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2) OVERRI
DE | 452 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2) overri
de |
| 453 { | 453 { |
| 454 return m_functionWrapper(p1, p2); | 454 return m_functionWrapper(p1, p2); |
| 455 } | 455 } |
| 456 | 456 |
| 457 private: | 457 private: |
| 458 FunctionWrapper m_functionWrapper; | 458 FunctionWrapper m_functionWrapper; |
| 459 }; | 459 }; |
| 460 | 460 |
| 461 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 461 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
| 462 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public Functio
nImpl<typename FunctionWrapper::ResultType(P1, P2, P3)> { | 462 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public Functio
nImpl<typename FunctionWrapper::ResultType(P1, P2, P3)> { |
| 463 public: | 463 public: |
| 464 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 464 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
| 465 : m_functionWrapper(functionWrapper) | 465 : m_functionWrapper(functionWrapper) |
| 466 { | 466 { |
| 467 } | 467 } |
| 468 | 468 |
| 469 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3)
OVERRIDE | 469 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3)
override |
| 470 { | 470 { |
| 471 return m_functionWrapper(p1, p2, p3); | 471 return m_functionWrapper(p1, p2, p3); |
| 472 } | 472 } |
| 473 | 473 |
| 474 private: | 474 private: |
| 475 FunctionWrapper m_functionWrapper; | 475 FunctionWrapper m_functionWrapper; |
| 476 }; | 476 }; |
| 477 | 477 |
| 478 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 478 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
| 479 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4)> { | 479 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4)> { |
| 480 public: | 480 public: |
| 481 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 481 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
| 482 : m_functionWrapper(functionWrapper) | 482 : m_functionWrapper(functionWrapper) |
| 483 { | 483 { |
| 484 } | 484 } |
| 485 | 485 |
| 486 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4) OVERRIDE | 486 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4) override |
| 487 { | 487 { |
| 488 return m_functionWrapper(p1, p2, p3, p4); | 488 return m_functionWrapper(p1, p2, p3, p4); |
| 489 } | 489 } |
| 490 | 490 |
| 491 private: | 491 private: |
| 492 FunctionWrapper m_functionWrapper; | 492 FunctionWrapper m_functionWrapper; |
| 493 }; | 493 }; |
| 494 | 494 |
| 495 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 495 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
| 496 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL : public
FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5)> { | 496 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final : public
FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5)> { |
| 497 public: | 497 public: |
| 498 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 498 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
| 499 : m_functionWrapper(functionWrapper) | 499 : m_functionWrapper(functionWrapper) |
| 500 { | 500 { |
| 501 } | 501 } |
| 502 | 502 |
| 503 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5) OVERRIDE | 503 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5) override |
| 504 { | 504 { |
| 505 return m_functionWrapper(p1, p2, p3, p4, p5); | 505 return m_functionWrapper(p1, p2, p3, p4, p5); |
| 506 } | 506 } |
| 507 | 507 |
| 508 private: | 508 private: |
| 509 FunctionWrapper m_functionWrapper; | 509 FunctionWrapper m_functionWrapper; |
| 510 }; | 510 }; |
| 511 | 511 |
| 512 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 512 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 513 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FINAL : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5, P6)>
{ | 513 class UnboundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> final : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P1, P2, P3, P4, P5, P6)>
{ |
| 514 public: | 514 public: |
| 515 UnboundFunctionImpl(FunctionWrapper functionWrapper) | 515 UnboundFunctionImpl(FunctionWrapper functionWrapper) |
| 516 : m_functionWrapper(functionWrapper) | 516 : m_functionWrapper(functionWrapper) |
| 517 { | 517 { |
| 518 } | 518 } |
| 519 | 519 |
| 520 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5, P6 p6) OVERRIDE | 520 virtual typename FunctionWrapper::ResultType operator()(P1 p1, P2 p2, P3 p3,
P4 p4, P5 p5, P6 p6) override |
| 521 { | 521 { |
| 522 return m_functionWrapper(p1, p2, p3, p4, p5, p6); | 522 return m_functionWrapper(p1, p2, p3, p4, p5, p6); |
| 523 } | 523 } |
| 524 | 524 |
| 525 private: | 525 private: |
| 526 FunctionWrapper m_functionWrapper; | 526 FunctionWrapper m_functionWrapper; |
| 527 }; | 527 }; |
| 528 | 528 |
| 529 template<typename FunctionWrapper, typename FunctionType> | 529 template<typename FunctionWrapper, typename FunctionType> |
| 530 class OneArgPartBoundFunctionImpl; | 530 class OneArgPartBoundFunctionImpl; |
| 531 | 531 |
| 532 template<typename FunctionWrapper, typename R, typename P1, typename P2> | 532 template<typename FunctionWrapper, typename R, typename P1, typename P2> |
| 533 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2)> FINAL : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P2)> { | 533 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2)> final : public Fun
ctionImpl<typename FunctionWrapper::ResultType(P2)> { |
| 534 public: | 534 public: |
| 535 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 535 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
| 536 : m_functionWrapper(functionWrapper) | 536 : m_functionWrapper(functionWrapper) |
| 537 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 537 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 538 { | 538 { |
| 539 } | 539 } |
| 540 | 540 |
| 541 virtual typename FunctionWrapper::ResultType operator()(P2 p2) OVERRIDE | 541 virtual typename FunctionWrapper::ResultType operator()(P2 p2) override |
| 542 { | 542 { |
| 543 return m_functionWrapper(m_p1, p2); | 543 return m_functionWrapper(m_p1, p2); |
| 544 } | 544 } |
| 545 | 545 |
| 546 private: | 546 private: |
| 547 FunctionWrapper m_functionWrapper; | 547 FunctionWrapper m_functionWrapper; |
| 548 typename ParamStorageTraits<P1>::StorageType m_p1; | 548 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 549 }; | 549 }; |
| 550 | 550 |
| 551 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 551 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
| 552 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public
FunctionImpl<typename FunctionWrapper::ResultType(P2, P3)> { | 552 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public
FunctionImpl<typename FunctionWrapper::ResultType(P2, P3)> { |
| 553 public: | 553 public: |
| 554 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 554 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
| 555 : m_functionWrapper(functionWrapper) | 555 : m_functionWrapper(functionWrapper) |
| 556 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 556 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 557 { | 557 { |
| 558 } | 558 } |
| 559 | 559 |
| 560 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3) OVERRI
DE | 560 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3) overri
de |
| 561 { | 561 { |
| 562 return m_functionWrapper(m_p1, p2, p3); | 562 return m_functionWrapper(m_p1, p2, p3); |
| 563 } | 563 } |
| 564 | 564 |
| 565 private: | 565 private: |
| 566 FunctionWrapper m_functionWrapper; | 566 FunctionWrapper m_functionWrapper; |
| 567 typename ParamStorageTraits<P1>::StorageType m_p1; | 567 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 568 }; | 568 }; |
| 569 | 569 |
| 570 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 570 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
| 571 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4)> { | 571 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4)> { |
| 572 public: | 572 public: |
| 573 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 573 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
| 574 : m_functionWrapper(functionWrapper) | 574 : m_functionWrapper(functionWrapper) |
| 575 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 575 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 576 { | 576 { |
| 577 } | 577 } |
| 578 | 578 |
| 579 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4)
OVERRIDE | 579 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4)
override |
| 580 { | 580 { |
| 581 return m_functionWrapper(m_p1, p2, p3, p4); | 581 return m_functionWrapper(m_p1, p2, p3, p4); |
| 582 } | 582 } |
| 583 | 583 |
| 584 private: | 584 private: |
| 585 FunctionWrapper m_functionWrapper; | 585 FunctionWrapper m_functionWrapper; |
| 586 typename ParamStorageTraits<P1>::StorageType m_p1; | 586 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 587 }; | 587 }; |
| 588 | 588 |
| 589 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 589 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
| 590 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL
: public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5)> { | 590 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final
: public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5)> { |
| 591 public: | 591 public: |
| 592 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 592 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
| 593 : m_functionWrapper(functionWrapper) | 593 : m_functionWrapper(functionWrapper) |
| 594 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 594 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 595 { | 595 { |
| 596 } | 596 } |
| 597 | 597 |
| 598 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5) OVERRIDE | 598 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5) override |
| 599 { | 599 { |
| 600 return m_functionWrapper(m_p1, p2, p3, p4, p5); | 600 return m_functionWrapper(m_p1, p2, p3, p4, p5); |
| 601 } | 601 } |
| 602 | 602 |
| 603 private: | 603 private: |
| 604 FunctionWrapper m_functionWrapper; | 604 FunctionWrapper m_functionWrapper; |
| 605 typename ParamStorageTraits<P1>::StorageType m_p1; | 605 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 606 }; | 606 }; |
| 607 | 607 |
| 608 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 608 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 609 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FI
NAL : public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5, P
6)> { | 609 class OneArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> fi
nal : public FunctionImpl<typename FunctionWrapper::ResultType(P2, P3, P4, P5, P
6)> { |
| 610 public: | 610 public: |
| 611 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 611 OneArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
| 612 : m_functionWrapper(functionWrapper) | 612 : m_functionWrapper(functionWrapper) |
| 613 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 613 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 614 { | 614 { |
| 615 } | 615 } |
| 616 | 616 |
| 617 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5, P6 p6) OVERRIDE | 617 virtual typename FunctionWrapper::ResultType operator()(P2 p2, P3 p3, P4 p4,
P5 p5, P6 p6) override |
| 618 { | 618 { |
| 619 return m_functionWrapper(m_p1, p2, p3, p4, p5, p6); | 619 return m_functionWrapper(m_p1, p2, p3, p4, p5, p6); |
| 620 } | 620 } |
| 621 | 621 |
| 622 private: | 622 private: |
| 623 FunctionWrapper m_functionWrapper; | 623 FunctionWrapper m_functionWrapper; |
| 624 typename ParamStorageTraits<P1>::StorageType m_p1; | 624 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 625 }; | 625 }; |
| 626 | 626 |
| 627 template<typename FunctionWrapper, typename FunctionType> | 627 template<typename FunctionWrapper, typename FunctionType> |
| 628 class TwoArgPartBoundFunctionImpl; | 628 class TwoArgPartBoundFunctionImpl; |
| 629 | 629 |
| 630 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 630 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
| 631 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public
FunctionImpl<typename FunctionWrapper::ResultType(P3)> { | 631 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public
FunctionImpl<typename FunctionWrapper::ResultType(P3)> { |
| 632 public: | 632 public: |
| 633 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 633 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
| 634 : m_functionWrapper(functionWrapper) | 634 : m_functionWrapper(functionWrapper) |
| 635 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 635 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 636 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 636 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 637 { | 637 { |
| 638 } | 638 } |
| 639 | 639 |
| 640 virtual typename FunctionWrapper::ResultType operator()(P3 p3) OVERRIDE | 640 virtual typename FunctionWrapper::ResultType operator()(P3 p3) override |
| 641 { | 641 { |
| 642 return m_functionWrapper(m_p1, m_p2, p3); | 642 return m_functionWrapper(m_p1, m_p2, p3); |
| 643 } | 643 } |
| 644 | 644 |
| 645 private: | 645 private: |
| 646 FunctionWrapper m_functionWrapper; | 646 FunctionWrapper m_functionWrapper; |
| 647 typename ParamStorageTraits<P1>::StorageType m_p1; | 647 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 648 typename ParamStorageTraits<P2>::StorageType m_p2; | 648 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 649 }; | 649 }; |
| 650 | 650 |
| 651 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 651 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
| 652 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P3, P4)> { | 652 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : pu
blic FunctionImpl<typename FunctionWrapper::ResultType(P3, P4)> { |
| 653 public: | 653 public: |
| 654 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 654 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
| 655 : m_functionWrapper(functionWrapper) | 655 : m_functionWrapper(functionWrapper) |
| 656 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 656 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 657 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 657 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 658 { | 658 { |
| 659 } | 659 } |
| 660 | 660 |
| 661 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4) OVERRI
DE | 661 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4) overri
de |
| 662 { | 662 { |
| 663 return m_functionWrapper(m_p1, m_p2, p3, p4); | 663 return m_functionWrapper(m_p1, m_p2, p3, p4); |
| 664 } | 664 } |
| 665 | 665 |
| 666 private: | 666 private: |
| 667 FunctionWrapper m_functionWrapper; | 667 FunctionWrapper m_functionWrapper; |
| 668 typename ParamStorageTraits<P1>::StorageType m_p1; | 668 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 669 typename ParamStorageTraits<P2>::StorageType m_p2; | 669 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 670 }; | 670 }; |
| 671 | 671 |
| 672 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 672 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
| 673 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL
: public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5)> { | 673 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final
: public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5)> { |
| 674 public: | 674 public: |
| 675 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 675 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
| 676 : m_functionWrapper(functionWrapper) | 676 : m_functionWrapper(functionWrapper) |
| 677 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 677 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 678 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 678 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 679 { | 679 { |
| 680 } | 680 } |
| 681 | 681 |
| 682 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5)
OVERRIDE | 682 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5)
override |
| 683 { | 683 { |
| 684 return m_functionWrapper(m_p1, m_p2, p3, p4, p5); | 684 return m_functionWrapper(m_p1, m_p2, p3, p4, p5); |
| 685 } | 685 } |
| 686 | 686 |
| 687 private: | 687 private: |
| 688 FunctionWrapper m_functionWrapper; | 688 FunctionWrapper m_functionWrapper; |
| 689 typename ParamStorageTraits<P1>::StorageType m_p1; | 689 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 690 typename ParamStorageTraits<P2>::StorageType m_p2; | 690 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 691 }; | 691 }; |
| 692 | 692 |
| 693 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 693 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 694 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FI
NAL : public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5, P6)>
{ | 694 class TwoArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> fi
nal : public FunctionImpl<typename FunctionWrapper::ResultType(P3, P4, P5, P6)>
{ |
| 695 public: | 695 public: |
| 696 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) | 696 TwoArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, c
onst P2& p2) |
| 697 : m_functionWrapper(functionWrapper) | 697 : m_functionWrapper(functionWrapper) |
| 698 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 698 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 699 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 699 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 700 { | 700 { |
| 701 } | 701 } |
| 702 | 702 |
| 703 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5,
P6 p6) OVERRIDE | 703 virtual typename FunctionWrapper::ResultType operator()(P3 p3, P4 p4, P5 p5,
P6 p6) override |
| 704 { | 704 { |
| 705 return m_functionWrapper(m_p1, m_p2, p3, p4, p5, p6); | 705 return m_functionWrapper(m_p1, m_p2, p3, p4, p5, p6); |
| 706 } | 706 } |
| 707 | 707 |
| 708 private: | 708 private: |
| 709 FunctionWrapper m_functionWrapper; | 709 FunctionWrapper m_functionWrapper; |
| 710 typename ParamStorageTraits<P1>::StorageType m_p1; | 710 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 711 typename ParamStorageTraits<P2>::StorageType m_p2; | 711 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 712 }; | 712 }; |
| 713 | 713 |
| 714 template<typename FunctionWrapper, typename FunctionType> | 714 template<typename FunctionWrapper, typename FunctionType> |
| 715 class ThreeArgPartBoundFunctionImpl; | 715 class ThreeArgPartBoundFunctionImpl; |
| 716 | 716 |
| 717 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 717 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
| 718 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL :
public FunctionImpl<typename FunctionWrapper::ResultType(P4)> { | 718 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final :
public FunctionImpl<typename FunctionWrapper::ResultType(P4)> { |
| 719 public: | 719 public: |
| 720 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) | 720 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) |
| 721 : m_functionWrapper(functionWrapper) | 721 : m_functionWrapper(functionWrapper) |
| 722 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 722 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 723 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 723 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 724 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 724 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 725 { | 725 { |
| 726 } | 726 } |
| 727 | 727 |
| 728 virtual typename FunctionWrapper::ResultType operator()(P4 p4) OVERRIDE | 728 virtual typename FunctionWrapper::ResultType operator()(P4 p4) override |
| 729 { | 729 { |
| 730 return m_functionWrapper(m_p1, m_p2, m_p3, p4); | 730 return m_functionWrapper(m_p1, m_p2, m_p3, p4); |
| 731 } | 731 } |
| 732 | 732 |
| 733 private: | 733 private: |
| 734 FunctionWrapper m_functionWrapper; | 734 FunctionWrapper m_functionWrapper; |
| 735 typename ParamStorageTraits<P1>::StorageType m_p1; | 735 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 736 typename ParamStorageTraits<P2>::StorageType m_p2; | 736 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 737 typename ParamStorageTraits<P3>::StorageType m_p3; | 737 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 738 }; | 738 }; |
| 739 | 739 |
| 740 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 740 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
| 741 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINA
L : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5)> { | 741 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> fina
l : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5)> { |
| 742 public: | 742 public: |
| 743 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) | 743 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) |
| 744 : m_functionWrapper(functionWrapper) | 744 : m_functionWrapper(functionWrapper) |
| 745 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 745 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 746 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 746 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 747 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 747 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 748 { | 748 { |
| 749 } | 749 } |
| 750 | 750 |
| 751 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5) OVERRI
DE | 751 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5) overri
de |
| 752 { | 752 { |
| 753 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5); | 753 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5); |
| 754 } | 754 } |
| 755 | 755 |
| 756 private: | 756 private: |
| 757 FunctionWrapper m_functionWrapper; | 757 FunctionWrapper m_functionWrapper; |
| 758 typename ParamStorageTraits<P1>::StorageType m_p1; | 758 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 759 typename ParamStorageTraits<P2>::StorageType m_p2; | 759 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 760 typename ParamStorageTraits<P3>::StorageType m_p3; | 760 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 761 }; | 761 }; |
| 762 | 762 |
| 763 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 763 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 764 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)>
FINAL : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5, P6)> { | 764 class ThreeArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)>
final : public FunctionImpl<typename FunctionWrapper::ResultType(P4, P5, P6)> { |
| 765 public: | 765 public: |
| 766 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) | 766 ThreeArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3) |
| 767 : m_functionWrapper(functionWrapper) | 767 : m_functionWrapper(functionWrapper) |
| 768 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 768 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 769 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 769 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 770 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 770 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 771 { | 771 { |
| 772 } | 772 } |
| 773 | 773 |
| 774 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5, P6 p6)
OVERRIDE | 774 virtual typename FunctionWrapper::ResultType operator()(P4 p4, P5 p5, P6 p6)
override |
| 775 { | 775 { |
| 776 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5, p6); | 776 return m_functionWrapper(m_p1, m_p2, m_p3, p4, p5, p6); |
| 777 } | 777 } |
| 778 | 778 |
| 779 private: | 779 private: |
| 780 FunctionWrapper m_functionWrapper; | 780 FunctionWrapper m_functionWrapper; |
| 781 typename ParamStorageTraits<P1>::StorageType m_p1; | 781 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 782 typename ParamStorageTraits<P2>::StorageType m_p2; | 782 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 783 typename ParamStorageTraits<P3>::StorageType m_p3; | 783 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 784 }; | 784 }; |
| 785 | 785 |
| 786 template<typename FunctionWrapper, typename FunctionType> | 786 template<typename FunctionWrapper, typename FunctionType> |
| 787 class FourArgPartBoundFunctionImpl; | 787 class FourArgPartBoundFunctionImpl; |
| 788 | 788 |
| 789 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 789 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
| 790 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL
: public FunctionImpl<typename FunctionWrapper::ResultType(P5)> { | 790 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final
: public FunctionImpl<typename FunctionWrapper::ResultType(P5)> { |
| 791 public: | 791 public: |
| 792 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) | 792 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) |
| 793 : m_functionWrapper(functionWrapper) | 793 : m_functionWrapper(functionWrapper) |
| 794 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 794 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 795 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 795 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 796 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 796 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 797 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 797 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
| 798 { | 798 { |
| 799 } | 799 } |
| 800 | 800 |
| 801 virtual typename FunctionWrapper::ResultType operator()(P5 p5) OVERRIDE | 801 virtual typename FunctionWrapper::ResultType operator()(P5 p5) override |
| 802 { | 802 { |
| 803 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5); | 803 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5); |
| 804 } | 804 } |
| 805 | 805 |
| 806 private: | 806 private: |
| 807 FunctionWrapper m_functionWrapper; | 807 FunctionWrapper m_functionWrapper; |
| 808 typename ParamStorageTraits<P1>::StorageType m_p1; | 808 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 809 typename ParamStorageTraits<P2>::StorageType m_p2; | 809 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 810 typename ParamStorageTraits<P3>::StorageType m_p3; | 810 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 811 typename ParamStorageTraits<P4>::StorageType m_p4; | 811 typename ParamStorageTraits<P4>::StorageType m_p4; |
| 812 }; | 812 }; |
| 813 | 813 |
| 814 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 814 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 815 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> F
INAL : public FunctionImpl<typename FunctionWrapper::ResultType(P5, P6)> { | 815 class FourArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> f
inal : public FunctionImpl<typename FunctionWrapper::ResultType(P5, P6)> { |
| 816 public: | 816 public: |
| 817 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) | 817 FourArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4) |
| 818 : m_functionWrapper(functionWrapper) | 818 : m_functionWrapper(functionWrapper) |
| 819 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 819 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 820 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 820 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 821 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 821 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 822 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 822 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
| 823 { | 823 { |
| 824 } | 824 } |
| 825 | 825 |
| 826 virtual typename FunctionWrapper::ResultType operator()(P5 p5, P6 p6) OVERRI
DE | 826 virtual typename FunctionWrapper::ResultType operator()(P5 p5, P6 p6) overri
de |
| 827 { | 827 { |
| 828 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5, p6); | 828 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, p5, p6); |
| 829 } | 829 } |
| 830 | 830 |
| 831 private: | 831 private: |
| 832 FunctionWrapper m_functionWrapper; | 832 FunctionWrapper m_functionWrapper; |
| 833 typename ParamStorageTraits<P1>::StorageType m_p1; | 833 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 834 typename ParamStorageTraits<P2>::StorageType m_p2; | 834 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 835 typename ParamStorageTraits<P3>::StorageType m_p3; | 835 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 836 typename ParamStorageTraits<P4>::StorageType m_p4; | 836 typename ParamStorageTraits<P4>::StorageType m_p4; |
| 837 }; | 837 }; |
| 838 | 838 |
| 839 template<typename FunctionWrapper, typename FunctionType> | 839 template<typename FunctionWrapper, typename FunctionType> |
| 840 class FiveArgPartBoundFunctionImpl; | 840 class FiveArgPartBoundFunctionImpl; |
| 841 | 841 |
| 842 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 842 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 843 class FiveArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> F
INAL : public FunctionImpl<typename FunctionWrapper::ResultType(P6)> { | 843 class FiveArgPartBoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> f
inal : public FunctionImpl<typename FunctionWrapper::ResultType(P6)> { |
| 844 public: | 844 public: |
| 845 FiveArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4, const P5& p5) | 845 FiveArgPartBoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1,
const P2& p2, const P3& p3, const P4& p4, const P5& p5) |
| 846 : m_functionWrapper(functionWrapper) | 846 : m_functionWrapper(functionWrapper) |
| 847 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 847 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 848 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 848 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 849 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 849 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 850 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 850 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
| 851 , m_p5(ParamStorageTraits<P5>::wrap(p5)) | 851 , m_p5(ParamStorageTraits<P5>::wrap(p5)) |
| 852 { | 852 { |
| 853 } | 853 } |
| 854 | 854 |
| 855 virtual typename FunctionWrapper::ResultType operator()(P6 p6) OVERRIDE | 855 virtual typename FunctionWrapper::ResultType operator()(P6 p6) override |
| 856 { | 856 { |
| 857 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, m_p5, p6); | 857 return m_functionWrapper(m_p1, m_p2, m_p3, m_p4, m_p5, p6); |
| 858 } | 858 } |
| 859 | 859 |
| 860 private: | 860 private: |
| 861 FunctionWrapper m_functionWrapper; | 861 FunctionWrapper m_functionWrapper; |
| 862 typename ParamStorageTraits<P1>::StorageType m_p1; | 862 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 863 typename ParamStorageTraits<P2>::StorageType m_p2; | 863 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 864 typename ParamStorageTraits<P3>::StorageType m_p3; | 864 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 865 typename ParamStorageTraits<P4>::StorageType m_p4; | 865 typename ParamStorageTraits<P4>::StorageType m_p4; |
| 866 typename ParamStorageTraits<P5>::StorageType m_p5; | 866 typename ParamStorageTraits<P5>::StorageType m_p5; |
| 867 }; | 867 }; |
| 868 | 868 |
| 869 template<typename FunctionWrapper, typename FunctionType> | 869 template<typename FunctionWrapper, typename FunctionType> |
| 870 class BoundFunctionImpl; | 870 class BoundFunctionImpl; |
| 871 | 871 |
| 872 template<typename FunctionWrapper, typename R> | 872 template<typename FunctionWrapper, typename R> |
| 873 class BoundFunctionImpl<FunctionWrapper, R()> FINAL : public FunctionImpl<typena
me FunctionWrapper::ResultType()> { | 873 class BoundFunctionImpl<FunctionWrapper, R()> final : public FunctionImpl<typena
me FunctionWrapper::ResultType()> { |
| 874 public: | 874 public: |
| 875 explicit BoundFunctionImpl(FunctionWrapper functionWrapper) | 875 explicit BoundFunctionImpl(FunctionWrapper functionWrapper) |
| 876 : m_functionWrapper(functionWrapper) | 876 : m_functionWrapper(functionWrapper) |
| 877 { | 877 { |
| 878 } | 878 } |
| 879 | 879 |
| 880 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 880 virtual typename FunctionWrapper::ResultType operator()() override |
| 881 { | 881 { |
| 882 return m_functionWrapper(); | 882 return m_functionWrapper(); |
| 883 } | 883 } |
| 884 | 884 |
| 885 private: | 885 private: |
| 886 FunctionWrapper m_functionWrapper; | 886 FunctionWrapper m_functionWrapper; |
| 887 }; | 887 }; |
| 888 | 888 |
| 889 template<typename FunctionWrapper, typename R, typename P1> | 889 template<typename FunctionWrapper, typename R, typename P1> |
| 890 class BoundFunctionImpl<FunctionWrapper, R(P1)> FINAL : public FunctionImpl<type
name FunctionWrapper::ResultType()> { | 890 class BoundFunctionImpl<FunctionWrapper, R(P1)> final : public FunctionImpl<type
name FunctionWrapper::ResultType()> { |
| 891 public: | 891 public: |
| 892 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) | 892 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1) |
| 893 : m_functionWrapper(functionWrapper) | 893 : m_functionWrapper(functionWrapper) |
| 894 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 894 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 895 { | 895 { |
| 896 } | 896 } |
| 897 | 897 |
| 898 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 898 virtual typename FunctionWrapper::ResultType operator()() override |
| 899 { | 899 { |
| 900 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1)); | 900 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1)); |
| 901 } | 901 } |
| 902 | 902 |
| 903 private: | 903 private: |
| 904 FunctionWrapper m_functionWrapper; | 904 FunctionWrapper m_functionWrapper; |
| 905 typename ParamStorageTraits<P1>::StorageType m_p1; | 905 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 906 }; | 906 }; |
| 907 | 907 |
| 908 template<typename FunctionWrapper, typename R, typename P1, typename P2> | 908 template<typename FunctionWrapper, typename R, typename P1, typename P2> |
| 909 class BoundFunctionImpl<FunctionWrapper, R(P1, P2)> FINAL : public FunctionImpl<
typename FunctionWrapper::ResultType()> { | 909 class BoundFunctionImpl<FunctionWrapper, R(P1, P2)> final : public FunctionImpl<
typename FunctionWrapper::ResultType()> { |
| 910 public: | 910 public: |
| 911 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2) | 911 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2) |
| 912 : m_functionWrapper(functionWrapper) | 912 : m_functionWrapper(functionWrapper) |
| 913 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 913 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 914 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 914 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 915 { | 915 { |
| 916 } | 916 } |
| 917 | 917 |
| 918 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 918 virtual typename FunctionWrapper::ResultType operator()() override |
| 919 { | 919 { |
| 920 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2)); | 920 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2)); |
| 921 } | 921 } |
| 922 | 922 |
| 923 private: | 923 private: |
| 924 FunctionWrapper m_functionWrapper; | 924 FunctionWrapper m_functionWrapper; |
| 925 typename ParamStorageTraits<P1>::StorageType m_p1; | 925 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 926 typename ParamStorageTraits<P2>::StorageType m_p2; | 926 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 927 }; | 927 }; |
| 928 | 928 |
| 929 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> | 929 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3> |
| 930 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> FINAL : public FunctionI
mpl<typename FunctionWrapper::ResultType()> { | 930 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3)> final : public FunctionI
mpl<typename FunctionWrapper::ResultType()> { |
| 931 public: | 931 public: |
| 932 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3) | 932 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3) |
| 933 : m_functionWrapper(functionWrapper) | 933 : m_functionWrapper(functionWrapper) |
| 934 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 934 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 935 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 935 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 936 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 936 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 937 { | 937 { |
| 938 } | 938 } |
| 939 | 939 |
| 940 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 940 virtual typename FunctionWrapper::ResultType operator()() override |
| 941 { | 941 { |
| 942 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3)); | 942 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3)); |
| 943 } | 943 } |
| 944 | 944 |
| 945 private: | 945 private: |
| 946 FunctionWrapper m_functionWrapper; | 946 FunctionWrapper m_functionWrapper; |
| 947 typename ParamStorageTraits<P1>::StorageType m_p1; | 947 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 948 typename ParamStorageTraits<P2>::StorageType m_p2; | 948 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 949 typename ParamStorageTraits<P3>::StorageType m_p3; | 949 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 950 }; | 950 }; |
| 951 | 951 |
| 952 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> | 952 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4> |
| 953 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> FINAL : public Funct
ionImpl<typename FunctionWrapper::ResultType()> { | 953 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4)> final : public Funct
ionImpl<typename FunctionWrapper::ResultType()> { |
| 954 public: | 954 public: |
| 955 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4) | 955 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4) |
| 956 : m_functionWrapper(functionWrapper) | 956 : m_functionWrapper(functionWrapper) |
| 957 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 957 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 958 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 958 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 959 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 959 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 960 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 960 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
| 961 { | 961 { |
| 962 } | 962 } |
| 963 | 963 |
| 964 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 964 virtual typename FunctionWrapper::ResultType operator()() override |
| 965 { | 965 { |
| 966 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4)); | 966 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4)); |
| 967 } | 967 } |
| 968 | 968 |
| 969 private: | 969 private: |
| 970 FunctionWrapper m_functionWrapper; | 970 FunctionWrapper m_functionWrapper; |
| 971 typename ParamStorageTraits<P1>::StorageType m_p1; | 971 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 972 typename ParamStorageTraits<P2>::StorageType m_p2; | 972 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 973 typename ParamStorageTraits<P3>::StorageType m_p3; | 973 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 974 typename ParamStorageTraits<P4>::StorageType m_p4; | 974 typename ParamStorageTraits<P4>::StorageType m_p4; |
| 975 }; | 975 }; |
| 976 | 976 |
| 977 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> | 977 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5> |
| 978 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> FINAL : public F
unctionImpl<typename FunctionWrapper::ResultType()> { | 978 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5)> final : public F
unctionImpl<typename FunctionWrapper::ResultType()> { |
| 979 public: | 979 public: |
| 980 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5) | 980 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5) |
| 981 : m_functionWrapper(functionWrapper) | 981 : m_functionWrapper(functionWrapper) |
| 982 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 982 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 983 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 983 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 984 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 984 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 985 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 985 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
| 986 , m_p5(ParamStorageTraits<P5>::wrap(p5)) | 986 , m_p5(ParamStorageTraits<P5>::wrap(p5)) |
| 987 { | 987 { |
| 988 } | 988 } |
| 989 | 989 |
| 990 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 990 virtual typename FunctionWrapper::ResultType operator()() override |
| 991 { | 991 { |
| 992 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5)); | 992 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5)); |
| 993 } | 993 } |
| 994 | 994 |
| 995 private: | 995 private: |
| 996 FunctionWrapper m_functionWrapper; | 996 FunctionWrapper m_functionWrapper; |
| 997 typename ParamStorageTraits<P1>::StorageType m_p1; | 997 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 998 typename ParamStorageTraits<P2>::StorageType m_p2; | 998 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 999 typename ParamStorageTraits<P3>::StorageType m_p3; | 999 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 1000 typename ParamStorageTraits<P4>::StorageType m_p4; | 1000 typename ParamStorageTraits<P4>::StorageType m_p4; |
| 1001 typename ParamStorageTraits<P5>::StorageType m_p5; | 1001 typename ParamStorageTraits<P5>::StorageType m_p5; |
| 1002 }; | 1002 }; |
| 1003 | 1003 |
| 1004 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> | 1004 template<typename FunctionWrapper, typename R, typename P1, typename P2, typenam
e P3, typename P4, typename P5, typename P6> |
| 1005 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> FINAL : publ
ic FunctionImpl<typename FunctionWrapper::ResultType()> { | 1005 class BoundFunctionImpl<FunctionWrapper, R(P1, P2, P3, P4, P5, P6)> final : publ
ic FunctionImpl<typename FunctionWrapper::ResultType()> { |
| 1006 public: | 1006 public: |
| 1007 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) | 1007 BoundFunctionImpl(FunctionWrapper functionWrapper, const P1& p1, const P2& p
2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) |
| 1008 : m_functionWrapper(functionWrapper) | 1008 : m_functionWrapper(functionWrapper) |
| 1009 , m_p1(ParamStorageTraits<P1>::wrap(p1)) | 1009 , m_p1(ParamStorageTraits<P1>::wrap(p1)) |
| 1010 , m_p2(ParamStorageTraits<P2>::wrap(p2)) | 1010 , m_p2(ParamStorageTraits<P2>::wrap(p2)) |
| 1011 , m_p3(ParamStorageTraits<P3>::wrap(p3)) | 1011 , m_p3(ParamStorageTraits<P3>::wrap(p3)) |
| 1012 , m_p4(ParamStorageTraits<P4>::wrap(p4)) | 1012 , m_p4(ParamStorageTraits<P4>::wrap(p4)) |
| 1013 , m_p5(ParamStorageTraits<P5>::wrap(p5)) | 1013 , m_p5(ParamStorageTraits<P5>::wrap(p5)) |
| 1014 , m_p6(ParamStorageTraits<P6>::wrap(p6)) | 1014 , m_p6(ParamStorageTraits<P6>::wrap(p6)) |
| 1015 { | 1015 { |
| 1016 } | 1016 } |
| 1017 | 1017 |
| 1018 virtual typename FunctionWrapper::ResultType operator()() OVERRIDE | 1018 virtual typename FunctionWrapper::ResultType operator()() override |
| 1019 { | 1019 { |
| 1020 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5), ParamStorageTrait
s<P6>::unwrap(m_p6)); | 1020 return m_functionWrapper(ParamStorageTraits<P1>::unwrap(m_p1), ParamStor
ageTraits<P2>::unwrap(m_p2), ParamStorageTraits<P3>::unwrap(m_p3), ParamStorageT
raits<P4>::unwrap(m_p4), ParamStorageTraits<P5>::unwrap(m_p5), ParamStorageTrait
s<P6>::unwrap(m_p6)); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 private: | 1023 private: |
| 1024 FunctionWrapper m_functionWrapper; | 1024 FunctionWrapper m_functionWrapper; |
| 1025 typename ParamStorageTraits<P1>::StorageType m_p1; | 1025 typename ParamStorageTraits<P1>::StorageType m_p1; |
| 1026 typename ParamStorageTraits<P2>::StorageType m_p2; | 1026 typename ParamStorageTraits<P2>::StorageType m_p2; |
| 1027 typename ParamStorageTraits<P3>::StorageType m_p3; | 1027 typename ParamStorageTraits<P3>::StorageType m_p3; |
| 1028 typename ParamStorageTraits<P4>::StorageType m_p4; | 1028 typename ParamStorageTraits<P4>::StorageType m_p4; |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 | 1365 |
| 1366 typedef Function<void()> Closure; | 1366 typedef Function<void()> Closure; |
| 1367 | 1367 |
| 1368 } | 1368 } |
| 1369 | 1369 |
| 1370 using WTF::Function; | 1370 using WTF::Function; |
| 1371 using WTF::bind; | 1371 using WTF::bind; |
| 1372 using WTF::Closure; | 1372 using WTF::Closure; |
| 1373 | 1373 |
| 1374 #endif // WTF_Functional_h | 1374 #endif // WTF_Functional_h |
| OLD | NEW |