My take is that these suggestions all address legitimate problems, and are
well worth serious consideration.
Numbers 1,2,3 and 5 don't look like they would introduce any
incompatibilities with applications and I think that we should just put them
in.
Number 4 I agree with, but yanking the constructor is a breaking change. My
guess is the DOMString(int) constructor hasn't had much use and that making
the change would be OK. You're certainly right that it's confusing as it
stands.
-- Andy
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, January 12, 2000 5:41 PM
Subject: DOMString (was: xalan-c Problem with Xerces initialization)
>
> If we're going to change DOMString around, here's my wish-list. Most are
> for performance. Some are to make DOMString more regular as an ADT. I've
> prototyped all of them locally.
>
>
> 1) Move DOMString operator + (const DOMString &other) to be a helper
> function rather than a member, i.e. operator+(const DOMString& lhs, const
> DOMString& rhs). Then add overloads of operator+ to work symmetrically
> with XMLCh*, i.e. operator+(const DOMString& lhs, const XMLCh *rhs) and
> operator+(const XMLCh* lhs, const DOMString& rhs). In general, try to get
> the operators to work symmetrically with DOMString and XMLCh*, since an
> application that uses both SAX and DOM (like Xalan) often needs to them
> together in a calculation. In most cases, an overloaded method that works
> with both XMLCh* and DOMString can do the job much faster than one that
> needs to convert to temporary DOMString's.
>
> 2) Add a member appendData() overloaded to append a single XMLCh.
> Currently, doing this requires temporary conversion to DOMString's, a big
> waste. Also, operator+=() would be nice.
>
> 3) Make the DOMString(const char*) constructor either be explicit, or make
> it be a non-member transcoding utility.
>
> 4) Also, the DOMString(int) constructor is a mental trap, since
programmers
> will sometimes think this does an itoa conversion. Also, because
> characters are integral types, something like DOMString('A') does not work
> like it looks. In fact, the std::base_string<>(int) constructor was
> purposely left out of the standard string class because of
> these common confusions. Instead, I'd rather have a member called reserve
> () or something similar.
>
> 5) It would be nice to have a reset() method. I see that the Xerces code
> sometimes just assigns the old DOMString a literal 0. But that kicks off
> the DOMString(int) constructor and then an assignment. I bet a
> DOMString.reset() method would be much faster, avoiding the temporary
> DOMString.
>
>
>
>
>