On Feb 13, 2017 10:25 AM, "Christof Donat via Boost"
wrote:
In a hobby project, I am using Spirit Karma generators. As far as I have
understood Spirit Karma, it is not designed to work lazily in the iterator
based interface. It takes an output iterator and writes to it until it has
finished.
What I am thinking of is a kind of generating range. E.g.:
for(auto& char:
generator_range(double_ << " + " << double_ << "i",
context, c.real(), c.imag())) {
// do whatever with the single characters returned by the generator
}
Is there something like that, which I simply have not found?
You should be able to build that with Boost.Coroutine. Launch the Karma
generator in a pull_type coroutine, which accepts a (corresponding)
push_type coroutine as its argument. A push_tyoe coroutine can be used as
an output iterator. Pass that iterator to Karma, and then lazily retrieve
characters from the pull_type coroutine.