You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by bo...@apache.org on 2008/07/21 12:15:17 UTC

svn commit: r678381 - /xerces/c/trunk/src/xercesc/dom/impl/

Author: borisk
Date: Mon Jul 21 03:15:01 2008
New Revision: 678381

URL: http://svn.apache.org/viewvc?rev=678381&view=rev
Log:
Remove repetitive calls to the getOwnerDocument() virtual function and in some
cases use the data member directly. Put DOMStringPool functionality directly
into DOMDocumentImpl, make getPooledString() inline.

Modified:
    xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.hpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMAttrMapImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMAttrNSImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMCommentImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMElementNSImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMEntityImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMParentNode.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMTextImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/XSDElementNSImpl.cpp

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.cpp Mon Jul 21 03:15:01 2008
@@ -53,7 +53,7 @@
     if (other.fNode.isIdAttr())
     {
         fNode.isIdAttr(true);
-        DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+        DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
         doc->getNodeIDMap()->add(this);
     }
 
@@ -67,7 +67,7 @@
 
 DOMNode * DOMAttrImpl::cloneNode(bool deep) const
 {
-    DOMNode* newNode = new (this->getOwnerDocument(), DOMDocumentImpl::ATTR_OBJECT) DOMAttrImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument, DOMDocumentImpl::ATTR_OBJECT) DOMAttrImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }
@@ -124,11 +124,13 @@
     // In such case, we have to visit each child to retrieve the text
     //
 
-    XMLBuffer buf(1023, ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager());
+    DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument;
+
+    XMLBuffer buf(1023, doc->getMemoryManager());
     for (node = fParent.fFirstChild; node != 0; node = castToChildImpl(node)->nextSibling)
         getTextValue(node, buf);
 
-    return (XMLCh*) ((DOMDocumentImpl *)this->getOwnerDocument())->getPooledString(buf.getRawBuffer());
+    return doc->getPooledString(buf.getRawBuffer());
 }
 
 void DOMAttrImpl::getTextValue(DOMNode* node, XMLBuffer& buf) const
@@ -172,7 +174,7 @@
     //    then put it back in with the new name.  For now, we don't worry
     //    about what happens if the new name conflicts
     //
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     if (fNode.isIdAttr())
         doc->getNodeIDMap()->remove(this);
 
@@ -223,7 +225,7 @@
     if (fNode.isOwned() && !fNode.isToBeReleased())
         throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument;
     if (doc) {
         fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0);
         fParent.release();
@@ -244,7 +246,7 @@
 DOMNode* DOMAttrImpl::rename(const XMLCh* namespaceURI, const XMLCh* name)
 {
     DOMElement* el = getOwnerElement();
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument;
 
     if (el)
         el->removeAttributeNode(this);

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.hpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMAttrImpl.hpp Mon Jul 21 03:15:01 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -94,21 +94,21 @@
 private:
     // -----------------------------------------------------------------------
     //  Unimplemented constructors and operators
-    // -----------------------------------------------------------------------    
+    // -----------------------------------------------------------------------
     DOMAttrImpl& operator=(const DOMAttrImpl&);
 };
 
 inline void DOMAttrImpl::removeAttrFromIDNodeMap()
 {
     if (fNode.isIdAttr()) {
-        ((DOMDocumentImpl *)getOwnerDocument())->getNodeIDMap()->remove(this);
+        ((DOMDocumentImpl *)fParent.fOwnerDocument)->getNodeIDMap()->remove(this);
         fNode.isIdAttr(false);
     }
 }
 
 inline void DOMAttrImpl::addAttrToIDNodeMap()
 {
-    if (fNode.isIdAttr()) 
+    if (fNode.isIdAttr())
         return;
 
     fNode.isIdAttr(true);

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMAttrMapImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMAttrMapImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMAttrMapImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMAttrMapImpl.cpp Mon Jul 21 03:15:01 2008
@@ -189,7 +189,7 @@
         fNodes->insertElementAt(arg,i);
     }
     if (previous != 0) {
-        castToNodeImpl(previous)->fOwnerNode = fOwnerNode->getOwnerDocument();
+        castToNodeImpl(previous)->fOwnerNode = doc;
         castToNodeImpl(previous)->isOwned(false);
     }
 
@@ -264,7 +264,7 @@
         fNodes->insertElementAt(arg,i);
     }
     if (previous != 0) {
-        castToNodeImpl(previous)->fOwnerNode = fOwnerNode->getOwnerDocument();
+        castToNodeImpl(previous)->fOwnerNode = doc;
         castToNodeImpl(previous)->isOwned(false);
     }
 

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMAttrNSImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMAttrNSImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMAttrNSImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMAttrNSImpl.cpp Mon Jul 21 03:15:01 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -57,7 +57,7 @@
 
 DOMNode * DOMAttrNSImpl::cloneNode(bool deep) const
 {
-    DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::ATTR_NS_OBJECT) DOMAttrNSImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ATTR_NS_OBJECT) DOMAttrNSImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }
@@ -92,7 +92,9 @@
         return;
     }
 
-    if (!((DOMDocumentImpl *)this->getOwnerDocument())->isXMLName(prefix))
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
+
+    if (!doc->isXMLName(prefix))
         throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, GetDOMNodeMemoryManager);
 
     const XMLCh * xml = DOMNodeImpl::getXmlString();
@@ -109,14 +111,14 @@
         throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager);
     }
 
-    this-> fPrefix = ((DOMDocumentImpl *)this->getOwnerDocument())->getPooledString(prefix);
+    this-> fPrefix = doc->getPooledString(prefix);
 
     XMLSize_t prefixLen = XMLString::stringLen(prefix);
     XMLSize_t newQualifiedNameLen = prefixLen+1+XMLString::stringLen(fLocalName);
     XMLCh* newName;
     XMLCh temp[4000];
     if (newQualifiedNameLen >= 3999)
-        newName = (XMLCh*) ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager()->allocate
+        newName = (XMLCh*) doc->getMemoryManager()->allocate
         (
             newQualifiedNameLen * sizeof(XMLCh)
         );//new XMLCh[newQualifiedNameLen];
@@ -128,11 +130,10 @@
     newName[prefixLen] = chColon;
     XMLString::copyString(&newName[prefixLen+1], fLocalName);
 
