Proposal for SentinelInputRange
FG
home at fgda.pl
Thu Feb 28 11:02:17 PST 2013
On 2013-02-28 17:43, Walter Bright wrote:
> Consider the following code from lexer.c:
>
> p++;
> switch (*p)
>
> Written using an InputRange:
>
> popFront();
> switch (front)
>
> That code is INVALID. This is why a SentinelInputRange is necessary. You can't
> just use an InputRange in an invalid manner by convention.
>
I do not understand... Why make a special type of InputRange when you can
achieve exactly that with a normal string with an added extra '\0' at the end
and then use it without any calls to empty():
while(1) {
...
popFront();
switch(front) {
case '\0': return;
...
}
}
Cstrings are a very special case because we know the terminator beforehand and
the check is trivial CPU-wise.
More information about the Digitalmars-d
mailing list