Boost logo

Boost :

Subject: Re: [boost] Lazy Spirit Generators?
From: Nat Goodspeed (nat_at_[hidden])
Date: 2017-02-14 03:05:46


On Feb 13, 2017 10:25 AM, "Christof Donat via Boost" <boost_at_[hidden]>
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.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk