class Protobuf::Generators::FileGenerator

def compile

def compile
  run_once(:compile) do
    map_extensions(descriptor, [descriptor.package])
    print_file_comment
    print_generic_requires
    print_import_requires
    print_package do
      inject_optionable
      group = GroupGenerator.new(current_indent)
      group.add_enums(descriptor.enum_type, :namespace => [descriptor.package])
      group.add_message_declarations(descriptor.message_type)
      group.add_messages(descriptor.message_type, :extension_fields => @extension_fields, :namespace => [descriptor.package])
      group.add_extended_messages(unknown_extensions)
      group.add_services(descriptor.service)
      group.add_header(:enum, 'Enum Classes')
      group.add_header(:message_declaration, 'Message Classes')
      group.add_header(:message, 'Message Fields')
      group.add_header(:extended_message, 'Extended Message Fields')
      group.add_header(:service, 'Service Classes')
      print group.to_s
    end
  end
end