knoaman     2003/02/04 11:27:44

  Modified:    c/src/xercesc/parsers SAXParser.hpp SAXParser.cpp
  Log:
  Performance: use global buffer to eliminate repetitive memory creation/deletion.
  
  Revision  Changes    Path
  1.20      +5 -0      xml-xerces/c/src/xercesc/parsers/SAXParser.hpp
  
  Index: SAXParser.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAXParser.hpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- SAXParser.hpp     9 Jan 2003 19:07:08 -0000       1.19
  +++ SAXParser.hpp     4 Feb 2003 19:27:43 -0000       1.20
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.20  2003/02/04 19:27:43  knoaman
  + * Performance: use global buffer to eliminate repetitive memory creation/deletion.
  + *
    * Revision 1.19  2003/01/09 19:07:08  tng
    * [Bug 15802] Add "const" qualifier to getURIText.
    *
  @@ -204,6 +207,7 @@
   #include <xercesc/framework/XMLElementDecl.hpp>
   #include <xercesc/framework/XMLEntityHandler.hpp>
   #include <xercesc/framework/XMLErrorReporter.hpp>
  +#include <xercesc/framework/XMLBuffer.hpp>
   #include <xercesc/validators/DTD/DocTypeHandler.hpp>
   
   XERCES_CPP_NAMESPACE_BEGIN
  @@ -1953,6 +1957,7 @@
       GrammarResolver*     fGrammarResolver;
       XMLStringPool*       fURIStringPool;
       XMLValidator*        fValidator;
  +    XMLBuffer            fElemQNameBuf;
   };
   
   
  
  
  
  1.15      +28 -13    xml-xerces/c/src/xercesc/parsers/SAXParser.cpp
  
  Index: SAXParser.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAXParser.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SAXParser.cpp     9 Jan 2003 19:07:08 -0000       1.14
  +++ SAXParser.cpp     4 Feb 2003 19:27:43 -0000       1.15
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.15  2003/02/04 19:27:43  knoaman
  + * Performance: use global buffer to eliminate repetitive memory creation/deletion.
  + *
    * Revision 1.14  2003/01/09 19:07:08  tng
    * [Bug 15802] Add "const" qualifier to getURIText.
    *
  @@ -854,13 +857,17 @@
       // Just map to the SAX document handler
       if (fDocHandler) {
           if (fScanner->getDoNamespaces()) {
  -            XMLBuffer elemQName;
  +
               if (elemPrefix && *elemPrefix) {
  -                elemQName.set(elemPrefix);
  -                elemQName.append(chColon);
  +
  +                fElemQNameBuf.set(elemPrefix);
  +                fElemQNameBuf.append(chColon);
  +                fElemQNameBuf.append(elemDecl.getBaseName());
  +                fDocHandler->endElement(fElemQNameBuf.getRawBuffer());
  +            }
  +            else {
  +                fDocHandler->endElement(elemDecl.getBaseName());
               }
  -            elemQName.append(elemDecl.getBaseName());
  -            fDocHandler->endElement(elemQName.getRawBuffer());
           }
           else
               fDocHandler->endElement(elemDecl.getFullName());
  @@ -968,18 +975,26 @@
       {
           fAttrList.setVector(&attrList, attrCount);
           if (fScanner->getDoNamespaces()) {
  -            XMLBuffer elemQName;
  +
               if (elemPrefix && *elemPrefix) {
  -                elemQName.set(elemPrefix);
  -                elemQName.append(chColon);
  +
  +                fElemQNameBuf.set(elemPrefix);
  +                fElemQNameBuf.append(chColon);
  +                fElemQNameBuf.append(elemDecl.getBaseName());
  +                fDocHandler->startElement(fElemQNameBuf.getRawBuffer(), fAttrList);
  +
  +                // If its empty, send the end tag event now
  +                if (isEmpty)
  +                    fDocHandler->endElement(fElemQNameBuf.getRawBuffer());
               }
  -            elemQName.append(elemDecl.getBaseName());
  +            else {
   
  -            fDocHandler->startElement(elemQName.getRawBuffer(), fAttrList);
  +                fDocHandler->startElement(elemDecl.getBaseName(), fAttrList);
   
  -            // If its empty, send the end tag event now
  -            if (isEmpty)
  -                fDocHandler->endElement(elemQName.getRawBuffer());
  +                // If its empty, send the end tag event now
  +                if (isEmpty)
  +                    fDocHandler->endElement(elemDecl.getBaseName());
  +            }
           }
           else {
               fDocHandler->startElement(elemDecl.getFullName(), fAttrList);
  
  
  

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

Reply via email to