BVB Source Codes

mars Show arg.hpp Source code

Return Download mars: download arg.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. #if !defined(BOOST_PP_IS_ITERATING)
  3.  
  4. ///// header body
  5.  
  6. #ifndef BOOST_MPL_ARG_HPP_INCLUDED
  7. #define BOOST_MPL_ARG_HPP_INCLUDED
  8.  
  9. // Copyright Peter Dimov 2001-2002
  10. // Copyright Aleksey Gurtovoy 2001-2004
  11. //
  12. // Distributed under the Boost Software License, Version 1.0.
  13. // (See accompanying file LICENSE_1_0.txt or copy at
  14. // http://www.boost.org/LICENSE_1_0.txt)
  15. //
  16. // See http://www.boost.org/libs/mpl for documentation.
  17.  
  18. // $Id$
  19. // $Date$
  20. // $Revision$
  21.  
  22. #if !defined(BOOST_MPL_PREPROCESSING_MODE)
  23. #   include <boost/mpl/arg_fwd.hpp>
  24. #   include <boost/mpl/aux_/na.hpp>
  25. #   include <boost/mpl/aux_/na_assert.hpp>
  26. #   include <boost/mpl/aux_/arity_spec.hpp>
  27. #   include <boost/mpl/aux_/arg_typedef.hpp>
  28. #endif
  29.  
  30. #include <boost/mpl/aux_/config/static_constant.hpp>
  31. #include <boost/mpl/aux_/config/use_preprocessed.hpp>
  32.  
  33. #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
  34.     && !defined(BOOST_MPL_PREPROCESSING_MODE)
  35.  
  36. #   define BOOST_MPL_PREPROCESSED_HEADER arg.hpp
  37. #   include <boost/mpl/aux_/include_preprocessed.hpp>
  38.  
  39. #else
  40.  
  41. #   include <boost/mpl/limits/arity.hpp>
  42. #   include <boost/mpl/aux_/preprocessor/default_params.hpp>
  43. #   include <boost/mpl/aux_/preprocessor/params.hpp>
  44. #   include <boost/mpl/aux_/config/lambda.hpp>
  45. #   include <boost/mpl/aux_/config/dtp.hpp>
  46. #   include <boost/mpl/aux_/nttp_decl.hpp>
  47.  
  48. #   include <boost/preprocessor/iterate.hpp>
  49. #   include <boost/preprocessor/inc.hpp>
  50. #   include <boost/preprocessor/cat.hpp>
  51.  
  52. BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
  53.  
  54. // local macro, #undef-ined at the end of the header
  55. #if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
  56. #   define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
  57.     BOOST_MPL_PP_DEFAULT_PARAMS( \
  58.           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
  59.         , param \
  60.         , value \
  61.         ) \
  62.     /**/
  63. #else
  64. #   define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
  65.     BOOST_MPL_PP_PARAMS( \
  66.           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
  67.         , param \
  68.         ) \
  69.     /**/
  70. #endif
  71.  
  72. #define BOOST_PP_ITERATION_PARAMS_1 \
  73.     (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/arg.hpp>))
  74. #include BOOST_PP_ITERATE()
  75.  
  76.  
  77. #   undef AUX778076_ARG_N_DEFAULT_PARAMS
  78.  
  79. BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int,arg)
  80.  
  81. BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
  82.  
  83. #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
  84. #endif // BOOST_MPL_ARG_HPP_INCLUDED
  85.  
  86. ///// iteration
  87.  
  88. #else
  89. #define i_ BOOST_PP_FRAME_ITERATION(1)
  90.  
  91. #if i_ > 0
  92.  
  93. template<> struct arg<i_>
  94. {
  95.     BOOST_STATIC_CONSTANT(int, value = i_);
  96.     typedef arg<BOOST_PP_INC(i_)> next;
  97.     BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  98.     BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  99.  
  100.     template<
  101.           AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
  102.         >
  103.     struct apply
  104.     {
  105.         typedef BOOST_PP_CAT(U,i_) type;
  106.         BOOST_MPL_AUX_ASSERT_NOT_NA(type);
  107.     };
  108. };
  109.  
  110. #else
  111.  
  112. template<> struct arg<-1>
  113. {
  114.     BOOST_STATIC_CONSTANT(int, value = -1);
  115.     BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  116.     BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  117.  
  118.     template<
  119.           AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
  120.         >
  121.     struct apply
  122.     {
  123.         typedef U1 type;
  124.         BOOST_MPL_AUX_ASSERT_NOT_NA(type);
  125.     };
  126. };
  127.  
  128. #endif // i_ > 0
  129.  
  130. #undef i_
  131. #endif // BOOST_PP_IS_ITERATING
  132.  
downloadarg.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