From c0449263d96ad113e2c48178e67a6fcf771cf7de Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:22:10 -0700 Subject: [PATCH 01/22] Fix GCC Build I have no idea how Clang is okay with`unwrapOrDefault()` here. --- yoga/numeric/FloatOptional.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 62e22f36..99d43e93 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -29,7 +29,7 @@ struct FloatOptional { return isUndefined() ? defaultValue : value_; } - bool isUndefined() const { + constexpr bool isUndefined() const { return std::isnan(value_); } }; -- 2.50.1.windows.1 From bf2bec80da252bfdd9a3af33a61eff1a428b9cd7 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:41:13 -0700 Subject: [PATCH 02/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 99d43e93..6e3072ae 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include namespace facebook::yoga { @@ -30,7 +30,7 @@ struct FloatOptional { } constexpr bool isUndefined() const { - return std::isnan(value_); + return yoga::isUndefined(value); } }; -- 2.50.1.windows.1 From ced7f3a9aa007a886fd5c2c56ab0162baf58a5c3 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:43:38 -0700 Subject: [PATCH 03/22] Update Comparison.h --- yoga/numeric/Comparison.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index 99eb180d..e47ef17d 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -8,15 +8,16 @@ #pragma once #include +#include #include #include namespace facebook::yoga { -template -inline bool isUndefined(FloatT value) { - return std::isnan(value); +constexpr bool isUndefined(std::floating_point auto value) { + // Can be replaced by constexpr std::isnan in C++ 23 + return value != value; } inline float maxOrDefined(const float a, const float b) { -- 2.50.1.windows.1 From be71a9a9a259a64589b4ccbac41a76ca3f8ce886 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:45:52 -0700 Subject: [PATCH 04/22] Update Comparison.h --- yoga/numeric/Comparison.h | 1 + 1 file changed, 1 insertion(+) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index e47ef17d..1c4ecc76 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include #include -- 2.50.1.windows.1 From 7a8bed9c7b0500973bb1021b9c9d3def747a59b1 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:46:20 -0700 Subject: [PATCH 05/22] Update FloatOptionalTest.cpp --- tests/FloatOptionalTest.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/FloatOptionalTest.cpp b/tests/FloatOptionalTest.cpp index 9163a0a1..2e1f37ce 100644 --- a/tests/FloatOptionalTest.cpp +++ b/tests/FloatOptionalTest.cpp @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +#include + #include #include -- 2.50.1.windows.1 From 564c28b517bcd9d3835df611f21e5427eb6f794b Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:46:55 -0700 Subject: [PATCH 06/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 6e3072ae..bc5790d4 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -7,8 +7,8 @@ #pragma once -#include #include +#include namespace facebook::yoga { -- 2.50.1.windows.1 From 1499f55718771bd7857afa7ab690f173eae92daf Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:48:47 -0700 Subject: [PATCH 07/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index bc5790d4..d1e2bc7e 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -30,7 +30,7 @@ struct FloatOptional { } constexpr bool isUndefined() const { - return yoga::isUndefined(value); + return yoga::isUndefined(value_); } }; -- 2.50.1.windows.1 From 55fb80d96bb65d3e28f51fa4e83f81cdfa215d04 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:52:29 -0700 Subject: [PATCH 08/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index d1e2bc7e..4b31cbc2 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -78,4 +78,12 @@ inline bool operator<=(FloatOptional lhs, FloatOptional rhs) { return lhs < rhs || lhs == rhs; } +inline FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { + return maxOrDefined(op1.unwrap(), op2.unwrap()); +} + +inline bool inexactEquals(const FloatOptional a, const FloatOptional b) { + return inexactEquals(a.unwrap(), b.unwrap()); +} + } // namespace facebook::yoga -- 2.50.1.windows.1 From 7a487b3401fcab384e77d52ae4bb3e835b42fc92 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:52:33 -0700 Subject: [PATCH 09/22] Update Comparison.h --- yoga/numeric/Comparison.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index 1c4ecc76..b4094e8c 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -36,16 +36,6 @@ inline float minOrDefined(const float a, const float b) { return yoga::isUndefined(a) ? b : a; } -inline FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { - if (op1 >= op2) { - return op1; - } - if (op2 > op1) { - return op2; - } - return op1.isUndefined() ? op2 : op1; -} - // Custom equality functions using a hardcoded epsilon of 0.0001f, or returning // true if both floats are NaN. inline bool inexactEquals(const float a, const float b) { @@ -62,10 +52,6 @@ inline bool inexactEquals(const double a, const double b) { return yoga::isUndefined(a) && yoga::isUndefined(b); } -inline bool inexactEquals(const FloatOptional a, const FloatOptional b) { - return inexactEquals(a.unwrap(), b.unwrap()); -} - inline bool inexactEquals(const YGValue& a, const YGValue& b) { if (a.unit != b.unit) { return false; -- 2.50.1.windows.1 From 3db2b2fc5f683e0929660ef84fa65e3c132ba841 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:54:20 -0700 Subject: [PATCH 10/22] Update Comparison.h --- yoga/numeric/Comparison.h | 1 - 1 file changed, 1 deletion(-) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index b4094e8c..e0baef2b 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -12,7 +12,6 @@ #include #include -#include namespace facebook::yoga { -- 2.50.1.windows.1 From ff8fe7d883b8f1dc047cde6994fe05f9286aea0d Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 16:55:05 -0700 Subject: [PATCH 11/22] Update Comparison.h --- yoga/numeric/Comparison.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index e0baef2b..4ddb7c9b 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -16,7 +16,7 @@ namespace facebook::yoga { constexpr bool isUndefined(std::floating_point auto value) { - // Can be replaced by constexpr std::isnan in C++ 23 + // is NaN return value != value; } -- 2.50.1.windows.1 From 6cbda6c12d773420b8100dce0a638134b862649b Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:04:29 -0700 Subject: [PATCH 12/22] Update Comparison.h --- yoga/numeric/Comparison.h | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index 4ddb7c9b..757ab601 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include #include @@ -16,20 +17,23 @@ namespace facebook::yoga { constexpr bool isUndefined(std::floating_point auto value) { - // is NaN return value != value; } -inline float maxOrDefined(const float a, const float b) { +constexpr float maxOrDefined( + std::floating_point auto a, + std::floating_point auto b) { if (!yoga::isUndefined(a) && !yoga::isUndefined(b)) { - return fmaxf(a, b); + return std::max(a, b); } return yoga::isUndefined(a) ? b : a; } -inline float minOrDefined(const float a, const float b) { +constexpr float minOrDefined( + std::floating_point auto a, + std::floating_point auto b) { if (!yoga::isUndefined(a) && !yoga::isUndefined(b)) { - return fminf(a, b); + return std::min(a, b); } return yoga::isUndefined(a) ? b : a; @@ -37,16 +41,16 @@ inline float minOrDefined(const float a, const float b) { // Custom equality functions using a hardcoded epsilon of 0.0001f, or returning // true if both floats are NaN. -inline bool inexactEquals(const float a, const float b) { +inline bool inexactEquals(float a, float b) { if (!yoga::isUndefined(a) && !yoga::isUndefined(b)) { - return fabs(a - b) < 0.0001f; + return std::abs(a - b) < 0.0001f; } return yoga::isUndefined(a) && yoga::isUndefined(b); } -inline bool inexactEquals(const double a, const double b) { +inline bool inexactEquals(double a, double b) { if (!yoga::isUndefined(a) && !yoga::isUndefined(b)) { - return fabs(a - b) < 0.0001; + return std::abs(a - b) < 0.0001; } return yoga::isUndefined(a) && yoga::isUndefined(b); } -- 2.50.1.windows.1 From 28e74b03d1a7f28a61e26704d3a7be0ccc81e77e Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:07:29 -0700 Subject: [PATCH 13/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 4b31cbc2..824f53f3 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -36,53 +36,53 @@ struct FloatOptional { // operators take FloatOptional by value, as it is a 32bit value -inline bool operator==(FloatOptional lhs, FloatOptional rhs) { +constexpr bool operator==(FloatOptional lhs, FloatOptional rhs) { return lhs.unwrap() == rhs.unwrap() || (lhs.isUndefined() && rhs.isUndefined()); } -inline bool operator!=(FloatOptional lhs, FloatOptional rhs) { +constexpr bool operator!=(FloatOptional lhs, FloatOptional rhs) { return !(lhs == rhs); } -inline bool operator==(FloatOptional lhs, float rhs) { +constexpr bool operator==(FloatOptional lhs, float rhs) { return lhs == FloatOptional{rhs}; } -inline bool operator!=(FloatOptional lhs, float rhs) { +constexpr bool operator!=(FloatOptional lhs, float rhs) { return !(lhs == rhs); } -inline bool operator==(float lhs, FloatOptional rhs) { +constexpr bool operator==(float lhs, FloatOptional rhs) { return rhs == lhs; } -inline bool operator!=(float lhs, FloatOptional rhs) { +constexpr bool operator!=(float lhs, FloatOptional rhs) { return !(lhs == rhs); } -inline FloatOptional operator+(FloatOptional lhs, FloatOptional rhs) { +constexpr FloatOptional operator+(FloatOptional lhs, FloatOptional rhs) { return FloatOptional{lhs.unwrap() + rhs.unwrap()}; } -inline bool operator>(FloatOptional lhs, FloatOptional rhs) { +constexpr bool operator>(FloatOptional lhs, FloatOptional rhs) { return lhs.unwrap() > rhs.unwrap(); } -inline bool operator<(FloatOptional lhs, FloatOptional rhs) { +constexpr bool operator<(FloatOptional lhs, FloatOptional rhs) { return lhs.unwrap() < rhs.unwrap(); } -inline bool operator>=(FloatOptional lhs, FloatOptional rhs) { +constexpr bool operator>=(FloatOptional lhs, FloatOptional rhs) { return lhs > rhs || lhs == rhs; } -inline bool operator<=(FloatOptional lhs, FloatOptional rhs) { +constexpr bool operator<=(FloatOptional lhs, FloatOptional rhs) { return lhs < rhs || lhs == rhs; } -inline FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { +constexpr FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { return maxOrDefined(op1.unwrap(), op2.unwrap()); } -inline bool inexactEquals(const FloatOptional a, const FloatOptional b) { +constexpr bool inexactEquals(const FloatOptional a, const FloatOptional b) { return inexactEquals(a.unwrap(), b.unwrap()); } -- 2.50.1.windows.1 From 9c8ee3a50df6432a98738f77fad949177e8be314 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:09:30 -0700 Subject: [PATCH 14/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 824f53f3..6c02f009 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -79,11 +79,11 @@ constexpr bool operator<=(FloatOptional lhs, FloatOptional rhs) { } constexpr FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { - return maxOrDefined(op1.unwrap(), op2.unwrap()); + return yoga::maxOrDefined(op1.unwrap(), op2.unwrap()); } constexpr bool inexactEquals(const FloatOptional a, const FloatOptional b) { - return inexactEquals(a.unwrap(), b.unwrap()); + return yoga::inexactEquals(a.unwrap(), b.unwrap()); } } // namespace facebook::yoga -- 2.50.1.windows.1 From fc7e0267014cfb9de2148d537215e041a62e7aef Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:10:51 -0700 Subject: [PATCH 15/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 6c02f009..6fe76343 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -79,7 +79,7 @@ constexpr bool operator<=(FloatOptional lhs, FloatOptional rhs) { } constexpr FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { - return yoga::maxOrDefined(op1.unwrap(), op2.unwrap()); + return FloatOptional{yoga::maxOrDefined(op1.unwrap(), op2.unwrap())}; } constexpr bool inexactEquals(const FloatOptional a, const FloatOptional b) { -- 2.50.1.windows.1 From 34d6ce53693c18564e66df9768c48d13f6ef05f0 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:11:19 -0700 Subject: [PATCH 16/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 6fe76343..92c666e3 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -78,11 +78,11 @@ constexpr bool operator<=(FloatOptional lhs, FloatOptional rhs) { return lhs < rhs || lhs == rhs; } -constexpr FloatOptional maxOrDefined(FloatOptional op1, FloatOptional op2) { - return FloatOptional{yoga::maxOrDefined(op1.unwrap(), op2.unwrap())}; +constexpr FloatOptional maxOrDefined(FloatOptional a, FloatOptional b) { + return FloatOptional{yoga::maxOrDefined(a.unwrap(), b.unwrap())}; } -constexpr bool inexactEquals(const FloatOptional a, const FloatOptional b) { +constexpr bool inexactEquals(FloatOptional a, FloatOptional b) { return yoga::inexactEquals(a.unwrap(), b.unwrap()); } -- 2.50.1.windows.1 From b5084fa64c26e9785da6e896b9237fa1ef8cb5ac Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:12:21 -0700 Subject: [PATCH 17/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 92c666e3..2d1c8a62 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -78,12 +78,12 @@ constexpr bool operator<=(FloatOptional lhs, FloatOptional rhs) { return lhs < rhs || lhs == rhs; } -constexpr FloatOptional maxOrDefined(FloatOptional a, FloatOptional b) { - return FloatOptional{yoga::maxOrDefined(a.unwrap(), b.unwrap())}; +constexpr FloatOptional maxOrDefined(FloatOptional lhs, FloatOptional rhs) { + return FloatOptional{yoga::maxOrDefined(lhs.unwrap(), rhs.unwrap())}; } -constexpr bool inexactEquals(FloatOptional a, FloatOptional b) { - return yoga::inexactEquals(a.unwrap(), b.unwrap()); +constexpr bool inexactEquals(FloatOptional lhs, FloatOptional rhs) { + return yoga::inexactEquals(lhs.unwrap(), rhs.unwrap()); } } // namespace facebook::yoga -- 2.50.1.windows.1 From b13d8d220e9c42fd6093ec3b2e05ca1053985705 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:15:44 -0700 Subject: [PATCH 18/22] Update FloatOptional.h --- yoga/numeric/FloatOptional.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/numeric/FloatOptional.h b/yoga/numeric/FloatOptional.h index 2d1c8a62..cbfbc25d 100644 --- a/yoga/numeric/FloatOptional.h +++ b/yoga/numeric/FloatOptional.h @@ -82,7 +82,7 @@ constexpr FloatOptional maxOrDefined(FloatOptional lhs, FloatOptional rhs) { return FloatOptional{yoga::maxOrDefined(lhs.unwrap(), rhs.unwrap())}; } -constexpr bool inexactEquals(FloatOptional lhs, FloatOptional rhs) { +inline bool inexactEquals(FloatOptional lhs, FloatOptional rhs) { return yoga::inexactEquals(lhs.unwrap(), rhs.unwrap()); } -- 2.50.1.windows.1 From 4f6879471e646bebbedcaae6fa4c03b99f8ddffb Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 20:19:04 -0400 Subject: [PATCH 19/22] 0.0f --- yoga/algorithm/CalculateLayout.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yoga/algorithm/CalculateLayout.cpp b/yoga/algorithm/CalculateLayout.cpp index f13af3a2..ec35ddf8 100644 --- a/yoga/algorithm/CalculateLayout.cpp +++ b/yoga/algorithm/CalculateLayout.cpp @@ -563,10 +563,10 @@ static void measureNodeWithMeasureFunc( // We want to make sure we don't call measure with negative size const float innerWidth = yoga::isUndefined(availableWidth) ? availableWidth - : yoga::maxOrDefined(0, availableWidth - paddingAndBorderAxisRow); + : yoga::maxOrDefined(0.0f, availableWidth - paddingAndBorderAxisRow); const float innerHeight = yoga::isUndefined(availableHeight) ? availableHeight - : yoga::maxOrDefined(0, availableHeight - paddingAndBorderAxisColumn); + : yoga::maxOrDefined(0.0f, availableHeight - paddingAndBorderAxisColumn); if (widthMeasureMode == MeasureMode::Exactly && heightMeasureMode == MeasureMode::Exactly) { -- 2.50.1.windows.1 From e39f31468b96df831727a13ac1c3a26a6d4861b5 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 20:21:13 -0400 Subject: [PATCH 20/22] 0.0f --- yoga/algorithm/CalculateLayout.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/algorithm/CalculateLayout.cpp b/yoga/algorithm/CalculateLayout.cpp index ec35ddf8..cf86262e 100644 --- a/yoga/algorithm/CalculateLayout.cpp +++ b/yoga/algorithm/CalculateLayout.cpp @@ -1260,7 +1260,7 @@ static void justifyMainAxis( case Justify::SpaceBetween: if (flexLine.itemsInFlow.size() > 1) { betweenMainDim += - yoga::maxOrDefined(flexLine.layout.remainingFreeSpace, 0) / + yoga::maxOrDefined(flexLine.layout.remainingFreeSpace, 0.0f) / static_cast(flexLine.itemsInFlow.size() - 1); } break; -- 2.50.1.windows.1 From c98a08e9739508d32def4b2e62f2b0e43f7e2bb2 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 20:21:47 -0400 Subject: [PATCH 21/22] 0.0f --- yoga/algorithm/CalculateLayout.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoga/algorithm/CalculateLayout.cpp b/yoga/algorithm/CalculateLayout.cpp index cf86262e..d2d56b7d 100644 --- a/yoga/algorithm/CalculateLayout.cpp +++ b/yoga/algorithm/CalculateLayout.cpp @@ -1223,7 +1223,7 @@ static void justifyMainAxis( const float occupiedSpaceByChildNodes = availableInnerMainDim - flexLine.layout.remainingFreeSpace; flexLine.layout.remainingFreeSpace = yoga::maxOrDefined( - 0, minAvailableMainDim - occupiedSpaceByChildNodes); + 0.0f, minAvailableMainDim - occupiedSpaceByChildNodes); } else { flexLine.layout.remainingFreeSpace = 0; } -- 2.50.1.windows.1 From b06554801f97770e604e1150d5671b081ce25cd9 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 3 Oct 2023 17:28:13 -0700 Subject: [PATCH 22/22] Update Comparison.h --- yoga/numeric/Comparison.h | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/yoga/numeric/Comparison.h b/yoga/numeric/Comparison.h index 757ab601..a90fbe32 100644 --- a/yoga/numeric/Comparison.h +++ b/yoga/numeric/Comparison.h @@ -10,28 +10,23 @@ #include #include #include -#include #include namespace facebook::yoga { -constexpr bool isUndefined(std::floating_point auto value) { +constexpr bool isUndefined(auto value) { return value != value; } -constexpr float maxOrDefined( - std::floating_point auto a, - std::floating_point auto b) { +constexpr float maxOrDefined(auto a, auto b) { if (!yoga::isUndefined(a) && !yoga::isUndefined(b)) { return std::max(a, b); } return yoga::isUndefined(a) ? b : a; } -constexpr float minOrDefined( - std::floating_point auto a, - std::floating_point auto b) { +constexpr float minOrDefined(auto a, auto b) { if (!yoga::isUndefined(a) && !yoga::isUndefined(b)) { return std::min(a, b); } -- 2.50.1.windows.1