-    fName = ((DOMDocumentImpl *)this->getOwnerDocument())->
-                                           getPooledString(newName);
+    fName = doc->getPooledString(newName);
 
     if (newQualifiedNameLen >= 3999)
-        ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager()->deallocate(newName);//delete[] newName;
+      doc->getMemoryManager()->deallocate(newName);//delete[] newName;
 
 }
 
@@ -141,7 +142,7 @@
     if (fNode.isOwned() && !fNode.isToBeReleased())
         throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument;
     if (doc) {
         fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0);
         fParent.release();
@@ -170,7 +171,7 @@
 
 void DOMAttrNSImpl::setName(const XMLCh* namespaceURI, const XMLCh* qualifiedName)
 {
-    DOMDocumentImpl* ownerDoc = (DOMDocumentImpl *) getOwnerDocument();
+    DOMDocumentImpl* ownerDoc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     const XMLCh * xmlns = DOMNodeImpl::getXmlnsString();
     const XMLCh * xmlnsURI = DOMNodeImpl::getXmlnsURIString();
     this->fName = ownerDoc->getPooledString(qualifiedName);
@@ -192,7 +193,7 @@
         XMLCh* newName;
         XMLCh temp[4000];
         if (index >= 3999)
-            newName = (XMLCh*) ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager()->allocate
+            newName = (XMLCh*) ownerDoc->getMemoryManager()->allocate
             (
                 (XMLString::stringLen(qualifiedName) + 1) * sizeof(XMLCh)
             );//new XMLCh[XMLString::stringLen(qualifiedName)+1];
@@ -205,10 +206,10 @@
         this -> fLocalName = ownerDoc->getPooledString(fName+index+1);
 
         if (index >= 3999)
-            ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager()->deallocate(newName);//delete[] newName;
+          ownerDoc->getMemoryManager()->deallocate(newName);//delete[] newName;
 
         // Before we carry on, we should check if the prefix or localName are valid XMLName
-        if (!((DOMDocumentImpl *)this->getOwnerDocument())->isXMLName(fPrefix) || !((DOMDocumentImpl *)this->getOwnerDocument())->isXMLName(fLocalName))
+        if (!ownerDoc->isXMLName(fPrefix) || !ownerDoc->isXMLName(fLocalName))
             throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager);
     }
 
@@ -224,4 +225,3 @@
 }
 
 XERCES_CPP_NAMESPACE_END
-

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp Mon Jul 21 03:15:01 2008
@@ -95,9 +95,9 @@
     if (offset > len)
         throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager);
 
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument();
     DOMText *newText =
-                getOwnerDocument()->createCDATASection(
-                        this->substringData(offset, len - offset));
+      doc->createCDATASection(this->substringData(offset, len - offset));
 
     DOMNode *parent = getParentNode();
     if (parent != 0)
@@ -105,8 +105,8 @@
 
     fCharacterData.fDataBuf->chop(offset);
 
-    if (this->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)this->getOwnerDocument())->getRanges();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -128,7 +128,8 @@
 
 const XMLCh* DOMCDATASectionImpl::getWholeText() const
 {
-    DOMTreeWalker* pWalker=getOwnerDocument()->createTreeWalker(getOwnerDocument()->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
+    DOMDocument *doc = getOwnerDocument();
+    DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
     pWalker->setCurrentNode((DOMNode*)this);
     // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in
     // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes.
@@ -156,7 +157,8 @@
 
 DOMText* DOMCDATASectionImpl::replaceWholeText(const XMLCh* newText)
 {
-    DOMTreeWalker* pWalker=getOwnerDocument()->createTreeWalker(getOwnerDocument()->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
+    DOMDocument *doc = getOwnerDocument();
+    DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
     pWalker->setCurrentNode((DOMNode*)this);
     // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in
     // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes.
@@ -177,7 +179,7 @@
             break;
         if(nextNode->getNodeType()==ENTITY_REFERENCE_NODE)
         {
-            DOMTreeWalker* pInnerWalker=getOwnerDocument()->createTreeWalker(nextNode, DOMNodeFilter::SHOW_ALL, NULL, true);
+            DOMTreeWalker* pInnerWalker=doc->createTreeWalker(nextNode, DOMNodeFilter::SHOW_ALL, NULL, true);
             while(pInnerWalker->nextNode())
             {
                 short nodeType=pInnerWalker->getCurrentNode()->getNodeType();
@@ -199,9 +201,9 @@
         else
         {
             if(getNodeType()==TEXT_NODE)
-                retVal=getOwnerDocument()->createTextNode(newText);
+                retVal=doc->createTextNode(newText);
             else
-                retVal=getOwnerDocument()->createCDATASection(newText);
+                retVal=doc->createCDATASection(newText);
             pFirstTextNode->getParentNode()->insertBefore(retVal, pFirstTextNode);
         }
     }

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp Mon Jul 21 03:15:01 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -74,8 +74,9 @@
         throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager);
     fDataBuf->set(value);
 
-    if (node->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)node->getOwnerDocument())->getRanges();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -147,8 +148,9 @@
     //   the old string (may be shared)
     //   It just hangs around, possibly orphaned.
 
-    if (node->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)node->getOwnerDocument())->getRanges();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -215,8 +217,9 @@
     if (newLen >= 3999)
         XMLPlatformUtils::fgMemoryManager->deallocate(newString);//delete[] newString;
 
-    if (node->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)node->getOwnerDocument())->getRanges();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -267,11 +270,12 @@
     if (offset > len)
         throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMCharacterDataImplMemoryManager);
 
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument();
 
     XMLCh* newString;
     XMLCh temp[4000];
     if (len >= 3999)
-        newString = (XMLCh*) ((DOMDocumentImpl *)node->getOwnerDocument())->getMemoryManager()->allocate
+      newString = (XMLCh*) doc->getMemoryManager()->allocate
         (
             (len + 1) * sizeof(XMLCh)
         );//new XMLCh[len+1];
@@ -281,10 +285,10 @@
     XMLString::copyNString(newString, fDataBuf->getRawBuffer()+offset, count);
     newString[count] = chNull;
 
-    const XMLCh* retString = ((DOMDocumentImpl *)node->getOwnerDocument())->getPooledString(newString);
+    const XMLCh* retString = doc->getPooledString(newString);
 
     if (len >= 3999)
