byChunk odd behavior?

Hanh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Mar 25 19:28:53 PDT 2016


On Friday, 25 March 2016 at 08:01:04 UTC, cym13 wrote:
>         // This consume
>         auto buffer3 = range.take(4).array;
>         assert(buffer3 == [0, 5, 10, 15]);
>     }

Thanks for your help. However the last statement is incorrect. I 
am in fact looking for a version of 'take' that consumes the 
InputRange.

You can see it by doing a second take afterwards.

     auto buffer3 = range.take(4).array;
     assert(buffer3 == [0, 5, 10, 15]);
     auto buffer4 = range.take(4).array;
     assert(buffer4 == [0, 5, 10, 15]);

I haven't clearly explained my main goal. I have a large binary 
file that I need to deserialize. It's not my file and it's in a 
custom but simple format, so I would prefer not to depend on a 
third party serializer library but I will look into that.

I was thinking around the lines of:
1. Open file
2. Map a byChunk.joiner to read by chunks and present an iterator 
interface
3. Read data with std.bitmanip/read functions

Step 3. works fine as long as items are single scalar values. 
bitmanip doesn't have array readers. Obviously, I could loop but 
then I thought that for the case of a ubyte[], there would be a 
shortcut that I don't know about.

Thanks,
--h



More information about the Digitalmars-d-learn mailing list