Thread overview
There is not std.stdio.flush
Jul 20, 2009
Haruki Shigemori
Jul 20, 2009
Ary Borenszweig
Jul 20, 2009
BCS
Jul 20, 2009
Haruki Shigemori
Jul 20, 2009
torhu
July 20, 2009
Hi.

The std.cstream.dout has a member function dout.flush.
But the std.stdio has not a function flush or a similar function.
Why? Don't you want to have it?
Give me the std.stdio.flush!
July 20, 2009
Haruki Shigemori wrote:
> Hi.
> 
> The std.cstream.dout has a member function dout.flush.
> But the std.stdio has not a function flush or a similar function.
> Why? Don't you want to have it?
> Give me the std.stdio.flush!


All the write functions in std.stdio (write, writeln, writef, writefln) flush automatically, so there is no need for a separate flush function.

-Lars
July 20, 2009
Lars T. Kyllingstad wrote:
> Haruki Shigemori wrote:
>> Hi.
>>
>> The std.cstream.dout has a member function dout.flush.
>> But the std.stdio has not a function flush or a similar function.
>> Why? Don't you want to have it?
>> Give me the std.stdio.flush!
> 
> 
> All the write functions in std.stdio (write, writeln, writef, writefln) flush automatically, so there is no need for a separate flush function.
> 
> -Lars


Sorry, my mistake. It seems only writef and writefln flush automatically. :(

-Lars
July 20, 2009
2009/7/20 Haruki Shigemori <rayerd.wiz@gmail.com>:
> Hi.
>
> The std.cstream.dout has a member function dout.flush.
> But the std.stdio has not a function flush or a similar function.
> Why? Don't you want to have it?
> Give me the std.stdio.flush!

You don't need it.  Just import std.c.stdio and fflush(stdout).
July 20, 2009
Lars T. Kyllingstad wrote:
> Lars T. Kyllingstad wrote:
>> Haruki Shigemori wrote:
>>> Hi.
>>>
>>> The std.cstream.dout has a member function dout.flush.
>>> But the std.stdio has not a function flush or a similar function.
>>> Why? Don't you want to have it?
>>> Give me the std.stdio.flush!
>>
>>
>> All the write functions in std.stdio (write, writeln, writef, writefln) flush automatically, so there is no need for a separate flush function.
>>
>> -Lars
> 
> 
> Sorry, my mistake. It seems only writef and writefln flush automatically. :(

I don't think so. If I run my code in the Eclipse console it doesn't flush automatically and I have to do fflush(stdout). I think it depends on the console implementation.
July 20, 2009
Ary Borenszweig wrote:
> Lars T. Kyllingstad wrote:
>> Lars T. Kyllingstad wrote:
>>> Haruki Shigemori wrote:
>>>> Hi.
>>>>
>>>> The std.cstream.dout has a member function dout.flush.
>>>> But the std.stdio has not a function flush or a similar function.
>>>> Why? Don't you want to have it?
>>>> Give me the std.stdio.flush!
>>>
>>>
>>> All the write functions in std.stdio (write, writeln, writef, writefln) flush automatically, so there is no need for a separate flush function.
>>>
>>> -Lars
>>
>>
>> Sorry, my mistake. It seems only writef and writefln flush automatically. :(
> 
> I don't think so. If I run my code in the Eclipse console it doesn't flush automatically and I have to do fflush(stdout). I think it depends on the console implementation.


That's weird, and probably a bug somewhere. This is the definition of File.writeln() from the latest Phobos:

    void writeln(S...)(S args)
    {
        write(args, '\n');
        .fflush(p.handle);
    }

where p.handle is the FILE* pointer.

-Lars
July 20, 2009
Jarrett Billingsley wrote:
> 2009/7/20 Haruki Shigemori <rayerd.wiz@gmail.com>:
>> Hi.
>>
>> The std.cstream.dout has a member function dout.flush.
>> But the std.stdio has not a function flush or a similar function.
>> Why? Don't you want to have it?
>> Give me the std.stdio.flush!
> 
> You don't need it.  Just import std.c.stdio and fflush(stdout).

uhmm...
I think std.c.stdio is a port of the C language library,
std.stdio must has flush or fflush as the D language library.
July 20, 2009
Reply to Lars,

> Haruki Shigemori wrote:
> 
>> Hi.
>> 
>> The std.cstream.dout has a member function dout.flush.
>> But the std.stdio has not a function flush or a similar function.
>> Why? Don't you want to have it?
>> Give me the std.stdio.flush!
> All the write functions in std.stdio (write, writeln, writef,
> writefln) flush automatically, so there is no need for a separate
> flush function.

IIRC writef only forces a flush on a newline.


July 20, 2009
On 20.07.2009 17:01, Haruki Shigemori wrote:
> uhmm...
> I think std.c.stdio is a port of the C language library,
> std.stdio must has flush or fflush as the D language library.

It's not a port, it _is_ the std C library. std.stdio just adds functionality on top of what C provides.  That's what Phobos IO is, it's meant to be possible to use it interchangeably with C IO.

Tango IO is different, it uses the lowlevel OS APIs instead.