|
|
|
@ -120,15 +120,25 @@ void WrapperFieldGenerator::GenerateSerializedSizeCode(io::Printer* printer) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void WrapperFieldGenerator::WriteHash(io::Printer* printer) { |
|
|
|
|
printer->Print( |
|
|
|
|
variables_, |
|
|
|
|
"if ($has_property_check$) hash ^= $property_name$.GetHashCode();\n"); |
|
|
|
|
const char *text = "if ($has_property_check$) hash ^= $property_name$.GetHashCode();\n"; |
|
|
|
|
if (descriptor_->message_type()->field(0)->type() == FieldDescriptor::TYPE_FLOAT) { |
|
|
|
|
text = "if ($has_property_check$) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode($property_name$);\n"; |
|
|
|
|
} |
|
|
|
|
else if (descriptor_->message_type()->field(0)->type() == FieldDescriptor::TYPE_DOUBLE) { |
|
|
|
|
text = "if ($has_property_check$) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode($property_name$);\n"; |
|
|
|
|
} |
|
|
|
|
printer->Print(variables_, text); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void WrapperFieldGenerator::WriteEquals(io::Printer* printer) { |
|
|
|
|
printer->Print( |
|
|
|
|
variables_, |
|
|
|
|
"if ($property_name$ != other.$property_name$) return false;\n"); |
|
|
|
|
const char *text = "if ($property_name$ != other.$property_name$) return false;\n"; |
|
|
|
|
if (descriptor_->message_type()->field(0)->type() == FieldDescriptor::TYPE_FLOAT) { |
|
|
|
|
text = "if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals($property_name$, other.$property_name$)) return false;\n"; |
|
|
|
|
} |
|
|
|
|
else if (descriptor_->message_type()->field(0)->type() == FieldDescriptor::TYPE_DOUBLE) { |
|
|
|
|
text = "if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals($property_name$, other.$property_name$)) return false;\n"; |
|
|
|
|
} |
|
|
|
|
printer->Print(variables_, text); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void WrapperFieldGenerator::WriteToString(io::Printer* printer) { |
|
|
|
|