-        ((DOMDocumentImpl *)node->getOwnerDocument())->getMemoryManager()->deallocate(newString);//delete[] newString;
+      doc->getMemoryManager()->deallocate(newString);//delete[] newString;
 
     return retString;
 
@@ -296,4 +300,3 @@
 }
 
 XERCES_CPP_NAMESPACE_END
-

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMCommentImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMCommentImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMCommentImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMCommentImpl.cpp Mon Jul 21 03:15:01 2008
@@ -101,9 +101,9 @@
     if (offset > len)
         throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager);
 
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument();
     DOMComment *newText =
-                getOwnerDocument()->createComment(
-                        this->substringData(offset, len - offset));
+      doc->createComment(this->substringData(offset, len - offset));
 
     DOMNode *parent = getParentNode();
     if (parent != 0)
@@ -111,8 +111,8 @@
 
     fCharacterData.fDataBuf->chop(offset);
 
-    if (this->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)this->getOwnerDocument())->getRanges();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp Mon Jul 21 03:15:01 2008
@@ -58,10 +58,12 @@
     , fMatchAllURI(false)
     , fMatchURIandTagname(true)
 {
-    fTagName = ((DOMDocumentImpl *)(castToNodeImpl(rootNode)->getOwnerDocument()))->getPooledString(localName);
+    DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(rootNode)->getOwnerDocument();
+
+    fTagName = doc->getPooledString(localName);
     fMatchAll = XMLString::equals(fTagName, kAstr);
     fMatchAllURI = XMLString::equals(namespaceURI, kAstr);
-    fNamespaceURI = ((DOMDocumentImpl *)(castToNodeImpl(rootNode)->getOwnerDocument()))->getPooledString(namespaceURI);
+    fNamespaceURI = doc->getPooledString(namespaceURI);
 }
 
 

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.cpp Mon Jul 21 03:15:01 2008
@@ -36,7 +36,6 @@
 #include "DOMNotationImpl.hpp"
 #include "DOMProcessingInstructionImpl.hpp"
 #include "DOMTextImpl.hpp"
-#include "DOMStringPool.hpp"
 #include "DOMTreeWalkerImpl.hpp"
 #include "DOMNodeIteratorImpl.hpp"
 #include "DOMNodeIDMap.hpp"
@@ -60,7 +59,6 @@
                                                          // than this will be handled by
                                                          // allocating directly with system.
 
-
 //
 //   Constructors.   Warning - be very careful with the ordering of initialization
 //                             of the heap.  Ordering depends on the order of declaration
@@ -92,7 +90,7 @@
       fNodeListPool(0),
       fDocType(0),
       fDocElement(0),
-      fNamePool(0),
+      fNameTableSize(257),
       fNormalizer(0),
       fRanges(0),
       fNodeIterators(0),
@@ -101,7 +99,10 @@
       fChanges(0),
       errorChecking(true)
 {
-    fNamePool    = new (this) DOMStringPool(257, this);
+    fNameTable = (DOMStringPoolEntry**)allocate (
+      sizeof (DOMStringPoolEntry*) * fNameTableSize);
+    for (XMLSize_t i = 0; i < fNameTableSize; i++)
+      fNameTable[i] = 0;
 }
 
 
@@ -131,7 +132,7 @@
       fNodeListPool(0),
       fDocType(0),
       fDocElement(0),
-      fNamePool(0),
+      fNameTableSize(257),
       fNormalizer(0),
       fRanges(0),
       fNodeIterators(0),
