annotate DEPENDENCIES/generic/include/boost/phoenix/statement/for.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 /*==============================================================================
Chris@16 2 Copyright (c) 2001-2010 Joel de Guzman
Chris@16 3 Copyright (c) 2010 Thomas Heller
Chris@16 4
Chris@16 5 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@16 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 7 ==============================================================================*/
Chris@16 8 #ifndef BOOST_PHOENIX_STATEMENT_FOR_HPP
Chris@16 9 #define BOOST_PHOENIX_STATEMENT_FOR_HPP
Chris@16 10
Chris@16 11 #include <boost/phoenix/core/limits.hpp>
Chris@16 12 #include <boost/phoenix/core/call.hpp>
Chris@16 13 #include <boost/phoenix/core/expression.hpp>
Chris@16 14 #include <boost/phoenix/core/meta_grammar.hpp>
Chris@16 15
Chris@16 16 BOOST_PHOENIX_DEFINE_EXPRESSION(
Chris@16 17 (boost)(phoenix)(for_)
Chris@16 18 , (meta_grammar) // Cond
Chris@16 19 (meta_grammar) // Init
Chris@16 20 (meta_grammar) // Step
Chris@16 21 (meta_grammar) // Do
Chris@16 22 )
Chris@16 23
Chris@16 24 namespace boost { namespace phoenix
Chris@16 25 {
Chris@16 26 struct for_eval
Chris@16 27 {
Chris@16 28 typedef void result_type;
Chris@16 29
Chris@16 30 template <
Chris@16 31 typename Init
Chris@16 32 , typename Cond
Chris@16 33 , typename Step
Chris@16 34 , typename Do
Chris@16 35 , typename Context
Chris@16 36 >
Chris@16 37 result_type
Chris@16 38 operator()(
Chris@16 39 Init const& init
Chris@16 40 , Cond const& cond
Chris@16 41 , Step const& step
Chris@101 42 , Do const& do_it
Chris@16 43 , Context const & ctx
Chris@16 44 ) const
Chris@16 45 {
Chris@16 46 for(boost::phoenix::eval(init, ctx); boost::phoenix::eval(cond, ctx); boost::phoenix::eval(step, ctx))
Chris@101 47 boost::phoenix::eval(do_it, ctx);
Chris@16 48 }
Chris@16 49 };
Chris@16 50
Chris@16 51 template <typename Dummy>
Chris@16 52 struct default_actions::when<rule::for_, Dummy>
Chris@16 53 : call<for_eval, Dummy>
Chris@16 54 {};
Chris@16 55
Chris@16 56 template <typename Init, typename Cond, typename Step>
Chris@16 57 struct for_gen
Chris@16 58 {
Chris@101 59 for_gen(Init const& init_, Cond const& cond_, Step const& step_)
Chris@101 60 : init(init_), cond(cond_), step(step_) {}
Chris@16 61
Chris@16 62 template <typename Do>
Chris@16 63 typename expression::for_<Init, Cond, Step, Do>::type const
Chris@101 64 operator[](Do const& do_it) const
Chris@16 65 {
Chris@16 66 return
Chris@16 67 expression::
Chris@16 68 for_<Init, Cond, Step, Do>::
Chris@101 69 make(init, cond, step, do_it);
Chris@16 70 }
Chris@16 71
Chris@16 72 Init init;
Chris@16 73 Cond cond;
Chris@16 74 Step step;
Chris@16 75 };
Chris@16 76
Chris@16 77 template <typename Init, typename Cond, typename Step>
Chris@16 78 inline
Chris@16 79 for_gen<Init, Cond, Step> const
Chris@16 80 for_(Init const& init, Cond const& cond, Step const& step)
Chris@16 81 {
Chris@16 82 return for_gen<Init, Cond, Step>(init, cond, step);
Chris@16 83 }
Chris@16 84
Chris@16 85 }}
Chris@16 86
Chris@16 87 #endif