blob: 56b4a74ad91c08766fbce4c2f1627bd5f1e4ba91 [file] [log] [blame]
// 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