[phobos] UnbufferedFile, or, abstracting the File ranges
Lars Tandle Kyllingstad
lars at kyllingen.net
Tue May 11 09:31:35 PDT 2010
Do you mean byByte and byChunk?
-Lars
On Tue, 2010-05-11 at 08:16 -0700, Andrei Alexandrescu wrote:
> I think these could be actually byByte and byLine.
>
> Regarding your initial question - generally the range defintion
> "belongs" to the file/container as it has intimate contact with it. You
> could find incidental commonality and exploit it, but conceptually they
> should appear as independent types.
>
>
> Andrei
>
> Lars Tandle Kyllingstad wrote:
> > Well, that would at least mean less work for me. :)
> >
> > Which I/O methods should it contain, then, in your opinion? Would
> >
> > bool read(ref ubyte b);
> > size_t read(ref ubyte[] b);
> > void write(ubyte b);
> > void write(ubyte[] b);
> >
> > suffice?
> >
> > -Lars
> >
> >
> >
> > On Mon, 2010-05-10 at 05:02 -0700, Steve Schveighoffer wrote:
> >> Re: byLine and byChunk, I don't think these are a good idea on
> >> unbuffered files.
> >>
> >> For example, your current implementation will be extremely slow.
> >> Reading one char at a time is OK on a buffered file, because most
> >> times its just a simple fetch of a char from a buffer. But your
> >> implementation reads a single character at a time from the actual file
> >> on disk, a very slow operation.
> >>
> >> I think unbuffered files are good for when you want to handle the
> >> buffering yourself, or when you want to pass them to child processes.
> >>
> >> -Steve
> >>
> >>
> >>
> >>
> >> ______________________________________________________________________
> >> From: Lars Tandle Kyllingstad <lars at kyllingen.net>
> >> To: Phobos mailing list <phobos at puremagic.com>
> >> Sent: Mon, May 10, 2010 7:40:15 AM
> >> Subject: [phobos] UnbufferedFile, or, abstracting the File ranges
> >>
> >> In the process of designing std.process it has become obvious, as
> >> pointed out by Steve, that Phobos needs facilities for unbuffered I/O.
> >> To that end, I've started writing an UnbufferedFile type, the current
> >> status of which can be seen here:
> >>
> >> Code:
> >> http://github.com/kyllingstad/ltk/blob/master/ltk/stdio.d
> >> Docs: http://kyllingen.net/code/ltk/doc/stdio.html
> >>
> >> (Disclaimer: This is very much a work-in-progress, there's lots of
> >> stuff
> >> that needs to be added yet, and I'd be surprised if there wasn't lots
> >> of
> >> room for improvement, performance-wise.)
> >>
> >>
> >> Now, while writing this it has kind of annoyed me that I have to write
> >> new implementations of the byLine and byChunk ranges. I've personally
> >> found them incredibly useful, so I want them in UnbufferedFile, but
> >> the
> >> ones in std.stdio are tailored for File.
> >>
> >> I therefore suggest we try to abstract these ranges, so they can
> >> operate
> >> on general types that define a set of primitives such as read(),
> >> readc()
> >> and readln().
> >>
> >> Are there problems with this? Any comments?
> >>
> >> -Lars
> >>
> >> _______________________________________________
> >> phobos mailing list
> >> phobos at puremagic.com
> >> http://lists.puremagic.com/mailman/listinfo/phobos
> >>
> >>
> >> _______________________________________________
> >> phobos mailing list
> >> phobos at puremagic.com
> >> http://lists.puremagic.com/mailman/listinfo/phobos
> >
> >
> > _______________________________________________
> > phobos mailing list
> > phobos at puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/phobos
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list