dbertoni    01/06/22 11:51:03

  Modified:    c/src/XalanTransformer XalanCAPI.cpp XalanCAPI.h
                        XalanTransformer.cpp XalanTransformer.hpp
  Log:
  Updates to the C API for parsed source documents.  Return error codes consistently 
from functions.
  
  Revision  Changes    Path
  1.20      +44 -37    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.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XalanCAPI.cpp     2001/06/21 15:39:46     1.19
  +++ XalanCAPI.cpp     2001/06/22 18:50:58     1.20
  @@ -185,15 +185,15 @@
   
   
   XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  -XalanTransformToFileCSS(
  -                     const char*             theXMLFileName, 
  +XalanTransformToFilePrebuilt(
  +                     XalanPSHandle   theParsedSource, 
                        XalanCSSHandle  theCSSHandle,
                        const char*             theOutFileName,
                        XalanHandle             theXalanHandle)
   {
        // Do the transformation...
        return getTransformer(theXalanHandle)->transform(
  -                             theXMLFileName,
  +                             *getParsedSource(theParsedSource),
                                getStylesheet(theCSSHandle),
                                theOutFileName);
   }
  @@ -243,8 +243,8 @@
   
   
   XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  -XalanTransformToDataCSS(
  -                     const char*             theXMLFileName, 
  +XalanTransformToDataPrebuilt(
  +                     XalanPSHandle   theParsedSource, 
                        XalanCSSHandle  theCSSHandle,
                        char**                  theOutput,
                        XalanHandle             theXalanHandle)
  @@ -258,7 +258,7 @@
        // Do the transformation...
        const int       status =
                getTransformer(theXalanHandle)->transform(
  -                     theXMLFileName,
  +                     *getParsedSource(theParsedSource),
                        getStylesheet(theCSSHandle),
                        theOutputStream);
   
  @@ -286,10 +286,10 @@
   
   XALAN_TRANSFORMER_EXPORT_FUNCTION(int) 
   XalanTransformToHandler(
  -                     const char*                             theXMLFileName, 
  +                     const char*                             theXMLFileName,
                        const char*                             theXSLFileName,
                        XalanHandle                             theXalanHandle,
  -                     void*                                   theOutputHandle, 
  +                     void*                                   theOutputHandle,
                        XalanOutputHandlerType  theOutputHandler,
                        XalanFlushHandlerType   theFlushHandler)
   {
  @@ -305,17 +305,17 @@
   
   
   XALAN_TRANSFORMER_EXPORT_FUNCTION(int) 
  -XalanTransformToHandlerCSS(
  -                     const char*                             theXMLFileName, 
  +XalanTransformToHandlerPrebuilt(
  +                     XalanPSHandle                   theParsedSource,
                        XalanCSSHandle                  theCSSHandle,
                        XalanHandle                             theXalanHandle,
  -                     void*                                   theOutputHandle, 
  +                     void*                                   theOutputHandle,
                        XalanOutputHandlerType  theOutputHandler,
                        XalanFlushHandlerType   theFlushHandler)
   {
        // Do the transformation...
        return getTransformer(theXalanHandle)->transform(
  -                     theXMLFileName,
  +                     *getParsedSource(theParsedSource),
                        getStylesheet(theCSSHandle),
                        theOutputHandle,
                        theOutputHandler,
  @@ -324,51 +324,58 @@
   
   
   
  -XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanCSSHandle)
  +XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
   XalanCompileStylesheet(
  -                     const char*             theXSLFileName,
  -                     XalanHandle             theXalanHandle)
  +                     const char*                     theXSLFileName,
  +                     XalanHandle                     theXalanHandle,
  +                     XalanCSSHandle*         theCSSHandle)
   {
        const XalanCompiledStylesheet*  theCompiledStylesheet = 0;
   
  -     getTransformer(theXalanHandle)->compileStylesheet(
  -             theXSLFileName,
  -             theCompiledStylesheet);
  +     const int       theResult =
  +             getTransformer(theXalanHandle)->compileStylesheet(
  +                     theXSLFileName,
  +                     theCompiledStylesheet);
  +
  +     if (theResult == 0)
  +     {
  +             *theCSSHandle = theCompiledStylesheet;
  +     }
   
  -     return theCompiledStylesheet;
  +     return theResult;
   }
   
   
   
  -XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanPSHandle)
  -XalanParseSource(
  -                     const char*             theXMLFileName,
  +XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  +XalanDestroyCompiledStylesheet(
  +                     XalanCSSHandle  theCSSHandle,
                        XalanHandle             theXalanHandle)
   {
  -     const XalanParsedSource*        theParsedSource = 0;
  -
  -     getTransformer(theXalanHandle)->parseSource(
  -             theXMLFileName,
  -             theParsedSource);
  -
  -     return theParsedSource;
  +     return 
getTransformer(theXalanHandle)->destroyStylesheet(getStylesheet(theCSSHandle));
   }
   
   
   
  -XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanPSHandle)
  -XalanParseSourceUseXerceDOM(
  +XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  +XalanParseSource(
                        const char*             theXMLFileName,
  -                     XalanHandle             theXalanHandle)
  +                     XalanHandle             theXalanHandle,
  +                     XalanPSHandle*  thePSHandle)
   {
        const XalanParsedSource*        theParsedSource = 0;
  +
  +     const int       theResult =
  +             getTransformer(theXalanHandle)->parseSource(
  +                     theXMLFileName,
  +                     theParsedSource);
   
  -     getTransformer(theXalanHandle)->parseSource(
  -             theXMLFileName,
  -             theParsedSource,
  -             true);
  +     if (theResult == 0)
  +     {
  +             *thePSHandle = theParsedSource;
  +     }
   
  -     return theParsedSource;
  +     return theResult;
   }
   
   
  
  
  
  1.13      +66 -43    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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XalanCAPI.h       2001/06/12 19:12:53     1.12
  +++ XalanCAPI.h       2001/06/22 18:50:59     1.13
  @@ -142,28 +142,28 @@
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
        XalanTransformToFile(
  -                             const char*                             
theXMLFileName, 
  -                             const char*                             theXSLFileName,
  -                             const char*                             theOutFileName,
  -                             XalanHandle                             
theXalanHandle);
  +                             const char*             theXMLFileName, 
  +                             const char*             theXSLFileName,
  +                             const char*             theOutFileName,
  +                             XalanHandle             theXalanHandle);
   
        /**
         * Transform the XML source tree to the given result file.
         * The processor will apply the compiled stylesheet to the input
         * file and write the transformation result to a new output file.
         *
  -      * @param theXMLFileName        filename of XML input source
  +      * @param theParsedSource       handle of parsed source
         * @param theCSSHandle          handle of compiled stylesheet 
         * @param theOutFileName        filename of output source
         * @param theXalanHandle        handle of XalanTransformer instance.
         * @return      0 for success 
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  -     XalanTransformToFileCSS(
  -                             const char*                             
theXMLFileName, 
  -                             XalanCSSHandle                  theCSSHandle,
  -                             const char*                             theOutFileName,
  -                             XalanHandle                             
theXalanHandle);
  +     XalanTransformToFilePrebuilt(
  +                     XalanPSHandle   theParsedSource, 
  +                     XalanCSSHandle  theCSSHandle,
  +                     const char*             theOutFileName,
  +                     XalanHandle             theXalanHandle);
   
        /**
         * Transform the XML source tree to a dynamically allocated buffer.
  @@ -180,10 +180,10 @@
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(int) 
        XalanTransformToData(
  -                             const char*                             
theXMLFileName, 
  -                             const char*                             theXSLFileName,
  -                             char**                                  theOutput,
  -                             XalanHandle                             
theXalanHandle);
  +                     const char*             theXMLFileName, 
  +                     const char*             theXSLFileName,
  +                     char**                  theOutput,
  +                     XalanHandle             theXalanHandle);
   
        /**
         * Transform the XML source tree to a dynamically allocated buffer.
  @@ -199,20 +199,20 @@
         * @return      0 for success 
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(int) 
  -     XalanTransformToDataCSS(
  -                             const char*                             
theXMLFileName, 
  -                             XalanCSSHandle                  theCSSHandle,
  -                             char**                                  theOutput,
  -                             XalanHandle                             
theXalanHandle);
  +     XalanTransformToDataPrebuilt(
  +                             XalanPSHandle   theParsedSource,
  +                             XalanCSSHandle  theCSSHandle,
  +                             char**                  theOutput,
  +                             XalanHandle             theXalanHandle);
   
        /**
         * Free memory allocated as a result of calling
         * XalanTransformToData.
         * 
  -      * @param theStream The address of character data.
  +      * @param theData The address of character data.
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(void)
  -     XalanFreeData(char*             theStream);
  +     XalanFreeData(char*             theData);
   
        /**
         * Transform the XML source tree to a callback function.
  @@ -256,8 +256,8 @@
         * 
         * - See XalanOutputHandlerType and XalanFlushHandlerType for more 
         * details.
  -      * 
  -      * @param theXMLFileName        filename of XML input source
  +      *
  +      * @param thePSHandle           handle of parsed source
         * @param theCSSHandle          handle of compiled stylesheet 
         * @param theXalanHandle        handle of XalanTransformer instance.
         * @param theOutputHandle       void pointer passed through to callback.
  @@ -266,26 +266,39 @@
         * @return      0 for success 
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(int) 
  -     XalanTransformToHandlerCSS(
  -                             const char*                             
theXMLFileName, 
  +     XalanTransformToHandlerPrebuilt(
  +                             XalanPSHandle                   thePSHandle,
                                XalanCSSHandle                  theCSSHandle,
                                XalanHandle                             theXalanHandle,
  -                             void*                                   
theOutputHandle, 
  +                             void*                                   
theOutputHandle,
                                XalanOutputHandlerType  theOutputHandler,
                                XalanFlushHandlerType   theFlushHandler);
   
        /**
  -      * Creates a complied stylesheet.  The input source can be 
  -      * a file name, a stream or a root node.
  +      * Creates a compiled stylesheet.
         *
         * @param theXSLFileName        filename of stylesheet source
         * @param theXalanHandle        handle of XalanTransformer instance.
  -      * @return      a CSSHandle or 0 for failure.
  +      * @param theCSSHandle          a pointer to a XalanCSSHandle
  +      * @return 0 for success.
         */
  -     XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanCSSHandle)
  +     XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
        XalanCompileStylesheet(
  -                             const char*                             theXSLFileName,
  -                             XalanHandle                             
theXalanHandle);
  +                     const char*                     theXSLFileName,
  +                     XalanHandle                     theXalanHandle,
  +                     XalanCSSHandle*         theCSSHandle);
  +
  +     /**
  +      * Destroys a compiled stylesheet.
  +      *
  +      * @param theCSSHandle          handle of the compiled stylesheet
  +      * @param theXalanHandle        handle of XalanTransformer instance.
  +      * @return 0 for success
  +      */
  +     XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  +     XalanDestroyCompiledStylesheet(
  +                     XalanCSSHandle  theCSSHandle,
  +                     XalanHandle             theXalanHandle);
   
        /**
         * Parse source document.  The input source can be 
  @@ -293,17 +306,27 @@
         *
         * @param theInputSource        input source    
         * @param theXalanHandle        handle of XalanTransformer instance.     
  -      * @return      a pointer to a XalanParsedSource or 0 for failure.
  +      * @param thePSHandle           a pointer to a XalanPSHandle
  +      * @return 0 for success.
         */     
  -     XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanPSHandle)
  +     XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
        XalanParseSource(
  -                     const char*                             theXMLFileName,
  -                     XalanHandle                             theXalanHandle);
  +                     const char*             theXMLFileName,
  +                     XalanHandle             theXalanHandle,
  +                     XalanPSHandle*  thePSHandle);
   
  -     XALAN_TRANSFORMER_EXPORT_FUNCTION(XalanPSHandle)
  -     XalanParseSourceUseXerceDOM(
  -                     const char*                             theXMLFileName,
  -                     XalanHandle                             theXalanHandle);
  +     /**
  +      * Destroys a parsed source.
  +      * a file name, a stream or a root node.
  +      *
  +      * @param thePSHandle           handle of parsed source
  +      * @param theXalanHandle        handle of XalanTransformer instance.     
  +      * @return 0 for success
  +      */     
  +     XALAN_TRANSFORMER_EXPORT_FUNCTION(int)
  +     XalanDestroyParsedSource(
  +                     XalanPSHandle   thePSHandle,
  +                     XalanHandle             theXalanHandle);
   
        /**
         * Set a top-level stylesheet parameter.  This value can be evaluated via
  @@ -315,9 +338,9 @@
         */
        XALAN_TRANSFORMER_EXPORT_FUNCTION(void)
        XalanSetStylesheetParam(
  -                             const char*                             key,
  -                             const char*                             expression,
  -                             XalanHandle                             
theXalanHandle);
  +                             const char*             key,
  +                             const char*             expression,
  +                             XalanHandle             theXalanHandle);
   
        /**
         * Returns the last error that occurred as a 
  
  
  
  1.23      +97 -67    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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- XalanTransformer.cpp      2001/06/21 15:39:45     1.22
  +++ XalanTransformer.cpp      2001/06/22 18:51:00     1.23
  @@ -10,33 +10,33 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *     notice, this list of conditions and the following disclaimer. 
    *
    * 2. Redistributions in binary form must reproduce the above copyright
  - *    notice, this list of conditions and the following disclaimer in
  - *    the documentation and/or other materials provided with the
  - *    distribution.
  + *     notice, this list of conditions and the following disclaimer in
  + *     the documentation and/or other materials provided with the
  + *     distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  - *       "This product includes software developed by the
  - *        Apache Software Foundation (http://www.apache.org/)."
  - *    Alternately, this acknowledgment may appear in the software itself,
  - *    if and wherever such third-party acknowledgments normally appear.
  + *     if any, must include the following acknowledgment:  
  + *            "This product includes software developed by the
  + *             Apache Software Foundation (http://www.apache.org/)."
  + *     Alternately, this acknowledgment may appear in the software itself,
  + *     if and wherever such third-party acknowledgments normally appear.
    *
    * 4. The names "Xalan" and "Apache Software Foundation" must
  - *    not be used to endorse or promote products derived from this
  - *    software without prior written permission. For written 
  - *    permission, please contact [EMAIL PROTECTED]
  + *     not be used to endorse or promote products derived from this
  + *     software without prior written permission. For written 
  + *     permission, please contact [EMAIL PROTECTED]
    *
    * 5. Products derived from this software may not be called "Apache",
  - *    nor may "Apache" appear in their name, without prior written
  - *    permission of the Apache Software Foundation.
  + *     nor may "Apache" appear in their name, without prior written
  + *     permission of the Apache Software Foundation.
    *
    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * DISCLAIMED.       IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  @@ -113,7 +113,7 @@
        m_stylesheetExecutionContext(),
        m_compiledStylesheets(),
        m_parsedSources(),
  -    m_paramPairs(),
  +     m_paramPairs(),
        m_functionPairs(),
        m_errorMessage(1, '\0')
   {
  @@ -171,13 +171,13 @@
   XalanTransformer::transform(
        const XalanParsedSource&        theParsedXML, 
        const XSLTInputSource&          theStylesheetSource,
  -     const XSLTResultTarget&         theResultTarget)
  +     const XSLTResultTarget&         theResultTarget)
   {
   #if !defined(XALAN_NO_NAMESPACES)
        using std::for_each;
   #endif
   
  -     int             theResult = 0;
  +     int     theResult = 0;
   
        // Clear the error message.
        m_errorMessage.resize(1, '\0');
  @@ -191,7 +191,7 @@
                XalanAutoPtr<XalanParsedSourceHelper>   
theHelper(theParsedXML.createHelper());
                assert(theHelper.get() != 0);
   
  -             DOMSupport&                                             theDOMSupport 
= theHelper->getDOMSupport();
  +             DOMSupport&                                     theDOMSupport = 
theHelper->getDOMSupport();
   
                XMLParserLiaison&                               theParserLiaison = 
theHelper->getParserLiaison();
   
  @@ -200,7 +200,7 @@
   
                XObjectFactoryDefault                   theXObjectFactory;
   
  -             XPathFactoryDefault                             theXPathFactory;
  +             XPathFactoryDefault                     theXPathFactory;
   
                // Create a processor...
                XSLTEngineImpl  theProcessor(
  @@ -278,7 +278,7 @@
                        TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
                }
   
  -             theResult = -1;         
  +             theResult = -1;         
        }
        catch (SAXException& e)
        {
  @@ -316,8 +316,8 @@
                {
                        XalanDOMString theMessage("XalanDOMException caught.  The code 
is ");
                        
  -                     append(theMessage,  
LongToDOMString(long(e.getExceptionCode())));
  -                     append(theMessage,  XalanDOMString("."));                      
                          
  +                     append(theMessage,      
LongToDOMString(long(e.getExceptionCode())));
  +                     append(theMessage,      XalanDOMString("."));                  
                          
   
                        TranscodeToLocalCodePage(theMessage, m_errorMessage, true);
                }
  @@ -334,13 +334,13 @@
   XalanTransformer::transform(
                        const XalanParsedSource&                theParsedXML, 
                        const XalanCompiledStylesheet*  theCompiledStylesheet,
  -                     const XSLTResultTarget&                 theResultTarget)
  +                     const XSLTResultTarget&                 theResultTarget)
   {
   #if !defined(XALAN_NO_NAMESPACES)
        using std::for_each;
   #endif
   
  -     int             theResult = 0;
  +     int     theResult = 0;
   
        // Clear the error message.
        m_errorMessage.resize(1, '\0');
  @@ -354,7 +354,7 @@
                XalanAutoPtr<XalanParsedSourceHelper>   
theHelper(theParsedXML.createHelper());
                assert(theHelper.get() != 0);
   
  -             DOMSupport&                                             theDOMSupport 
= theHelper->getDOMSupport();
  +             DOMSupport&                                     theDOMSupport = 
theHelper->getDOMSupport();
   
                XMLParserLiaison&                               theParserLiaison = 
theHelper->getParserLiaison();
   
  @@ -363,7 +363,7 @@
   
                XObjectFactoryDefault                   theXObjectFactory;
   
  -             XPathFactoryDefault                             theXPathFactory;
  +             XPathFactoryDefault                     theXPathFactory;
   
                // Create a processor...
                XSLTEngineImpl  theProcessor(
  @@ -420,7 +420,7 @@
   
                // Do the transformation...
                theProcessor.process(
  -                                     theParsedXML.getDocument(),             
  +                                     theParsedXML.getDocument(),     
                                        tempResultTarget,                              
         
                                        m_stylesheetExecutionContext);
        }
  @@ -435,7 +435,7 @@
                        TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
                }
   
  -             theResult = -1;         
  +             theResult = -1;         
        }
        catch (SAXException& e)
        {
  @@ -473,8 +473,8 @@
                {
                        XalanDOMString theMessage("XalanDOMException caught.  The code 
is ");
                        
  -                     append(theMessage,  
LongToDOMString(long(e.getExceptionCode())));
  -                     append(theMessage,  XalanDOMString("."));                      
                          
  +                     append(theMessage,      
LongToDOMString(long(e.getExceptionCode())));
  +                     append(theMessage,      XalanDOMString("."));                  
                          
   
                        TranscodeToLocalCodePage(theMessage, m_errorMessage, true);
                }
  @@ -489,15 +489,14 @@
   
   int
   XalanTransformer::transform(
  -     const XSLTInputSource&          theInputSource, 
  -     const XSLTInputSource&          theStylesheetSource,
  -     const XSLTResultTarget&         theResultTarget)
  +                     const XSLTInputSource&                  theInputSource, 
  +                     const XalanCompiledStylesheet*  theCompiledStylesheet,
  +                     const XSLTResultTarget&                 theResultTarget)
   {
  -     // Parse the source document.
        const XalanParsedSource*        theParsedSource = 0;
  -
  + 
        const int       theResult = parseSource(theInputSource, theParsedSource);
  -
  + 
        if (theResult != 0)
        {
                return theResult;
  @@ -505,7 +504,7 @@
        else
        {
                assert(theParsedSource != 0);
  -
  + 
                // Make sure the parsed source is destroyed when
                // the transformation is finished...
                EnsureDestroyParsedSource       theGuard(*this, theParsedSource);
  @@ -513,19 +512,18 @@
                // Do the transformation...
                return transform(
                                                *theParsedSource,
  -                                             theStylesheetSource,
  +                                             theCompiledStylesheet,
                                                theResultTarget);
        }
   }
   
  -
  -
   int
   XalanTransformer::transform(
  -                     const XSLTInputSource&                  theInputSource, 
  -                     const XalanCompiledStylesheet*  theCompiledStylesheet,
  -                     const XSLTResultTarget&                 theResultTarget)
  +     const XSLTInputSource&          theInputSource, 
  +     const XSLTInputSource&          theStylesheetSource,
  +     const XSLTResultTarget&         theResultTarget)
   {
  +     // Parse the source document.
        const XalanParsedSource*        theParsedSource = 0;
   
        const int       theResult = parseSource(theInputSource, theParsedSource);
  @@ -545,7 +543,7 @@
                // Do the transformation...
                return transform(
                                                *theParsedSource,
  -                                             theCompiledStylesheet,
  +                                             theStylesheetSource,
                                                theResultTarget);
        }
   }
  @@ -555,7 +553,7 @@
   int
   XalanTransformer::transform(
                        const XSLTInputSource&          theInputSource,                
 
  -                     const XSLTResultTarget&         theResultTarget)
  +                     const XSLTResultTarget&         theResultTarget)
   {
        // Do the transformation...
        return transform(
  @@ -592,7 +590,7 @@
   
   int
   XalanTransformer::transform(
  -                     const XSLTInputSource&                  theInputSource, 
  +                     const XalanParsedSource&                theParsedSource, 
                        const XalanCompiledStylesheet*  theCompiledStylesheet,
                        void*                                                   
theOutputHandle, 
                        XalanOutputHandlerType                  theOutputHandler,
  @@ -607,7 +605,7 @@
   
        // Do the transformation...
        return transform(
  -                                     theInputSource, 
  +                                     theParsedSource,
                                        theCompiledStylesheet,
                                        theResultTarget);
   }
  @@ -640,7 +638,7 @@
   int
   XalanTransformer::compileStylesheet(
                        const XSLTInputSource&                          
theStylesheetSource,
  -                     const XalanCompiledStylesheet*&         theCompiledStylesheet)
  +                     const XalanCompiledStylesheet*&         theCompiledStylesheet)
   {
        // Clear the error message.
        m_errorMessage.resize(1, '\0');
  @@ -648,7 +646,7 @@
        // Store error messages from problem listener.
        XalanDOMString  theErrorMessage;
   
  -     int                             theResult = 0;
  +     int                     theResult = 0;
   
        try
        {
  @@ -665,7 +663,7 @@
   
                XObjectFactoryDefault                   theXObjectFactory;
   
  -             XPathFactoryDefault                             theXPathFactory;
  +             XPathFactoryDefault                     theXPathFactory;
   
                // Create a processor...
                XSLTEngineImpl  theProcessor(
  @@ -741,9 +739,9 @@
                {
                        XalanDOMString theMessage("XalanDOMException caught.  The code 
is ");
   
  -                     append(theMessage,  
LongToDOMString(long(e.getExceptionCode())));
  +                     append(theMessage,      
LongToDOMString(long(e.getExceptionCode())));
   
  -                     append(theMessage,  XalanDOMString("."));
  +                     append(theMessage,      XalanDOMString("."));
   
                        TranscodeToLocalCodePage(theMessage, m_errorMessage, true);
                }
  @@ -756,24 +754,40 @@
   
   
   
  -void
  +int
   XalanTransformer::destroyStylesheet(const XalanCompiledStylesheet*   theStylesheet)
   {
   #if !defined(XALAN_NO_NAMESPACES)
        using std::find;
   #endif
   
  -     const CompiledStylesheetPtrVectorType::iterator         i =
  +     const CompiledStylesheetPtrVectorType::iterator         i =
                find(
                        m_compiledStylesheets.begin(),
                        m_compiledStylesheets.end(),
                        theStylesheet);
  +
  +     if (i == m_compiledStylesheets.end())
  +     {
  +             const char* const       theStylesheetErrorMessage =
  +                             "An invalid compiled stylesheet was provided.";
  +
  +             const unsigned int      theLength =
  +                     length(theStylesheetErrorMessage);
   
  -     if (i != m_compiledStylesheets.end())
  +             m_errorMessage.resize(theLength + 1, CharVectorType::value_type(0));
  +
  +             strncpy(&*m_errorMessage.begin(), theStylesheetErrorMessage, 
theLength);
  +
  +             return -1;
  +     }
  +     else
        {
                m_compiledStylesheets.erase(i);
   
                delete theStylesheet;
  +
  +             return 0;
        }
   }
   
  @@ -789,7 +803,7 @@
        m_errorMessage.clear();
        m_errorMessage.push_back(0);
   
  -     int     theResult = 0;
  +     int theResult = 0;
   
        try
        {
  @@ -827,9 +841,9 @@
        {
                XalanDOMString theMessage("XalanDOMException caught.  The code is ");
                        
  -             append(theMessage,  LongToDOMString(long(e.getExceptionCode())));
  +             append(theMessage,      LongToDOMString(long(e.getExceptionCode())));
   
  -             append(theMessage,  XalanDOMString("."));                              
                  
  +             append(theMessage,      XalanDOMString("."));                          
                  
   
                TranscodeToLocalCodePage(theMessage, m_errorMessage, true);
   
  @@ -841,7 +855,7 @@
   
   
   
  -void
  +int
   XalanTransformer::destroyParsedSource(const XalanParsedSource*       
theParsedSource)
   {
   #if !defined(XALAN_NO_NAMESPACES)
  @@ -853,12 +867,28 @@
                        m_parsedSources.begin(),
                        m_parsedSources.end(),
                        theParsedSource);
  +
  +     if (i == m_parsedSources.end())
  +     {
  +             const char* const       theParsedSourceErrorMessage =
  +                             "An invalid parsed source was provided.";
  +
  +             const unsigned int      theLength =
  +                     length(theParsedSourceErrorMessage);
   
  -     if (i != m_parsedSources.end())
  +             m_errorMessage.resize(theLength + 1, CharVectorType::value_type(0));
  +
  +             strncpy(&*m_errorMessage.begin(), theParsedSourceErrorMessage, 
theLength);
  +
  +             return -1;
  +     }
  +     else
        {
                m_parsedSources.erase(i);
   
                delete theParsedSource;
  +
  +             return 0;
        }
   }
   
  @@ -880,7 +910,7 @@
   {
        m_parsedSources.reserve(m_parsedSources.size() + 1);
   
  -     XalanDocumentBuilder* const             theNewBuilder = new 
XalanDefaultDocumentBuilder;
  +     XalanDocumentBuilder* const     theNewBuilder = new 
XalanDefaultDocumentBuilder;
   
        m_parsedSources.push_back(theNewBuilder);
   
  @@ -901,7 +931,7 @@
   XalanTransformer::installExternalFunction(
                        const XalanDOMString&   theNamespace,
                        const XalanDOMString&   functionName,
  -                     const Function&                 function)
  +                     const Function&                 function)
   {
        m_functionPairs.push_back(FunctionPairType(QNameByValue(theNamespace, 
functionName), function.clone()));
   }
  @@ -912,7 +942,7 @@
   XalanTransformer::installExternalFunctionGlobal(
                        const XalanDOMString&   theNamespace,
                        const XalanDOMString&   functionName,
  -                     const Function&                 function)
  +                     const Function&                 function)
   {
        XSLTProcessorEnvSupportDefault::installExternalFunctionGlobal(
                        theNamespace,
  @@ -933,7 +963,7 @@
                {
                        delete m_functionPairs[i].second;
   
  -                     m_functionPairs.erase(m_functionPairs.begin() + i);            
 
  +                     m_functionPairs.erase(m_functionPairs.begin() + i);     
                }
        }       
   }
  @@ -977,8 +1007,8 @@
   
                m_stylesheetExecutionContext.reset();
   
  -        // Clear the ParamPairVectorType.
  -        m_paramPairs.clear();
  +             // Clear the ParamPairVectorType.
  +             m_paramPairs.clear();
        }
        catch(...)
        {
  
  
  
  1.26      +64 -65    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.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- XalanTransformer.hpp      2001/06/21 15:39:44     1.25
  +++ XalanTransformer.hpp      2001/06/22 18:51:01     1.26
  @@ -10,33 +10,33 @@
    * are met:
    *
    * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  + *     notice, this list of conditions and the following disclaimer. 
    *
    * 2. Redistributions in binary form must reproduce the above copyright
  - *    notice, this list of conditions and the following disclaimer in
  - *    the documentation and/or other materials provided with the
  - *    distribution.
  + *     notice, this list of conditions and the following disclaimer in
  + *     the documentation and/or other materials provided with the
  + *     distribution.
    *
    * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:  
  - *       "This product includes software developed by the
  - *        Apache Software Foundation (http://www.apache.org/)."
  - *    Alternately, this acknowledgment may appear in the software itself,
  - *    if and wherever such third-party acknowledgments normally appear.
  + *     if any, must include the following acknowledgment:  
  + *            "This product includes software developed by the
  + *             Apache Software Foundation (http://www.apache.org/)."
  + *     Alternately, this acknowledgment may appear in the software itself,
  + *     if and wherever such third-party acknowledgments normally appear.
    *
    * 4. The names "Xalan" and "Apache Software Foundation" must
  - *    not be used to endorse or promote products derived from this
  - *    software without prior written permission. For written 
  - *    permission, please contact [EMAIL PROTECTED]
  + *     not be used to endorse or promote products derived from this
  + *     software without prior written permission. For written 
  + *     permission, please contact [EMAIL PROTECTED]
    *
    * 5. Products derived from this software may not be called "Apache",
  - *    nor may "Apache" appear in their name, without prior written
  - *    permission of the Apache Software Foundation.
  + *     nor may "Apache" appear in their name, without prior written
  + *     permission of the Apache Software Foundation.
    *
    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * DISCLAIMED.       IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  @@ -135,14 +135,14 @@
        transform(
                        const XalanParsedSource&        theParsedXML, 
                        const XSLTInputSource&          theStylesheetSource,
  -                     const XSLTResultTarget&         theResultTarget);
  +                     const XSLTResultTarget&         theResultTarget);
   
        /**
         * Transform will apply the compiled stylesheet to the parsed xml source
         * and write the transformation output to the target. 
         *
         * @param theParsedXML                  the parsed input source
  -      * @param theCompiledStylesheet pointer to a compiled stylesheet
  +      * @param theCompiledStylesheet pointer to a compiled stylesheet
         * @param theResultTarget               output source 
         * @return      0 for success
         */
  @@ -150,7 +150,7 @@
        transform(
                        const XalanParsedSource&                theParsedXML, 
                        const XalanCompiledStylesheet*  theCompiledStylesheet,
  -                     const XSLTResultTarget&                 theResultTarget);
  +                     const XSLTResultTarget&                 theResultTarget);
   
        /**
         * Transform will apply the stylesheet source to the input source
  @@ -167,26 +167,9 @@
        transform(
                        const XSLTInputSource&          theInputSource, 
                        const XSLTInputSource&          theStylesheetSource,
  -                     const XSLTResultTarget&         theResultTarget);
  +                     const XSLTResultTarget&         theResultTarget);
   
        /**
  -      * Transform will apply the compiled stylesheet to the input source
  -      * and write the transformation output to the target. The input 
  -      * source and result target can be a file name, a stream or a root
  -      * node. 
  -      *
  -      * @param theInputSource                input source
  -      * @param theCompiledStylesheet pointer to a compiled stylesheet
  -      * @param theResultTarget               output source 
  -      * @return      0 for success
  -      */
  -     int
  -     transform(
  -                     const XSLTInputSource&                  theInputSource, 
  -                     const XalanCompiledStylesheet*  theCompiledStylesheet,
  -                     const XSLTResultTarget&                 theResultTarget);
  -
  -     /**
         * Transform will apply the stylesheet provided as a PI in the 
         * XML of the input source and write the transformation output to 
         * the target. The input source and result target can be a file 
  @@ -199,7 +182,7 @@
        int
        transform(
                        const XSLTInputSource&          theInputSource,                
 
  -                     const XSLTResultTarget&         theResultTarget);
  +                     const XSLTResultTarget&         theResultTarget);
   
        /**
         * Transform will apply the stylesheet source to the input source
  @@ -229,6 +212,23 @@
        
        /**
         * Transform will apply the compiled stylesheet to the input source
  +      * and write the transformation output to the target. The input 
  +      * source and result target can be a file name, a stream or a root
  +      * node. 
  +      *
  +      * @param theInputSource                input source
  +      * @param theCompiledStylesheet pointer to a compiled stylesheet
  +      * @param theResultTarget               output source 
  +      * @return      0 for success
  +      */
  +     int
  +     transform(
  +                     const XSLTInputSource&                  theInputSource, 
  +                     const XalanCompiledStylesheet*  theCompiledStylesheet,
  +                     const XSLTResultTarget&                 theResultTarget);
  + 
  +     /**
  +      * Transform will apply the compiled stylesheet to the source
         * and write the transformation result to a callback function  
         * in pre-allocated blocks. The input source can be a file name, 
         * a stream or a root node. Upon termination, Xalan releases any 
  @@ -238,8 +238,8 @@
         * - See XalanTransformerOutputStream and XalanOutputHandlerType 
         * for more details.
         * 
  -      * @param theInputSource                input source
  -      * @param theCompiledStylesheet pointer to a compiled stylesheet
  +      * @param theParsedSource               Parsed source instance
  +      * @param theCompiledStylesheet pointer to a compiled stylesheet
         * @param theOutputHandle               void pointer passed through to 
callback.
         * @param theOutputHandler              a user defined callback function.
         * @param theFlushHandler               An optional user-defined callback 
function.
  @@ -247,7 +247,7 @@
         */
        int
        transform(
  -                     const XSLTInputSource&                  theInputSource,
  +                     const XalanParsedSource&                theParsedSource,
                        const XalanCompiledStylesheet*  theCompiledStylesheet,
                        void*                                                   
theOutputHandle,
                        XalanOutputHandlerType                  theOutputHandler,
  @@ -282,7 +282,7 @@
         * a file name, a stream or a root node.   The XalanTransformer
         * instance owns the XalanCompiledStylesheet instance and will
         * delete it when the XalanTransformer instance goes out of scope,
  -      * or you explicitly call destroyStylesheet().  You must not delete
  +      * or you explicitly call destroyStylesheet().  You must not delete
         * the instance yourself.
         *
         * @param theStylesheetSource input source
  @@ -292,16 +292,16 @@
        int
        compileStylesheet(
                        const XSLTInputSource&                          
theStylesheetSource,
  -                     const XalanCompiledStylesheet*&         theCompiledStylesheet);
  +                     const XalanCompiledStylesheet*&         theCompiledStylesheet);
   
        /**
         * Destroy a XalanCompiledStylesheet instance created by a previous
  -      * call to compileStylesheet().  Passing a pointer that is not created
  -      * by a call to createDocumentBuilder() can result in undefined behavior.
  +      * call to compileStylesheet().
         *
  -      * @param theStylesheet The instance to destroy.
  +      * @param theStylesheet The instance to destroy.
  +      * @return 0 for success 
         */
  -     void
  +     int
        destroyStylesheet(const XalanCompiledStylesheet*        theStylesheet);
   
        /**
  @@ -325,17 +325,16 @@
   
        /**
         * Destroy a parsed source created by a previous call to parseSource().
  -      * Passing a pointer that was not created by a call to parseSource() can
  -      * result in undefined behavior.
         *
         * @param theParsedSource The XalanParsedSource instance to destroy.
  +      * @return 0 for success 
         */
  -     void
  +     int
        destroyParsedSource(const XalanParsedSource*    theParsedSource);
   
        /**
         * Create a document builder.  Using the document builder, you
  -      * can construct a document using SAX2 interfaces.  The XalanTransformer
  +      * can construct a document using SAX2 interfaces.      The XalanTransformer
         * instance owns the document builder and will delete it when the
         * XalanTransformer instance goes out of scope, or you explicitly call
         * deleteDocumentBuilder().  You must not delete the instance yourself.
  @@ -366,7 +365,7 @@
        installExternalFunction(
                        const XalanDOMString&   theNamespace,
                        const XalanDOMString&   functionName,
  -                     const Function&                 function);
  +                     const Function&                 function);
   
        /**
         * Install an external function in the global space.
  @@ -379,7 +378,7 @@
        installExternalFunctionGlobal(
                        const XalanDOMString&   theNamespace,
                        const XalanDOMString&   functionName,
  -                     const Function&                 function);
  +                     const Function&                 function);
   
        /**
         * Uninstall an external local function.
  @@ -417,7 +416,7 @@
   
        /**
         * Returns the last error that occurred as a 
  -      * result of calling transform. 
  +      * result of calling transform. 
         *
         * @return      error message const character pointer.
         */
  @@ -428,17 +427,17 @@
   #if defined(XALAN_NO_NAMESPACES)
        typedef vector<XalanCompiledStylesheet*>                        
