Stream Proposal
Steven Schveighoffer
schveiguy at yahoo.com
Mon Mar 14 05:34:20 PDT 2011
On Fri, 11 Mar 2011 21:29:42 -0500, dsimcha <dsimcha at yahoo.com> wrote:
> The discussion we've had here lately about reading gzipped files has
> proved
> rather enlightening. I therefore propose the following high-level
> design for
> streams, with the details to be filled in later:
>
> 1. Streams should be built on top of input and output ranges. A stream
> is
> just an input or output range that's geared towards performing I/O
> rather than
> computation. The border between what belongs in std.algorithm vs.
> std.stream
> may be a bit hazy.
No. You will find when you go to implement this that it's awkward and
low-performing.
>
> 2. Streams should be template based/structs, rather than virtual
> function
> based/classes. This will allow reference counting for expensive
> resources,
> and allow decorators to be used with zero overhead. If you need runtime
> polymorphism or a well-defined ABI, you can wrap your stream using
> std.range.inputRangeObject and std.range.outputRangeObject.
This will have a viral effect on anything that uses an input/output
stream, making everything a template. Streams happen to be one of the
main types that scream "please, use polymorphism for me!"
For example, how would you easily replace stdin to be a network stream?
/me must get going on stream library before it's too late...
-Steve
More information about the Digitalmars-d
mailing list