Hi Masa, everyone,
Yes please. ByChunk should be a range. Please commit the proposed
change. We can then discuss further generalizations.
Andrei
On 5/30/10 2:44 PDT, Masahiro Nakagawa wrote:
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
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos