[webkit-dev] some WebCore::String plans

Darin Adler darin at apple.com
Tue Dec 18 18:27:20 PST 2007

On Dec 18, 2007, at 6:19 PM, Maciej Stachowiak wrote:

>> clarity
>> - eliminate functions that return a StringImpl* from StringImpl,  
>> because it's to easy to misunderstand and think these modify the  
>> string in place
>> - eliminate functions that return a String from String -- also easy  
>> to use wrong for the same reasons
> Where would we put functions that take a string and return a  
> modified one? Seems like we'll still want those, if our string type  
> becomes truly immutable.

I was thinking they could be free functions that return a  
PassRefPtr<StringImpl>. That seems like a wart -- not sure where these  
should go.

>> performance
>> - change TextStream into a class named StringBuilder for clients  
>> that are building up strings (name inspired by Java); it will have  
>> get() and release() functions that will return PassRefPtr<StringImpl>
> I kind of like the += syntax for a StringBuilder better than the <<  
> syntax, but I guess that's harder to use if there's no operator+.

I like += better too. We don't necessarily need to keep the << syntax.  
Or we could have both.

> It seems like the obvious implementation techniques are making a  
> Vector<UChar> and appending to it, or keeping a Vector<StringImpl>,  
> neither of those would play well with a non-releasing get().

I was thinking of Vector<UChar>. The release() function would use the  
adopt function that takes a Vector<UChar>.

The get() is less important. It should probably be named copy() instead.

>> - rename StringImpl to SharedString
>> - consider renaming WebCore::String to StringRefPtr since it's a  
>> lightweight wrapper around a RefPtr; one benefit is that it would  
>> allow us to eliminate the header name PlatformString.h
> If you did both of those things, a better name for SharedString  
> might be String.

I think you are right.

     -- Darin

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.webkit.org/pipermail/webkit-dev/attachments/20071218/d6219202/attachment.html

More information about the webkit-dev mailing list