On 2020-09-22 15:17, Peter Dimov via Boost wrote:
This still doesn't make one approach a superset of the other though. You can feed Boost.JSON's push parser incrementally. A pull parser, being a pull one, reverses the flow of control and asks you (its stream) for data when you pull from it. Yes, it makes things like the above possible, but I don't think it entirely supersedes pull parsers.
I remember this being brought up before, so you may have a solution for the incremental case. A pull parser could f.ex. return token::need_input or something like that when it's starved, like a nonblocking socket. There'll still be a disconnect between its buffer size and the amount of incoming data though, unless I'm missing something.
https://github.com/breese/trial.protocol/tree/develop/example/json/chunked_p... The current limitation is that the buffer must be large enough to hold the largest string or number.