grpc 1.56.2 → 1.57.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +29 -22
  3. data/include/grpc/event_engine/event_engine.h +22 -32
  4. data/include/grpc/impl/grpc_types.h +3 -0
  5. data/include/grpc/support/port_platform.h +29 -23
  6. data/src/core/ext/filters/client_channel/client_channel.cc +44 -8
  7. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  8. data/src/core/ext/filters/client_channel/http_proxy.cc +5 -0
  9. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +21 -52
  10. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +19 -7
  11. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +25 -35
  12. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +78 -132
  13. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +2 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +4 -3
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +38 -15
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +3 -5
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +22 -6
  19. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +97 -71
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -16
  22. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +56 -11
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +25 -0
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -32
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +4 -6
  26. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +20 -79
  27. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +31 -19
  29. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -41
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -67
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +31 -74
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +7 -51
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +16 -87
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +16 -50
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -74
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -4
  39. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +69 -59
  40. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +7 -2
  41. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
  42. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +25 -13
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +366 -311
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +17 -1
  45. data/src/core/ext/filters/client_channel/retry_filter.cc +39 -2498
  46. data/src/core/ext/filters/client_channel/retry_filter.h +91 -1
  47. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2052 -0
  48. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
  49. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +38 -58
  50. data/src/core/ext/filters/client_channel/subchannel.h +3 -3
  51. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
  52. data/src/core/ext/filters/rbac/rbac_filter.cc +40 -111
  53. data/src/core/ext/filters/rbac/rbac_filter.h +12 -30
  54. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +162 -86
  55. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -6
  56. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -4
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -186
  58. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
  59. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
  60. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -3
  61. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -3
  62. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -8
  63. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
  64. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -2
  65. data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -3
  67. data/src/core/ext/transport/chttp2/transport/writing.cc +2 -3
  68. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -6
  69. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +143 -0
  70. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -9
  71. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -39
  72. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +13 -8
  73. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +35 -6
  74. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +17 -13
  75. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +85 -20
  76. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +26 -7
  77. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +45 -3
  78. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +4 -3
  79. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +21 -0
  80. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +30 -6
  81. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +180 -0
  82. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +558 -0
  83. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +2710 -0
  84. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +30 -11
  85. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +53 -24
  86. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +30 -5
  87. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +110 -0
  88. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +41 -15
  89. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +150 -27
  90. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +1 -0
  91. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +47 -0
  92. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +93 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +88 -76
  94. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +11 -12
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -5
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +162 -160
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +129 -118
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +141 -135
  100. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +19 -12
  101. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +38 -30
  102. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
  103. data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.c +402 -0
  104. data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.h +111 -0
  105. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +80 -74
  106. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +63 -47
  107. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -0
  108. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +315 -293
  109. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
  110. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -29
  111. data/src/core/ext/xds/xds_bootstrap_grpc.cc +33 -30
  112. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -13
  113. data/src/core/ext/xds/xds_client_grpc.cc +11 -6
  114. data/src/core/ext/xds/xds_client_grpc.h +16 -2
  115. data/src/core/ext/xds/xds_client_stats.h +10 -0
  116. data/src/core/ext/xds/xds_cluster.cc +26 -16
  117. data/src/core/ext/xds/xds_endpoint.cc +4 -7
  118. data/src/core/ext/xds/xds_health_status.cc +0 -17
  119. data/src/core/ext/xds/xds_health_status.h +5 -25
  120. data/src/core/ext/xds/xds_lb_policy_registry.cc +39 -0
  121. data/src/core/ext/xds/xds_route_config.cc +4 -0
  122. data/src/core/ext/xds/xds_transport_grpc.cc +1 -3
  123. data/src/core/lib/address_utils/parse_address.cc +63 -1
  124. data/src/core/lib/address_utils/parse_address.h +8 -0
  125. data/src/core/lib/address_utils/sockaddr_utils.cc +46 -1
  126. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  127. data/src/core/lib/channel/channel_args.cc +21 -10
  128. data/src/core/lib/channel/channel_args.h +3 -0
  129. data/src/core/lib/channel/connected_channel.cc +4 -1
  130. data/src/core/lib/channel/promise_based_filter.h +1 -0
  131. data/src/core/lib/debug/trace.cc +1 -4
  132. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -1
  133. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  134. data/src/core/lib/event_engine/event_engine.cc +0 -12
  135. data/src/core/lib/event_engine/forkable.cc +47 -42
  136. data/src/core/lib/event_engine/handle_containers.h +0 -4
  137. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -6
  138. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -6
  139. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +25 -11
  140. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -1
  141. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +2 -1
  142. data/src/core/lib/event_engine/posix_engine/posix_engine.h +8 -12
  143. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +37 -27
  144. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -0
  145. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -2
  146. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +42 -2
  147. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +6 -0
  148. data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
  149. data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -7
  150. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
  151. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +90 -37
  152. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +32 -12
  153. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +12 -21
  154. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +8 -12
  155. data/src/core/lib/event_engine/windows/windows_endpoint.cc +55 -54
  156. data/src/core/lib/event_engine/windows/windows_endpoint.h +15 -12
  157. data/src/core/lib/event_engine/windows/windows_engine.cc +2 -1
  158. data/src/core/lib/event_engine/windows/windows_engine.h +8 -12
  159. data/src/core/lib/experiments/config.cc +60 -22
  160. data/src/core/lib/experiments/config.h +20 -8
  161. data/src/core/lib/experiments/experiments.cc +278 -0
  162. data/src/core/lib/experiments/experiments.h +59 -1
  163. data/src/core/lib/gprpp/dual_ref_counted.h +9 -9
  164. data/src/core/lib/gprpp/fork.cc +8 -9
  165. data/src/core/lib/gprpp/fork.h +6 -5
  166. data/src/core/lib/gprpp/if_list.h +4530 -0
  167. data/src/core/lib/gprpp/orphanable.h +3 -3
  168. data/src/core/lib/gprpp/ref_counted.h +6 -6
  169. data/src/core/lib/gprpp/sorted_pack.h +3 -12
  170. data/src/core/lib/gprpp/status_helper.h +16 -15
  171. data/src/core/lib/gprpp/time.h +12 -0
  172. data/src/core/lib/gprpp/type_list.h +32 -0
  173. data/src/core/lib/http/httpcli.h +6 -9
  174. data/src/core/lib/iomgr/error.cc +32 -2
  175. data/src/core/lib/iomgr/error.h +9 -10
  176. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
  177. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  178. data/src/core/lib/iomgr/exec_ctx.h +11 -0
  179. data/src/core/lib/iomgr/pollset.h +4 -5
  180. data/src/core/lib/iomgr/port.h +10 -0
  181. data/src/core/lib/iomgr/resolve_address.cc +13 -1
  182. data/src/core/lib/iomgr/resolve_address.h +17 -3
  183. data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
  184. data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -0
  185. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -0
  186. data/src/core/lib/iomgr/socket_utils_posix.h +6 -0
  187. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -1
  188. data/src/core/lib/iomgr/tcp_posix.cc +21 -4
  189. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -2
  190. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -2
  191. data/src/core/lib/iomgr/tcp_windows.cc +1 -3
  192. data/src/core/lib/iomgr/vsock.cc +59 -0
  193. data/src/core/lib/iomgr/vsock.h +38 -0
  194. data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
  195. data/src/core/lib/load_balancing/delegating_helper.h +115 -0
  196. data/src/core/lib/load_balancing/lb_policy.h +20 -0
  197. data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
  198. data/src/core/lib/promise/party.h +1 -1
  199. data/src/core/lib/resolver/resolver_factory.h +3 -2
  200. data/src/core/lib/resolver/server_address.cc +9 -94
  201. data/src/core/lib/resolver/server_address.h +10 -64
  202. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  203. data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
  204. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
  205. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  206. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -1
  207. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -1
  208. data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -0
  209. data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
  210. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
  211. data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
  212. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
  213. data/src/core/lib/service_config/service_config_call_data.h +5 -0
  214. data/src/core/lib/slice/slice.h +16 -0
  215. data/src/core/lib/surface/call.cc +31 -29
  216. data/src/core/lib/surface/server.h +2 -2
  217. data/src/core/lib/surface/version.cc +2 -2
  218. data/src/core/lib/transport/metadata_batch.cc +7 -7
  219. data/src/core/lib/transport/metadata_batch.h +86 -48
  220. data/src/core/lib/transport/parsed_metadata.h +34 -20
  221. data/src/core/lib/transport/simple_slice_based_metadata.h +9 -2
  222. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
  223. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -2
  224. data/src/core/tsi/ssl_transport_security.cc +28 -7
  225. data/src/ruby/bin/math_pb.rb +24 -18
  226. data/src/ruby/ext/grpc/extconf.rb +19 -18
  227. data/src/ruby/ext/grpc/rb_call.c +62 -39
  228. data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
  229. data/src/ruby/ext/grpc/rb_channel.c +126 -49
  230. data/src/ruby/ext/grpc/rb_channel.h +1 -0
  231. data/src/ruby/ext/grpc/rb_channel_args.c +16 -2
  232. data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
  233. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  234. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  235. data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
  236. data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
  237. data/src/ruby/ext/grpc/rb_grpc.c +192 -30
  238. data/src/ruby/ext/grpc/rb_grpc.h +8 -2
  239. data/src/ruby/ext/grpc/rb_server.c +62 -45
  240. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  241. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  242. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  243. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  244. data/src/ruby/lib/grpc/version.rb +1 -1
  245. data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
  246. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
  247. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +25 -111
  248. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
  249. data/third_party/boringssl-with-bazel/err_data.c +552 -552
  250. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +5 -5
  251. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
  252. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +4 -1
  253. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -3
  254. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +7 -8
  255. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +2 -2
  256. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -2
  257. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +8 -8
  258. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +2 -2
  259. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -2
  260. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
  262. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +28 -185
  263. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
  264. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
  265. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -0
  266. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +49 -46
  267. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +18 -0
  268. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2809 -7417
  269. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +27 -5
  270. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
  271. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
  272. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
  273. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +15 -14
  274. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +13 -10
  275. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
  276. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
  277. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
  278. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
  279. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
  280. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
  281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -1
  282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
  283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
  284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
  285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
  286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
  287. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
  288. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
  289. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +2 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  291. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +180 -404
  292. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +3 -3
  293. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +24 -57
  294. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
  295. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +33 -71
  296. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +18 -17
  297. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -7
  298. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +15 -18
  299. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +9 -11
  300. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
  301. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +11 -27
  302. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +8 -8
  303. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +4 -4
  304. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
  305. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +1 -1
  306. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
  307. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
  308. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
  309. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -29
  310. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +55 -0
  311. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +33 -52
  312. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +3 -8
  313. data/third_party/boringssl-with-bazel/src/crypto/internal.h +198 -79
  314. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +5 -4
  315. data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
  316. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -23
  317. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
  318. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
  319. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
  320. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
  321. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  322. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
  323. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
  324. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +48 -0
  325. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fuchsia.c → ios.c} +8 -8
  326. data/third_party/boringssl-with-bazel/src/crypto/{refcount_no_threads.c → rand_extra/trusty.c} +15 -19
  327. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
  328. data/third_party/boringssl-with-bazel/src/crypto/{refcount_c11.c → refcount.c} +11 -17
  329. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +147 -72
  330. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
  331. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
  332. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
  333. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +14 -18
  334. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +54 -143
  335. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +7 -13
  336. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +1 -1
  337. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -1
  338. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +2 -4
  339. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +2 -2
  340. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +1 -1
  341. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
  342. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +19 -20
  343. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -15
  344. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -5
  345. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
  346. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
  347. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -3
  348. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +4 -6
  349. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
  350. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
  351. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +5 -0
  352. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -116
  353. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
  354. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
  355. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
  356. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
  357. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +21 -2
  358. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
  359. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +11 -7
  360. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
  361. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -61
  362. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +127 -81
  363. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +224 -209
  364. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +154 -0
  365. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -29
  366. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +4 -4
  367. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +3 -2
  368. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +9 -65
  369. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
  370. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  371. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -11
  372. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +24 -18
  373. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +37 -30
  374. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +125 -26
  375. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
  376. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
  377. data/third_party/upb/upb/collections/map.c +3 -3
  378. metadata +27 -12
  379. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
  380. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
  381. data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
  382. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
  383. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +0 -89
