deprecating std.stream, std.cstream, std.socketstream
Steven Schveighoffer
schveiguy at yahoo.com
Wed May 16 05:12:59 PDT 2012
On Tue, 15 May 2012 19:43:05 -0400, Sean Kelly <sean at invisibleduck.org>
wrote:
> One thing I'd like in a buffered input API is a way to perform
> transactional reads such that if the full read can't be performed, the
> read state remains unchanged. The best you can do with most APIs is to
> check for a desired length, but what I'd I don't want to read until a
> full line is available, and I don't know the exact length? Typically,
> you end up having to double buffer, which stinks.
My new design supports this. I have a function called readUntil:
https://github.com/schveiguy/phobos/blob/new-io2/std/io.d#L832
Essentially, it reads into its buffer until the condition is satisfied.
Therefore, you are not double buffering. The return value is a slice of
the buffer.
There is a way to opt-out of reading any data if you determine you cannot
do a full read. Just return 0 from the delegate.
-Steve
More information about the Digitalmars-d
mailing list