string is rarely useful as a function argument

Timon Gehr timon.gehr at gmx.ch
Fri Dec 30 15:07:55 PST 2011


On 12/31/2011 12:00 AM, Andrei Alexandrescu wrote:
> On 12/30/11 4:01 PM, Walter Bright wrote:
>> On 12/30/2011 11:55 AM, Timon Gehr wrote:
>>> Me too. I think the way we have it now is optimal.
>>
>> Consider your X macro implementation. Strip out the utf.stride code and
>> use plain indexing - it will not break the code in any way. The naive
>> implementation still works correctly with ASCII and UTF-8.
>>
>> That's not true for any other multibyte encoding, which is why UTF-8 is
>> inspired genius.
>
> It's true for any encoding with the prefix property, such as Huffman.
>
> Using .raw is /optimal/ because it states the assumption appropriately.
> The user knows '$' cannot be in the prefix of any other symbol, so she
> can state the byte alone is the character. If that were a non-ASCII
> character, the assumption wouldn't have worked.
>
> So yeah, UTF-8 is great. But it is not miraculous. We need .raw.
>
>
> Andrei

auto raw(S)(S s) if(isNarrowString!S){
     static if(is(S==string)) return cast(ubyte[])s;
     else static if(is(S==wstring)) return cast(ushort[])s;
}


More information about the Digitalmars-d mailing list