Proposal for SentinelInputRange

Steven Schveighoffer schveiguy at yahoo.com
Thu Feb 28 06:53:07 PST 2013


On Thu, 28 Feb 2013 09:48:02 -0500, Jacob Carlborg <doob at me.com> wrote:

> On 2013-02-28 15:31, Steven Schveighoffer wrote:
>
>> while(!r.empty)  // inlined to r.front != 0
>> {
>>     switch(r.front) // why would another load occur here?
>>     {
>>        // no need to check for 0, already done
>>        ...
>>     }
>> }
>
> Don't you have to check for 0 anyway. You could still have more data in  
> the buffer? I doesn't have to be the manually added sentential that is  
> encountered.

You are missing the point.  Empty is DEFINED as r.front == 0.  Adding a  
check for 0, would essentially lead to dead code (and technically, the  
compiler could trim it out).

An important thing about a sentinel input range is that it is not an array  
-- you cannot maintain or process length, because length is defined by the  
sentinel.  This becomes an advantage when your goal is simply to process  
every element -- no time wasted updating length.

-Steve


More information about the Digitalmars-d mailing list