| [12] | 1 |  | 
|---|
 | 2 | #if !defined(BOOST_PP_IS_ITERATING) | 
|---|
 | 3 |  | 
|---|
 | 4 | ///// header body | 
|---|
 | 5 |  | 
|---|
 | 6 | #ifndef BOOST_MPL_BIND_FWD_HPP_INCLUDED | 
|---|
 | 7 | #define BOOST_MPL_BIND_FWD_HPP_INCLUDED | 
|---|
 | 8 |  | 
|---|
 | 9 | // Copyright Aleksey Gurtovoy 2000-2004 | 
|---|
 | 10 | // | 
|---|
 | 11 | // Distributed under the Boost Software License, Version 1.0.  | 
|---|
 | 12 | // (See accompanying file LICENSE_1_0.txt or copy at  | 
|---|
 | 13 | // http://www.boost.org/LICENSE_1_0.txt) | 
|---|
 | 14 | // | 
|---|
 | 15 | // See http://www.boost.org/libs/mpl for documentation. | 
|---|
 | 16 |  | 
|---|
 | 17 | // $Source: /cvsroot/boost/boost/boost/mpl/bind_fwd.hpp,v $ | 
|---|
 | 18 | // $Date: 2004/09/02 15:40:41 $ | 
|---|
 | 19 | // $Revision: 1.2 $ | 
|---|
 | 20 |  | 
|---|
 | 21 | #if !defined(BOOST_MPL_PREPROCESSING_MODE) | 
|---|
 | 22 | #   include <boost/mpl/aux_/na.hpp> | 
|---|
 | 23 | #endif | 
|---|
 | 24 |  | 
|---|
 | 25 | #include <boost/mpl/aux_/config/bind.hpp> | 
|---|
 | 26 | #include <boost/mpl/aux_/config/use_preprocessed.hpp> | 
|---|
 | 27 |  | 
|---|
 | 28 | #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ | 
|---|
 | 29 |     && !defined(BOOST_MPL_PREPROCESSING_MODE) | 
|---|
 | 30 |  | 
|---|
 | 31 | #   define BOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp | 
|---|
 | 32 | #   include <boost/mpl/aux_/include_preprocessed.hpp> | 
|---|
 | 33 |  | 
|---|
 | 34 | #else | 
|---|
 | 35 |  | 
|---|
 | 36 | #   include <boost/mpl/limits/arity.hpp> | 
|---|
 | 37 | #   include <boost/mpl/aux_/preprocessor/params.hpp> | 
|---|
 | 38 | #   include <boost/mpl/aux_/preprocessor/default_params.hpp> | 
|---|
 | 39 | #   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp> | 
|---|
 | 40 |  | 
|---|
 | 41 | #   include <boost/preprocessor/comma_if.hpp> | 
|---|
 | 42 | #   include <boost/preprocessor/iterate.hpp> | 
|---|
 | 43 | #   include <boost/preprocessor/cat.hpp> | 
|---|
 | 44 |  | 
|---|
 | 45 | namespace boost { namespace mpl { | 
|---|
 | 46 |  | 
|---|
 | 47 | // local macros, #undef-ined at the end of the header | 
|---|
 | 48 |  | 
|---|
 | 49 | #   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) | 
|---|
 | 50 | #       define AUX778076_DMC_PARAM() , int dummy_ = 0 | 
|---|
 | 51 | #   else | 
|---|
 | 52 | #       define AUX778076_DMC_PARAM() | 
|---|
 | 53 | #   endif | 
|---|
 | 54 |  | 
|---|
 | 55 | #   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \ | 
|---|
 | 56 |     BOOST_MPL_PP_DEFAULT_PARAMS( \ | 
|---|
 | 57 |           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \ | 
|---|
 | 58 |         , param \ | 
|---|
 | 59 |         , value \ | 
|---|
 | 60 |         ) \ | 
|---|
 | 61 |     AUX778076_DMC_PARAM() \ | 
|---|
 | 62 |     /**/ | 
|---|
 | 63 |  | 
|---|
 | 64 | #   define AUX778076_BIND_N_PARAMS(n, param) \ | 
|---|
 | 65 |     BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \ | 
|---|
 | 66 |     AUX778076_DMC_PARAM() \ | 
|---|
 | 67 |     /**/ | 
|---|
 | 68 |  | 
|---|
 | 69 | #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) | 
|---|
 | 70 | template< | 
|---|
 | 71 |       typename F, AUX778076_BIND_DEFAULT_PARAMS(typename T, na) | 
|---|
 | 72 |     > | 
|---|
 | 73 | struct bind; | 
|---|
 | 74 | #endif | 
|---|
 | 75 |  | 
|---|
 | 76 | #define BOOST_PP_ITERATION_PARAMS_1 \ | 
|---|
 | 77 |     (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind_fwd.hpp>)) | 
|---|
 | 78 | #include BOOST_PP_ITERATE() | 
|---|
 | 79 |  | 
|---|
 | 80 | #   undef AUX778076_BIND_N_PARAMS | 
|---|
 | 81 | #   undef AUX778076_BIND_DEFAULT_PARAMS | 
|---|
 | 82 | #   undef AUX778076_DMC_PARAM | 
|---|
 | 83 | }} | 
|---|
 | 84 |  | 
|---|
 | 85 | #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS | 
|---|
 | 86 | #endif // BOOST_MPL_BIND_FWD_HPP_INCLUDED | 
|---|
 | 87 |  | 
|---|
 | 88 | ///// iteration | 
|---|
 | 89 |  | 
|---|
 | 90 | #else | 
|---|
 | 91 | #define i_ BOOST_PP_FRAME_ITERATION(1) | 
|---|
 | 92 |  | 
|---|
 | 93 | template< | 
|---|
 | 94 |       typename F AUX778076_BIND_N_PARAMS(i_, typename T) | 
|---|
 | 95 |     > | 
|---|
 | 96 | struct BOOST_PP_CAT(bind,i_); | 
|---|
 | 97 |  | 
|---|
 | 98 | #undef i_ | 
|---|
 | 99 | #endif // BOOST_PP_IS_ITERATING | 
|---|