Adding a read primitive to ranges
    Freddy via Digitalmars-d 
    digitalmars-d at puremagic.com
       
    Mon May  4 17:50:43 PDT 2015
    
    
  
On Monday, 4 May 2015 at 23:20:57 UTC, Alex Parrill wrote:
> On Monday, 4 May 2015 at 19:23:08 UTC, Freddy wrote:
>> On Monday, 4 May 2015 at 15:16:25 UTC, Alex Parrill wrote:
>>
>> The ploblem is that all the functions in 
>> std.range,std.algorithm and many other wrappers would ignore 
>> byChucks and produce much slower code.
>
> How so? `file.byChunks(4096).joiner` is a range that acts as if 
> you read each byte out of the file one at a time, but actually 
> reads them in 4096-byte buffers. It's still compatible with all 
> of the range and algorithm functions.
Reading an arbitrary number of data after being wrapped.
For example
----
void func(R)(R range){//expects range of strings
     string[] elms=range.read(5);
     string[] elms2=range.read(9);
     /++..++/
}
void caller(){
     auto file=...;//unbuffered file
     file.map!(a=>a.to!string).func();
}
----
Using byChucks would cause much more reallocation.
    
    
More information about the Digitalmars-d
mailing list