Ok, so the 1.1.0 code has gone golden and I've checked in the code I've been working on locally for a few weeks. These changes are pretty extensive, and I definitely have broken the non-Win32 builds because I've added files and renamed files. We'll straighten these out as soon as we can. I didn't list the changes in the log comment because it would have been quite large. Here are the changes I made: The NodeType of the ContentSpecNode class should have a defined 'Unknown' type instead of faking in a -1 value. Add a cleanup method to XMLPlatformUtils, for those folks who want to be responsible for calling it. Provide a mechanism where higher level code can register lazily evaluated data for cleanup during this termination call (Note that this registration mechanism has not been made full use of in all of the code yet.) Implement the Locator scheme for SAX. Have ReaderMgr implement the Locator interface, and have the SAXParser pass it out through the SAX setDocumentLocator() method duirng the startDocument() internal event. Optimize the XMLAttr class by keeping up with the current string member sizes and just reusing them if they are long enough for the new values. Add a -n option to most of the samples, to enable namespaces. Don't bother on some of the more trivial ones. Fix an error where XMLScanner::parseNext() was falling through on an exception instead of return a failure. Get rid of all uses of the term "XML4C" from the source code. Update all of the files to use either just plain "XML" or "Xerces" as appropriate. Inline a few of the XMLString statics that are very highly travelled, and optimize them heavily, to improve performance. The calls that are checking how deep the reader stack is should be changed to use a new getReaderDepth() method instead of the old getCurrentReaderNum() because the reader number is now a unique sequentially assigned id, not the depth of the stack! Swat out the /** bits from all of the log header comments and change them to just /* so that the Doc++ thingie won't see them as documentation. Do a general swat of the samples and make them more stylistically consistent again, since they tend to drift over time. Create an XMLString::moveChars() method and start using that in places where we know the target buffer is big enough to hold the source text, instead of doing a string copy operation. This should improve performance. (There are probably still some more places to use it, but its done and in use in some key places now) Implement the specialized string loading for Win98, since LoadStringW() doesn't work on 98 and makes the loaded error text from the Win32 message loader come out junk. Since this same code will work on NT as well, use it as the sole mechanism. There is a reported error with the SVG DTD. SVG is a W3C spec and its DTD won't parse. Its due to two trailing entity references in a content model, like so: <!ELEMENT foo (a|b|c|d|e %one;%two;)*> This construct allows per-use specialization of the content model, and the default definitions of one and two are empty strings. This gives an "Expected ',' or '|' characters or close parent in content model" type of error. Its having multiple contiguous and empty PE refs that causes the problem, so change the code to deal with this. Significantly improve the Doc++ docs in the platform utilities class. So that's it. Too bad some of this stuff couldn't make it into the 3.1.0 release, but hey we wanted to get it out with our lifetimes. ---------------------------------------- Dean Roddey Software Weenie IBM Center for Java Technology - Silicon Valley [EMAIL PROTECTED]
