lambda_matches.hpp 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. ///////////////////////////////////////////////////////////////////////////////
  2. /// \file lambda_matches.hpp
  3. /// Specializations of the lambda_matches template
  4. //
  5. // Copyright 2008 Eric Niebler. Distributed under the Boost
  6. // Software License, Version 1.0. (See accompanying file
  7. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  8. template<
  9. template<typename , typename> class T
  10. , typename Expr0 , typename Expr1
  11. , typename Grammar0 , typename Grammar1
  12. >
  13. struct lambda_matches<
  14. T<Expr0 , Expr1>
  15. , T<Grammar0 , Grammar1>
  16. BOOST_PROTO_TEMPLATE_ARITY_PARAM(2)
  17. >
  18. : and_2<
  19. lambda_matches< Expr0 , Grammar0 >::value,
  20. lambda_matches< Expr1 , Grammar1 >
  21. >
  22. {};
  23. template<
  24. template<typename , typename , typename> class T
  25. , typename Expr0 , typename Expr1 , typename Expr2
  26. , typename Grammar0 , typename Grammar1 , typename Grammar2
  27. >
  28. struct lambda_matches<
  29. T<Expr0 , Expr1 , Expr2>
  30. , T<Grammar0 , Grammar1 , Grammar2>
  31. BOOST_PROTO_TEMPLATE_ARITY_PARAM(3)
  32. >
  33. : and_3<
  34. lambda_matches< Expr0 , Grammar0 >::value,
  35. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 >
  36. >
  37. {};
  38. template<
  39. template<typename , typename , typename , typename> class T
  40. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3
  41. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3
  42. >
  43. struct lambda_matches<
  44. T<Expr0 , Expr1 , Expr2 , Expr3>
  45. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3>
  46. BOOST_PROTO_TEMPLATE_ARITY_PARAM(4)
  47. >
  48. : and_4<
  49. lambda_matches< Expr0 , Grammar0 >::value,
  50. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 >
  51. >
  52. {};
  53. template<
  54. template<typename , typename , typename , typename , typename> class T
  55. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4
  56. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4
  57. >
  58. struct lambda_matches<
  59. T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4>
  60. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4>
  61. BOOST_PROTO_TEMPLATE_ARITY_PARAM(5)
  62. >
  63. : and_5<
  64. lambda_matches< Expr0 , Grammar0 >::value,
  65. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 >
  66. >
  67. {};
  68. template<
  69. template<typename , typename , typename , typename , typename , typename> class T
  70. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5
  71. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5
  72. >
  73. struct lambda_matches<
  74. T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5>
  75. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5>
  76. BOOST_PROTO_TEMPLATE_ARITY_PARAM(6)
  77. >
  78. : and_6<
  79. lambda_matches< Expr0 , Grammar0 >::value,
  80. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 >
  81. >
  82. {};
  83. template<
  84. template<typename , typename , typename , typename , typename , typename , typename> class T
  85. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6
  86. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6
  87. >
  88. struct lambda_matches<
  89. T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6>
  90. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6>
  91. BOOST_PROTO_TEMPLATE_ARITY_PARAM(7)
  92. >
  93. : and_7<
  94. lambda_matches< Expr0 , Grammar0 >::value,
  95. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 >
  96. >
  97. {};
  98. template<
  99. template<typename , typename , typename , typename , typename , typename , typename , typename> class T
  100. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7
  101. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7
  102. >
  103. struct lambda_matches<
  104. T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7>
  105. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7>
  106. BOOST_PROTO_TEMPLATE_ARITY_PARAM(8)
  107. >
  108. : and_8<
  109. lambda_matches< Expr0 , Grammar0 >::value,
  110. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 >
  111. >
  112. {};
  113. template<
  114. template<typename , typename , typename , typename , typename , typename , typename , typename , typename> class T
  115. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7 , typename Expr8
  116. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7 , typename Grammar8
  117. >
  118. struct lambda_matches<
  119. T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7 , Expr8>
  120. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7 , Grammar8>
  121. BOOST_PROTO_TEMPLATE_ARITY_PARAM(9)
  122. >
  123. : and_9<
  124. lambda_matches< Expr0 , Grammar0 >::value,
  125. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 > , lambda_matches< Expr8 , Grammar8 >
  126. >
  127. {};
  128. template<
  129. template<typename , typename , typename , typename , typename , typename , typename , typename , typename , typename> class T
  130. , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7 , typename Expr8 , typename Expr9
  131. , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7 , typename Grammar8 , typename Grammar9
  132. >
  133. struct lambda_matches<
  134. T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7 , Expr8 , Expr9>
  135. , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7 , Grammar8 , Grammar9>
  136. BOOST_PROTO_TEMPLATE_ARITY_PARAM(10)
  137. >
  138. : and_10<
  139. lambda_matches< Expr0 , Grammar0 >::value,
  140. lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 > , lambda_matches< Expr8 , Grammar8 > , lambda_matches< Expr9 , Grammar9 >
  141. >
  142. {};