std::shared_ptr<Node> Node::removeChild(const char *name) { auto childIter = childIterator(name); if (childIter == std::end(m_children)) QUBE_PUSH_ERROR(g_errorHandler, "Failed to find the given name of the child to be removed"); auto removed = *childIter; removed->m_parent = nullptr; m_children.erase(childIter); return removed; }
mitk::DataTreeIteratorClone mitk::DataTreeHelper::GetNamedChild(mitk::DataTreeIteratorBase* iterator, std::string name) { mitk::DataTreeChildIterator childIterator(*iterator); while (! childIterator.IsAtEnd() ) { mitk::DataNode* node = childIterator.Get(); std::string nodeName; if (node && node->GetName(nodeName)) { if (nodeName == name) { return DataTreeIteratorClone(childIterator); } } ++childIterator; } return DataTreeIteratorClone(NULL); }
// From IXmlSink bool CElement::fromXml(const CXmlElement& xmlElement, CXmlSerializingContext& serializingContext) { // Propagate through children CXmlElement::CChildIterator childIterator(xmlElement); // Context CXmlElementSerializingContext& elementSerializingContext = static_cast<CXmlElementSerializingContext&>(serializingContext); CXmlElement childElement; while (childIterator.next(childElement)) { CElement* pChild; if (!childrenAreDynamic()) { pChild = findChildOfKind(childElement.getType()); if (!pChild) { elementSerializingContext.setError("Unable to handle XML element: " + childElement.getPath()); return false; } } else { // Child needs creation pChild = createChild(childElement, serializingContext); if (!pChild) { return false; } } // Dig if (!pChild->fromXml(childElement, elementSerializingContext)) { return false; } } return true; }
std::shared_ptr<Node> Node::child(const char *name) const { auto childIter = childIterator(name); if (childIter == std::end(m_children)) return nullptr; return *childIter; }