@@ -140,7 +141,11 @@
       fChanges(0),
       errorChecking(true)
 {
-    fNamePool    = new (this) DOMStringPool(257, this);
+    fNameTable = (DOMStringPoolEntry**)allocate (
+      sizeof (DOMStringPoolEntry*) * fNameTableSize);
+    for (XMLSize_t i = 0; i < fNameTableSize; i++)
+      fNameTable[i] = 0;
+
     try {
         setDocumentType(doctype);
 
@@ -167,7 +172,9 @@
     // New doctypes can be created either with the factory methods on DOMImplementation, in
     //   which case ownerDocument will be 0, or with methods on DocumentImpl, in which case
     //   ownerDocument will be set, but the DocType won't yet be a child of the document.
-    if (doctype->getOwnerDocument() != 0 && doctype->getOwnerDocument() != this)
+    //
+    DOMDocument* doc = doctype->getOwnerDocument();
+    if (doc != 0 && doc != this)
         throw DOMException(    //one doctype can belong to only one DOMDocumentImpl
         DOMException::WRONG_DOCUMENT_ERR, 0, getMemoryManager());
 
@@ -815,13 +822,6 @@
     return newStr;
 }
 
-
-const XMLCh *  DOMDocumentImpl::getPooledString(const XMLCh *src)
-{
-    if (!src) return 0;
-    else return this->fNamePool->getPooledString(src);
-}
-
 XMLSize_t DOMDocumentImpl::getMemoryAllocationBlockSize() const
 {
     return fHeapAllocSize;

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentImpl.hpp Mon Jul 21 03:15:01 2008
@@ -40,6 +40,7 @@
 #include <xercesc/dom/DOMUserDataHandler.hpp>
 #include <xercesc/dom/DOMMemoryManager.hpp>
 #include "DOMNodeImpl.hpp"
+#include "DOMStringPool.hpp"
 #include "DOMParentNode.hpp"
 #include "DOMDeepNodeListPool.hpp"
 
@@ -67,7 +68,6 @@
 class DOMImplementation;
 class DOMNodeIDMap;
 class DOMRangeImpl;
-class DOMStringPool;
 class DOMBuffer;
 class MemoryManager;
 class XPathNSResolver;
@@ -80,7 +80,6 @@
 
 class CDOM_EXPORT DOMDocumentImpl: public XMemory, public DOMMemoryManager, public DOMDocument {
 public:
-
     // -----------------------------------------------------------------------
     //  data
     // -----------------------------------------------------------------------
@@ -335,7 +334,10 @@
     // Other data
     DOMDocumentType*      fDocType;
     DOMElement*           fDocElement;
-    DOMStringPool*        fNamePool;
+
+    DOMStringPoolEntry**  fNameTable;
+    XMLSize_t             fNameTableSize;
+
     DOMNormalizer*        fNormalizer;
     Ranges*               fRanges;
     NodeIterators*        fNodeIterators;
@@ -352,6 +354,38 @@
     return fMemoryManager;
 }
 
+inline const XMLCh*  DOMDocumentImpl::getPooledString(const XMLCh *in)
+{
+  if (in == 0)
+    return 0;
+
+  DOMStringPoolEntry    **pspe;
+  DOMStringPoolEntry    *spe;
+
+  XMLSize_t inHash = XMLString::hash(in, fNameTableSize);
+  pspe = &fNameTable[inHash];
+  while (*pspe != 0)
+  {
+    if (XMLString::equals((*pspe)->fString, in))
+      return (*pspe)->fString;
+    pspe = &((*pspe)->fNext);
+  }
+
+  // This string hasn't been seen before.  Add it to the pool.
+  //
+
+  // Compute size to allocate.  Note that there's 1 char of string
+  // declared in the struct, so we don't need to add one again to
+  // account for the trailing null.
+  //
+  XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + XMLString::stringLen(in)*sizeof(XMLCh);
+  *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate);
+  spe->fNext = 0;
+  XMLString::copyString((XMLCh*)spe->fString, in);
+
+  return spe->fString;
+}
+
 XERCES_CPP_NAMESPACE_END
 
 // ---------------------------------------------------------------------------

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp Mon Jul 21 03:15:01 2008
@@ -206,8 +206,9 @@
 DOMNode *DOMDocumentTypeImpl::cloneNode(bool deep) const
 {
     DOMNode* newNode = 0;
-    if (castToNodeImpl(this)->getOwnerDocument())
-        newNode = new (castToNodeImpl(this)->getOwnerDocument(), DOMMemoryManager::DOCUMENT_TYPE_OBJECT) DOMDocumentTypeImpl(*this, false, deep);
+    DOMDocument* doc = castToNodeImpl(this)->getOwnerDocument();
+    if (doc != 0)
+        newNode = new (doc, DOMMemoryManager::DOCUMENT_TYPE_OBJECT) DOMDocumentTypeImpl(*this, false, deep);
     else
     {
         XMLMutexLock lock(sDocumentMutex);
@@ -336,8 +337,9 @@
     if (value == 0)
         return;
 
-    if ((DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument())
-        fPublicId = ((DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument())->cloneString(value);
+    DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument();
+    if (doc != 0)
+        fPublicId = doc->cloneString(value);
     else {
         XMLMutexLock lock(sDocumentMutex);
         fPublicId = ((DOMDocumentImpl *)sDocument)->cloneString(value);
@@ -346,8 +348,9 @@
 
 void DOMDocumentTypeImpl::setSystemId(const XMLCh *value)
 {
-    if ((DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument())
-        fSystemId = ((DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument())->cloneString(value);
+    DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument();
+    if (doc != 0)
+        fSystemId = doc->cloneString(value);
     else {
         XMLMutexLock lock(sDocumentMutex);
         fSystemId = ((DOMDocumentImpl *)sDocument)->cloneString(value);
@@ -356,8 +359,9 @@
 
 void DOMDocumentTypeImpl::setInternalSubset(const XMLCh *value)
 {
-    if ((DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument())
-        fInternalSubset = ((DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument())->cloneString(value);
+    DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument();
+    if (doc != 0)
+        fInternalSubset = doc->cloneString(value);
     else {
         XMLMutexLock lock(sDocumentMutex);
         fInternalSubset = ((DOMDocumentImpl *)sDocument)->cloneString(value);

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMElementImpl.cpp Mon Jul 21 03:15:01 2008
@@ -60,8 +60,8 @@
 
 DOMElementImpl::DOMElementImpl(const DOMElementImpl &other, bool deep)
     : DOMElement(other),
-      fNode(other.getOwnerDocument()),
-      fParent(other.getOwnerDocument()),
+      fNode (other.fParent.fOwnerDocument),
+      fParent (other.fParent.fOwnerDocument),
       fAttributes(0),
       fDefaultAttributes(0)
 {
@@ -84,14 +84,14 @@
         setupDefaultAttributes();
 
     if (!fDefaultAttributes)
-        fDefaultAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this);
+        fDefaultAttributes = new (fParent.fOwnerDocument) DOMAttrMapImpl(this);
 
     if (!fAttributes) {
         if (!fDefaultAttributes) {
-            fAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this);
+            fAttributes = new (fParent.fOwnerDocument) DOMAttrMapImpl(this);
         }
         else {
-            fAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this, fDefaultAttributes);
+            fAttributes = new (fParent.fOwnerDocument) DOMAttrMapImpl(this, fDefaultAttributes);
         }
     }
 
@@ -105,7 +105,7 @@
 
 DOMNode *DOMElementImpl::cloneNode(bool deep) const
 {
-    DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::ELEMENT_OBJECT) DOMElementImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ELEMENT_OBJECT) DOMElementImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }
@@ -150,7 +150,7 @@
 
 DOMNodeList *DOMElementImpl::getElementsByTagName(const XMLCh *tagname) const
 {
-    DOMDocumentImpl *docImpl = (DOMDocumentImpl *)getOwnerDocument();
+    DOMDocumentImpl *docImpl = (DOMDocumentImpl *)fParent.fOwnerDocument;
     return docImpl->getDeepNodeList(this,tagname);
 }
 
@@ -222,7 +222,7 @@
     DOMAttr* newAttr = getAttributeNode(nam);
     if (!newAttr)
     {
-        newAttr = this->fNode.getOwnerDocument()->createAttribute(nam);
+        newAttr = fParent.fOwnerDocument->createAttribute(nam);
         fAttributes->setNamedItem(newAttr);
     }
 
@@ -341,7 +341,7 @@
     DOMAttr* newAttr = getAttributeNodeNS(fNamespaceURI, qualifiedName+index);
     if (!newAttr)
     {
-        newAttr = this->fNode.getOwnerDocument()->createAttributeNS(fNamespaceURI, qualifiedName);
+        newAttr = fParent.fOwnerDocument->createAttributeNS(fNamespaceURI, qualifiedName);
         fAttributes->setNamedItemNS(newAttr);
     }
 
@@ -378,7 +378,7 @@
         throw DOMException(
             DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager);
 
-    if (newAttr -> getOwnerDocument() != this -> getOwnerDocument())
+    if (newAttr -> getOwnerDocument() != fParent.fOwnerDocument)
         throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNodeMemoryManager);
 
     // This will throw INUSE if necessary
@@ -391,7 +391,7 @@
 DOMNodeList *DOMElementImpl::getElementsByTagNameNS(const XMLCh *namespaceURI,
     const XMLCh *localName) const
 {
-    DOMDocumentImpl *docImpl = (DOMDocumentImpl *)getOwnerDocument();
+    DOMDocumentImpl *docImpl = (DOMDocumentImpl *)fParent.fOwnerDocument;
     return docImpl->getDeepNodeList(this, namespaceURI, localName);
 }
 
@@ -424,7 +424,7 @@
 // initially set up the default attribute information based on doctype information
 void DOMElementImpl::setupDefaultAttributes()
 {
-    DOMDocument *tmpdoc = getOwnerDocument();
+    DOMDocument *tmpdoc = fParent.fOwnerDocument;
     if ((fNode.fOwnerNode == 0) || (tmpdoc == 0) || (tmpdoc->getDoctype() == 0))
         return;
 
@@ -432,7 +432,7 @@
     DOMAttrMapImpl* defAttrs = (eldef == 0) ? 0 : (DOMAttrMapImpl *)(eldef->getAttributes());
 
     if (defAttrs)
-        fDefaultAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this, defAttrs);
+        fDefaultAttributes = new (tmpdoc) DOMAttrMapImpl(this, defAttrs);
 }
 
 DOMAttr * DOMElementImpl::setDefaultAttributeNode(DOMAttr *newAttr)
@@ -459,7 +459,7 @@
         throw DOMException(
             DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager);
 
-    if (newAttr -> getOwnerDocument() != this -> getOwnerDocument())
+    if (newAttr -> getOwnerDocument() != fParent.fOwnerDocument)
         throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNodeMemoryManager);
 
     // This will throw INUSE if necessary
@@ -474,7 +474,7 @@
     if (fNode.isOwned() && !fNode.isToBeReleased())
         throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
     if (doc) {
         fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0);
         fParent.release();
@@ -509,9 +509,10 @@
                 if(baseURI)
                 {
                     try {
-                        XMLUri temp(baseURI, ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager());
-                        XMLUri temp2(&temp, uri, ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager());
-                        uri = ((DOMDocumentImpl *)this->getOwnerDocument())->cloneString(temp2.getUriText());
+                      DOMDocumentImpl* doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
+                      XMLUri temp(baseURI, doc->getMemoryManager());
+                      XMLUri temp2(&temp, uri, doc->getMemoryManager());
+                      uri = doc->cloneString(temp2.getUriText());
                     }
                     catch(const OutOfMemoryException&)
                     {
@@ -617,7 +618,7 @@
 
 DOMNode* DOMElementImpl::rename(const XMLCh* namespaceURI, const XMLCh* name)
 {
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
 
     if (!namespaceURI || !*namespaceURI) {
         fName = doc->getPooledString(name);

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMElementNSImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMElementNSImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMElementNSImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMElementNSImpl.cpp Mon Jul 21 03:15:01 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -59,7 +59,7 @@
 }
 
 DOMNode * DOMElementNSImpl::cloneNode(bool deep) const {
-    DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::ELEMENT_NS_OBJECT) DOMElementNSImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ELEMENT_NS_OBJECT) DOMElementNSImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }
@@ -93,7 +93,9 @@
         return;
     }
 
-    if(!((DOMDocumentImpl *)this->getOwnerDocument())->isXMLName(prefix))
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
+
+    if(!doc->isXMLName(prefix))
         throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, GetDOMNodeMemoryManager);
 
     const XMLCh * xml      = DOMNodeImpl::getXmlString();
@@ -108,7 +110,7 @@
         throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager);
     }
 
-    this-> fPrefix = ((DOMDocumentImpl *)this->getOwnerDocument())->getPooledString(prefix);
+    this-> fPrefix = doc->getPooledString(prefix);
 
     XMLSize_t prefixLen = XMLString::stringLen(prefix);
     XMLSize_t newQualifiedNameLen = prefixLen+1+XMLString::stringLen(fLocalName);
@@ -116,7 +118,7 @@
     XMLCh *newName;
     XMLCh temp[4000];
     if (newQualifiedNameLen >= 3999)
-        newName = (XMLCh*) ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager()->allocate
+      newName = (XMLCh*) doc->getMemoryManager()->allocate
         (
             newQualifiedNameLen * sizeof(XMLCh)
         );//new XMLCh[newQualifiedNameLen];
@@ -128,11 +130,10 @@
     newName[prefixLen] = chColon;
     XMLString::copyString(&newName[prefixLen+1], fLocalName);
 
-    fName = ((DOMDocumentImpl *)this->getOwnerDocument())->
-                                           getPooledString(newName);
+    fName = doc->getPooledString(newName);
 
     if (newQualifiedNameLen >= 3999)
-        ((DOMDocumentImpl *)this->getOwnerDocument())->getMemoryManager()->deallocate(newName);//delete[] newName;
+        doc->getMemoryManager()->deallocate(newName);//delete[] newName;
 
 }
 
@@ -141,7 +142,7 @@
     if (fNode.isOwned() && !fNode.isToBeReleased())
         throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
     if (doc) {
         fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0);
         fParent.release();
@@ -166,7 +167,7 @@
 void DOMElementNSImpl::setName(const XMLCh *namespaceURI,
                                const XMLCh *qualifiedName)
 {
-    DOMDocumentImpl* ownerDoc = (DOMDocumentImpl *) getOwnerDocument();
+    DOMDocumentImpl* ownerDoc = (DOMDocumentImpl *) fParent.fOwnerDocument;
     this->fName = ownerDoc->getPooledString(qualifiedName);
 
     int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName);
@@ -196,7 +197,7 @@
             ownerDoc->getMemoryManager()->deallocate(newName);//delete[] newName;
 
         // Before we carry on, we should check if the prefix or localName are valid XMLName
-        if (!((DOMDocumentImpl *)this->getOwnerDocument())->isXMLName(fPrefix) || !((DOMDocumentImpl *)this->getOwnerDocument())->isXMLName(fLocalName))
+        if (!ownerDoc->isXMLName(fPrefix) || !ownerDoc->isXMLName(fLocalName))
             throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager);
     }
 
@@ -212,12 +213,12 @@
 
 const DOMTypeInfo *DOMElementNSImpl::getSchemaTypeInfo() const
 {
-    if(!fSchemaType) 
+    if(!fSchemaType)
         return &DOMTypeInfoImpl::g_DtdValidatedElement;
     return fSchemaType;
 }
 
-void DOMElementNSImpl::setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo) 
+void DOMElementNSImpl::setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo)
 {
     fSchemaType = typeInfo;
 }
