amassari 2004/05/10 01:03:25 Modified: c/src/xercesc/dom/impl DOMWriterImpl.cpp Log: Performance: push a new map on the namespace stack only when an element has a xmlns attribute Revision Changes Path 1.53 +22 -4 xml-xerces/c/src/xercesc/dom/impl/DOMWriterImpl.cpp Index: DOMWriterImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMWriterImpl.cpp,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- DOMWriterImpl.cpp 1 Apr 2004 22:05:32 -0000 1.52 +++ DOMWriterImpl.cpp 10 May 2004 08:03:25 -0000 1.53 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.53 2004/05/10 08:03:25 amassari + * Performance: push a new map on the namespace stack only when an element has a xmlns attribute + * * Revision 1.52 2004/04/01 22:05:32 peiyongz * invoke DOMException with Memory Manager * @@ -1014,8 +1017,7 @@ int nodeLine = fCurrentLine; // add an entry in the namespace stack - RefHashTableOf<XMLCh>* namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager); - fNamespaceStack->addElement(namespaceMap); + RefHashTableOf<XMLCh>* namespaceMap=NULL; if ( filterAction == DOMNodeFilter::FILTER_ACCEPT) { @@ -1056,6 +1058,11 @@ } if(!bPrefixDeclared) { + if(namespaceMap==NULL) + { + namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager); + fNamespaceStack->addElement(namespaceMap); + } namespaceMap->put((void*)prefix,(XMLCh*)nodeToWrite->getNamespaceURI()); *fFormatter << XMLFormatter::NoEscapes << chSpace << XMLUni::fgXMLNSString; @@ -1108,6 +1115,11 @@ { if(XMLString::equals(ns, XMLUni::fgXMLNSURIName)) { + if(namespaceMap==NULL) + { + namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager); + fNamespaceStack->addElement(namespaceMap); + } const XMLCh* nsPrefix = attribute->getLocalName(); if(XMLString::equals(attribute->getNodeName(),XMLUni::fgXMLNSString)) nsPrefix = XMLUni::fgZeroLenString; @@ -1134,6 +1146,11 @@ } if(!bPrefixDeclared) { + if(namespaceMap==NULL) + { + namespaceMap=new (fMemoryManager) RefHashTableOf<XMLCh>(12, false, fMemoryManager); + fNamespaceStack->addElement(namespaceMap); + } namespaceMap->put((void*)prefix,(XMLCh*)attribute->getNamespaceURI()); *fFormatter << XMLFormatter::NoEscapes << chSpace << XMLUni::fgXMLNSString << chColon << prefix @@ -1228,7 +1245,8 @@ } // remove the namespace map at this level - fNamespaceStack->removeLastElement(); + if(namespaceMap!=NULL) + fNamespaceStack->removeLastElement(); break; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]