| // Copyright (c) 2001-2009 Hartmut Kaiser |
| // Copyright (c) 2001-2007 Joel de Guzman |
| // |
| // 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(SPIRIT_KARMA_SEQUENCE_FEB_28_2007_0249PM) |
| #define SPIRIT_KARMA_SEQUENCE_FEB_28_2007_0249PM |
| |
| #if defined(_MSC_VER) && (_MSC_VER >= 1020) |
| #pragma once // MS compatible compilers support #pragma once |
| #endif |
| |
| #include <boost/spirit/home/support/unused.hpp> |
| |
| namespace boost { namespace spirit { namespace karma { namespace detail |
| { |
| template <typename OutputIterator, typename Context, typename Delimiter> |
| struct sequence_generate |
| { |
| sequence_generate(OutputIterator& sink_, Context& context_, |
| Delimiter const& delim_) |
| : sink(sink_), ctx(context_), delim(delim_) |
| { |
| } |
| |
| template <typename Component, typename Parameter> |
| bool operator()(Component const& component, Parameter& p) |
| { |
| // return true if any of the generators fail |
| typedef typename Component::director director; |
| return !director::generate(component, sink, ctx, delim, p); |
| } |
| |
| template <typename Component> |
| bool operator()(Component const& component) |
| { |
| // return true if any of the generators fail |
| typedef typename Component::director director; |
| return !director::generate(component, sink, ctx, delim, unused); |
| } |
| |
| OutputIterator& sink; |
| Context& ctx; |
| Delimiter const& delim; |
| }; |
| |
| }}}} // namespace boost::spirit::karma::detail |
| |
| #endif |