phobos / tango / ares
Frits van Bommel
fvbommel at REMwOVExCAPSs.nl
Sat Feb 10 03:51:41 PST 2007
> Sean Kelly wrote:
>> That said, I believe that the default output format can be called via:
>> Stdout( a, b, c );
>> or the "whisper" syntax:
>> Stdout( a )( b )( c );
> One thing that surprised me when trying out this, was that the buffer is
> never flushed automatically. Not even when outputting a '\n'. Not for
> small outputs anyway. I'm used to printf's unbuffered output, at least
> on windows. Stdout.formatln() does flush, so it might be safer to stick
> with that than to risk forgetting to flush when doing some 'printf
> debugging'. Just a thought.
> (I know about .newline and .flush.)
For Cout and Stdout, .opCall with no arguments is equivalent to
.flush(). It provides for a quite clean syntax to specify "please flush
now". Not perfect but quite usable. I don't think there's way to
determine, when using whisper syntax, when an appropriate time would be
to flush except if explicitly requested.
On a related note, one of the things that bothers /me/ is that no flush
is performed at the end of the program. That causes some or all of the
output to be missing if you don't explicitly flush after the last output.
I'd suggest adding the following to tango.io.Console:
static ~this ()
That would fix it, I think.
(Well, I could probably write some code that maintains indirect
references to Cout/Cerr from modules not importing tango.io.Console, but
above addition should fix it for *most* cases)
More information about the Digitalmars-d-learn