> -----Original Message----- > From: Andy Heninger [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 11, 2000 7:52 PM > To: [EMAIL PROTECTED] > Subject: Re: xalan-c Problem with Xerces initialization > > > Rob Weir comments > > > > > Having a static foo("hello world") > > seems innocuous enough. Any other string class would allow > it. Since > > DOMString is the way strings are exposed by the Xalan API, > users of Xalan > > will be programming with DOMString. How do we prevent them > from using > > static DOMString? Of course, we know why this is bad. But will the > > average user know this? > > I don't know a good answer to this problem. An earlier > version of our code > did attempt to support this, and over and over we had people > who had botched > the installation of the transcoding service, which caused an > error during > static construction, which there was no good way to report. > And no way for > applications to catch any exception thrown. (The static > foo("hello world") > constructor does need to transcode the string from (char *) > in the system > default code page to Unicode.) >
The simple answer is to take transcode() out of DOMString. [Take out print() and println() while you're at it.] A string class should just be a container for char or wchar_t. Transcoding and printing are functions to be applied to containers. You might want to consider moving to wstring in place of DOMString. (You knew that was coming ;-)) > > > > > In any case, we're going to bypass the whole issue in our > code by using > > static wide-character literal strings instead of DOMString's. This > depends > > on XMLCh being the same as wchar_t, which I understand is > in the works. > > > > Yes, this change is almost there. It's in the set of stuff > that we are > currently checking out; once everything appears to be stable > on all the > platforms, it'll go back into CVS. XMLCh will be settable to > either wchar_t > or unsigned short by a build option, with wchar_t being the default. > > It does turn out, however, that there are some portability > problems with > wchar_t literal strings. On some platforms (HP), they > apparently do no > always generate Unicode values, but can generate something > that depends on > the current locale. I don't fully understand this yet, but > we are trying to > better understand the problem. > > -- Andy > > -joe