std.serialization: pre-voting review / discussion

Tyler Jameson Little beatgammit at gmail.com
Mon Aug 19 07:21:44 PDT 2013


On Monday, 19 August 2013 at 13:31:27 UTC, Jacob Carlborg wrote:
> On 2013-08-19 15:03, Dicebot wrote:
>
>> Great! Are there any difficulties with the input?
>
> It just that I don't clearly know how the code will need to 
> look like, and I'm not particular familiar with implementing 
> range based code.

Maybe we need some kind of doc explaining the idiomatic usage of 
ranges?

Personally, I'd like to do something like this:

     auto archive = new XmlArchive!(char); // create an XML archive
     auto serializer = new Serializer(archive); // create the 
serializer
     serializer.serialize(foo);

     pipe(archive.out, someFile);

Where pipe would read from the left and write to the right. My 
idea for an implementation is through using take():

     void pipe(R) (R input, File output) // isInputRange(R)...
     {
         while (!input.empty) {
             // if Serializer has no data cached, goes through one 
step
             // and returns what it has
             auto arr = input.take(BUF_SIZE);
             input.popFrontN(arr.length);
             output.write(arr);
         }
     }

For now, I'd be happy for serializer to process all data in 
serialize(), but change the behavior later to do step through 
computation when calling take().

I don't know if this helps, and others are very likely to have 
better ideas.


More information about the Digitalmars-d mailing list