TDPL reaches Thermopylae level

Jeremie Pelletier jeremiep at gmail.com
Mon Oct 26 16:05:44 PDT 2009


Andrei Alexandrescu wrote:
> Jeremie Pelletier wrote:
>> Andrei Alexandrescu wrote:
>>> Bill Baxter wrote:
>>>> On Mon, Oct 26, 2009 at 8:47 AM, Jeremie Pelletier 
>>>> <jeremiep at gmail.com> wrote:
>>>>> Andrei Alexandrescu wrote:
>>>>>> 303 pages and counting!
>>>>>>
>>>>>> Andrei
>>>>> Soon the PI level, or at least 10 times PI!
>>>>>
>>>>
>>>> A hundred even. ;-)
>>>
>>> Coming along. I'm writing about strings and Unicode right now. I was 
>>> wondering what people think about allowing concatenation (with ~ and 
>>> ~=) of strings of different character widths. The support library 
>>> could do all of the transcoding.
>>>
>>> (I understand that concatenating an array of wchar or char with a 
>>> dchar is already in bugzilla.)
>>>
>>>
>>> Andrei
>>
>> I don't know if thats a good idea, its better when string encoding is 
>> explicit so you know where your reallocations are.
> 
> The beauty of it is that reallocation with ~ occurs anyway, and with ~= 
> is anyway imminent, regardless of the character width you're reallocating.
> 
> Allowing concatenation of strings of different widths is a nice way of 
> acknowledging at the language level that all character widths are 
> encodings of abstract characters.
> 
>> ie if I know some routine will have to convert a utf16 parameter to 
>> utf8 to append it to a string, then ill try and either make it output 
>> utf16 or input utf8. If its implicit its much harder to find and 
>> optimize these cases.
>>
>> to!string() is easy enough to use anyways.
>>
>> But it could be good to add a range type that does this with multiple 
>> opAppend/opAppendAssign overloads.
> 
> One problem with
> 
> s ~= to!string(someDstring);
> 
> is that it does two allocations instead of one.
> 
> 
> Andrei

Good points, I didn't think of the separation between characters and 
encodings or the extra allocation from to.

You have my vote for this feature then!

Jeremie



More information about the Digitalmars-d mailing list