def process_proto_file(proto_file) -> Iterable[OutputFile]: """Generates code for a single .proto file.""" _, package_root = build_node_tree(proto_file) output_filename = _proto_filename_to_generated_header(proto_file.name) output_file = OutputFile(output_filename) _generate_code_for_package(proto_file, package_root, output_file) output_file.write_line() codegen.package_stubs(package_root, output_file, StubGenerator()) return [output_file]
def process_proto_file(proto_file) -> Iterable[OutputFile]: """Generates code for a single .proto file.""" # Two passes are made through the file. The first builds the tree of all # message/enum nodes, then the second creates the fields in each. This is # done as non-primitive fields need pointers to their types, which requires # the entire tree to have been parsed into memory. _, package_root = build_node_tree(proto_file) output_filename = _proto_filename_to_generated_header(proto_file.name) output_file = OutputFile(output_filename) generate_code_for_package(proto_file, package_root, output_file) return [output_file]