]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/apply_fwd.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
4b30c9a31a8b7481cbf38a318f726fe953ae9781
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / apply_fwd.hpp
1 \r
2 #if !defined(BOOST_PP_IS_ITERATING)\r
3 \r
4 ///// header body\r
5 \r
6 #ifndef BOOST_MPL_APPLY_FWD_HPP_INCLUDED\r
7 #define BOOST_MPL_APPLY_FWD_HPP_INCLUDED\r
8 \r
9 // Copyright Aleksey Gurtovoy 2000-2004\r
10 //\r
11 // Distributed under the Boost Software License, Version 1.0. \r
12 // (See accompanying file LICENSE_1_0.txt or copy at \r
13 // http://www.boost.org/LICENSE_1_0.txt)\r
14 //\r
15 // See http://www.boost.org/libs/mpl for documentation.\r
16 \r
17 // $Id: apply_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $\r
18 // $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $\r
19 // $Revision: 49267 $\r
20 \r
21 #if !defined(BOOST_MPL_PREPROCESSING_MODE)\r
22 #   include <boost/mpl/aux_/na.hpp>\r
23 #endif\r
24 \r
25 #include <boost/mpl/aux_/config/use_preprocessed.hpp>\r
26 \r
27 #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \\r
28     && !defined(BOOST_MPL_PREPROCESSING_MODE)\r
29 \r
30 #   define BOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp\r
31 #   include <boost/mpl/aux_/include_preprocessed.hpp>\r
32 \r
33 #else\r
34 \r
35 #   include <boost/mpl/limits/arity.hpp>\r
36 #   include <boost/mpl/aux_/preprocessor/params.hpp>\r
37 #   include <boost/mpl/aux_/preprocessor/default_params.hpp>\r
38 #   include <boost/mpl/aux_/config/ctps.hpp>\r
39 #   include <boost/mpl/aux_/nttp_decl.hpp>\r
40 \r
41 #   include <boost/preprocessor/comma_if.hpp>\r
42 #   include <boost/preprocessor/iterate.hpp>\r
43 #   include <boost/preprocessor/cat.hpp>\r
44 \r
45 // agurt, 15/jan/02: top-level 'apply' template gives an ICE on MSVC\r
46 // (for known reasons)\r
47 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)\r
48 #   define BOOST_MPL_CFG_NO_APPLY_TEMPLATE\r
49 #endif\r
50 \r
51 namespace boost { namespace mpl {\r
52 \r
53 // local macro, #undef-ined at the end of the header\r
54 #   define AUX778076_APPLY_DEF_PARAMS(param, value) \\r
55     BOOST_MPL_PP_DEFAULT_PARAMS( \\r
56           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \\r
57         , param \\r
58         , value \\r
59         ) \\r
60     /**/\r
61 \r
62 #   define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \\r
63     BOOST_PP_COMMA_IF(n) \\r
64     BOOST_MPL_PP_PARAMS(n, param) \\r
65     /**/\r
66 \r
67 #   if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)\r
68 \r
69 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)\r
70 // forward declaration\r
71 template<\r
72       typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)\r
73     >\r
74 struct apply;\r
75 #else\r
76 namespace aux {\r
77 template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;\r
78 }\r
79 #endif\r
80 \r
81 #   endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE\r
82 \r
83 #define BOOST_PP_ITERATION_PARAMS_1 \\r
84     (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply_fwd.hpp>))\r
85 #include BOOST_PP_ITERATE()\r
86 \r
87 \r
88 #   undef AUX778076_APPLY_N_COMMA_PARAMS\r
89 #   undef AUX778076_APPLY_DEF_PARAMS\r
90 \r
91 }}\r
92 \r
93 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS\r
94 #endif // BOOST_MPL_APPLY_FWD_HPP_INCLUDED\r
95 \r
96 ///// iteration\r
97 \r
98 #else\r
99 #define i_ BOOST_PP_FRAME_ITERATION(1)\r
100 \r
101 template<\r
102       typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)\r
103     >\r
104 struct BOOST_PP_CAT(apply,i_);\r
105 \r
106 #undef i_\r
107 #endif // BOOST_PP_IS_ITERATING\r