| 229 | |
| 230 | |
| 231 | Node* AbstractContainerNode::removeChild(Node* oldChild) |
| 232 | { |
| 233 | poco_check_ptr (oldChild); |
| 234 | |
| 235 | bool doEvents = events(); |
| 236 | if (oldChild == _pFirstChild) |
| 237 | { |
| 238 | if (doEvents) |
| 239 | { |
| 240 | static_cast<AbstractNode*>(oldChild)->dispatchNodeRemoved(); |
| 241 | static_cast<AbstractNode*>(oldChild)->dispatchNodeRemovedFromDocument(); |
| 242 | } |
| 243 | _pFirstChild = _pFirstChild->_pNext; |
| 244 | static_cast<AbstractNode*>(oldChild)->_pNext = 0; |
| 245 | static_cast<AbstractNode*>(oldChild)->_pParent = 0; |
| 246 | } |
| 247 | else |
| 248 | { |
| 249 | AbstractNode* pCur = _pFirstChild; |
| 250 | while (pCur && pCur->_pNext != oldChild) pCur = pCur->_pNext; |
| 251 | if (pCur) |
| 252 | { |
| 253 | if (doEvents) |
| 254 | { |
| 255 | static_cast<AbstractNode*>(oldChild)->dispatchNodeRemoved(); |
| 256 | static_cast<AbstractNode*>(oldChild)->dispatchNodeRemovedFromDocument(); |
| 257 | } |
| 258 | pCur->_pNext = pCur->_pNext->_pNext; |
| 259 | static_cast<AbstractNode*>(oldChild)->_pNext = 0; |
| 260 | static_cast<AbstractNode*>(oldChild)->_pParent = 0; |
| 261 | } |
| 262 | else throw DOMException(DOMException::NOT_FOUND_ERR); |
| 263 | } |
| 264 | oldChild->autoRelease(); |
| 265 | if (doEvents) dispatchSubtreeModified(); |
| 266 | return oldChild; |
| 267 | } |
| 268 | |
| 269 | |
| 270 | Node* AbstractContainerNode::appendChild(Node* newChild) |
no test coverage detected