MCPcopy Create free account
hub / github.com/apache/fory / get_field_eq_expression

Method get_field_eq_expression

compiler/fory_compiler/generators/cpp.py:689–717  ·  view source on GitHub ↗
(
        self, field: Field, parent_stack: Optional[List[Message]]
    )

Source from the content-addressed store, hash-verified

687 )
688
689 def get_field_eq_expression(
690 self, field: Field, parent_stack: Optional[List[Message]]
691 ) -> str:
692 member_name = self.get_field_member_name(field)
693 other_member = f"other.{member_name}"
694 if isinstance(field.field_type, PrimitiveType) and (
695 field.field_type.kind == PrimitiveKind.ANY
696 ):
697 return (
698 f"((!{member_name}.has_value() && !{other_member}.has_value()) || "
699 f"({member_name}.type() == {other_member}.type()))"
700 )
701 if self.is_message_type(
702 field.field_type, parent_stack
703 ) and self.get_field_weak_ref(field):
704 return (
705 f"(([&]() {{ auto left = {member_name}.upgrade(); "
706 f"auto right = {other_member}.upgrade(); "
707 f"return left == right; }})())"
708 )
709 if self.is_message_type(field.field_type, parent_stack) and field.ref:
710 return f"{member_name} == {other_member}"
711 if self.is_message_type(field.field_type, parent_stack):
712 return (
713 f"(({member_name} && {other_member}) ? "
714 f"(*{member_name} == *{other_member}) : "
715 f"({member_name} == {other_member}))"
716 )
717 return f"{member_name} == {other_member}"
718
719 def is_numeric_field(self, field: Field) -> bool:
720 if not isinstance(field.field_type, PrimitiveType):

Callers 1

Calls 3

get_field_member_nameMethod · 0.95
is_message_typeMethod · 0.95
get_field_weak_refMethod · 0.95

Tested by

no test coverage detected