buffered input
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sun Feb 6 15:57:44 PST 2011
On 2/6/11 4:13 PM, Nick Sabalausky wrote:
> "Andrei Alexandrescu"<SeeWebsiteForEmail at erdani.org> wrote in message
> news:iimnm6$1m4a$2 at digitalmars.com...
>> On 2/6/11 12:42 PM, spir wrote:
>>> Also: could a (truely) circular buffer help& solve the above copy
>>> problem, concretely?
>>
>> Not if you want infinite lookahead, which I think is what any modern
>> buffering system should offer.
>>
>
> Agreed, but not everything always needs infinite lookahead. And sometimes
> space guarantees are important.
If you don't use infinite lookahead you won't consume infinite memory.
You stand to consume more memory though but I believe we're not supposed
to optimize for that.
To implement O(n) buffering for n elements of lookahead you can use the
circular buffer already present in std.range as backend, coupled with
routines to replenish it. The disadvantage is that the client doesn't
see true T[] buffers, it sees lookalike random-access ranges that use
modulo operations for indexing. All in all this is an abstraction worth
providing but not as general as discardFromFront() and appendToFront().
Andrei
More information about the Digitalmars-d
mailing list