dbertoni 01/06/06 14:41:18 Modified: c/src/XalanTransformer XalanCAPI.cpp XalanCAPI.h XalanDefaultDocumentBuilder.cpp XalanDefaultDocumentBuilder.hpp XalanDefaultParsedSource.cpp XalanDefaultParsedSource.hpp XalanDocumentBuilder.hpp XalanParsedSource.hpp XalanTransformer.cpp XalanTransformer.hpp XercesDOMParsedSource.cpp XercesDOMParsedSource.hpp Log: Re-vamp of interfaces. Revision Changes Path 1.14 +118 -100 xml-xalan/c/src/XalanTransformer/XalanCAPI.cpp Index: XalanCAPI.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanCAPI.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- XalanCAPI.cpp 2001/05/14 16:09:14 1.13 +++ XalanCAPI.cpp 2001/06/06 21:41:08 1.14 @@ -58,11 +58,7 @@ -#include <XalanTransformer/XalanCAPI.h> -#include <XalanTransformer/XalanTransformer.hpp> - - - +#include <cassert> #if defined(XALAN_OLD_STREAM_HEADERS) #include <strstream.h> #else @@ -71,6 +67,11 @@ +#include "XalanCAPI.h" +#include "XalanTransformer.hpp" + + + XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanInitialize() { @@ -104,15 +105,53 @@ +inline XalanTransformer* +getTransformer(XalanHandle theHandle) +{ + assert(theHandle != 0); + +#if defined(XALAN_OLD_STYLE_CASTS) + return (XalanTransformer*)theHandle; +#else + return static_cast<XalanTransformer*>(theHandle); +#endif +} + + + +inline const XalanCompiledStylesheet* +getStylesheet(XalanCSSHandle theHandle) +{ + assert(theHandle != 0); + +#if defined(XALAN_OLD_STYLE_CASTS) + return (const XalanCompiledStylesheet*)theHandle; +#else + return static_cast<const XalanCompiledStylesheet*>(theHandle); +#endif +} + + + +inline const XalanParsedSource* +getParsedSource(XalanPSHandle theHandle) +{ + assert(theHandle != 0); + +#if defined(XALAN_OLD_STYLE_CASTS) + return (const XalanParsedSource*)theHandle; +#else + return static_cast<const XalanParsedSource*>(theHandle); +#endif +} + + + XALAN_TRANSFORMER_EXPORT_FUNCTION(void) DeleteXalanTransformer(XalanHandle theXalanHandle) { // Delete a XalanTransformer object. -#if defined(XALAN_OLD_STYLE_CASTS) - delete (XalanTransformer*)theXalanHandle; -#else - delete static_cast<XalanTransformer*>(theXalanHandle); -#endif + delete getTransformer(theXalanHandle); } @@ -124,23 +163,18 @@ const char* theOutFileName, XalanHandle theXalanHandle) { - if(0 == theXSLFileName) + if(theXSLFileName == 0) { - // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, theOutFileName); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, theOutFileName); -#endif + return getTransformer(theXalanHandle)->transform( + theXMLFileName, + theOutFileName); } else { - // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, theXSLFileName, theOutFileName); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, theXSLFileName, theOutFileName); -#endif + return getTransformer(theXalanHandle)->transform( + theXMLFileName, + theXSLFileName, + theOutFileName); } } @@ -154,11 +188,10 @@ XalanHandle theXalanHandle) { // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, (XalanCompiledStylesheet*)theCSSHandle, theOutFileName); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, static_cast<XalanCompiledStylesheet*>(theCSSHandle), theOutFileName); -#endif + return getTransformer(theXalanHandle)->transform( + theXMLFileName, + getStylesheet(theCSSHandle), + theOutFileName); } @@ -174,31 +207,32 @@ using std::ostrstream; #endif - int status = true; + int status = 0; ostrstream theOutputStream; - if(0 == theXSLFileName) + + if(theXSLFileName == 0) { - // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - status = ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, theOutputStream); -#else - status = static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, theOutputStream); -#endif + status = getTransformer(theXalanHandle)->transform( + theXMLFileName, + theOutputStream); } else { -#if defined(XALAN_OLD_STYLE_CASTS) - status = ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, theXSLFileName, theOutputStream); -#else - status = static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, theXSLFileName, theOutputStream); -#endif + status = getTransformer(theXalanHandle)->transform( + theXMLFileName, + theXSLFileName, + theOutputStream); + } + + if (status == 0) + { + // Null-terminate the data. + theOutputStream << '\0'; + + *theOutput = theOutputStream.str(); } - // Null-terminate the data. - theOutputStream << '\0'; - *theOutput = theOutputStream.str(); - return status; } @@ -215,21 +249,23 @@ using std::ostrstream; #endif - int status = true; - ostrstream theOutputStream; // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - status = ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, (XalanCompiledStylesheet*)theCSSHandle, theOutputStream); -#else - status = static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, static_cast<XalanCompiledStylesheet*>(theCSSHandle), theOutputStream); -#endif - // Null-terminate the data. - theOutputStream << '\0'; + const int status = + getTransformer(theXalanHandle)->transform( + theXMLFileName, + getStylesheet(theCSSHandle), + theOutputStream); - *theOutput = theOutputStream.str(); - + if (status == 0) + { + // Null-terminate the data. + theOutputStream << '\0'; + + *theOutput = theOutputStream.str(); + } + return status; } @@ -254,11 +290,12 @@ XalanFlushHandlerType theFlushHandler) { // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, theXSLFileName, theOutputHandle, theOutputHandler, theFlushHandler); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, theXSLFileName, theOutputHandle, theOutputHandler, theFlushHandler); -#endif + return getTransformer(theXalanHandle)->transform( + theXMLFileName, + theXSLFileName, + theOutputHandle, + theOutputHandler, + theFlushHandler); } @@ -273,68 +310,53 @@ XalanFlushHandlerType theFlushHandler) { // Do the transformation... -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->transform(theXMLFileName, (XalanCompiledStylesheet*)theCSSHandle, theOutputHandle, theOutputHandler, theFlushHandler); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->transform(theXMLFileName, static_cast<XalanCompiledStylesheet*>(theCSSHandle), theOutputHandle, theOutputHandler, theFlushHandler); -#endif + return getTransformer(theXalanHandle)->transform( + theXMLFileName, + getStylesheet(theCSSHandle), + theOutputHandle, + theOutputHandler, + theFlushHandler); } XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanCSSHandle) XalanCompileStylesheet( - const char* theXSLFileName, - XalanHandle theXalanHandle) + const char* theXSLFileName, + XalanHandle theXalanHandle) { -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->compileStylesheet(theXSLFileName); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->compileStylesheet(theXSLFileName); -#endif + return getTransformer(theXalanHandle)->compileStylesheet(theXSLFileName); } XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanPSHandle) XalanParseSource( - const char* theXMLFileName, - XalanHandle theXalanHandle) + const char* theXMLFileName, + XalanHandle theXalanHandle) { -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->parseSource(theXMLFileName); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->parseSource(theXMLFileName); -#endif + return getTransformer(theXalanHandle)->parseSource(theXMLFileName); } XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanPSHandle) XalanParseSourceUseXerceDOM( - const char* theXMLFileName, - XalanHandle theXalanHandle) + const char* theXMLFileName, + XalanHandle theXalanHandle) { -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->parseSource(theXMLFileName, 1); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->parseSource(theXMLFileName, 1); -#endif + return getTransformer(theXalanHandle)->parseSource(theXMLFileName, true); } XALAN_TRANSFORMER_EXPORT_FUNCTION(void) XalanSetStylesheetParam( - const char* key, - const char* expression, - XalanHandle theXalanHandle) + const char* key, + const char* expression, + XalanHandle theXalanHandle) { -#if defined(XALAN_OLD_STYLE_CASTS) - ((XalanTransformer*)theXalanHandle)->setStylesheetParam(key, expression); -#else - static_cast<XalanTransformer*>(theXalanHandle)->setStylesheetParam(key, expression); -#endif + getTransformer(theXalanHandle)->setStylesheetParam(key, expression); } @@ -343,9 +365,5 @@ XalanGetLastError(XalanHandle theXalanHandle) { // Get the last error. -#if defined(XALAN_OLD_STYLE_CASTS) - return ((XalanTransformer*)theXalanHandle)->getLastError(); -#else - return static_cast<XalanTransformer*>(theXalanHandle)->getLastError(); -#endif + return getTransformer(theXalanHandle)->getLastError(); } 1.11 +3 -3 xml-xalan/c/src/XalanTransformer/XalanCAPI.h Index: XalanCAPI.h =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanCAPI.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- XalanCAPI.h 2001/03/30 21:35:19 1.10 +++ XalanCAPI.h 2001/06/06 21:41:08 1.11 @@ -79,17 +79,17 @@ /** * Handle used to store the address of XalanTransformer instance. */ - typedef void* XalanHandle; + typedef void* XalanHandle; /** * Handle used to store the address of Compiled Stylesheet instance. */ - typedef void* XalanCSSHandle; + typedef const void* XalanCSSHandle; /** * Handle used to store the address of Parsed Source instance. */ - typedef void* XalanPSHandle; + typedef const void* XalanPSHandle; /** * Callback function passed to XalanTransformToHandler. 1.3 +9 -14 xml-xalan/c/src/XalanTransformer/XalanDefaultDocumentBuilder.cpp Index: XalanDefaultDocumentBuilder.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDefaultDocumentBuilder.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XalanDefaultDocumentBuilder.cpp 2001/04/27 20:56:51 1.2 +++ XalanDefaultDocumentBuilder.cpp 2001/06/06 21:41:09 1.3 @@ -63,9 +63,13 @@ +#include "XalanDefaultParsedSource.hpp" + + + XalanDefaultDocumentBuilder::XalanDefaultDocumentBuilder() : m_domSupport(), - m_parserLiaison(m_domSupport), + m_parserLiaison(), m_contentHandler(m_parserLiaison.mapDocument(m_parserLiaison.createDocument())) { m_domSupport.setParserLiaison(&m_parserLiaison); @@ -80,27 +84,18 @@ XalanDocument* -XalanDefaultDocumentBuilder::getDocument() +XalanDefaultDocumentBuilder::getDocument() const { return m_contentHandler.getDocument(); } -XMLParserLiaison* -XalanDefaultDocumentBuilder::getParserLiaison() +XalanParsedSourceHelper* +XalanDefaultDocumentBuilder::createHelper() const { - return &m_parserLiaison; + return new XalanDefaultParsedSourceHelper(m_domSupport); } - - - -DOMSupport* -XalanDefaultDocumentBuilder::getDOMSupport() -{ - return &m_domSupport; -} - ContentHandler* 1.3 +3 -6 xml-xalan/c/src/XalanTransformer/XalanDefaultDocumentBuilder.hpp Index: XalanDefaultDocumentBuilder.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDefaultDocumentBuilder.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XalanDefaultDocumentBuilder.hpp 2001/04/27 20:56:51 1.2 +++ XalanDefaultDocumentBuilder.hpp 2001/06/06 21:41:09 1.3 @@ -88,13 +88,10 @@ ~XalanDefaultDocumentBuilder(); virtual XalanDocument* - getDocument(); + getDocument() const; - virtual XMLParserLiaison* - getParserLiaison(); - - virtual DOMSupport* - getDOMSupport(); + virtual XalanParsedSourceHelper* + createHelper() const; virtual ContentHandler* getContentHandler(); 1.3 +106 -14 xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.cpp Index: XalanDefaultParsedSource.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XalanDefaultParsedSource.cpp 2001/04/27 20:56:51 1.2 +++ XalanDefaultParsedSource.cpp 2001/06/06 21:41:10 1.3 @@ -62,12 +62,113 @@ +#include <XalanSourceTree/XalanSourceTreeDocument.hpp> +#include <XalanSourceTree/XalanSourceTreeDOMSupport.hpp> + + + +XalanDefaultParsedSourceDOMSupport::XalanDefaultParsedSourceDOMSupport(const XalanSourceTreeDOMSupport& theDOMSupport) : + XalanSourceTreeDOMSupport(), + m_domSupport(theDOMSupport) +{ +} + + + +XalanDefaultParsedSourceDOMSupport::~XalanDefaultParsedSourceDOMSupport() +{ +} + + + +void +XalanDefaultParsedSourceDOMSupport::reset() +{ +} + + + +const XalanDOMString* +XalanDefaultParsedSourceDOMSupport::getNamespaceForPrefix( + const XalanDOMString& prefix, + const XalanElement& namespaceContext) const +{ + return m_domSupport.getNamespaceForPrefix( + prefix, + namespaceContext); +} + + + +const XalanDOMString& +XalanDefaultParsedSourceDOMSupport::getUnparsedEntityURI( + const XalanDOMString& theName, + const XalanDocument& theDocument) const +{ + const XalanDOMString& theURI = + m_domSupport.getUnparsedEntityURI( + theName, + theDocument); + + if (length(theURI) != 0) + { + return theURI; + } + else + { + return XalanSourceTreeDOMSupport::getUnparsedEntityURI( + theName, + theDocument); + } +} + + + +bool +XalanDefaultParsedSourceDOMSupport::isNodeAfter( + const XalanNode& node1, + const XalanNode& node2) const +{ + return m_domSupport.isNodeAfter( + node1, + node2); +} + + + +XalanDefaultParsedSourceHelper::XalanDefaultParsedSourceHelper(const XalanSourceTreeDOMSupport& theSourceDOMSupport) : + m_domSupport(theSourceDOMSupport), + m_parserLiaison() +{ + m_domSupport.setParserLiaison(&m_parserLiaison); +} + + + +DOMSupport& +XalanDefaultParsedSourceHelper::getDOMSupport() +{ + return m_domSupport; +} + + + +XMLParserLiaison& +XalanDefaultParsedSourceHelper::getParserLiaison() +{ + return m_parserLiaison; +} + + + XalanDefaultParsedSource::XalanDefaultParsedSource(const XSLTInputSource& theInputSource): XalanParsedSource(), m_domSupport(), m_parserLiaison(m_domSupport), - m_parsedSource(m_parserLiaison.parseXMLStream(theInputSource)) + m_parsedSource(m_parserLiaison.mapDocument(m_parserLiaison.parseXMLStream(theInputSource))) { + assert(m_parsedSource != 0); + m_domSupport.setParserLiaison(&m_parserLiaison); } @@ -80,24 +181,15 @@ XalanDocument* -XalanDefaultParsedSource::getDocument() +XalanDefaultParsedSource::getDocument() const { return m_parsedSource; } -XMLParserLiaison* -XalanDefaultParsedSource::getParserLiaison() +XalanParsedSourceHelper* +XalanDefaultParsedSource::createHelper() const { - return &m_parserLiaison; + return new XalanDefaultParsedSourceHelper(m_domSupport); } - - - -DOMSupport* -XalanDefaultParsedSource::getDOMSupport() -{ - return &m_domSupport; -} - 1.3 +65 -7 xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.hpp Index: XalanDefaultParsedSource.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XalanDefaultParsedSource.hpp 2001/04/27 20:56:51 1.2 +++ XalanDefaultParsedSource.hpp 2001/06/06 21:41:10 1.3 @@ -77,6 +77,67 @@ +class XalanSourceTreeDocument; + + + +class XalanDefaultParsedSourceDOMSupport : public XalanSourceTreeDOMSupport +{ +public: + + XalanDefaultParsedSourceDOMSupport(const XalanSourceTreeDOMSupport& theDOMSupport); + + virtual + ~XalanDefaultParsedSourceDOMSupport(); + + virtual void + reset(); + + // These interfaces are inherited from DOMSupport... + + virtual const XalanDOMString* + getNamespaceForPrefix( + const XalanDOMString& prefix, + const XalanElement& namespaceContext) const; + + virtual const XalanDOMString& + getUnparsedEntityURI( + const XalanDOMString& theName, + const XalanDocument& theDocument) const; + + virtual bool + isNodeAfter( + const XalanNode& node1, + const XalanNode& node2) const; + +private: + + const XalanSourceTreeDOMSupport& m_domSupport; +}; + + + +class XALAN_TRANSFORMER_EXPORT XalanDefaultParsedSourceHelper : public XalanParsedSourceHelper +{ +public: + + XalanDefaultParsedSourceHelper(const XalanSourceTreeDOMSupport& theSourceDOMSupport); + + virtual DOMSupport& + getDOMSupport(); + + virtual XMLParserLiaison& + getParserLiaison(); + +private: + + XalanDefaultParsedSourceDOMSupport m_domSupport; + + XalanSourceTreeParserLiaison m_parserLiaison; +}; + + + /** * This is designed to allow a XalanTranfomer object to reuse a parsed * document. @@ -91,13 +152,10 @@ ~XalanDefaultParsedSource(); virtual XalanDocument* - getDocument(); - - virtual XMLParserLiaison* - getParserLiaison(); + getDocument() const; - virtual DOMSupport* - getDOMSupport(); + virtual XalanParsedSourceHelper* + createHelper() const; private: @@ -105,7 +163,7 @@ XalanSourceTreeParserLiaison m_parserLiaison; - XalanDocument* const m_parsedSource; + XalanSourceTreeDocument* const m_parsedSource; }; 1.4 +3 -7 xml-xalan/c/src/XalanTransformer/XalanDocumentBuilder.hpp Index: XalanDocumentBuilder.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDocumentBuilder.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XalanDocumentBuilder.hpp 2001/04/27 20:56:51 1.3 +++ XalanDocumentBuilder.hpp 2001/06/06 21:41:11 1.4 @@ -74,7 +74,6 @@ class DTDHandler; class LexicalHandler; class XalanDocument; -class XMLParserLiaison; @@ -93,13 +92,10 @@ // These are inherited from XalanParsedSource... virtual XalanDocument* - getDocument() = 0; + getDocument() const = 0; - virtual XMLParserLiaison* - getParserLiaison() = 0; - - virtual DOMSupport* - getDOMSupport() = 0; + virtual XalanParsedSourceHelper* + createHelper() const = 0; // These are new to XalanDocumentBuilder... virtual ContentHandler* 1.3 +45 -8 xml-xalan/c/src/XalanTransformer/XalanParsedSource.hpp Index: XalanParsedSource.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanParsedSource.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XalanParsedSource.hpp 2001/04/27 20:56:51 1.2 +++ XalanParsedSource.hpp 2001/06/06 21:41:11 1.3 @@ -75,6 +75,34 @@ +class XALAN_TRANSFORMER_EXPORT XalanParsedSourceHelper +{ +public: + + virtual + ~XalanParsedSourceHelper() + { + } + + /** + * Get the DOMSupport instance. + * + * @return A reference to a DOMSupport instance. + */ + virtual DOMSupport& + getDOMSupport() = 0; + + /** + * Get the XMLParserLiaison instance. + * + * @return A rerefernce to an XMLParserLiaison instance. + */ + virtual XMLParserLiaison& + getParserLiaison() = 0; +}; + + + /** * This is abstract base class designed to allow a XalanTranfomer * object to reuse a parsed document. @@ -88,16 +116,25 @@ virtual ~XalanParsedSource(); + /** + * Get a pointer to the XalanDocument instance for the source + * document + * + * @return A pointer to a XalanDocument instance. + */ virtual XalanDocument* - getDocument() = 0; - - virtual XMLParserLiaison* - getParserLiaison() = 0; - - virtual DOMSupport* - getDOMSupport() = 0; + getDocument() const = 0; -private: + /** + * Create the appropriate XalanParsedSourceHelper instance to + * use for transforming with the instance. + * + * The caller is responsible for deleting the object when finished. + * + * @return A pointer to a XalanParsedSourceHelper instance. + */ + virtual XalanParsedSourceHelper* + createHelper() const = 0; }; 1.19 +30 -20 xml-xalan/c/src/XalanTransformer/XalanTransformer.cpp Index: XalanTransformer.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanTransformer.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- XalanTransformer.cpp 2001/05/22 03:52:22 1.18 +++ XalanTransformer.cpp 2001/06/06 21:41:11 1.19 @@ -168,7 +168,7 @@ int XalanTransformer::transform( - XalanParsedSource& theParsedXML, + const XalanParsedSource& theParsedXML, const XSLTInputSource& theStylesheetSource, const XSLTResultTarget& theResultTarget) { @@ -187,12 +187,15 @@ XalanDOMString theErrorMessage; try - { - // Create some support objects that are necessary for running the processor... - DOMSupport& theDOMSupport = *theParsedXML.getDOMSupport(); + { + // Create the helper object that is necessary for running the processor... + XalanAutoPtr<XalanParsedSourceHelper> theHelper(theParsedXML.createHelper()); + assert(theHelper.get() != 0); - XMLParserLiaison& theParserLiaison = *theParsedXML.getParserLiaison(); + DOMSupport& theDOMSupport = theHelper->getDOMSupport(); + XMLParserLiaison& theParserLiaison = theHelper->getParserLiaison(); + // Create some more support objects... XSLTProcessorEnvSupportDefault theXSLTProcessorEnvSupport; @@ -208,6 +211,8 @@ theXObjectFactory, theXPathFactory); + theXSLTProcessorEnvSupport.setProcessor(&theProcessor); + // Create a problem listener and send output to a XalanDOMString. DOMStringPrintWriter thePrintWriter(theErrorMessage); @@ -227,6 +232,8 @@ // Hack used to cast away const. XSLTResultTarget tempResultTarget(theResultTarget); + const EnsureReset theReset(*this); + // Set up the stylesheet execution context. m_stylesheetExecutionContext.setXPathEnvSupport(&theXSLTProcessorEnvSupport); @@ -253,8 +260,6 @@ *(m_functionPairs[f].second)); } - const EnsureReset theReset(*this); - // Do the transformation... theProcessor.process( theParsedXML.getDocument(), @@ -328,7 +333,7 @@ int XalanTransformer::transform( - XalanParsedSource& theParsedXML, + const XalanParsedSource& theParsedXML, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTResultTarget& theResultTarget) { @@ -348,10 +353,13 @@ try { - // Create some support objects that are necessary for running the processor... - DOMSupport& theDOMSupport = *theParsedXML.getDOMSupport(); + // Create the helper object that is necessary for running the processor... + XalanAutoPtr<XalanParsedSourceHelper> theHelper(theParsedXML.createHelper()); + assert(theHelper.get() != 0); + + DOMSupport& theDOMSupport = theHelper->getDOMSupport(); - XMLParserLiaison& theParserLiaison = *theParsedXML.getParserLiaison(); + XMLParserLiaison& theParserLiaison = theHelper->getParserLiaison(); // Create some more support objects... XSLTProcessorEnvSupportDefault theXSLTProcessorEnvSupport; @@ -368,6 +376,8 @@ theXObjectFactory, theXPathFactory); + theXSLTProcessorEnvSupport.setProcessor(&theProcessor); + // Create a problem listener and send output to a XalanDOMString. DOMStringPrintWriter thePrintWriter(theErrorMessage); @@ -380,6 +390,8 @@ // of the one provided... XSLTResultTarget tempResultTarget(theResultTarget); + const EnsureReset theReset(*this); + // Set up the stylesheet execution context. m_stylesheetExecutionContext.setXPathEnvSupport(&theXSLTProcessorEnvSupport); @@ -409,8 +421,6 @@ *(m_functionPairs[f].second)); } - const EnsureReset theReset(*this); - // Do the transformation... theProcessor.process( theParsedXML.getDocument(), @@ -487,7 +497,7 @@ const XSLTResultTarget& theResultTarget) { // Parse the source document. - XalanParsedSource* const theParsedXML = + const XalanParsedSource* const theParsedXML = parseSource(theInputSource); // Make sure the parsed source is destroyed when @@ -510,7 +520,7 @@ const XSLTResultTarget& theResultTarget) { // Parse the source document. - XalanParsedSource* const theParsedXML = + const XalanParsedSource* const theParsedXML = parseSource(theInputSource); // Make sure the parsed source is destroyed when @@ -611,7 +621,7 @@ -XalanCompiledStylesheet* +const XalanCompiledStylesheet* XalanTransformer::compileStylesheet(const XSLTInputSource& theStylesheetSource) { // Clear the error message. @@ -723,7 +733,7 @@ void -XalanTransformer::destroyStylesheet(XalanCompiledStylesheet* theStylesheet) +XalanTransformer::destroyStylesheet(const XalanCompiledStylesheet* theStylesheet) { #if !defined(XALAN_NO_NAMESPACES) using std::find; @@ -745,7 +755,7 @@ -XalanParsedSource* +const XalanParsedSource* XalanTransformer::parseSource( const XSLTInputSource& theInputSource, bool useXercesDOM) @@ -758,7 +768,7 @@ { XalanParsedSource* theParsedDocument = 0; - if(useXercesDOM == 1) + if(useXercesDOM == true) { theParsedDocument = new XercesDOMParsedSource(theInputSource); } @@ -801,7 +811,7 @@ void -XalanTransformer::destroyParsedSource(XalanParsedSource* theParsedSource) +XalanTransformer::destroyParsedSource(const XalanParsedSource* theParsedSource) { #if !defined(XALAN_NO_NAMESPACES) using std::find; 1.22 +14 -14 xml-xalan/c/src/XalanTransformer/XalanTransformer.hpp Index: XalanTransformer.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanTransformer.hpp,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- XalanTransformer.hpp 2001/05/22 03:52:21 1.21 +++ XalanTransformer.hpp 2001/06/06 21:41:11 1.22 @@ -141,7 +141,7 @@ */ int transform( - XalanParsedSource& theParsedXML, + const XalanParsedSource& theParsedXML, const XSLTInputSource& theStylesheetSource, const XSLTResultTarget& theResultTarget); @@ -156,7 +156,7 @@ */ int transform( - XalanParsedSource& theParsedXML, + const XalanParsedSource& theParsedXML, const XalanCompiledStylesheet* theCompiledStylesheet, const XSLTResultTarget& theResultTarget); @@ -296,7 +296,7 @@ * @param theStylesheetSource input source * @return a pointer to a XalanCompiledStylesheet or 0 for failure. */ - XalanCompiledStylesheet* + const XalanCompiledStylesheet* compileStylesheet(const XSLTInputSource& theStylesheetSource); /** @@ -307,7 +307,7 @@ * @param theStylesheet The instance to destroy. */ void - destroyStylesheet(XalanCompiledStylesheet* theStylesheet); + destroyStylesheet(const XalanCompiledStylesheet* theStylesheet); /** * Parse a source XML document. The input source can be @@ -321,7 +321,7 @@ * @param useXercesDOM input use default or xerces dom source tree * @return a pointer to a XalanParsedSource or 0 for failure. */ - XalanParsedSource* + const XalanParsedSource* parseSource( const XSLTInputSource& theInputSource, bool useXercesDOM = false); @@ -334,7 +334,7 @@ * @param theParsedSource The XalanParsedSource instance to destroy. */ void - destroyParsedSource(XalanParsedSource* theParsedSource); + destroyParsedSource(const XalanParsedSource* theParsedSource); /** * Create a document builder. Using the document builder, you @@ -462,8 +462,8 @@ public: EnsureDestroyParsedSource( - XalanTransformer& theTransformer, - XalanParsedSource* theParsedSource) : + XalanTransformer& theTransformer, + const XalanParsedSource* theParsedSource) : m_transformer(theTransformer), m_parsedSource(theParsedSource) { @@ -476,16 +476,16 @@ private: - XalanTransformer& m_transformer; + XalanTransformer& m_transformer; - XalanParsedSource* const m_parsedSource; + const XalanParsedSource* const m_parsedSource; }; struct EnsureDestroyCompiledStylesheet { EnsureDestroyCompiledStylesheet( - XalanTransformer& theTransformer, - XalanCompiledStylesheet* theCompiledStylesheet) : + XalanTransformer& theTransformer, + const XalanCompiledStylesheet* theCompiledStylesheet) : m_transformer(theTransformer), m_compiledStylesheet(theCompiledStylesheet) { @@ -498,9 +498,9 @@ private: - XalanTransformer& m_transformer; + XalanTransformer& m_transformer; - XalanCompiledStylesheet* const m_compiledStylesheet; + const XalanCompiledStylesheet* const m_compiledStylesheet; }; struct EnsureDestroyDocumentBuilder 1.3 +30 -14 xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.cpp Index: XercesDOMParsedSource.cpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XercesDOMParsedSource.cpp 2001/04/27 20:56:51 1.2 +++ XercesDOMParsedSource.cpp 2001/06/06 21:41:12 1.3 @@ -62,10 +62,34 @@ +class XALAN_TRANSFORMER_EXPORT XercesDOMParsedSourceHelper : public XalanParsedSourceHelper +{ +public: + + virtual DOMSupport& + getDOMSupport() + { + return m_domSupport; + } + + virtual XMLParserLiaison& + getParserLiaison() + { + return m_parserLiaison; + } + +private: + + XercesDOMSupport m_domSupport; + + XercesParserLiaison m_parserLiaison; +}; + + + XercesDOMParsedSource::XercesDOMParsedSource(const XSLTInputSource& theInputSource): XalanParsedSource(), - m_domSupport(), - m_parserLiaison(m_domSupport), + m_parserLiaison(), m_parsedSource(m_parserLiaison.parseXMLStream(theInputSource)) { } @@ -79,23 +103,15 @@ XalanDocument* -XercesDOMParsedSource::getDocument() +XercesDOMParsedSource::getDocument() const { return m_parsedSource; } - -XMLParserLiaison* -XercesDOMParsedSource::getParserLiaison() -{ - return &m_parserLiaison; -} - - -DOMSupport* -XercesDOMParsedSource::getDOMSupport() +XalanParsedSourceHelper* +XercesDOMParsedSource::createHelper() const { - return &m_domSupport; + return new XercesDOMParsedSourceHelper; } 1.3 +3 -8 xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.hpp Index: XercesDOMParsedSource.hpp =================================================================== RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XercesDOMParsedSource.hpp 2001/04/27 20:56:51 1.2 +++ XercesDOMParsedSource.hpp 2001/06/06 21:41:12 1.3 @@ -91,17 +91,12 @@ ~XercesDOMParsedSource(); virtual XalanDocument* - getDocument(); + getDocument() const; - virtual XMLParserLiaison* - getParserLiaison(); + virtual XalanParsedSourceHelper* + createHelper() const; - virtual DOMSupport* - getDOMSupport(); - private: - - XercesDOMSupport m_domSupport; XercesParserLiaison m_parserLiaison; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]