[phobos] Fw: phobos commit, revision 1930
Andrei Alexandrescu
andrei at erdani.com
Thu Aug 26 10:29:40 PDT 2010
Damn, sorry. Will do.
Andrei
On 8/26/10 10:27 PDT, Steve Schveighoffer wrote:
> GAH! I did it again!
>
> Andrei, stop replying to all :)
>
> -Steve
>
>
>
> ----- Forwarded Message ----
>> From: Steve Schveighoffer<schveiguy at yahoo.com>
>> To: Andrei Alexandrescu<andrei at erdani.com>
>> Sent: Thu, August 26, 2010 1:24:43 PM
>> Subject: Re: [phobos] phobos commit, revision 1930
>>
>> No, I want to be able to use static arrays as a buffer. This allows nifty
>> things like using the stack if possible, and reallocating if you go beyond the
>>
>> stack buffer size.
>>
>> BTW, capacity already returns 0 for these.
>>
>> It's immutable *literals* that I want to disallow. Can we get a function to
>> determine if a string is a literal vs a stack or heap-allocated value?
>>
>> On that topic a bit, calling clear on an Appender!string allows you to
>> overwrite
>>
>> immutable data. Do we care too much? I think we can just mark the clear
>> function as @system and call it a day...
>>
>> -Steve
>>
>>
>>
>> ----- Original Message ----
>>> From: Andrei Alexandrescu<andrei at erdani.com>
>>> To: Discuss the phobos library for D<phobos at puremagic.com>
>>> Cc: Steve Schveighoffer<schveiguy at yahoo.com>
>>> Sent: Thu, August 26, 2010 1:18:25 PM
>>> Subject: Re: [phobos] phobos commit, revision 1930
>>>
>>> Walter, Sean, could we arrange such that capacity of static arrays
>>> yields zero?
>>>
>>> Andrei
>>>
>>> On 8/26/10 10:16 PDT, Steve Schveighoffer wrote:
>>>> The constructor uses arr.capacity to determine how much it can append.
>>> >
>>>> assumeSafeAppend will ensure that arr.capacity is as large as possible,
>> so
>>
>>> yes,
>>>> calling before creating the Appender will maximize the capacity,
>> regardless
>>
>>> of
>>>> whether it will stomp or not.
>>>>
>>>> One thing that Appender will do, which is bad, but I'm not sure we need
>> to
>>
>>> care,
>>>> it can be given a string literal, and then try to write over the string
>>> literal
>>>> like this:
>>> >
>>>> auto app = appender("hello");
>>>> // app.put('c'); // this would be ok
>>>> app.clear();
>>>> app.put('c'); // segfault on Linux
>>>>
>>>> I'm not sure how to get around this. I thought of checking the heap to
>> see
>>
>>> if
>>>> it owns the pointer, but then you disallow useful things like using a
>>>> stack-allocated buffer. I think this case may be uncommon enough to not
>
>>> care.
>>>>
>>>> -Steve
>>>>
>>>>>
>>>>> From: David Simcha<dsimcha at gmail.com>
>>>>> To: Discuss the phobos library for D<phobos at puremagic.com>
>>> >> Sent: Thu, August 26, 2010 1:10:31 PM
>>>>> Subject: Re: [phobos] phobos commit, revision 1930
>>>>>
>>> >> Nice work. One small question/possible feature request, though: Will
>
>>> calling
>>>>> assumeSafeAppend() on an array before constructing an Appender using it
>>
>>> prevent
>>> >
>>>>> it from being reallocated on the first append? If not, can Appender
>> have
>>
>>> some
>>>>> kind of assumeSafeAppend workaround in it?
>>>>
>>>>
>>>>
>>> > _______________________________________________
>>>> phobos mailing list
>>>> phobos at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>>
>>
>>
>>
>>
>
>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list