amassari    2005/02/25 03:31:08

  Modified:    c/src/xercesc/parsers SAX2XMLReaderImpl.cpp
                        SAX2XMLReaderImpl.hpp
  Log:
  Performance improvements by David Bertoni (jira# 1343)
  
  Revision  Changes    Path
  1.43      +14 -24    xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
  
  Index: SAX2XMLReaderImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.cpp,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- SAX2XMLReaderImpl.cpp     30 Dec 2004 15:23:41 -0000      1.42
  +++ SAX2XMLReaderImpl.cpp     25 Feb 2005 11:31:07 -0000      1.43
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.43  2005/02/25 11:31:07  amassari
  + * Performance improvements by David Bertoni (jira# 1343)
  + *
    * Revision 1.42  2004/12/30 15:23:41  amassari
    * Notify advanced handlers of the whitespace before and after the root 
document element (jira# 729)
    *
  @@ -353,7 +356,6 @@
       , fValidator(0)
       , fMemoryManager(manager)
       , fGrammarPool(gramPool)
  -    , fBuffer(1023,manager)
   {
       try
       {
  @@ -958,19 +960,13 @@
   
       if (fDocHandler)
       {
  -        fBuffer.reset();
  -        if (elemPrefix && *elemPrefix) {
  -            fBuffer.set(elemPrefix);
  -            fBuffer.append(chColon);
  -        }
  -        fBuffer.append(elemDecl.getBaseName());
  +        const XMLCh* const elemQName =
  +            elemDecl.getFullName();
   
           if (getDoNamespaces())
           {
               unsigned int numPrefix = 0;
               const XMLCh*   nsString = XMLUni::fgXMLNSString;
  -            const XMLCh*   nsPrefix = 0;
  -            const XMLCh*   nsURI    = 0;
               const XMLAttr* tempAttr = 0;
   
               if (!fNamespacePrefix)
  @@ -980,6 +976,9 @@
   
               for (unsigned int i = 0; i < attrCount; i++)
               {
  +                const XMLCh*   nsPrefix = 0;
  +                const XMLCh*   nsURI    = 0;
  +
                   tempAttr = attrList.elementAt(i);
                   if (XMLString::equals(tempAttr->getQName(), nsString))
                       nsURI = tempAttr->getValue();
  @@ -991,7 +990,7 @@
                   if (!fNamespacePrefix)
                   {
                       if (nsURI == 0)
  -                        fTempAttrVec->addElement((XMLAttr* const)tempAttr);
  +                        fTempAttrVec->addElement((XMLAttr*)tempAttr);
                   }
                   if (nsURI != 0)
                   {
  @@ -1002,8 +1001,6 @@
                       fPrefixes->push(nPrefixId) ;
                       numPrefix++;
                   }
  -                nsURI = 0;
  -                nsPrefix = 0;
               }
               fPrefixCounts->push(numPrefix) ;
               if (!fNamespacePrefix)
  @@ -1016,7 +1013,7 @@
               (
                   fScanner->getURIText(elemURLId)
                   , elemDecl.getBaseName()
  -                , fBuffer.getRawBuffer()
  +                , elemQName
                   , fAttrList
               );
           }
  @@ -1025,7 +1022,7 @@
               fAttrList.setVector(&attrList, attrCount, fScanner);
               fDocHandler->startElement(XMLUni::fgZeroLenString,
                                                                                
elemDecl.getBaseName(),
  -                                                                             
elemDecl.getFullName(),
  +                                                                             
elemQName,
                                                                                
fAttrList);
           }
   
  @@ -1040,7 +1037,7 @@
                   (
                       fScanner->getURIText(elemURLId)
                       , elemDecl.getBaseName()
  -                    , fBuffer.getRawBuffer()
  +                    , elemQName
                   );
   
                   unsigned int numPrefix = fPrefixCounts->pop();
  @@ -1054,7 +1051,7 @@
               {
                   fDocHandler->endElement(XMLUni::fgZeroLenString,
                                   elemDecl.getBaseName(),
  -                                elemDecl.getFullName());
  +                                elemQName);
               }
           }
       }
  @@ -1090,18 +1087,11 @@
           // get the prefixes back so that we can call endPrefixMapping()
           if (getDoNamespaces())
           {
  -            fBuffer.reset();
  -            if (elemPrefix && *elemPrefix) {
  -                fBuffer.set(elemPrefix);
  -                fBuffer.append(chColon);
  -            }
  -            fBuffer.append(elemDecl.getBaseName());
  -
               fDocHandler->endElement
               (
                   fScanner->getURIText(uriId)
                   , elemDecl.getBaseName()
  -                , fBuffer.getRawBuffer()
  +                , elemDecl.getFullName()
               );
   
               unsigned int numPrefix = fPrefixCounts->pop();
  
  
  
  1.30      +3 -4      xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.hpp
  
  Index: SAX2XMLReaderImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.hpp,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- SAX2XMLReaderImpl.hpp     10 Dec 2004 10:52:16 -0000      1.29
  +++ SAX2XMLReaderImpl.hpp     25 Feb 2005 11:31:07 -0000      1.30
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.30  2005/02/25 11:31:07  amassari
  + * Performance improvements by David Bertoni (jira# 1343)
  + *
    * Revision 1.29  2004/12/10 10:52:16  cargilld
    * Make setInputBufferSize virtual.  Fix from Christian Will.
    *
  @@ -1852,9 +1855,6 @@
       //      The grammar pool passed from external application (through 
derivatives).
       //      which could be 0, not owned.
       //
  -    //   fBuffer
  -    //      A buffer used to store the element name
  -    //
       // 
-----------------------------------------------------------------------
       bool                        fNamespacePrefix;
       bool                        fAutoValidation;
  @@ -1884,7 +1884,6 @@
       XMLValidator*               fValidator;
       MemoryManager*              fMemoryManager;
       XMLGrammarPool*             fGrammarPool;
  -    XMLBuffer                   fBuffer;
        
       // 
-----------------------------------------------------------------------
       // internal function used to set the state of the parser
  
  
  

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

Reply via email to