CompiledStylesheetPtrVectorType;
        typedef vector<XalanParsedSource*>                                      
ParsedSourcePtrVectorType;
  -     typedef pair<XalanDOMString, XalanDOMString>            ParamPairType;
  -     typedef vector<ParamPairType>                           ParamPairVectorType;
  -     typedef pair<QNameByValue, Function*>                           
FunctionPairType;
  -     typedef vector<FunctionPairType>                            
FunctionParamPairVectorType;
  +     typedef pair<XalanDOMString, XalanDOMString>            ParamPairType;
  +     typedef vector<ParamPairType>                                           
ParamPairVectorType;
  +     typedef pair<QNameByValue, Function*>                           
FunctionPairType;
  +     typedef vector<FunctionPairType>                                        
FunctionParamPairVectorType;
   #else
  -     typedef std::vector<const XalanCompiledStylesheet*>     
CompiledStylesheetPtrVectorType;
  +     typedef std::vector<const XalanCompiledStylesheet*> 
CompiledStylesheetPtrVectorType;
        typedef std::vector<const XalanParsedSource*>           
ParsedSourcePtrVectorType;
        typedef std::pair<XalanDOMString, XalanDOMString>       ParamPairType;
  -     typedef std::vector<ParamPairType>                      ParamPairVectorType;
  -     typedef std::pair<QNameByValue, Function*>              FunctionPairType;
  -     typedef std::vector<FunctionPairType>                   
FunctionParamPairVectorType;
  +     typedef std::vector<ParamPairType>                                      
ParamPairVectorType;
  +     typedef std::pair<QNameByValue, Function*>                      
FunctionPairType;
  +     typedef std::vector<FunctionPairType>                           
FunctionParamPairVectorType;
   #endif
   
        class EnsureDestroyParsedSource
  @@ -506,7 +505,7 @@
   
                XalanTransformer&                       m_transformer;
   
  -             XalanDocumentBuilder* const     m_documentBuilder;
  +             XalanDocumentBuilder* const m_documentBuilder;
        };
   
   protected:
  @@ -536,13 +535,13 @@
   
        StylesheetExecutionContextDefault               m_stylesheetExecutionContext;
   
  -     CompiledStylesheetPtrVectorType                 m_compiledStylesheets;
  +     CompiledStylesheetPtrVectorType                 m_compiledStylesheets;
   
        ParsedSourcePtrVectorType                               m_parsedSources;
   
  -    ParamPairVectorType                     m_paramPairs;
  +     ParamPairVectorType                                     m_paramPairs;
   
  -     FunctionParamPairVectorType                             m_functionPairs;
  +     FunctionParamPairVectorType                     m_functionPairs;
   
        CharVectorType                                                  m_errorMessage;
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to