Move reset logic to YGNode::reset()
Summary: @public Moving logic from free C functions to the C++ layer. This will allow us to get rid of the dangerous copy / move assignment operators of `YGNode`. Reviewed By: SidharthGuglani Differential Revision: D14241564 fbshipit-source-id: aae9f2a7ffd23bb839f1747e4a0694578bae86ae
This commit is contained in:
committed by
Facebook Github Bot
parent
e25fe994b3
commit
15668aceb6
@@ -571,3 +571,22 @@ bool YGNode::isLayoutTreeEqualToNode(const YGNode& node) const {
|
|||||||
}
|
}
|
||||||
return isLayoutTreeEqual;
|
return isLayoutTreeEqual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YGNode::reset() {
|
||||||
|
YGAssertWithNode(
|
||||||
|
this,
|
||||||
|
children_.size() == 0,
|
||||||
|
"Cannot reset a node which still has children attached");
|
||||||
|
YGAssertWithNode(
|
||||||
|
this, owner_ == nullptr, "Cannot reset a node still attached to a owner");
|
||||||
|
|
||||||
|
clearChildren();
|
||||||
|
|
||||||
|
auto config = getConfig();
|
||||||
|
*this = YGNode{};
|
||||||
|
if (config->useWebDefaults) {
|
||||||
|
setStyleFlexDirection(YGFlexDirectionRow);
|
||||||
|
setStyleAlignContent(YGAlignStretch);
|
||||||
|
}
|
||||||
|
setConfig(config);
|
||||||
|
}
|
||||||
|
@@ -342,4 +342,5 @@ public:
|
|||||||
bool isNodeFlexible();
|
bool isNodeFlexible();
|
||||||
bool didUseLegacyFlag();
|
bool didUseLegacyFlag();
|
||||||
bool isLayoutTreeEqualToNode(const YGNode& node) const;
|
bool isLayoutTreeEqualToNode(const YGNode& node) const;
|
||||||
|
void reset();
|
||||||
};
|
};
|
||||||
|
@@ -323,25 +323,8 @@ void YGNodeFreeRecursive(const YGNodeRef root) {
|
|||||||
return YGNodeFreeRecursiveWithCleanupFunc(root, nullptr);
|
return YGNodeFreeRecursiveWithCleanupFunc(root, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void YGNodeReset(const YGNodeRef node) {
|
void YGNodeReset(YGNodeRef node) {
|
||||||
YGAssertWithNode(
|
node->reset();
|
||||||
node,
|
|
||||||
YGNodeGetChildCount(node) == 0,
|
|
||||||
"Cannot reset a node which still has children attached");
|
|
||||||
YGAssertWithNode(
|
|
||||||
node,
|
|
||||||
node->getOwner() == nullptr,
|
|
||||||
"Cannot reset a node still attached to a owner");
|
|
||||||
|
|
||||||
node->clearChildren();
|
|
||||||
|
|
||||||
const YGConfigRef config = node->getConfig();
|
|
||||||
*node = YGNode();
|
|
||||||
if (config->useWebDefaults) {
|
|
||||||
node->setStyleFlexDirection(YGFlexDirectionRow);
|
|
||||||
node->setStyleAlignContent(YGAlignStretch);
|
|
||||||
}
|
|
||||||
node->setConfig(config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t YGNodeGetInstanceCount(void) {
|
int32_t YGNodeGetInstanceCount(void) {
|
||||||
|
Reference in New Issue
Block a user