auriemma    01/01/03 07:18:33

  Modified:    c/src/XSLT StylesheetHandler.cpp StylesheetHandler.hpp
  Log:
  Accumulate character buffer to create contiguous character data where 
possible.
  
  Revision  Changes    Path
  1.50      +38 -4     xml-xalan/c/src/XSLT/StylesheetHandler.cpp
  
  Index: StylesheetHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetHandler.cpp,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- StylesheetHandler.cpp     2001/01/02 16:19:03     1.49
  +++ StylesheetHandler.cpp     2001/01/03 15:18:25     1.50
  @@ -137,10 +137,11 @@
        m_strayElements(),
        m_whiteSpaceElems(),
        m_pTemplate(0),
  -     m_lastPopped(0),
  +     m_lastPopped(0),        
        m_inTemplate(false),
        m_foundStylesheet(false),
        m_foundNotImport(false),
  +     m_accumulateText(),
        m_inLXSLTScript(false),
        m_LXSLTScriptBody(),
        m_LXSLTScriptLang(),
  @@ -278,6 +279,7 @@
   #if !defined(XALAN_NO_NAMESPACES)
                using std::for_each;
   #endif
  +             processAccumulatedText();
   
                // Clean up the whitespace elements.
                for_each(m_whiteSpaceElems.begin(),
  @@ -1284,6 +1286,8 @@
        using std::for_each;
   #endif
   
  +     processAccumulatedText();
  +
        // Clean up the whitespace elements.
        for_each(m_whiteSpaceElems.begin(),
                         m_whiteSpaceElems.end(),
  @@ -1372,7 +1376,7 @@
        if (m_exceptionPending == true)
                return;
   
  -     processText(chars, length);
  +     accumulateText(chars, length);
   }
   
   
  @@ -1386,6 +1390,8 @@
        if (m_exceptionPending == true)
                return;
   
  +     accumulateText(chars, length);
  +
        processText(chars, length);
   
        m_lastPopped = 0;
  @@ -1417,7 +1423,7 @@
        if (m_exceptionPending == true)
                return;
   
  -     // No action for the moment.
  +     processAccumulatedText();
   }
   
   
  @@ -1429,7 +1435,7 @@
        if (m_exceptionPending == true)
                return;
   
  -     // No action for the moment.
  +     processAccumulatedText();
   }
   
   
  @@ -1558,6 +1564,32 @@
   
   
   
  +void
  +StylesheetHandler::accumulateText(
  +                     const XMLCh* const      chars,
  +                     const unsigned int      length)
  +{    
  +     if(m_inTemplate)
  +     {
  +             append(m_accumulateText, chars, length);
  +     }
  +}
  +
  +
  +
  +void
  +StylesheetHandler::processAccumulatedText()
  +{
  +     if (isEmpty(m_accumulateText) == false)
  +     {
  +             processText(m_accumulateText.c_str(), length(m_accumulateText));
  +
  +             clear(m_accumulateText);
  +     }       
  +}
  +
  +
  +
   
StylesheetHandler::PushPopIncludeState::PushPopIncludeState(StylesheetHandler&  
     theHandler) :
        m_handler(theHandler),
        m_elemStack(theHandler.m_elemStack),
  @@ -1572,6 +1604,7 @@
        m_namespaces(),
        m_namespacesHandler()
   {
  +     m_handler.m_accumulateText.clear();
        m_handler.m_elemStack.clear();
        m_handler.m_pTemplate = 0;
        m_handler.m_lastPopped = 0;
  @@ -1600,6 +1633,7 @@
                         m_handler.m_elemStack.end(),
                         DeleteFunctor<ElemTemplateElement>());
   
  +     m_handler.m_accumulateText.clear();
        m_handler.m_elemStack = m_elemStack;
        m_handler.m_elemStackParentedElements = m_elemStackParentedElements;
        m_handler.m_pTemplate = m_pTemplate;
  
  
  
  1.21      +16 -2     xml-xalan/c/src/XSLT/StylesheetHandler.hpp
  
  Index: StylesheetHandler.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetHandler.hpp,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- StylesheetHandler.hpp     2000/12/08 22:20:50     1.20
  +++ StylesheetHandler.hpp     2001/01/03 15:18:27     1.21
  @@ -413,6 +413,14 @@
                        const XMLCh* const      chars,
                        const unsigned int      length);
   
  +     void
  +     accumulateText(
  +                     const XMLCh* const      chars,
  +                     const unsigned int      length);
  +
  +     void
  +     processAccumulatedText();
  +
        // Data members...
        XalanDOMString  m_pendingException;
   
  @@ -480,6 +488,12 @@
         * to being the first elements.
         */
        bool m_foundNotImport;
  +
  +     /**
  +      * Accumulate character buffer to create contiguous character data
  +      * where possible.
  +      */
  +     XalanDOMString  m_accumulateText;
        
        // BEGIN SANJIVA CODE
        bool m_inLXSLTScript;
  @@ -518,9 +532,9 @@
   
                ElemTemplate* const                                     
m_pTemplate;
   
  -             ElemTemplateElement* const                      m_lastPopped;
  +             ElemTemplateElement* const                      m_lastPopped;   
        
   
  -             const bool                                                      
m_inTemplate;
  +             const bool                                                      
m_inTemplate;           
   
                const bool                                                      
m_foundStylesheet;
   
  
  
  

Reply via email to