]>
Commit | Line | Data |
---|---|---|
1 | ||
2 | // (C) Copyright Tobias Schwinger | |
3 | // | |
4 | // Use modification and distribution are subject to the boost Software License, | |
5 | // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). | |
6 | ||
7 | //------------------------------------------------------------------------------ | |
8 | ||
9 | // no include guards, this file is intended for multiple inclusion | |
10 | ||
11 | #if BOOST_FT_ARITY_LOOP_PREFIX | |
12 | ||
13 | # ifndef BOOST_FT_DETAIL_COMPONENTS_IMPL_MASTER_HPP_INCLUDED | |
14 | # define BOOST_FT_DETAIL_COMPONENTS_IMPL_MASTER_HPP_INCLUDED | |
15 | # include <boost/preprocessor/cat.hpp> | |
16 | # include <boost/preprocessor/facilities/empty.hpp> | |
17 | # include <boost/preprocessor/facilities/identity.hpp> | |
18 | # include <boost/preprocessor/arithmetic/dec.hpp> | |
19 | # include <boost/preprocessor/punctuation/comma_if.hpp> | |
20 | # endif | |
21 | ||
22 | # define BOOST_FT_type_name | |
23 | ||
24 | # if !BOOST_FT_mfp | |
25 | ||
26 | # define BOOST_FT_types \ | |
27 | R BOOST_PP_COMMA_IF(BOOST_FT_arity) BOOST_FT_params(BOOST_PP_EMPTY) | |
28 | # else | |
29 | ||
30 | # define BOOST_FT_types \ | |
31 | R, typename class_transform<T0 BOOST_FT_cv, L>::type \ | |
32 | BOOST_PP_COMMA_IF(BOOST_PP_DEC(BOOST_FT_arity)) \ | |
33 | BOOST_FT_params(BOOST_PP_EMPTY) | |
34 | ||
35 | # endif | |
36 | ||
37 | #elif BOOST_FT_ARITY_LOOP_IS_ITERATING | |
38 | ||
39 | template< BOOST_FT_tplargs(BOOST_PP_IDENTITY(typename)), typename L> | |
40 | struct components_impl<BOOST_FT_type, L> | |
41 | { | |
42 | typedef encode_bits<BOOST_FT_flags,BOOST_FT_cc_id> bits; | |
43 | typedef constant<BOOST_FT_full_mask> mask; | |
44 | ||
45 | typedef function_types::components<BOOST_FT_type, L> type; | |
46 | typedef components_mpl_sequence_tag tag; | |
47 | ||
48 | typedef mpl::integral_c<std::size_t,BOOST_FT_arity> function_arity; | |
49 | ||
50 | typedef BOOST_PP_CAT(mpl::vector,BOOST_FT_n)< BOOST_FT_types > types; | |
51 | }; | |
52 | ||
53 | #elif BOOST_FT_ARITY_LOOP_SUFFIX | |
54 | ||
55 | # undef BOOST_FT_types | |
56 | # undef BOOST_FT_type_name | |
57 | ||
58 | #else | |
59 | # error "attempt to use arity loop master file without loop" | |
60 | #endif | |
61 |