deprecating std.stream, std.cstream, std.socketstream

Steven Schveighoffer schveiguy at yahoo.com
Wed May 16 08:57:57 PDT 2012


On Wed, 16 May 2012 11:48:32 -0400, Dmitry Olshansky  
<dmitry.olsh at gmail.com> wrote:

> On 16.05.2012 19:32, Steven Schveighoffer wrote:
>> On Wed, 16 May 2012 11:19:46 -0400, Robert Clipsham
>> <robert at octarineparrot.com> wrote:
>>> A bit ugly but:
>>> ----
>>> // Default to 4 byte chunks
>>> auto range = myStream.byChunks(4);
>>> foreach (chunk; range) {
>>> // Set the next chunk is 3 bytes
>>> // Chunk after is 4 bytes
>>> range.nextChunkSize = 3;
>>>
>>> // Next chunk is always 5 bytes
>>> range.chunkSize = 5;
>>> }
>>
>> Yeah, I've seen this before. It's not convincing.
>>
>
> Yes, It's obvious that files do *not* generally follow range of items  
> semantic. I mean not even range of various items.
> In case of binary data it's most of the time header followed by various  
> data. Or hierarchical structure. Or table of links + raw data.
> Or whatever. I've yet to see standard way to deal with binary formats :)

The best solution would be a range that's specific to your format.  My  
solution intends to support that.

But that's only if your format fits within the "range of elements" model.

Good old fashioned "read X bytes" needs to be supported, and insisting you  
do this range style is just plain wrong IMO.

-Steve


More information about the Digitalmars-d mailing list