Proposal for SentinelInputRange

deadalnix deadalnix at gmail.com
Wed Feb 27 20:24:57 PST 2013


On Thursday, 28 February 2013 at 01:12:19 UTC, Walter Bright 
wrote:
> A SentinelInputRange is an InputRange with the following 
> additions:
>
> 1. a compile time property 'sentinel' that is the terminating 
> value of the range
> 2. empty is defined as: empty = (front == sentinel)
> 3. it is not necessary for empty to be called before front
>
> A C style 0-terminated string is an example of a 
> SentinelInputRange.
>
> The additions to std.range would be:
>
> 1. isSentinelInputRange(T) which returns true if T is a 
> SentinelInputRange
> 2. a unittest
> 3. documentation of this
>
> An addition to std.string would be a function that takes a 
> char* and returns a SentinelInputRange.
>
> Motivation:
> 1. easy conversion of C strings to ranges
> 2. necessary for a fast implementation of a lexer
>
> Any takers?

Can you explain what it does buy us ? Is it faster to check for 
the sentinel value that to check for emptiness ?

Is it really handy in generic code ? For instance, if I use a 
switch, the actual sentinel value may be conflicting with other 
element in the switch. How does this kind of problem are solved ? 
Do they are problems in the first place ?


More information about the Digitalmars-d mailing list