On Wed, 29 Dec 2010 01:01:09 -0500, Andrei Alexandrescu
<[email protected]> wrote:
On 12/28/10 10:57 AM, SHOO wrote:
(2010/12/28 16:02), Andrei Alexandrescu wrote:
I've put together over the past days an embryonic streaming interface.
It separates transport from formatting, input from output, and buffered
from unbuffered operation.
http://erdani.com/d/phobos/std_stream2.html
There are a number of questions interspersed. It would be great to
start
a discussion using that design as a baseline. Please voice any related
thoughts - thanks!
Andrei
I hope that this argument grows warm. For Phobos, the I/O is a very
important component.
I have some doubt about this interface.
1.
There seems to be it on the basis of the deriving.
In comparison with current std.stream, what will the advantage be?
With dynamically polymorphic interface, client code need not be
templated in order to accommodate any implementation of the interface.
Also, there is more opportunity for layering interface implemetations
during run time.
Consider this scenario:
stdout is currently implemented via C's FILE * to allow interleaving of C
output and D output. However, FILE * has some limitations that may hinder
performance. If you don't care about interleaving C and D I/O, you could
replace stdout with a D-based output stream to achieve higher
performance. But this is only possible if stdout is *runtime* switchable,
which means both the C-based stdout and the D-based stdout have a common
base and implement polymorphism.
I think the right call in I/O is to use interfaces/classes and not
compile-time interfaces.
-Steve