void Node::initializeMember() { mName = mOrgName = new String(); mType = mOrgType = new String(); mExposedField = mOrgExposedField = new Vector<Field>(); mEventInField = mOrgEventInField = new Vector<Field>(); mEventOutField = mOrgEventOutField = new Vector<Field>(); mField = mOrgField = new Vector<Field>(); mPrivateField = mOrgPrivateField = new Vector<Field>(); mPrivateNodeVector = new Vector<Node>(); mInitialized = new bool; mChildNodes = new LinkedList<Node>(); setName(NULL); setParentNode(NULL); setSceneGraph(NULL); #ifdef SUPPORT_JSAI setJavaNodeObject(NULL); #endif setValue(NULL); setInitialized(false); setName(NULL); setReferenceNode(NULL); }
NodeImpl *NodeIteratorImpl::previousNode(int &exceptioncode) { NodeImpl *node = referenceNode() ? referenceNode() : root(); if (pointerBeforeReferenceNode() || acceptNode(node) != NodeFilter::FILTER_ACCEPT) node = findPreviousNode(node); if (node) setReferenceNode(node); setPointerBeforeReferenceNode(); return node; }
NodeImpl *NodeIteratorImpl::nextNode(int &exceptioncode) { if (detached()) { exceptioncode = DOMException::INVALID_STATE_ERR; return 0; } NodeImpl *node = referenceNode() ? referenceNode() : root(); if (!pointerBeforeReferenceNode() || acceptNode(node) != NodeFilter::FILTER_ACCEPT) node = findNextNode(node); if (node) setReferenceNode(node); setPointerBeforeReferenceNode(false); return node; }
void NodeIteratorImpl::notifyBeforeNodeRemoval(NodeImpl *willRemove) { // Iterator is not affected if the removed node is the reference node and is the root. // or if removed node is not the reference node, or the ancestor of the reference node. if (!willRemove || willRemove == root()) return; bool willRemoveReferenceNode = willRemove == referenceNode(); bool willRemoveReferenceNodeAncestor = referenceNode() && referenceNode()->isAncestor(willRemove); if (!willRemoveReferenceNode && !willRemoveReferenceNodeAncestor) return; if (pointerBeforeReferenceNode()) { NodeImpl *node = findNextNode(willRemove); if (node) { // Move out from under the node being removed if the reference node is // a descendant of the node being removed. if (willRemoveReferenceNodeAncestor) { while (node && node->isAncestor(willRemove)) node = findNextNode(node); } if (node) setReferenceNode(node); } else { node = findPreviousNode(willRemove); if (node) { // Move out from under the node being removed if the reference node is // a descendant of the node being removed. if (willRemoveReferenceNodeAncestor) { while (node && node->isAncestor(willRemove)) node = findPreviousNode(node); } if (node) { // Removing last node. // Need to move the pointer after the node preceding the // new reference node. setReferenceNode(node); setPointerBeforeReferenceNode(false); } } } } else { NodeImpl *node = findPreviousNode(willRemove); if (node) { // Move out from under the node being removed if the reference node is // a descendant of the node being removed. if (willRemoveReferenceNodeAncestor) { while (node && node->isAncestor(willRemove)) node = findPreviousNode(node); } if (node) setReferenceNode(node); } else { node = findNextNode(willRemove); // Move out from under the node being removed if the reference node is // a descendant of the node being removed. if (willRemoveReferenceNodeAncestor) { while (node && node->isAncestor(willRemove)) node = findPreviousNode(node); } if (node) setReferenceNode(node); } } }