annotate DEPENDENCIES/generic/include/boost/spirit/home/phoenix/statement/for.hpp @ 56:08f5d78e4b5f

Subrepo update
author Chris Cannam
date Mon, 11 Aug 2014 11:33:41 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /*=============================================================================
Chris@16 2 Copyright (c) 2001-2007 Joel de Guzman
Chris@16 3
Chris@16 4 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@16 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 6 ==============================================================================*/
Chris@16 7 #ifndef PHOENIX_STATEMENT_FOR_HPP
Chris@16 8 #define PHOENIX_STATEMENT_FOR_HPP
Chris@16 9
Chris@16 10 #include <boost/spirit/home/phoenix/core/composite.hpp>
Chris@16 11 #include <boost/spirit/home/phoenix/core/compose.hpp>
Chris@16 12
Chris@16 13 namespace boost { namespace phoenix
Chris@16 14 {
Chris@16 15 struct for_eval
Chris@16 16 {
Chris@16 17 template <
Chris@16 18 typename Env
Chris@16 19 , typename Init, typename Cond, typename Step, typename Do>
Chris@16 20 struct result
Chris@16 21 {
Chris@16 22 typedef void type;
Chris@16 23 };
Chris@16 24
Chris@16 25 template <
Chris@16 26 typename RT, typename Env
Chris@16 27 , typename Init, typename Cond, typename Step, typename Do>
Chris@16 28 static void
Chris@16 29 eval(
Chris@16 30 Env const& env
Chris@16 31 , Init& init, Cond& cond, Step& step, Do& do_)
Chris@16 32 {
Chris@16 33 for (init.eval(env); cond.eval(env); step.eval(env))
Chris@16 34 do_.eval(env);
Chris@16 35 }
Chris@16 36 };
Chris@16 37
Chris@16 38 template <typename Init, typename Cond, typename Step>
Chris@16 39 struct for_gen
Chris@16 40 {
Chris@16 41 for_gen(Init const& init, Cond const& cond, Step const& step)
Chris@16 42 : init(init), cond(cond), step(step) {}
Chris@16 43
Chris@16 44 template <typename Do>
Chris@16 45 actor<typename as_composite<for_eval, Init, Cond, Step, Do>::type>
Chris@16 46 operator[](Do const& do_) const
Chris@16 47 {
Chris@16 48 return compose<for_eval>(init, cond, step, do_);
Chris@16 49 }
Chris@16 50
Chris@16 51 Init init;
Chris@16 52 Cond cond;
Chris@16 53 Step step;
Chris@16 54 };
Chris@16 55
Chris@16 56 template <typename Init, typename Cond, typename Step>
Chris@16 57 inline for_gen<Init, Cond, Step>
Chris@16 58 for_(Init const& init, Cond const& cond, Step const& step)
Chris@16 59 {
Chris@16 60 return for_gen<Init, Cond, Step>(init, cond, step);
Chris@16 61 }
Chris@16 62 }}
Chris@16 63
Chris@16 64 #endif