Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:50:26

0001 #if !defined(BOOST_PROTO_DONT_USE_PREPROCESSED_FILES)
0002 
0003     #include <boost/proto/detail/preprocessed/deduce_domain_n.hpp>
0004 
0005 #elif !defined(BOOST_PP_IS_ITERATING)
0006 
0007     #define BOOST_PROTO_COMMON_DOMAIN2(Z, N, DATA)                                                  \
0008         typedef                                                                                     \
0009             typename common_domain2<common ## N, A ## N>::type                                      \
0010         BOOST_PP_CAT(common, BOOST_PP_INC(N));                                                      \
0011         /**/
0012 
0013     #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0014         #pragma wave option(preserve: 2, line: 0, output: "preprocessed/deduce_domain_n.hpp")
0015     #endif
0016 
0017     ///////////////////////////////////////////////////////////////////////////////
0018     // deduce_domain_n.hpp
0019     // Definitions of common_domain[n] and deduce_domain[n] class templates.
0020     //
0021     //  Copyright 2008 Eric Niebler. Distributed under the Boost
0022     //  Software License, Version 1.0. (See accompanying file
0023     //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0024 
0025     #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0026         #pragma wave option(preserve: 1)
0027     #endif
0028 
0029     #define BOOST_PP_ITERATION_PARAMS_1                                                             \
0030         (3, (3, BOOST_PROTO_MAX_ARITY, <boost/proto/detail/deduce_domain_n.hpp>))
0031     #include BOOST_PP_ITERATE()
0032 
0033     #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
0034         #pragma wave option(output: null)
0035     #endif
0036 
0037     #undef BOOST_PROTO_COMMON_DOMAIN2
0038 
0039 #else
0040 
0041     #define N BOOST_PP_ITERATION()
0042 
0043     template<BOOST_PP_ENUM_PARAMS(N, typename A)>
0044     struct BOOST_PP_CAT(common_domain, N)
0045     {
0046         typedef A0 common1;
0047         BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_PROTO_COMMON_DOMAIN2, ~)
0048         typedef BOOST_PP_CAT(common, N) type;
0049         BOOST_PROTO_ASSERT_VALID_DOMAIN(type);
0050     };
0051 
0052     template<BOOST_PP_ENUM_PARAMS(N, typename E)>
0053     struct BOOST_PP_CAT(deduce_domain, N)
0054       : BOOST_PP_CAT(common_domain, N)<
0055             BOOST_PP_ENUM_BINARY_PARAMS(
0056                 N
0057               , typename domain_of<E, >::type BOOST_PP_INTERCEPT
0058             )
0059         >
0060     {};
0061 
0062     #undef N
0063 
0064 #endif // BOOST_PROTO_DONT_USE_PREPROCESSED_FILES