diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSAngle.h b/packages/react-native/ReactCommon/react/renderer/css/CSSAngle.h index 8f97e351699..7f89682335e 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSAngle.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSAngle.h @@ -20,6 +20,8 @@ namespace facebook::react { */ struct CSSAngle { float degrees{}; + + constexpr bool operator==(const CSSAngle& rhs) const = default; }; template <> diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSColor.h b/packages/react-native/ReactCommon/react/renderer/css/CSSColor.h index b5d36b241d4..0a2c22234c6 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSColor.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSColor.h @@ -25,6 +25,12 @@ struct CSSColor { uint8_t g{}; uint8_t b{}; uint8_t a{}; + + constexpr bool operator==(const CSSColor& rhs) const = default; + + static constexpr CSSColor black() { + return {0, 0, 0, 255}; + } }; template <> diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSDataType.h b/packages/react-native/ReactCommon/react/renderer/css/CSSDataType.h index 111b208bc5d..3147bb39af8 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSDataType.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSDataType.h @@ -73,10 +73,11 @@ concept CSSValidDataTypeParser = CSSFunctionBlockSink || CSSSimplePreservedTokenSink; /** - * Concrete representation for a CSS data type, or keywords + * Concrete representation for a CSS data type */ template concept CSSDataType = - CSSValidDataTypeParser, std::optional>; + CSSValidDataTypeParser, std::optional> && + std::equality_comparable; } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSLength.h b/packages/react-native/ReactCommon/react/renderer/css/CSSLength.h index 8b4de0213ba..39849450f15 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSLength.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSLength.h @@ -21,6 +21,8 @@ namespace facebook::react { struct CSSLength { float value{}; CSSLengthUnit unit{CSSLengthUnit::Px}; + + constexpr bool operator==(const CSSLength& rhs) const = default; }; template <> diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSNumber.h b/packages/react-native/ReactCommon/react/renderer/css/CSSNumber.h index 328ace3d2b0..366c94ece6a 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSNumber.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSNumber.h @@ -19,6 +19,8 @@ namespace facebook::react { */ struct CSSNumber { float value{}; + + constexpr bool operator==(const CSSNumber& rhs) const = default; }; template <> diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSPercentage.h b/packages/react-native/ReactCommon/react/renderer/css/CSSPercentage.h index 329c92c7154..42ed92aaf87 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSPercentage.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSPercentage.h @@ -19,6 +19,8 @@ namespace facebook::react { */ struct CSSPercentage { float value{}; + + constexpr bool operator==(const CSSPercentage& rhs) const = default; }; template <> diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSRatio.h b/packages/react-native/ReactCommon/react/renderer/css/CSSRatio.h index a2d14978863..92111bbcc50 100644 --- a/packages/react-native/ReactCommon/react/renderer/css/CSSRatio.h +++ b/packages/react-native/ReactCommon/react/renderer/css/CSSRatio.h @@ -24,6 +24,8 @@ struct CSSRatio { float numerator{}; float denominator{}; + constexpr bool operator==(const CSSRatio& rhs) const = default; + constexpr bool isDegenerate() const { // If either number in the is 0 or infinite, it represents a // degenerate ratio (and, generally, won’t do anything).