Proposal for fixing dchar ranges

Steven Schveighoffer schveiguy at yahoo.com
Tue Mar 11 07:16:31 PDT 2014


On Tue, 11 Mar 2014 10:06:47 -0400, Dicebot <public at dicebot.lv> wrote:

> On Tuesday, 11 March 2014 at 14:04:38 UTC, Steven Schveighoffer wrote:
>> It would be O(1), work just like it does today.
>>
>> -Steve
>
> Today it works by allowing arbitrary index and not checking if resulting  
> slice is valid UTF-8. Anything that implies decoding is O(n). What  
> exactly do you have in mind for this?

Well, a valid improvement would be to throw an exception when the slice  
didn't start/end on a valid code point. This is easily checkable in O(1)  
time, but I wouldn't recommend it to begin with, it may have huge  
performance issues. Typically, one does not arbitrarily slice up via some  
specific value, they use a function to get an index, and they don't care  
what the index value actually is.

Alternatively, it could be done via assert, to disable it during release  
mode. This might be acceptable.

But I would never expect any kind of indexing or slicing to use "number of  
code points", which clearly requires O(n) decoding to determine it's  
position. That would be disastrous.

-Steve


More information about the Digitalmars-d mailing list