From 8a95b785a8dfe148d1ab87fda9f09881950d11c8 Mon Sep 17 00:00:00 2001 From: Zhiyao Zhou Date: Tue, 29 Aug 2023 23:27:25 -0700 Subject: [PATCH] Revert D48768374: C++ Cleanup 7/N: BitUtils Differential Revision: D48768374 Original commit changeset: 921a22ec88bd Original Phabricator Diff: D48768374 fbshipit-source-id: 59106ab3d03619940023dac1c2af62fd88566773 --- tests/BitUtilsTest.cpp | 204 ++++++++++++++++++++ tests/NumericBitfieldTest.cpp | 204 -------------------- yoga/{bits/NumericBitfield.h => BitUtils.h} | 29 ++- yoga/bits/EnumBitset.h | 19 -- yoga/config/Config.cpp | 2 +- yoga/config/Config.h | 8 +- yoga/node/LayoutResults.h | 17 +- yoga/style/Style.h | 57 +++--- 8 files changed, 268 insertions(+), 272 deletions(-) create mode 100644 tests/BitUtilsTest.cpp delete mode 100644 tests/NumericBitfieldTest.cpp rename yoga/{bits/NumericBitfield.h => BitUtils.h} (64%) delete mode 100644 yoga/bits/EnumBitset.h diff --git a/tests/BitUtilsTest.cpp b/tests/BitUtilsTest.cpp new file mode 100644 index 00000000..211a155c --- /dev/null +++ b/tests/BitUtilsTest.cpp @@ -0,0 +1,204 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include + +#include +#include + +namespace facebook::yoga { + +TEST(BitUtils, one_boolean_defaults_to_false) { + constexpr uint8_t flags = 0; + + ASSERT_EQ(detail::getBooleanData(flags, 0), false); + static_assert( + detail::getBooleanData(flags, 0) == false, + "first boolean member must default to false"); +} + +TEST(BitUtils, one_boolean_can_be_initialized_to_true) { + constexpr uint8_t flags = 1; + + ASSERT_EQ(detail::getBooleanData(flags, 0), true); + static_assert( + detail::getBooleanData(flags, 0) == true, + "first boolean member must be initialized to true"); +} + +TEST(BitUtils, one_boolean_can_be_set_to_true) { + uint8_t flags = 0; + + detail::setBooleanData(flags, 0, true); + ASSERT_EQ(detail::getBooleanData(flags, 0), true); +} + +TEST(BitUtils, second_boolean_defaults_to_false) { + constexpr uint8_t flags = 0; + + ASSERT_EQ(detail::getBooleanData(flags, 1), false); + static_assert( + detail::getBooleanData(flags, 1) == false, + "second boolean member must default to false"); +} + +TEST(BitUtils, second_boolean_can_be_initialized_to_true) { + constexpr uint8_t flags = 2; + + ASSERT_EQ(detail::getBooleanData(flags, 0), false); + ASSERT_EQ(detail::getBooleanData(flags, 1), true); + static_assert( + detail::getBooleanData(flags, 0) == false, + "first boolean member must default to false"); + static_assert( + detail::getBooleanData(flags, 1) == true, + "second boolean member must be initialized to true"); +} + +TEST(BitUtils, second_boolean_can_be_set_to_true) { + uint8_t flags = 0; + + detail::setBooleanData(flags, 1, true); + ASSERT_EQ(detail::getBooleanData(flags, 0), false); + ASSERT_EQ(detail::getBooleanData(flags, 1), true); +} + +TEST(BitUtils, third_boolean_defaults_to_false) { + constexpr uint8_t flags = 0; + + ASSERT_EQ(detail::getBooleanData(flags, 2), false); + static_assert( + detail::getBooleanData(flags, 2) == false, + "second boolean member must default to false"); +} + +TEST(BitUtils, third_boolean_can_be_initialized_to_true) { + constexpr uint8_t flags = 4; + + ASSERT_EQ(detail::getBooleanData(flags, 0), false); + ASSERT_EQ(detail::getBooleanData(flags, 1), false); + ASSERT_EQ(detail::getBooleanData(flags, 2), true); + static_assert( + detail::getBooleanData(flags, 0) == false, + "first boolean member must default to false"); + static_assert( + detail::getBooleanData(flags, 1) == false, + "second boolean member must default to false"); + static_assert( + detail::getBooleanData(flags, 2) == true, + "second boolean member must be initialized to true"); +} + +TEST(BitUtils, third_boolean_can_be_set_to_true) { + uint8_t flags = 0; + + detail::setBooleanData(flags, 2, true); + ASSERT_EQ(detail::getBooleanData(flags, 0), false); + ASSERT_EQ(detail::getBooleanData(flags, 1), false); + ASSERT_EQ(detail::getBooleanData(flags, 2), true); +} + +TEST(BitUtils, setting_boolean_values_does_not_spill_over) { + uint8_t flags = 0; + + detail::setBooleanData(flags, 1, (bool) 7); + + ASSERT_EQ(detail::getBooleanData(flags, 0), false); + ASSERT_EQ(detail::getBooleanData(flags, 1), true); + ASSERT_EQ(detail::getBooleanData(flags, 2), false); +} + +TEST(BitUtils, first_enum_defaults_to_0) { + constexpr uint8_t flags = 0; + + ASSERT_EQ(detail::getEnumData(flags, 0), YGAlignAuto); + static_assert( + detail::getEnumData(flags, 0) == YGAlignAuto, + "first enum member must default to 0"); +} + +TEST(BitUtils, first_enum_can_be_set) { + uint8_t flags = 0; + + detail::setEnumData(flags, 0, YGAlignSpaceBetween); + + ASSERT_EQ(detail::getEnumData(flags, 0), YGAlignSpaceBetween); +} + +TEST(BitUtils, second_enum_defaults_to_0) { + constexpr uint8_t flags = 0; + static constexpr size_t alignOffset = 0; + static constexpr size_t edgeOffset = 3; + + ASSERT_EQ(detail::getEnumData(flags, alignOffset), YGAlignAuto); + ASSERT_EQ(detail::getEnumData(flags, edgeOffset), YGEdgeLeft); + static_assert( + detail::getEnumData(flags, alignOffset) == YGAlignAuto, + "first enum member must default to 0"); + static_assert( + detail::getEnumData(flags, edgeOffset) == YGEdgeLeft, + "second enum member must default to 0"); +} + +TEST(BitUtils, second_enum_can_be_set) { + uint8_t flags = 0; + static constexpr size_t alignOffset = 0; + static constexpr size_t edgeOffset = 3; + + detail::setEnumData(flags, edgeOffset, YGEdgeAll); + + ASSERT_EQ(detail::getEnumData(flags, alignOffset), YGAlignAuto); + ASSERT_EQ(detail::getEnumData(flags, edgeOffset), YGEdgeAll); +} + +TEST(BitUtils, third_enum_defaults_to_0) { + constexpr uint8_t flags = 0; + static constexpr size_t alignOffset = 0; + static constexpr size_t boolOffset = 3; + static constexpr size_t edgesOffset = 4; + + ASSERT_EQ(detail::getEnumData(flags, alignOffset), YGAlignAuto); + ASSERT_EQ(detail::getBooleanData(flags, boolOffset), false); + ASSERT_EQ(detail::getEnumData(flags, edgesOffset), YGEdgeLeft); + static_assert( + detail::getEnumData(flags, alignOffset) == YGAlignAuto, + "first enum member must default to 0"); + static_assert( + detail::getBooleanData(flags, boolOffset) == false, + "middle boolean member must default to false"); + static_assert( + detail::getEnumData(flags, edgesOffset) == YGEdgeLeft, + "last enum member must default to 0"); +} + +TEST(BitUtils, third_enum_can_be_set) { + uint8_t flags = 0; + static constexpr size_t alignOffset = 0; + static constexpr size_t boolOffset = 3; + static constexpr size_t edgesOffset = 4; + + detail::setEnumData(flags, edgesOffset, YGEdgeVertical); + + ASSERT_EQ(detail::getEnumData(flags, alignOffset), YGAlignAuto); + ASSERT_EQ(detail::getBooleanData(flags, boolOffset), false); + ASSERT_EQ(detail::getEnumData(flags, edgesOffset), YGEdgeVertical); +} + +TEST(BitUtils, setting_values_does_not_spill_over) { + uint8_t flags = 0; + static constexpr size_t alignOffset = 0; + static constexpr size_t edgesOffset = 3; + static constexpr size_t boolOffset = 7; + + detail::setEnumData(flags, edgesOffset, (YGEdge) 0xffffff); + + ASSERT_EQ(detail::getEnumData(flags, alignOffset), 0); + ASSERT_EQ(detail::getBooleanData(flags, boolOffset), false); + ASSERT_EQ(detail::getEnumData(flags, edgesOffset), 0xf); +} + +} // namespace facebook::yoga diff --git a/tests/NumericBitfieldTest.cpp b/tests/NumericBitfieldTest.cpp deleted file mode 100644 index 9b487cee..00000000 --- a/tests/NumericBitfieldTest.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include - -#include -#include - -namespace facebook::yoga { - -TEST(NumericBitfield, one_boolean_defaults_to_false) { - constexpr uint8_t flags = 0; - - ASSERT_EQ(getBooleanData(flags, 0), false); - static_assert( - getBooleanData(flags, 0) == false, - "first boolean member must default to false"); -} - -TEST(NumericBitfield, one_boolean_can_be_initialized_to_true) { - constexpr uint8_t flags = 1; - - ASSERT_EQ(getBooleanData(flags, 0), true); - static_assert( - getBooleanData(flags, 0) == true, - "first boolean member must be initialized to true"); -} - -TEST(NumericBitfield, one_boolean_can_be_set_to_true) { - uint8_t flags = 0; - - setBooleanData(flags, 0, true); - ASSERT_EQ(getBooleanData(flags, 0), true); -} - -TEST(NumericBitfield, second_boolean_defaults_to_false) { - constexpr uint8_t flags = 0; - - ASSERT_EQ(getBooleanData(flags, 1), false); - static_assert( - getBooleanData(flags, 1) == false, - "second boolean member must default to false"); -} - -TEST(NumericBitfield, second_boolean_can_be_initialized_to_true) { - constexpr uint8_t flags = 2; - - ASSERT_EQ(getBooleanData(flags, 0), false); - ASSERT_EQ(getBooleanData(flags, 1), true); - static_assert( - getBooleanData(flags, 0) == false, - "first boolean member must default to false"); - static_assert( - getBooleanData(flags, 1) == true, - "second boolean member must be initialized to true"); -} - -TEST(NumericBitfield, second_boolean_can_be_set_to_true) { - uint8_t flags = 0; - - setBooleanData(flags, 1, true); - ASSERT_EQ(getBooleanData(flags, 0), false); - ASSERT_EQ(getBooleanData(flags, 1), true); -} - -TEST(NumericBitfield, third_boolean_defaults_to_false) { - constexpr uint8_t flags = 0; - - ASSERT_EQ(getBooleanData(flags, 2), false); - static_assert( - getBooleanData(flags, 2) == false, - "second boolean member must default to false"); -} - -TEST(NumericBitfield, third_boolean_can_be_initialized_to_true) { - constexpr uint8_t flags = 4; - - ASSERT_EQ(getBooleanData(flags, 0), false); - ASSERT_EQ(getBooleanData(flags, 1), false); - ASSERT_EQ(getBooleanData(flags, 2), true); - static_assert( - getBooleanData(flags, 0) == false, - "first boolean member must default to false"); - static_assert( - getBooleanData(flags, 1) == false, - "second boolean member must default to false"); - static_assert( - getBooleanData(flags, 2) == true, - "second boolean member must be initialized to true"); -} - -TEST(NumericBitfield, third_boolean_can_be_set_to_true) { - uint8_t flags = 0; - - setBooleanData(flags, 2, true); - ASSERT_EQ(getBooleanData(flags, 0), false); - ASSERT_EQ(getBooleanData(flags, 1), false); - ASSERT_EQ(getBooleanData(flags, 2), true); -} - -TEST(NumericBitfield, setting_boolean_values_does_not_spill_over) { - uint8_t flags = 0; - - setBooleanData(flags, 1, (bool) 7); - - ASSERT_EQ(getBooleanData(flags, 0), false); - ASSERT_EQ(getBooleanData(flags, 1), true); - ASSERT_EQ(getBooleanData(flags, 2), false); -} - -TEST(NumericBitfield, first_enum_defaults_to_0) { - constexpr uint8_t flags = 0; - - ASSERT_EQ(getEnumData(flags, 0), YGAlignAuto); - static_assert( - getEnumData(flags, 0) == YGAlignAuto, - "first enum member must default to 0"); -} - -TEST(NumericBitfield, first_enum_can_be_set) { - uint8_t flags = 0; - - setEnumData(flags, 0, YGAlignSpaceBetween); - - ASSERT_EQ(getEnumData(flags, 0), YGAlignSpaceBetween); -} - -TEST(NumericBitfield, second_enum_defaults_to_0) { - constexpr uint8_t flags = 0; - static constexpr size_t alignOffset = 0; - static constexpr size_t edgeOffset = 3; - - ASSERT_EQ(getEnumData(flags, alignOffset), YGAlignAuto); - ASSERT_EQ(getEnumData(flags, edgeOffset), YGEdgeLeft); - static_assert( - getEnumData(flags, alignOffset) == YGAlignAuto, - "first enum member must default to 0"); - static_assert( - getEnumData(flags, edgeOffset) == YGEdgeLeft, - "second enum member must default to 0"); -} - -TEST(NumericBitfield, second_enum_can_be_set) { - uint8_t flags = 0; - static constexpr size_t alignOffset = 0; - static constexpr size_t edgeOffset = 3; - - setEnumData(flags, edgeOffset, YGEdgeAll); - - ASSERT_EQ(getEnumData(flags, alignOffset), YGAlignAuto); - ASSERT_EQ(getEnumData(flags, edgeOffset), YGEdgeAll); -} - -TEST(NumericBitfield, third_enum_defaults_to_0) { - constexpr uint8_t flags = 0; - static constexpr size_t alignOffset = 0; - static constexpr size_t boolOffset = 3; - static constexpr size_t edgesOffset = 4; - - ASSERT_EQ(getEnumData(flags, alignOffset), YGAlignAuto); - ASSERT_EQ(getBooleanData(flags, boolOffset), false); - ASSERT_EQ(getEnumData(flags, edgesOffset), YGEdgeLeft); - static_assert( - getEnumData(flags, alignOffset) == YGAlignAuto, - "first enum member must default to 0"); - static_assert( - getBooleanData(flags, boolOffset) == false, - "middle boolean member must default to false"); - static_assert( - getEnumData(flags, edgesOffset) == YGEdgeLeft, - "last enum member must default to 0"); -} - -TEST(NumericBitfield, third_enum_can_be_set) { - uint8_t flags = 0; - static constexpr size_t alignOffset = 0; - static constexpr size_t boolOffset = 3; - static constexpr size_t edgesOffset = 4; - - setEnumData(flags, edgesOffset, YGEdgeVertical); - - ASSERT_EQ(getEnumData(flags, alignOffset), YGAlignAuto); - ASSERT_EQ(getBooleanData(flags, boolOffset), false); - ASSERT_EQ(getEnumData(flags, edgesOffset), YGEdgeVertical); -} - -TEST(NumericBitfield, setting_values_does_not_spill_over) { - uint8_t flags = 0; - static constexpr size_t alignOffset = 0; - static constexpr size_t edgesOffset = 3; - static constexpr size_t boolOffset = 7; - - setEnumData(flags, edgesOffset, (YGEdge) 0xffffff); - - ASSERT_EQ(getEnumData(flags, alignOffset), 0); - ASSERT_EQ(getBooleanData(flags, boolOffset), false); - ASSERT_EQ(getEnumData(flags, edgesOffset), 0xf); -} - -} // namespace facebook::yoga diff --git a/yoga/bits/NumericBitfield.h b/yoga/BitUtils.h similarity index 64% rename from yoga/bits/NumericBitfield.h rename to yoga/BitUtils.h index af3fc692..7c915505 100644 --- a/yoga/bits/NumericBitfield.h +++ b/yoga/BitUtils.h @@ -13,7 +13,11 @@ #include -namespace facebook::yoga::details { +namespace facebook::yoga::detail { + +// std::bitset with one bit for each option defined in YG_ENUM_SEQ_DECL +template +using EnumBitset = std::bitset()>; constexpr size_t log2ceilFn(size_t n) { return n < 1 ? 0 : (1 + log2ceilFn(n / 2)); @@ -23,37 +27,30 @@ constexpr int mask(size_t bitWidth, size_t index) { return ((1 << bitWidth) - 1) << index; } -} // namespace facebook::yoga::details - -namespace facebook::yoga { - // The number of bits necessary to represent enums defined with YG_ENUM_SEQ_DECL template -constexpr size_t minimumBitCount() { +constexpr size_t bitWidthFn() { static_assert( enums::count() > 0, "Enums must have at least one entries"); - return details::log2ceilFn(enums::count() - 1); + return log2ceilFn(enums::count() - 1); } template constexpr Enum getEnumData(int flags, size_t index) { - return static_cast( - (flags & details::mask(minimumBitCount(), index)) >> index); + return static_cast((flags & mask(bitWidthFn(), index)) >> index); } template void setEnumData(uint32_t& flags, size_t index, int newValue) { - flags = (flags & ~details::mask(minimumBitCount(), index)) | - ((newValue << index) & (details::mask(minimumBitCount(), index))); + flags = (flags & ~mask(bitWidthFn(), index)) | + ((newValue << index) & (mask(bitWidthFn(), index))); } template void setEnumData(uint8_t& flags, size_t index, int newValue) { - flags = - (flags & - ~static_cast(details::mask(minimumBitCount(), index))) | + flags = (flags & ~static_cast(mask(bitWidthFn(), index))) | ((newValue << index) & - (static_cast(details::mask(minimumBitCount(), index)))); + (static_cast(mask(bitWidthFn(), index)))); } constexpr bool getBooleanData(int flags, size_t index) { @@ -68,4 +65,4 @@ inline void setBooleanData(uint8_t& flags, size_t index, bool value) { } } -} // namespace facebook::yoga +} // namespace facebook::yoga::detail diff --git a/yoga/bits/EnumBitset.h b/yoga/bits/EnumBitset.h deleted file mode 100644 index 3dff663f..00000000 --- a/yoga/bits/EnumBitset.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#pragma once - -#include -#include - -namespace facebook::yoga { - -// std::bitset with one bit for each option defined in YG_ENUM_SEQ_DECL -template -using EnumBitset = std::bitset()>; - -} // namespace facebook::yoga diff --git a/yoga/config/Config.cpp b/yoga/config/Config.cpp index d8809cf5..2f07454b 100644 --- a/yoga/config/Config.cpp +++ b/yoga/config/Config.cpp @@ -46,7 +46,7 @@ bool Config::isExperimentalFeatureEnabled(YGExperimentalFeature feature) const { return experimentalFeatures_.test(feature); } -EnumBitset Config::getEnabledExperiments() const { +ExperimentalFeatureSet Config::getEnabledExperiments() const { return experimentalFeatures_; } diff --git a/yoga/config/Config.h b/yoga/config/Config.h index d0894b86..6470ebde 100644 --- a/yoga/config/Config.h +++ b/yoga/config/Config.h @@ -9,7 +9,7 @@ #include -#include +#include #include // Tag struct used to form the opaque YGConfigRef for the public C API @@ -38,6 +38,8 @@ using CloneWithContextFn = YGNodeRef (*)( int childIndex, void* cloneContext); +using ExperimentalFeatureSet = detail::EnumBitset; + #pragma pack(push) #pragma pack(1) // Packed structure of <32-bit options to miminize size per node. @@ -63,7 +65,7 @@ public: YGExperimentalFeature feature, bool enabled); bool isExperimentalFeatureEnabled(YGExperimentalFeature feature) const; - EnumBitset getEnabledExperiments() const; + ExperimentalFeatureSet getEnabledExperiments() const; void setErrata(YGErrata errata); void addErrata(YGErrata errata); @@ -102,7 +104,7 @@ private: } logger_; ConfigFlags flags_{}; - EnumBitset experimentalFeatures_{}; + ExperimentalFeatureSet experimentalFeatures_{}; YGErrata errata_ = YGErrataNone; float pointScaleFactor_ = 1.0f; void* context_ = nullptr; diff --git a/yoga/node/LayoutResults.h b/yoga/node/LayoutResults.h index c0d2bee2..d920e9a2 100644 --- a/yoga/node/LayoutResults.h +++ b/yoga/node/LayoutResults.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include @@ -23,7 +23,7 @@ struct LayoutResults { private: static constexpr size_t directionOffset = 0; static constexpr size_t hadOverflowOffset = - directionOffset + minimumBitCount(); + directionOffset + facebook::yoga::detail::bitWidthFn(); uint8_t flags = 0; public: @@ -43,16 +43,21 @@ public: YGCachedMeasurement cachedLayout = YGCachedMeasurement(); YGDirection direction() const { - return getEnumData(flags, directionOffset); + return facebook::yoga::detail::getEnumData( + flags, directionOffset); } void setDirection(YGDirection direction) { - setEnumData(flags, directionOffset, direction); + facebook::yoga::detail::setEnumData( + flags, directionOffset, direction); } - bool hadOverflow() const { return getBooleanData(flags, hadOverflowOffset); } + bool hadOverflow() const { + return facebook::yoga::detail::getBooleanData(flags, hadOverflowOffset); + } void setHadOverflow(bool hadOverflow) { - setBooleanData(flags, hadOverflowOffset, hadOverflow); + facebook::yoga::detail::setBooleanData( + flags, hadOverflowOffset, hadOverflow); } bool operator==(LayoutResults layout) const; diff --git a/yoga/style/Style.h b/yoga/style/Style.h index 10854fd6..49bb8ece 100644 --- a/yoga/style/Style.h +++ b/yoga/style/Style.h @@ -14,8 +14,8 @@ #include #include +#include -#include #include #include @@ -34,9 +34,11 @@ public: struct BitfieldRef { Style& style; size_t offset; - operator T() const { return getEnumData(style.flags, offset); } + operator T() const { + return facebook::yoga::detail::getEnumData(style.flags, offset); + } BitfieldRef& operator=(T x) { - setEnumData(style.flags, offset, x); + facebook::yoga::detail::setEnumData(style.flags, offset, x); return *this; } }; @@ -83,23 +85,23 @@ public: private: static constexpr size_t directionOffset = 0; static constexpr size_t flexdirectionOffset = - directionOffset + minimumBitCount(); - static constexpr size_t justifyContentOffset = - flexdirectionOffset + minimumBitCount(); + directionOffset + facebook::yoga::detail::bitWidthFn(); + static constexpr size_t justifyContentOffset = flexdirectionOffset + + facebook::yoga::detail::bitWidthFn(); static constexpr size_t alignContentOffset = - justifyContentOffset + minimumBitCount(); + justifyContentOffset + facebook::yoga::detail::bitWidthFn(); static constexpr size_t alignItemsOffset = - alignContentOffset + minimumBitCount(); + alignContentOffset + facebook::yoga::detail::bitWidthFn(); static constexpr size_t alignSelfOffset = - alignItemsOffset + minimumBitCount(); + alignItemsOffset + facebook::yoga::detail::bitWidthFn(); static constexpr size_t positionTypeOffset = - alignSelfOffset + minimumBitCount(); + alignSelfOffset + facebook::yoga::detail::bitWidthFn(); static constexpr size_t flexWrapOffset = - positionTypeOffset + minimumBitCount(); + positionTypeOffset + facebook::yoga::detail::bitWidthFn(); static constexpr size_t overflowOffset = - flexWrapOffset + minimumBitCount(); + flexWrapOffset + facebook::yoga::detail::bitWidthFn(); static constexpr size_t displayOffset = - overflowOffset + minimumBitCount(); + overflowOffset + facebook::yoga::detail::bitWidthFn(); uint32_t flags = 0; @@ -123,56 +125,65 @@ public: using ValueRepr = std::remove_reference::type; YGDirection direction() const { - return getEnumData(flags, directionOffset); + return facebook::yoga::detail::getEnumData( + flags, directionOffset); } BitfieldRef direction() { return {*this, directionOffset}; } YGFlexDirection flexDirection() const { - return getEnumData(flags, flexdirectionOffset); + return facebook::yoga::detail::getEnumData( + flags, flexdirectionOffset); } BitfieldRef flexDirection() { return {*this, flexdirectionOffset}; } YGJustify justifyContent() const { - return getEnumData(flags, justifyContentOffset); + return facebook::yoga::detail::getEnumData( + flags, justifyContentOffset); } BitfieldRef justifyContent() { return {*this, justifyContentOffset}; } YGAlign alignContent() const { - return getEnumData(flags, alignContentOffset); + return facebook::yoga::detail::getEnumData( + flags, alignContentOffset); } BitfieldRef alignContent() { return {*this, alignContentOffset}; } YGAlign alignItems() const { - return getEnumData(flags, alignItemsOffset); + return facebook::yoga::detail::getEnumData( + flags, alignItemsOffset); } BitfieldRef alignItems() { return {*this, alignItemsOffset}; } YGAlign alignSelf() const { - return getEnumData(flags, alignSelfOffset); + return facebook::yoga::detail::getEnumData(flags, alignSelfOffset); } BitfieldRef alignSelf() { return {*this, alignSelfOffset}; } YGPositionType positionType() const { - return getEnumData(flags, positionTypeOffset); + return facebook::yoga::detail::getEnumData( + flags, positionTypeOffset); } BitfieldRef positionType() { return {*this, positionTypeOffset}; } - YGWrap flexWrap() const { return getEnumData(flags, flexWrapOffset); } + YGWrap flexWrap() const { + return facebook::yoga::detail::getEnumData(flags, flexWrapOffset); + } BitfieldRef flexWrap() { return {*this, flexWrapOffset}; } YGOverflow overflow() const { - return getEnumData(flags, overflowOffset); + return facebook::yoga::detail::getEnumData( + flags, overflowOffset); } BitfieldRef overflow() { return {*this, overflowOffset}; } YGDisplay display() const { - return getEnumData(flags, displayOffset); + return facebook::yoga::detail::getEnumData(flags, displayOffset); } BitfieldRef display() { return {*this, displayOffset}; }