Пример #1
0
	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;
	}
Пример #2
0
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);
}
Пример #3
0
// 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;
}
Пример #4
0
	std::shared_ptr<Node> Node::child(const char *name) const {
		auto childIter = childIterator(name);
		if (childIter == std::end(m_children)) return nullptr;
		return *childIter;
	}