I'm about to commit a version of DOMString with many of the changes that
have been discussed in this thread, but not all, at least not yet.

Differences from Robert's original list (the message that started this
thread) are these:

o  I did not remove the DOMString(char *) constructor.  There's
   just too much use of it, much of it in code outside of my
   control.

   I did add the new member function (Robert's suggestion)
        static DOMString  DOMString::transcode(char *)
   which does the same thing but lets you be explicit about it.
   And is nicely symmetric with the existing transcode().

o  DOMString::DOMString(size_t), for reserving buffer space, is removed.
   But an overloaded constructor taking(int) remains, to avoid
   breaking java-like code of the form
          someDOMString = null;
   There is enough usage of this construct that I prefer not to
   break it, and, for better or worse, these DOM bindings do try
   to be as compatible as reasonably possible with the Java.

   Overloading on DOMNullPointer * doesn't work in this case because
   it is ambiguous when null is defined to be 0.

   The new overload is documented as being for handling nulls only,
   and the implementation has an assert check for the passed value
   being null.  Not as nice as catching problems at compile time,
   but better than nothing.


o  Erase() isn't in.  I think that it should be, but am unsure
   of the name.  DOMString already has deleteData(), taken from
   the CharacterData interface in the W3C DOM spec, along with
   appendData().  Maybe a no-parameters overload of this would
   be better.

o  The XMLStrL is not in.  I'd like to see something like it,
   but I don't think that I fully understand everything about
   this problem yet.  I'm also a little worried about having a
   function whose efficiency of operation can not be known by
   a developer -    it could be a compile time constant or an
   expensive call to a transcoding service.

The rest is there, including all of the proposed overloads of + and +=,
and a fix to appendData() to make it work efficiently with strings
with reserved buffer space.

  -- Andy


Reply via email to