BVB Source Codes

mars Show logical_op.hpp Source code

Return Download mars: download logical_op.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. // Copyright Aleksey Gurtovoy 2000-2004
  3. //
  4. // Distributed under the Boost Software License, Version 1.0.
  5. // (See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. //
  8. // See http://www.boost.org/libs/mpl for documentation.
  9.  
  10. // $Id$
  11. // $Date$
  12. // $Revision$
  13.  
  14. // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
  15.  
  16. #if !defined(BOOST_MPL_PREPROCESSING_MODE)
  17. #   include <boost/mpl/bool.hpp>
  18. #   include <boost/mpl/aux_/nested_type_wknd.hpp>
  19. #   include <boost/mpl/aux_/na_spec.hpp>
  20. #   include <boost/mpl/aux_/lambda_support.hpp>
  21. #endif
  22.  
  23. #include <boost/mpl/limits/arity.hpp>
  24. #include <boost/mpl/aux_/preprocessor/params.hpp>
  25. #include <boost/mpl/aux_/preprocessor/ext_params.hpp>
  26. #include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
  27. #include <boost/mpl/aux_/preprocessor/enum.hpp>
  28. #include <boost/mpl/aux_/preprocessor/sub.hpp>
  29. #include <boost/mpl/aux_/config/ctps.hpp>
  30. #include <boost/mpl/aux_/config/workaround.hpp>
  31.  
  32. #include <boost/preprocessor/dec.hpp>
  33. #include <boost/preprocessor/inc.hpp>
  34. #include <boost/preprocessor/cat.hpp>
  35.  
  36. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl {
  37.  
  38. #   define AUX778076_PARAMS(param, sub) \
  39.     BOOST_MPL_PP_PARAMS( \
  40.           BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, sub) \
  41.         , param \
  42.         ) \
  43.     /**/
  44.  
  45. #   define AUX778076_SHIFTED_PARAMS(param, sub) \
  46.     BOOST_MPL_PP_EXT_PARAMS( \
  47.           2, BOOST_MPL_PP_SUB(BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY), sub) \
  48.         , param \
  49.         ) \
  50.     /**/
  51.  
  52. #   define AUX778076_SPEC_PARAMS(param) \
  53.     BOOST_MPL_PP_ENUM( \
  54.           BOOST_PP_DEC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
  55.         , param \
  56.         ) \
  57.     /**/
  58.  
  59. namespace aux {
  60.  
  61. #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  62.  
  63. template< bool C_, AUX778076_PARAMS(typename T, 1) >
  64. struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
  65.     : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
  66. {
  67. };
  68.  
  69. template< AUX778076_PARAMS(typename T, 1) >
  70. struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)< AUX778076_OP_VALUE2,AUX778076_PARAMS(T, 1) >
  71.     : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
  72.           BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
  73.         , AUX778076_SHIFTED_PARAMS(T, 1)
  74.         , BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
  75.         >
  76. {
  77. };
  78.  
  79. template<>
  80. struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
  81.           AUX778076_OP_VALUE2
  82.         , AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
  83.         >
  84.     : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
  85. {
  86. };
  87.  
  88. #else
  89.  
  90. template< bool C_ > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
  91. {
  92.     template< AUX778076_PARAMS(typename T, 1) > struct result_
  93.         : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
  94.     {
  95.     };
  96. };
  97.  
  98. template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
  99. {
  100.     template< AUX778076_PARAMS(typename T, 1) > struct result_
  101.         : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
  102.               BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
  103.             >::template result_< AUX778076_SHIFTED_PARAMS(T,1),BOOST_PP_CAT(AUX778076_OP_VALUE2,_) >
  104.     {
  105.     };
  106.  
  107. #if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
  108.     template<> struct result_<AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))>
  109.         : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
  110.     {
  111.     };
  112. };
  113. #else
  114. };
  115.  
  116. template<>
  117. struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
  118.     ::result_< AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_)) >
  119.         : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
  120. {
  121. };
  122. #endif // BOOST_MSVC == 1300
  123.  
  124. #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  125.  
  126. } // namespace aux
  127.  
  128. template<
  129.       typename BOOST_MPL_AUX_NA_PARAM(T1)
  130.     , typename BOOST_MPL_AUX_NA_PARAM(T2)
  131.     BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename T, BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
  132.     >
  133. struct AUX778076_OP_NAME
  134. #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  135.     : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
  136.           BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
  137.         , AUX778076_SHIFTED_PARAMS(T,0)
  138.         >
  139. #else
  140.     : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
  141.           BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
  142.         >::template result_< AUX778076_SHIFTED_PARAMS(T,0) >
  143. #endif
  144. {
  145.     BOOST_MPL_AUX_LAMBDA_SUPPORT(
  146.           BOOST_MPL_LIMIT_METAFUNCTION_ARITY
  147.         , AUX778076_OP_NAME
  148.         , (AUX778076_PARAMS(T, 0))
  149.         )
  150. };
  151.  
  152. BOOST_MPL_AUX_NA_SPEC2(
  153.       2
  154.     , BOOST_MPL_LIMIT_METAFUNCTION_ARITY
  155.     , AUX778076_OP_NAME
  156.     )
  157.  
  158. }}
  159.  
  160. #undef AUX778076_SPEC_PARAMS
  161. #undef AUX778076_SHIFTED_PARAMS
  162. #undef AUX778076_PARAMS
  163. #undef AUX778076_OP_NAME
  164. #undef AUX778076_OP_VALUE1
  165. #undef AUX778076_OP_VALUE2
  166.  
downloadlogical_op.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top