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

Reply via email to