void YogaLayoutableShadowNode::appendChild(SharedYogaLayoutableShadowNode child) { ensureUnsealed(); auto yogaNodeRawPtr = &yogaNode_; auto childYogaNodeRawPtr = &child->yogaNode_; yogaNodeRawPtr->insertChild(childYogaNodeRawPtr, yogaNodeRawPtr->getChildrenCount()); if (childYogaNodeRawPtr->getOwner() == nullptr) { child->ensureUnsealed(); childYogaNodeRawPtr->setOwner(yogaNodeRawPtr); } }
void YogaLayoutableShadowNode::appendChild(SharedYogaLayoutableShadowNode child) { ensureUnsealed(); auto yogaNodeRawPtr = &yogaNode_; auto childYogaNodeRawPtr = &child->yogaNode_; if (childYogaNodeRawPtr->getOwner() != nullptr) { child = std::static_pointer_cast<const YogaLayoutableShadowNode>(cloneAndReplaceChild(child)); childYogaNodeRawPtr = &child->yogaNode_; } child->ensureUnsealed(); childYogaNodeRawPtr->setOwner(yogaNodeRawPtr); yogaNodeRawPtr->insertChild(childYogaNodeRawPtr, yogaNodeRawPtr->getChildren().size()); }
void YogaLayoutableShadowNode::setYogaNodeChildrenBasedOnShadowNodeChildren(YGNode *yogaNodeRawPtr, const SharedShadowNodeSharedList &children) { auto yogaNodeChildren = YGVector(); for (const SharedShadowNode &shadowNode : *children) { const SharedYogaLayoutableShadowNode yogaLayoutableShadowNode = std::dynamic_pointer_cast<const YogaLayoutableShadowNode>(shadowNode); if (!yogaLayoutableShadowNode) { continue; } auto &&childYogaNodeRawPtr = &yogaLayoutableShadowNode->yogaNode_; yogaNodeChildren.push_back(childYogaNodeRawPtr); if (childYogaNodeRawPtr->getOwner() == nullptr) { yogaLayoutableShadowNode->ensureUnsealed(); childYogaNodeRawPtr->setOwner(yogaNodeRawPtr); } } yogaNodeRawPtr->setChildren(yogaNodeChildren); }