| | 649 | /* EvalSwitch */ |
|---|
| | 650 | |
|---|
| | 651 | /* 1 Case Statement ---------------------------------------------------*/ |
|---|
| | 652 | |
|---|
| | 653 | template <bool CondB0, class MetaFuncT0, class MetaFuncDefaultT> |
|---|
| | 654 | struct EvalSwitch1; |
|---|
| | 655 | |
|---|
| | 656 | template <class MetaFuncT0, class MetaFuncDefaultT> |
|---|
| | 657 | struct EvalSwitch1<true, MetaFuncT0, MetaFuncDefaultT> |
|---|
| | 658 | : public MetaFuncT0 |
|---|
| | 659 | { |
|---|
| | 660 | }; |
|---|
| | 661 | |
|---|
| | 662 | template <class MetaFuncT0, class MetaFuncDefaultT> |
|---|
| | 663 | struct EvalSwitch1<false, MetaFuncT0, MetaFuncDefaultT> |
|---|
| | 664 | : public MetaFuncDefaultT |
|---|
| | 665 | { |
|---|
| | 666 | }; |
|---|
| | 667 | |
|---|
| | 668 | /* 2 Case Statements --------------------------------------------------*/ |
|---|
| | 669 | |
|---|
| | 670 | template <bool CondB0, class MetaFuncT0, |
|---|
| | 671 | bool CondB1, class MetaFuncT1, class MetaFuncDefaultT> |
|---|
| | 672 | struct EvalSwitch2; |
|---|
| | 673 | |
|---|
| | 674 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncDefaultT> |
|---|
| | 675 | struct EvalSwitch2<true, MetaFuncT0, |
|---|
| | 676 | false, MetaFuncT1, MetaFuncDefaultT> |
|---|
| | 677 | : public MetaFuncT0 |
|---|
| | 678 | { |
|---|
| | 679 | }; |
|---|
| | 680 | |
|---|
| | 681 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncDefaultT> |
|---|
| | 682 | struct EvalSwitch2<false, MetaFuncT0, |
|---|
| | 683 | true, MetaFuncT1, MetaFuncDefaultT> |
|---|
| | 684 | : public MetaFuncT1 |
|---|
| | 685 | { |
|---|
| | 686 | }; |
|---|
| | 687 | |
|---|
| | 688 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncDefaultT> |
|---|
| | 689 | struct EvalSwitch2<false, MetaFuncT0, |
|---|
| | 690 | false, MetaFuncT1, MetaFuncDefaultT> |
|---|
| | 691 | : public MetaFuncDefaultT |
|---|
| | 692 | { |
|---|
| | 693 | }; |
|---|
| | 694 | |
|---|
| | 695 | /* 3 Case Statements --------------------------------------------------*/ |
|---|
| | 696 | |
|---|
| | 697 | template <bool CondB0, class MetaFuncT0, |
|---|
| | 698 | bool CondB1, class MetaFuncT1, |
|---|
| | 699 | bool CondB2, class MetaFuncT2, class MetaFuncDefaultT> |
|---|
| | 700 | struct EvalSwitch3; |
|---|
| | 701 | |
|---|
| | 702 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 703 | class MetaFuncDefaultT> |
|---|
| | 704 | struct EvalSwitch3<true, MetaFuncT0, |
|---|
| | 705 | false, MetaFuncT1, |
|---|
| | 706 | false, MetaFuncT2, MetaFuncDefaultT> |
|---|
| | 707 | : public MetaFuncT0 |
|---|
| | 708 | { |
|---|
| | 709 | }; |
|---|
| | 710 | |
|---|
| | 711 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 712 | class MetaFuncDefaultT> |
|---|
| | 713 | struct EvalSwitch3<false, MetaFuncT0, |
|---|
| | 714 | true, MetaFuncT1, |
|---|
| | 715 | false, MetaFuncT2, MetaFuncDefaultT> |
|---|
| | 716 | : public MetaFuncT1 |
|---|
| | 717 | { |
|---|
| | 718 | }; |
|---|
| | 719 | |
|---|
| | 720 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 721 | class MetaFuncDefaultT> |
|---|
| | 722 | struct EvalSwitch3<false, MetaFuncT0, |
|---|
| | 723 | false, MetaFuncT1, |
|---|
| | 724 | true, MetaFuncT2, MetaFuncDefaultT> |
|---|
| | 725 | : public MetaFuncT2 |
|---|
| | 726 | { |
|---|
| | 727 | }; |
|---|
| | 728 | |
|---|
| | 729 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 730 | class MetaFuncDefaultT> |
|---|
| | 731 | struct EvalSwitch3<false, MetaFuncT0, |
|---|
| | 732 | false, MetaFuncT1, |
|---|
| | 733 | false, MetaFuncT2, MetaFuncDefaultT> |
|---|
| | 734 | : public MetaFuncDefaultT |
|---|
| | 735 | { |
|---|
| | 736 | }; |
|---|
| | 737 | |
|---|
| | 738 | /* 4 Case Statements --------------------------------------------------*/ |
|---|
| | 739 | |
|---|
| | 740 | template <bool CondB0, class MetaFuncT0, |
|---|
| | 741 | bool CondB1, class MetaFuncT1, |
|---|
| | 742 | bool CondB2, class MetaFuncT2, |
|---|
| | 743 | bool CondB3, class MetaFuncT3, class MetaFuncDefaultT> |
|---|
| | 744 | struct EvalSwitch4; |
|---|
| | 745 | |
|---|
| | 746 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 747 | class MetaFuncT3, class MetaFuncDefaultT> |
|---|
| | 748 | struct EvalSwitch4<true, MetaFuncT0, |
|---|
| | 749 | false, MetaFuncT1, |
|---|
| | 750 | false, MetaFuncT2, |
|---|
| | 751 | false, MetaFuncT3, MetaFuncDefaultT> |
|---|
| | 752 | : public MetaFuncT0 |
|---|
| | 753 | { |
|---|
| | 754 | }; |
|---|
| | 755 | |
|---|
| | 756 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 757 | class MetaFuncT3, class MetaFuncDefaultT> |
|---|
| | 758 | struct EvalSwitch4<false, MetaFuncT0, |
|---|
| | 759 | true, MetaFuncT1, |
|---|
| | 760 | false, MetaFuncT2, |
|---|
| | 761 | false, MetaFuncT3, MetaFuncDefaultT> |
|---|
| | 762 | : public MetaFuncT1 |
|---|
| | 763 | { |
|---|
| | 764 | }; |
|---|
| | 765 | |
|---|
| | 766 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 767 | class MetaFuncT3, class MetaFuncDefaultT> |
|---|
| | 768 | struct EvalSwitch4<false, MetaFuncT0, |
|---|
| | 769 | false, MetaFuncT1, |
|---|
| | 770 | true, MetaFuncT2, |
|---|
| | 771 | false, MetaFuncT3, MetaFuncDefaultT> |
|---|
| | 772 | : public MetaFuncT2 |
|---|
| | 773 | { |
|---|
| | 774 | }; |
|---|
| | 775 | |
|---|
| | 776 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 777 | class MetaFuncT3, class MetaFuncDefaultT> |
|---|
| | 778 | struct EvalSwitch4<false, MetaFuncT0, |
|---|
| | 779 | false, MetaFuncT1, |
|---|
| | 780 | false, MetaFuncT2, |
|---|
| | 781 | true, MetaFuncT3, MetaFuncDefaultT> |
|---|
| | 782 | : public MetaFuncT3 |
|---|
| | 783 | { |
|---|
| | 784 | }; |
|---|
| | 785 | |
|---|
| | 786 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 787 | class MetaFuncT3, class MetaFuncDefaultT> |
|---|
| | 788 | struct EvalSwitch4<false, MetaFuncT0, |
|---|
| | 789 | false, MetaFuncT1, |
|---|
| | 790 | false, MetaFuncT2, |
|---|
| | 791 | false, MetaFuncT3, MetaFuncDefaultT> |
|---|
| | 792 | : public MetaFuncDefaultT |
|---|
| | 793 | { |
|---|
| | 794 | }; |
|---|
| | 795 | |
|---|
| | 796 | /* 5 Case Statements --------------------------------------------------*/ |
|---|
| | 797 | |
|---|
| | 798 | template <bool CondB0, class MetaFuncT0, |
|---|
| | 799 | bool CondB1, class MetaFuncT1, |
|---|
| | 800 | bool CondB2, class MetaFuncT2, |
|---|
| | 801 | bool CondB3, class MetaFuncT3, |
|---|
| | 802 | bool CondB4, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 803 | struct EvalSwitch5; |
|---|
| | 804 | |
|---|
| | 805 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 806 | class MetaFuncT3, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 807 | struct EvalSwitch5<true, MetaFuncT0, |
|---|
| | 808 | false, MetaFuncT1, |
|---|
| | 809 | false, MetaFuncT2, |
|---|
| | 810 | false, MetaFuncT3, |
|---|
| | 811 | false, MetaFuncT4, MetaFuncDefaultT> |
|---|
| | 812 | : public MetaFuncT0 |
|---|
| | 813 | { |
|---|
| | 814 | }; |
|---|
| | 815 | |
|---|
| | 816 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 817 | class MetaFuncT3, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 818 | struct EvalSwitch5<false, MetaFuncT0, |
|---|
| | 819 | true, MetaFuncT1, |
|---|
| | 820 | false, MetaFuncT2, |
|---|
| | 821 | false, MetaFuncT3, |
|---|
| | 822 | false, MetaFuncT4, MetaFuncDefaultT> |
|---|
| | 823 | : public MetaFuncT1 |
|---|
| | 824 | { |
|---|
| | 825 | }; |
|---|
| | 826 | |
|---|
| | 827 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 828 | class MetaFuncT3, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 829 | struct EvalSwitch5<false, MetaFuncT0, |
|---|
| | 830 | false, MetaFuncT1, |
|---|
| | 831 | true, MetaFuncT2, |
|---|
| | 832 | false, MetaFuncT3, |
|---|
| | 833 | false, MetaFuncT4, MetaFuncDefaultT> |
|---|
| | 834 | : public MetaFuncT2 |
|---|
| | 835 | { |
|---|
| | 836 | }; |
|---|
| | 837 | |
|---|
| | 838 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 839 | class MetaFuncT3, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 840 | struct EvalSwitch5<false, MetaFuncT0, |
|---|
| | 841 | false, MetaFuncT1, |
|---|
| | 842 | false, MetaFuncT2, |
|---|
| | 843 | true, MetaFuncT3, |
|---|
| | 844 | false, MetaFuncT4, MetaFuncDefaultT> |
|---|
| | 845 | : public MetaFuncT3 |
|---|
| | 846 | { |
|---|
| | 847 | }; |
|---|
| | 848 | |
|---|
| | 849 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 850 | class MetaFuncT3, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 851 | struct EvalSwitch5<false, MetaFuncT0, |
|---|
| | 852 | false, MetaFuncT1, |
|---|
| | 853 | false, MetaFuncT2, |
|---|
| | 854 | false, MetaFuncT3, |
|---|
| | 855 | true, MetaFuncT4, MetaFuncDefaultT> |
|---|
| | 856 | : public MetaFuncT4 |
|---|
| | 857 | { |
|---|
| | 858 | }; |
|---|
| | 859 | |
|---|
| | 860 | template <class MetaFuncT0, class MetaFuncT1, class MetaFuncT2, |
|---|
| | 861 | class MetaFuncT3, class MetaFuncT4, class MetaFuncDefaultT> |
|---|
| | 862 | struct EvalSwitch5<false, MetaFuncT0, |
|---|
| | 863 | false, MetaFuncT1, |
|---|
| | 864 | false, MetaFuncT2, |
|---|
| | 865 | false, MetaFuncT3, |
|---|
| | 866 | false, MetaFuncT4, MetaFuncDefaultT> |
|---|
| | 867 | : public MetaFuncDefaultT |
|---|
| | 868 | { |
|---|
| | 869 | }; |
|---|
| | 870 | |
|---|
| | 871 | /*---------------------------------------------------------------------*/ |
|---|