diff --git a/packages/react-native/ReactCommon/react/renderer/css/CSSAngle.h b/packages/react-native/ReactCommon/react/renderer/css/CSSAngle.h index 8f97e351699fe9..7f89682335e9c9 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 b5d36b241d40d1..0a2c22234c678c 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 111b208bc5d783..3147bb39af86b0 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 8b4de0213ba93d..39849450f15713 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 328ace3d2b029e..366c94ece6a683 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 329c92c7154187..42ed92aaf87a45 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 a2d14978863a48..92111bbcc507f0 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).