OBSERVAÇÃO:este site foi descontinuado. O site será desativado após 31 de janeiro de 2023, e o tráfego será redirecionado para o novo site em https://protobuf.dev. Enquanto isso, as atualizações serão feitas apenas para protobuf.dev.

plugin.h.

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

#include <google/protobuf/compiler/plugin.h>
namespace google::protobuf::compiler

Front-end para plug-ins do gerador de código protoc escrito em C++.

Para implementar um plug-in protoc em C++, basta escrever uma implementação de CodeGenerator e criar uma função main() como:

int main(int argc, char* argv[[]]) {
  MyCodeGenerator generator;
  return google::protobuf::compiler::PluginMain(argc, argv, &generator);
}

Vincule seu plug-in a libprotobuf e libprotoc.

A parte principal do PluginMain é invocar o CodeGenerator fornecido em um CodeGeneratorRequest para gerar um CodeGeneratorResponse. Essa parte é abstraída e transformada na função GenerateCode para que possa ser reutilizada, por exemplo, para implementar uma variante de PluginMain que faz algum pré-processamento no CodeGeneratorRequest de entrada antes de alimentar a solicitação para o gerador de código especificado.

Para que o protoc use o plug-in, siga um destes procedimentos:

  • Coloque o binário do plug-in em algum lugar no caminho e dê a ele o nome "protoc-gen-NAME" (substituindo "NAME" pelo nome do seu plug-in). Se você invocar protoc pelo parâmetro –NAME_out=OUT_DIR (novamente, substitua "NAME" pelo nome do seu plug-in), o protoc invocará seu plug-in para gerar a saída, que será colocada em OUT_DIR.
  • Coloque o binário do plug-in em qualquer lugar, com qualquer nome, e transmita o parâmetro –plugin para protoc para direcioná-lo ao seu plug-in da seguinte maneira:

    protoc --plugin=protoc-gen-NAME=path/to/mybinary --NAME_out=OUT_DIR

    No Windows, inclua o sufixo .exe:

    protoc --plugin=protoc-gen-NAME=path/to/mybinary.exe --NAME_out=OUT_DIR

Turmas neste arquivo

Participantes do arquivo

Essas definições não fazem parte de nenhuma classe.
int
PluginMain(int argc, char * argv, const CodeGenerator * generator)
Implementa main() para um plug-in protoc que expõe o gerador de código fornecido.
bool
GenerateCode(const CodeGeneratorRequest & request, const CodeGenerator & generator, CodeGeneratorResponse * response, std::string * error_msg)
Gera código usando o gerador de código fornecido. mais…

bool compiler::GenerateCode(
        const CodeGeneratorRequest & request,
        const CodeGenerator & generator,
        CodeGeneratorResponse * response,
        std::string * error_msg)

Gera código usando o gerador de código fornecido.

Retornará "true" se a geração do código for bem-sucedida. Se a geração do código falhar, error_msg pode ser preenchido para descrever a causa da falha.