cannot propagate through the COM boundary. ErrorHandlerAdaptor now caches
reported errors until the parse has completed, then reports them to
ErrorHandler afterwards. This ensures that throw exceptions propogate as expected.
Ordinarily you'd expect to be able to use Xerces' Array janitor class. However,
Windows exes and dlls use seperate heaps, so you can't delete something in one
module that was allocated by another. It's a pita. The solution here is to useXMLString::release.
Although this simply does a delete[], the deletion occurs in the Xerces DLL, so
it will work correctly.
Changes are required for the old version of libg++ which does not support:
* std::wstring
* locale
Changes include:
* #if/#endif removal of code which won't compile.
* Addition of a xerces_string_adaptor which doesn't need locale.
* Addition of typedef "base" referring to basic_XMLReader.
* Extended use of member typedefs to simplify code.
* Added xerces_initializer class to call XMLPlatformUtils::Initialize() and
XMLPlatformUtils::Terminate(). This avoids nested calls to Initialize()
and Terminate().
* Addition of xerces_string_adaptor which converts XMLCh to wchar_t and
back.
* Fixed adaptors to pass XMLCh to Xerces methods rather than wchar_t.
* Added '&' to member function references in ErrorHandlerAdaptor.
* Fixed IStreamAdaptor and InputSourceAdaptor to extend Xerces
BinInputStream and InputSource respectively (were extending Arabica ones!)
#import <type_library>. The latter is sensitive to
the exact name/version of the library provided by
Microsoft and various options provided to the type
library reader. (Found the issue when I attempted
to build with MSXML4 rather then MSXML3.) [kas]
Created the default PROGID define. M$. in their
wisdom, removed the version independent IDs starting
in version 4.0 of the MSXML library. Saves a lot of
'DLL hell' problems but creates others for maintainers.
The initialization code will now try the 4.0 ID and
then the older (version independant) name. [kas]
StreamAdaptor now derives from ISequentialStream, not IStream.
Fixes to StreamAdaptor::QueryInterface.