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