/*============================================================================= Copyright (c) 2005-2010 Joel de Guzman Copyright (c) 2010 Eric Niebler Copyright (c) 2010 Thomas Heller Copyright (c) 2014 John Fletcher Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #ifndef BOOST_PHOENIX_CORE_ASSIGN_HPP #define BOOST_PHOENIX_CORE_ASSIGN_HPP #define BOOST_PHOENIX_ACTOR_ASSIGN_CHILD(N) \ assign( \ proto::_child_c \ , proto::call< \ proto::_child_c(proto::_state) \ > \ ) \ /**/ #define BOOST_PHOENIX_ACTOR_START_ASSIGN_CHILD(Z, N, D) \ proto::and_< \ BOOST_PHOENIX_ACTOR_ASSIGN_CHILD(N) \ /**/ #define BOOST_PHOENIX_ACTOR_END_ASSIGN(Z, N, D) \ > \ /**/ #define BOOST_PHOENIX_ACTOR_ASSIGN_CALL(N) \ proto::when< \ proto::nary_expr \ , BOOST_PP_ENUM( \ N \ , BOOST_PHOENIX_ACTOR_START_ASSIGN_CHILD \ , _ \ ) \ BOOST_PP_REPEAT( \ N \ , BOOST_PHOENIX_ACTOR_END_ASSIGN \ , _ \ ) \ > \ /**/ #define BOOST_PHOENIX_ACTOR_START_ASSIGN_CALL(Z, N, D) \ proto::or_< \ BOOST_PHOENIX_ACTOR_ASSIGN_CALL(N) \ /**/ #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES) #include #else #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/assign_" BOOST_PHOENIX_LIMIT_STR ".hpp") #endif /*============================================================================== Copyright (c) 2005-2010 Joel de Guzman Copyright (c) 2010-2011 Thomas Heller Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 1) #endif struct assign : BOOST_PP_ENUM_SHIFTED( BOOST_PHOENIX_LIMIT , BOOST_PHOENIX_ACTOR_START_ASSIGN_CALL , _ ) , proto::when< proto::terminal , do_assign(proto::_, proto::_state) > BOOST_PP_REPEAT( BOOST_PP_DEC(BOOST_PHOENIX_LIMIT) , BOOST_PHOENIX_ACTOR_END_ASSIGN , _ ) {}; #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) #pragma wave option(output: null) #endif #endif #undef BOOST_PHOENIX_ACTOR_ASSIGN_CALL #undef BOOST_PHOENIX_ACTOR_START_ASSIGN_CALL #undef BOOST_PHOENIX_ACTOR_END_ASSIGN_CALL #undef BOOST_PHOENIX_ACTOR_ASSIGN_CHILD #undef BOOST_PHOENIX_ACTOR_START_ASSIGN_CHILD #undef BOOST_PHOENIX_ACTOR_END_ASSIGN_CHILD #endif