[phobos] std.stdio : ByChunk for File
Masahiro Nakagawa
repeatedly at gmail.com
Sun May 30 02:44:32 PDT 2010
File has byChunk method that returns chunks but chunks isn't Range.
So, Range can't treat chunks.
I want chunks of Range version like ByLine(and I hope byChunk returns
ByChunk).
Following code is a simple implementation.
-----
/**
* Range that reads a chunk at a time.
*/
struct ByChunk
{
private:
File file_;
ubyte[] chunk_;
public:
this(File file, size_t size)
in
{
assert(size, "size must be larger than 0");
}
body
{
file_ = file;
chunk_ = new ubyte[](size);
popFront();
}
/// Range primitive operations.
@property bool empty() const
{
return !file_.isOpen;
}
/// ditto
@property ubyte[] front()
{
return chunk_;
}
/// ditto
void popFront()
{
enforce(file_.isOpen);
chunk_ = file_.rawRead(chunk_);
if (!chunk_.length)
file_.detach();
}
}
-----
What do you think?
Masahiro
More information about the phobos
mailing list