/Src/Dependencies/Boost/boost/proto/transform/detail/preprocessed/lazy.hpp

http://hadesmem.googlecode.com/ · C++ Header · 227 lines · 132 code · 88 blank · 7 comment · 0 complexity · 60fdb3f1f103ab1315d2b5cd9aa14a5f MD5 · raw file

  1. ///////////////////////////////////////////////////////////////////////////////
  2. /// \file lazy.hpp
  3. /// Contains definition of the lazy<> transform.
  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<typename Object >
  9. struct lazy<Object()>
  10. : transform<lazy<Object()> >
  11. {
  12. template<typename Expr, typename State, typename Data>
  13. struct impl
  14. : call<
  15. typename make<Object>::template impl<Expr, State, Data>::result_type
  16. ()
  17. >::template impl<Expr, State, Data>
  18. {};
  19. };
  20. template<typename Object , typename A0>
  21. struct lazy<Object(A0)>
  22. : transform<lazy<Object(A0)> >
  23. {
  24. template<typename Expr, typename State, typename Data>
  25. struct impl
  26. : call<
  27. typename make<Object>::template impl<Expr, State, Data>::result_type
  28. (A0)
  29. >::template impl<Expr, State, Data>
  30. {};
  31. };
  32. template<typename Object , typename A0 , typename A1>
  33. struct lazy<Object(A0 , A1)>
  34. : transform<lazy<Object(A0 , A1)> >
  35. {
  36. template<typename Expr, typename State, typename Data>
  37. struct impl
  38. : call<
  39. typename make<Object>::template impl<Expr, State, Data>::result_type
  40. (A0 , A1)
  41. >::template impl<Expr, State, Data>
  42. {};
  43. };
  44. template<typename Object , typename A0 , typename A1 , typename A2>
  45. struct lazy<Object(A0 , A1 , A2)>
  46. : transform<lazy<Object(A0 , A1 , A2)> >
  47. {
  48. template<typename Expr, typename State, typename Data>
  49. struct impl
  50. : call<
  51. typename make<Object>::template impl<Expr, State, Data>::result_type
  52. (A0 , A1 , A2)
  53. >::template impl<Expr, State, Data>
  54. {};
  55. };
  56. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3>
  57. struct lazy<Object(A0 , A1 , A2 , A3)>
  58. : transform<lazy<Object(A0 , A1 , A2 , A3)> >
  59. {
  60. template<typename Expr, typename State, typename Data>
  61. struct impl
  62. : call<
  63. typename make<Object>::template impl<Expr, State, Data>::result_type
  64. (A0 , A1 , A2 , A3)
  65. >::template impl<Expr, State, Data>
  66. {};
  67. };
  68. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  69. struct lazy<Object(A0 , A1 , A2 , A3 , A4)>
  70. : transform<lazy<Object(A0 , A1 , A2 , A3 , A4)> >
  71. {
  72. template<typename Expr, typename State, typename Data>
  73. struct impl
  74. : call<
  75. typename make<Object>::template impl<Expr, State, Data>::result_type
  76. (A0 , A1 , A2 , A3 , A4)
  77. >::template impl<Expr, State, Data>
  78. {};
  79. };
  80. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  81. struct lazy<Object(A0 , A1 , A2 , A3 , A4 , A5)>
  82. : transform<lazy<Object(A0 , A1 , A2 , A3 , A4 , A5)> >
  83. {
  84. template<typename Expr, typename State, typename Data>
  85. struct impl
  86. : call<
  87. typename make<Object>::template impl<Expr, State, Data>::result_type
  88. (A0 , A1 , A2 , A3 , A4 , A5)
  89. >::template impl<Expr, State, Data>
  90. {};
  91. };
  92. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  93. struct lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
  94. : transform<lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6)> >
  95. {
  96. template<typename Expr, typename State, typename Data>
  97. struct impl
  98. : call<
  99. typename make<Object>::template impl<Expr, State, Data>::result_type
  100. (A0 , A1 , A2 , A3 , A4 , A5 , A6)
  101. >::template impl<Expr, State, Data>
  102. {};
  103. };
  104. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  105. struct lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
  106. : transform<lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)> >
  107. {
  108. template<typename Expr, typename State, typename Data>
  109. struct impl
  110. : call<
  111. typename make<Object>::template impl<Expr, State, Data>::result_type
  112. (A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)
  113. >::template impl<Expr, State, Data>
  114. {};
  115. };
  116. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  117. struct lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
  118. : transform<lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)> >
  119. {
  120. template<typename Expr, typename State, typename Data>
  121. struct impl
  122. : call<
  123. typename make<Object>::template impl<Expr, State, Data>::result_type
  124. (A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)
  125. >::template impl<Expr, State, Data>
  126. {};
  127. };
  128. template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  129. struct lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
  130. : transform<lazy<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)> >
  131. {
  132. template<typename Expr, typename State, typename Data>
  133. struct impl
  134. : call<
  135. typename make<Object>::template impl<Expr, State, Data>::result_type
  136. (A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)
  137. >::template impl<Expr, State, Data>
  138. {};
  139. };