@@ -238,4 +239,3 @@
 }
 
 XERCES_CPP_NAMESPACE_END
-

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMEntityImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMEntityImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMEntityImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMEntityImpl.cpp Mon Jul 21 03:15:01 2008
@@ -72,7 +72,7 @@
 
 DOMNode *DOMEntityImpl::cloneNode(bool deep) const
 {
-    DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::ENTITY_OBJECT) DOMEntityImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ENTITY_OBJECT) DOMEntityImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }
@@ -119,28 +119,28 @@
 
 void DOMEntityImpl::setNotationName(const XMLCh *arg)
 {
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     fNotationName = doc->cloneString(arg);
 }
 
 
 void DOMEntityImpl::setPublicId(const XMLCh *arg)
 {
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     fPublicId = doc->cloneString(arg);
 }
 
 
 void DOMEntityImpl::setSystemId(const XMLCh *arg)
 {
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     fSystemId = doc->cloneString(arg);
 }
 
 
 void DOMEntityImpl::setBaseURI(const XMLCh* baseURI) {
     if (baseURI && *baseURI) {
-        XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)getOwnerDocument())->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh));
+        XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)fParent.fOwnerDocument)->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh));
         XMLString::fixURI(baseURI, temp);
         fBaseURI = temp;
     }
