Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:41:55

0001 
0002 #if !defined(BOOST_PP_IS_ITERATING)
0003 
0004 ///// header body
0005 
0006 #ifndef BOOST_MPL_APPLY_FWD_HPP_INCLUDED
0007 #define BOOST_MPL_APPLY_FWD_HPP_INCLUDED
0008 
0009 // Copyright Aleksey Gurtovoy 2000-2004
0010 //
0011 // Distributed under the Boost Software License, Version 1.0. 
0012 // (See accompanying file LICENSE_1_0.txt or copy at 
0013 // http://www.boost.org/LICENSE_1_0.txt)
0014 //
0015 // See http://www.boost.org/libs/mpl for documentation.
0016 
0017 // $Id$
0018 // $Date$
0019 // $Revision$
0020 
0021 #if !defined(BOOST_MPL_PREPROCESSING_MODE)
0022 #   include <boost/mpl/aux_/na.hpp>
0023 #endif
0024 
0025 #include <boost/mpl/aux_/config/use_preprocessed.hpp>
0026 
0027 #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
0028     && !defined(BOOST_MPL_PREPROCESSING_MODE)
0029 
0030 #   define BOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp
0031 #   include <boost/mpl/aux_/include_preprocessed.hpp>
0032 
0033 #else
0034 
0035 #   include <boost/mpl/limits/arity.hpp>
0036 #   include <boost/mpl/aux_/preprocessor/params.hpp>
0037 #   include <boost/mpl/aux_/preprocessor/default_params.hpp>
0038 #   include <boost/mpl/aux_/config/ctps.hpp>
0039 #   include <boost/mpl/aux_/nttp_decl.hpp>
0040 
0041 #   include <boost/preprocessor/comma_if.hpp>
0042 #   include <boost/preprocessor/iterate.hpp>
0043 #   include <boost/preprocessor/cat.hpp>
0044 
0045 // agurt, 15/jan/02: top-level 'apply' template gives an ICE on MSVC
0046 // (for known reasons)
0047 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
0048 #   define BOOST_MPL_CFG_NO_APPLY_TEMPLATE
0049 #endif
0050 
0051 namespace boost { namespace mpl {
0052 
0053 // local macro, #undef-ined at the end of the header
0054 #   define AUX778076_APPLY_DEF_PARAMS(param, value) \
0055     BOOST_MPL_PP_DEFAULT_PARAMS( \
0056           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
0057         , param \
0058         , value \
0059         ) \
0060     /**/
0061 
0062 #   define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
0063     BOOST_PP_COMMA_IF(n) \
0064     BOOST_MPL_PP_PARAMS(n, param) \
0065     /**/
0066 
0067 #   if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
0068 
0069 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
0070 // forward declaration
0071 template<
0072       typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
0073     >
0074 struct apply;
0075 #else
0076 namespace aux {
0077 template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
0078 }
0079 #endif
0080 
0081 #   endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
0082 
0083 #define BOOST_PP_ITERATION_PARAMS_1 \
0084     (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply_fwd.hpp>))
0085 #include BOOST_PP_ITERATE()
0086 
0087 
0088 #   undef AUX778076_APPLY_N_COMMA_PARAMS
0089 #   undef AUX778076_APPLY_DEF_PARAMS
0090 
0091 }}
0092 
0093 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
0094 #endif // BOOST_MPL_APPLY_FWD_HPP_INCLUDED
0095 
0096 ///// iteration
0097 
0098 #else
0099 #define i_ BOOST_PP_FRAME_ITERATION(1)
0100 
0101 template<
0102       typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
0103     >
0104 struct BOOST_PP_CAT(apply,i_);
0105 
0106 #undef i_
0107 #endif // BOOST_PP_IS_ITERATING