Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2011 Joel de Guzman Chris@16: Copyright (c) 2006 Dan Marsden 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_ZIP_HPP_20060125_2058) Chris@16: #define FUSION_ZIP_HPP_20060125_2058 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: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #if !defined(FUSION_MAX_ZIP_SEQUENCES) Chris@16: #define FUSION_MAX_ZIP_SEQUENCES 10 Chris@16: #endif Chris@16: Chris@16: #define FUSION_MAX_ZIP_SEQUENCES_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_ZIP_SEQUENCES)) 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: "detail/preprocessed/zip" FUSION_MAX_ZIP_SEQUENCES_STR ".hpp") Chris@16: #endif Chris@16: Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2011 Joel de Guzman Chris@16: Copyright (c) 2006 Dan Marsden 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 Chris@16: { Chris@16: struct void_; Chris@16: Chris@16: namespace result_of Chris@16: { Chris@16: template Chris@16: struct zip; Chris@16: } Chris@16: Chris@101: #define FUSION_TEXT(z, n, text) , text Chris@101: Chris@16: #define BOOST_PP_FILENAME_1 \ Chris@16: Chris@16: #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_ZIP_SEQUENCES) Chris@16: #include BOOST_PP_ITERATE() Chris@16: Chris@101: #undef FUSION_TEXT Chris@101: 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: Chris@16: #else Chris@16: Chris@16: #define ZIP_ITERATION BOOST_PP_ITERATION() Chris@16: Chris@16: namespace result_of Chris@16: { Chris@16: template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) > Chris@101: struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) Chris@101: BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, FUSION_TEXT, void_) Chris@101: > Chris@16: { Chris@16: typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences; Chris@16: typedef typename mpl::transform >::type ref_params; Chris@16: typedef zip_view::type> type; Chris@16: }; Chris@16: } Chris@16: Chris@16: #define FUSION_REF_PARAM(z, n, data) const T ## n& Chris@16: Chris@16: template Chris@101: BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED Chris@16: inline typename result_of::zip::type Chris@16: zip(BOOST_PP_ENUM_BINARY_PARAMS(ZIP_ITERATION, T, const& t)) Chris@16: { Chris@16: fusion::vector seqs( Chris@16: BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, t)); Chris@16: return typename result_of::zip::type( Chris@16: seqs); Chris@16: } Chris@16: Chris@16: #undef FUSION_REF_PARAM Chris@16: #undef ZIP_ITERATION Chris@16: Chris@16: #endif