@@ -214,7 +214,7 @@
     if (fNode.isOwned() && !fNode.isToBeReleased())
         throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
     if (doc) {
         fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0);
         fParent.release();
@@ -270,7 +270,7 @@
 }
 
 void DOMEntityImpl::setInputEncoding(const XMLCh* actualEncoding){
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     fInputEncoding = doc->cloneString(actualEncoding);
 }
 
@@ -279,7 +279,7 @@
 }
 
 void DOMEntityImpl::setXmlEncoding(const XMLCh* encoding){
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     fXmlEncoding = doc->cloneString(encoding);
 }
 
@@ -288,7 +288,7 @@
 }
 
 void DOMEntityImpl::setXmlVersion(const XMLCh* version){
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument;
     fXmlVersion = doc->cloneString(version);
 }
 

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp Mon Jul 21 03:15:01 2008
@@ -34,7 +34,7 @@
                                          const XMLCh *entityName)
     : fNode(ownerDoc), fParent(ownerDoc), fBaseURI(0)
 {
-    fName = ((DOMDocumentImpl *)getOwnerDocument())->getPooledString(entityName);
+    fName = ((DOMDocumentImpl*)fParent.fOwnerDocument)->getPooledString(entityName);
     // EntityReference behaves as a read-only node, since its contents
     // reflect the Entity it refers to -- but see setNodeName().
     //retrieve the corresponding entity content
@@ -63,7 +63,7 @@
                                          bool cloneChild)
     : fNode(ownerDoc), fParent(ownerDoc), fBaseURI(0)
 {
-    fName = ((DOMDocumentImpl *)getOwnerDocument())->getPooledString(entityName);
+    fName = ((DOMDocumentImpl*)fParent.fOwnerDocument)->getPooledString(entityName);
     // EntityReference behaves as a read-only node, since its contents
     // reflect the Entity it refers to -- but see setNodeName().
     //retrieve the corresponding entity content
@@ -110,7 +110,7 @@
 
 DOMNode *DOMEntityReferenceImpl::cloneNode(bool deep) const
 {
-    DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::ENTITY_REFERENCE_OBJECT) DOMEntityReferenceImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ENTITY_REFERENCE_OBJECT) DOMEntityReferenceImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }
@@ -148,7 +148,7 @@
 */
 void DOMEntityReferenceImpl::setReadOnly(bool readOnl,bool deep)
 {
-    if(((DOMDocumentImpl *)getOwnerDocument())->getErrorChecking() && readOnl==false)
+    if(((DOMDocumentImpl *)fParent.fOwnerDocument)->getErrorChecking() && readOnl==false)
         throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager);
     fNode.setReadOnly(readOnl,deep);
 }
@@ -159,7 +159,7 @@
     if (fNode.isOwned() && !fNode.isToBeReleased())
         throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 
-    DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument();
+    DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument;
     if (doc) {
         fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0);
         fParent.release();

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp Mon Jul 21 03:15:01 2008
@@ -129,13 +129,15 @@
     if(fBuckets[hash]==0)
         throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager);
 
+    DOMDocument *doc = fOwnerNode->getOwnerDocument();
+
     XMLSize_t i = 0;
     XMLSize_t size = fBuckets[hash]->size();
     for (i = 0; i < size; ++i) {
         DOMNode *n=fBuckets[hash]->elementAt(i);
         if(XMLString::equals(name,n->getNodeName())) {
             fBuckets[hash]->removeElementAt(i);
-            castToNodeImpl(n)->fOwnerNode = fOwnerNode->getOwnerDocument();
+            castToNodeImpl(n)->fOwnerNode = doc;
             castToNodeImpl(n)->isOwned(false);
             return n;
         }
@@ -181,7 +183,7 @@
         DOMNode *n=fBuckets[hash]->elementAt(i);
         if(XMLString::equals(name,n->getNodeName())) {
             fBuckets[hash]->setElementAt(arg,i);
-            castToNodeImpl(n)->fOwnerNode = fOwnerNode->getOwnerDocument();
+            castToNodeImpl(n)->fOwnerNode = doc;
             castToNodeImpl(n)->isOwned(false);
             return n;
         }
@@ -280,7 +282,7 @@
                     ||
                     (nLocalName == 0 && XMLString::equals(localName, n->getNodeName()))) {
                     fBuckets[index]->setElementAt(arg,i);
-                    castToNodeImpl(n)->fOwnerNode = fOwnerNode->getOwnerDocument();
+                    castToNodeImpl(n)->fOwnerNode = doc;
                     castToNodeImpl(n)->isOwned(false);
                     return n;
                 }
