void DOMAttrMapImpl::cloneContent(const DOMAttrMapImpl *srcmap) { if ((srcmap != 0) && (srcmap->fNodes != 0)) { if (fNodes != 0) fNodes->reset(); else { XMLSize_t size = srcmap->fNodes->size(); if(size > 0) { DOMDocument *doc = fOwnerNode->getOwnerDocument(); fNodes = new (doc) DOMNodeVector(doc, size); } } for (XMLSize_t i = 0; i < srcmap->fNodes->size(); i++) { DOMNode *n = srcmap->fNodes->elementAt(i); DOMNode *clone = n->cloneNode(true); castToNodeImpl(clone)->isSpecified(castToNodeImpl(n)->isSpecified()); castToNodeImpl(clone)->fOwnerNode = fOwnerNode; castToNodeImpl(clone)->isOwned(true); fNodes->addElement(clone); } } }
void DOMParentNode::cloneChildren(const DOMNode *other) { // for (DOMNode *mykid = other.getFirstChild(); for (DOMNode *mykid = other->getFirstChild(); mykid != 0; mykid = mykid->getNextSibling()) { appendChild(mykid->cloneNode(true)); } }
DOMNamedNodeMapImpl *DOMNamedNodeMapImpl::cloneMap(DOMNode *ownerNod) { DOMDocumentImpl *doc = (DOMDocumentImpl *)(castToNodeImpl(ownerNod)->getOwnerDocument()); DOMNamedNodeMapImpl *newmap = new (doc) DOMNamedNodeMapImpl(ownerNod); for(int index=0;index<MAP_SIZE;index++) if (fBuckets[index] != 0) { XMLSize_t size=fBuckets[index]->size(); newmap->fBuckets[index] = new (doc) DOMNodeVector(doc, size); for (XMLSize_t i = 0; i < size; ++i) { DOMNode *s = fBuckets[index]->elementAt(i); DOMNode *n = s->cloneNode(true); castToNodeImpl(n)->isSpecified(castToNodeImpl(s)->isSpecified()); castToNodeImpl(n)->fOwnerNode = ownerNod; castToNodeImpl(n)->isOwned(true); newmap->fBuckets[index]->addElement(n); } } return newmap; }