diff --git a/php/ext/google/protobuf/php-upb.c b/php/ext/google/protobuf/php-upb.c index 524aad74e1..b1fec7df10 100644 --- a/php/ext/google/protobuf/php-upb.c +++ b/php/ext/google/protobuf/php-upb.c @@ -5704,7 +5704,8 @@ bool upb_Message_IsEmpty(const upb_Message* msg, const upb_MiniTable* m) { } static bool _upb_Array_IsEqual(const upb_Array* arr1, const upb_Array* arr2, - upb_CType ctype, const upb_MiniTable* m) { + upb_CType ctype, const upb_MiniTable* m, + int options) { // Check for trivial equality. if (arr1 == arr2) return true; @@ -5717,14 +5718,14 @@ static bool _upb_Array_IsEqual(const upb_Array* arr1, const upb_Array* arr2, const upb_MessageValue val1 = upb_Array_Get(arr1, i); const upb_MessageValue val2 = upb_Array_Get(arr2, i); - if (!upb_MessageValue_IsEqual(val1, val2, ctype, m)) return false; + if (!upb_MessageValue_IsEqual(val1, val2, ctype, m, options)) return false; } return true; } static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2, - const upb_MiniTable* m) { + const upb_MiniTable* m, int options) { // Check for trivial equality. if (map1 == map2) return true; @@ -5741,7 +5742,8 @@ static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2, size_t iter = kUpb_Map_Begin; while (upb_Map_Next(map1, &key, &val1, &iter)) { if (!upb_Map_Get(map2, key, &val2)) return false; - if (!upb_MessageValue_IsEqual(val1, val2, ctype, m2_value)) return false; + if (!upb_MessageValue_IsEqual(val1, val2, ctype, m2_value, options)) + return false; } return true; @@ -5749,7 +5751,8 @@ static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2, static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m) { + const upb_MiniTable* m, + int options) { // Iterate over all base fields for each message. // The order will always match if the messages are equal. size_t iter1 = kUpb_BaseField_Begin; @@ -5772,13 +5775,14 @@ static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1, bool eq; switch (UPB_PRIVATE(_upb_MiniTableField_Mode)(f1)) { case kUpb_FieldMode_Array: - eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm); + eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm, + options); break; case kUpb_FieldMode_Map: - eq = _upb_Map_IsEqual(val1.map_val, val2.map_val, subm); + eq = _upb_Map_IsEqual(val1.map_val, val2.map_val, subm, options); break; case kUpb_FieldMode_Scalar: - eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm); + eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm, options); break; } if (!eq) return false; @@ -5787,7 +5791,8 @@ static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1, static bool _upb_Message_ExtensionsAreEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m) { + const upb_MiniTable* m, + int options) { // Must have identical extension counts. if (upb_Message_ExtensionCount(msg1) != upb_Message_ExtensionCount(msg2)) { return false; @@ -5812,13 +5817,14 @@ static bool _upb_Message_ExtensionsAreEqual(const upb_Message* msg1, bool eq; switch (UPB_PRIVATE(_upb_MiniTableField_Mode)(f)) { case kUpb_FieldMode_Array: - eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm); + eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm, + options); break; case kUpb_FieldMode_Map: UPB_UNREACHABLE(); // Maps cannot be extensions. break; case kUpb_FieldMode_Scalar: { - eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm); + eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm, options); break; } } @@ -5828,11 +5834,11 @@ static bool _upb_Message_ExtensionsAreEqual(const upb_Message* msg1, } bool upb_Message_IsEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m) { + const upb_MiniTable* m, int options) { if (UPB_UNLIKELY(msg1 == msg2)) return true; - if (!_upb_Message_BaseFieldsAreEqual(msg1, msg2, m)) return false; - if (!_upb_Message_ExtensionsAreEqual(msg1, msg2, m)) return false; + if (!_upb_Message_BaseFieldsAreEqual(msg1, msg2, m, options)) return false; + if (!_upb_Message_ExtensionsAreEqual(msg1, msg2, m, options)) return false; // Check the unknown fields. size_t usize1, usize2; diff --git a/php/ext/google/protobuf/php-upb.h b/php/ext/google/protobuf/php-upb.h index f2b31c0057..fec53ae323 100644 --- a/php/ext/google/protobuf/php-upb.h +++ b/php/ext/google/protobuf/php-upb.h @@ -12734,13 +12734,14 @@ UPB_API bool upb_Message_IsEmpty(const upb_Message* msg, UPB_API bool upb_Message_IsEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m); + const upb_MiniTable* m, int options); // If |ctype| is a message then |m| must point to its minitable. UPB_API_INLINE bool upb_MessageValue_IsEqual(upb_MessageValue val1, upb_MessageValue val2, upb_CType ctype, - const upb_MiniTable* m) { + const upb_MiniTable* m, + int options) { switch (ctype) { case kUpb_CType_Bool: return val1.bool_val == val2.bool_val; @@ -12761,7 +12762,7 @@ UPB_API_INLINE bool upb_MessageValue_IsEqual(upb_MessageValue val1, return upb_StringView_IsEqual(val1.str_val, val2.str_val); case kUpb_CType_Message: - return upb_Message_IsEqual(val1.msg_val, val2.msg_val, m); + return upb_Message_IsEqual(val1.msg_val, val2.msg_val, m, options); default: UPB_UNREACHABLE(); diff --git a/ruby/ext/google/protobuf_c/ruby-upb.c b/ruby/ext/google/protobuf_c/ruby-upb.c index f2ba1d1da9..f109937eb6 100644 --- a/ruby/ext/google/protobuf_c/ruby-upb.c +++ b/ruby/ext/google/protobuf_c/ruby-upb.c @@ -5218,7 +5218,8 @@ bool upb_Message_IsEmpty(const upb_Message* msg, const upb_MiniTable* m) { } static bool _upb_Array_IsEqual(const upb_Array* arr1, const upb_Array* arr2, - upb_CType ctype, const upb_MiniTable* m) { + upb_CType ctype, const upb_MiniTable* m, + int options) { // Check for trivial equality. if (arr1 == arr2) return true; @@ -5231,14 +5232,14 @@ static bool _upb_Array_IsEqual(const upb_Array* arr1, const upb_Array* arr2, const upb_MessageValue val1 = upb_Array_Get(arr1, i); const upb_MessageValue val2 = upb_Array_Get(arr2, i); - if (!upb_MessageValue_IsEqual(val1, val2, ctype, m)) return false; + if (!upb_MessageValue_IsEqual(val1, val2, ctype, m, options)) return false; } return true; } static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2, - const upb_MiniTable* m) { + const upb_MiniTable* m, int options) { // Check for trivial equality. if (map1 == map2) return true; @@ -5255,7 +5256,8 @@ static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2, size_t iter = kUpb_Map_Begin; while (upb_Map_Next(map1, &key, &val1, &iter)) { if (!upb_Map_Get(map2, key, &val2)) return false; - if (!upb_MessageValue_IsEqual(val1, val2, ctype, m2_value)) return false; + if (!upb_MessageValue_IsEqual(val1, val2, ctype, m2_value, options)) + return false; } return true; @@ -5263,7 +5265,8 @@ static bool _upb_Map_IsEqual(const upb_Map* map1, const upb_Map* map2, static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m) { + const upb_MiniTable* m, + int options) { // Iterate over all base fields for each message. // The order will always match if the messages are equal. size_t iter1 = kUpb_BaseField_Begin; @@ -5286,13 +5289,14 @@ static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1, bool eq; switch (UPB_PRIVATE(_upb_MiniTableField_Mode)(f1)) { case kUpb_FieldMode_Array: - eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm); + eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm, + options); break; case kUpb_FieldMode_Map: - eq = _upb_Map_IsEqual(val1.map_val, val2.map_val, subm); + eq = _upb_Map_IsEqual(val1.map_val, val2.map_val, subm, options); break; case kUpb_FieldMode_Scalar: - eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm); + eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm, options); break; } if (!eq) return false; @@ -5301,7 +5305,8 @@ static bool _upb_Message_BaseFieldsAreEqual(const upb_Message* msg1, static bool _upb_Message_ExtensionsAreEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m) { + const upb_MiniTable* m, + int options) { // Must have identical extension counts. if (upb_Message_ExtensionCount(msg1) != upb_Message_ExtensionCount(msg2)) { return false; @@ -5326,13 +5331,14 @@ static bool _upb_Message_ExtensionsAreEqual(const upb_Message* msg1, bool eq; switch (UPB_PRIVATE(_upb_MiniTableField_Mode)(f)) { case kUpb_FieldMode_Array: - eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm); + eq = _upb_Array_IsEqual(val1.array_val, val2.array_val, ctype, subm, + options); break; case kUpb_FieldMode_Map: UPB_UNREACHABLE(); // Maps cannot be extensions. break; case kUpb_FieldMode_Scalar: { - eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm); + eq = upb_MessageValue_IsEqual(val1, val2, ctype, subm, options); break; } } @@ -5342,11 +5348,11 @@ static bool _upb_Message_ExtensionsAreEqual(const upb_Message* msg1, } bool upb_Message_IsEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m) { + const upb_MiniTable* m, int options) { if (UPB_UNLIKELY(msg1 == msg2)) return true; - if (!_upb_Message_BaseFieldsAreEqual(msg1, msg2, m)) return false; - if (!_upb_Message_ExtensionsAreEqual(msg1, msg2, m)) return false; + if (!_upb_Message_BaseFieldsAreEqual(msg1, msg2, m, options)) return false; + if (!_upb_Message_ExtensionsAreEqual(msg1, msg2, m, options)) return false; // Check the unknown fields. size_t usize1, usize2; diff --git a/ruby/ext/google/protobuf_c/ruby-upb.h b/ruby/ext/google/protobuf_c/ruby-upb.h index 55b0313018..c2fa025785 100755 --- a/ruby/ext/google/protobuf_c/ruby-upb.h +++ b/ruby/ext/google/protobuf_c/ruby-upb.h @@ -12506,13 +12506,14 @@ UPB_API bool upb_Message_IsEmpty(const upb_Message* msg, UPB_API bool upb_Message_IsEqual(const upb_Message* msg1, const upb_Message* msg2, - const upb_MiniTable* m); + const upb_MiniTable* m, int options); // If |ctype| is a message then |m| must point to its minitable. UPB_API_INLINE bool upb_MessageValue_IsEqual(upb_MessageValue val1, upb_MessageValue val2, upb_CType ctype, - const upb_MiniTable* m) { + const upb_MiniTable* m, + int options) { switch (ctype) { case kUpb_CType_Bool: return val1.bool_val == val2.bool_val; @@ -12533,7 +12534,7 @@ UPB_API_INLINE bool upb_MessageValue_IsEqual(upb_MessageValue val1, return upb_StringView_IsEqual(val1.str_val, val2.str_val); case kUpb_CType_Message: - return upb_Message_IsEqual(val1.msg_val, val2.msg_val, m); + return upb_Message_IsEqual(val1.msg_val, val2.msg_val, m, options); default: UPB_UNREACHABLE();