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

Method generate_message

compiler/fory_compiler/generators/csharp.py:892–967  ·  view source on GitHub ↗
(
        self,
        message: Message,
        indent: int = 0,
        parent_stack: Optional[List[Message]] = None,
    )

Source from the content-addressed store, hash-verified

890 return lines
891
892 def generate_message(
893 self,
894 message: Message,
895 indent: int = 0,
896 parent_stack: Optional[List[Message]] = None,
897 ) -> List[str]:
898 lines: List[str] = []
899 ind = self.indent_str * indent
900 parent_stack = parent_stack or []
901 lineage = parent_stack + [message]
902 module_class = self.get_module_class_name()
903 type_name = self.safe_type_identifier(message.name)
904 full_type_ref = self._type_reference_for_local(message)
905
906 comment = self.format_type_id_comment(message, f"{ind}//")
907 if comment:
908 lines.append(comment)
909 if self.get_effective_evolving(message):
910 lines.append(f"{ind}[ForyStruct]")
911 else:
912 lines.append(f"{ind}[ForyStruct(Evolving = false)]")
913 lines.append(f"{ind}public sealed partial class {type_name}")
914 lines.append(f"{ind}{{")
915
916 for nested_enum in message.nested_enums:
917 lines.append("")
918 lines.extend(self.generate_enum(nested_enum, indent + 1))
919
920 for nested_union in message.nested_unions:
921 lines.append("")
922 lines.extend(self.generate_union(nested_union, indent + 1, lineage))
923
924 for nested_msg in message.nested_messages:
925 lines.append("")
926 lines.extend(self.generate_message(nested_msg, indent + 1, lineage))
927
928 used_field_names: Set[str] = set()
929 for field in message.fields:
930 lines.append("")
931 schema_type = self._schema_type_hint(field.field_type)
932 if schema_type:
933 lines.append(
934 f"{ind}{self.indent_str}[ForyField({field.number}, Type = typeof({schema_type}))]"
935 )
936 else:
937 lines.append(f"{ind}{self.indent_str}[ForyField({field.number})]")
938 field_name = self._field_member_name(field, message, used_field_names)
939 field_type = self.generate_type(
940 field.field_type,
941 nullable=field.optional,
942 parent_stack=lineage,
943 )
944 init = self._default_initializer(field, lineage) or ""
945 lines.append(
946 f"{ind}{self.indent_str}public {field_type} {field_name} {{ get; set; }}{init}"
947 )
948
949 lines.append("")

Callers 1

generate_fileMethod · 0.95

Calls 14

get_module_class_nameMethod · 0.95
safe_type_identifierMethod · 0.95
generate_enumMethod · 0.95
generate_unionMethod · 0.95
_schema_type_hintMethod · 0.95
_field_member_nameMethod · 0.95
generate_typeMethod · 0.95
_default_initializerMethod · 0.95
extendMethod · 0.80

Tested by

no test coverage detected