P.P.S.  It's not overly hard to write an alternative version of
std.stdio.chunks that returns a real range. Something like this should
do:

        // Warning: untested code
        auto realChunks(File f, size_t blockSize)
        {
                static struct Result
                {
                        private File f;
                        private ubyte[] buffer;
                        bool empty = true;
                        ubyte[] front;

                        this(File _f, size_t blockSize)
                        {
                                f = _f;
                                buffer.length = blockSize;
                                empty = false;
                                popFront();
                        }
                        void popFront()
                        {
                                front = f.rawRead(buffer);
                                if (front.length == 0)
                                        empty = true;
                        }
                }
                return Result(f, blockSize);
        }


T

-- 
A program should be written to model the concepts of the task it performs 
rather than the physical world or a process because this maximizes the 
potential for it to be applied to tasks that are conceptually similar and, more 
important, to tasks that have not yet been conceived. -- Michael B. Allen

Reply via email to