bool BaseData::setParent(BaseData* parent, const std::string& path) { // First remove previous parents while (!this->inputs.empty()) this->delInput(*this->inputs.begin()); if (parent && !validParent(parent)) { if (m_owner) { m_owner->serr << "Invalid Data link from " << (parent->m_owner ? parent->m_owner->getName() : std::string("?")) << "." << parent->getName() << " to " << m_owner->getName() << "." << getName() << m_owner->sendl; if (!this->getValueTypeInfo()->ValidInfo()) m_owner->serr << " Possible reason: destination Data " << getName() << " has an unknown type" << m_owner->sendl; if (!parent->getValueTypeInfo()->ValidInfo()) m_owner->serr << " Possible reason: source Data " << parent->getName() << " has an unknown type" << m_owner->sendl; } return false; } doSetParent(parent); if (!path.empty()) parentBaseData.set(parent, path); if (parent) { addInput(parent); BaseData::setDirtyValue(); if (!isCounterValid()) update(); m_counters[currentAspect()]++; m_isSets[currentAspect()] = true; } return true; }
void JLogger::setParent(JLogger* parent) { doSetParent(parent); }
void BaseData::doDelInput(DDGNode* n) { if (parentBaseData == n) doSetParent(NULL); DDGNode::doDelInput(n); }