On 12/31/2011 07:56 PM, Andrei Alexandrescu wrote:
On 12/31/11 10:47 AM, Michel Fortin wrote:
This means you can't look at the frontUnit and then decide to pop the
unit and then look at the next, decide you need to decode using
frontPoint, then call popPoint and return to looking at the front unit.
Of course you can.
while (condition) {
if (s.raw.front == someFrontUnitThatICareAbout) {
s.raw.popFront();
auto c = s.front;
s.popFront();
}
}
Now that I wrote it I'm even more enthralled with the coolness of the
scheme. You essentially have access to two separate ranges on top of the
same fabric.
Andrei
There is nothing wrong with the scheme on the conceptual level (except
maybe that .raw.popFront() lets you invalidate the code point range).
But making built-in arrays behave that way is like fitting a square peg
in a round hole. immutable(char)[] is actually what .raw should return,
not what it should be called on. It is already the raw representation.