Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2011 Joel de Guzman Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: ==============================================================================*/ Chris@16: #ifndef BOOST_PP_IS_ITERATING Chris@16: #if !defined(FUSION_AS_SET_0932005_1341) Chris@16: #define FUSION_AS_SET_0932005_1341 Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace fusion { namespace detail Chris@16: { Chris@101: BOOST_FUSION_BARRIER_BEGIN Chris@101: Chris@16: template Chris@16: struct as_set; Chris@16: Chris@16: template <> Chris@16: struct as_set<0> Chris@16: { Chris@16: template Chris@16: struct apply Chris@16: { Chris@16: typedef set<> type; Chris@16: }; Chris@16: Chris@16: template Chris@101: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED Chris@16: static typename apply::type Chris@16: call(Iterator) Chris@16: { Chris@16: return set<>(); Chris@16: } Chris@16: }; Chris@101: Chris@101: BOOST_FUSION_BARRIER_END Chris@16: }}} Chris@16: Chris@16: #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) Chris@16: #include Chris@16: #else Chris@16: #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) Chris@16: #pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_set" FUSION_MAX_SET_SIZE_STR ".hpp") Chris@16: #endif Chris@16: Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2011 Joel de Guzman Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: This is an auto-generated file. Do not edit! Chris@16: ==============================================================================*/ Chris@16: Chris@16: #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) Chris@16: #pragma wave option(preserve: 1) Chris@16: #endif Chris@16: Chris@16: namespace boost { namespace fusion { namespace detail Chris@16: { Chris@101: BOOST_FUSION_BARRIER_BEGIN Chris@101: Chris@16: #define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ Chris@16: typedef typename fusion::result_of::next::type \ Chris@16: BOOST_PP_CAT(I, BOOST_PP_INC(n)); Chris@16: Chris@16: #define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ Chris@16: typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ Chris@16: BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); Chris@16: Chris@16: #define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ Chris@16: typedef typename fusion::result_of::value_of::type \ Chris@16: BOOST_PP_CAT(T, n); Chris@16: Chris@16: #define BOOST_PP_FILENAME_1 Chris@16: #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) Chris@16: #include BOOST_PP_ITERATE() Chris@16: Chris@16: #undef BOOST_FUSION_NEXT_ITERATOR Chris@16: #undef BOOST_FUSION_NEXT_CALL_ITERATOR Chris@16: #undef BOOST_FUSION_VALUE_OF_ITERATOR Chris@16: Chris@101: BOOST_FUSION_BARRIER_END Chris@16: }}} Chris@16: Chris@16: #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) Chris@16: #pragma wave option(output: null) Chris@16: #endif Chris@16: Chris@16: #endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES Chris@16: Chris@16: #endif Chris@16: #else // defined(BOOST_PP_IS_ITERATING) Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // Chris@16: // Preprocessor vertical repetition code Chris@16: // Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: Chris@16: #define N BOOST_PP_ITERATION() Chris@16: Chris@16: template <> Chris@16: struct as_set Chris@16: { Chris@16: template Chris@16: struct apply Chris@16: { Chris@16: BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) Chris@16: BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) Chris@16: typedef set type; Chris@16: }; Chris@16: Chris@16: template Chris@101: BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED Chris@16: static typename apply::type Chris@16: call(Iterator const& i0) Chris@16: { Chris@16: typedef apply gen; Chris@16: typedef typename gen::type result; Chris@16: BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) Chris@16: return result(BOOST_PP_ENUM_PARAMS(N, *i)); Chris@16: } Chris@16: }; Chris@16: Chris@16: #undef N Chris@16: #endif // defined(BOOST_PP_IS_ITERATING) Chris@16: