dbertoni    2004/10/28 12:40:06

  Modified:    c/src/xalanc/XalanTransformer XalanDefaultParsedSource.cpp
                        XalanDefaultParsedSource.hpp XalanTransformer.cpp
                        XalanTransformer.hpp
  Log:
  Provide an option to pool all text node strings.
  
  Revision  Changes    Path
  1.5       +78 -76    
xml-xalan/c/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp
  
  Index: XalanDefaultParsedSource.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XalanDefaultParsedSource.cpp      26 Feb 2004 23:07:13 -0000      1.4
  +++ XalanDefaultParsedSource.cpp      28 Oct 2004 19:40:06 -0000      1.5
  @@ -42,10 +42,10 @@
   
   
   XalanDefaultParsedSourceDOMSupport::XalanDefaultParsedSourceDOMSupport(
  -                     const XalanSourceTreeParserLiaison&             
theParserLiaison,
  -                     const XalanSourceTreeDOMSupport&                
theDOMSupport) :
  -     XalanSourceTreeDOMSupport(theParserLiaison),
  -     m_domSupport(theDOMSupport)
  +            const XalanSourceTreeParserLiaison&     theParserLiaison,
  +            const XalanSourceTreeDOMSupport&        theDOMSupport) :
  +    XalanSourceTreeDOMSupport(theParserLiaison),
  +    m_domSupport(theDOMSupport)
   {
   }
   
  @@ -66,45 +66,45 @@
   
   const XalanDOMString&
   XalanDefaultParsedSourceDOMSupport::getUnparsedEntityURI(
  -                     const XalanDOMString&   theName,
  -                     const XalanDocument&    theDocument) const
  +            const XalanDOMString&   theName,
  +            const XalanDocument&    theDocument) const
   {
  -     // Check the wrapped XalanSourceTreeDOMSupport instance...
  -     const XalanDOMString&   theURI =
  -                     m_domSupport.getUnparsedEntityURI(
  -                                     theName,
  -                                     theDocument);
  -
  -     if (length(theURI) != 0)
  -     {
  -             return theURI;
  -     }
  -     else
  -     {
  -             // Chain up to our parent...
  -             return XalanSourceTreeDOMSupport::getUnparsedEntityURI(
  -                                     theName,
  -                                     theDocument);
  -     }
  +    // Check the wrapped XalanSourceTreeDOMSupport instance...
  +    const XalanDOMString&   theURI =
  +            m_domSupport.getUnparsedEntityURI(
  +                    theName,
  +                    theDocument);
  +
  +    if (length(theURI) != 0)
  +    {
  +        return theURI;
  +    }
  +    else
  +    {
  +        // Chain up to our parent...
  +        return XalanSourceTreeDOMSupport::getUnparsedEntityURI(
  +                    theName,
  +                    theDocument);
  +    }
   }
   
   
   
   bool
   XalanDefaultParsedSourceDOMSupport::isNodeAfter(
  -                     const XalanNode&        node1,
  -                     const XalanNode&        node2) const
  +            const XalanNode&    node1,
  +            const XalanNode&    node2) const
   {
  -     return m_domSupport.isNodeAfter(
  -                                     node1, 
  -                                     node2);
  +    return m_domSupport.isNodeAfter(
  +                    node1, 
  +                    node2);
   }
   
   
   
  -XalanDefaultParsedSourceHelper::XalanDefaultParsedSourceHelper(const 
XalanSourceTreeDOMSupport&              theSourceDOMSupport) :
  -     m_parserLiaison(),
  -     m_domSupport(m_parserLiaison, theSourceDOMSupport)
  +XalanDefaultParsedSourceHelper::XalanDefaultParsedSourceHelper(const 
XalanSourceTreeDOMSupport&     theSourceDOMSupport) :
  +    m_parserLiaison(),
  +    m_domSupport(m_parserLiaison, theSourceDOMSupport)
   {
   }
   
  @@ -119,7 +119,7 @@
   DOMSupport&
   XalanDefaultParsedSourceHelper::getDOMSupport()
   {
  -     return m_domSupport;
  +    return m_domSupport;
   }
   
   
  @@ -127,51 +127,53 @@
   XMLParserLiaison&
   XalanDefaultParsedSourceHelper::getParserLiaison()
   {
  -     return m_parserLiaison;
  +    return m_parserLiaison;
   }
   
   
   
   XalanDefaultParsedSource::XalanDefaultParsedSource(
  -                     const InputSourceType&  theInputSource,
  -                     bool                                    fValidate,
  -                     ErrorHandlerType*               theErrorHandler,
  -                     EntityResolverType*             theEntityResolver,
  -                     const XalanDOMChar*             
theExternalSchemaLocation,
  -                     const XalanDOMChar*             
theExternalNoNamespaceSchemaLocation) :
  -     XalanParsedSource(),
  -     m_parserLiaison(),
  -     m_domSupport(m_parserLiaison),
  -     m_parsedSource(0)
  -{
  -     m_parserLiaison.setUseValidation(fValidate);
  -     m_parserLiaison.setEntityResolver(theEntityResolver);
  -     m_parserLiaison.setErrorHandler(theErrorHandler);
  -     m_parserLiaison.setExternalSchemaLocation(theExternalSchemaLocation);
  -     
m_parserLiaison.setExternalNoNamespaceSchemaLocation(theExternalNoNamespaceSchemaLocation);
  -
  -     m_parsedSource = 
m_parserLiaison.mapDocument(m_parserLiaison.parseXMLStream(theInputSource));
  -     assert(m_parsedSource != 0);
  -
  -     m_domSupport.setParserLiaison(&m_parserLiaison);
  -
  -     const XalanDOMChar* const       theSystemID = 
theInputSource.getSystemId();
  -
  -     if (theSystemID != 0)
  -     {
  -             try
  -             {
  -                     m_uri = URISupport::getURLStringFromString(theSystemID);
  -             }
  -             catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
  -             {
  -                     // Assume that any exception here relates to get the 
url from
  -                     // the system ID.  We'll assume that it's just a fake 
base identifier
  -                     // since the parser would have thrown an error if the 
system ID
  -                     // wasn't resolved.
  -                     m_uri = theSystemID;
  -             }
  -     }
  +            const InputSourceType&  theInputSource,
  +            bool                    fValidate,
  +            ErrorHandlerType*       theErrorHandler,
  +            EntityResolverType*     theEntityResolver,
  +            const XalanDOMChar*     theExternalSchemaLocation,
  +            const XalanDOMChar*     theExternalNoNamespaceSchemaLocation,
  +            bool                    fPoolAllTextNodes) :
  +    XalanParsedSource(),
  +    m_parserLiaison(),
  +    m_domSupport(m_parserLiaison),
  +    m_parsedSource(0)
  +{
  +    m_parserLiaison.setUseValidation(fValidate);
  +    m_parserLiaison.setEntityResolver(theEntityResolver);
  +    m_parserLiaison.setErrorHandler(theErrorHandler);
  +    m_parserLiaison.setExternalSchemaLocation(theExternalSchemaLocation);
  +    
m_parserLiaison.setExternalNoNamespaceSchemaLocation(theExternalNoNamespaceSchemaLocation);
  +    m_parserLiaison.setPoolAllText(fPoolAllTextNodes);
  +
  +    m_parsedSource = 
m_parserLiaison.mapDocument(m_parserLiaison.parseXMLStream(theInputSource));
  +    assert(m_parsedSource != 0);
  +
  +    m_domSupport.setParserLiaison(&m_parserLiaison);
  +
  +    const XalanDOMChar* const   theSystemID = theInputSource.getSystemId();
  +
  +    if (theSystemID != 0)
  +    {
  +        try
  +        {
  +            m_uri = URISupport::getURLStringFromString(theSystemID);
  +        }
  +        catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
  +        {
  +            // Assume that any exception here relates to get the url from
  +            // the system ID.  We'll assume that it's just a fake base 
identifier
  +            // since the parser would have thrown an error if the system ID
  +            // wasn't resolved.
  +            m_uri = theSystemID;
  +        }
  +    }
   }
   
   
  @@ -182,10 +184,10 @@
   
   
   
  -XalanDocument*       
  +XalanDocument*  
   XalanDefaultParsedSource::getDocument() const
   {
  -     return m_parsedSource;
  +    return m_parsedSource;
   }
   
   
  @@ -193,7 +195,7 @@
   XalanParsedSourceHelper*
   XalanDefaultParsedSource::createHelper() const
   {
  -     return new XalanDefaultParsedSourceHelper(m_domSupport);
  +    return new XalanDefaultParsedSourceHelper(m_domSupport);
   }
   
   
  @@ -201,7 +203,7 @@
   const XalanDOMString&
   XalanDefaultParsedSource::getURI() const
   {
  -     return m_uri;
  +    return m_uri;
   }
   
   
  
  
  
  1.5       +68 -67    
xml-xalan/c/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp
  
  Index: XalanDefaultParsedSource.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XalanDefaultParsedSource.hpp      26 Feb 2004 23:07:13 -0000      1.4
  +++ XalanDefaultParsedSource.hpp      28 Oct 2004 19:40:06 -0000      1.5
  @@ -23,6 +23,7 @@
   
   
   
  +#include <xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp>
   #include <xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
   #include <xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
   
  @@ -37,7 +38,6 @@
   
   
   class XSLTInputSource;
  -class XalanSourceTreeDocument;
   
   
   
  @@ -45,39 +45,39 @@
   {
   public:
   
  -     XalanDefaultParsedSourceDOMSupport(
  -                     const XalanSourceTreeParserLiaison&             
theParserLiaison,
  -                     const XalanSourceTreeDOMSupport&                
theDOMSupport);
  -
  -     virtual
  -     ~XalanDefaultParsedSourceDOMSupport();
  -
  -     virtual void
  -     reset();
  -
  -     // These interfaces are inherited from DOMSupport...
  -
  -     virtual const XalanDOMString&
  -     getUnparsedEntityURI(
  -                     const XalanDOMString&   theName,
  -                     const XalanDocument&    theDocument) const;
  -
  -     virtual bool
  -     isNodeAfter(
  -                     const XalanNode&        node1,
  -                     const XalanNode&        node2) const;
  +    XalanDefaultParsedSourceDOMSupport(
  +            const XalanSourceTreeParserLiaison&     theParserLiaison,
  +            const XalanSourceTreeDOMSupport&        theDOMSupport);
  +
  +    virtual
  +    ~XalanDefaultParsedSourceDOMSupport();
  +
  +    virtual void
  +    reset();
  +
  +    // These interfaces are inherited from DOMSupport...
  +
  +    virtual const XalanDOMString&
  +    getUnparsedEntityURI(
  +            const XalanDOMString&   theName,
  +            const XalanDocument&    theDocument) const;
  +
  +    virtual bool
  +    isNodeAfter(
  +            const XalanNode&    node1,
  +            const XalanNode&    node2) const;
   
   private:
   
  -     // Not implemented...
  -     XalanDefaultParsedSourceDOMSupport(const 
XalanDefaultParsedSourceDOMSupport&);
  +    // Not implemented...
  +    XalanDefaultParsedSourceDOMSupport(const 
XalanDefaultParsedSourceDOMSupport&);
   
  -     XalanDefaultParsedSourceDOMSupport&
  -     operator=(const XalanDefaultParsedSourceDOMSupport&);
  +    XalanDefaultParsedSourceDOMSupport&
  +    operator=(const XalanDefaultParsedSourceDOMSupport&);
   
   
  -     // Data members...
  -     const XalanSourceTreeDOMSupport&        m_domSupport;
  +    // Data members...
  +    const XalanSourceTreeDOMSupport&    m_domSupport;
   };
   
   
  @@ -86,29 +86,29 @@
   {
   public:
   
  -     XalanDefaultParsedSourceHelper(const XalanSourceTreeDOMSupport&         
theSourceDOMSupport);
  +    XalanDefaultParsedSourceHelper(const XalanSourceTreeDOMSupport&     
theSourceDOMSupport);
   
  -     ~XalanDefaultParsedSourceHelper();
  +    ~XalanDefaultParsedSourceHelper();
   
  -     virtual DOMSupport&
  -     getDOMSupport();
  +    virtual DOMSupport&
  +    getDOMSupport();
   
  -     virtual XMLParserLiaison&
  -     getParserLiaison();
  +    virtual XMLParserLiaison&
  +    getParserLiaison();
   
   private:
   
  -     // Not implemented...
  -     XalanDefaultParsedSourceHelper(const XalanDefaultParsedSourceHelper&);
  +    // Not implemented...
  +    XalanDefaultParsedSourceHelper(const XalanDefaultParsedSourceHelper&);
   
  -     XalanDefaultParsedSourceHelper&
  -     operator=(const XalanDefaultParsedSourceHelper&);
  +    XalanDefaultParsedSourceHelper&
  +    operator=(const XalanDefaultParsedSourceHelper&);
   
   
  -     // Data members...
  -     XalanSourceTreeParserLiaison            m_parserLiaison;
  +    // Data members...
  +    XalanSourceTreeParserLiaison        m_parserLiaison;
   
  -     XalanDefaultParsedSourceDOMSupport      m_domSupport;
  +    XalanDefaultParsedSourceDOMSupport  m_domSupport;
   };
   
   
  @@ -121,43 +121,44 @@
   {
   public:
   
  -     XalanDefaultParsedSource(
  -                     const InputSourceType&  theInputSource,
  -                     bool                                    fValidate = 
false,
  -                     ErrorHandlerType*               theErrorHandler = 0,
  -                     EntityResolverType*             theEntityResolver = 0,
  -                     const XalanDOMChar*             
theExternalSchemaLocation = 0,
  -                     const XalanDOMChar*             
theExternalNoNamespaceSchemaLocation = 0);
  -
  -     virtual
  -     ~XalanDefaultParsedSource();
  +    XalanDefaultParsedSource(
  +            const InputSourceType&  theInputSource,
  +            bool                    fValidate = false,
  +            ErrorHandlerType*       theErrorHandler = 0,
  +            EntityResolverType*     theEntityResolver = 0,
  +            const XalanDOMChar*     theExternalSchemaLocation = 0,
  +            const XalanDOMChar*     theExternalNoNamespaceSchemaLocation = 0,
  +            bool                    fPoolAllTextNodes = 
XalanSourceTreeDocument::getPoolAllTextNodes());
  +
  +    virtual
  +    ~XalanDefaultParsedSource();
   
  -     virtual XalanDocument*
  -     getDocument() const;
  +    virtual XalanDocument*
  +    getDocument() const;
   
  -     virtual XalanParsedSourceHelper*
  -     createHelper() const;
  +    virtual XalanParsedSourceHelper*
  +    createHelper() const;
   
  -     virtual const XalanDOMString&
  -     getURI() const;
  +    virtual const XalanDOMString&
  +    getURI() const;
   
   private:
   
  -     // Not implemented...
  -     XalanDefaultParsedSource(const XalanDefaultParsedSource&);
  +    // Not implemented...
  +    XalanDefaultParsedSource(const XalanDefaultParsedSource&);
   
  -     XalanDefaultParsedSource&
  -     operator=(const XalanDefaultParsedSource&);
  +    XalanDefaultParsedSource&
  +    operator=(const XalanDefaultParsedSource&);
   
   
  -     // Data members...
  -     XalanSourceTreeParserLiaison    m_parserLiaison;
  +    // Data members...
  +    XalanSourceTreeParserLiaison    m_parserLiaison;
   
  -     XalanSourceTreeDOMSupport               m_domSupport;
  +    XalanSourceTreeDOMSupport       m_domSupport;
   
  -     XalanSourceTreeDocument*                m_parsedSource;
  +    XalanSourceTreeDocument*        m_parsedSource;
   
  -     XalanDOMString                                  m_uri;
  +    XalanDOMString                  m_uri;
   };
   
   
  @@ -166,7 +167,7 @@
   
   
   
  -#endif       // XALANDEFAULTPARSEDSOURCE_HEADER_GUARD
  +#endif  // XALANDEFAULTPARSEDSOURCE_HEADER_GUARD
   
   
   
  
  
  
  1.17      +6 -5      
xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.cpp
  
  Index: XalanTransformer.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XalanTransformer.cpp      26 Jul 2004 02:09:25 -0000      1.16
  +++ XalanTransformer.cpp      28 Oct 2004 19:40:06 -0000      1.17
  @@ -119,6 +119,7 @@
        m_warningStream(&std::cerr),
   #endif
        m_outputEncoding(),
  +    m_poolAllTextNodes(XalanSourceTreeDocument::getPoolAllTextNodes()),
        m_stylesheetExecutionContext(new StylesheetExecutionContextDefault)
   {
   #if defined(XALAN_USE_ICU)
  @@ -132,7 +133,6 @@
        
m_stylesheetExecutionContext->installFormatNumberFunctor(theFormatNumberFunctor.get());
        theICUFunctor.release();
        theFormatNumberFunctor.release();
  -
   #endif
   }
   
  @@ -174,10 +174,10 @@
        // Initialize Xalan. 
        XalanAutoPtr<XSLTInit>                  initGuard(new XSLTInit);
        XalanAutoPtr<XSLTInputSource>   inputSourceGuard(new XSLTInputSource);
  -     EnsureFunctionsInstallation             instalGuard; 
  -     instalGuard.install();
  +     EnsureFunctionsInstallation             installGuard; 
  +     installGuard.install();
   
  -     instalGuard.release();
  +     installGuard.release();
        s_xsltInit = initGuard.release();
        s_emptyInputSource = inputSourceGuard.release();
   }
  @@ -678,7 +678,8 @@
                                                m_errorHandler,
                                                m_entityResolver,
                                                getExternalSchemaLocation(),
  -                                             
getExternalNoNamespaceSchemaLocation());
  +                                             
getExternalNoNamespaceSchemaLocation(),
  +                        m_poolAllTextNodes);
                }
   
                // Store it in a vector.
  
  
  
  1.11      +28 -0     
xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.hpp
  
  Index: XalanTransformer.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.hpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XalanTransformer.hpp      31 Jul 2004 06:05:11 -0000      1.10
  +++ XalanTransformer.hpp      28 Oct 2004 19:40:06 -0000      1.11
  @@ -637,6 +637,32 @@
        }
   
        /**
  +       * This member functions gets the flag to determine of a default 
parsed source
  +       * tree will pool the values of all of the text nodes in the XML 
document.
  +      *
  +       * @return The boolean value for the flag.
  +       */
  +    bool
  +    getPoolAllTextNodes() const
  +    {
  +        return m_poolAllTextNodes;
  +    }
  +
  +     /**
  +       * This member functions sets the flag to determine of a default 
parsed source
  +       * tree will pool the values of all of the text nodes in the XML 
document.  This
  +       * can result in significant memory savings if there are lots of 
repeated values
  +      * in text nodes.
  +      *
  +       * @param fPool The boolean value for the flag.
  +       */
  +    void
  +    setPoolAllTextNodes(bool    fPool)
  +    {
  +        m_poolAllTextNodes = fPool;
  +    }
  +
  +     /**
         * This method returns the installed ProblemListener instance.
         *
         * @return The pointer to the installed ProblemListener instance.
  @@ -962,6 +988,8 @@
        StreamType*                                                             
m_warningStream;
   
        XalanDOMString                                                  
m_outputEncoding;
  +
  +    bool                                    m_poolAllTextNodes;
   
        // This should always be the latest data member!!!
        StylesheetExecutionContextDefault*              
m_stylesheetExecutionContext;
  
  
  

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

Reply via email to