Generic range to read array or a file as a phobos range

Andrea Fontana nospam at example.com
Fri Mar 15 09:40:25 PDT 2013


On Friday, 15 March 2013 at 16:11:38 UTC, bioinfornatics wrote:
> On Friday, 15 March 2013 at 14:40:17 UTC, Andrea Fontana wrote:
>> On Friday, 15 March 2013 at 14:31:43 UTC, bioinfornatics wrote:
>>> Dear,
>>>
>>> By using CTFE I try to get a generic range to read array or a 
>>> file as a phobos range. code hosted here: 
>>> http://dpaste.dzfl.pl/1f2bcf39
>>>
>>> that works fine for array but for a File instance .eof seem 
>>> to not return true a right time.
>>>
>>> Soemone could say what happen ?
>>>
>>> Thanks
>>
>> Have you tried to cache front() result and read next block on 
>> popFront()?
>
> that is ok. Just missed the \n the followed code should work 
> http://dpaste.dzfl.pl/1f2bcf39
>
> You are welcome to take it :)

int[] a = [ 0, 1, 1, 2, 3, 5, 8 ];
std.file.write("/tmp/filename", a);

File f = File("/tmp/filename", "r");
auto r = GenericRange!File(f,1);

r.filter!"a.length > 0 && a[0] != 0"().writeln;

output:
[[0], [0], [0], [0], [0], [0]]

but i think output expected is:
[[1], [1], [2], [3], [5], [8]]

Caching front() and reading buffer from popFront() did the trick 
for me.



More information about the Digitalmars-d-learn mailing list