From c1cda3e64d53c6f02bc73349302d44f2b94362d1 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 19 Sep 2023 16:30:02 -0700 Subject: [PATCH] C++ style enums 13/N: Wrap (#39539) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39539 X-link: https://github.com/facebook/yoga/pull/1400 Moves internal usages of YGPositionType to PositionType bypass-github-export-checks Changelog: [Internal] Reviewed By: rshest Differential Revision: D49361746 fbshipit-source-id: ccc77b4c77753b5f41e11f1849d4c02153c190b7 --- .../renderer/components/view/conversions.h | 20 +++++++++---------- .../ReactCommon/yoga/yoga/Yoga.cpp | 5 +++-- .../yoga/yoga/algorithm/CalculateLayout.cpp | 8 ++++---- .../yoga/yoga/algorithm/FlexLine.cpp | 2 +- .../yoga/yoga/debug/NodeToString.cpp | 3 +-- .../ReactCommon/yoga/yoga/style/Style.h | 9 +++++---- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/view/conversions.h index f5cc23fc820..2055dbc9c6d 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/conversions.h @@ -333,26 +333,26 @@ inline void fromRawValue( inline void fromRawValue( const PropsParserContext& context, const RawValue& value, - YGWrap& result) { - result = YGWrapNoWrap; + yoga::Wrap& result) { + result = yoga::Wrap::NoWrap; react_native_expect(value.hasType()); if (!value.hasType()) { return; } auto stringValue = (std::string)value; if (stringValue == "nowrap") { - result = YGWrapNoWrap; + result = yoga::Wrap::NoWrap; return; } if (stringValue == "wrap") { - result = YGWrapWrap; + result = yoga::Wrap::Wrap; return; } if (stringValue == "wrap-reverse") { - result = YGWrapWrapReverse; + result = yoga::Wrap::WrapReverse; return; } - LOG(ERROR) << "Could not parse YGWrap:" << stringValue; + LOG(ERROR) << "Could not parse yoga::Wrap:" << stringValue; react_native_expect(false); } @@ -811,13 +811,13 @@ inline std::string toString(const yoga::PositionType& value) { } } -inline std::string toString(const YGWrap& value) { +inline std::string toString(const yoga::Wrap& value) { switch (value) { - case YGWrapNoWrap: + case yoga::Wrap::NoWrap: return "no-wrap"; - case YGWrapWrap: + case yoga::Wrap::Wrap: return "wrap"; - case YGWrapWrapReverse: + case yoga::Wrap::WrapReverse: return "wrap-reverse"; } } diff --git a/packages/react-native/ReactCommon/yoga/yoga/Yoga.cpp b/packages/react-native/ReactCommon/yoga/yoga/Yoga.cpp index cb4d96c28e4..79bc2610392 100644 --- a/packages/react-native/ReactCommon/yoga/yoga/Yoga.cpp +++ b/packages/react-native/ReactCommon/yoga/yoga/Yoga.cpp @@ -492,10 +492,11 @@ YGPositionType YGNodeStyleGetPositionType(const YGNodeConstRef node) { } void YGNodeStyleSetFlexWrap(const YGNodeRef node, const YGWrap flexWrap) { - updateStyle(node, &Style::flexWrap, flexWrap); + updateStyle( + node, &Style::flexWrap, scopedEnum(flexWrap)); } YGWrap YGNodeStyleGetFlexWrap(const YGNodeConstRef node) { - return resolveRef(node)->getStyle().flexWrap(); + return unscopedEnum(resolveRef(node)->getStyle().flexWrap()); } void YGNodeStyleSetOverflow(const YGNodeRef node, const YGOverflow overflow) { diff --git a/packages/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp b/packages/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp index c997679e1fd..4eaa2c1d436 100644 --- a/packages/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +++ b/packages/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp @@ -520,7 +520,7 @@ static void layoutAbsoluteChild( } else if ( !child->isLeadingPositionDefined(crossAxis) && ((resolveChildAlignment(node, child) == Align::FlexEnd) ^ - (node->getStyle().flexWrap() == YGWrapWrapReverse))) { + (node->getStyle().flexWrap() == Wrap::WrapReverse))) { child->setLayoutPosition( (node->getLayout().measuredDimensions[dimension(crossAxis)] - child->getLayout().measuredDimensions[dimension(crossAxis)]), @@ -877,7 +877,7 @@ static float distributeFreeSpaceSecondPass( float flexGrowFactor = 0; float deltaFreeSpace = 0; const bool isMainAxisRow = isRow(mainAxis); - const bool isNodeFlexWrap = node->getStyle().flexWrap() != YGWrapNoWrap; + const bool isNodeFlexWrap = node->getStyle().flexWrap() != Wrap::NoWrap; for (auto currentLineChild : flexLine.itemsInFlow) { childFlexBasis = boundAxisWithinMinAndMax( @@ -1604,7 +1604,7 @@ static void calculateLayoutImpl( resolveDirection(node->getStyle().flexDirection(), direction); const FlexDirection crossAxis = resolveCrossDirection(mainAxis, direction); const bool isMainAxisRow = isRow(mainAxis); - const bool isNodeFlexWrap = node->getStyle().flexWrap() != YGWrapNoWrap; + const bool isNodeFlexWrap = node->getStyle().flexWrap() != Wrap::NoWrap; const float mainAxisownerSize = isMainAxisRow ? ownerWidth : ownerHeight; const float crossAxisownerSize = isMainAxisRow ? ownerHeight : ownerWidth; @@ -2302,7 +2302,7 @@ static void calculateLayoutImpl( // As we only wrapped in normal direction yet, we need to reverse the // positions on wrap-reverse. - if (performLayout && node->getStyle().flexWrap() == YGWrapWrapReverse) { + if (performLayout && node->getStyle().flexWrap() == Wrap::WrapReverse) { for (size_t i = 0; i < childCount; i++) { const auto child = node->getChild(i); if (child->getStyle().positionType() != PositionType::Absolute) { diff --git a/packages/react-native/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp b/packages/react-native/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp index 2a5220c6bb7..0721941994f 100644 --- a/packages/react-native/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp +++ b/packages/react-native/ReactCommon/yoga/yoga/algorithm/FlexLine.cpp @@ -32,7 +32,7 @@ FlexLine calculateFlexLine( float sizeConsumedIncludingMinConstraint = 0; const FlexDirection mainAxis = resolveDirection( node->getStyle().flexDirection(), node->resolveDirection(ownerDirection)); - const bool isNodeFlexWrap = node->getStyle().flexWrap() != YGWrapNoWrap; + const bool isNodeFlexWrap = node->getStyle().flexWrap() != Wrap::NoWrap; const float gap = node->getGapForAxis(mainAxis, availableInnerWidth).unwrap(); // Add items to the current line until it's full or we run out of items. diff --git a/packages/react-native/ReactCommon/yoga/yoga/debug/NodeToString.cpp b/packages/react-native/ReactCommon/yoga/yoga/debug/NodeToString.cpp index f7f6cb11e42..72feed654f7 100644 --- a/packages/react-native/ReactCommon/yoga/yoga/debug/NodeToString.cpp +++ b/packages/react-native/ReactCommon/yoga/yoga/debug/NodeToString.cpp @@ -166,8 +166,7 @@ void nodeToString( appendFloatOptionalIfDefined(str, "flex", style.flex()); if (style.flexWrap() != yoga::Node{}.getStyle().flexWrap()) { - appendFormattedString( - str, "flex-wrap: %s; ", YGWrapToString(style.flexWrap())); + appendFormattedString(str, "flex-wrap: %s; ", toString(style.flexWrap())); } if (style.overflow() != yoga::Node{}.getStyle().overflow()) { diff --git a/packages/react-native/ReactCommon/yoga/yoga/style/Style.h b/packages/react-native/ReactCommon/yoga/yoga/style/Style.h index 12b54dca336..7928b0317be 100644 --- a/packages/react-native/ReactCommon/yoga/yoga/style/Style.h +++ b/packages/react-native/ReactCommon/yoga/yoga/style/Style.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -119,7 +120,7 @@ class YG_EXPORT Style { static constexpr uint8_t flexWrapOffset = positionTypeOffset + minimumBitCount(); static constexpr uint8_t overflowOffset = - flexWrapOffset + minimumBitCount(); + flexWrapOffset + minimumBitCount(); static constexpr uint8_t displayOffset = overflowOffset + minimumBitCount(); @@ -193,10 +194,10 @@ class YG_EXPORT Style { return {*this, positionTypeOffset}; } - YGWrap flexWrap() const { - return getEnumData(flags, flexWrapOffset); + Wrap flexWrap() const { + return getEnumData(flags, flexWrapOffset); } - BitfieldRef flexWrap() { + BitfieldRef flexWrap() { return {*this, flexWrapOffset}; }