| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- /*==============================================================================
 
-     Copyright (c) 2001-2010 Joel de Guzman
 
-     Copyright (c) 2010 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)
 
- ==============================================================================*/
 
- #ifndef BOOST_PHOENIX_STATEMENT_FOR_HPP
 
- #define BOOST_PHOENIX_STATEMENT_FOR_HPP
 
- #include <boost/phoenix/core/limits.hpp>
 
- #include <boost/phoenix/core/call.hpp>
 
- #include <boost/phoenix/core/expression.hpp>
 
- #include <boost/phoenix/core/meta_grammar.hpp>
 
-     
 
- BOOST_PHOENIX_DEFINE_EXPRESSION(
 
-     (boost)(phoenix)(for_)
 
-   , (meta_grammar) // Cond
 
-     (meta_grammar) // Init
 
-     (meta_grammar) // Step
 
-     (meta_grammar) // Do
 
- )
 
- namespace boost { namespace phoenix
 
- {
 
-     struct for_eval
 
-     {
 
-         typedef void result_type;
 
-         template <
 
-             typename Init
 
-           , typename Cond
 
-           , typename Step
 
-           , typename Do
 
-           , typename Context
 
-         >
 
-         result_type
 
-         operator()(
 
-             Init const& init
 
-           , Cond const& cond
 
-           , Step const& step
 
-           , Do const& do_it
 
-           , Context const & ctx
 
-         ) const
 
-         {
 
-             for(boost::phoenix::eval(init, ctx); boost::phoenix::eval(cond, ctx); boost::phoenix::eval(step, ctx))
 
-                 boost::phoenix::eval(do_it, ctx);
 
-         }
 
-     };
 
-     
 
-     template <typename Dummy>
 
-     struct default_actions::when<rule::for_, Dummy>
 
-         : call<for_eval, Dummy>
 
-     {};
 
-     
 
-     template <typename Init, typename Cond, typename Step>
 
-     struct for_gen
 
-     {
 
-         for_gen(Init const& init_, Cond const& cond_, Step const& step_)
 
-             : init(init_), cond(cond_), step(step_) {}
 
-         template <typename Do>
 
-         typename expression::for_<Init, Cond, Step, Do>::type const
 
-         operator[](Do const& do_it) const
 
-         {
 
-             return
 
-                 expression::
 
-                     for_<Init, Cond, Step, Do>::
 
-                         make(init, cond, step, do_it);
 
-         }
 
-         Init init;
 
-         Cond cond;
 
-         Step step;
 
-     };
 
-     template <typename Init, typename Cond, typename Step>
 
-     inline
 
-     for_gen<Init, Cond, Step> const
 
-     for_(Init const& init, Cond const& cond, Step const& step)
 
-     {
 
-         return for_gen<Init, Cond, Step>(init, cond, step);
 
-     }
 
- }}
 
- #endif
 
 
  |