On 07/06/2010 05:35 AM, Shin Fujishiro wrote:
Can handles (optionally or necessarily) have low-level I/O primitives
like rawRead() and rawWrite()?
class SomeHandle
{
void open();
void close();
ByChunk byChunk(size_t n);
ByChar byChar();
size_t rawRead(ubyte[] buffer); // low-level input primitive
}
I think that's fine.
byChunk etc. would suffice for usual purposes. But sometimes we want
to read some user-defined structure from a handle. With the rawRead
primitive, I can create my own input range for reading a sequence of
variable-length packets from a handle:
ByPacket byPacket(SomeHandle handle);
// This input range uses rawRead() for reading Packets.
struct ByPacket
{
@property bool empty();
@property Packet front();
void popFront();
}
struct Packet
{
uint signature;
ubyte[] content;
uint checksum;
}
Agreed.
Andrei
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos