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]