@@ -0,0 +1,4530 @@
1
+ // Copyright 2023 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ //
16
+ // Automatically generated by tools/codegen/core/gen_if_list.py
17
+ //
18
+
19
+ #ifndef GRPC_SRC_CORE_LIB_GPRPP_IF_LIST_H
20
+ #define GRPC_SRC_CORE_LIB_GPRPP_IF_LIST_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ namespace grpc_core {
25
+
26
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
27
+ typename Check0, typename Action0>
28
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
29
+ Check0 check0, Action0 action0) {
30
+ if (check0(input)) return action0(action_arg);
31
+ return action_fail(action_arg);
32
+ }
33
+
34
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
35
+ typename Check0, typename Check1, typename Action0, typename Action1>
36
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
37
+ Check0 check0, Check1 check1, Action0 action0, Action1 action1) {
38
+ if (check0(input)) return action0(action_arg);
39
+ if (check1(input)) return action1(action_arg);
40
+ return action_fail(action_arg);
41
+ }
42
+
43
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
44
+ typename Check0, typename Check1, typename Check2, typename Action0,
45
+ typename Action1, typename Action2>
46
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
47
+ Check0 check0, Check1 check1, Check2 check2, Action0 action0,
48
+ Action1 action1, Action2 action2) {
49
+ if (check0(input)) return action0(action_arg);
50
+ if (check1(input)) return action1(action_arg);
51
+ if (check2(input)) return action2(action_arg);
52
+ return action_fail(action_arg);
53
+ }
54
+
55
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
56
+ typename Check0, typename Check1, typename Check2, typename Check3,
57
+ typename Action0, typename Action1, typename Action2,
58
+ typename Action3>
59
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
60
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
61
+ Action0 action0, Action1 action1, Action2 action2,
62
+ Action3 action3) {
63
+ if (check0(input)) return action0(action_arg);
64
+ if (check1(input)) return action1(action_arg);
65
+ if (check2(input)) return action2(action_arg);
66
+ if (check3(input)) return action3(action_arg);
67
+ return action_fail(action_arg);
68
+ }
69
+
70
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
71
+ typename Check0, typename Check1, typename Check2, typename Check3,
72
+ typename Check4, typename Action0, typename Action1, typename Action2,
73
+ typename Action3, typename Action4>
74
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
75
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
76
+ Check4 check4, Action0 action0, Action1 action1, Action2 action2,
77
+ Action3 action3, Action4 action4) {
78
+ if (check0(input)) return action0(action_arg);
79
+ if (check1(input)) return action1(action_arg);
80
+ if (check2(input)) return action2(action_arg);
81
+ if (check3(input)) return action3(action_arg);
82
+ if (check4(input)) return action4(action_arg);
83
+ return action_fail(action_arg);
84
+ }
85
+
86
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
87
+ typename Check0, typename Check1, typename Check2, typename Check3,
88
+ typename Check4, typename Check5, typename Action0, typename Action1,
89
+ typename Action2, typename Action3, typename Action4,
90
+ typename Action5>
91
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
92
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
93
+ Check4 check4, Check5 check5, Action0 action0, Action1 action1,
94
+ Action2 action2, Action3 action3, Action4 action4,
95
+ Action5 action5) {
96
+ if (check0(input)) return action0(action_arg);
97
+ if (check1(input)) return action1(action_arg);
98
+ if (check2(input)) return action2(action_arg);
99
+ if (check3(input)) return action3(action_arg);
100
+ if (check4(input)) return action4(action_arg);
101
+ if (check5(input)) return action5(action_arg);
102
+ return action_fail(action_arg);
103
+ }
104
+
105
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
106
+ typename Check0, typename Check1, typename Check2, typename Check3,
107
+ typename Check4, typename Check5, typename Check6, typename Action0,
108
+ typename Action1, typename Action2, typename Action3,
109
+ typename Action4, typename Action5, typename Action6>
110
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
111
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
112
+ Check4 check4, Check5 check5, Check6 check6, Action0 action0,
113
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
114
+ Action5 action5, Action6 action6) {
115
+ if (check0(input)) return action0(action_arg);
116
+ if (check1(input)) return action1(action_arg);
117
+ if (check2(input)) return action2(action_arg);
118
+ if (check3(input)) return action3(action_arg);
119
+ if (check4(input)) return action4(action_arg);
120
+ if (check5(input)) return action5(action_arg);
121
+ if (check6(input)) return action6(action_arg);
122
+ return action_fail(action_arg);
123
+ }
124
+
125
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
126
+ typename Check0, typename Check1, typename Check2, typename Check3,
127
+ typename Check4, typename Check5, typename Check6, typename Check7,
128
+ typename Action0, typename Action1, typename Action2,
129
+ typename Action3, typename Action4, typename Action5,
130
+ typename Action6, typename Action7>
131
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
132
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
133
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
134
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
135
+ Action4 action4, Action5 action5, Action6 action6,
136
+ Action7 action7) {
137
+ if (check0(input)) return action0(action_arg);
138
+ if (check1(input)) return action1(action_arg);
139
+ if (check2(input)) return action2(action_arg);
140
+ if (check3(input)) return action3(action_arg);
141
+ if (check4(input)) return action4(action_arg);
142
+ if (check5(input)) return action5(action_arg);
143
+ if (check6(input)) return action6(action_arg);
144
+ if (check7(input)) return action7(action_arg);
145
+ return action_fail(action_arg);
146
+ }
147
+
148
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
149
+ typename Check0, typename Check1, typename Check2, typename Check3,
150
+ typename Check4, typename Check5, typename Check6, typename Check7,
151
+ typename Check8, typename Action0, typename Action1, typename Action2,
152
+ typename Action3, typename Action4, typename Action5,
153
+ typename Action6, typename Action7, typename Action8>
154
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
155
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
156
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
157
+ Check8 check8, Action0 action0, Action1 action1, Action2 action2,
158
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
159
+ Action7 action7, Action8 action8) {
160
+ if (check0(input)) return action0(action_arg);
161
+ if (check1(input)) return action1(action_arg);
162
+ if (check2(input)) return action2(action_arg);
163
+ if (check3(input)) return action3(action_arg);
164
+ if (check4(input)) return action4(action_arg);
165
+ if (check5(input)) return action5(action_arg);
166
+ if (check6(input)) return action6(action_arg);
167
+ if (check7(input)) return action7(action_arg);
168
+ if (check8(input)) return action8(action_arg);
169
+ return action_fail(action_arg);
170
+ }
171
+
172
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
173
+ typename Check0, typename Check1, typename Check2, typename Check3,
174
+ typename Check4, typename Check5, typename Check6, typename Check7,
175
+ typename Check8, typename Check9, typename Action0, typename Action1,
176
+ typename Action2, typename Action3, typename Action4,
177
+ typename Action5, typename Action6, typename Action7,
178
+ typename Action8, typename Action9>
179
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
180
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
181
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
182
+ Check8 check8, Check9 check9, Action0 action0, Action1 action1,
183
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
184
+ Action6 action6, Action7 action7, Action8 action8,
185
+ Action9 action9) {
186
+ if (check0(input)) return action0(action_arg);
187
+ if (check1(input)) return action1(action_arg);
188
+ if (check2(input)) return action2(action_arg);
189
+ if (check3(input)) return action3(action_arg);
190
+ if (check4(input)) return action4(action_arg);
191
+ if (check5(input)) return action5(action_arg);
192
+ if (check6(input)) return action6(action_arg);
193
+ if (check7(input)) return action7(action_arg);
194
+ if (check8(input)) return action8(action_arg);
195
+ if (check9(input)) return action9(action_arg);
196
+ return action_fail(action_arg);
197
+ }
198
+
199
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
200
+ typename Check0, typename Check1, typename Check2, typename Check3,
201
+ typename Check4, typename Check5, typename Check6, typename Check7,
202
+ typename Check8, typename Check9, typename Check10, typename Action0,
203
+ typename Action1, typename Action2, typename Action3,
204
+ typename Action4, typename Action5, typename Action6,
205
+ typename Action7, typename Action8, typename Action9,
206
+ typename Action10>
207
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
208
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
209
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
210
+ Check8 check8, Check9 check9, Check10 check10, Action0 action0,
211
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
212
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
213
+ Action9 action9, Action10 action10) {
214
+ if (check0(input)) return action0(action_arg);
215
+ if (check1(input)) return action1(action_arg);
216
+ if (check2(input)) return action2(action_arg);
217
+ if (check3(input)) return action3(action_arg);
218
+ if (check4(input)) return action4(action_arg);
219
+ if (check5(input)) return action5(action_arg);
220
+ if (check6(input)) return action6(action_arg);
221
+ if (check7(input)) return action7(action_arg);
222
+ if (check8(input)) return action8(action_arg);
223
+ if (check9(input)) return action9(action_arg);
224
+ if (check10(input)) return action10(action_arg);
225
+ return action_fail(action_arg);
226
+ }
227
+
228
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
229
+ typename Check0, typename Check1, typename Check2, typename Check3,
230
+ typename Check4, typename Check5, typename Check6, typename Check7,
231
+ typename Check8, typename Check9, typename Check10, typename Check11,
232
+ typename Action0, typename Action1, typename Action2,
233
+ typename Action3, typename Action4, typename Action5,
234
+ typename Action6, typename Action7, typename Action8,
235
+ typename Action9, typename Action10, typename Action11>
236
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
237
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
238
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
239
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
240
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
241
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
242
+ Action8 action8, Action9 action9, Action10 action10,
243
+ Action11 action11) {
244
+ if (check0(input)) return action0(action_arg);
245
+ if (check1(input)) return action1(action_arg);
246
+ if (check2(input)) return action2(action_arg);
247
+ if (check3(input)) return action3(action_arg);
248
+ if (check4(input)) return action4(action_arg);
249
+ if (check5(input)) return action5(action_arg);
250
+ if (check6(input)) return action6(action_arg);
251
+ if (check7(input)) return action7(action_arg);
252
+ if (check8(input)) return action8(action_arg);
253
+ if (check9(input)) return action9(action_arg);
254
+ if (check10(input)) return action10(action_arg);
255
+ if (check11(input)) return action11(action_arg);
256
+ return action_fail(action_arg);
257
+ }
258
+
259
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
260
+ typename Check0, typename Check1, typename Check2, typename Check3,
261
+ typename Check4, typename Check5, typename Check6, typename Check7,
262
+ typename Check8, typename Check9, typename Check10, typename Check11,
263
+ typename Check12, typename Action0, typename Action1,
264
+ typename Action2, typename Action3, typename Action4,
265
+ typename Action5, typename Action6, typename Action7,
266
+ typename Action8, typename Action9, typename Action10,
267
+ typename Action11, typename Action12>
268
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
269
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
270
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
271
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
272
+ Check12 check12, Action0 action0, Action1 action1, Action2 action2,
273
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
274
+ Action7 action7, Action8 action8, Action9 action9,
275
+ Action10 action10, Action11 action11, Action12 action12) {
276
+ if (check0(input)) return action0(action_arg);
277
+ if (check1(input)) return action1(action_arg);
278
+ if (check2(input)) return action2(action_arg);
279
+ if (check3(input)) return action3(action_arg);
280
+ if (check4(input)) return action4(action_arg);
281
+ if (check5(input)) return action5(action_arg);
282
+ if (check6(input)) return action6(action_arg);
283
+ if (check7(input)) return action7(action_arg);
284
+ if (check8(input)) return action8(action_arg);
285
+ if (check9(input)) return action9(action_arg);
286
+ if (check10(input)) return action10(action_arg);
287
+ if (check11(input)) return action11(action_arg);
288
+ if (check12(input)) return action12(action_arg);
289
+ return action_fail(action_arg);
290
+ }
291
+
292
+ template <
293
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
294
+ typename Check1, typename Check2, typename Check3, typename Check4,
295
+ typename Check5, typename Check6, typename Check7, typename Check8,
296
+ typename Check9, typename Check10, typename Check11, typename Check12,
297
+ typename Check13, typename Action0, typename Action1, typename Action2,
298
+ typename Action3, typename Action4, typename Action5, typename Action6,
299
+ typename Action7, typename Action8, typename Action9, typename Action10,
300
+ typename Action11, typename Action12, typename Action13>
301
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
302
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
303
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
304
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
305
+ Check12 check12, Check13 check13, Action0 action0, Action1 action1,
306
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
307
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
308
+ Action10 action10, Action11 action11, Action12 action12,
309
+ Action13 action13) {
310
+ if (check0(input)) return action0(action_arg);
311
+ if (check1(input)) return action1(action_arg);
312
+ if (check2(input)) return action2(action_arg);
313
+ if (check3(input)) return action3(action_arg);
314
+ if (check4(input)) return action4(action_arg);
315
+ if (check5(input)) return action5(action_arg);
316
+ if (check6(input)) return action6(action_arg);
317
+ if (check7(input)) return action7(action_arg);
318
+ if (check8(input)) return action8(action_arg);
319
+ if (check9(input)) return action9(action_arg);
320
+ if (check10(input)) return action10(action_arg);
321
+ if (check11(input)) return action11(action_arg);
322
+ if (check12(input)) return action12(action_arg);
323
+ if (check13(input)) return action13(action_arg);
324
+ return action_fail(action_arg);
325
+ }
326
+
327
+ template <typename CheckArg, typename ActionArg, typename ActionFail,
328
+ typename Check0, typename Check1, typename Check2, typename Check3,
329
+ typename Check4, typename Check5, typename Check6, typename Check7,
330
+ typename Check8, typename Check9, typename Check10, typename Check11,
331
+ typename Check12, typename Check13, typename Check14,
332
+ typename Action0, typename Action1, typename Action2,
333
+ typename Action3, typename Action4, typename Action5,
334
+ typename Action6, typename Action7, typename Action8,
335
+ typename Action9, typename Action10, typename Action11,
336
+ typename Action12, typename Action13, typename Action14>
337
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
338
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
339
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
340
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
341
+ Check12 check12, Check13 check13, Check14 check14, Action0 action0,
342
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
343
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
344
+ Action9 action9, Action10 action10, Action11 action11,
345
+ Action12 action12, Action13 action13, Action14 action14) {
346
+ if (check0(input)) return action0(action_arg);
347
+ if (check1(input)) return action1(action_arg);
348
+ if (check2(input)) return action2(action_arg);
349
+ if (check3(input)) return action3(action_arg);
350
+ if (check4(input)) return action4(action_arg);
351
+ if (check5(input)) return action5(action_arg);
352
+ if (check6(input)) return action6(action_arg);
353
+ if (check7(input)) return action7(action_arg);
354
+ if (check8(input)) return action8(action_arg);
355
+ if (check9(input)) return action9(action_arg);
356
+ if (check10(input)) return action10(action_arg);
357
+ if (check11(input)) return action11(action_arg);
358
+ if (check12(input)) return action12(action_arg);
359
+ if (check13(input)) return action13(action_arg);
360
+ if (check14(input)) return action14(action_arg);
361
+ return action_fail(action_arg);
362
+ }
363
+
364
+ template <
365
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
366
+ typename Check1, typename Check2, typename Check3, typename Check4,
367
+ typename Check5, typename Check6, typename Check7, typename Check8,
368
+ typename Check9, typename Check10, typename Check11, typename Check12,
369
+ typename Check13, typename Check14, typename Check15, typename Action0,
370
+ typename Action1, typename Action2, typename Action3, typename Action4,
371
+ typename Action5, typename Action6, typename Action7, typename Action8,
372
+ typename Action9, typename Action10, typename Action11, typename Action12,
373
+ typename Action13, typename Action14, typename Action15>
374
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
375
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
376
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
377
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
378
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
379
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
380
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
381
+ Action8 action8, Action9 action9, Action10 action10,
382
+ Action11 action11, Action12 action12, Action13 action13,
383
+ Action14 action14, Action15 action15) {
384
+ if (check0(input)) return action0(action_arg);
385
+ if (check1(input)) return action1(action_arg);
386
+ if (check2(input)) return action2(action_arg);
387
+ if (check3(input)) return action3(action_arg);
388
+ if (check4(input)) return action4(action_arg);
389
+ if (check5(input)) return action5(action_arg);
390
+ if (check6(input)) return action6(action_arg);
391
+ if (check7(input)) return action7(action_arg);
392
+ if (check8(input)) return action8(action_arg);
393
+ if (check9(input)) return action9(action_arg);
394
+ if (check10(input)) return action10(action_arg);
395
+ if (check11(input)) return action11(action_arg);
396
+ if (check12(input)) return action12(action_arg);
397
+ if (check13(input)) return action13(action_arg);
398
+ if (check14(input)) return action14(action_arg);
399
+ if (check15(input)) return action15(action_arg);
400
+ return action_fail(action_arg);
401
+ }
402
+
403
+ template <
404
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
405
+ typename Check1, typename Check2, typename Check3, typename Check4,
406
+ typename Check5, typename Check6, typename Check7, typename Check8,
407
+ typename Check9, typename Check10, typename Check11, typename Check12,
408
+ typename Check13, typename Check14, typename Check15, typename Check16,
409
+ typename Action0, typename Action1, typename Action2, typename Action3,
410
+ typename Action4, typename Action5, typename Action6, typename Action7,
411
+ typename Action8, typename Action9, typename Action10, typename Action11,
412
+ typename Action12, typename Action13, typename Action14, typename Action15,
413
+ typename Action16>
414
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
415
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
416
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
417
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
418
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
419
+ Check16 check16, Action0 action0, Action1 action1, Action2 action2,
420
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
421
+ Action7 action7, Action8 action8, Action9 action9,
422
+ Action10 action10, Action11 action11, Action12 action12,
423
+ Action13 action13, Action14 action14, Action15 action15,
424
+ Action16 action16) {
425
+ if (check0(input)) return action0(action_arg);
426
+ if (check1(input)) return action1(action_arg);
427
+ if (check2(input)) return action2(action_arg);
428
+ if (check3(input)) return action3(action_arg);
429
+ if (check4(input)) return action4(action_arg);
430
+ if (check5(input)) return action5(action_arg);
431
+ if (check6(input)) return action6(action_arg);
432
+ if (check7(input)) return action7(action_arg);
433
+ if (check8(input)) return action8(action_arg);
434
+ if (check9(input)) return action9(action_arg);
435
+ if (check10(input)) return action10(action_arg);
436
+ if (check11(input)) return action11(action_arg);
437
+ if (check12(input)) return action12(action_arg);
438
+ if (check13(input)) return action13(action_arg);
439
+ if (check14(input)) return action14(action_arg);
440
+ if (check15(input)) return action15(action_arg);
441
+ if (check16(input)) return action16(action_arg);
442
+ return action_fail(action_arg);
443
+ }
444
+
445
+ template <
446
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
447
+ typename Check1, typename Check2, typename Check3, typename Check4,
448
+ typename Check5, typename Check6, typename Check7, typename Check8,
449
+ typename Check9, typename Check10, typename Check11, typename Check12,
450
+ typename Check13, typename Check14, typename Check15, typename Check16,
451
+ typename Check17, typename Action0, typename Action1, typename Action2,
452
+ typename Action3, typename Action4, typename Action5, typename Action6,
453
+ typename Action7, typename Action8, typename Action9, typename Action10,
454
+ typename Action11, typename Action12, typename Action13, typename Action14,
455
+ typename Action15, typename Action16, typename Action17>
456
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
457
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
458
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
459
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
460
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
461
+ Check16 check16, Check17 check17, Action0 action0, Action1 action1,
462
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
463
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
464
+ Action10 action10, Action11 action11, Action12 action12,
465
+ Action13 action13, Action14 action14, Action15 action15,
466
+ Action16 action16, Action17 action17) {
467
+ if (check0(input)) return action0(action_arg);
468
+ if (check1(input)) return action1(action_arg);
469
+ if (check2(input)) return action2(action_arg);
470
+ if (check3(input)) return action3(action_arg);
471
+ if (check4(input)) return action4(action_arg);
472
+ if (check5(input)) return action5(action_arg);
473
+ if (check6(input)) return action6(action_arg);
474
+ if (check7(input)) return action7(action_arg);
475
+ if (check8(input)) return action8(action_arg);
476
+ if (check9(input)) return action9(action_arg);
477
+ if (check10(input)) return action10(action_arg);
478
+ if (check11(input)) return action11(action_arg);
479
+ if (check12(input)) return action12(action_arg);
480
+ if (check13(input)) return action13(action_arg);
481
+ if (check14(input)) return action14(action_arg);
482
+ if (check15(input)) return action15(action_arg);
483
+ if (check16(input)) return action16(action_arg);
484
+ if (check17(input)) return action17(action_arg);
485
+ return action_fail(action_arg);
486
+ }
487
+
488
+ template <
489
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
490
+ typename Check1, typename Check2, typename Check3, typename Check4,
491
+ typename Check5, typename Check6, typename Check7, typename Check8,
492
+ typename Check9, typename Check10, typename Check11, typename Check12,
493
+ typename Check13, typename Check14, typename Check15, typename Check16,
494
+ typename Check17, typename Check18, typename Action0, typename Action1,
495
+ typename Action2, typename Action3, typename Action4, typename Action5,
496
+ typename Action6, typename Action7, typename Action8, typename Action9,
497
+ typename Action10, typename Action11, typename Action12, typename Action13,
498
+ typename Action14, typename Action15, typename Action16, typename Action17,
499
+ typename Action18>
500
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
501
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
502
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
503
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
504
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
505
+ Check16 check16, Check17 check17, Check18 check18, Action0 action0,
506
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
507
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
508
+ Action9 action9, Action10 action10, Action11 action11,
509
+ Action12 action12, Action13 action13, Action14 action14,
510
+ Action15 action15, Action16 action16, Action17 action17,
511
+ Action18 action18) {
512
+ if (check0(input)) return action0(action_arg);
513
+ if (check1(input)) return action1(action_arg);
514
+ if (check2(input)) return action2(action_arg);
515
+ if (check3(input)) return action3(action_arg);
516
+ if (check4(input)) return action4(action_arg);
517
+ if (check5(input)) return action5(action_arg);
518
+ if (check6(input)) return action6(action_arg);
519
+ if (check7(input)) return action7(action_arg);
520
+ if (check8(input)) return action8(action_arg);
521
+ if (check9(input)) return action9(action_arg);
522
+ if (check10(input)) return action10(action_arg);
523
+ if (check11(input)) return action11(action_arg);
524
+ if (check12(input)) return action12(action_arg);
525
+ if (check13(input)) return action13(action_arg);
526
+ if (check14(input)) return action14(action_arg);
527
+ if (check15(input)) return action15(action_arg);
528
+ if (check16(input)) return action16(action_arg);
529
+ if (check17(input)) return action17(action_arg);
530
+ if (check18(input)) return action18(action_arg);
531
+ return action_fail(action_arg);
532
+ }
533
+
534
+ template <
535
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
536
+ typename Check1, typename Check2, typename Check3, typename Check4,
537
+ typename Check5, typename Check6, typename Check7, typename Check8,
538
+ typename Check9, typename Check10, typename Check11, typename Check12,
539
+ typename Check13, typename Check14, typename Check15, typename Check16,
540
+ typename Check17, typename Check18, typename Check19, typename Action0,
541
+ typename Action1, typename Action2, typename Action3, typename Action4,
542
+ typename Action5, typename Action6, typename Action7, typename Action8,
543
+ typename Action9, typename Action10, typename Action11, typename Action12,
544
+ typename Action13, typename Action14, typename Action15, typename Action16,
545
+ typename Action17, typename Action18, typename Action19>
546
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
547
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
548
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
549
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
550
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
551
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
552
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
553
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
554
+ Action8 action8, Action9 action9, Action10 action10,
555
+ Action11 action11, Action12 action12, Action13 action13,
556
+ Action14 action14, Action15 action15, Action16 action16,
557
+ Action17 action17, Action18 action18, Action19 action19) {
558
+ if (check0(input)) return action0(action_arg);
559
+ if (check1(input)) return action1(action_arg);
560
+ if (check2(input)) return action2(action_arg);
561
+ if (check3(input)) return action3(action_arg);
562
+ if (check4(input)) return action4(action_arg);
563
+ if (check5(input)) return action5(action_arg);
564
+ if (check6(input)) return action6(action_arg);
565
+ if (check7(input)) return action7(action_arg);
566
+ if (check8(input)) return action8(action_arg);
567
+ if (check9(input)) return action9(action_arg);
568
+ if (check10(input)) return action10(action_arg);
569
+ if (check11(input)) return action11(action_arg);
570
+ if (check12(input)) return action12(action_arg);
571
+ if (check13(input)) return action13(action_arg);
572
+ if (check14(input)) return action14(action_arg);
573
+ if (check15(input)) return action15(action_arg);
574
+ if (check16(input)) return action16(action_arg);
575
+ if (check17(input)) return action17(action_arg);
576
+ if (check18(input)) return action18(action_arg);
577
+ if (check19(input)) return action19(action_arg);
578
+ return action_fail(action_arg);
579
+ }
580
+
581
+ template <
582
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
583
+ typename Check1, typename Check2, typename Check3, typename Check4,
584
+ typename Check5, typename Check6, typename Check7, typename Check8,
585
+ typename Check9, typename Check10, typename Check11, typename Check12,
586
+ typename Check13, typename Check14, typename Check15, typename Check16,
587
+ typename Check17, typename Check18, typename Check19, typename Check20,
588
+ typename Action0, typename Action1, typename Action2, typename Action3,
589
+ typename Action4, typename Action5, typename Action6, typename Action7,
590
+ typename Action8, typename Action9, typename Action10, typename Action11,
591
+ typename Action12, typename Action13, typename Action14, typename Action15,
592
+ typename Action16, typename Action17, typename Action18, typename Action19,
593
+ typename Action20>
594
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
595
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
596
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
597
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
598
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
599
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
600
+ Check20 check20, Action0 action0, Action1 action1, Action2 action2,
601
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
602
+ Action7 action7, Action8 action8, Action9 action9,
603
+ Action10 action10, Action11 action11, Action12 action12,
604
+ Action13 action13, Action14 action14, Action15 action15,
605
+ Action16 action16, Action17 action17, Action18 action18,
606
+ Action19 action19, Action20 action20) {
607
+ if (check0(input)) return action0(action_arg);
608
+ if (check1(input)) return action1(action_arg);
609
+ if (check2(input)) return action2(action_arg);
610
+ if (check3(input)) return action3(action_arg);
611
+ if (check4(input)) return action4(action_arg);
612
+ if (check5(input)) return action5(action_arg);
613
+ if (check6(input)) return action6(action_arg);
614
+ if (check7(input)) return action7(action_arg);
615
+ if (check8(input)) return action8(action_arg);
616
+ if (check9(input)) return action9(action_arg);
617
+ if (check10(input)) return action10(action_arg);
618
+ if (check11(input)) return action11(action_arg);
619
+ if (check12(input)) return action12(action_arg);
620
+ if (check13(input)) return action13(action_arg);
621
+ if (check14(input)) return action14(action_arg);
622
+ if (check15(input)) return action15(action_arg);
623
+ if (check16(input)) return action16(action_arg);
624
+ if (check17(input)) return action17(action_arg);
625
+ if (check18(input)) return action18(action_arg);
626
+ if (check19(input)) return action19(action_arg);
627
+ if (check20(input)) return action20(action_arg);
628
+ return action_fail(action_arg);
629
+ }
630
+
631
+ template <
632
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
633
+ typename Check1, typename Check2, typename Check3, typename Check4,
634
+ typename Check5, typename Check6, typename Check7, typename Check8,
635
+ typename Check9, typename Check10, typename Check11, typename Check12,
636
+ typename Check13, typename Check14, typename Check15, typename Check16,
637
+ typename Check17, typename Check18, typename Check19, typename Check20,
638
+ typename Check21, typename Action0, typename Action1, typename Action2,
639
+ typename Action3, typename Action4, typename Action5, typename Action6,
640
+ typename Action7, typename Action8, typename Action9, typename Action10,
641
+ typename Action11, typename Action12, typename Action13, typename Action14,
642
+ typename Action15, typename Action16, typename Action17, typename Action18,
643
+ typename Action19, typename Action20, typename Action21>
644
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
645
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
646
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
647
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
648
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
649
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
650
+ Check20 check20, Check21 check21, Action0 action0, Action1 action1,
651
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
652
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
653
+ Action10 action10, Action11 action11, Action12 action12,
654
+ Action13 action13, Action14 action14, Action15 action15,
655
+ Action16 action16, Action17 action17, Action18 action18,
656
+ Action19 action19, Action20 action20, Action21 action21) {
657
+ if (check0(input)) return action0(action_arg);
658
+ if (check1(input)) return action1(action_arg);
659
+ if (check2(input)) return action2(action_arg);
660
+ if (check3(input)) return action3(action_arg);
661
+ if (check4(input)) return action4(action_arg);
662
+ if (check5(input)) return action5(action_arg);
663
+ if (check6(input)) return action6(action_arg);
664
+ if (check7(input)) return action7(action_arg);
665
+ if (check8(input)) return action8(action_arg);
666
+ if (check9(input)) return action9(action_arg);
667
+ if (check10(input)) return action10(action_arg);
668
+ if (check11(input)) return action11(action_arg);
669
+ if (check12(input)) return action12(action_arg);
670
+ if (check13(input)) return action13(action_arg);
671
+ if (check14(input)) return action14(action_arg);
672
+ if (check15(input)) return action15(action_arg);
673
+ if (check16(input)) return action16(action_arg);
674
+ if (check17(input)) return action17(action_arg);
675
+ if (check18(input)) return action18(action_arg);
676
+ if (check19(input)) return action19(action_arg);
677
+ if (check20(input)) return action20(action_arg);
678
+ if (check21(input)) return action21(action_arg);
679
+ return action_fail(action_arg);
680
+ }
681
+
682
+ template <
683
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
684
+ typename Check1, typename Check2, typename Check3, typename Check4,
685
+ typename Check5, typename Check6, typename Check7, typename Check8,
686
+ typename Check9, typename Check10, typename Check11, typename Check12,
687
+ typename Check13, typename Check14, typename Check15, typename Check16,
688
+ typename Check17, typename Check18, typename Check19, typename Check20,
689
+ typename Check21, typename Check22, typename Action0, typename Action1,
690
+ typename Action2, typename Action3, typename Action4, typename Action5,
691
+ typename Action6, typename Action7, typename Action8, typename Action9,
692
+ typename Action10, typename Action11, typename Action12, typename Action13,
693
+ typename Action14, typename Action15, typename Action16, typename Action17,
694
+ typename Action18, typename Action19, typename Action20, typename Action21,
695
+ typename Action22>
696
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
697
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
698
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
699
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
700
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
701
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
702
+ Check20 check20, Check21 check21, Check22 check22, Action0 action0,
703
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
704
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
705
+ Action9 action9, Action10 action10, Action11 action11,
706
+ Action12 action12, Action13 action13, Action14 action14,
707
+ Action15 action15, Action16 action16, Action17 action17,
708
+ Action18 action18, Action19 action19, Action20 action20,
709
+ Action21 action21, Action22 action22) {
710
+ if (check0(input)) return action0(action_arg);
711
+ if (check1(input)) return action1(action_arg);
712
+ if (check2(input)) return action2(action_arg);
713
+ if (check3(input)) return action3(action_arg);
714
+ if (check4(input)) return action4(action_arg);
715
+ if (check5(input)) return action5(action_arg);
716
+ if (check6(input)) return action6(action_arg);
717
+ if (check7(input)) return action7(action_arg);
718
+ if (check8(input)) return action8(action_arg);
719
+ if (check9(input)) return action9(action_arg);
720
+ if (check10(input)) return action10(action_arg);
721
+ if (check11(input)) return action11(action_arg);
722
+ if (check12(input)) return action12(action_arg);
723
+ if (check13(input)) return action13(action_arg);
724
+ if (check14(input)) return action14(action_arg);
725
+ if (check15(input)) return action15(action_arg);
726
+ if (check16(input)) return action16(action_arg);
727
+ if (check17(input)) return action17(action_arg);
728
+ if (check18(input)) return action18(action_arg);
729
+ if (check19(input)) return action19(action_arg);
730
+ if (check20(input)) return action20(action_arg);
731
+ if (check21(input)) return action21(action_arg);
732
+ if (check22(input)) return action22(action_arg);
733
+ return action_fail(action_arg);
734
+ }
735
+
736
+ template <
737
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
738
+ typename Check1, typename Check2, typename Check3, typename Check4,
739
+ typename Check5, typename Check6, typename Check7, typename Check8,
740
+ typename Check9, typename Check10, typename Check11, typename Check12,
741
+ typename Check13, typename Check14, typename Check15, typename Check16,
742
+ typename Check17, typename Check18, typename Check19, typename Check20,
743
+ typename Check21, typename Check22, typename Check23, typename Action0,
744
+ typename Action1, typename Action2, typename Action3, typename Action4,
745
+ typename Action5, typename Action6, typename Action7, typename Action8,
746
+ typename Action9, typename Action10, typename Action11, typename Action12,
747
+ typename Action13, typename Action14, typename Action15, typename Action16,
748
+ typename Action17, typename Action18, typename Action19, typename Action20,
749
+ typename Action21, typename Action22, typename Action23>
750
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
751
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
752
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
753
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
754
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
755
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
756
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
757
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
758
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
759
+ Action8 action8, Action9 action9, Action10 action10,
760
+ Action11 action11, Action12 action12, Action13 action13,
761
+ Action14 action14, Action15 action15, Action16 action16,
762
+ Action17 action17, Action18 action18, Action19 action19,
763
+ Action20 action20, Action21 action21, Action22 action22,
764
+ Action23 action23) {
765
+ if (check0(input)) return action0(action_arg);
766
+ if (check1(input)) return action1(action_arg);
767
+ if (check2(input)) return action2(action_arg);
768
+ if (check3(input)) return action3(action_arg);
769
+ if (check4(input)) return action4(action_arg);
770
+ if (check5(input)) return action5(action_arg);
771
+ if (check6(input)) return action6(action_arg);
772
+ if (check7(input)) return action7(action_arg);
773
+ if (check8(input)) return action8(action_arg);
774
+ if (check9(input)) return action9(action_arg);
775
+ if (check10(input)) return action10(action_arg);
776
+ if (check11(input)) return action11(action_arg);
777
+ if (check12(input)) return action12(action_arg);
778
+ if (check13(input)) return action13(action_arg);
779
+ if (check14(input)) return action14(action_arg);
780
+ if (check15(input)) return action15(action_arg);
781
+ if (check16(input)) return action16(action_arg);
782
+ if (check17(input)) return action17(action_arg);
783
+ if (check18(input)) return action18(action_arg);
784
+ if (check19(input)) return action19(action_arg);
785
+ if (check20(input)) return action20(action_arg);
786
+ if (check21(input)) return action21(action_arg);
787
+ if (check22(input)) return action22(action_arg);
788
+ if (check23(input)) return action23(action_arg);
789
+ return action_fail(action_arg);
790
+ }
791
+
792
+ template <
793
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
794
+ typename Check1, typename Check2, typename Check3, typename Check4,
795
+ typename Check5, typename Check6, typename Check7, typename Check8,
796
+ typename Check9, typename Check10, typename Check11, typename Check12,
797
+ typename Check13, typename Check14, typename Check15, typename Check16,
798
+ typename Check17, typename Check18, typename Check19, typename Check20,
799
+ typename Check21, typename Check22, typename Check23, typename Check24,
800
+ typename Action0, typename Action1, typename Action2, typename Action3,
801
+ typename Action4, typename Action5, typename Action6, typename Action7,
802
+ typename Action8, typename Action9, typename Action10, typename Action11,
803
+ typename Action12, typename Action13, typename Action14, typename Action15,
804
+ typename Action16, typename Action17, typename Action18, typename Action19,
805
+ typename Action20, typename Action21, typename Action22, typename Action23,
806
+ typename Action24>
807
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
808
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
809
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
810
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
811
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
812
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
813
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
814
+ Check24 check24, Action0 action0, Action1 action1, Action2 action2,
815
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
816
+ Action7 action7, Action8 action8, Action9 action9,
817
+ Action10 action10, Action11 action11, Action12 action12,
818
+ Action13 action13, Action14 action14, Action15 action15,
819
+ Action16 action16, Action17 action17, Action18 action18,
820
+ Action19 action19, Action20 action20, Action21 action21,
821
+ Action22 action22, Action23 action23, Action24 action24) {
822
+ if (check0(input)) return action0(action_arg);
823
+ if (check1(input)) return action1(action_arg);
824
+ if (check2(input)) return action2(action_arg);
825
+ if (check3(input)) return action3(action_arg);
826
+ if (check4(input)) return action4(action_arg);
827
+ if (check5(input)) return action5(action_arg);
828
+ if (check6(input)) return action6(action_arg);
829
+ if (check7(input)) return action7(action_arg);
830
+ if (check8(input)) return action8(action_arg);
831
+ if (check9(input)) return action9(action_arg);
832
+ if (check10(input)) return action10(action_arg);
833
+ if (check11(input)) return action11(action_arg);
834
+ if (check12(input)) return action12(action_arg);
835
+ if (check13(input)) return action13(action_arg);
836
+ if (check14(input)) return action14(action_arg);
837
+ if (check15(input)) return action15(action_arg);
838
+ if (check16(input)) return action16(action_arg);
839
+ if (check17(input)) return action17(action_arg);
840
+ if (check18(input)) return action18(action_arg);
841
+ if (check19(input)) return action19(action_arg);
842
+ if (check20(input)) return action20(action_arg);
843
+ if (check21(input)) return action21(action_arg);
844
+ if (check22(input)) return action22(action_arg);
845
+ if (check23(input)) return action23(action_arg);
846
+ if (check24(input)) return action24(action_arg);
847
+ return action_fail(action_arg);
848
+ }
849
+
850
+ template <
851
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
852
+ typename Check1, typename Check2, typename Check3, typename Check4,
853
+ typename Check5, typename Check6, typename Check7, typename Check8,
854
+ typename Check9, typename Check10, typename Check11, typename Check12,
855
+ typename Check13, typename Check14, typename Check15, typename Check16,
856
+ typename Check17, typename Check18, typename Check19, typename Check20,
857
+ typename Check21, typename Check22, typename Check23, typename Check24,
858
+ typename Check25, typename Action0, typename Action1, typename Action2,
859
+ typename Action3, typename Action4, typename Action5, typename Action6,
860
+ typename Action7, typename Action8, typename Action9, typename Action10,
861
+ typename Action11, typename Action12, typename Action13, typename Action14,
862
+ typename Action15, typename Action16, typename Action17, typename Action18,
863
+ typename Action19, typename Action20, typename Action21, typename Action22,
864
+ typename Action23, typename Action24, typename Action25>
865
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
866
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
867
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
868
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
869
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
870
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
871
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
872
+ Check24 check24, Check25 check25, Action0 action0, Action1 action1,
873
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
874
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
875
+ Action10 action10, Action11 action11, Action12 action12,
876
+ Action13 action13, Action14 action14, Action15 action15,
877
+ Action16 action16, Action17 action17, Action18 action18,
878
+ Action19 action19, Action20 action20, Action21 action21,
879
+ Action22 action22, Action23 action23, Action24 action24,
880
+ Action25 action25) {
881
+ if (check0(input)) return action0(action_arg);
882
+ if (check1(input)) return action1(action_arg);
883
+ if (check2(input)) return action2(action_arg);
884
+ if (check3(input)) return action3(action_arg);
885
+ if (check4(input)) return action4(action_arg);
886
+ if (check5(input)) return action5(action_arg);
887
+ if (check6(input)) return action6(action_arg);
888
+ if (check7(input)) return action7(action_arg);
889
+ if (check8(input)) return action8(action_arg);
890
+ if (check9(input)) return action9(action_arg);
891
+ if (check10(input)) return action10(action_arg);
892
+ if (check11(input)) return action11(action_arg);
893
+ if (check12(input)) return action12(action_arg);
894
+ if (check13(input)) return action13(action_arg);
895
+ if (check14(input)) return action14(action_arg);
896
+ if (check15(input)) return action15(action_arg);
897
+ if (check16(input)) return action16(action_arg);
898
+ if (check17(input)) return action17(action_arg);
899
+ if (check18(input)) return action18(action_arg);
900
+ if (check19(input)) return action19(action_arg);
901
+ if (check20(input)) return action20(action_arg);
902
+ if (check21(input)) return action21(action_arg);
903
+ if (check22(input)) return action22(action_arg);
904
+ if (check23(input)) return action23(action_arg);
905
+ if (check24(input)) return action24(action_arg);
906
+ if (check25(input)) return action25(action_arg);
907
+ return action_fail(action_arg);
908
+ }
909
+
910
+ template <
911
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
912
+ typename Check1, typename Check2, typename Check3, typename Check4,
913
+ typename Check5, typename Check6, typename Check7, typename Check8,
914
+ typename Check9, typename Check10, typename Check11, typename Check12,
915
+ typename Check13, typename Check14, typename Check15, typename Check16,
916
+ typename Check17, typename Check18, typename Check19, typename Check20,
917
+ typename Check21, typename Check22, typename Check23, typename Check24,
918
+ typename Check25, typename Check26, typename Action0, typename Action1,
919
+ typename Action2, typename Action3, typename Action4, typename Action5,
920
+ typename Action6, typename Action7, typename Action8, typename Action9,
921
+ typename Action10, typename Action11, typename Action12, typename Action13,
922
+ typename Action14, typename Action15, typename Action16, typename Action17,
923
+ typename Action18, typename Action19, typename Action20, typename Action21,
924
+ typename Action22, typename Action23, typename Action24, typename Action25,
925
+ typename Action26>
926
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
927
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
928
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
929
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
930
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
931
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
932
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
933
+ Check24 check24, Check25 check25, Check26 check26, Action0 action0,
934
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
935
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
936
+ Action9 action9, Action10 action10, Action11 action11,
937
+ Action12 action12, Action13 action13, Action14 action14,
938
+ Action15 action15, Action16 action16, Action17 action17,
939
+ Action18 action18, Action19 action19, Action20 action20,
940
+ Action21 action21, Action22 action22, Action23 action23,
941
+ Action24 action24, Action25 action25, Action26 action26) {
942
+ if (check0(input)) return action0(action_arg);
943
+ if (check1(input)) return action1(action_arg);
944
+ if (check2(input)) return action2(action_arg);
945
+ if (check3(input)) return action3(action_arg);
946
+ if (check4(input)) return action4(action_arg);
947
+ if (check5(input)) return action5(action_arg);
948
+ if (check6(input)) return action6(action_arg);
949
+ if (check7(input)) return action7(action_arg);
950
+ if (check8(input)) return action8(action_arg);
951
+ if (check9(input)) return action9(action_arg);
952
+ if (check10(input)) return action10(action_arg);
953
+ if (check11(input)) return action11(action_arg);
954
+ if (check12(input)) return action12(action_arg);
955
+ if (check13(input)) return action13(action_arg);
956
+ if (check14(input)) return action14(action_arg);
957
+ if (check15(input)) return action15(action_arg);
958
+ if (check16(input)) return action16(action_arg);
959
+ if (check17(input)) return action17(action_arg);
960
+ if (check18(input)) return action18(action_arg);
961
+ if (check19(input)) return action19(action_arg);
962
+ if (check20(input)) return action20(action_arg);
963
+ if (check21(input)) return action21(action_arg);
964
+ if (check22(input)) return action22(action_arg);
965
+ if (check23(input)) return action23(action_arg);
966
+ if (check24(input)) return action24(action_arg);
967
+ if (check25(input)) return action25(action_arg);
968
+ if (check26(input)) return action26(action_arg);
969
+ return action_fail(action_arg);
970
+ }
971
+
972
+ template <
973
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
974
+ typename Check1, typename Check2, typename Check3, typename Check4,
975
+ typename Check5, typename Check6, typename Check7, typename Check8,
976
+ typename Check9, typename Check10, typename Check11, typename Check12,
977
+ typename Check13, typename Check14, typename Check15, typename Check16,
978
+ typename Check17, typename Check18, typename Check19, typename Check20,
979
+ typename Check21, typename Check22, typename Check23, typename Check24,
980
+ typename Check25, typename Check26, typename Check27, typename Action0,
981
+ typename Action1, typename Action2, typename Action3, typename Action4,
982
+ typename Action5, typename Action6, typename Action7, typename Action8,
983
+ typename Action9, typename Action10, typename Action11, typename Action12,
984
+ typename Action13, typename Action14, typename Action15, typename Action16,
985
+ typename Action17, typename Action18, typename Action19, typename Action20,
986
+ typename Action21, typename Action22, typename Action23, typename Action24,
987
+ typename Action25, typename Action26, typename Action27>
988
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
989
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
990
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
991
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
992
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
993
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
994
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
995
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
996
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
997
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
998
+ Action8 action8, Action9 action9, Action10 action10,
999
+ Action11 action11, Action12 action12, Action13 action13,
1000
+ Action14 action14, Action15 action15, Action16 action16,
1001
+ Action17 action17, Action18 action18, Action19 action19,
1002
+ Action20 action20, Action21 action21, Action22 action22,
1003
+ Action23 action23, Action24 action24, Action25 action25,
1004
+ Action26 action26, Action27 action27) {
1005
+ if (check0(input)) return action0(action_arg);
1006
+ if (check1(input)) return action1(action_arg);
1007
+ if (check2(input)) return action2(action_arg);
1008
+ if (check3(input)) return action3(action_arg);
1009
+ if (check4(input)) return action4(action_arg);
1010
+ if (check5(input)) return action5(action_arg);
1011
+ if (check6(input)) return action6(action_arg);
1012
+ if (check7(input)) return action7(action_arg);
1013
+ if (check8(input)) return action8(action_arg);
1014
+ if (check9(input)) return action9(action_arg);
1015
+ if (check10(input)) return action10(action_arg);
1016
+ if (check11(input)) return action11(action_arg);
1017
+ if (check12(input)) return action12(action_arg);
1018
+ if (check13(input)) return action13(action_arg);
1019
+ if (check14(input)) return action14(action_arg);
1020
+ if (check15(input)) return action15(action_arg);
1021
+ if (check16(input)) return action16(action_arg);
1022
+ if (check17(input)) return action17(action_arg);
1023
+ if (check18(input)) return action18(action_arg);
1024
+ if (check19(input)) return action19(action_arg);
1025
+ if (check20(input)) return action20(action_arg);
1026
+ if (check21(input)) return action21(action_arg);
1027
+ if (check22(input)) return action22(action_arg);
1028
+ if (check23(input)) return action23(action_arg);
1029
+ if (check24(input)) return action24(action_arg);
1030
+ if (check25(input)) return action25(action_arg);
1031
+ if (check26(input)) return action26(action_arg);
1032
+ if (check27(input)) return action27(action_arg);
1033
+ return action_fail(action_arg);
1034
+ }
1035
+
1036
+ template <
1037
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1038
+ typename Check1, typename Check2, typename Check3, typename Check4,
1039
+ typename Check5, typename Check6, typename Check7, typename Check8,
1040
+ typename Check9, typename Check10, typename Check11, typename Check12,
1041
+ typename Check13, typename Check14, typename Check15, typename Check16,
1042
+ typename Check17, typename Check18, typename Check19, typename Check20,
1043
+ typename Check21, typename Check22, typename Check23, typename Check24,
1044
+ typename Check25, typename Check26, typename Check27, typename Check28,
1045
+ typename Action0, typename Action1, typename Action2, typename Action3,
1046
+ typename Action4, typename Action5, typename Action6, typename Action7,
1047
+ typename Action8, typename Action9, typename Action10, typename Action11,
1048
+ typename Action12, typename Action13, typename Action14, typename Action15,
1049
+ typename Action16, typename Action17, typename Action18, typename Action19,
1050
+ typename Action20, typename Action21, typename Action22, typename Action23,
1051
+ typename Action24, typename Action25, typename Action26, typename Action27,
1052
+ typename Action28>
1053
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1054
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1055
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1056
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1057
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1058
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1059
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1060
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1061
+ Check28 check28, Action0 action0, Action1 action1, Action2 action2,
1062
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
1063
+ Action7 action7, Action8 action8, Action9 action9,
1064
+ Action10 action10, Action11 action11, Action12 action12,
1065
+ Action13 action13, Action14 action14, Action15 action15,
1066
+ Action16 action16, Action17 action17, Action18 action18,
1067
+ Action19 action19, Action20 action20, Action21 action21,
1068
+ Action22 action22, Action23 action23, Action24 action24,
1069
+ Action25 action25, Action26 action26, Action27 action27,
1070
+ Action28 action28) {
1071
+ if (check0(input)) return action0(action_arg);
1072
+ if (check1(input)) return action1(action_arg);
1073
+ if (check2(input)) return action2(action_arg);
1074
+ if (check3(input)) return action3(action_arg);
1075
+ if (check4(input)) return action4(action_arg);
1076
+ if (check5(input)) return action5(action_arg);
1077
+ if (check6(input)) return action6(action_arg);
1078
+ if (check7(input)) return action7(action_arg);
1079
+ if (check8(input)) return action8(action_arg);
1080
+ if (check9(input)) return action9(action_arg);
1081
+ if (check10(input)) return action10(action_arg);
1082
+ if (check11(input)) return action11(action_arg);
1083
+ if (check12(input)) return action12(action_arg);
1084
+ if (check13(input)) return action13(action_arg);
1085
+ if (check14(input)) return action14(action_arg);
1086
+ if (check15(input)) return action15(action_arg);
1087
+ if (check16(input)) return action16(action_arg);
1088
+ if (check17(input)) return action17(action_arg);
1089
+ if (check18(input)) return action18(action_arg);
1090
+ if (check19(input)) return action19(action_arg);
1091
+ if (check20(input)) return action20(action_arg);
1092
+ if (check21(input)) return action21(action_arg);
1093
+ if (check22(input)) return action22(action_arg);
1094
+ if (check23(input)) return action23(action_arg);
1095
+ if (check24(input)) return action24(action_arg);
1096
+ if (check25(input)) return action25(action_arg);
1097
+ if (check26(input)) return action26(action_arg);
1098
+ if (check27(input)) return action27(action_arg);
1099
+ if (check28(input)) return action28(action_arg);
1100
+ return action_fail(action_arg);
1101
+ }
1102
+
1103
+ template <
1104
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1105
+ typename Check1, typename Check2, typename Check3, typename Check4,
1106
+ typename Check5, typename Check6, typename Check7, typename Check8,
1107
+ typename Check9, typename Check10, typename Check11, typename Check12,
1108
+ typename Check13, typename Check14, typename Check15, typename Check16,
1109
+ typename Check17, typename Check18, typename Check19, typename Check20,
1110
+ typename Check21, typename Check22, typename Check23, typename Check24,
1111
+ typename Check25, typename Check26, typename Check27, typename Check28,
1112
+ typename Check29, typename Action0, typename Action1, typename Action2,
1113
+ typename Action3, typename Action4, typename Action5, typename Action6,
1114
+ typename Action7, typename Action8, typename Action9, typename Action10,
1115
+ typename Action11, typename Action12, typename Action13, typename Action14,
1116
+ typename Action15, typename Action16, typename Action17, typename Action18,
1117
+ typename Action19, typename Action20, typename Action21, typename Action22,
1118
+ typename Action23, typename Action24, typename Action25, typename Action26,
1119
+ typename Action27, typename Action28, typename Action29>
1120
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1121
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1122
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1123
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1124
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1125
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1126
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1127
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1128
+ Check28 check28, Check29 check29, Action0 action0, Action1 action1,
1129
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
1130
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
1131
+ Action10 action10, Action11 action11, Action12 action12,
1132
+ Action13 action13, Action14 action14, Action15 action15,
1133
+ Action16 action16, Action17 action17, Action18 action18,
1134
+ Action19 action19, Action20 action20, Action21 action21,
1135
+ Action22 action22, Action23 action23, Action24 action24,
1136
+ Action25 action25, Action26 action26, Action27 action27,
1137
+ Action28 action28, Action29 action29) {
1138
+ if (check0(input)) return action0(action_arg);
1139
+ if (check1(input)) return action1(action_arg);
1140
+ if (check2(input)) return action2(action_arg);
1141
+ if (check3(input)) return action3(action_arg);
1142
+ if (check4(input)) return action4(action_arg);
1143
+ if (check5(input)) return action5(action_arg);
1144
+ if (check6(input)) return action6(action_arg);
1145
+ if (check7(input)) return action7(action_arg);
1146
+ if (check8(input)) return action8(action_arg);
1147
+ if (check9(input)) return action9(action_arg);
1148
+ if (check10(input)) return action10(action_arg);
1149
+ if (check11(input)) return action11(action_arg);
1150
+ if (check12(input)) return action12(action_arg);
1151
+ if (check13(input)) return action13(action_arg);
1152
+ if (check14(input)) return action14(action_arg);
1153
+ if (check15(input)) return action15(action_arg);
1154
+ if (check16(input)) return action16(action_arg);
1155
+ if (check17(input)) return action17(action_arg);
1156
+ if (check18(input)) return action18(action_arg);
1157
+ if (check19(input)) return action19(action_arg);
1158
+ if (check20(input)) return action20(action_arg);
1159
+ if (check21(input)) return action21(action_arg);
1160
+ if (check22(input)) return action22(action_arg);
1161
+ if (check23(input)) return action23(action_arg);
1162
+ if (check24(input)) return action24(action_arg);
1163
+ if (check25(input)) return action25(action_arg);
1164
+ if (check26(input)) return action26(action_arg);
1165
+ if (check27(input)) return action27(action_arg);
1166
+ if (check28(input)) return action28(action_arg);
1167
+ if (check29(input)) return action29(action_arg);
1168
+ return action_fail(action_arg);
1169
+ }
1170
+
1171
+ template <
1172
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1173
+ typename Check1, typename Check2, typename Check3, typename Check4,
1174
+ typename Check5, typename Check6, typename Check7, typename Check8,
1175
+ typename Check9, typename Check10, typename Check11, typename Check12,
1176
+ typename Check13, typename Check14, typename Check15, typename Check16,
1177
+ typename Check17, typename Check18, typename Check19, typename Check20,
1178
+ typename Check21, typename Check22, typename Check23, typename Check24,
1179
+ typename Check25, typename Check26, typename Check27, typename Check28,
1180
+ typename Check29, typename Check30, typename Action0, typename Action1,
1181
+ typename Action2, typename Action3, typename Action4, typename Action5,
1182
+ typename Action6, typename Action7, typename Action8, typename Action9,
1183
+ typename Action10, typename Action11, typename Action12, typename Action13,
1184
+ typename Action14, typename Action15, typename Action16, typename Action17,
1185
+ typename Action18, typename Action19, typename Action20, typename Action21,
1186
+ typename Action22, typename Action23, typename Action24, typename Action25,
1187
+ typename Action26, typename Action27, typename Action28, typename Action29,
1188
+ typename Action30>
1189
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1190
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1191
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1192
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1193
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1194
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1195
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1196
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1197
+ Check28 check28, Check29 check29, Check30 check30, Action0 action0,
1198
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
1199
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
1200
+ Action9 action9, Action10 action10, Action11 action11,
1201
+ Action12 action12, Action13 action13, Action14 action14,
1202
+ Action15 action15, Action16 action16, Action17 action17,
1203
+ Action18 action18, Action19 action19, Action20 action20,
1204
+ Action21 action21, Action22 action22, Action23 action23,
1205
+ Action24 action24, Action25 action25, Action26 action26,
1206
+ Action27 action27, Action28 action28, Action29 action29,
1207
+ Action30 action30) {
1208
+ if (check0(input)) return action0(action_arg);
1209
+ if (check1(input)) return action1(action_arg);
1210
+ if (check2(input)) return action2(action_arg);
1211
+ if (check3(input)) return action3(action_arg);
1212
+ if (check4(input)) return action4(action_arg);
1213
+ if (check5(input)) return action5(action_arg);
1214
+ if (check6(input)) return action6(action_arg);
1215
+ if (check7(input)) return action7(action_arg);
1216
+ if (check8(input)) return action8(action_arg);
1217
+ if (check9(input)) return action9(action_arg);
1218
+ if (check10(input)) return action10(action_arg);
1219
+ if (check11(input)) return action11(action_arg);
1220
+ if (check12(input)) return action12(action_arg);
1221
+ if (check13(input)) return action13(action_arg);
1222
+ if (check14(input)) return action14(action_arg);
1223
+ if (check15(input)) return action15(action_arg);
1224
+ if (check16(input)) return action16(action_arg);
1225
+ if (check17(input)) return action17(action_arg);
1226
+ if (check18(input)) return action18(action_arg);
1227
+ if (check19(input)) return action19(action_arg);
1228
+ if (check20(input)) return action20(action_arg);
1229
+ if (check21(input)) return action21(action_arg);
1230
+ if (check22(input)) return action22(action_arg);
1231
+ if (check23(input)) return action23(action_arg);
1232
+ if (check24(input)) return action24(action_arg);
1233
+ if (check25(input)) return action25(action_arg);
1234
+ if (check26(input)) return action26(action_arg);
1235
+ if (check27(input)) return action27(action_arg);
1236
+ if (check28(input)) return action28(action_arg);
1237
+ if (check29(input)) return action29(action_arg);
1238
+ if (check30(input)) return action30(action_arg);
1239
+ return action_fail(action_arg);
1240
+ }
1241
+
1242
+ template <
1243
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1244
+ typename Check1, typename Check2, typename Check3, typename Check4,
1245
+ typename Check5, typename Check6, typename Check7, typename Check8,
1246
+ typename Check9, typename Check10, typename Check11, typename Check12,
1247
+ typename Check13, typename Check14, typename Check15, typename Check16,
1248
+ typename Check17, typename Check18, typename Check19, typename Check20,
1249
+ typename Check21, typename Check22, typename Check23, typename Check24,
1250
+ typename Check25, typename Check26, typename Check27, typename Check28,
1251
+ typename Check29, typename Check30, typename Check31, typename Action0,
1252
+ typename Action1, typename Action2, typename Action3, typename Action4,
1253
+ typename Action5, typename Action6, typename Action7, typename Action8,
1254
+ typename Action9, typename Action10, typename Action11, typename Action12,
1255
+ typename Action13, typename Action14, typename Action15, typename Action16,
1256
+ typename Action17, typename Action18, typename Action19, typename Action20,
1257
+ typename Action21, typename Action22, typename Action23, typename Action24,
1258
+ typename Action25, typename Action26, typename Action27, typename Action28,
1259
+ typename Action29, typename Action30, typename Action31>
1260
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1261
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1262
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1263
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1264
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1265
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1266
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1267
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1268
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1269
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
1270
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
1271
+ Action8 action8, Action9 action9, Action10 action10,
1272
+ Action11 action11, Action12 action12, Action13 action13,
1273
+ Action14 action14, Action15 action15, Action16 action16,
1274
+ Action17 action17, Action18 action18, Action19 action19,
1275
+ Action20 action20, Action21 action21, Action22 action22,
1276
+ Action23 action23, Action24 action24, Action25 action25,
1277
+ Action26 action26, Action27 action27, Action28 action28,
1278
+ Action29 action29, Action30 action30, Action31 action31) {
1279
+ if (check0(input)) return action0(action_arg);
1280
+ if (check1(input)) return action1(action_arg);
1281
+ if (check2(input)) return action2(action_arg);
1282
+ if (check3(input)) return action3(action_arg);
1283
+ if (check4(input)) return action4(action_arg);
1284
+ if (check5(input)) return action5(action_arg);
1285
+ if (check6(input)) return action6(action_arg);
1286
+ if (check7(input)) return action7(action_arg);
1287
+ if (check8(input)) return action8(action_arg);
1288
+ if (check9(input)) return action9(action_arg);
1289
+ if (check10(input)) return action10(action_arg);
1290
+ if (check11(input)) return action11(action_arg);
1291
+ if (check12(input)) return action12(action_arg);
1292
+ if (check13(input)) return action13(action_arg);
1293
+ if (check14(input)) return action14(action_arg);
1294
+ if (check15(input)) return action15(action_arg);
1295
+ if (check16(input)) return action16(action_arg);
1296
+ if (check17(input)) return action17(action_arg);
1297
+ if (check18(input)) return action18(action_arg);
1298
+ if (check19(input)) return action19(action_arg);
1299
+ if (check20(input)) return action20(action_arg);
1300
+ if (check21(input)) return action21(action_arg);
1301
+ if (check22(input)) return action22(action_arg);
1302
+ if (check23(input)) return action23(action_arg);
1303
+ if (check24(input)) return action24(action_arg);
1304
+ if (check25(input)) return action25(action_arg);
1305
+ if (check26(input)) return action26(action_arg);
1306
+ if (check27(input)) return action27(action_arg);
1307
+ if (check28(input)) return action28(action_arg);
1308
+ if (check29(input)) return action29(action_arg);
1309
+ if (check30(input)) return action30(action_arg);
1310
+ if (check31(input)) return action31(action_arg);
1311
+ return action_fail(action_arg);
1312
+ }
1313
+
1314
+ template <
1315
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1316
+ typename Check1, typename Check2, typename Check3, typename Check4,
1317
+ typename Check5, typename Check6, typename Check7, typename Check8,
1318
+ typename Check9, typename Check10, typename Check11, typename Check12,
1319
+ typename Check13, typename Check14, typename Check15, typename Check16,
1320
+ typename Check17, typename Check18, typename Check19, typename Check20,
1321
+ typename Check21, typename Check22, typename Check23, typename Check24,
1322
+ typename Check25, typename Check26, typename Check27, typename Check28,
1323
+ typename Check29, typename Check30, typename Check31, typename Check32,
1324
+ typename Action0, typename Action1, typename Action2, typename Action3,
1325
+ typename Action4, typename Action5, typename Action6, typename Action7,
1326
+ typename Action8, typename Action9, typename Action10, typename Action11,
1327
+ typename Action12, typename Action13, typename Action14, typename Action15,
1328
+ typename Action16, typename Action17, typename Action18, typename Action19,
1329
+ typename Action20, typename Action21, typename Action22, typename Action23,
1330
+ typename Action24, typename Action25, typename Action26, typename Action27,
1331
+ typename Action28, typename Action29, typename Action30, typename Action31,
1332
+ typename Action32>
1333
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1334
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1335
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1336
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1337
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1338
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1339
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1340
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1341
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1342
+ Check32 check32, Action0 action0, Action1 action1, Action2 action2,
1343
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
1344
+ Action7 action7, Action8 action8, Action9 action9,
1345
+ Action10 action10, Action11 action11, Action12 action12,
1346
+ Action13 action13, Action14 action14, Action15 action15,
1347
+ Action16 action16, Action17 action17, Action18 action18,
1348
+ Action19 action19, Action20 action20, Action21 action21,
1349
+ Action22 action22, Action23 action23, Action24 action24,
1350
+ Action25 action25, Action26 action26, Action27 action27,
1351
+ Action28 action28, Action29 action29, Action30 action30,
1352
+ Action31 action31, Action32 action32) {
1353
+ if (check0(input)) return action0(action_arg);
1354
+ if (check1(input)) return action1(action_arg);
1355
+ if (check2(input)) return action2(action_arg);
1356
+ if (check3(input)) return action3(action_arg);
1357
+ if (check4(input)) return action4(action_arg);
1358
+ if (check5(input)) return action5(action_arg);
1359
+ if (check6(input)) return action6(action_arg);
1360
+ if (check7(input)) return action7(action_arg);
1361
+ if (check8(input)) return action8(action_arg);
1362
+ if (check9(input)) return action9(action_arg);
1363
+ if (check10(input)) return action10(action_arg);
1364
+ if (check11(input)) return action11(action_arg);
1365
+ if (check12(input)) return action12(action_arg);
1366
+ if (check13(input)) return action13(action_arg);
1367
+ if (check14(input)) return action14(action_arg);
1368
+ if (check15(input)) return action15(action_arg);
1369
+ if (check16(input)) return action16(action_arg);
1370
+ if (check17(input)) return action17(action_arg);
1371
+ if (check18(input)) return action18(action_arg);
1372
+ if (check19(input)) return action19(action_arg);
1373
+ if (check20(input)) return action20(action_arg);
1374
+ if (check21(input)) return action21(action_arg);
1375
+ if (check22(input)) return action22(action_arg);
1376
+ if (check23(input)) return action23(action_arg);
1377
+ if (check24(input)) return action24(action_arg);
1378
+ if (check25(input)) return action25(action_arg);
1379
+ if (check26(input)) return action26(action_arg);
1380
+ if (check27(input)) return action27(action_arg);
1381
+ if (check28(input)) return action28(action_arg);
1382
+ if (check29(input)) return action29(action_arg);
1383
+ if (check30(input)) return action30(action_arg);
1384
+ if (check31(input)) return action31(action_arg);
1385
+ if (check32(input)) return action32(action_arg);
1386
+ return action_fail(action_arg);
1387
+ }
1388
+
1389
+ template <
1390
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1391
+ typename Check1, typename Check2, typename Check3, typename Check4,
1392
+ typename Check5, typename Check6, typename Check7, typename Check8,
1393
+ typename Check9, typename Check10, typename Check11, typename Check12,
1394
+ typename Check13, typename Check14, typename Check15, typename Check16,
1395
+ typename Check17, typename Check18, typename Check19, typename Check20,
1396
+ typename Check21, typename Check22, typename Check23, typename Check24,
1397
+ typename Check25, typename Check26, typename Check27, typename Check28,
1398
+ typename Check29, typename Check30, typename Check31, typename Check32,
1399
+ typename Check33, typename Action0, typename Action1, typename Action2,
1400
+ typename Action3, typename Action4, typename Action5, typename Action6,
1401
+ typename Action7, typename Action8, typename Action9, typename Action10,
1402
+ typename Action11, typename Action12, typename Action13, typename Action14,
1403
+ typename Action15, typename Action16, typename Action17, typename Action18,
1404
+ typename Action19, typename Action20, typename Action21, typename Action22,
1405
+ typename Action23, typename Action24, typename Action25, typename Action26,
1406
+ typename Action27, typename Action28, typename Action29, typename Action30,
1407
+ typename Action31, typename Action32, typename Action33>
1408
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1409
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1410
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1411
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1412
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1413
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1414
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1415
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1416
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1417
+ Check32 check32, Check33 check33, Action0 action0, Action1 action1,
1418
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
1419
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
1420
+ Action10 action10, Action11 action11, Action12 action12,
1421
+ Action13 action13, Action14 action14, Action15 action15,
1422
+ Action16 action16, Action17 action17, Action18 action18,
1423
+ Action19 action19, Action20 action20, Action21 action21,
1424
+ Action22 action22, Action23 action23, Action24 action24,
1425
+ Action25 action25, Action26 action26, Action27 action27,
1426
+ Action28 action28, Action29 action29, Action30 action30,
1427
+ Action31 action31, Action32 action32, Action33 action33) {
1428
+ if (check0(input)) return action0(action_arg);
1429
+ if (check1(input)) return action1(action_arg);
1430
+ if (check2(input)) return action2(action_arg);
1431
+ if (check3(input)) return action3(action_arg);
1432
+ if (check4(input)) return action4(action_arg);
1433
+ if (check5(input)) return action5(action_arg);
1434
+ if (check6(input)) return action6(action_arg);
1435
+ if (check7(input)) return action7(action_arg);
1436
+ if (check8(input)) return action8(action_arg);
1437
+ if (check9(input)) return action9(action_arg);
1438
+ if (check10(input)) return action10(action_arg);
1439
+ if (check11(input)) return action11(action_arg);
1440
+ if (check12(input)) return action12(action_arg);
1441
+ if (check13(input)) return action13(action_arg);
1442
+ if (check14(input)) return action14(action_arg);
1443
+ if (check15(input)) return action15(action_arg);
1444
+ if (check16(input)) return action16(action_arg);
1445
+ if (check17(input)) return action17(action_arg);
1446
+ if (check18(input)) return action18(action_arg);
1447
+ if (check19(input)) return action19(action_arg);
1448
+ if (check20(input)) return action20(action_arg);
1449
+ if (check21(input)) return action21(action_arg);
1450
+ if (check22(input)) return action22(action_arg);
1451
+ if (check23(input)) return action23(action_arg);
1452
+ if (check24(input)) return action24(action_arg);
1453
+ if (check25(input)) return action25(action_arg);
1454
+ if (check26(input)) return action26(action_arg);
1455
+ if (check27(input)) return action27(action_arg);
1456
+ if (check28(input)) return action28(action_arg);
1457
+ if (check29(input)) return action29(action_arg);
1458
+ if (check30(input)) return action30(action_arg);
1459
+ if (check31(input)) return action31(action_arg);
1460
+ if (check32(input)) return action32(action_arg);
1461
+ if (check33(input)) return action33(action_arg);
1462
+ return action_fail(action_arg);
1463
+ }
1464
+
1465
+ template <
1466
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1467
+ typename Check1, typename Check2, typename Check3, typename Check4,
1468
+ typename Check5, typename Check6, typename Check7, typename Check8,
1469
+ typename Check9, typename Check10, typename Check11, typename Check12,
1470
+ typename Check13, typename Check14, typename Check15, typename Check16,
1471
+ typename Check17, typename Check18, typename Check19, typename Check20,
1472
+ typename Check21, typename Check22, typename Check23, typename Check24,
1473
+ typename Check25, typename Check26, typename Check27, typename Check28,
1474
+ typename Check29, typename Check30, typename Check31, typename Check32,
1475
+ typename Check33, typename Check34, typename Action0, typename Action1,
1476
+ typename Action2, typename Action3, typename Action4, typename Action5,
1477
+ typename Action6, typename Action7, typename Action8, typename Action9,
1478
+ typename Action10, typename Action11, typename Action12, typename Action13,
1479
+ typename Action14, typename Action15, typename Action16, typename Action17,
1480
+ typename Action18, typename Action19, typename Action20, typename Action21,
1481
+ typename Action22, typename Action23, typename Action24, typename Action25,
1482
+ typename Action26, typename Action27, typename Action28, typename Action29,
1483
+ typename Action30, typename Action31, typename Action32, typename Action33,
1484
+ typename Action34>
1485
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1486
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1487
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1488
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1489
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1490
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1491
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1492
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1493
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1494
+ Check32 check32, Check33 check33, Check34 check34, Action0 action0,
1495
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
1496
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
1497
+ Action9 action9, Action10 action10, Action11 action11,
1498
+ Action12 action12, Action13 action13, Action14 action14,
1499
+ Action15 action15, Action16 action16, Action17 action17,
1500
+ Action18 action18, Action19 action19, Action20 action20,
1501
+ Action21 action21, Action22 action22, Action23 action23,
1502
+ Action24 action24, Action25 action25, Action26 action26,
1503
+ Action27 action27, Action28 action28, Action29 action29,
1504
+ Action30 action30, Action31 action31, Action32 action32,
1505
+ Action33 action33, Action34 action34) {
1506
+ if (check0(input)) return action0(action_arg);
1507
+ if (check1(input)) return action1(action_arg);
1508
+ if (check2(input)) return action2(action_arg);
1509
+ if (check3(input)) return action3(action_arg);
1510
+ if (check4(input)) return action4(action_arg);
1511
+ if (check5(input)) return action5(action_arg);
1512
+ if (check6(input)) return action6(action_arg);
1513
+ if (check7(input)) return action7(action_arg);
1514
+ if (check8(input)) return action8(action_arg);
1515
+ if (check9(input)) return action9(action_arg);
1516
+ if (check10(input)) return action10(action_arg);
1517
+ if (check11(input)) return action11(action_arg);
1518
+ if (check12(input)) return action12(action_arg);
1519
+ if (check13(input)) return action13(action_arg);
1520
+ if (check14(input)) return action14(action_arg);
1521
+ if (check15(input)) return action15(action_arg);
1522
+ if (check16(input)) return action16(action_arg);
1523
+ if (check17(input)) return action17(action_arg);
1524
+ if (check18(input)) return action18(action_arg);
1525
+ if (check19(input)) return action19(action_arg);
1526
+ if (check20(input)) return action20(action_arg);
1527
+ if (check21(input)) return action21(action_arg);
1528
+ if (check22(input)) return action22(action_arg);
1529
+ if (check23(input)) return action23(action_arg);
1530
+ if (check24(input)) return action24(action_arg);
1531
+ if (check25(input)) return action25(action_arg);
1532
+ if (check26(input)) return action26(action_arg);
1533
+ if (check27(input)) return action27(action_arg);
1534
+ if (check28(input)) return action28(action_arg);
1535
+ if (check29(input)) return action29(action_arg);
1536
+ if (check30(input)) return action30(action_arg);
1537
+ if (check31(input)) return action31(action_arg);
1538
+ if (check32(input)) return action32(action_arg);
1539
+ if (check33(input)) return action33(action_arg);
1540
+ if (check34(input)) return action34(action_arg);
1541
+ return action_fail(action_arg);
1542
+ }
1543
+
1544
+ template <
1545
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1546
+ typename Check1, typename Check2, typename Check3, typename Check4,
1547
+ typename Check5, typename Check6, typename Check7, typename Check8,
1548
+ typename Check9, typename Check10, typename Check11, typename Check12,
1549
+ typename Check13, typename Check14, typename Check15, typename Check16,
1550
+ typename Check17, typename Check18, typename Check19, typename Check20,
1551
+ typename Check21, typename Check22, typename Check23, typename Check24,
1552
+ typename Check25, typename Check26, typename Check27, typename Check28,
1553
+ typename Check29, typename Check30, typename Check31, typename Check32,
1554
+ typename Check33, typename Check34, typename Check35, typename Action0,
1555
+ typename Action1, typename Action2, typename Action3, typename Action4,
1556
+ typename Action5, typename Action6, typename Action7, typename Action8,
1557
+ typename Action9, typename Action10, typename Action11, typename Action12,
1558
+ typename Action13, typename Action14, typename Action15, typename Action16,
1559
+ typename Action17, typename Action18, typename Action19, typename Action20,
1560
+ typename Action21, typename Action22, typename Action23, typename Action24,
1561
+ typename Action25, typename Action26, typename Action27, typename Action28,
1562
+ typename Action29, typename Action30, typename Action31, typename Action32,
1563
+ typename Action33, typename Action34, typename Action35>
1564
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1565
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1566
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1567
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1568
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1569
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1570
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1571
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1572
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1573
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
1574
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
1575
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
1576
+ Action8 action8, Action9 action9, Action10 action10,
1577
+ Action11 action11, Action12 action12, Action13 action13,
1578
+ Action14 action14, Action15 action15, Action16 action16,
1579
+ Action17 action17, Action18 action18, Action19 action19,
1580
+ Action20 action20, Action21 action21, Action22 action22,
1581
+ Action23 action23, Action24 action24, Action25 action25,
1582
+ Action26 action26, Action27 action27, Action28 action28,
1583
+ Action29 action29, Action30 action30, Action31 action31,
1584
+ Action32 action32, Action33 action33, Action34 action34,
1585
+ Action35 action35) {
1586
+ if (check0(input)) return action0(action_arg);
1587
+ if (check1(input)) return action1(action_arg);
1588
+ if (check2(input)) return action2(action_arg);
1589
+ if (check3(input)) return action3(action_arg);
1590
+ if (check4(input)) return action4(action_arg);
1591
+ if (check5(input)) return action5(action_arg);
1592
+ if (check6(input)) return action6(action_arg);
1593
+ if (check7(input)) return action7(action_arg);
1594
+ if (check8(input)) return action8(action_arg);
1595
+ if (check9(input)) return action9(action_arg);
1596
+ if (check10(input)) return action10(action_arg);
1597
+ if (check11(input)) return action11(action_arg);
1598
+ if (check12(input)) return action12(action_arg);
1599
+ if (check13(input)) return action13(action_arg);
1600
+ if (check14(input)) return action14(action_arg);
1601
+ if (check15(input)) return action15(action_arg);
1602
+ if (check16(input)) return action16(action_arg);
1603
+ if (check17(input)) return action17(action_arg);
1604
+ if (check18(input)) return action18(action_arg);
1605
+ if (check19(input)) return action19(action_arg);
1606
+ if (check20(input)) return action20(action_arg);
1607
+ if (check21(input)) return action21(action_arg);
1608
+ if (check22(input)) return action22(action_arg);
1609
+ if (check23(input)) return action23(action_arg);
1610
+ if (check24(input)) return action24(action_arg);
1611
+ if (check25(input)) return action25(action_arg);
1612
+ if (check26(input)) return action26(action_arg);
1613
+ if (check27(input)) return action27(action_arg);
1614
+ if (check28(input)) return action28(action_arg);
1615
+ if (check29(input)) return action29(action_arg);
1616
+ if (check30(input)) return action30(action_arg);
1617
+ if (check31(input)) return action31(action_arg);
1618
+ if (check32(input)) return action32(action_arg);
1619
+ if (check33(input)) return action33(action_arg);
1620
+ if (check34(input)) return action34(action_arg);
1621
+ if (check35(input)) return action35(action_arg);
1622
+ return action_fail(action_arg);
1623
+ }
1624
+
1625
+ template <
1626
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1627
+ typename Check1, typename Check2, typename Check3, typename Check4,
1628
+ typename Check5, typename Check6, typename Check7, typename Check8,
1629
+ typename Check9, typename Check10, typename Check11, typename Check12,
1630
+ typename Check13, typename Check14, typename Check15, typename Check16,
1631
+ typename Check17, typename Check18, typename Check19, typename Check20,
1632
+ typename Check21, typename Check22, typename Check23, typename Check24,
1633
+ typename Check25, typename Check26, typename Check27, typename Check28,
1634
+ typename Check29, typename Check30, typename Check31, typename Check32,
1635
+ typename Check33, typename Check34, typename Check35, typename Check36,
1636
+ typename Action0, typename Action1, typename Action2, typename Action3,
1637
+ typename Action4, typename Action5, typename Action6, typename Action7,
1638
+ typename Action8, typename Action9, typename Action10, typename Action11,
1639
+ typename Action12, typename Action13, typename Action14, typename Action15,
1640
+ typename Action16, typename Action17, typename Action18, typename Action19,
1641
+ typename Action20, typename Action21, typename Action22, typename Action23,
1642
+ typename Action24, typename Action25, typename Action26, typename Action27,
1643
+ typename Action28, typename Action29, typename Action30, typename Action31,
1644
+ typename Action32, typename Action33, typename Action34, typename Action35,
1645
+ typename Action36>
1646
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1647
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1648
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1649
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1650
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1651
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1652
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1653
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1654
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1655
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
1656
+ Check36 check36, Action0 action0, Action1 action1, Action2 action2,
1657
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
1658
+ Action7 action7, Action8 action8, Action9 action9,
1659
+ Action10 action10, Action11 action11, Action12 action12,
1660
+ Action13 action13, Action14 action14, Action15 action15,
1661
+ Action16 action16, Action17 action17, Action18 action18,
1662
+ Action19 action19, Action20 action20, Action21 action21,
1663
+ Action22 action22, Action23 action23, Action24 action24,
1664
+ Action25 action25, Action26 action26, Action27 action27,
1665
+ Action28 action28, Action29 action29, Action30 action30,
1666
+ Action31 action31, Action32 action32, Action33 action33,
1667
+ Action34 action34, Action35 action35, Action36 action36) {
1668
+ if (check0(input)) return action0(action_arg);
1669
+ if (check1(input)) return action1(action_arg);
1670
+ if (check2(input)) return action2(action_arg);
1671
+ if (check3(input)) return action3(action_arg);
1672
+ if (check4(input)) return action4(action_arg);
1673
+ if (check5(input)) return action5(action_arg);
1674
+ if (check6(input)) return action6(action_arg);
1675
+ if (check7(input)) return action7(action_arg);
1676
+ if (check8(input)) return action8(action_arg);
1677
+ if (check9(input)) return action9(action_arg);
1678
+ if (check10(input)) return action10(action_arg);
1679
+ if (check11(input)) return action11(action_arg);
1680
+ if (check12(input)) return action12(action_arg);
1681
+ if (check13(input)) return action13(action_arg);
1682
+ if (check14(input)) return action14(action_arg);
1683
+ if (check15(input)) return action15(action_arg);
1684
+ if (check16(input)) return action16(action_arg);
1685
+ if (check17(input)) return action17(action_arg);
1686
+ if (check18(input)) return action18(action_arg);
1687
+ if (check19(input)) return action19(action_arg);
1688
+ if (check20(input)) return action20(action_arg);
1689
+ if (check21(input)) return action21(action_arg);
1690
+ if (check22(input)) return action22(action_arg);
1691
+ if (check23(input)) return action23(action_arg);
1692
+ if (check24(input)) return action24(action_arg);
1693
+ if (check25(input)) return action25(action_arg);
1694
+ if (check26(input)) return action26(action_arg);
1695
+ if (check27(input)) return action27(action_arg);
1696
+ if (check28(input)) return action28(action_arg);
1697
+ if (check29(input)) return action29(action_arg);
1698
+ if (check30(input)) return action30(action_arg);
1699
+ if (check31(input)) return action31(action_arg);
1700
+ if (check32(input)) return action32(action_arg);
1701
+ if (check33(input)) return action33(action_arg);
1702
+ if (check34(input)) return action34(action_arg);
1703
+ if (check35(input)) return action35(action_arg);
1704
+ if (check36(input)) return action36(action_arg);
1705
+ return action_fail(action_arg);
1706
+ }
1707
+
1708
+ template <
1709
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1710
+ typename Check1, typename Check2, typename Check3, typename Check4,
1711
+ typename Check5, typename Check6, typename Check7, typename Check8,
1712
+ typename Check9, typename Check10, typename Check11, typename Check12,
1713
+ typename Check13, typename Check14, typename Check15, typename Check16,
1714
+ typename Check17, typename Check18, typename Check19, typename Check20,
1715
+ typename Check21, typename Check22, typename Check23, typename Check24,
1716
+ typename Check25, typename Check26, typename Check27, typename Check28,
1717
+ typename Check29, typename Check30, typename Check31, typename Check32,
1718
+ typename Check33, typename Check34, typename Check35, typename Check36,
1719
+ typename Check37, typename Action0, typename Action1, typename Action2,
1720
+ typename Action3, typename Action4, typename Action5, typename Action6,
1721
+ typename Action7, typename Action8, typename Action9, typename Action10,
1722
+ typename Action11, typename Action12, typename Action13, typename Action14,
1723
+ typename Action15, typename Action16, typename Action17, typename Action18,
1724
+ typename Action19, typename Action20, typename Action21, typename Action22,
1725
+ typename Action23, typename Action24, typename Action25, typename Action26,
1726
+ typename Action27, typename Action28, typename Action29, typename Action30,
1727
+ typename Action31, typename Action32, typename Action33, typename Action34,
1728
+ typename Action35, typename Action36, typename Action37>
1729
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1730
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1731
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1732
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1733
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1734
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1735
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1736
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1737
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1738
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
1739
+ Check36 check36, Check37 check37, Action0 action0, Action1 action1,
1740
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
1741
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
1742
+ Action10 action10, Action11 action11, Action12 action12,
1743
+ Action13 action13, Action14 action14, Action15 action15,
1744
+ Action16 action16, Action17 action17, Action18 action18,
1745
+ Action19 action19, Action20 action20, Action21 action21,
1746
+ Action22 action22, Action23 action23, Action24 action24,
1747
+ Action25 action25, Action26 action26, Action27 action27,
1748
+ Action28 action28, Action29 action29, Action30 action30,
1749
+ Action31 action31, Action32 action32, Action33 action33,
1750
+ Action34 action34, Action35 action35, Action36 action36,
1751
+ Action37 action37) {
1752
+ if (check0(input)) return action0(action_arg);
1753
+ if (check1(input)) return action1(action_arg);
1754
+ if (check2(input)) return action2(action_arg);
1755
+ if (check3(input)) return action3(action_arg);
1756
+ if (check4(input)) return action4(action_arg);
1757
+ if (check5(input)) return action5(action_arg);
1758
+ if (check6(input)) return action6(action_arg);
1759
+ if (check7(input)) return action7(action_arg);
1760
+ if (check8(input)) return action8(action_arg);
1761
+ if (check9(input)) return action9(action_arg);
1762
+ if (check10(input)) return action10(action_arg);
1763
+ if (check11(input)) return action11(action_arg);
1764
+ if (check12(input)) return action12(action_arg);
1765
+ if (check13(input)) return action13(action_arg);
1766
+ if (check14(input)) return action14(action_arg);
1767
+ if (check15(input)) return action15(action_arg);
1768
+ if (check16(input)) return action16(action_arg);
1769
+ if (check17(input)) return action17(action_arg);
1770
+ if (check18(input)) return action18(action_arg);
1771
+ if (check19(input)) return action19(action_arg);
1772
+ if (check20(input)) return action20(action_arg);
1773
+ if (check21(input)) return action21(action_arg);
1774
+ if (check22(input)) return action22(action_arg);
1775
+ if (check23(input)) return action23(action_arg);
1776
+ if (check24(input)) return action24(action_arg);
1777
+ if (check25(input)) return action25(action_arg);
1778
+ if (check26(input)) return action26(action_arg);
1779
+ if (check27(input)) return action27(action_arg);
1780
+ if (check28(input)) return action28(action_arg);
1781
+ if (check29(input)) return action29(action_arg);
1782
+ if (check30(input)) return action30(action_arg);
1783
+ if (check31(input)) return action31(action_arg);
1784
+ if (check32(input)) return action32(action_arg);
1785
+ if (check33(input)) return action33(action_arg);
1786
+ if (check34(input)) return action34(action_arg);
1787
+ if (check35(input)) return action35(action_arg);
1788
+ if (check36(input)) return action36(action_arg);
1789
+ if (check37(input)) return action37(action_arg);
1790
+ return action_fail(action_arg);
1791
+ }
1792
+
1793
+ template <
1794
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1795
+ typename Check1, typename Check2, typename Check3, typename Check4,
1796
+ typename Check5, typename Check6, typename Check7, typename Check8,
1797
+ typename Check9, typename Check10, typename Check11, typename Check12,
1798
+ typename Check13, typename Check14, typename Check15, typename Check16,
1799
+ typename Check17, typename Check18, typename Check19, typename Check20,
1800
+ typename Check21, typename Check22, typename Check23, typename Check24,
1801
+ typename Check25, typename Check26, typename Check27, typename Check28,
1802
+ typename Check29, typename Check30, typename Check31, typename Check32,
1803
+ typename Check33, typename Check34, typename Check35, typename Check36,
1804
+ typename Check37, typename Check38, typename Action0, typename Action1,
1805
+ typename Action2, typename Action3, typename Action4, typename Action5,
1806
+ typename Action6, typename Action7, typename Action8, typename Action9,
1807
+ typename Action10, typename Action11, typename Action12, typename Action13,
1808
+ typename Action14, typename Action15, typename Action16, typename Action17,
1809
+ typename Action18, typename Action19, typename Action20, typename Action21,
1810
+ typename Action22, typename Action23, typename Action24, typename Action25,
1811
+ typename Action26, typename Action27, typename Action28, typename Action29,
1812
+ typename Action30, typename Action31, typename Action32, typename Action33,
1813
+ typename Action34, typename Action35, typename Action36, typename Action37,
1814
+ typename Action38>
1815
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1816
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1817
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1818
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1819
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1820
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1821
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1822
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1823
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1824
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
1825
+ Check36 check36, Check37 check37, Check38 check38, Action0 action0,
1826
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
1827
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
1828
+ Action9 action9, Action10 action10, Action11 action11,
1829
+ Action12 action12, Action13 action13, Action14 action14,
1830
+ Action15 action15, Action16 action16, Action17 action17,
1831
+ Action18 action18, Action19 action19, Action20 action20,
1832
+ Action21 action21, Action22 action22, Action23 action23,
1833
+ Action24 action24, Action25 action25, Action26 action26,
1834
+ Action27 action27, Action28 action28, Action29 action29,
1835
+ Action30 action30, Action31 action31, Action32 action32,
1836
+ Action33 action33, Action34 action34, Action35 action35,
1837
+ Action36 action36, Action37 action37, Action38 action38) {
1838
+ if (check0(input)) return action0(action_arg);
1839
+ if (check1(input)) return action1(action_arg);
1840
+ if (check2(input)) return action2(action_arg);
1841
+ if (check3(input)) return action3(action_arg);
1842
+ if (check4(input)) return action4(action_arg);
1843
+ if (check5(input)) return action5(action_arg);
1844
+ if (check6(input)) return action6(action_arg);
1845
+ if (check7(input)) return action7(action_arg);
1846
+ if (check8(input)) return action8(action_arg);
1847
+ if (check9(input)) return action9(action_arg);
1848
+ if (check10(input)) return action10(action_arg);
1849
+ if (check11(input)) return action11(action_arg);
1850
+ if (check12(input)) return action12(action_arg);
1851
+ if (check13(input)) return action13(action_arg);
1852
+ if (check14(input)) return action14(action_arg);
1853
+ if (check15(input)) return action15(action_arg);
1854
+ if (check16(input)) return action16(action_arg);
1855
+ if (check17(input)) return action17(action_arg);
1856
+ if (check18(input)) return action18(action_arg);
1857
+ if (check19(input)) return action19(action_arg);
1858
+ if (check20(input)) return action20(action_arg);
1859
+ if (check21(input)) return action21(action_arg);
1860
+ if (check22(input)) return action22(action_arg);
1861
+ if (check23(input)) return action23(action_arg);
1862
+ if (check24(input)) return action24(action_arg);
1863
+ if (check25(input)) return action25(action_arg);
1864
+ if (check26(input)) return action26(action_arg);
1865
+ if (check27(input)) return action27(action_arg);
1866
+ if (check28(input)) return action28(action_arg);
1867
+ if (check29(input)) return action29(action_arg);
1868
+ if (check30(input)) return action30(action_arg);
1869
+ if (check31(input)) return action31(action_arg);
1870
+ if (check32(input)) return action32(action_arg);
1871
+ if (check33(input)) return action33(action_arg);
1872
+ if (check34(input)) return action34(action_arg);
1873
+ if (check35(input)) return action35(action_arg);
1874
+ if (check36(input)) return action36(action_arg);
1875
+ if (check37(input)) return action37(action_arg);
1876
+ if (check38(input)) return action38(action_arg);
1877
+ return action_fail(action_arg);
1878
+ }
1879
+
1880
+ template <
1881
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1882
+ typename Check1, typename Check2, typename Check3, typename Check4,
1883
+ typename Check5, typename Check6, typename Check7, typename Check8,
1884
+ typename Check9, typename Check10, typename Check11, typename Check12,
1885
+ typename Check13, typename Check14, typename Check15, typename Check16,
1886
+ typename Check17, typename Check18, typename Check19, typename Check20,
1887
+ typename Check21, typename Check22, typename Check23, typename Check24,
1888
+ typename Check25, typename Check26, typename Check27, typename Check28,
1889
+ typename Check29, typename Check30, typename Check31, typename Check32,
1890
+ typename Check33, typename Check34, typename Check35, typename Check36,
1891
+ typename Check37, typename Check38, typename Check39, typename Action0,
1892
+ typename Action1, typename Action2, typename Action3, typename Action4,
1893
+ typename Action5, typename Action6, typename Action7, typename Action8,
1894
+ typename Action9, typename Action10, typename Action11, typename Action12,
1895
+ typename Action13, typename Action14, typename Action15, typename Action16,
1896
+ typename Action17, typename Action18, typename Action19, typename Action20,
1897
+ typename Action21, typename Action22, typename Action23, typename Action24,
1898
+ typename Action25, typename Action26, typename Action27, typename Action28,
1899
+ typename Action29, typename Action30, typename Action31, typename Action32,
1900
+ typename Action33, typename Action34, typename Action35, typename Action36,
1901
+ typename Action37, typename Action38, typename Action39>
1902
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
1903
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
1904
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
1905
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
1906
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
1907
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
1908
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
1909
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
1910
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
1911
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
1912
+ Check36 check36, Check37 check37, Check38 check38, Check39 check39,
1913
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
1914
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
1915
+ Action8 action8, Action9 action9, Action10 action10,
1916
+ Action11 action11, Action12 action12, Action13 action13,
1917
+ Action14 action14, Action15 action15, Action16 action16,
1918
+ Action17 action17, Action18 action18, Action19 action19,
1919
+ Action20 action20, Action21 action21, Action22 action22,
1920
+ Action23 action23, Action24 action24, Action25 action25,
1921
+ Action26 action26, Action27 action27, Action28 action28,
1922
+ Action29 action29, Action30 action30, Action31 action31,
1923
+ Action32 action32, Action33 action33, Action34 action34,
1924
+ Action35 action35, Action36 action36, Action37 action37,
1925
+ Action38 action38, Action39 action39) {
1926
+ if (check0(input)) return action0(action_arg);
1927
+ if (check1(input)) return action1(action_arg);
1928
+ if (check2(input)) return action2(action_arg);
1929
+ if (check3(input)) return action3(action_arg);
1930
+ if (check4(input)) return action4(action_arg);
1931
+ if (check5(input)) return action5(action_arg);
1932
+ if (check6(input)) return action6(action_arg);
1933
+ if (check7(input)) return action7(action_arg);
1934
+ if (check8(input)) return action8(action_arg);
1935
+ if (check9(input)) return action9(action_arg);
1936
+ if (check10(input)) return action10(action_arg);
1937
+ if (check11(input)) return action11(action_arg);
1938
+ if (check12(input)) return action12(action_arg);
1939
+ if (check13(input)) return action13(action_arg);
1940
+ if (check14(input)) return action14(action_arg);
1941
+ if (check15(input)) return action15(action_arg);
1942
+ if (check16(input)) return action16(action_arg);
1943
+ if (check17(input)) return action17(action_arg);
1944
+ if (check18(input)) return action18(action_arg);
1945
+ if (check19(input)) return action19(action_arg);
1946
+ if (check20(input)) return action20(action_arg);
1947
+ if (check21(input)) return action21(action_arg);
1948
+ if (check22(input)) return action22(action_arg);
1949
+ if (check23(input)) return action23(action_arg);
1950
+ if (check24(input)) return action24(action_arg);
1951
+ if (check25(input)) return action25(action_arg);
1952
+ if (check26(input)) return action26(action_arg);
1953
+ if (check27(input)) return action27(action_arg);
1954
+ if (check28(input)) return action28(action_arg);
1955
+ if (check29(input)) return action29(action_arg);
1956
+ if (check30(input)) return action30(action_arg);
1957
+ if (check31(input)) return action31(action_arg);
1958
+ if (check32(input)) return action32(action_arg);
1959
+ if (check33(input)) return action33(action_arg);
1960
+ if (check34(input)) return action34(action_arg);
1961
+ if (check35(input)) return action35(action_arg);
1962
+ if (check36(input)) return action36(action_arg);
1963
+ if (check37(input)) return action37(action_arg);
1964
+ if (check38(input)) return action38(action_arg);
1965
+ if (check39(input)) return action39(action_arg);
1966
+ return action_fail(action_arg);
1967
+ }
1968
+
1969
+ template <
1970
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
1971
+ typename Check1, typename Check2, typename Check3, typename Check4,
1972
+ typename Check5, typename Check6, typename Check7, typename Check8,
1973
+ typename Check9, typename Check10, typename Check11, typename Check12,
1974
+ typename Check13, typename Check14, typename Check15, typename Check16,
1975
+ typename Check17, typename Check18, typename Check19, typename Check20,
1976
+ typename Check21, typename Check22, typename Check23, typename Check24,
1977
+ typename Check25, typename Check26, typename Check27, typename Check28,
1978
+ typename Check29, typename Check30, typename Check31, typename Check32,
1979
+ typename Check33, typename Check34, typename Check35, typename Check36,
1980
+ typename Check37, typename Check38, typename Check39, typename Check40,
1981
+ typename Action0, typename Action1, typename Action2, typename Action3,
1982
+ typename Action4, typename Action5, typename Action6, typename Action7,
1983
+ typename Action8, typename Action9, typename Action10, typename Action11,
1984
+ typename Action12, typename Action13, typename Action14, typename Action15,
1985
+ typename Action16, typename Action17, typename Action18, typename Action19,
1986
+ typename Action20, typename Action21, typename Action22, typename Action23,
1987
+ typename Action24, typename Action25, typename Action26, typename Action27,
1988
+ typename Action28, typename Action29, typename Action30, typename Action31,
1989
+ typename Action32, typename Action33, typename Action34, typename Action35,
1990
+ typename Action36, typename Action37, typename Action38, typename Action39,
1991
+ typename Action40>
1992
+ auto IfList(
1993
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
1994
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
1995
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
1996
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
1997
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
1998
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
1999
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2000
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2001
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2002
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2003
+ Check39 check39, Check40 check40, Action0 action0, Action1 action1,
2004
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
2005
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
2006
+ Action10 action10, Action11 action11, Action12 action12, Action13 action13,
2007
+ Action14 action14, Action15 action15, Action16 action16, Action17 action17,
2008
+ Action18 action18, Action19 action19, Action20 action20, Action21 action21,
2009
+ Action22 action22, Action23 action23, Action24 action24, Action25 action25,
2010
+ Action26 action26, Action27 action27, Action28 action28, Action29 action29,
2011
+ Action30 action30, Action31 action31, Action32 action32, Action33 action33,
2012
+ Action34 action34, Action35 action35, Action36 action36, Action37 action37,
2013
+ Action38 action38, Action39 action39, Action40 action40) {
2014
+ if (check0(input)) return action0(action_arg);
2015
+ if (check1(input)) return action1(action_arg);
2016
+ if (check2(input)) return action2(action_arg);
2017
+ if (check3(input)) return action3(action_arg);
2018
+ if (check4(input)) return action4(action_arg);
2019
+ if (check5(input)) return action5(action_arg);
2020
+ if (check6(input)) return action6(action_arg);
2021
+ if (check7(input)) return action7(action_arg);
2022
+ if (check8(input)) return action8(action_arg);
2023
+ if (check9(input)) return action9(action_arg);
2024
+ if (check10(input)) return action10(action_arg);
2025
+ if (check11(input)) return action11(action_arg);
2026
+ if (check12(input)) return action12(action_arg);
2027
+ if (check13(input)) return action13(action_arg);
2028
+ if (check14(input)) return action14(action_arg);
2029
+ if (check15(input)) return action15(action_arg);
2030
+ if (check16(input)) return action16(action_arg);
2031
+ if (check17(input)) return action17(action_arg);
2032
+ if (check18(input)) return action18(action_arg);
2033
+ if (check19(input)) return action19(action_arg);
2034
+ if (check20(input)) return action20(action_arg);
2035
+ if (check21(input)) return action21(action_arg);
2036
+ if (check22(input)) return action22(action_arg);
2037
+ if (check23(input)) return action23(action_arg);
2038
+ if (check24(input)) return action24(action_arg);
2039
+ if (check25(input)) return action25(action_arg);
2040
+ if (check26(input)) return action26(action_arg);
2041
+ if (check27(input)) return action27(action_arg);
2042
+ if (check28(input)) return action28(action_arg);
2043
+ if (check29(input)) return action29(action_arg);
2044
+ if (check30(input)) return action30(action_arg);
2045
+ if (check31(input)) return action31(action_arg);
2046
+ if (check32(input)) return action32(action_arg);
2047
+ if (check33(input)) return action33(action_arg);
2048
+ if (check34(input)) return action34(action_arg);
2049
+ if (check35(input)) return action35(action_arg);
2050
+ if (check36(input)) return action36(action_arg);
2051
+ if (check37(input)) return action37(action_arg);
2052
+ if (check38(input)) return action38(action_arg);
2053
+ if (check39(input)) return action39(action_arg);
2054
+ if (check40(input)) return action40(action_arg);
2055
+ return action_fail(action_arg);
2056
+ }
2057
+
2058
+ template <
2059
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2060
+ typename Check1, typename Check2, typename Check3, typename Check4,
2061
+ typename Check5, typename Check6, typename Check7, typename Check8,
2062
+ typename Check9, typename Check10, typename Check11, typename Check12,
2063
+ typename Check13, typename Check14, typename Check15, typename Check16,
2064
+ typename Check17, typename Check18, typename Check19, typename Check20,
2065
+ typename Check21, typename Check22, typename Check23, typename Check24,
2066
+ typename Check25, typename Check26, typename Check27, typename Check28,
2067
+ typename Check29, typename Check30, typename Check31, typename Check32,
2068
+ typename Check33, typename Check34, typename Check35, typename Check36,
2069
+ typename Check37, typename Check38, typename Check39, typename Check40,
2070
+ typename Check41, typename Action0, typename Action1, typename Action2,
2071
+ typename Action3, typename Action4, typename Action5, typename Action6,
2072
+ typename Action7, typename Action8, typename Action9, typename Action10,
2073
+ typename Action11, typename Action12, typename Action13, typename Action14,
2074
+ typename Action15, typename Action16, typename Action17, typename Action18,
2075
+ typename Action19, typename Action20, typename Action21, typename Action22,
2076
+ typename Action23, typename Action24, typename Action25, typename Action26,
2077
+ typename Action27, typename Action28, typename Action29, typename Action30,
2078
+ typename Action31, typename Action32, typename Action33, typename Action34,
2079
+ typename Action35, typename Action36, typename Action37, typename Action38,
2080
+ typename Action39, typename Action40, typename Action41>
2081
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
2082
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
2083
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
2084
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
2085
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
2086
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
2087
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
2088
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
2089
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
2090
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
2091
+ Check36 check36, Check37 check37, Check38 check38, Check39 check39,
2092
+ Check40 check40, Check41 check41, Action0 action0, Action1 action1,
2093
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
2094
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
2095
+ Action10 action10, Action11 action11, Action12 action12,
2096
+ Action13 action13, Action14 action14, Action15 action15,
2097
+ Action16 action16, Action17 action17, Action18 action18,
2098
+ Action19 action19, Action20 action20, Action21 action21,
2099
+ Action22 action22, Action23 action23, Action24 action24,
2100
+ Action25 action25, Action26 action26, Action27 action27,
2101
+ Action28 action28, Action29 action29, Action30 action30,
2102
+ Action31 action31, Action32 action32, Action33 action33,
2103
+ Action34 action34, Action35 action35, Action36 action36,
2104
+ Action37 action37, Action38 action38, Action39 action39,
2105
+ Action40 action40, Action41 action41) {
2106
+ if (check0(input)) return action0(action_arg);
2107
+ if (check1(input)) return action1(action_arg);
2108
+ if (check2(input)) return action2(action_arg);
2109
+ if (check3(input)) return action3(action_arg);
2110
+ if (check4(input)) return action4(action_arg);
2111
+ if (check5(input)) return action5(action_arg);
2112
+ if (check6(input)) return action6(action_arg);
2113
+ if (check7(input)) return action7(action_arg);
2114
+ if (check8(input)) return action8(action_arg);
2115
+ if (check9(input)) return action9(action_arg);
2116
+ if (check10(input)) return action10(action_arg);
2117
+ if (check11(input)) return action11(action_arg);
2118
+ if (check12(input)) return action12(action_arg);
2119
+ if (check13(input)) return action13(action_arg);
2120
+ if (check14(input)) return action14(action_arg);
2121
+ if (check15(input)) return action15(action_arg);
2122
+ if (check16(input)) return action16(action_arg);
2123
+ if (check17(input)) return action17(action_arg);
2124
+ if (check18(input)) return action18(action_arg);
2125
+ if (check19(input)) return action19(action_arg);
2126
+ if (check20(input)) return action20(action_arg);
2127
+ if (check21(input)) return action21(action_arg);
2128
+ if (check22(input)) return action22(action_arg);
2129
+ if (check23(input)) return action23(action_arg);
2130
+ if (check24(input)) return action24(action_arg);
2131
+ if (check25(input)) return action25(action_arg);
2132
+ if (check26(input)) return action26(action_arg);
2133
+ if (check27(input)) return action27(action_arg);
2134
+ if (check28(input)) return action28(action_arg);
2135
+ if (check29(input)) return action29(action_arg);
2136
+ if (check30(input)) return action30(action_arg);
2137
+ if (check31(input)) return action31(action_arg);
2138
+ if (check32(input)) return action32(action_arg);
2139
+ if (check33(input)) return action33(action_arg);
2140
+ if (check34(input)) return action34(action_arg);
2141
+ if (check35(input)) return action35(action_arg);
2142
+ if (check36(input)) return action36(action_arg);
2143
+ if (check37(input)) return action37(action_arg);
2144
+ if (check38(input)) return action38(action_arg);
2145
+ if (check39(input)) return action39(action_arg);
2146
+ if (check40(input)) return action40(action_arg);
2147
+ if (check41(input)) return action41(action_arg);
2148
+ return action_fail(action_arg);
2149
+ }
2150
+
2151
+ template <
2152
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2153
+ typename Check1, typename Check2, typename Check3, typename Check4,
2154
+ typename Check5, typename Check6, typename Check7, typename Check8,
2155
+ typename Check9, typename Check10, typename Check11, typename Check12,
2156
+ typename Check13, typename Check14, typename Check15, typename Check16,
2157
+ typename Check17, typename Check18, typename Check19, typename Check20,
2158
+ typename Check21, typename Check22, typename Check23, typename Check24,
2159
+ typename Check25, typename Check26, typename Check27, typename Check28,
2160
+ typename Check29, typename Check30, typename Check31, typename Check32,
2161
+ typename Check33, typename Check34, typename Check35, typename Check36,
2162
+ typename Check37, typename Check38, typename Check39, typename Check40,
2163
+ typename Check41, typename Check42, typename Action0, typename Action1,
2164
+ typename Action2, typename Action3, typename Action4, typename Action5,
2165
+ typename Action6, typename Action7, typename Action8, typename Action9,
2166
+ typename Action10, typename Action11, typename Action12, typename Action13,
2167
+ typename Action14, typename Action15, typename Action16, typename Action17,
2168
+ typename Action18, typename Action19, typename Action20, typename Action21,
2169
+ typename Action22, typename Action23, typename Action24, typename Action25,
2170
+ typename Action26, typename Action27, typename Action28, typename Action29,
2171
+ typename Action30, typename Action31, typename Action32, typename Action33,
2172
+ typename Action34, typename Action35, typename Action36, typename Action37,
2173
+ typename Action38, typename Action39, typename Action40, typename Action41,
2174
+ typename Action42>
2175
+ auto IfList(
2176
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2177
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2178
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2179
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2180
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2181
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2182
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2183
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2184
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2185
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2186
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2187
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
2188
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
2189
+ Action8 action8, Action9 action9, Action10 action10, Action11 action11,
2190
+ Action12 action12, Action13 action13, Action14 action14, Action15 action15,
2191
+ Action16 action16, Action17 action17, Action18 action18, Action19 action19,
2192
+ Action20 action20, Action21 action21, Action22 action22, Action23 action23,
2193
+ Action24 action24, Action25 action25, Action26 action26, Action27 action27,
2194
+ Action28 action28, Action29 action29, Action30 action30, Action31 action31,
2195
+ Action32 action32, Action33 action33, Action34 action34, Action35 action35,
2196
+ Action36 action36, Action37 action37, Action38 action38, Action39 action39,
2197
+ Action40 action40, Action41 action41, Action42 action42) {
2198
+ if (check0(input)) return action0(action_arg);
2199
+ if (check1(input)) return action1(action_arg);
2200
+ if (check2(input)) return action2(action_arg);
2201
+ if (check3(input)) return action3(action_arg);
2202
+ if (check4(input)) return action4(action_arg);
2203
+ if (check5(input)) return action5(action_arg);
2204
+ if (check6(input)) return action6(action_arg);
2205
+ if (check7(input)) return action7(action_arg);
2206
+ if (check8(input)) return action8(action_arg);
2207
+ if (check9(input)) return action9(action_arg);
2208
+ if (check10(input)) return action10(action_arg);
2209
+ if (check11(input)) return action11(action_arg);
2210
+ if (check12(input)) return action12(action_arg);
2211
+ if (check13(input)) return action13(action_arg);
2212
+ if (check14(input)) return action14(action_arg);
2213
+ if (check15(input)) return action15(action_arg);
2214
+ if (check16(input)) return action16(action_arg);
2215
+ if (check17(input)) return action17(action_arg);
2216
+ if (check18(input)) return action18(action_arg);
2217
+ if (check19(input)) return action19(action_arg);
2218
+ if (check20(input)) return action20(action_arg);
2219
+ if (check21(input)) return action21(action_arg);
2220
+ if (check22(input)) return action22(action_arg);
2221
+ if (check23(input)) return action23(action_arg);
2222
+ if (check24(input)) return action24(action_arg);
2223
+ if (check25(input)) return action25(action_arg);
2224
+ if (check26(input)) return action26(action_arg);
2225
+ if (check27(input)) return action27(action_arg);
2226
+ if (check28(input)) return action28(action_arg);
2227
+ if (check29(input)) return action29(action_arg);
2228
+ if (check30(input)) return action30(action_arg);
2229
+ if (check31(input)) return action31(action_arg);
2230
+ if (check32(input)) return action32(action_arg);
2231
+ if (check33(input)) return action33(action_arg);
2232
+ if (check34(input)) return action34(action_arg);
2233
+ if (check35(input)) return action35(action_arg);
2234
+ if (check36(input)) return action36(action_arg);
2235
+ if (check37(input)) return action37(action_arg);
2236
+ if (check38(input)) return action38(action_arg);
2237
+ if (check39(input)) return action39(action_arg);
2238
+ if (check40(input)) return action40(action_arg);
2239
+ if (check41(input)) return action41(action_arg);
2240
+ if (check42(input)) return action42(action_arg);
2241
+ return action_fail(action_arg);
2242
+ }
2243
+
2244
+ template <
2245
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2246
+ typename Check1, typename Check2, typename Check3, typename Check4,
2247
+ typename Check5, typename Check6, typename Check7, typename Check8,
2248
+ typename Check9, typename Check10, typename Check11, typename Check12,
2249
+ typename Check13, typename Check14, typename Check15, typename Check16,
2250
+ typename Check17, typename Check18, typename Check19, typename Check20,
2251
+ typename Check21, typename Check22, typename Check23, typename Check24,
2252
+ typename Check25, typename Check26, typename Check27, typename Check28,
2253
+ typename Check29, typename Check30, typename Check31, typename Check32,
2254
+ typename Check33, typename Check34, typename Check35, typename Check36,
2255
+ typename Check37, typename Check38, typename Check39, typename Check40,
2256
+ typename Check41, typename Check42, typename Check43, typename Action0,
2257
+ typename Action1, typename Action2, typename Action3, typename Action4,
2258
+ typename Action5, typename Action6, typename Action7, typename Action8,
2259
+ typename Action9, typename Action10, typename Action11, typename Action12,
2260
+ typename Action13, typename Action14, typename Action15, typename Action16,
2261
+ typename Action17, typename Action18, typename Action19, typename Action20,
2262
+ typename Action21, typename Action22, typename Action23, typename Action24,
2263
+ typename Action25, typename Action26, typename Action27, typename Action28,
2264
+ typename Action29, typename Action30, typename Action31, typename Action32,
2265
+ typename Action33, typename Action34, typename Action35, typename Action36,
2266
+ typename Action37, typename Action38, typename Action39, typename Action40,
2267
+ typename Action41, typename Action42, typename Action43>
2268
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
2269
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
2270
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
2271
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
2272
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
2273
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
2274
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
2275
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
2276
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
2277
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
2278
+ Check36 check36, Check37 check37, Check38 check38, Check39 check39,
2279
+ Check40 check40, Check41 check41, Check42 check42, Check43 check43,
2280
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
2281
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
2282
+ Action8 action8, Action9 action9, Action10 action10,
2283
+ Action11 action11, Action12 action12, Action13 action13,
2284
+ Action14 action14, Action15 action15, Action16 action16,
2285
+ Action17 action17, Action18 action18, Action19 action19,
2286
+ Action20 action20, Action21 action21, Action22 action22,
2287
+ Action23 action23, Action24 action24, Action25 action25,
2288
+ Action26 action26, Action27 action27, Action28 action28,
2289
+ Action29 action29, Action30 action30, Action31 action31,
2290
+ Action32 action32, Action33 action33, Action34 action34,
2291
+ Action35 action35, Action36 action36, Action37 action37,
2292
+ Action38 action38, Action39 action39, Action40 action40,
2293
+ Action41 action41, Action42 action42, Action43 action43) {
2294
+ if (check0(input)) return action0(action_arg);
2295
+ if (check1(input)) return action1(action_arg);
2296
+ if (check2(input)) return action2(action_arg);
2297
+ if (check3(input)) return action3(action_arg);
2298
+ if (check4(input)) return action4(action_arg);
2299
+ if (check5(input)) return action5(action_arg);
2300
+ if (check6(input)) return action6(action_arg);
2301
+ if (check7(input)) return action7(action_arg);
2302
+ if (check8(input)) return action8(action_arg);
2303
+ if (check9(input)) return action9(action_arg);
2304
+ if (check10(input)) return action10(action_arg);
2305
+ if (check11(input)) return action11(action_arg);
2306
+ if (check12(input)) return action12(action_arg);
2307
+ if (check13(input)) return action13(action_arg);
2308
+ if (check14(input)) return action14(action_arg);
2309
+ if (check15(input)) return action15(action_arg);
2310
+ if (check16(input)) return action16(action_arg);
2311
+ if (check17(input)) return action17(action_arg);
2312
+ if (check18(input)) return action18(action_arg);
2313
+ if (check19(input)) return action19(action_arg);
2314
+ if (check20(input)) return action20(action_arg);
2315
+ if (check21(input)) return action21(action_arg);
2316
+ if (check22(input)) return action22(action_arg);
2317
+ if (check23(input)) return action23(action_arg);
2318
+ if (check24(input)) return action24(action_arg);
2319
+ if (check25(input)) return action25(action_arg);
2320
+ if (check26(input)) return action26(action_arg);
2321
+ if (check27(input)) return action27(action_arg);
2322
+ if (check28(input)) return action28(action_arg);
2323
+ if (check29(input)) return action29(action_arg);
2324
+ if (check30(input)) return action30(action_arg);
2325
+ if (check31(input)) return action31(action_arg);
2326
+ if (check32(input)) return action32(action_arg);
2327
+ if (check33(input)) return action33(action_arg);
2328
+ if (check34(input)) return action34(action_arg);
2329
+ if (check35(input)) return action35(action_arg);
2330
+ if (check36(input)) return action36(action_arg);
2331
+ if (check37(input)) return action37(action_arg);
2332
+ if (check38(input)) return action38(action_arg);
2333
+ if (check39(input)) return action39(action_arg);
2334
+ if (check40(input)) return action40(action_arg);
2335
+ if (check41(input)) return action41(action_arg);
2336
+ if (check42(input)) return action42(action_arg);
2337
+ if (check43(input)) return action43(action_arg);
2338
+ return action_fail(action_arg);
2339
+ }
2340
+
2341
+ template <
2342
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2343
+ typename Check1, typename Check2, typename Check3, typename Check4,
2344
+ typename Check5, typename Check6, typename Check7, typename Check8,
2345
+ typename Check9, typename Check10, typename Check11, typename Check12,
2346
+ typename Check13, typename Check14, typename Check15, typename Check16,
2347
+ typename Check17, typename Check18, typename Check19, typename Check20,
2348
+ typename Check21, typename Check22, typename Check23, typename Check24,
2349
+ typename Check25, typename Check26, typename Check27, typename Check28,
2350
+ typename Check29, typename Check30, typename Check31, typename Check32,
2351
+ typename Check33, typename Check34, typename Check35, typename Check36,
2352
+ typename Check37, typename Check38, typename Check39, typename Check40,
2353
+ typename Check41, typename Check42, typename Check43, typename Check44,
2354
+ typename Action0, typename Action1, typename Action2, typename Action3,
2355
+ typename Action4, typename Action5, typename Action6, typename Action7,
2356
+ typename Action8, typename Action9, typename Action10, typename Action11,
2357
+ typename Action12, typename Action13, typename Action14, typename Action15,
2358
+ typename Action16, typename Action17, typename Action18, typename Action19,
2359
+ typename Action20, typename Action21, typename Action22, typename Action23,
2360
+ typename Action24, typename Action25, typename Action26, typename Action27,
2361
+ typename Action28, typename Action29, typename Action30, typename Action31,
2362
+ typename Action32, typename Action33, typename Action34, typename Action35,
2363
+ typename Action36, typename Action37, typename Action38, typename Action39,
2364
+ typename Action40, typename Action41, typename Action42, typename Action43,
2365
+ typename Action44>
2366
+ auto IfList(
2367
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2368
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2369
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2370
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2371
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2372
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2373
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2374
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2375
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2376
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2377
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2378
+ Check43 check43, Check44 check44, Action0 action0, Action1 action1,
2379
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
2380
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
2381
+ Action10 action10, Action11 action11, Action12 action12, Action13 action13,
2382
+ Action14 action14, Action15 action15, Action16 action16, Action17 action17,
2383
+ Action18 action18, Action19 action19, Action20 action20, Action21 action21,
2384
+ Action22 action22, Action23 action23, Action24 action24, Action25 action25,
2385
+ Action26 action26, Action27 action27, Action28 action28, Action29 action29,
2386
+ Action30 action30, Action31 action31, Action32 action32, Action33 action33,
2387
+ Action34 action34, Action35 action35, Action36 action36, Action37 action37,
2388
+ Action38 action38, Action39 action39, Action40 action40, Action41 action41,
2389
+ Action42 action42, Action43 action43, Action44 action44) {
2390
+ if (check0(input)) return action0(action_arg);
2391
+ if (check1(input)) return action1(action_arg);
2392
+ if (check2(input)) return action2(action_arg);
2393
+ if (check3(input)) return action3(action_arg);
2394
+ if (check4(input)) return action4(action_arg);
2395
+ if (check5(input)) return action5(action_arg);
2396
+ if (check6(input)) return action6(action_arg);
2397
+ if (check7(input)) return action7(action_arg);
2398
+ if (check8(input)) return action8(action_arg);
2399
+ if (check9(input)) return action9(action_arg);
2400
+ if (check10(input)) return action10(action_arg);
2401
+ if (check11(input)) return action11(action_arg);
2402
+ if (check12(input)) return action12(action_arg);
2403
+ if (check13(input)) return action13(action_arg);
2404
+ if (check14(input)) return action14(action_arg);
2405
+ if (check15(input)) return action15(action_arg);
2406
+ if (check16(input)) return action16(action_arg);
2407
+ if (check17(input)) return action17(action_arg);
2408
+ if (check18(input)) return action18(action_arg);
2409
+ if (check19(input)) return action19(action_arg);
2410
+ if (check20(input)) return action20(action_arg);
2411
+ if (check21(input)) return action21(action_arg);
2412
+ if (check22(input)) return action22(action_arg);
2413
+ if (check23(input)) return action23(action_arg);
2414
+ if (check24(input)) return action24(action_arg);
2415
+ if (check25(input)) return action25(action_arg);
2416
+ if (check26(input)) return action26(action_arg);
2417
+ if (check27(input)) return action27(action_arg);
2418
+ if (check28(input)) return action28(action_arg);
2419
+ if (check29(input)) return action29(action_arg);
2420
+ if (check30(input)) return action30(action_arg);
2421
+ if (check31(input)) return action31(action_arg);
2422
+ if (check32(input)) return action32(action_arg);
2423
+ if (check33(input)) return action33(action_arg);
2424
+ if (check34(input)) return action34(action_arg);
2425
+ if (check35(input)) return action35(action_arg);
2426
+ if (check36(input)) return action36(action_arg);
2427
+ if (check37(input)) return action37(action_arg);
2428
+ if (check38(input)) return action38(action_arg);
2429
+ if (check39(input)) return action39(action_arg);
2430
+ if (check40(input)) return action40(action_arg);
2431
+ if (check41(input)) return action41(action_arg);
2432
+ if (check42(input)) return action42(action_arg);
2433
+ if (check43(input)) return action43(action_arg);
2434
+ if (check44(input)) return action44(action_arg);
2435
+ return action_fail(action_arg);
2436
+ }
2437
+
2438
+ template <
2439
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2440
+ typename Check1, typename Check2, typename Check3, typename Check4,
2441
+ typename Check5, typename Check6, typename Check7, typename Check8,
2442
+ typename Check9, typename Check10, typename Check11, typename Check12,
2443
+ typename Check13, typename Check14, typename Check15, typename Check16,
2444
+ typename Check17, typename Check18, typename Check19, typename Check20,
2445
+ typename Check21, typename Check22, typename Check23, typename Check24,
2446
+ typename Check25, typename Check26, typename Check27, typename Check28,
2447
+ typename Check29, typename Check30, typename Check31, typename Check32,
2448
+ typename Check33, typename Check34, typename Check35, typename Check36,
2449
+ typename Check37, typename Check38, typename Check39, typename Check40,
2450
+ typename Check41, typename Check42, typename Check43, typename Check44,
2451
+ typename Check45, typename Action0, typename Action1, typename Action2,
2452
+ typename Action3, typename Action4, typename Action5, typename Action6,
2453
+ typename Action7, typename Action8, typename Action9, typename Action10,
2454
+ typename Action11, typename Action12, typename Action13, typename Action14,
2455
+ typename Action15, typename Action16, typename Action17, typename Action18,
2456
+ typename Action19, typename Action20, typename Action21, typename Action22,
2457
+ typename Action23, typename Action24, typename Action25, typename Action26,
2458
+ typename Action27, typename Action28, typename Action29, typename Action30,
2459
+ typename Action31, typename Action32, typename Action33, typename Action34,
2460
+ typename Action35, typename Action36, typename Action37, typename Action38,
2461
+ typename Action39, typename Action40, typename Action41, typename Action42,
2462
+ typename Action43, typename Action44, typename Action45>
2463
+ auto IfList(CheckArg input, ActionArg action_arg, ActionFail action_fail,
2464
+ Check0 check0, Check1 check1, Check2 check2, Check3 check3,
2465
+ Check4 check4, Check5 check5, Check6 check6, Check7 check7,
2466
+ Check8 check8, Check9 check9, Check10 check10, Check11 check11,
2467
+ Check12 check12, Check13 check13, Check14 check14, Check15 check15,
2468
+ Check16 check16, Check17 check17, Check18 check18, Check19 check19,
2469
+ Check20 check20, Check21 check21, Check22 check22, Check23 check23,
2470
+ Check24 check24, Check25 check25, Check26 check26, Check27 check27,
2471
+ Check28 check28, Check29 check29, Check30 check30, Check31 check31,
2472
+ Check32 check32, Check33 check33, Check34 check34, Check35 check35,
2473
+ Check36 check36, Check37 check37, Check38 check38, Check39 check39,
2474
+ Check40 check40, Check41 check41, Check42 check42, Check43 check43,
2475
+ Check44 check44, Check45 check45, Action0 action0, Action1 action1,
2476
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
2477
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
2478
+ Action10 action10, Action11 action11, Action12 action12,
2479
+ Action13 action13, Action14 action14, Action15 action15,
2480
+ Action16 action16, Action17 action17, Action18 action18,
2481
+ Action19 action19, Action20 action20, Action21 action21,
2482
+ Action22 action22, Action23 action23, Action24 action24,
2483
+ Action25 action25, Action26 action26, Action27 action27,
2484
+ Action28 action28, Action29 action29, Action30 action30,
2485
+ Action31 action31, Action32 action32, Action33 action33,
2486
+ Action34 action34, Action35 action35, Action36 action36,
2487
+ Action37 action37, Action38 action38, Action39 action39,
2488
+ Action40 action40, Action41 action41, Action42 action42,
2489
+ Action43 action43, Action44 action44, Action45 action45) {
2490
+ if (check0(input)) return action0(action_arg);
2491
+ if (check1(input)) return action1(action_arg);
2492
+ if (check2(input)) return action2(action_arg);
2493
+ if (check3(input)) return action3(action_arg);
2494
+ if (check4(input)) return action4(action_arg);
2495
+ if (check5(input)) return action5(action_arg);
2496
+ if (check6(input)) return action6(action_arg);
2497
+ if (check7(input)) return action7(action_arg);
2498
+ if (check8(input)) return action8(action_arg);
2499
+ if (check9(input)) return action9(action_arg);
2500
+ if (check10(input)) return action10(action_arg);
2501
+ if (check11(input)) return action11(action_arg);
2502
+ if (check12(input)) return action12(action_arg);
2503
+ if (check13(input)) return action13(action_arg);
2504
+ if (check14(input)) return action14(action_arg);
2505
+ if (check15(input)) return action15(action_arg);
2506
+ if (check16(input)) return action16(action_arg);
2507
+ if (check17(input)) return action17(action_arg);
2508
+ if (check18(input)) return action18(action_arg);
2509
+ if (check19(input)) return action19(action_arg);
2510
+ if (check20(input)) return action20(action_arg);
2511
+ if (check21(input)) return action21(action_arg);
2512
+ if (check22(input)) return action22(action_arg);
2513
+ if (check23(input)) return action23(action_arg);
2514
+ if (check24(input)) return action24(action_arg);
2515
+ if (check25(input)) return action25(action_arg);
2516
+ if (check26(input)) return action26(action_arg);
2517
+ if (check27(input)) return action27(action_arg);
2518
+ if (check28(input)) return action28(action_arg);
2519
+ if (check29(input)) return action29(action_arg);
2520
+ if (check30(input)) return action30(action_arg);
2521
+ if (check31(input)) return action31(action_arg);
2522
+ if (check32(input)) return action32(action_arg);
2523
+ if (check33(input)) return action33(action_arg);
2524
+ if (check34(input)) return action34(action_arg);
2525
+ if (check35(input)) return action35(action_arg);
2526
+ if (check36(input)) return action36(action_arg);
2527
+ if (check37(input)) return action37(action_arg);
2528
+ if (check38(input)) return action38(action_arg);
2529
+ if (check39(input)) return action39(action_arg);
2530
+ if (check40(input)) return action40(action_arg);
2531
+ if (check41(input)) return action41(action_arg);
2532
+ if (check42(input)) return action42(action_arg);
2533
+ if (check43(input)) return action43(action_arg);
2534
+ if (check44(input)) return action44(action_arg);
2535
+ if (check45(input)) return action45(action_arg);
2536
+ return action_fail(action_arg);
2537
+ }
2538
+
2539
+ template <
2540
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2541
+ typename Check1, typename Check2, typename Check3, typename Check4,
2542
+ typename Check5, typename Check6, typename Check7, typename Check8,
2543
+ typename Check9, typename Check10, typename Check11, typename Check12,
2544
+ typename Check13, typename Check14, typename Check15, typename Check16,
2545
+ typename Check17, typename Check18, typename Check19, typename Check20,
2546
+ typename Check21, typename Check22, typename Check23, typename Check24,
2547
+ typename Check25, typename Check26, typename Check27, typename Check28,
2548
+ typename Check29, typename Check30, typename Check31, typename Check32,
2549
+ typename Check33, typename Check34, typename Check35, typename Check36,
2550
+ typename Check37, typename Check38, typename Check39, typename Check40,
2551
+ typename Check41, typename Check42, typename Check43, typename Check44,
2552
+ typename Check45, typename Check46, typename Action0, typename Action1,
2553
+ typename Action2, typename Action3, typename Action4, typename Action5,
2554
+ typename Action6, typename Action7, typename Action8, typename Action9,
2555
+ typename Action10, typename Action11, typename Action12, typename Action13,
2556
+ typename Action14, typename Action15, typename Action16, typename Action17,
2557
+ typename Action18, typename Action19, typename Action20, typename Action21,
2558
+ typename Action22, typename Action23, typename Action24, typename Action25,
2559
+ typename Action26, typename Action27, typename Action28, typename Action29,
2560
+ typename Action30, typename Action31, typename Action32, typename Action33,
2561
+ typename Action34, typename Action35, typename Action36, typename Action37,
2562
+ typename Action38, typename Action39, typename Action40, typename Action41,
2563
+ typename Action42, typename Action43, typename Action44, typename Action45,
2564
+ typename Action46>
2565
+ auto IfList(
2566
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2567
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2568
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2569
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2570
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2571
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2572
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2573
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2574
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2575
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2576
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2577
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
2578
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
2579
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
2580
+ Action8 action8, Action9 action9, Action10 action10, Action11 action11,
2581
+ Action12 action12, Action13 action13, Action14 action14, Action15 action15,
2582
+ Action16 action16, Action17 action17, Action18 action18, Action19 action19,
2583
+ Action20 action20, Action21 action21, Action22 action22, Action23 action23,
2584
+ Action24 action24, Action25 action25, Action26 action26, Action27 action27,
2585
+ Action28 action28, Action29 action29, Action30 action30, Action31 action31,
2586
+ Action32 action32, Action33 action33, Action34 action34, Action35 action35,
2587
+ Action36 action36, Action37 action37, Action38 action38, Action39 action39,
2588
+ Action40 action40, Action41 action41, Action42 action42, Action43 action43,
2589
+ Action44 action44, Action45 action45, Action46 action46) {
2590
+ if (check0(input)) return action0(action_arg);
2591
+ if (check1(input)) return action1(action_arg);
2592
+ if (check2(input)) return action2(action_arg);
2593
+ if (check3(input)) return action3(action_arg);
2594
+ if (check4(input)) return action4(action_arg);
2595
+ if (check5(input)) return action5(action_arg);
2596
+ if (check6(input)) return action6(action_arg);
2597
+ if (check7(input)) return action7(action_arg);
2598
+ if (check8(input)) return action8(action_arg);
2599
+ if (check9(input)) return action9(action_arg);
2600
+ if (check10(input)) return action10(action_arg);
2601
+ if (check11(input)) return action11(action_arg);
2602
+ if (check12(input)) return action12(action_arg);
2603
+ if (check13(input)) return action13(action_arg);
2604
+ if (check14(input)) return action14(action_arg);
2605
+ if (check15(input)) return action15(action_arg);
2606
+ if (check16(input)) return action16(action_arg);
2607
+ if (check17(input)) return action17(action_arg);
2608
+ if (check18(input)) return action18(action_arg);
2609
+ if (check19(input)) return action19(action_arg);
2610
+ if (check20(input)) return action20(action_arg);
2611
+ if (check21(input)) return action21(action_arg);
2612
+ if (check22(input)) return action22(action_arg);
2613
+ if (check23(input)) return action23(action_arg);
2614
+ if (check24(input)) return action24(action_arg);
2615
+ if (check25(input)) return action25(action_arg);
2616
+ if (check26(input)) return action26(action_arg);
2617
+ if (check27(input)) return action27(action_arg);
2618
+ if (check28(input)) return action28(action_arg);
2619
+ if (check29(input)) return action29(action_arg);
2620
+ if (check30(input)) return action30(action_arg);
2621
+ if (check31(input)) return action31(action_arg);
2622
+ if (check32(input)) return action32(action_arg);
2623
+ if (check33(input)) return action33(action_arg);
2624
+ if (check34(input)) return action34(action_arg);
2625
+ if (check35(input)) return action35(action_arg);
2626
+ if (check36(input)) return action36(action_arg);
2627
+ if (check37(input)) return action37(action_arg);
2628
+ if (check38(input)) return action38(action_arg);
2629
+ if (check39(input)) return action39(action_arg);
2630
+ if (check40(input)) return action40(action_arg);
2631
+ if (check41(input)) return action41(action_arg);
2632
+ if (check42(input)) return action42(action_arg);
2633
+ if (check43(input)) return action43(action_arg);
2634
+ if (check44(input)) return action44(action_arg);
2635
+ if (check45(input)) return action45(action_arg);
2636
+ if (check46(input)) return action46(action_arg);
2637
+ return action_fail(action_arg);
2638
+ }
2639
+
2640
+ template <
2641
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2642
+ typename Check1, typename Check2, typename Check3, typename Check4,
2643
+ typename Check5, typename Check6, typename Check7, typename Check8,
2644
+ typename Check9, typename Check10, typename Check11, typename Check12,
2645
+ typename Check13, typename Check14, typename Check15, typename Check16,
2646
+ typename Check17, typename Check18, typename Check19, typename Check20,
2647
+ typename Check21, typename Check22, typename Check23, typename Check24,
2648
+ typename Check25, typename Check26, typename Check27, typename Check28,
2649
+ typename Check29, typename Check30, typename Check31, typename Check32,
2650
+ typename Check33, typename Check34, typename Check35, typename Check36,
2651
+ typename Check37, typename Check38, typename Check39, typename Check40,
2652
+ typename Check41, typename Check42, typename Check43, typename Check44,
2653
+ typename Check45, typename Check46, typename Check47, typename Action0,
2654
+ typename Action1, typename Action2, typename Action3, typename Action4,
2655
+ typename Action5, typename Action6, typename Action7, typename Action8,
2656
+ typename Action9, typename Action10, typename Action11, typename Action12,
2657
+ typename Action13, typename Action14, typename Action15, typename Action16,
2658
+ typename Action17, typename Action18, typename Action19, typename Action20,
2659
+ typename Action21, typename Action22, typename Action23, typename Action24,
2660
+ typename Action25, typename Action26, typename Action27, typename Action28,
2661
+ typename Action29, typename Action30, typename Action31, typename Action32,
2662
+ typename Action33, typename Action34, typename Action35, typename Action36,
2663
+ typename Action37, typename Action38, typename Action39, typename Action40,
2664
+ typename Action41, typename Action42, typename Action43, typename Action44,
2665
+ typename Action45, typename Action46, typename Action47>
2666
+ auto IfList(
2667
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2668
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2669
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2670
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2671
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2672
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2673
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2674
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2675
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2676
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2677
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2678
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
2679
+ Check47 check47, Action0 action0, Action1 action1, Action2 action2,
2680
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
2681
+ Action7 action7, Action8 action8, Action9 action9, Action10 action10,
2682
+ Action11 action11, Action12 action12, Action13 action13, Action14 action14,
2683
+ Action15 action15, Action16 action16, Action17 action17, Action18 action18,
2684
+ Action19 action19, Action20 action20, Action21 action21, Action22 action22,
2685
+ Action23 action23, Action24 action24, Action25 action25, Action26 action26,
2686
+ Action27 action27, Action28 action28, Action29 action29, Action30 action30,
2687
+ Action31 action31, Action32 action32, Action33 action33, Action34 action34,
2688
+ Action35 action35, Action36 action36, Action37 action37, Action38 action38,
2689
+ Action39 action39, Action40 action40, Action41 action41, Action42 action42,
2690
+ Action43 action43, Action44 action44, Action45 action45, Action46 action46,
2691
+ Action47 action47) {
2692
+ if (check0(input)) return action0(action_arg);
2693
+ if (check1(input)) return action1(action_arg);
2694
+ if (check2(input)) return action2(action_arg);
2695
+ if (check3(input)) return action3(action_arg);
2696
+ if (check4(input)) return action4(action_arg);
2697
+ if (check5(input)) return action5(action_arg);
2698
+ if (check6(input)) return action6(action_arg);
2699
+ if (check7(input)) return action7(action_arg);
2700
+ if (check8(input)) return action8(action_arg);
2701
+ if (check9(input)) return action9(action_arg);
2702
+ if (check10(input)) return action10(action_arg);
2703
+ if (check11(input)) return action11(action_arg);
2704
+ if (check12(input)) return action12(action_arg);
2705
+ if (check13(input)) return action13(action_arg);
2706
+ if (check14(input)) return action14(action_arg);
2707
+ if (check15(input)) return action15(action_arg);
2708
+ if (check16(input)) return action16(action_arg);
2709
+ if (check17(input)) return action17(action_arg);
2710
+ if (check18(input)) return action18(action_arg);
2711
+ if (check19(input)) return action19(action_arg);
2712
+ if (check20(input)) return action20(action_arg);
2713
+ if (check21(input)) return action21(action_arg);
2714
+ if (check22(input)) return action22(action_arg);
2715
+ if (check23(input)) return action23(action_arg);
2716
+ if (check24(input)) return action24(action_arg);
2717
+ if (check25(input)) return action25(action_arg);
2718
+ if (check26(input)) return action26(action_arg);
2719
+ if (check27(input)) return action27(action_arg);
2720
+ if (check28(input)) return action28(action_arg);
2721
+ if (check29(input)) return action29(action_arg);
2722
+ if (check30(input)) return action30(action_arg);
2723
+ if (check31(input)) return action31(action_arg);
2724
+ if (check32(input)) return action32(action_arg);
2725
+ if (check33(input)) return action33(action_arg);
2726
+ if (check34(input)) return action34(action_arg);
2727
+ if (check35(input)) return action35(action_arg);
2728
+ if (check36(input)) return action36(action_arg);
2729
+ if (check37(input)) return action37(action_arg);
2730
+ if (check38(input)) return action38(action_arg);
2731
+ if (check39(input)) return action39(action_arg);
2732
+ if (check40(input)) return action40(action_arg);
2733
+ if (check41(input)) return action41(action_arg);
2734
+ if (check42(input)) return action42(action_arg);
2735
+ if (check43(input)) return action43(action_arg);
2736
+ if (check44(input)) return action44(action_arg);
2737
+ if (check45(input)) return action45(action_arg);
2738
+ if (check46(input)) return action46(action_arg);
2739
+ if (check47(input)) return action47(action_arg);
2740
+ return action_fail(action_arg);
2741
+ }
2742
+
2743
+ template <
2744
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2745
+ typename Check1, typename Check2, typename Check3, typename Check4,
2746
+ typename Check5, typename Check6, typename Check7, typename Check8,
2747
+ typename Check9, typename Check10, typename Check11, typename Check12,
2748
+ typename Check13, typename Check14, typename Check15, typename Check16,
2749
+ typename Check17, typename Check18, typename Check19, typename Check20,
2750
+ typename Check21, typename Check22, typename Check23, typename Check24,
2751
+ typename Check25, typename Check26, typename Check27, typename Check28,
2752
+ typename Check29, typename Check30, typename Check31, typename Check32,
2753
+ typename Check33, typename Check34, typename Check35, typename Check36,
2754
+ typename Check37, typename Check38, typename Check39, typename Check40,
2755
+ typename Check41, typename Check42, typename Check43, typename Check44,
2756
+ typename Check45, typename Check46, typename Check47, typename Check48,
2757
+ typename Action0, typename Action1, typename Action2, typename Action3,
2758
+ typename Action4, typename Action5, typename Action6, typename Action7,
2759
+ typename Action8, typename Action9, typename Action10, typename Action11,
2760
+ typename Action12, typename Action13, typename Action14, typename Action15,
2761
+ typename Action16, typename Action17, typename Action18, typename Action19,
2762
+ typename Action20, typename Action21, typename Action22, typename Action23,
2763
+ typename Action24, typename Action25, typename Action26, typename Action27,
2764
+ typename Action28, typename Action29, typename Action30, typename Action31,
2765
+ typename Action32, typename Action33, typename Action34, typename Action35,
2766
+ typename Action36, typename Action37, typename Action38, typename Action39,
2767
+ typename Action40, typename Action41, typename Action42, typename Action43,
2768
+ typename Action44, typename Action45, typename Action46, typename Action47,
2769
+ typename Action48>
2770
+ auto IfList(
2771
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2772
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2773
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2774
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2775
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2776
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2777
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2778
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2779
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2780
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2781
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2782
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
2783
+ Check47 check47, Check48 check48, Action0 action0, Action1 action1,
2784
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
2785
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
2786
+ Action10 action10, Action11 action11, Action12 action12, Action13 action13,
2787
+ Action14 action14, Action15 action15, Action16 action16, Action17 action17,
2788
+ Action18 action18, Action19 action19, Action20 action20, Action21 action21,
2789
+ Action22 action22, Action23 action23, Action24 action24, Action25 action25,
2790
+ Action26 action26, Action27 action27, Action28 action28, Action29 action29,
2791
+ Action30 action30, Action31 action31, Action32 action32, Action33 action33,
2792
+ Action34 action34, Action35 action35, Action36 action36, Action37 action37,
2793
+ Action38 action38, Action39 action39, Action40 action40, Action41 action41,
2794
+ Action42 action42, Action43 action43, Action44 action44, Action45 action45,
2795
+ Action46 action46, Action47 action47, Action48 action48) {
2796
+ if (check0(input)) return action0(action_arg);
2797
+ if (check1(input)) return action1(action_arg);
2798
+ if (check2(input)) return action2(action_arg);
2799
+ if (check3(input)) return action3(action_arg);
2800
+ if (check4(input)) return action4(action_arg);
2801
+ if (check5(input)) return action5(action_arg);
2802
+ if (check6(input)) return action6(action_arg);
2803
+ if (check7(input)) return action7(action_arg);
2804
+ if (check8(input)) return action8(action_arg);
2805
+ if (check9(input)) return action9(action_arg);
2806
+ if (check10(input)) return action10(action_arg);
2807
+ if (check11(input)) return action11(action_arg);
2808
+ if (check12(input)) return action12(action_arg);
2809
+ if (check13(input)) return action13(action_arg);
2810
+ if (check14(input)) return action14(action_arg);
2811
+ if (check15(input)) return action15(action_arg);
2812
+ if (check16(input)) return action16(action_arg);
2813
+ if (check17(input)) return action17(action_arg);
2814
+ if (check18(input)) return action18(action_arg);
2815
+ if (check19(input)) return action19(action_arg);
2816
+ if (check20(input)) return action20(action_arg);
2817
+ if (check21(input)) return action21(action_arg);
2818
+ if (check22(input)) return action22(action_arg);
2819
+ if (check23(input)) return action23(action_arg);
2820
+ if (check24(input)) return action24(action_arg);
2821
+ if (check25(input)) return action25(action_arg);
2822
+ if (check26(input)) return action26(action_arg);
2823
+ if (check27(input)) return action27(action_arg);
2824
+ if (check28(input)) return action28(action_arg);
2825
+ if (check29(input)) return action29(action_arg);
2826
+ if (check30(input)) return action30(action_arg);
2827
+ if (check31(input)) return action31(action_arg);
2828
+ if (check32(input)) return action32(action_arg);
2829
+ if (check33(input)) return action33(action_arg);
2830
+ if (check34(input)) return action34(action_arg);
2831
+ if (check35(input)) return action35(action_arg);
2832
+ if (check36(input)) return action36(action_arg);
2833
+ if (check37(input)) return action37(action_arg);
2834
+ if (check38(input)) return action38(action_arg);
2835
+ if (check39(input)) return action39(action_arg);
2836
+ if (check40(input)) return action40(action_arg);
2837
+ if (check41(input)) return action41(action_arg);
2838
+ if (check42(input)) return action42(action_arg);
2839
+ if (check43(input)) return action43(action_arg);
2840
+ if (check44(input)) return action44(action_arg);
2841
+ if (check45(input)) return action45(action_arg);
2842
+ if (check46(input)) return action46(action_arg);
2843
+ if (check47(input)) return action47(action_arg);
2844
+ if (check48(input)) return action48(action_arg);
2845
+ return action_fail(action_arg);
2846
+ }
2847
+
2848
+ template <
2849
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2850
+ typename Check1, typename Check2, typename Check3, typename Check4,
2851
+ typename Check5, typename Check6, typename Check7, typename Check8,
2852
+ typename Check9, typename Check10, typename Check11, typename Check12,
2853
+ typename Check13, typename Check14, typename Check15, typename Check16,
2854
+ typename Check17, typename Check18, typename Check19, typename Check20,
2855
+ typename Check21, typename Check22, typename Check23, typename Check24,
2856
+ typename Check25, typename Check26, typename Check27, typename Check28,
2857
+ typename Check29, typename Check30, typename Check31, typename Check32,
2858
+ typename Check33, typename Check34, typename Check35, typename Check36,
2859
+ typename Check37, typename Check38, typename Check39, typename Check40,
2860
+ typename Check41, typename Check42, typename Check43, typename Check44,
2861
+ typename Check45, typename Check46, typename Check47, typename Check48,
2862
+ typename Check49, typename Action0, typename Action1, typename Action2,
2863
+ typename Action3, typename Action4, typename Action5, typename Action6,
2864
+ typename Action7, typename Action8, typename Action9, typename Action10,
2865
+ typename Action11, typename Action12, typename Action13, typename Action14,
2866
+ typename Action15, typename Action16, typename Action17, typename Action18,
2867
+ typename Action19, typename Action20, typename Action21, typename Action22,
2868
+ typename Action23, typename Action24, typename Action25, typename Action26,
2869
+ typename Action27, typename Action28, typename Action29, typename Action30,
2870
+ typename Action31, typename Action32, typename Action33, typename Action34,
2871
+ typename Action35, typename Action36, typename Action37, typename Action38,
2872
+ typename Action39, typename Action40, typename Action41, typename Action42,
2873
+ typename Action43, typename Action44, typename Action45, typename Action46,
2874
+ typename Action47, typename Action48, typename Action49>
2875
+ auto IfList(
2876
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2877
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2878
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2879
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2880
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2881
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2882
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2883
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2884
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2885
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2886
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2887
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
2888
+ Check47 check47, Check48 check48, Check49 check49, Action0 action0,
2889
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
2890
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
2891
+ Action9 action9, Action10 action10, Action11 action11, Action12 action12,
2892
+ Action13 action13, Action14 action14, Action15 action15, Action16 action16,
2893
+ Action17 action17, Action18 action18, Action19 action19, Action20 action20,
2894
+ Action21 action21, Action22 action22, Action23 action23, Action24 action24,
2895
+ Action25 action25, Action26 action26, Action27 action27, Action28 action28,
2896
+ Action29 action29, Action30 action30, Action31 action31, Action32 action32,
2897
+ Action33 action33, Action34 action34, Action35 action35, Action36 action36,
2898
+ Action37 action37, Action38 action38, Action39 action39, Action40 action40,
2899
+ Action41 action41, Action42 action42, Action43 action43, Action44 action44,
2900
+ Action45 action45, Action46 action46, Action47 action47, Action48 action48,
2901
+ Action49 action49) {
2902
+ if (check0(input)) return action0(action_arg);
2903
+ if (check1(input)) return action1(action_arg);
2904
+ if (check2(input)) return action2(action_arg);
2905
+ if (check3(input)) return action3(action_arg);
2906
+ if (check4(input)) return action4(action_arg);
2907
+ if (check5(input)) return action5(action_arg);
2908
+ if (check6(input)) return action6(action_arg);
2909
+ if (check7(input)) return action7(action_arg);
2910
+ if (check8(input)) return action8(action_arg);
2911
+ if (check9(input)) return action9(action_arg);
2912
+ if (check10(input)) return action10(action_arg);
2913
+ if (check11(input)) return action11(action_arg);
2914
+ if (check12(input)) return action12(action_arg);
2915
+ if (check13(input)) return action13(action_arg);
2916
+ if (check14(input)) return action14(action_arg);
2917
+ if (check15(input)) return action15(action_arg);
2918
+ if (check16(input)) return action16(action_arg);
2919
+ if (check17(input)) return action17(action_arg);
2920
+ if (check18(input)) return action18(action_arg);
2921
+ if (check19(input)) return action19(action_arg);
2922
+ if (check20(input)) return action20(action_arg);
2923
+ if (check21(input)) return action21(action_arg);
2924
+ if (check22(input)) return action22(action_arg);
2925
+ if (check23(input)) return action23(action_arg);
2926
+ if (check24(input)) return action24(action_arg);
2927
+ if (check25(input)) return action25(action_arg);
2928
+ if (check26(input)) return action26(action_arg);
2929
+ if (check27(input)) return action27(action_arg);
2930
+ if (check28(input)) return action28(action_arg);
2931
+ if (check29(input)) return action29(action_arg);
2932
+ if (check30(input)) return action30(action_arg);
2933
+ if (check31(input)) return action31(action_arg);
2934
+ if (check32(input)) return action32(action_arg);
2935
+ if (check33(input)) return action33(action_arg);
2936
+ if (check34(input)) return action34(action_arg);
2937
+ if (check35(input)) return action35(action_arg);
2938
+ if (check36(input)) return action36(action_arg);
2939
+ if (check37(input)) return action37(action_arg);
2940
+ if (check38(input)) return action38(action_arg);
2941
+ if (check39(input)) return action39(action_arg);
2942
+ if (check40(input)) return action40(action_arg);
2943
+ if (check41(input)) return action41(action_arg);
2944
+ if (check42(input)) return action42(action_arg);
2945
+ if (check43(input)) return action43(action_arg);
2946
+ if (check44(input)) return action44(action_arg);
2947
+ if (check45(input)) return action45(action_arg);
2948
+ if (check46(input)) return action46(action_arg);
2949
+ if (check47(input)) return action47(action_arg);
2950
+ if (check48(input)) return action48(action_arg);
2951
+ if (check49(input)) return action49(action_arg);
2952
+ return action_fail(action_arg);
2953
+ }
2954
+
2955
+ template <
2956
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
2957
+ typename Check1, typename Check2, typename Check3, typename Check4,
2958
+ typename Check5, typename Check6, typename Check7, typename Check8,
2959
+ typename Check9, typename Check10, typename Check11, typename Check12,
2960
+ typename Check13, typename Check14, typename Check15, typename Check16,
2961
+ typename Check17, typename Check18, typename Check19, typename Check20,
2962
+ typename Check21, typename Check22, typename Check23, typename Check24,
2963
+ typename Check25, typename Check26, typename Check27, typename Check28,
2964
+ typename Check29, typename Check30, typename Check31, typename Check32,
2965
+ typename Check33, typename Check34, typename Check35, typename Check36,
2966
+ typename Check37, typename Check38, typename Check39, typename Check40,
2967
+ typename Check41, typename Check42, typename Check43, typename Check44,
2968
+ typename Check45, typename Check46, typename Check47, typename Check48,
2969
+ typename Check49, typename Check50, typename Action0, typename Action1,
2970
+ typename Action2, typename Action3, typename Action4, typename Action5,
2971
+ typename Action6, typename Action7, typename Action8, typename Action9,
2972
+ typename Action10, typename Action11, typename Action12, typename Action13,
2973
+ typename Action14, typename Action15, typename Action16, typename Action17,
2974
+ typename Action18, typename Action19, typename Action20, typename Action21,
2975
+ typename Action22, typename Action23, typename Action24, typename Action25,
2976
+ typename Action26, typename Action27, typename Action28, typename Action29,
2977
+ typename Action30, typename Action31, typename Action32, typename Action33,
2978
+ typename Action34, typename Action35, typename Action36, typename Action37,
2979
+ typename Action38, typename Action39, typename Action40, typename Action41,
2980
+ typename Action42, typename Action43, typename Action44, typename Action45,
2981
+ typename Action46, typename Action47, typename Action48, typename Action49,
2982
+ typename Action50>
2983
+ auto IfList(
2984
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
2985
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
2986
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
2987
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
2988
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
2989
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
2990
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
2991
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
2992
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
2993
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
2994
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
2995
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
2996
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
2997
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
2998
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
2999
+ Action8 action8, Action9 action9, Action10 action10, Action11 action11,
3000
+ Action12 action12, Action13 action13, Action14 action14, Action15 action15,
3001
+ Action16 action16, Action17 action17, Action18 action18, Action19 action19,
3002
+ Action20 action20, Action21 action21, Action22 action22, Action23 action23,
3003
+ Action24 action24, Action25 action25, Action26 action26, Action27 action27,
3004
+ Action28 action28, Action29 action29, Action30 action30, Action31 action31,
3005
+ Action32 action32, Action33 action33, Action34 action34, Action35 action35,
3006
+ Action36 action36, Action37 action37, Action38 action38, Action39 action39,
3007
+ Action40 action40, Action41 action41, Action42 action42, Action43 action43,
3008
+ Action44 action44, Action45 action45, Action46 action46, Action47 action47,
3009
+ Action48 action48, Action49 action49, Action50 action50) {
3010
+ if (check0(input)) return action0(action_arg);
3011
+ if (check1(input)) return action1(action_arg);
3012
+ if (check2(input)) return action2(action_arg);
3013
+ if (check3(input)) return action3(action_arg);
3014
+ if (check4(input)) return action4(action_arg);
3015
+ if (check5(input)) return action5(action_arg);
3016
+ if (check6(input)) return action6(action_arg);
3017
+ if (check7(input)) return action7(action_arg);
3018
+ if (check8(input)) return action8(action_arg);
3019
+ if (check9(input)) return action9(action_arg);
3020
+ if (check10(input)) return action10(action_arg);
3021
+ if (check11(input)) return action11(action_arg);
3022
+ if (check12(input)) return action12(action_arg);
3023
+ if (check13(input)) return action13(action_arg);
3024
+ if (check14(input)) return action14(action_arg);
3025
+ if (check15(input)) return action15(action_arg);
3026
+ if (check16(input)) return action16(action_arg);
3027
+ if (check17(input)) return action17(action_arg);
3028
+ if (check18(input)) return action18(action_arg);
3029
+ if (check19(input)) return action19(action_arg);
3030
+ if (check20(input)) return action20(action_arg);
3031
+ if (check21(input)) return action21(action_arg);
3032
+ if (check22(input)) return action22(action_arg);
3033
+ if (check23(input)) return action23(action_arg);
3034
+ if (check24(input)) return action24(action_arg);
3035
+ if (check25(input)) return action25(action_arg);
3036
+ if (check26(input)) return action26(action_arg);
3037
+ if (check27(input)) return action27(action_arg);
3038
+ if (check28(input)) return action28(action_arg);
3039
+ if (check29(input)) return action29(action_arg);
3040
+ if (check30(input)) return action30(action_arg);
3041
+ if (check31(input)) return action31(action_arg);
3042
+ if (check32(input)) return action32(action_arg);
3043
+ if (check33(input)) return action33(action_arg);
3044
+ if (check34(input)) return action34(action_arg);
3045
+ if (check35(input)) return action35(action_arg);
3046
+ if (check36(input)) return action36(action_arg);
3047
+ if (check37(input)) return action37(action_arg);
3048
+ if (check38(input)) return action38(action_arg);
3049
+ if (check39(input)) return action39(action_arg);
3050
+ if (check40(input)) return action40(action_arg);
3051
+ if (check41(input)) return action41(action_arg);
3052
+ if (check42(input)) return action42(action_arg);
3053
+ if (check43(input)) return action43(action_arg);
3054
+ if (check44(input)) return action44(action_arg);
3055
+ if (check45(input)) return action45(action_arg);
3056
+ if (check46(input)) return action46(action_arg);
3057
+ if (check47(input)) return action47(action_arg);
3058
+ if (check48(input)) return action48(action_arg);
3059
+ if (check49(input)) return action49(action_arg);
3060
+ if (check50(input)) return action50(action_arg);
3061
+ return action_fail(action_arg);
3062
+ }
3063
+
3064
+ template <
3065
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3066
+ typename Check1, typename Check2, typename Check3, typename Check4,
3067
+ typename Check5, typename Check6, typename Check7, typename Check8,
3068
+ typename Check9, typename Check10, typename Check11, typename Check12,
3069
+ typename Check13, typename Check14, typename Check15, typename Check16,
3070
+ typename Check17, typename Check18, typename Check19, typename Check20,
3071
+ typename Check21, typename Check22, typename Check23, typename Check24,
3072
+ typename Check25, typename Check26, typename Check27, typename Check28,
3073
+ typename Check29, typename Check30, typename Check31, typename Check32,
3074
+ typename Check33, typename Check34, typename Check35, typename Check36,
3075
+ typename Check37, typename Check38, typename Check39, typename Check40,
3076
+ typename Check41, typename Check42, typename Check43, typename Check44,
3077
+ typename Check45, typename Check46, typename Check47, typename Check48,
3078
+ typename Check49, typename Check50, typename Check51, typename Action0,
3079
+ typename Action1, typename Action2, typename Action3, typename Action4,
3080
+ typename Action5, typename Action6, typename Action7, typename Action8,
3081
+ typename Action9, typename Action10, typename Action11, typename Action12,
3082
+ typename Action13, typename Action14, typename Action15, typename Action16,
3083
+ typename Action17, typename Action18, typename Action19, typename Action20,
3084
+ typename Action21, typename Action22, typename Action23, typename Action24,
3085
+ typename Action25, typename Action26, typename Action27, typename Action28,
3086
+ typename Action29, typename Action30, typename Action31, typename Action32,
3087
+ typename Action33, typename Action34, typename Action35, typename Action36,
3088
+ typename Action37, typename Action38, typename Action39, typename Action40,
3089
+ typename Action41, typename Action42, typename Action43, typename Action44,
3090
+ typename Action45, typename Action46, typename Action47, typename Action48,
3091
+ typename Action49, typename Action50, typename Action51>
3092
+ auto IfList(
3093
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3094
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3095
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3096
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3097
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3098
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3099
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3100
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3101
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3102
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3103
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3104
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3105
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3106
+ Check51 check51, Action0 action0, Action1 action1, Action2 action2,
3107
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
3108
+ Action7 action7, Action8 action8, Action9 action9, Action10 action10,
3109
+ Action11 action11, Action12 action12, Action13 action13, Action14 action14,
3110
+ Action15 action15, Action16 action16, Action17 action17, Action18 action18,
3111
+ Action19 action19, Action20 action20, Action21 action21, Action22 action22,
3112
+ Action23 action23, Action24 action24, Action25 action25, Action26 action26,
3113
+ Action27 action27, Action28 action28, Action29 action29, Action30 action30,
3114
+ Action31 action31, Action32 action32, Action33 action33, Action34 action34,
3115
+ Action35 action35, Action36 action36, Action37 action37, Action38 action38,
3116
+ Action39 action39, Action40 action40, Action41 action41, Action42 action42,
3117
+ Action43 action43, Action44 action44, Action45 action45, Action46 action46,
3118
+ Action47 action47, Action48 action48, Action49 action49, Action50 action50,
3119
+ Action51 action51) {
3120
+ if (check0(input)) return action0(action_arg);
3121
+ if (check1(input)) return action1(action_arg);
3122
+ if (check2(input)) return action2(action_arg);
3123
+ if (check3(input)) return action3(action_arg);
3124
+ if (check4(input)) return action4(action_arg);
3125
+ if (check5(input)) return action5(action_arg);
3126
+ if (check6(input)) return action6(action_arg);
3127
+ if (check7(input)) return action7(action_arg);
3128
+ if (check8(input)) return action8(action_arg);
3129
+ if (check9(input)) return action9(action_arg);
3130
+ if (check10(input)) return action10(action_arg);
3131
+ if (check11(input)) return action11(action_arg);
3132
+ if (check12(input)) return action12(action_arg);
3133
+ if (check13(input)) return action13(action_arg);
3134
+ if (check14(input)) return action14(action_arg);
3135
+ if (check15(input)) return action15(action_arg);
3136
+ if (check16(input)) return action16(action_arg);
3137
+ if (check17(input)) return action17(action_arg);
3138
+ if (check18(input)) return action18(action_arg);
3139
+ if (check19(input)) return action19(action_arg);
3140
+ if (check20(input)) return action20(action_arg);
3141
+ if (check21(input)) return action21(action_arg);
3142
+ if (check22(input)) return action22(action_arg);
3143
+ if (check23(input)) return action23(action_arg);
3144
+ if (check24(input)) return action24(action_arg);
3145
+ if (check25(input)) return action25(action_arg);
3146
+ if (check26(input)) return action26(action_arg);
3147
+ if (check27(input)) return action27(action_arg);
3148
+ if (check28(input)) return action28(action_arg);
3149
+ if (check29(input)) return action29(action_arg);
3150
+ if (check30(input)) return action30(action_arg);
3151
+ if (check31(input)) return action31(action_arg);
3152
+ if (check32(input)) return action32(action_arg);
3153
+ if (check33(input)) return action33(action_arg);
3154
+ if (check34(input)) return action34(action_arg);
3155
+ if (check35(input)) return action35(action_arg);
3156
+ if (check36(input)) return action36(action_arg);
3157
+ if (check37(input)) return action37(action_arg);
3158
+ if (check38(input)) return action38(action_arg);
3159
+ if (check39(input)) return action39(action_arg);
3160
+ if (check40(input)) return action40(action_arg);
3161
+ if (check41(input)) return action41(action_arg);
3162
+ if (check42(input)) return action42(action_arg);
3163
+ if (check43(input)) return action43(action_arg);
3164
+ if (check44(input)) return action44(action_arg);
3165
+ if (check45(input)) return action45(action_arg);
3166
+ if (check46(input)) return action46(action_arg);
3167
+ if (check47(input)) return action47(action_arg);
3168
+ if (check48(input)) return action48(action_arg);
3169
+ if (check49(input)) return action49(action_arg);
3170
+ if (check50(input)) return action50(action_arg);
3171
+ if (check51(input)) return action51(action_arg);
3172
+ return action_fail(action_arg);
3173
+ }
3174
+
3175
+ template <
3176
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3177
+ typename Check1, typename Check2, typename Check3, typename Check4,
3178
+ typename Check5, typename Check6, typename Check7, typename Check8,
3179
+ typename Check9, typename Check10, typename Check11, typename Check12,
3180
+ typename Check13, typename Check14, typename Check15, typename Check16,
3181
+ typename Check17, typename Check18, typename Check19, typename Check20,
3182
+ typename Check21, typename Check22, typename Check23, typename Check24,
3183
+ typename Check25, typename Check26, typename Check27, typename Check28,
3184
+ typename Check29, typename Check30, typename Check31, typename Check32,
3185
+ typename Check33, typename Check34, typename Check35, typename Check36,
3186
+ typename Check37, typename Check38, typename Check39, typename Check40,
3187
+ typename Check41, typename Check42, typename Check43, typename Check44,
3188
+ typename Check45, typename Check46, typename Check47, typename Check48,
3189
+ typename Check49, typename Check50, typename Check51, typename Check52,
3190
+ typename Action0, typename Action1, typename Action2, typename Action3,
3191
+ typename Action4, typename Action5, typename Action6, typename Action7,
3192
+ typename Action8, typename Action9, typename Action10, typename Action11,
3193
+ typename Action12, typename Action13, typename Action14, typename Action15,
3194
+ typename Action16, typename Action17, typename Action18, typename Action19,
3195
+ typename Action20, typename Action21, typename Action22, typename Action23,
3196
+ typename Action24, typename Action25, typename Action26, typename Action27,
3197
+ typename Action28, typename Action29, typename Action30, typename Action31,
3198
+ typename Action32, typename Action33, typename Action34, typename Action35,
3199
+ typename Action36, typename Action37, typename Action38, typename Action39,
3200
+ typename Action40, typename Action41, typename Action42, typename Action43,
3201
+ typename Action44, typename Action45, typename Action46, typename Action47,
3202
+ typename Action48, typename Action49, typename Action50, typename Action51,
3203
+ typename Action52>
3204
+ auto IfList(
3205
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3206
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3207
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3208
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3209
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3210
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3211
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3212
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3213
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3214
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3215
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3216
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3217
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3218
+ Check51 check51, Check52 check52, Action0 action0, Action1 action1,
3219
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
3220
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
3221
+ Action10 action10, Action11 action11, Action12 action12, Action13 action13,
3222
+ Action14 action14, Action15 action15, Action16 action16, Action17 action17,
3223
+ Action18 action18, Action19 action19, Action20 action20, Action21 action21,
3224
+ Action22 action22, Action23 action23, Action24 action24, Action25 action25,
3225
+ Action26 action26, Action27 action27, Action28 action28, Action29 action29,
3226
+ Action30 action30, Action31 action31, Action32 action32, Action33 action33,
3227
+ Action34 action34, Action35 action35, Action36 action36, Action37 action37,
3228
+ Action38 action38, Action39 action39, Action40 action40, Action41 action41,
3229
+ Action42 action42, Action43 action43, Action44 action44, Action45 action45,
3230
+ Action46 action46, Action47 action47, Action48 action48, Action49 action49,
3231
+ Action50 action50, Action51 action51, Action52 action52) {
3232
+ if (check0(input)) return action0(action_arg);
3233
+ if (check1(input)) return action1(action_arg);
3234
+ if (check2(input)) return action2(action_arg);
3235
+ if (check3(input)) return action3(action_arg);
3236
+ if (check4(input)) return action4(action_arg);
3237
+ if (check5(input)) return action5(action_arg);
3238
+ if (check6(input)) return action6(action_arg);
3239
+ if (check7(input)) return action7(action_arg);
3240
+ if (check8(input)) return action8(action_arg);
3241
+ if (check9(input)) return action9(action_arg);
3242
+ if (check10(input)) return action10(action_arg);
3243
+ if (check11(input)) return action11(action_arg);
3244
+ if (check12(input)) return action12(action_arg);
3245
+ if (check13(input)) return action13(action_arg);
3246
+ if (check14(input)) return action14(action_arg);
3247
+ if (check15(input)) return action15(action_arg);
3248
+ if (check16(input)) return action16(action_arg);
3249
+ if (check17(input)) return action17(action_arg);
3250
+ if (check18(input)) return action18(action_arg);
3251
+ if (check19(input)) return action19(action_arg);
3252
+ if (check20(input)) return action20(action_arg);
3253
+ if (check21(input)) return action21(action_arg);
3254
+ if (check22(input)) return action22(action_arg);
3255
+ if (check23(input)) return action23(action_arg);
3256
+ if (check24(input)) return action24(action_arg);
3257
+ if (check25(input)) return action25(action_arg);
3258
+ if (check26(input)) return action26(action_arg);
3259
+ if (check27(input)) return action27(action_arg);
3260
+ if (check28(input)) return action28(action_arg);
3261
+ if (check29(input)) return action29(action_arg);
3262
+ if (check30(input)) return action30(action_arg);
3263
+ if (check31(input)) return action31(action_arg);
3264
+ if (check32(input)) return action32(action_arg);
3265
+ if (check33(input)) return action33(action_arg);
3266
+ if (check34(input)) return action34(action_arg);
3267
+ if (check35(input)) return action35(action_arg);
3268
+ if (check36(input)) return action36(action_arg);
3269
+ if (check37(input)) return action37(action_arg);
3270
+ if (check38(input)) return action38(action_arg);
3271
+ if (check39(input)) return action39(action_arg);
3272
+ if (check40(input)) return action40(action_arg);
3273
+ if (check41(input)) return action41(action_arg);
3274
+ if (check42(input)) return action42(action_arg);
3275
+ if (check43(input)) return action43(action_arg);
3276
+ if (check44(input)) return action44(action_arg);
3277
+ if (check45(input)) return action45(action_arg);
3278
+ if (check46(input)) return action46(action_arg);
3279
+ if (check47(input)) return action47(action_arg);
3280
+ if (check48(input)) return action48(action_arg);
3281
+ if (check49(input)) return action49(action_arg);
3282
+ if (check50(input)) return action50(action_arg);
3283
+ if (check51(input)) return action51(action_arg);
3284
+ if (check52(input)) return action52(action_arg);
3285
+ return action_fail(action_arg);
3286
+ }
3287
+
3288
+ template <
3289
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3290
+ typename Check1, typename Check2, typename Check3, typename Check4,
3291
+ typename Check5, typename Check6, typename Check7, typename Check8,
3292
+ typename Check9, typename Check10, typename Check11, typename Check12,
3293
+ typename Check13, typename Check14, typename Check15, typename Check16,
3294
+ typename Check17, typename Check18, typename Check19, typename Check20,
3295
+ typename Check21, typename Check22, typename Check23, typename Check24,
3296
+ typename Check25, typename Check26, typename Check27, typename Check28,
3297
+ typename Check29, typename Check30, typename Check31, typename Check32,
3298
+ typename Check33, typename Check34, typename Check35, typename Check36,
3299
+ typename Check37, typename Check38, typename Check39, typename Check40,
3300
+ typename Check41, typename Check42, typename Check43, typename Check44,
3301
+ typename Check45, typename Check46, typename Check47, typename Check48,
3302
+ typename Check49, typename Check50, typename Check51, typename Check52,
3303
+ typename Check53, typename Action0, typename Action1, typename Action2,
3304
+ typename Action3, typename Action4, typename Action5, typename Action6,
3305
+ typename Action7, typename Action8, typename Action9, typename Action10,
3306
+ typename Action11, typename Action12, typename Action13, typename Action14,
3307
+ typename Action15, typename Action16, typename Action17, typename Action18,
3308
+ typename Action19, typename Action20, typename Action21, typename Action22,
3309
+ typename Action23, typename Action24, typename Action25, typename Action26,
3310
+ typename Action27, typename Action28, typename Action29, typename Action30,
3311
+ typename Action31, typename Action32, typename Action33, typename Action34,
3312
+ typename Action35, typename Action36, typename Action37, typename Action38,
3313
+ typename Action39, typename Action40, typename Action41, typename Action42,
3314
+ typename Action43, typename Action44, typename Action45, typename Action46,
3315
+ typename Action47, typename Action48, typename Action49, typename Action50,
3316
+ typename Action51, typename Action52, typename Action53>
3317
+ auto IfList(
3318
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3319
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3320
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3321
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3322
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3323
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3324
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3325
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3326
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3327
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3328
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3329
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3330
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3331
+ Check51 check51, Check52 check52, Check53 check53, Action0 action0,
3332
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
3333
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
3334
+ Action9 action9, Action10 action10, Action11 action11, Action12 action12,
3335
+ Action13 action13, Action14 action14, Action15 action15, Action16 action16,
3336
+ Action17 action17, Action18 action18, Action19 action19, Action20 action20,
3337
+ Action21 action21, Action22 action22, Action23 action23, Action24 action24,
3338
+ Action25 action25, Action26 action26, Action27 action27, Action28 action28,
3339
+ Action29 action29, Action30 action30, Action31 action31, Action32 action32,
3340
+ Action33 action33, Action34 action34, Action35 action35, Action36 action36,
3341
+ Action37 action37, Action38 action38, Action39 action39, Action40 action40,
3342
+ Action41 action41, Action42 action42, Action43 action43, Action44 action44,
3343
+ Action45 action45, Action46 action46, Action47 action47, Action48 action48,
3344
+ Action49 action49, Action50 action50, Action51 action51, Action52 action52,
3345
+ Action53 action53) {
3346
+ if (check0(input)) return action0(action_arg);
3347
+ if (check1(input)) return action1(action_arg);
3348
+ if (check2(input)) return action2(action_arg);
3349
+ if (check3(input)) return action3(action_arg);
3350
+ if (check4(input)) return action4(action_arg);
3351
+ if (check5(input)) return action5(action_arg);
3352
+ if (check6(input)) return action6(action_arg);
3353
+ if (check7(input)) return action7(action_arg);
3354
+ if (check8(input)) return action8(action_arg);
3355
+ if (check9(input)) return action9(action_arg);
3356
+ if (check10(input)) return action10(action_arg);
3357
+ if (check11(input)) return action11(action_arg);
3358
+ if (check12(input)) return action12(action_arg);
3359
+ if (check13(input)) return action13(action_arg);
3360
+ if (check14(input)) return action14(action_arg);
3361
+ if (check15(input)) return action15(action_arg);
3362
+ if (check16(input)) return action16(action_arg);
3363
+ if (check17(input)) return action17(action_arg);
3364
+ if (check18(input)) return action18(action_arg);
3365
+ if (check19(input)) return action19(action_arg);
3366
+ if (check20(input)) return action20(action_arg);
3367
+ if (check21(input)) return action21(action_arg);
3368
+ if (check22(input)) return action22(action_arg);
3369
+ if (check23(input)) return action23(action_arg);
3370
+ if (check24(input)) return action24(action_arg);
3371
+ if (check25(input)) return action25(action_arg);
3372
+ if (check26(input)) return action26(action_arg);
3373
+ if (check27(input)) return action27(action_arg);
3374
+ if (check28(input)) return action28(action_arg);
3375
+ if (check29(input)) return action29(action_arg);
3376
+ if (check30(input)) return action30(action_arg);
3377
+ if (check31(input)) return action31(action_arg);
3378
+ if (check32(input)) return action32(action_arg);
3379
+ if (check33(input)) return action33(action_arg);
3380
+ if (check34(input)) return action34(action_arg);
3381
+ if (check35(input)) return action35(action_arg);
3382
+ if (check36(input)) return action36(action_arg);
3383
+ if (check37(input)) return action37(action_arg);
3384
+ if (check38(input)) return action38(action_arg);
3385
+ if (check39(input)) return action39(action_arg);
3386
+ if (check40(input)) return action40(action_arg);
3387
+ if (check41(input)) return action41(action_arg);
3388
+ if (check42(input)) return action42(action_arg);
3389
+ if (check43(input)) return action43(action_arg);
3390
+ if (check44(input)) return action44(action_arg);
3391
+ if (check45(input)) return action45(action_arg);
3392
+ if (check46(input)) return action46(action_arg);
3393
+ if (check47(input)) return action47(action_arg);
3394
+ if (check48(input)) return action48(action_arg);
3395
+ if (check49(input)) return action49(action_arg);
3396
+ if (check50(input)) return action50(action_arg);
3397
+ if (check51(input)) return action51(action_arg);
3398
+ if (check52(input)) return action52(action_arg);
3399
+ if (check53(input)) return action53(action_arg);
3400
+ return action_fail(action_arg);
3401
+ }
3402
+
3403
+ template <
3404
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3405
+ typename Check1, typename Check2, typename Check3, typename Check4,
3406
+ typename Check5, typename Check6, typename Check7, typename Check8,
3407
+ typename Check9, typename Check10, typename Check11, typename Check12,
3408
+ typename Check13, typename Check14, typename Check15, typename Check16,
3409
+ typename Check17, typename Check18, typename Check19, typename Check20,
3410
+ typename Check21, typename Check22, typename Check23, typename Check24,
3411
+ typename Check25, typename Check26, typename Check27, typename Check28,
3412
+ typename Check29, typename Check30, typename Check31, typename Check32,
3413
+ typename Check33, typename Check34, typename Check35, typename Check36,
3414
+ typename Check37, typename Check38, typename Check39, typename Check40,
3415
+ typename Check41, typename Check42, typename Check43, typename Check44,
3416
+ typename Check45, typename Check46, typename Check47, typename Check48,
3417
+ typename Check49, typename Check50, typename Check51, typename Check52,
3418
+ typename Check53, typename Check54, typename Action0, typename Action1,
3419
+ typename Action2, typename Action3, typename Action4, typename Action5,
3420
+ typename Action6, typename Action7, typename Action8, typename Action9,
3421
+ typename Action10, typename Action11, typename Action12, typename Action13,
3422
+ typename Action14, typename Action15, typename Action16, typename Action17,
3423
+ typename Action18, typename Action19, typename Action20, typename Action21,
3424
+ typename Action22, typename Action23, typename Action24, typename Action25,
3425
+ typename Action26, typename Action27, typename Action28, typename Action29,
3426
+ typename Action30, typename Action31, typename Action32, typename Action33,
3427
+ typename Action34, typename Action35, typename Action36, typename Action37,
3428
+ typename Action38, typename Action39, typename Action40, typename Action41,
3429
+ typename Action42, typename Action43, typename Action44, typename Action45,
3430
+ typename Action46, typename Action47, typename Action48, typename Action49,
3431
+ typename Action50, typename Action51, typename Action52, typename Action53,
3432
+ typename Action54>
3433
+ auto IfList(
3434
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3435
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3436
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3437
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3438
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3439
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3440
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3441
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3442
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3443
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3444
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3445
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3446
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3447
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
3448
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
3449
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
3450
+ Action8 action8, Action9 action9, Action10 action10, Action11 action11,
3451
+ Action12 action12, Action13 action13, Action14 action14, Action15 action15,
3452
+ Action16 action16, Action17 action17, Action18 action18, Action19 action19,
3453
+ Action20 action20, Action21 action21, Action22 action22, Action23 action23,
3454
+ Action24 action24, Action25 action25, Action26 action26, Action27 action27,
3455
+ Action28 action28, Action29 action29, Action30 action30, Action31 action31,
3456
+ Action32 action32, Action33 action33, Action34 action34, Action35 action35,
3457
+ Action36 action36, Action37 action37, Action38 action38, Action39 action39,
3458
+ Action40 action40, Action41 action41, Action42 action42, Action43 action43,
3459
+ Action44 action44, Action45 action45, Action46 action46, Action47 action47,
3460
+ Action48 action48, Action49 action49, Action50 action50, Action51 action51,
3461
+ Action52 action52, Action53 action53, Action54 action54) {
3462
+ if (check0(input)) return action0(action_arg);
3463
+ if (check1(input)) return action1(action_arg);
3464
+ if (check2(input)) return action2(action_arg);
3465
+ if (check3(input)) return action3(action_arg);
3466
+ if (check4(input)) return action4(action_arg);
3467
+ if (check5(input)) return action5(action_arg);
3468
+ if (check6(input)) return action6(action_arg);
3469
+ if (check7(input)) return action7(action_arg);
3470
+ if (check8(input)) return action8(action_arg);
3471
+ if (check9(input)) return action9(action_arg);
3472
+ if (check10(input)) return action10(action_arg);
3473
+ if (check11(input)) return action11(action_arg);
3474
+ if (check12(input)) return action12(action_arg);
3475
+ if (check13(input)) return action13(action_arg);
3476
+ if (check14(input)) return action14(action_arg);
3477
+ if (check15(input)) return action15(action_arg);
3478
+ if (check16(input)) return action16(action_arg);
3479
+ if (check17(input)) return action17(action_arg);
3480
+ if (check18(input)) return action18(action_arg);
3481
+ if (check19(input)) return action19(action_arg);
3482
+ if (check20(input)) return action20(action_arg);
3483
+ if (check21(input)) return action21(action_arg);
3484
+ if (check22(input)) return action22(action_arg);
3485
+ if (check23(input)) return action23(action_arg);
3486
+ if (check24(input)) return action24(action_arg);
3487
+ if (check25(input)) return action25(action_arg);
3488
+ if (check26(input)) return action26(action_arg);
3489
+ if (check27(input)) return action27(action_arg);
3490
+ if (check28(input)) return action28(action_arg);
3491
+ if (check29(input)) return action29(action_arg);
3492
+ if (check30(input)) return action30(action_arg);
3493
+ if (check31(input)) return action31(action_arg);
3494
+ if (check32(input)) return action32(action_arg);
3495
+ if (check33(input)) return action33(action_arg);
3496
+ if (check34(input)) return action34(action_arg);
3497
+ if (check35(input)) return action35(action_arg);
3498
+ if (check36(input)) return action36(action_arg);
3499
+ if (check37(input)) return action37(action_arg);
3500
+ if (check38(input)) return action38(action_arg);
3501
+ if (check39(input)) return action39(action_arg);
3502
+ if (check40(input)) return action40(action_arg);
3503
+ if (check41(input)) return action41(action_arg);
3504
+ if (check42(input)) return action42(action_arg);
3505
+ if (check43(input)) return action43(action_arg);
3506
+ if (check44(input)) return action44(action_arg);
3507
+ if (check45(input)) return action45(action_arg);
3508
+ if (check46(input)) return action46(action_arg);
3509
+ if (check47(input)) return action47(action_arg);
3510
+ if (check48(input)) return action48(action_arg);
3511
+ if (check49(input)) return action49(action_arg);
3512
+ if (check50(input)) return action50(action_arg);
3513
+ if (check51(input)) return action51(action_arg);
3514
+ if (check52(input)) return action52(action_arg);
3515
+ if (check53(input)) return action53(action_arg);
3516
+ if (check54(input)) return action54(action_arg);
3517
+ return action_fail(action_arg);
3518
+ }
3519
+
3520
+ template <
3521
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3522
+ typename Check1, typename Check2, typename Check3, typename Check4,
3523
+ typename Check5, typename Check6, typename Check7, typename Check8,
3524
+ typename Check9, typename Check10, typename Check11, typename Check12,
3525
+ typename Check13, typename Check14, typename Check15, typename Check16,
3526
+ typename Check17, typename Check18, typename Check19, typename Check20,
3527
+ typename Check21, typename Check22, typename Check23, typename Check24,
3528
+ typename Check25, typename Check26, typename Check27, typename Check28,
3529
+ typename Check29, typename Check30, typename Check31, typename Check32,
3530
+ typename Check33, typename Check34, typename Check35, typename Check36,
3531
+ typename Check37, typename Check38, typename Check39, typename Check40,
3532
+ typename Check41, typename Check42, typename Check43, typename Check44,
3533
+ typename Check45, typename Check46, typename Check47, typename Check48,
3534
+ typename Check49, typename Check50, typename Check51, typename Check52,
3535
+ typename Check53, typename Check54, typename Check55, typename Action0,
3536
+ typename Action1, typename Action2, typename Action3, typename Action4,
3537
+ typename Action5, typename Action6, typename Action7, typename Action8,
3538
+ typename Action9, typename Action10, typename Action11, typename Action12,
3539
+ typename Action13, typename Action14, typename Action15, typename Action16,
3540
+ typename Action17, typename Action18, typename Action19, typename Action20,
3541
+ typename Action21, typename Action22, typename Action23, typename Action24,
3542
+ typename Action25, typename Action26, typename Action27, typename Action28,
3543
+ typename Action29, typename Action30, typename Action31, typename Action32,
3544
+ typename Action33, typename Action34, typename Action35, typename Action36,
3545
+ typename Action37, typename Action38, typename Action39, typename Action40,
3546
+ typename Action41, typename Action42, typename Action43, typename Action44,
3547
+ typename Action45, typename Action46, typename Action47, typename Action48,
3548
+ typename Action49, typename Action50, typename Action51, typename Action52,
3549
+ typename Action53, typename Action54, typename Action55>
3550
+ auto IfList(
3551
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3552
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3553
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3554
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3555
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3556
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3557
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3558
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3559
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3560
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3561
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3562
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3563
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3564
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
3565
+ Check55 check55, Action0 action0, Action1 action1, Action2 action2,
3566
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
3567
+ Action7 action7, Action8 action8, Action9 action9, Action10 action10,
3568
+ Action11 action11, Action12 action12, Action13 action13, Action14 action14,
3569
+ Action15 action15, Action16 action16, Action17 action17, Action18 action18,
3570
+ Action19 action19, Action20 action20, Action21 action21, Action22 action22,
3571
+ Action23 action23, Action24 action24, Action25 action25, Action26 action26,
3572
+ Action27 action27, Action28 action28, Action29 action29, Action30 action30,
3573
+ Action31 action31, Action32 action32, Action33 action33, Action34 action34,
3574
+ Action35 action35, Action36 action36, Action37 action37, Action38 action38,
3575
+ Action39 action39, Action40 action40, Action41 action41, Action42 action42,
3576
+ Action43 action43, Action44 action44, Action45 action45, Action46 action46,
3577
+ Action47 action47, Action48 action48, Action49 action49, Action50 action50,
3578
+ Action51 action51, Action52 action52, Action53 action53, Action54 action54,
3579
+ Action55 action55) {
3580
+ if (check0(input)) return action0(action_arg);
3581
+ if (check1(input)) return action1(action_arg);
3582
+ if (check2(input)) return action2(action_arg);
3583
+ if (check3(input)) return action3(action_arg);
3584
+ if (check4(input)) return action4(action_arg);
3585
+ if (check5(input)) return action5(action_arg);
3586
+ if (check6(input)) return action6(action_arg);
3587
+ if (check7(input)) return action7(action_arg);
3588
+ if (check8(input)) return action8(action_arg);
3589
+ if (check9(input)) return action9(action_arg);
3590
+ if (check10(input)) return action10(action_arg);
3591
+ if (check11(input)) return action11(action_arg);
3592
+ if (check12(input)) return action12(action_arg);
3593
+ if (check13(input)) return action13(action_arg);
3594
+ if (check14(input)) return action14(action_arg);
3595
+ if (check15(input)) return action15(action_arg);
3596
+ if (check16(input)) return action16(action_arg);
3597
+ if (check17(input)) return action17(action_arg);
3598
+ if (check18(input)) return action18(action_arg);
3599
+ if (check19(input)) return action19(action_arg);
3600
+ if (check20(input)) return action20(action_arg);
3601
+ if (check21(input)) return action21(action_arg);
3602
+ if (check22(input)) return action22(action_arg);
3603
+ if (check23(input)) return action23(action_arg);
3604
+ if (check24(input)) return action24(action_arg);
3605
+ if (check25(input)) return action25(action_arg);
3606
+ if (check26(input)) return action26(action_arg);
3607
+ if (check27(input)) return action27(action_arg);
3608
+ if (check28(input)) return action28(action_arg);
3609
+ if (check29(input)) return action29(action_arg);
3610
+ if (check30(input)) return action30(action_arg);
3611
+ if (check31(input)) return action31(action_arg);
3612
+ if (check32(input)) return action32(action_arg);
3613
+ if (check33(input)) return action33(action_arg);
3614
+ if (check34(input)) return action34(action_arg);
3615
+ if (check35(input)) return action35(action_arg);
3616
+ if (check36(input)) return action36(action_arg);
3617
+ if (check37(input)) return action37(action_arg);
3618
+ if (check38(input)) return action38(action_arg);
3619
+ if (check39(input)) return action39(action_arg);
3620
+ if (check40(input)) return action40(action_arg);
3621
+ if (check41(input)) return action41(action_arg);
3622
+ if (check42(input)) return action42(action_arg);
3623
+ if (check43(input)) return action43(action_arg);
3624
+ if (check44(input)) return action44(action_arg);
3625
+ if (check45(input)) return action45(action_arg);
3626
+ if (check46(input)) return action46(action_arg);
3627
+ if (check47(input)) return action47(action_arg);
3628
+ if (check48(input)) return action48(action_arg);
3629
+ if (check49(input)) return action49(action_arg);
3630
+ if (check50(input)) return action50(action_arg);
3631
+ if (check51(input)) return action51(action_arg);
3632
+ if (check52(input)) return action52(action_arg);
3633
+ if (check53(input)) return action53(action_arg);
3634
+ if (check54(input)) return action54(action_arg);
3635
+ if (check55(input)) return action55(action_arg);
3636
+ return action_fail(action_arg);
3637
+ }
3638
+
3639
+ template <
3640
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3641
+ typename Check1, typename Check2, typename Check3, typename Check4,
3642
+ typename Check5, typename Check6, typename Check7, typename Check8,
3643
+ typename Check9, typename Check10, typename Check11, typename Check12,
3644
+ typename Check13, typename Check14, typename Check15, typename Check16,
3645
+ typename Check17, typename Check18, typename Check19, typename Check20,
3646
+ typename Check21, typename Check22, typename Check23, typename Check24,
3647
+ typename Check25, typename Check26, typename Check27, typename Check28,
3648
+ typename Check29, typename Check30, typename Check31, typename Check32,
3649
+ typename Check33, typename Check34, typename Check35, typename Check36,
3650
+ typename Check37, typename Check38, typename Check39, typename Check40,
3651
+ typename Check41, typename Check42, typename Check43, typename Check44,
3652
+ typename Check45, typename Check46, typename Check47, typename Check48,
3653
+ typename Check49, typename Check50, typename Check51, typename Check52,
3654
+ typename Check53, typename Check54, typename Check55, typename Check56,
3655
+ typename Action0, typename Action1, typename Action2, typename Action3,
3656
+ typename Action4, typename Action5, typename Action6, typename Action7,
3657
+ typename Action8, typename Action9, typename Action10, typename Action11,
3658
+ typename Action12, typename Action13, typename Action14, typename Action15,
3659
+ typename Action16, typename Action17, typename Action18, typename Action19,
3660
+ typename Action20, typename Action21, typename Action22, typename Action23,
3661
+ typename Action24, typename Action25, typename Action26, typename Action27,
3662
+ typename Action28, typename Action29, typename Action30, typename Action31,
3663
+ typename Action32, typename Action33, typename Action34, typename Action35,
3664
+ typename Action36, typename Action37, typename Action38, typename Action39,
3665
+ typename Action40, typename Action41, typename Action42, typename Action43,
3666
+ typename Action44, typename Action45, typename Action46, typename Action47,
3667
+ typename Action48, typename Action49, typename Action50, typename Action51,
3668
+ typename Action52, typename Action53, typename Action54, typename Action55,
3669
+ typename Action56>
3670
+ auto IfList(
3671
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3672
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3673
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3674
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3675
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3676
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3677
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3678
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3679
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3680
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3681
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3682
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3683
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3684
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
3685
+ Check55 check55, Check56 check56, Action0 action0, Action1 action1,
3686
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
3687
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
3688
+ Action10 action10, Action11 action11, Action12 action12, Action13 action13,
3689
+ Action14 action14, Action15 action15, Action16 action16, Action17 action17,
3690
+ Action18 action18, Action19 action19, Action20 action20, Action21 action21,
3691
+ Action22 action22, Action23 action23, Action24 action24, Action25 action25,
3692
+ Action26 action26, Action27 action27, Action28 action28, Action29 action29,
3693
+ Action30 action30, Action31 action31, Action32 action32, Action33 action33,
3694
+ Action34 action34, Action35 action35, Action36 action36, Action37 action37,
3695
+ Action38 action38, Action39 action39, Action40 action40, Action41 action41,
3696
+ Action42 action42, Action43 action43, Action44 action44, Action45 action45,
3697
+ Action46 action46, Action47 action47, Action48 action48, Action49 action49,
3698
+ Action50 action50, Action51 action51, Action52 action52, Action53 action53,
3699
+ Action54 action54, Action55 action55, Action56 action56) {
3700
+ if (check0(input)) return action0(action_arg);
3701
+ if (check1(input)) return action1(action_arg);
3702
+ if (check2(input)) return action2(action_arg);
3703
+ if (check3(input)) return action3(action_arg);
3704
+ if (check4(input)) return action4(action_arg);
3705
+ if (check5(input)) return action5(action_arg);
3706
+ if (check6(input)) return action6(action_arg);
3707
+ if (check7(input)) return action7(action_arg);
3708
+ if (check8(input)) return action8(action_arg);
3709
+ if (check9(input)) return action9(action_arg);
3710
+ if (check10(input)) return action10(action_arg);
3711
+ if (check11(input)) return action11(action_arg);
3712
+ if (check12(input)) return action12(action_arg);
3713
+ if (check13(input)) return action13(action_arg);
3714
+ if (check14(input)) return action14(action_arg);
3715
+ if (check15(input)) return action15(action_arg);
3716
+ if (check16(input)) return action16(action_arg);
3717
+ if (check17(input)) return action17(action_arg);
3718
+ if (check18(input)) return action18(action_arg);
3719
+ if (check19(input)) return action19(action_arg);
3720
+ if (check20(input)) return action20(action_arg);
3721
+ if (check21(input)) return action21(action_arg);
3722
+ if (check22(input)) return action22(action_arg);
3723
+ if (check23(input)) return action23(action_arg);
3724
+ if (check24(input)) return action24(action_arg);
3725
+ if (check25(input)) return action25(action_arg);
3726
+ if (check26(input)) return action26(action_arg);
3727
+ if (check27(input)) return action27(action_arg);
3728
+ if (check28(input)) return action28(action_arg);
3729
+ if (check29(input)) return action29(action_arg);
3730
+ if (check30(input)) return action30(action_arg);
3731
+ if (check31(input)) return action31(action_arg);
3732
+ if (check32(input)) return action32(action_arg);
3733
+ if (check33(input)) return action33(action_arg);
3734
+ if (check34(input)) return action34(action_arg);
3735
+ if (check35(input)) return action35(action_arg);
3736
+ if (check36(input)) return action36(action_arg);
3737
+ if (check37(input)) return action37(action_arg);
3738
+ if (check38(input)) return action38(action_arg);
3739
+ if (check39(input)) return action39(action_arg);
3740
+ if (check40(input)) return action40(action_arg);
3741
+ if (check41(input)) return action41(action_arg);
3742
+ if (check42(input)) return action42(action_arg);
3743
+ if (check43(input)) return action43(action_arg);
3744
+ if (check44(input)) return action44(action_arg);
3745
+ if (check45(input)) return action45(action_arg);
3746
+ if (check46(input)) return action46(action_arg);
3747
+ if (check47(input)) return action47(action_arg);
3748
+ if (check48(input)) return action48(action_arg);
3749
+ if (check49(input)) return action49(action_arg);
3750
+ if (check50(input)) return action50(action_arg);
3751
+ if (check51(input)) return action51(action_arg);
3752
+ if (check52(input)) return action52(action_arg);
3753
+ if (check53(input)) return action53(action_arg);
3754
+ if (check54(input)) return action54(action_arg);
3755
+ if (check55(input)) return action55(action_arg);
3756
+ if (check56(input)) return action56(action_arg);
3757
+ return action_fail(action_arg);
3758
+ }
3759
+
3760
+ template <
3761
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3762
+ typename Check1, typename Check2, typename Check3, typename Check4,
3763
+ typename Check5, typename Check6, typename Check7, typename Check8,
3764
+ typename Check9, typename Check10, typename Check11, typename Check12,
3765
+ typename Check13, typename Check14, typename Check15, typename Check16,
3766
+ typename Check17, typename Check18, typename Check19, typename Check20,
3767
+ typename Check21, typename Check22, typename Check23, typename Check24,
3768
+ typename Check25, typename Check26, typename Check27, typename Check28,
3769
+ typename Check29, typename Check30, typename Check31, typename Check32,
3770
+ typename Check33, typename Check34, typename Check35, typename Check36,
3771
+ typename Check37, typename Check38, typename Check39, typename Check40,
3772
+ typename Check41, typename Check42, typename Check43, typename Check44,
3773
+ typename Check45, typename Check46, typename Check47, typename Check48,
3774
+ typename Check49, typename Check50, typename Check51, typename Check52,
3775
+ typename Check53, typename Check54, typename Check55, typename Check56,
3776
+ typename Check57, typename Action0, typename Action1, typename Action2,
3777
+ typename Action3, typename Action4, typename Action5, typename Action6,
3778
+ typename Action7, typename Action8, typename Action9, typename Action10,
3779
+ typename Action11, typename Action12, typename Action13, typename Action14,
3780
+ typename Action15, typename Action16, typename Action17, typename Action18,
3781
+ typename Action19, typename Action20, typename Action21, typename Action22,
3782
+ typename Action23, typename Action24, typename Action25, typename Action26,
3783
+ typename Action27, typename Action28, typename Action29, typename Action30,
3784
+ typename Action31, typename Action32, typename Action33, typename Action34,
3785
+ typename Action35, typename Action36, typename Action37, typename Action38,
3786
+ typename Action39, typename Action40, typename Action41, typename Action42,
3787
+ typename Action43, typename Action44, typename Action45, typename Action46,
3788
+ typename Action47, typename Action48, typename Action49, typename Action50,
3789
+ typename Action51, typename Action52, typename Action53, typename Action54,
3790
+ typename Action55, typename Action56, typename Action57>
3791
+ auto IfList(
3792
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3793
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3794
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3795
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3796
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3797
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3798
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3799
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3800
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3801
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3802
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3803
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3804
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3805
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
3806
+ Check55 check55, Check56 check56, Check57 check57, Action0 action0,
3807
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
3808
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
3809
+ Action9 action9, Action10 action10, Action11 action11, Action12 action12,
3810
+ Action13 action13, Action14 action14, Action15 action15, Action16 action16,
3811
+ Action17 action17, Action18 action18, Action19 action19, Action20 action20,
3812
+ Action21 action21, Action22 action22, Action23 action23, Action24 action24,
3813
+ Action25 action25, Action26 action26, Action27 action27, Action28 action28,
3814
+ Action29 action29, Action30 action30, Action31 action31, Action32 action32,
3815
+ Action33 action33, Action34 action34, Action35 action35, Action36 action36,
3816
+ Action37 action37, Action38 action38, Action39 action39, Action40 action40,
3817
+ Action41 action41, Action42 action42, Action43 action43, Action44 action44,
3818
+ Action45 action45, Action46 action46, Action47 action47, Action48 action48,
3819
+ Action49 action49, Action50 action50, Action51 action51, Action52 action52,
3820
+ Action53 action53, Action54 action54, Action55 action55, Action56 action56,
3821
+ Action57 action57) {
3822
+ if (check0(input)) return action0(action_arg);
3823
+ if (check1(input)) return action1(action_arg);
3824
+ if (check2(input)) return action2(action_arg);
3825
+ if (check3(input)) return action3(action_arg);
3826
+ if (check4(input)) return action4(action_arg);
3827
+ if (check5(input)) return action5(action_arg);
3828
+ if (check6(input)) return action6(action_arg);
3829
+ if (check7(input)) return action7(action_arg);
3830
+ if (check8(input)) return action8(action_arg);
3831
+ if (check9(input)) return action9(action_arg);
3832
+ if (check10(input)) return action10(action_arg);
3833
+ if (check11(input)) return action11(action_arg);
3834
+ if (check12(input)) return action12(action_arg);
3835
+ if (check13(input)) return action13(action_arg);
3836
+ if (check14(input)) return action14(action_arg);
3837
+ if (check15(input)) return action15(action_arg);
3838
+ if (check16(input)) return action16(action_arg);
3839
+ if (check17(input)) return action17(action_arg);
3840
+ if (check18(input)) return action18(action_arg);
3841
+ if (check19(input)) return action19(action_arg);
3842
+ if (check20(input)) return action20(action_arg);
3843
+ if (check21(input)) return action21(action_arg);
3844
+ if (check22(input)) return action22(action_arg);
3845
+ if (check23(input)) return action23(action_arg);
3846
+ if (check24(input)) return action24(action_arg);
3847
+ if (check25(input)) return action25(action_arg);
3848
+ if (check26(input)) return action26(action_arg);
3849
+ if (check27(input)) return action27(action_arg);
3850
+ if (check28(input)) return action28(action_arg);
3851
+ if (check29(input)) return action29(action_arg);
3852
+ if (check30(input)) return action30(action_arg);
3853
+ if (check31(input)) return action31(action_arg);
3854
+ if (check32(input)) return action32(action_arg);
3855
+ if (check33(input)) return action33(action_arg);
3856
+ if (check34(input)) return action34(action_arg);
3857
+ if (check35(input)) return action35(action_arg);
3858
+ if (check36(input)) return action36(action_arg);
3859
+ if (check37(input)) return action37(action_arg);
3860
+ if (check38(input)) return action38(action_arg);
3861
+ if (check39(input)) return action39(action_arg);
3862
+ if (check40(input)) return action40(action_arg);
3863
+ if (check41(input)) return action41(action_arg);
3864
+ if (check42(input)) return action42(action_arg);
3865
+ if (check43(input)) return action43(action_arg);
3866
+ if (check44(input)) return action44(action_arg);
3867
+ if (check45(input)) return action45(action_arg);
3868
+ if (check46(input)) return action46(action_arg);
3869
+ if (check47(input)) return action47(action_arg);
3870
+ if (check48(input)) return action48(action_arg);
3871
+ if (check49(input)) return action49(action_arg);
3872
+ if (check50(input)) return action50(action_arg);
3873
+ if (check51(input)) return action51(action_arg);
3874
+ if (check52(input)) return action52(action_arg);
3875
+ if (check53(input)) return action53(action_arg);
3876
+ if (check54(input)) return action54(action_arg);
3877
+ if (check55(input)) return action55(action_arg);
3878
+ if (check56(input)) return action56(action_arg);
3879
+ if (check57(input)) return action57(action_arg);
3880
+ return action_fail(action_arg);
3881
+ }
3882
+
3883
+ template <
3884
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
3885
+ typename Check1, typename Check2, typename Check3, typename Check4,
3886
+ typename Check5, typename Check6, typename Check7, typename Check8,
3887
+ typename Check9, typename Check10, typename Check11, typename Check12,
3888
+ typename Check13, typename Check14, typename Check15, typename Check16,
3889
+ typename Check17, typename Check18, typename Check19, typename Check20,
3890
+ typename Check21, typename Check22, typename Check23, typename Check24,
3891
+ typename Check25, typename Check26, typename Check27, typename Check28,
3892
+ typename Check29, typename Check30, typename Check31, typename Check32,
3893
+ typename Check33, typename Check34, typename Check35, typename Check36,
3894
+ typename Check37, typename Check38, typename Check39, typename Check40,
3895
+ typename Check41, typename Check42, typename Check43, typename Check44,
3896
+ typename Check45, typename Check46, typename Check47, typename Check48,
3897
+ typename Check49, typename Check50, typename Check51, typename Check52,
3898
+ typename Check53, typename Check54, typename Check55, typename Check56,
3899
+ typename Check57, typename Check58, typename Action0, typename Action1,
3900
+ typename Action2, typename Action3, typename Action4, typename Action5,
3901
+ typename Action6, typename Action7, typename Action8, typename Action9,
3902
+ typename Action10, typename Action11, typename Action12, typename Action13,
3903
+ typename Action14, typename Action15, typename Action16, typename Action17,
3904
+ typename Action18, typename Action19, typename Action20, typename Action21,
3905
+ typename Action22, typename Action23, typename Action24, typename Action25,
3906
+ typename Action26, typename Action27, typename Action28, typename Action29,
3907
+ typename Action30, typename Action31, typename Action32, typename Action33,
3908
+ typename Action34, typename Action35, typename Action36, typename Action37,
3909
+ typename Action38, typename Action39, typename Action40, typename Action41,
3910
+ typename Action42, typename Action43, typename Action44, typename Action45,
3911
+ typename Action46, typename Action47, typename Action48, typename Action49,
3912
+ typename Action50, typename Action51, typename Action52, typename Action53,
3913
+ typename Action54, typename Action55, typename Action56, typename Action57,
3914
+ typename Action58>
3915
+ auto IfList(
3916
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
3917
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
3918
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
3919
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
3920
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
3921
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
3922
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
3923
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
3924
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
3925
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
3926
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
3927
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
3928
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
3929
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
3930
+ Check55 check55, Check56 check56, Check57 check57, Check58 check58,
3931
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
3932
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
3933
+ Action8 action8, Action9 action9, Action10 action10, Action11 action11,
3934
+ Action12 action12, Action13 action13, Action14 action14, Action15 action15,
3935
+ Action16 action16, Action17 action17, Action18 action18, Action19 action19,
3936
+ Action20 action20, Action21 action21, Action22 action22, Action23 action23,
3937
+ Action24 action24, Action25 action25, Action26 action26, Action27 action27,
3938
+ Action28 action28, Action29 action29, Action30 action30, Action31 action31,
3939
+ Action32 action32, Action33 action33, Action34 action34, Action35 action35,
3940
+ Action36 action36, Action37 action37, Action38 action38, Action39 action39,
3941
+ Action40 action40, Action41 action41, Action42 action42, Action43 action43,
3942
+ Action44 action44, Action45 action45, Action46 action46, Action47 action47,
3943
+ Action48 action48, Action49 action49, Action50 action50, Action51 action51,
3944
+ Action52 action52, Action53 action53, Action54 action54, Action55 action55,
3945
+ Action56 action56, Action57 action57, Action58 action58) {
3946
+ if (check0(input)) return action0(action_arg);
3947
+ if (check1(input)) return action1(action_arg);
3948
+ if (check2(input)) return action2(action_arg);
3949
+ if (check3(input)) return action3(action_arg);
3950
+ if (check4(input)) return action4(action_arg);
3951
+ if (check5(input)) return action5(action_arg);
3952
+ if (check6(input)) return action6(action_arg);
3953
+ if (check7(input)) return action7(action_arg);
3954
+ if (check8(input)) return action8(action_arg);
3955
+ if (check9(input)) return action9(action_arg);
3956
+ if (check10(input)) return action10(action_arg);
3957
+ if (check11(input)) return action11(action_arg);
3958
+ if (check12(input)) return action12(action_arg);
3959
+ if (check13(input)) return action13(action_arg);
3960
+ if (check14(input)) return action14(action_arg);
3961
+ if (check15(input)) return action15(action_arg);
3962
+ if (check16(input)) return action16(action_arg);
3963
+ if (check17(input)) return action17(action_arg);
3964
+ if (check18(input)) return action18(action_arg);
3965
+ if (check19(input)) return action19(action_arg);
3966
+ if (check20(input)) return action20(action_arg);
3967
+ if (check21(input)) return action21(action_arg);
3968
+ if (check22(input)) return action22(action_arg);
3969
+ if (check23(input)) return action23(action_arg);
3970
+ if (check24(input)) return action24(action_arg);
3971
+ if (check25(input)) return action25(action_arg);
3972
+ if (check26(input)) return action26(action_arg);
3973
+ if (check27(input)) return action27(action_arg);
3974
+ if (check28(input)) return action28(action_arg);
3975
+ if (check29(input)) return action29(action_arg);
3976
+ if (check30(input)) return action30(action_arg);
3977
+ if (check31(input)) return action31(action_arg);
3978
+ if (check32(input)) return action32(action_arg);
3979
+ if (check33(input)) return action33(action_arg);
3980
+ if (check34(input)) return action34(action_arg);
3981
+ if (check35(input)) return action35(action_arg);
3982
+ if (check36(input)) return action36(action_arg);
3983
+ if (check37(input)) return action37(action_arg);
3984
+ if (check38(input)) return action38(action_arg);
3985
+ if (check39(input)) return action39(action_arg);
3986
+ if (check40(input)) return action40(action_arg);
3987
+ if (check41(input)) return action41(action_arg);
3988
+ if (check42(input)) return action42(action_arg);
3989
+ if (check43(input)) return action43(action_arg);
3990
+ if (check44(input)) return action44(action_arg);
3991
+ if (check45(input)) return action45(action_arg);
3992
+ if (check46(input)) return action46(action_arg);
3993
+ if (check47(input)) return action47(action_arg);
3994
+ if (check48(input)) return action48(action_arg);
3995
+ if (check49(input)) return action49(action_arg);
3996
+ if (check50(input)) return action50(action_arg);
3997
+ if (check51(input)) return action51(action_arg);
3998
+ if (check52(input)) return action52(action_arg);
3999
+ if (check53(input)) return action53(action_arg);
4000
+ if (check54(input)) return action54(action_arg);
4001
+ if (check55(input)) return action55(action_arg);
4002
+ if (check56(input)) return action56(action_arg);
4003
+ if (check57(input)) return action57(action_arg);
4004
+ if (check58(input)) return action58(action_arg);
4005
+ return action_fail(action_arg);
4006
+ }
4007
+
4008
+ template <
4009
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
4010
+ typename Check1, typename Check2, typename Check3, typename Check4,
4011
+ typename Check5, typename Check6, typename Check7, typename Check8,
4012
+ typename Check9, typename Check10, typename Check11, typename Check12,
4013
+ typename Check13, typename Check14, typename Check15, typename Check16,
4014
+ typename Check17, typename Check18, typename Check19, typename Check20,
4015
+ typename Check21, typename Check22, typename Check23, typename Check24,
4016
+ typename Check25, typename Check26, typename Check27, typename Check28,
4017
+ typename Check29, typename Check30, typename Check31, typename Check32,
4018
+ typename Check33, typename Check34, typename Check35, typename Check36,
4019
+ typename Check37, typename Check38, typename Check39, typename Check40,
4020
+ typename Check41, typename Check42, typename Check43, typename Check44,
4021
+ typename Check45, typename Check46, typename Check47, typename Check48,
4022
+ typename Check49, typename Check50, typename Check51, typename Check52,
4023
+ typename Check53, typename Check54, typename Check55, typename Check56,
4024
+ typename Check57, typename Check58, typename Check59, typename Action0,
4025
+ typename Action1, typename Action2, typename Action3, typename Action4,
4026
+ typename Action5, typename Action6, typename Action7, typename Action8,
4027
+ typename Action9, typename Action10, typename Action11, typename Action12,
4028
+ typename Action13, typename Action14, typename Action15, typename Action16,
4029
+ typename Action17, typename Action18, typename Action19, typename Action20,
4030
+ typename Action21, typename Action22, typename Action23, typename Action24,
4031
+ typename Action25, typename Action26, typename Action27, typename Action28,
4032
+ typename Action29, typename Action30, typename Action31, typename Action32,
4033
+ typename Action33, typename Action34, typename Action35, typename Action36,
4034
+ typename Action37, typename Action38, typename Action39, typename Action40,
4035
+ typename Action41, typename Action42, typename Action43, typename Action44,
4036
+ typename Action45, typename Action46, typename Action47, typename Action48,
4037
+ typename Action49, typename Action50, typename Action51, typename Action52,
4038
+ typename Action53, typename Action54, typename Action55, typename Action56,
4039
+ typename Action57, typename Action58, typename Action59>
4040
+ auto IfList(
4041
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
4042
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
4043
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
4044
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
4045
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
4046
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
4047
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
4048
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
4049
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
4050
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
4051
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
4052
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
4053
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
4054
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
4055
+ Check55 check55, Check56 check56, Check57 check57, Check58 check58,
4056
+ Check59 check59, Action0 action0, Action1 action1, Action2 action2,
4057
+ Action3 action3, Action4 action4, Action5 action5, Action6 action6,
4058
+ Action7 action7, Action8 action8, Action9 action9, Action10 action10,
4059
+ Action11 action11, Action12 action12, Action13 action13, Action14 action14,
4060
+ Action15 action15, Action16 action16, Action17 action17, Action18 action18,
4061
+ Action19 action19, Action20 action20, Action21 action21, Action22 action22,
4062
+ Action23 action23, Action24 action24, Action25 action25, Action26 action26,
4063
+ Action27 action27, Action28 action28, Action29 action29, Action30 action30,
4064
+ Action31 action31, Action32 action32, Action33 action33, Action34 action34,
4065
+ Action35 action35, Action36 action36, Action37 action37, Action38 action38,
4066
+ Action39 action39, Action40 action40, Action41 action41, Action42 action42,
4067
+ Action43 action43, Action44 action44, Action45 action45, Action46 action46,
4068
+ Action47 action47, Action48 action48, Action49 action49, Action50 action50,
4069
+ Action51 action51, Action52 action52, Action53 action53, Action54 action54,
4070
+ Action55 action55, Action56 action56, Action57 action57, Action58 action58,
4071
+ Action59 action59) {
4072
+ if (check0(input)) return action0(action_arg);
4073
+ if (check1(input)) return action1(action_arg);
4074
+ if (check2(input)) return action2(action_arg);
4075
+ if (check3(input)) return action3(action_arg);
4076
+ if (check4(input)) return action4(action_arg);
4077
+ if (check5(input)) return action5(action_arg);
4078
+ if (check6(input)) return action6(action_arg);
4079
+ if (check7(input)) return action7(action_arg);
4080
+ if (check8(input)) return action8(action_arg);
4081
+ if (check9(input)) return action9(action_arg);
4082
+ if (check10(input)) return action10(action_arg);
4083
+ if (check11(input)) return action11(action_arg);
4084
+ if (check12(input)) return action12(action_arg);
4085
+ if (check13(input)) return action13(action_arg);
4086
+ if (check14(input)) return action14(action_arg);
4087
+ if (check15(input)) return action15(action_arg);
4088
+ if (check16(input)) return action16(action_arg);
4089
+ if (check17(input)) return action17(action_arg);
4090
+ if (check18(input)) return action18(action_arg);
4091
+ if (check19(input)) return action19(action_arg);
4092
+ if (check20(input)) return action20(action_arg);
4093
+ if (check21(input)) return action21(action_arg);
4094
+ if (check22(input)) return action22(action_arg);
4095
+ if (check23(input)) return action23(action_arg);
4096
+ if (check24(input)) return action24(action_arg);
4097
+ if (check25(input)) return action25(action_arg);
4098
+ if (check26(input)) return action26(action_arg);
4099
+ if (check27(input)) return action27(action_arg);
4100
+ if (check28(input)) return action28(action_arg);
4101
+ if (check29(input)) return action29(action_arg);
4102
+ if (check30(input)) return action30(action_arg);
4103
+ if (check31(input)) return action31(action_arg);
4104
+ if (check32(input)) return action32(action_arg);
4105
+ if (check33(input)) return action33(action_arg);
4106
+ if (check34(input)) return action34(action_arg);
4107
+ if (check35(input)) return action35(action_arg);
4108
+ if (check36(input)) return action36(action_arg);
4109
+ if (check37(input)) return action37(action_arg);
4110
+ if (check38(input)) return action38(action_arg);
4111
+ if (check39(input)) return action39(action_arg);
4112
+ if (check40(input)) return action40(action_arg);
4113
+ if (check41(input)) return action41(action_arg);
4114
+ if (check42(input)) return action42(action_arg);
4115
+ if (check43(input)) return action43(action_arg);
4116
+ if (check44(input)) return action44(action_arg);
4117
+ if (check45(input)) return action45(action_arg);
4118
+ if (check46(input)) return action46(action_arg);
4119
+ if (check47(input)) return action47(action_arg);
4120
+ if (check48(input)) return action48(action_arg);
4121
+ if (check49(input)) return action49(action_arg);
4122
+ if (check50(input)) return action50(action_arg);
4123
+ if (check51(input)) return action51(action_arg);
4124
+ if (check52(input)) return action52(action_arg);
4125
+ if (check53(input)) return action53(action_arg);
4126
+ if (check54(input)) return action54(action_arg);
4127
+ if (check55(input)) return action55(action_arg);
4128
+ if (check56(input)) return action56(action_arg);
4129
+ if (check57(input)) return action57(action_arg);
4130
+ if (check58(input)) return action58(action_arg);
4131
+ if (check59(input)) return action59(action_arg);
4132
+ return action_fail(action_arg);
4133
+ }
4134
+
4135
+ template <
4136
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
4137
+ typename Check1, typename Check2, typename Check3, typename Check4,
4138
+ typename Check5, typename Check6, typename Check7, typename Check8,
4139
+ typename Check9, typename Check10, typename Check11, typename Check12,
4140
+ typename Check13, typename Check14, typename Check15, typename Check16,
4141
+ typename Check17, typename Check18, typename Check19, typename Check20,
4142
+ typename Check21, typename Check22, typename Check23, typename Check24,
4143
+ typename Check25, typename Check26, typename Check27, typename Check28,
4144
+ typename Check29, typename Check30, typename Check31, typename Check32,
4145
+ typename Check33, typename Check34, typename Check35, typename Check36,
4146
+ typename Check37, typename Check38, typename Check39, typename Check40,
4147
+ typename Check41, typename Check42, typename Check43, typename Check44,
4148
+ typename Check45, typename Check46, typename Check47, typename Check48,
4149
+ typename Check49, typename Check50, typename Check51, typename Check52,
4150
+ typename Check53, typename Check54, typename Check55, typename Check56,
4151
+ typename Check57, typename Check58, typename Check59, typename Check60,
4152
+ typename Action0, typename Action1, typename Action2, typename Action3,
4153
+ typename Action4, typename Action5, typename Action6, typename Action7,
4154
+ typename Action8, typename Action9, typename Action10, typename Action11,
4155
+ typename Action12, typename Action13, typename Action14, typename Action15,
4156
+ typename Action16, typename Action17, typename Action18, typename Action19,
4157
+ typename Action20, typename Action21, typename Action22, typename Action23,
4158
+ typename Action24, typename Action25, typename Action26, typename Action27,
4159
+ typename Action28, typename Action29, typename Action30, typename Action31,
4160
+ typename Action32, typename Action33, typename Action34, typename Action35,
4161
+ typename Action36, typename Action37, typename Action38, typename Action39,
4162
+ typename Action40, typename Action41, typename Action42, typename Action43,
4163
+ typename Action44, typename Action45, typename Action46, typename Action47,
4164
+ typename Action48, typename Action49, typename Action50, typename Action51,
4165
+ typename Action52, typename Action53, typename Action54, typename Action55,
4166
+ typename Action56, typename Action57, typename Action58, typename Action59,
4167
+ typename Action60>
4168
+ auto IfList(
4169
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
4170
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
4171
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
4172
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
4173
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
4174
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
4175
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
4176
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
4177
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
4178
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
4179
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
4180
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
4181
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
4182
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
4183
+ Check55 check55, Check56 check56, Check57 check57, Check58 check58,
4184
+ Check59 check59, Check60 check60, Action0 action0, Action1 action1,
4185
+ Action2 action2, Action3 action3, Action4 action4, Action5 action5,
4186
+ Action6 action6, Action7 action7, Action8 action8, Action9 action9,
4187
+ Action10 action10, Action11 action11, Action12 action12, Action13 action13,
4188
+ Action14 action14, Action15 action15, Action16 action16, Action17 action17,
4189
+ Action18 action18, Action19 action19, Action20 action20, Action21 action21,
4190
+ Action22 action22, Action23 action23, Action24 action24, Action25 action25,
4191
+ Action26 action26, Action27 action27, Action28 action28, Action29 action29,
4192
+ Action30 action30, Action31 action31, Action32 action32, Action33 action33,
4193
+ Action34 action34, Action35 action35, Action36 action36, Action37 action37,
4194
+ Action38 action38, Action39 action39, Action40 action40, Action41 action41,
4195
+ Action42 action42, Action43 action43, Action44 action44, Action45 action45,
4196
+ Action46 action46, Action47 action47, Action48 action48, Action49 action49,
4197
+ Action50 action50, Action51 action51, Action52 action52, Action53 action53,
4198
+ Action54 action54, Action55 action55, Action56 action56, Action57 action57,
4199
+ Action58 action58, Action59 action59, Action60 action60) {
4200
+ if (check0(input)) return action0(action_arg);
4201
+ if (check1(input)) return action1(action_arg);
4202
+ if (check2(input)) return action2(action_arg);
4203
+ if (check3(input)) return action3(action_arg);
4204
+ if (check4(input)) return action4(action_arg);
4205
+ if (check5(input)) return action5(action_arg);
4206
+ if (check6(input)) return action6(action_arg);
4207
+ if (check7(input)) return action7(action_arg);
4208
+ if (check8(input)) return action8(action_arg);
4209
+ if (check9(input)) return action9(action_arg);
4210
+ if (check10(input)) return action10(action_arg);
4211
+ if (check11(input)) return action11(action_arg);
4212
+ if (check12(input)) return action12(action_arg);
4213
+ if (check13(input)) return action13(action_arg);
4214
+ if (check14(input)) return action14(action_arg);
4215
+ if (check15(input)) return action15(action_arg);
4216
+ if (check16(input)) return action16(action_arg);
4217
+ if (check17(input)) return action17(action_arg);
4218
+ if (check18(input)) return action18(action_arg);
4219
+ if (check19(input)) return action19(action_arg);
4220
+ if (check20(input)) return action20(action_arg);
4221
+ if (check21(input)) return action21(action_arg);
4222
+ if (check22(input)) return action22(action_arg);
4223
+ if (check23(input)) return action23(action_arg);
4224
+ if (check24(input)) return action24(action_arg);
4225
+ if (check25(input)) return action25(action_arg);
4226
+ if (check26(input)) return action26(action_arg);
4227
+ if (check27(input)) return action27(action_arg);
4228
+ if (check28(input)) return action28(action_arg);
4229
+ if (check29(input)) return action29(action_arg);
4230
+ if (check30(input)) return action30(action_arg);
4231
+ if (check31(input)) return action31(action_arg);
4232
+ if (check32(input)) return action32(action_arg);
4233
+ if (check33(input)) return action33(action_arg);
4234
+ if (check34(input)) return action34(action_arg);
4235
+ if (check35(input)) return action35(action_arg);
4236
+ if (check36(input)) return action36(action_arg);
4237
+ if (check37(input)) return action37(action_arg);
4238
+ if (check38(input)) return action38(action_arg);
4239
+ if (check39(input)) return action39(action_arg);
4240
+ if (check40(input)) return action40(action_arg);
4241
+ if (check41(input)) return action41(action_arg);
4242
+ if (check42(input)) return action42(action_arg);
4243
+ if (check43(input)) return action43(action_arg);
4244
+ if (check44(input)) return action44(action_arg);
4245
+ if (check45(input)) return action45(action_arg);
4246
+ if (check46(input)) return action46(action_arg);
4247
+ if (check47(input)) return action47(action_arg);
4248
+ if (check48(input)) return action48(action_arg);
4249
+ if (check49(input)) return action49(action_arg);
4250
+ if (check50(input)) return action50(action_arg);
4251
+ if (check51(input)) return action51(action_arg);
4252
+ if (check52(input)) return action52(action_arg);
4253
+ if (check53(input)) return action53(action_arg);
4254
+ if (check54(input)) return action54(action_arg);
4255
+ if (check55(input)) return action55(action_arg);
4256
+ if (check56(input)) return action56(action_arg);
4257
+ if (check57(input)) return action57(action_arg);
4258
+ if (check58(input)) return action58(action_arg);
4259
+ if (check59(input)) return action59(action_arg);
4260
+ if (check60(input)) return action60(action_arg);
4261
+ return action_fail(action_arg);
4262
+ }
4263
+
4264
+ template <
4265
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
4266
+ typename Check1, typename Check2, typename Check3, typename Check4,
4267
+ typename Check5, typename Check6, typename Check7, typename Check8,
4268
+ typename Check9, typename Check10, typename Check11, typename Check12,
4269
+ typename Check13, typename Check14, typename Check15, typename Check16,
4270
+ typename Check17, typename Check18, typename Check19, typename Check20,
4271
+ typename Check21, typename Check22, typename Check23, typename Check24,
4272
+ typename Check25, typename Check26, typename Check27, typename Check28,
4273
+ typename Check29, typename Check30, typename Check31, typename Check32,
4274
+ typename Check33, typename Check34, typename Check35, typename Check36,
4275
+ typename Check37, typename Check38, typename Check39, typename Check40,
4276
+ typename Check41, typename Check42, typename Check43, typename Check44,
4277
+ typename Check45, typename Check46, typename Check47, typename Check48,
4278
+ typename Check49, typename Check50, typename Check51, typename Check52,
4279
+ typename Check53, typename Check54, typename Check55, typename Check56,
4280
+ typename Check57, typename Check58, typename Check59, typename Check60,
4281
+ typename Check61, typename Action0, typename Action1, typename Action2,
4282
+ typename Action3, typename Action4, typename Action5, typename Action6,
4283
+ typename Action7, typename Action8, typename Action9, typename Action10,
4284
+ typename Action11, typename Action12, typename Action13, typename Action14,
4285
+ typename Action15, typename Action16, typename Action17, typename Action18,
4286
+ typename Action19, typename Action20, typename Action21, typename Action22,
4287
+ typename Action23, typename Action24, typename Action25, typename Action26,
4288
+ typename Action27, typename Action28, typename Action29, typename Action30,
4289
+ typename Action31, typename Action32, typename Action33, typename Action34,
4290
+ typename Action35, typename Action36, typename Action37, typename Action38,
4291
+ typename Action39, typename Action40, typename Action41, typename Action42,
4292
+ typename Action43, typename Action44, typename Action45, typename Action46,
4293
+ typename Action47, typename Action48, typename Action49, typename Action50,
4294
+ typename Action51, typename Action52, typename Action53, typename Action54,
4295
+ typename Action55, typename Action56, typename Action57, typename Action58,
4296
+ typename Action59, typename Action60, typename Action61>
4297
+ auto IfList(
4298
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
4299
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
4300
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
4301
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
4302
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
4303
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
4304
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
4305
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
4306
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
4307
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
4308
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
4309
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
4310
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
4311
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
4312
+ Check55 check55, Check56 check56, Check57 check57, Check58 check58,
4313
+ Check59 check59, Check60 check60, Check61 check61, Action0 action0,
4314
+ Action1 action1, Action2 action2, Action3 action3, Action4 action4,
4315
+ Action5 action5, Action6 action6, Action7 action7, Action8 action8,
4316
+ Action9 action9, Action10 action10, Action11 action11, Action12 action12,
4317
+ Action13 action13, Action14 action14, Action15 action15, Action16 action16,
4318
+ Action17 action17, Action18 action18, Action19 action19, Action20 action20,
4319
+ Action21 action21, Action22 action22, Action23 action23, Action24 action24,
4320
+ Action25 action25, Action26 action26, Action27 action27, Action28 action28,
4321
+ Action29 action29, Action30 action30, Action31 action31, Action32 action32,
4322
+ Action33 action33, Action34 action34, Action35 action35, Action36 action36,
4323
+ Action37 action37, Action38 action38, Action39 action39, Action40 action40,
4324
+ Action41 action41, Action42 action42, Action43 action43, Action44 action44,
4325
+ Action45 action45, Action46 action46, Action47 action47, Action48 action48,
4326
+ Action49 action49, Action50 action50, Action51 action51, Action52 action52,
4327
+ Action53 action53, Action54 action54, Action55 action55, Action56 action56,
4328
+ Action57 action57, Action58 action58, Action59 action59, Action60 action60,
4329
+ Action61 action61) {
4330
+ if (check0(input)) return action0(action_arg);
4331
+ if (check1(input)) return action1(action_arg);
4332
+ if (check2(input)) return action2(action_arg);
4333
+ if (check3(input)) return action3(action_arg);
4334
+ if (check4(input)) return action4(action_arg);
4335
+ if (check5(input)) return action5(action_arg);
4336
+ if (check6(input)) return action6(action_arg);
4337
+ if (check7(input)) return action7(action_arg);
4338
+ if (check8(input)) return action8(action_arg);
4339
+ if (check9(input)) return action9(action_arg);
4340
+ if (check10(input)) return action10(action_arg);
4341
+ if (check11(input)) return action11(action_arg);
4342
+ if (check12(input)) return action12(action_arg);
4343
+ if (check13(input)) return action13(action_arg);
4344
+ if (check14(input)) return action14(action_arg);
4345
+ if (check15(input)) return action15(action_arg);
4346
+ if (check16(input)) return action16(action_arg);
4347
+ if (check17(input)) return action17(action_arg);
4348
+ if (check18(input)) return action18(action_arg);
4349
+ if (check19(input)) return action19(action_arg);
4350
+ if (check20(input)) return action20(action_arg);
4351
+ if (check21(input)) return action21(action_arg);
4352
+ if (check22(input)) return action22(action_arg);
4353
+ if (check23(input)) return action23(action_arg);
4354
+ if (check24(input)) return action24(action_arg);
4355
+ if (check25(input)) return action25(action_arg);
4356
+ if (check26(input)) return action26(action_arg);
4357
+ if (check27(input)) return action27(action_arg);
4358
+ if (check28(input)) return action28(action_arg);
4359
+ if (check29(input)) return action29(action_arg);
4360
+ if (check30(input)) return action30(action_arg);
4361
+ if (check31(input)) return action31(action_arg);
4362
+ if (check32(input)) return action32(action_arg);
4363
+ if (check33(input)) return action33(action_arg);
4364
+ if (check34(input)) return action34(action_arg);
4365
+ if (check35(input)) return action35(action_arg);
4366
+ if (check36(input)) return action36(action_arg);
4367
+ if (check37(input)) return action37(action_arg);
4368
+ if (check38(input)) return action38(action_arg);
4369
+ if (check39(input)) return action39(action_arg);
4370
+ if (check40(input)) return action40(action_arg);
4371
+ if (check41(input)) return action41(action_arg);
4372
+ if (check42(input)) return action42(action_arg);
4373
+ if (check43(input)) return action43(action_arg);
4374
+ if (check44(input)) return action44(action_arg);
4375
+ if (check45(input)) return action45(action_arg);
4376
+ if (check46(input)) return action46(action_arg);
4377
+ if (check47(input)) return action47(action_arg);
4378
+ if (check48(input)) return action48(action_arg);
4379
+ if (check49(input)) return action49(action_arg);
4380
+ if (check50(input)) return action50(action_arg);
4381
+ if (check51(input)) return action51(action_arg);
4382
+ if (check52(input)) return action52(action_arg);
4383
+ if (check53(input)) return action53(action_arg);
4384
+ if (check54(input)) return action54(action_arg);
4385
+ if (check55(input)) return action55(action_arg);
4386
+ if (check56(input)) return action56(action_arg);
4387
+ if (check57(input)) return action57(action_arg);
4388
+ if (check58(input)) return action58(action_arg);
4389
+ if (check59(input)) return action59(action_arg);
4390
+ if (check60(input)) return action60(action_arg);
4391
+ if (check61(input)) return action61(action_arg);
4392
+ return action_fail(action_arg);
4393
+ }
4394
+
4395
+ template <
4396
+ typename CheckArg, typename ActionArg, typename ActionFail, typename Check0,
4397
+ typename Check1, typename Check2, typename Check3, typename Check4,
4398
+ typename Check5, typename Check6, typename Check7, typename Check8,
4399
+ typename Check9, typename Check10, typename Check11, typename Check12,
4400
+ typename Check13, typename Check14, typename Check15, typename Check16,
4401
+ typename Check17, typename Check18, typename Check19, typename Check20,
4402
+ typename Check21, typename Check22, typename Check23, typename Check24,
4403
+ typename Check25, typename Check26, typename Check27, typename Check28,
4404
+ typename Check29, typename Check30, typename Check31, typename Check32,
4405
+ typename Check33, typename Check34, typename Check35, typename Check36,
4406
+ typename Check37, typename Check38, typename Check39, typename Check40,
4407
+ typename Check41, typename Check42, typename Check43, typename Check44,
4408
+ typename Check45, typename Check46, typename Check47, typename Check48,
4409
+ typename Check49, typename Check50, typename Check51, typename Check52,
4410
+ typename Check53, typename Check54, typename Check55, typename Check56,
4411
+ typename Check57, typename Check58, typename Check59, typename Check60,
4412
+ typename Check61, typename Check62, typename Action0, typename Action1,
4413
+ typename Action2, typename Action3, typename Action4, typename Action5,
4414
+ typename Action6, typename Action7, typename Action8, typename Action9,
4415
+ typename Action10, typename Action11, typename Action12, typename Action13,
4416
+ typename Action14, typename Action15, typename Action16, typename Action17,
4417
+ typename Action18, typename Action19, typename Action20, typename Action21,
4418
+ typename Action22, typename Action23, typename Action24, typename Action25,
4419
+ typename Action26, typename Action27, typename Action28, typename Action29,
4420
+ typename Action30, typename Action31, typename Action32, typename Action33,
4421
+ typename Action34, typename Action35, typename Action36, typename Action37,
4422
+ typename Action38, typename Action39, typename Action40, typename Action41,
4423
+ typename Action42, typename Action43, typename Action44, typename Action45,
4424
+ typename Action46, typename Action47, typename Action48, typename Action49,
4425
+ typename Action50, typename Action51, typename Action52, typename Action53,
4426
+ typename Action54, typename Action55, typename Action56, typename Action57,
4427
+ typename Action58, typename Action59, typename Action60, typename Action61,
4428
+ typename Action62>
4429
+ auto IfList(
4430
+ CheckArg input, ActionArg action_arg, ActionFail action_fail, Check0 check0,
4431
+ Check1 check1, Check2 check2, Check3 check3, Check4 check4, Check5 check5,
4432
+ Check6 check6, Check7 check7, Check8 check8, Check9 check9, Check10 check10,
4433
+ Check11 check11, Check12 check12, Check13 check13, Check14 check14,
4434
+ Check15 check15, Check16 check16, Check17 check17, Check18 check18,
4435
+ Check19 check19, Check20 check20, Check21 check21, Check22 check22,
4436
+ Check23 check23, Check24 check24, Check25 check25, Check26 check26,
4437
+ Check27 check27, Check28 check28, Check29 check29, Check30 check30,
4438
+ Check31 check31, Check32 check32, Check33 check33, Check34 check34,
4439
+ Check35 check35, Check36 check36, Check37 check37, Check38 check38,
4440
+ Check39 check39, Check40 check40, Check41 check41, Check42 check42,
4441
+ Check43 check43, Check44 check44, Check45 check45, Check46 check46,
4442
+ Check47 check47, Check48 check48, Check49 check49, Check50 check50,
4443
+ Check51 check51, Check52 check52, Check53 check53, Check54 check54,
4444
+ Check55 check55, Check56 check56, Check57 check57, Check58 check58,
4445
+ Check59 check59, Check60 check60, Check61 check61, Check62 check62,
4446
+ Action0 action0, Action1 action1, Action2 action2, Action3 action3,
4447
+ Action4 action4, Action5 action5, Action6 action6, Action7 action7,
4448
+ Action8 action8, Action9 action9, Action10 action10, Action11 action11,
4449
+ Action12 action12, Action13 action13, Action14 action14, Action15 action15,
4450
+ Action16 action16, Action17 action17, Action18 action18, Action19 action19,
4451
+ Action20 action20, Action21 action21, Action22 action22, Action23 action23,
4452
+ Action24 action24, Action25 action25, Action26 action26, Action27 action27,
4453
+ Action28 action28, Action29 action29, Action30 action30, Action31 action31,
4454
+ Action32 action32, Action33 action33, Action34 action34, Action35 action35,
4455
+ Action36 action36, Action37 action37, Action38 action38, Action39 action39,
4456
+ Action40 action40, Action41 action41, Action42 action42, Action43 action43,
4457
+ Action44 action44, Action45 action45, Action46 action46, Action47 action47,
4458
+ Action48 action48, Action49 action49, Action50 action50, Action51 action51,
4459
+ Action52 action52, Action53 action53, Action54 action54, Action55 action55,
4460
+ Action56 action56, Action57 action57, Action58 action58, Action59 action59,
4461
+ Action60 action60, Action61 action61, Action62 action62) {
4462
+ if (check0(input)) return action0(action_arg);
4463
+ if (check1(input)) return action1(action_arg);
4464
+ if (check2(input)) return action2(action_arg);
4465
+ if (check3(input)) return action3(action_arg);
4466
+ if (check4(input)) return action4(action_arg);
4467
+ if (check5(input)) return action5(action_arg);
4468
+ if (check6(input)) return action6(action_arg);
4469
+ if (check7(input)) return action7(action_arg);
4470
+ if (check8(input)) return action8(action_arg);
4471
+ if (check9(input)) return action9(action_arg);
4472
+ if (check10(input)) return action10(action_arg);
4473
+ if (check11(input)) return action11(action_arg);
4474
+ if (check12(input)) return action12(action_arg);
4475
+ if (check13(input)) return action13(action_arg);
4476
+ if (check14(input)) return action14(action_arg);
4477
+ if (check15(input)) return action15(action_arg);
4478
+ if (check16(input)) return action16(action_arg);
4479
+ if (check17(input)) return action17(action_arg);
4480
+ if (check18(input)) return action18(action_arg);
4481
+ if (check19(input)) return action19(action_arg);
4482
+ if (check20(input)) return action20(action_arg);
4483
+ if (check21(input)) return action21(action_arg);
4484
+ if (check22(input)) return action22(action_arg);
4485
+ if (check23(input)) return action23(action_arg);
4486
+ if (check24(input)) return action24(action_arg);
4487
+ if (check25(input)) return action25(action_arg);
4488
+ if (check26(input)) return action26(action_arg);
4489
+ if (check27(input)) return action27(action_arg);
4490
+ if (check28(input)) return action28(action_arg);
4491
+ if (check29(input)) return action29(action_arg);
4492
+ if (check30(input)) return action30(action_arg);
4493
+ if (check31(input)) return action31(action_arg);
4494
+ if (check32(input)) return action32(action_arg);
4495
+ if (check33(input)) return action33(action_arg);
4496
+ if (check34(input)) return action34(action_arg);
4497
+ if (check35(input)) return action35(action_arg);
4498
+ if (check36(input)) return action36(action_arg);
4499
+ if (check37(input)) return action37(action_arg);
4500
+ if (check38(input)) return action38(action_arg);
4501
+ if (check39(input)) return action39(action_arg);
4502
+ if (check40(input)) return action40(action_arg);
4503
+ if (check41(input)) return action41(action_arg);
4504
+ if (check42(input)) return action42(action_arg);
4505
+ if (check43(input)) return action43(action_arg);
4506
+ if (check44(input)) return action44(action_arg);
4507
+ if (check45(input)) return action45(action_arg);
4508
+ if (check46(input)) return action46(action_arg);
4509
+ if (check47(input)) return action47(action_arg);
4510
+ if (check48(input)) return action48(action_arg);
4511
+ if (check49(input)) return action49(action_arg);
4512
+ if (check50(input)) return action50(action_arg);
4513
+ if (check51(input)) return action51(action_arg);
4514
+ if (check52(input)) return action52(action_arg);
4515
+ if (check53(input)) return action53(action_arg);
4516
+ if (check54(input)) return action54(action_arg);
4517
+ if (check55(input)) return action55(action_arg);
4518
+ if (check56(input)) return action56(action_arg);
4519
+ if (check57(input)) return action57(action_arg);
4520
+ if (check58(input)) return action58(action_arg);
4521
+ if (check59(input)) return action59(action_arg);
4522
+ if (check60(input)) return action60(action_arg);
4523
+ if (check61(input)) return action61(action_arg);
4524
+ if (check62(input)) return action62(action_arg);
4525
+ return action_fail(action_arg);
4526
+ }
4527
+
4528
+ } // namespace grpc_core
4529
+
4530
+ #endif // GRPC_SRC_CORE_LIB_GPRPP_IF_LIST_H