@@ -310,6 +312,7 @@
         if(fBuckets[index]==0)
             continue;
 
+        DOMDocument *doc = fOwnerNode->getOwnerDocument();
         XMLSize_t i = 0;
         XMLSize_t size = fBuckets[index]->size();
         for (i = 0; i < size; ++i) {
@@ -323,7 +326,7 @@
                     ||
                     (nLocalName == 0 && XMLString::equals(localName, n->getNodeName()))) {
                     fBuckets[index]->removeElementAt(i);
-                    castToNodeImpl(n)->fOwnerNode = fOwnerNode->getOwnerDocument();
+                    castToNodeImpl(n)->fOwnerNode = doc;
                     castToNodeImpl(n)->isOwned(false);
                     return n;
                 }

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMParentNode.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMParentNode.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMParentNode.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMParentNode.cpp Mon Jul 21 03:15:01 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -33,7 +33,7 @@
 
 DOMParentNode::DOMParentNode(DOMDocument *ownerDoc)
     : fOwnerDocument(ownerDoc), fFirstChild(0), fChildNodeList(this)
-{    
+{
 }
 
 // This only makes a shallow copy, cloneChildren must also be called for a
@@ -49,15 +49,13 @@
 
 void DOMParentNode::changed()
 {
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
-    doc->changed();
+  ((DOMDocumentImpl*)fOwnerDocument)->changed();
 }
 
 
 int DOMParentNode::changes() const
 {
-    DOMDocumentImpl *doc = (DOMDocumentImpl *)this->getOwnerDocument();
-    return doc->changes();
+    return ((DOMDocumentImpl*)fOwnerDocument)->changes();
 }
 
 
@@ -166,7 +164,7 @@
     if (refChild!=0 && refChild->getParentNode() != castToNode(this))
         throw DOMException(DOMException::NOT_FOUND_ERR,0, GetDOMParentNodeMemoryManager);
 
-    // if the new node has to be placed before itself, we don't have to do anything 
+    // if the new node has to be placed before itself, we don't have to do anything
     // (even worse, we would crash if we continue, as we assume they are two distinct nodes)
     if (refChild!=0 && newChild->isSameNode(refChild))
         return newChild;
@@ -254,8 +252,8 @@
 
     changed();
 
-    if (this->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)this->getOwnerDocument())->getRanges();
+    if (fOwnerDocument != 0) {
+        Ranges* ranges = ((DOMDocumentImpl*)fOwnerDocument)->getRanges();
         if ( ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -280,9 +278,9 @@
     if (oldChild == 0 || oldChild->getParentNode() != castToNode(this))
         throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMParentNodeMemoryManager);
 
-    if (this->getOwnerDocument() !=  0  ) {
+    if (fOwnerDocument !=  0) {
         //notify iterators
-        NodeIterators* nodeIterators = ((DOMDocumentImpl *)this->getOwnerDocument())->getNodeIterators();
+        NodeIterators* nodeIterators = ((DOMDocumentImpl*)fOwnerDocument)->getNodeIterators();
         if (nodeIterators != 0) {
             XMLSize_t sz = nodeIterators->size();
             if (sz != 0) {
@@ -294,7 +292,7 @@
         }
 
         //fix other ranges for change before deleting the node
-        Ranges* ranges = ((DOMDocumentImpl *)this->getOwnerDocument())->getRanges();
+        Ranges* ranges = ((DOMDocumentImpl*)fOwnerDocument)->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -466,4 +464,3 @@
 
 
 XERCES_CPP_NAMESPACE_END
-

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp Mon Jul 21 03:15:01 2008
@@ -132,9 +132,10 @@
     if (offset > len)
         throw DOMException(DOMException::INDEX_SIZE_ERR, 0,  GetDOMNodeMemoryManager);
 
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument();
     DOMProcessingInstruction *newText =
-                getOwnerDocument()->createProcessingInstruction(fTarget,
-                        this->substringData(offset, len - offset));
+      doc->createProcessingInstruction(
+        fTarget, this->substringData(offset, len - offset));
 
     DOMNode *parent = getParentNode();
     if (parent != 0)
@@ -142,8 +143,8 @@
 
     fCharacterData.fDataBuf->chop(offset);
 
-    if (this->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)this->getOwnerDocument())->getRanges();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.cpp Mon Jul 21 03:15:01 2008
@@ -27,84 +27,6 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-
-//
-//  DStringPoolEntry - one of these structs is allocated for each
-//                      XMLCh String in the pool.  Each slot in the
-//                      hash table array itself is a pointer to the head
-//                      of a singly-linked list of these structs.
-//
-//                      Although this struct is delcared with a string length of one,
-//                      the factory method allocates enough storage to hold the full
-//                      string length.
-//
-struct DOMStringPoolEntry
-{
-    DOMStringPoolEntry    *fNext;
-    XMLCh                 fString[1];
-};
-
-
-//
-// createSPE - factory method for creating sting pool entry structs.
-//             Allocates sufficient storage to hold the entire string
-//
-static DOMStringPoolEntry *createSPE(const XMLCh *str, DOMDocumentImpl *doc)
-{
-    //  Compute size to allocate.  Note that there's 1 char of string declared in the
-    //       struct, so we don't need to add one again to account for the trailing null.
-    //
-    XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + XMLString::stringLen(str)*sizeof(XMLCh);
-    DOMStringPoolEntry *newSPE = (DOMStringPoolEntry *)doc->allocate(sizeToAllocate);
-    newSPE->fNext = 0;
-    XMLCh * nonConstStr = (XMLCh *)newSPE->fString;
-    XMLString::copyString(nonConstStr, str);
-    return newSPE;
-}
-
-
-
-DOMStringPool::DOMStringPool(XMLSize_t hashTableSize, DOMDocumentImpl *doc)
-:   fDoc(doc)
-,   fHashTableSize(hashTableSize)
-{
-    // needed to get access to the doc's storage allocator.
-
-    //fHashTable = new (fDoc) DOMStringPoolEntry *[hashTableSize];
-    void* p = doc->allocate(sizeof(DOMStringPoolEntry*) * hashTableSize);
-    fHashTable = (DOMStringPoolEntry**) p;
-    for (XMLSize_t i=0; i<fHashTableSize; i++)
-        fHashTable[i] = 0;
-}
-
-
-//  Destructor.    Nothing to do, since storage all belongs to the document.
-//
-DOMStringPool::~DOMStringPool()
-{
-}
-
-
-const XMLCh *DOMStringPool::getPooledString(const XMLCh *in)
-{
-    DOMStringPoolEntry    **pspe;
-    DOMStringPoolEntry    *spe;
-
-    XMLSize_t inHash = XMLString::hash(in, fHashTableSize);
-    pspe = &fHashTable[inHash];
-    while (*pspe != 0)
-    {
-        if (XMLString::equals((*pspe)->fString, in))
-            return (*pspe)->fString;
-        pspe = &((*pspe)->fNext);
-    }
-
-    // This string hasn't been seen before.  Add it to the pool.
-    *pspe = spe = createSPE(in, fDoc);
-    return spe->fString;
-}
-
-
 // -----------------------------------------------------------------------
 //  DOMBuffer: Constructors
 // -----------------------------------------------------------------------

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMStringPool.hpp Mon Jul 21 03:15:01 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -35,39 +35,24 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-
-struct  DOMStringPoolEntry;
 class   DOMDocumentImpl;
 
 //
-// DOMStringPool is a hash table of XMLCh* Strings.
-//  Each DOM Document maintains a DOMStringPool containing a XMLCh* String
-//  for each Element tag name and Attribute Name that has been added
-//  to the document.  When creating additional elements or attributes,
-//  if the name has been seen before, the already existing string
-//  will be reused.
+//  DStringPoolEntry - one of these structs is allocated for each
+//                      XMLCh String in the pool.  Each slot in the
+//                      hash table array itself is a pointer to the head
+//                      of a singly-linked list of these structs.
+//
+//                      Although this struct is delcared with a string length of one,
+//                      the factory method allocates enough storage to hold the full
+//                      string length.
 //
-class DOMStringPool
+struct DOMStringPoolEntry
 {
-public:
-    DOMStringPool(XMLSize_t hashTableSize, DOMDocumentImpl *doc);
-    ~DOMStringPool();
-
-    const XMLCh *getPooledString(const XMLCh *in);
-
-
-private:
-    DOMStringPool(const DOMStringPool &other);      // Copy constructor and assignment
-    DOMStringPool& operator = (const DOMStringPool &other); //  of DOMStringPool are not supported.
-
-
-    DOMDocumentImpl     *fDoc;
-    DOMStringPoolEntry **fHashTable;
-    XMLSize_t            fHashTableSize;
-
+    DOMStringPoolEntry    *fNext;
+    XMLCh                 fString[1];
 };
 
-
 //
 // DOMBuffer is a lightweight text buffer
 // The buffer is not nul terminated until some asks to see the raw buffer

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMTextImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/DOMTextImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMTextImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMTextImpl.cpp Mon Jul 21 03:15:01 2008
@@ -91,9 +91,9 @@
     if (offset > len)
         throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager);
 
-    DOMText *newText =
-                getOwnerDocument()->createTextNode(
-                        this->substringData(offset, len - offset));
+    DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument();
+    DOMText *newText = doc->createTextNode(
+      this->substringData(offset, len - offset));
 
     DOMNode *parent = getParentNode();
     if (parent != 0)
@@ -101,8 +101,8 @@
 
     fCharacterData.fDataBuf->chop(offset);
 
-    if (this->getOwnerDocument() != 0) {
-        Ranges* ranges = ((DOMDocumentImpl *)this->getOwnerDocument())->getRanges();
+    if (doc != 0) {
+        Ranges* ranges = doc->getRanges();
         if (ranges != 0) {
             XMLSize_t sz = ranges->size();
             if (sz != 0) {
@@ -137,7 +137,8 @@
 
 const XMLCh* DOMTextImpl::getWholeText() const
 {
-    DOMTreeWalker* pWalker=getOwnerDocument()->createTreeWalker(getOwnerDocument()->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
+    DOMDocument *doc = getOwnerDocument();
+    DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
     pWalker->setCurrentNode((DOMNode*)this);
     // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in
     // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes.
@@ -165,7 +166,8 @@
 
 DOMText* DOMTextImpl::replaceWholeText(const XMLCh* newText)
 {
-    DOMTreeWalker* pWalker=getOwnerDocument()->createTreeWalker(getOwnerDocument()->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
+    DOMDocument *doc = getOwnerDocument();
+    DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true);
     pWalker->setCurrentNode((DOMNode*)this);
     // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in
     // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes.
@@ -186,7 +188,7 @@
             break;
         if(nextNode->getNodeType()==ENTITY_REFERENCE_NODE)
         {
-            DOMTreeWalker* pInnerWalker=getOwnerDocument()->createTreeWalker(nextNode, DOMNodeFilter::SHOW_ALL, NULL, true);
+            DOMTreeWalker* pInnerWalker=doc->createTreeWalker(nextNode, DOMNodeFilter::SHOW_ALL, NULL, true);
             while(pInnerWalker->nextNode())
             {
                 short nodeType=pInnerWalker->getCurrentNode()->getNodeType();
@@ -208,9 +210,9 @@
         else
         {
             if(getNodeType()==TEXT_NODE)
-                retVal=getOwnerDocument()->createTextNode(newText);
+                retVal=doc->createTextNode(newText);
             else
-                retVal=getOwnerDocument()->createCDATASection(newText);
+                retVal=doc->createCDATASection(newText);
             pFirstTextNode->getParentNode()->insertBefore(retVal, pFirstTextNode);
         }
     }

Modified: xerces/c/trunk/src/xercesc/dom/impl/XSDElementNSImpl.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/dom/impl/XSDElementNSImpl.cpp?rev=678381&r1=678380&r2=678381&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/XSDElementNSImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/XSDElementNSImpl.cpp Mon Jul 21 03:15:01 2008
@@ -54,7 +54,7 @@
 }
 
 DOMNode * XSDElementNSImpl::cloneNode(bool deep) const {
-    DOMNode* newNode = new (getOwnerDocument()) XSDElementNSImpl(*this, deep);
+    DOMNode* newNode = new (fParent.fOwnerDocument) XSDElementNSImpl(*this, deep);
     fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode);
     return newNode;
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org