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]