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.

descritor.h

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

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Esse arquivo contém classes que descrevem um tipo de mensagem de protocolo.

Você pode usar o descritor de uma mensagem para saber em tempo de execução quais campos ela contém e quais são os tipos desses campos. A interface Message também permite que você acesse e modifique campos individuais de forma dinâmica transmitindo o FieldDescriptor do campo em que você tem interesse.

A maioria dos usuários não se preocupa com descritores, porque eles escrevem códigos específicos para determinados tipos de protocolo e simplesmente usam as classes geradas pelo compilador de protocolos diretamente. Os usuários avançados que querem operar em tipos arbitrários (não conhecidos no momento da compilação) podem ler os descritores para saber mais sobre o conteúdo de uma mensagem. Um número muito pequeno de usuários vai querer criar os próprios descritores, seja porque estão implementando a Mensagem manualmente ou porque estão escrevendo algo como o compilador de protocolos.

Para um exemplo de como usar descritores, consulte o exemplo de código na parte superior de message.h.

Turmas neste arquivo

Atenção: todos os índices são zero.
Opções ao gerar a saída analisável por máquina de um descritor com DebugString().
Descreve um tipo de mensagem de protocolo ou um grupo específico em uma mensagem.
É um intervalo de números de campo designados para extensões terceirizadas.
Um intervalo de números de campo reservados.
Descreve um único campo de uma mensagem.
Descreve um dos definidos em um tipo de mensagem.
Descreve um tipo de enumeração definido em um arquivo .proto.
Um intervalo de números de campo reservados.
Descreve uma constante de enumeração individual de um tipo específico.
Descreve um serviço de RPC.
Descreve um método de serviço individual.
Descreve um arquivo .proto inteiro.
Usado para construir descritores.
Ao converter um FileDescriptorProto em um FileDescriptor, vários erros podem ser detectados na entrada.

struct SourceLocation

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Atenção: todos os índices são zero.

Participantes

int
start_line
int
end_line
int
start_column
int
end_column
std::string
leading_comments
Comentários do documento encontrados no local de origem. mais…
std::string
trailing_comments
std::vector< std::string >
leading_detached_comments

std::string SourceLocation::leading_comments

Comentários do documento encontrados no local de origem.

Consulte os comentários em SourceCodeInfo.Location (descrito.proto) para mais detalhes.

struct DebugStringOptions

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Opções ao gerar a saída analisável por máquina de um descritor com DebugString().

Participantes

bool
include_comments
incluir comentários originais do usuário conforme gravados nas entradas SourceLocation. mais...
bool
elide_group_body
Se verdadeiro, exclua o corpo entre colchetes na string de depuração.
bool
elide_oneof_body
DebugStringOptions()

bool DebugStringOptions::include_comments

incluir comentários originais do usuário conforme gravados nas entradas SourceLocation.

Observação: isso precisa ser |false| por padrão: várias outras partes do código (por exemplo, a geração de código C++ para campos no compilador proto) dependem da saída do DebugString() ser desobstruída pelos comentários do usuário.

classe Descriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um tipo de mensagem de protocolo ou um grupo específico em uma mensagem.

Para receber o Descriptor de um objeto de mensagem, chame Message::GetDescriptor(). As classes de mensagem geradas também têm um método estático chamado Descriptor(), que retorna o descritor do tipo. Use DescriptorPool para construir seus próprios descritores.

Participantes

enum
WellKnownType
typedef
DescriptorProto Proto
const std::string &
name() const
O nome do tipo de mensagem, sem incluir o escopo.
const std::string &
full_name() const
O nome totalmente qualificado do tipo de mensagem, com escopo delimitado por pontos. mais…
int
index() const
Índice desse descritor no arquivo ou que contém a matriz de tipos de mensagem do tipo.
const FileDescriptor *
file() const
O arquivo .proto em que o tipo de mensagem foi definido. Nunca nulo.
const Descriptor *
containing_type() const
Se o Descriptor descrever um tipo aninhado, isso retornará o tipo em que está aninhado. mais...
const MessageOptions &
options() const
Veja as opções desse tipo de mensagem. mais…
void
CopyTo(DescriptorProto * proto) const
Grave o conteúdo desse Descriptor no DescriptorProto fornecido. mais...
std::string
DebugString() const
Escreva o conteúdo desse descritor em um formato legível. mais…
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
Semelhante a DebugString(), mas também aceita opções. Por exemplo, inclua comentários originais do usuário na saída.
bool
is_placeholder() const
Retornará "true" se este for um marcador para um tipo desconhecido. mais…
WellKnownType
well_known_type() const

Objetos de campo

int
field_count() const
O número de campos neste tipo de mensagem.
const FieldDescriptor *
field(int index) const
Recebe um campo por índice, em que 0 <= índice < field_count(). mais...
const FieldDescriptor *
FindFieldByNumber(int number) const
Pesquisa um campo por número de tag declarado. mais…
const FieldDescriptor *
FindFieldByName(ConstStringParam name) const
Procura um campo pelo nome. Retorna nuloptr, se esse campo não existir.
const FieldDescriptor *
FindFieldByLowercaseName(ConstStringParam lowercase_name) const
Procura um campo por nome em letras minúsculas (conforme retornado por minúsculas_name()). mais...
const FieldDescriptor *
FindFieldByCamelcaseName(ConstStringParam camelcase_name) const
Procura um campo pelo nome do concatenado (conforme retornado por camelcase_name()). mais...
int
oneof_decl_count() const
O número de um desses tipos de mensagem.
int
real_oneof_decl_count() const
O número de um dos tipos nesse tipo de mensagem, exceto os sintéticos. mais…
const OneofDescriptor *
oneof_decl(int index) const
Receba um oneof por índice, em que 0 <= índice < oneof_decl_count(). mais...
const OneofDescriptor *
FindOneofByName(ConstStringParam name) const
Procura um por um. Retornará nuloptr se nenhum existir.

Tipo de conteúdo aninhado

int
nested_type_count() const
O número de tipos aninhados neste tipo de mensagem.
const Descriptor *
nested_type(int index) const
Recebe um tipo aninhado por índice, em que 0 <= índice < nested_type_count(). mais...
const Descriptor *
FindNestedTypeByName(ConstStringParam name) const
Procura um tipo aninhado por nome. mais…

Enumeração

int
enum_type_count() const
O número de tipos de enumeração no tipo de mensagem.
const EnumDescriptor *
enum_type(int index) const
Recebe um tipo de enumeração por índice, em que 0 <= índice < enum_type_count(). mais...
const EnumDescriptor *
FindEnumTypeByName(ConstStringParam name) const
Procura um tipo de enumeração pelo nome. mais…
const EnumValueDescriptor *
FindEnumValueByName(ConstStringParam name) const
Procura um valor de enumeração pelo nome, entre todos os tipos de enumeração nessa mensagem. mais…

Extensões

int
extension_range_count() const
O número de intervalos de extensões neste tipo de mensagem.
const ExtensionRange *
extension_range(int index) const
Recebe um intervalo de extensões por índice, em que 0 <= índice < extension_range_count(). mais...
bool
IsExtensionNumber(int number) const
Retorna "true" se o número estiver em um dos intervalos de extensões.
const ExtensionRange *
FindExtensionRangeContainingNumber(int number) const
Retorna nuloptr, se nenhum intervalo de extensão contiver o número fornecido.
int
extension_count() const
O número de extensões definidas aninhadas no escopo deste tipo de mensagem. mais…
const FieldDescriptor *
extension(int index) const
Receba uma extensão por índice, em que 0 <= índice < extension_count(). mais...
const FieldDescriptor *
FindExtensionByName(ConstStringParam name) const
Procura uma extensão nomeada (que estende outro tipo de mensagem) definida no escopo desse tipo de mensagem.
const FieldDescriptor *
FindExtensionByLowercaseName(ConstStringParam name) const
Semelhante a FindFieldByLowercaseName(), mas encontra extensões definidas no escopo desse tipo de mensagem.
const FieldDescriptor *
FindExtensionByCamelcaseName(ConstStringParam name) const
Semelhante a FindFieldByCamelcaseName(), mas encontra extensões definidas no escopo desse tipo de mensagem.

Campos reservados

int
reserved_range_count() const
O número de intervalos reservados neste tipo de mensagem.
const ReservedRange *
reserved_range(int index) const
Recebe um intervalo reservado por índice, em que 0 <= índice < reserved_range_count(). mais...
bool
IsReservedNumber(int number) const
Retornará "true" se o número estiver em um dos intervalos reservados.
const ReservedRange *
FindReservedRangeContainingNumber(int number) const
Retorna nuloptr, caso nenhum intervalo reservado contenha o número fornecido.
int
reserved_name_count() const
O número de nomes de campos reservados neste tipo de mensagem.
const std::string &
reserved_name(int index) const
Recebe um nome reservado por índice, em que 0 <= índice < reserved_name_count(). mais...
bool
IsReservedName(ConstStringParam name) const
Retornará "true" se o nome do campo estiver reservado.

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta declaração de mensagem. mais…

Mapas

const FieldDescriptor *
map_key() const
Retorna o FieldDescriptor do campo "key". mais...
const FieldDescriptor *
map_value() const
Retorna o FieldDescriptor do campo "value". mais...

enum Descriptor::WellKnownType {
  WELLKNOWNTYPE_UNSPECIFIED,
  WELLKNOWNTYPE_DOUBLEVALUE,
  WELLKNOWNTYPE_FLOATVALUE,
  WELLKNOWNTYPE_INT64VALUE,
  WELLKNOWNTYPE_UINT64VALUE,
  WELLKNOWNTYPE_INT32VALUE,
  WELLKNOWNTYPE_UINT32VALUE,
  WELLKNOWNTYPE_STRINGVALUE,
  WELLKNOWNTYPE_BYTESVALUE,
  WELLKNOWNTYPE_BOOLVALUE,
  WELLKNOWNTYPE_ANY,
  WELLKNOWNTYPE_FIELDMASK,
  WELLKNOWNTYPE_DURATION,
  WELLKNOWNTYPE_TIMESTAMP,
  WELLKNOWNTYPE_VALUE,
  WELLKNOWNTYPE_LISTVALUE,
  WELLKNOWNTYPE_STRUCT,
  __WELLKNOWNTYPE__DO_NOT_USE__ADD_DEFAULT_INSTEAD__
}

BELEZA_EM_TIPONão é um tipo conhecido.
BOTÃO DIFERENTE DE WELLKNOWNTYPE_DOUBLE

Tipos de wrapper.

google.protobuf.DoubleValue

WELLKNOWNTYPE_FLOATVALUEgoogle.protobuf.FloatValue
BELEZATYPE_INT64VALUEValor de google.protobuf.Int64
WELLKNOWNTYPE_UINT64VALUEValor de google.protobuf.UInt64
BELEZATIPO_INT322Valor de google.protobuf.Int32
BELEZATIPO_UINT322Valor de google.protobuf.UInt32
WELLKNOWNTYPE_STRINGVALUEgoogle.protobuf.StringValue
VALOR DE WELLKNOWNTYPE_BYTESValor de protobuf.google.protobuf
WELLKNOWNTYPE_BOOLVALUEgoogle.protobuf.BoolValue.
BOA INFORMAÇÃO

Outros tipos conhecidos.

protobuf.google.

TEMPO DE APRESENTAÇÃO INTELIGENTEgoogle.protobuf.FieldMask
TEMPO DE CONHECIMENTOgoogle.protobuf.Duration
TEMPO DE CONHECIMENTOCarimbo de data/hora.protobuf.google
BOTÃO AGOSTOValor de google.protobuf.
WELLKNOWNTYPE_LISTVALUEgoogle.protobuf.ListValue.
ESTRUTURA DO WELLKNOWNTYPE_STRUCTprotobuf.google.struct
__WELLKNOWNTYPE__NÃO_USE__ADD_DEFAULT_INSTEAD__

Novos tipos conhecidos podem ser adicionados no futuro.

Verifique se todas as instruções switch() têm um caso "padrão".


const std::string &
    Descriptor::full_name() const

O nome totalmente qualificado do tipo de mensagem, com escopo delimitado por pontos.

Por exemplo, o tipo de mensagem "Foo" declarado no pacote "bar" tem o nome completo "bar.Foo". Se um tipo "Baz" estiver aninhado dentro do Foo, o nome completo do Baz será "bar.Foo.Baz". Para receber apenas a parte que vem depois do último ".", use name().


const Descriptor *
    Descriptor::containing_type() const

Se o Descriptor descrever um tipo aninhado, isso retornará o tipo em que está aninhado.

Caso contrário, retorna nuloptr.


const MessageOptions &
    Descriptor::options() const

Veja as opções desse tipo de mensagem.

Elas são especificadas no arquivo .proto , colocando linhas como "option foo = 1234;" na definição da mensagem. As opções permitidas são definidas por MessageOptions em Descriptor.proto e qualquer extensão disponível dessa mensagem.


void Descriptor::CopyTo(
        DescriptorProto * proto) const

Grave o conteúdo desse Descriptor no DescriptorProto fornecido.

O DescriptorProto de destino precisa estar claro antes de chamar esse método. Caso contrário, o resultado pode ser um lixo.


std::string Descriptor::DebugString() const

Escreva o conteúdo desse descritor em um formato legível.

A saída será adequada para uma nova análise.


bool Descriptor::is_placeholder() const

Retornará "true" se este for um marcador para um tipo desconhecido.

Isso só acontecerá se esse descritor vier de um DescriptorPool com allowUnknownDependencies() definido.


const FieldDescriptor *
    Descriptor::field(
        int index) const

Recebe um campo por índice, em que 0 <= índice < field_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const FieldDescriptor *
    Descriptor::FindFieldByNumber(
        int number) const

Pesquisa um campo por número de tag declarado.

Retorna nuloptr, se esse campo não existir.


const FieldDescriptor *
    Descriptor::FindFieldByLowercaseName(
        ConstStringParam lowercase_name) const

Procura um campo pelo nome em letras minúsculas (conforme retornado por minúsculas_name()).

Essa pesquisa pode ser ambígua se vários nomes de campo forem diferentes apenas por caso. Nesse caso, o campo retornado será escolhido arbitrariamente entre as correspondências.


const FieldDescriptor *
    Descriptor::FindFieldByCamelcaseName(
        ConstStringParam camelcase_name) const

Procura um campo pelo nome do concatenado, conforme retornado por camelcase_name().

Essa pesquisa pode ser ambígua se vários nomes de campo diferem de forma a fazer com que eles tenham nomes de concatenação idênticos. Nesse caso, o campo retornado é escolhido arbitrariamente entre as correspondências.


int Descriptor::real_oneof_decl_count() const

O número de um dos tipos nesse tipo de mensagem, exceto os sintéticos.

Os resultados reais sempre vêm em primeiro lugar. Por isso, iterar até real_oneof_decl_cout() trará resultados reais.


const OneofDescriptor *
    Descriptor::oneof_decl(
        int index) const

Recebe um oneof por índice, em que 0 <= índice < oneof_decl_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const Descriptor *
    Descriptor::nested_type(
        int index) const

Recebe um tipo aninhado por índice, em que 0 <= índice < nested_type_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const Descriptor *
    Descriptor::FindNestedTypeByName(
        ConstStringParam name) const

Procura um tipo aninhado por nome.

Retorna nuloptr, se nenhum tipo aninhado existir.


const EnumDescriptor *
    Descriptor::enum_type(
        int index) const

Recebe um tipo de enumeração por índice, em que 0 <= índice < enum_type_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const EnumDescriptor *
    Descriptor::FindEnumTypeByName(
        ConstStringParam name) const

Procura um tipo de enumeração pelo nome.

Retorna nuloptr, se esse tipo de enumeração não existir.


const EnumValueDescriptor *
    Descriptor::FindEnumValueByName(
        ConstStringParam name) const

Procura um valor de enumeração pelo nome, entre todos os tipos de enumeração nessa mensagem.

Retornará nuloptr se esse valor não existir.


const ExtensionRange *
    Descriptor::extension_range(
        int index) const

Recebe um intervalo de extensões por índice, em que 0 <= índice < extension_range_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


int Descriptor::extension_count() const

O número de extensões definidas aninhadas no escopo deste tipo de mensagem.

Veja a documentação:

As extensões podem estar estendendo outras mensagens.

Por exemplo: mensagem M1 {

extensions 1 to max;

}

mensagem M2 {

extend M1 {
  optional int32 foo = 1;
}

}

Neste caso, DescriptorPool::Generated_pool()

->FindMessageTypeByName("M2")
->extension(0)

retornará "foo", mesmo que "foo" seja uma extensão da M1. Para encontrar todas as extensões conhecidas de uma determinada mensagem, use DescriptorPool::FindAllExtensions.


const FieldDescriptor *
    Descriptor::extension(
        int index) const

Receba uma extensão por índice, em que 0 <= índice < extension_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const ReservedRange *
    Descriptor::reserved_range(
        int index) const

Recebe um intervalo reservado por índice, em que 0 <= índice < reserved_range_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const std::string &
    Descriptor::reserved_name(
        int index) const

Recebe um nome reservado por índice, em que 0 <= índice < reserved_name_count().

Não é possível usar PROTOBUF_DEFINE_ARRAY_ACCESSOR porque reserve_names_ é uma matriz de ponteiros, em vez da matriz normal de objetos.


bool Descriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta declaração de mensagem.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.


const FieldDescriptor *
    Descriptor::map_key() const

Retorna o FieldDescriptor do campo "key".

Se este não for um campo de entrada de mapa, retorna nuloptr.


const FieldDescriptor *
    Descriptor::map_value() const

Retorna o FieldDescriptor do campo "value".

Se este não for um campo de entrada de mapa, retorna nuloptr.

struct Descriptor::ExtensionRange

#include <google/protobuf/descriptor.h>
namespace google::protobuf

É um intervalo de números de campo designados para extensões terceirizadas.

Participantes

typedef
DescriptorProto_ExtensionRange Proto
typedef
ExtensionRangeOptions OptionsType
int
start
inclusivo
int
end
exclusividade
const ExtensionRangeOptions *
options_
void
CopyTo(DescriptorProto_ExtensionRange * proto) const

struct Descriptor::reservedRange

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Um intervalo de números de campo reservados.

Participantes

int
start
inclusivo
int
end
exclusividade

classe FieldDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um único campo de uma mensagem.

Para conseguir o descritor de um campo, primeiro acesse o Descriptor da mensagem em que ele está definido e, em seguida, chame Descriptor::FindFieldByName(). Para receber um FieldDescriptor de uma extensão, siga um destes procedimentos:

Participantes

enum
Type
Identifica um tipo de campo. mais…
enum
CppType
Especifica o tipo de dados C++ usado para representar o campo. mais…
enum
Label
Identifica se o campo é opcional, obrigatório ou repetido. mais…
typedef
FieldDescriptorProto Proto
const int
kMaxNumber = = (1 << 29) - 1
Os números de campo válidos são números inteiros positivos até kMaxNumber.
const int
kFirstReservedNumber = = 19000
Primeiro número de campo reservado para a implementação da biblioteca de buffers de protocolo. mais…
const int
kLastReservedNumber = = 19999
Último número de campo reservado para a implementação da biblioteca de buffers de protocolo. mais…
int32
default_value_int32_
int64
default_value_int64_
uint32
default_value_uint32_
uint64
default_value_uint64_
float
default_value_float_
double
default_value_double_
bool
default_value_bool_
const EnumValueDescriptor *
default_value_enum_
const std::string *
default_value_string_
std::atomic< const Message * >
default_generated_instance_
const std::string &
name() const
Nome desse campo na mensagem.
const std::string &
full_name() const
Nome totalmente qualificado do campo.
const std::string &
json_name() const
Nome JSON desse campo.
const FileDescriptor *
file() const
Arquivo em que o campo foi definido.
bool
is_extension() const
Este é um campo de extensão?
int
number() const
Número da tag declarado.
const std::string &
lowercase_name() const
O mesmo que name(), exceto por conversão para letras minúsculas. mais...
const std::string &
camelcase_name() const
O mesmo que name(), exceto pela conversão para concatenação. mais...
Type
type() const
Tipo declarado deste campo.
const char *
type_name() const
Nome do tipo declarado.
CppType
cpp_type() const
Tipo de C++ deste campo.
const char *
cpp_type_name() const
Nome do tipo C++.
Label
label() const
opcional/obrigatório/repetido
bool
is_required() const
abreviação de label() == LABEL_REQUIRED
bool
is_optional() const
abreviação de label() == LABEL_OPTIONAL
bool
is_repeated() const
abreviação de label() == LABEL_REPEATED
bool
is_packable() const
abreviação de is_Repeated() && IsTypePackable(type())
bool
is_packed() const
abreviação de is_packable() && options().packed().
bool
is_map() const
abreviação de type() == TYPE_MESSAGE && message_type()->options().map_input()
bool
has_optional_keyword() const
Retornará "true" se este campo tiver sido escrito com sintaxe com "opcional" no arquivo .proto. mais…
bool
has_presence() const
Retorna verdadeiro se este campo rastrear a presença, ou seja, mais…
int
index() const
Índice deste campo na matriz de campos da mensagem ou matriz de extensões do escopo do arquivo ou da extensão.
bool
has_default_value() const
Esse campo tem um valor padrão declarado explicitamente?
bool
has_json_name() const
Se o usuário especificou a opção de campo json_name no arquivo .proto.
int32
default_value_int32() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_INT32. mais...
int64
default_value_int64() const
Receba o valor padrão do campo se cpp_type() == CPPTYPE_INT64. mais...
uint32
default_value_uint32() const
Receba o valor padrão do campo se cpp_type() == CPPTYPE_UINT32. mais...
uint64
default_value_uint64() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_UINT64. mais...
float
default_value_float() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_FLOAT. mais...
double
default_value_double() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_DOUBLE. mais...
bool
default_value_bool() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_BOOL. mais...
const EnumValueDescriptor *
default_value_enum() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_ENUM. mais...
const std::string &
default_value_string() const
Acessa o valor padrão do campo se cpp_type() == CPPTYPE_STRING. mais...
const Descriptor *
containing_type() const
O Descriptor da mensagem que é um campo. mais...
const OneofDescriptor *
containing_oneof() const
Se o campo for membro de oneof, este é o único, caso contrário é nullptr.
const OneofDescriptor *
real_containing_oneof() const
Se o campo for membro de um oneof não sintético, retornará o descritor do oneof. Caso contrário, retornará nullptr.
int
index_in_oneof() const
Se o campo for membro de oneof, o índice dele será retornado.
const Descriptor *
extension_scope() const
Uma extensão pode ser declarada no escopo de outra mensagem. mais…
const Descriptor *
message_type() const
Se o tipo for TYPE_MESSAGE ou TYPE_GROUP, retorna um descritor para a mensagem ou o tipo de grupo. mais…
const EnumDescriptor *
enum_type() const
Se o tipo for TYPE_ENUM, retorna um descritor para a enumeração. mais…
const FieldOptions &
options() const
Acessa o FieldOptions para esse campo. mais…
void
CopyTo(FieldDescriptorProto * proto) const
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
const std::string &
PrintableNameForExtension() const
Retorna full_name(), exceto se o campo for uma extensão MessageSet. Nesse caso, retorna full_name() do tipo de mensagem contido para compatibilidade com o proto1. mais...
static CppType
TypeToCppType(Type type)
Método auxiliar para receber o CppType de um tipo específico.
static const char *
TypeName(Type type)
Método auxiliar para receber o nome de um tipo.
static const char *
CppTypeName(CppType cpp_type)
Método auxiliar para receber o nome de um CppType.
static bool
IsTypePackable(Type field_type)
Retorna verdadeiro se [[]filled = true] for válido para campos desse tipo.

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta declaração de campo. mais…

enum FieldDescriptor::Type {
  TYPE_DOUBLE = = 1,
  TYPE_FLOAT = = 2,
  TYPE_INT64 = = 3,
  TYPE_UINT64 = = 4,
  TYPE_INT32 = = 5,
  TYPE_FIXED64 = = 6,
  TYPE_FIXED32 = = 7,
  TYPE_BOOL = = 8,
  TYPE_STRING = = 9,
  TYPE_GROUP = = 10,
  TYPE_MESSAGE = = 11,
  TYPE_BYTES = = 12,
  TYPE_UINT32 = = 13,
  TYPE_ENUM = = 14,
  TYPE_SFIXED32 = = 15,
  TYPE_SFIXED64 = = 16,
  TYPE_SINT32 = = 17,
  TYPE_SINT64 = = 18,
  MAX_TYPE = = 18
}

Identifica um tipo de campo.

0 é reservado para erros. A ordem é estranha por motivos históricos. Os tipos 12 e mais recentes são novos no proto2.

TIPO DE DOBROo dobro, exatamente oito bytes na transferência.
TYPE_FLOATfloat, exatamente quatro bytes no fio.
TYPE_INT64

int64, varint no fio.

Os números negativos levam 10 bytes. Use TYPE_SINT64 se houver valores negativos.

TYPE_UINT64uint64, varint no fio.
TYPE_INT32

int32, varint no fio.

Os números negativos levam 10 bytes. Use TYPE_SINT32 se houver valores negativos.

TYPE_FIXED64uint64, exatamente oito bytes no fio.
TYPE_FIXED32.uint32, exatamente quatro bytes em trânsito.
TYPE_BOOLbool, varint no fio.
TIPO_STRINGTexto UTF-8.
TIPO DE GRUPOMensagem delimitada por tag. Obsoleto.
TIPO DE MENSAGEMMensagem delimitada por comprimento.
TYPE_BYTESMatriz de bytes arbitrária.
TYPE_UINT32uint32, varint na TV
TIPO_ENUMEnum, varint no fio.
TIPO_SFIXED32int32, exatamente quatro bytes na transmissão;
TYPE_SFIXED64.int64, exatamente oito bytes na transferência
TYPE_SINT32int32, varie codificada em ZigZag
TIPO_SINT64int64, varie codificado em ZigZag
MAX_TYPEConstante útil para definir tabelas de consulta indexadas por tipo.

enum FieldDescriptor::CppType {
  CPPTYPE_INT32 = = 1,
  CPPTYPE_INT64 = = 2,
  CPPTYPE_UINT32 = = 3,
  CPPTYPE_UINT64 = = 4,
  CPPTYPE_DOUBLE = = 5,
  CPPTYPE_FLOAT = = 6,
  CPPTYPE_BOOL = = 7,
  CPPTYPE_ENUM = = 8,
  CPPTYPE_STRING = = 9,
  CPPTYPE_MESSAGE = = 10,
  MAX_CPPTYPE = = 10
}

Especifica o tipo de dados C++ usado para representar o campo.

Há um mapeamento fixo de Type para CppType, em que cada Type é mapeado para exatamente um CppType. 0 é reservado para erros.

CPPTYPE_INT32.TYPE_INT32, TYPE_SINT32 e TYPE_SFIXED32.
CPPTYPE_INT64.TYPE_INT64, TYPE_SINT64 e TYPE_SFIXED64
CPPTYPE_UINT32TYPE_UINT32 e TYPE_FIXED32.
CPPTYPE_UINT64.TYPE_UINT64 e TYPE_FIXED64
CPPTYPE_DOUBLETYPE_DOUBLE
CPPTYPE_FLOATTYPE_FLOAT
CPPTYPE_BOOLTIPO_BOOL.
CPPTYPE_ENUMTYPE_ENUM
CPPTYPE_STRINGTYPE_STRING e TYPE_BYTES.
CPPTYPE_MESSAGETYPE_MESSAGE e TYPE_GROUP.
MAX_CPPTYPEConstante útil para definir tabelas de consulta indexadas pelo CppType.

enum FieldDescriptor::Label {
  LABEL_OPTIONAL = = 1,
  LABEL_REQUIRED = = 2,
  LABEL_REPEATED = = 3,
  MAX_LABEL = = 3
}

Identifica se o campo é opcional, obrigatório ou repetido.

0 é reservado para erros.

LABEL_OPTIONALopcional
LABEL_REQUIREDexigiu
LABEL_REPEATEDrepeated
MÁX._LABELConstante útil para definir tabelas de consulta indexadas por rótulo.

const int FieldDescriptor::kFirstReservedNumber = = 19000

Primeiro número de campo reservado para a implementação da biblioteca de buffers de protocolo.

Os usuários não podem declarar campos que usam números reservados.


const int FieldDescriptor::kLastReservedNumber = = 19999

Último número de campo reservado para a implementação da biblioteca de buffers de protocolo.

Os usuários não podem declarar campos que usam números reservados.


const std::string &
    FieldDescriptor::lowercase_name() const

O mesmo que name(), exceto por conversão para letras minúsculas.

Isso (especialmente o método FindFieldByLowercaseName()) pode ser útil ao analisar formatos que preferem usar um estilo de nomenclatura em letras minúsculas. Tecnicamente, os nomes de campo precisam estar em letras minúsculas de acordo com o guia de estilo protobuf. Isso só faz diferença quando lidamos com arquivos .proto antigos que não seguem o guia.


const std::string &
    FieldDescriptor::camelcase_name() const

O mesmo que name(), exceto pela conversão para concatenação.

Nessa conversão, sempre que um sublinhado aparecer no nome, ele será removido e a próxima letra será maiúscula. Além disso, a primeira letra do nome está em letras minúsculas. Exemplos:

FooBar -> fooBar
foo_bar -> fooBar
fooBar -> fooBar

Isso (especialmente o método FindFieldByCamelcaseName()) pode ser útil ao analisar formatos que preferem usar o estilo de nomeação de concatenação.


bool FieldDescriptor::has_optional_keyword() const

Retornará "true" se este campo tiver sido escrito com sintaxe com "opcional" no arquivo .proto.

Exclui campos proto3 singulares que não têm rótulo.


bool FieldDescriptor::has_presence() const

Retorna verdadeiro se este campo rastrear a presença, ou seja,

o campo distingue entre "não definido" e "presente com valor padrão". Isso inclui campos obrigatórios, opcionais e um. Ela não inclui mapas, campos repetidos e campos proto3 únicos sem "opcional".

Para campos em que has_presence() == true, o valor de retorno de Reflection::HasField() é semanticamente significativo.


int32 FieldDescriptor::default_value_int32() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_INT32.

Se nenhum padrão explícito tiver sido definido, o padrão será 0.


int64 FieldDescriptor::default_value_int64() const

Receba o valor padrão do campo se cpp_type() == CPPTYPE_INT64.

Se nenhum padrão explícito tiver sido definido, o padrão será 0.


uint32 FieldDescriptor::default_value_uint32() const

Receba o valor padrão do campo se cpp_type() == CPPTYPE_UINT32.

Se nenhum padrão explícito tiver sido definido, o padrão será 0.


uint64 FieldDescriptor::default_value_uint64() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_UINT64.

Se nenhum padrão explícito tiver sido definido, o padrão será 0.


float FieldDescriptor::default_value_float() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_FLOAT.

Se nenhum padrão explícito tiver sido definido, o padrão será 0,0.


double FieldDescriptor::default_value_double() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_DOUBLE.

Se nenhum padrão explícito tiver sido definido, o padrão será 0,0.


bool FieldDescriptor::default_value_bool() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_BOOL.

Se nenhum padrão explícito tiver sido definido, o valor será falso.


const EnumValueDescriptor *
    FieldDescriptor::default_value_enum() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_ENUM.

Se nenhum padrão explícito for definido, o padrão será o primeiro valor definido no tipo de enumeração (todos os tipos de enumeração precisam ter pelo menos um valor). Isso nunca retorna nuloptr.


const std::string &
    FieldDescriptor::default_value_string() const

Acessa o valor padrão do campo se cpp_type() == CPPTYPE_STRING.

Se nenhum padrão explícito tiver sido definido, a string vai ficar vazia.


const Descriptor *
    FieldDescriptor::containing_type() const

O Descriptor da mensagem que é um campo.

Para extensões, esse é o tipo estendido. Nunca nulo.


const Descriptor *
    FieldDescriptor::extension_scope() const

Uma extensão pode ser declarada no escopo de outra mensagem.

Se o campo for uma extensão (is_extension() for verdadeiro), extension_scope() retornará essa mensagem ou nuloptr se a extensão tiver sido declarada no escopo global. Se essa não for uma extensão, extension_scope() será indefinido (pode ter o status assert-fail).


const Descriptor *
    FieldDescriptor::message_type() const

Se o tipo for TYPE_MESSAGE ou TYPE_GROUP, retorna um descritor para a mensagem ou o tipo de grupo.

Caso contrário, retorna nulo.


const EnumDescriptor *
    FieldDescriptor::enum_type() const

Se o tipo for TYPE_ENUM, retorna um descritor para a enumeração.

Caso contrário, retorna nulo.


const FieldOptions &
    FieldDescriptor::options() const

Acessa o FieldOptions para esse campo.

Isso inclui os itens entre colchetes depois da definição do campo. Por exemplo, o campo:

optional string text = 1 [[]ctype=CORD];

tem a opção "ctype" definida. As opções permitidas são definidas pelo FieldOptions em Descriptor.proto e por qualquer extensão disponível dessa mensagem.


const std::string &
    FieldDescriptor::PrintableNameForExtension() const

Retorna full_name(), exceto se o campo for uma extensão MessageSet. Nesse caso, retorna full_name() do tipo de mensagem contido para compatibilidade com o proto1.

Uma extensão MessageSet é definida como uma extensão de mensagem opcional cujo tipo contém a opção message_set_wire_format definida. Isso deve ser feito com as extensões de google.protobuf.bridge.MessageSet. Por convenção, essas extensões são chamadas de "message_set_extension".

A operação oposta (procurar o FieldDescriptor de uma extensão por seu nome para impressão) pode ser realizada com o

message->file()->pool()->FindExtensionByPrintableName(message, name)

em que a extensão estende "mensagem".


bool FieldDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta declaração de campo.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.

classe OneofDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um dos definidos em um tipo de mensagem.

Participantes

typedef
OneofDescriptorProto Proto
const std::string &
name() const
Nome deste aqui.
const std::string &
full_name() const
Nome totalmente qualificado de um deles.
int
index() const
Índice desse valor dentro da matriz um da mensagem.
bool
is_synthetic() const
Retorna se este foi inserido pelo compilador para encapsular um campo proto3 opcional. mais…
const FileDescriptor *
file() const
O arquivo .proto em que o URL foi definido. Nunca nulo.
const Descriptor *
containing_type() const
O descritor para a mensagem que contém este.
int
field_count() const
O número de campos (não de extensão) que são membros desse campo.
const FieldDescriptor *
field(int index) const
Encontre um membro desse objeto, na ordem em que foram declarados no arquivo .proto. mais…
const OneofOptions &
options() const
void
CopyTo(OneofDescriptorProto * proto) const
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta única declaração. mais…

bool OneofDescriptor::is_synthetic() const

Retorna se este foi inserido pelo compilador para encapsular um campo proto3 opcional.

Se isso retornar "true", os geradores de código não vão poder emiti-lo.


const FieldDescriptor *
    OneofDescriptor::field(
        int index) const

Encontre um membro desse objeto, na ordem em que foram declarados no arquivo .proto.

Não é possível usar PROTOBUF_DEFINE_ARRAY_ACCESSOR porque fields_ é uma matriz de ponteiros, em vez da matriz normal de objetos.

Não inclui extensões.


bool OneofDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta única declaração.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.

classe EnumDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um tipo de enumeração definido em um arquivo .proto.

Para receber o EnumDescriptor de um tipo de enumeração gerado, chame TypeName_Descriptor(). Use DescriptorPool para construir seus próprios descritores.

Participantes

typedef
EnumDescriptorProto Proto
const std::string &
name() const
O nome desse tipo de enumeração no escopo contido.
const std::string &
full_name() const
O nome totalmente qualificado do tipo de enumeração, com escopo delimitado por pontos.
int
index() const
Índice desse tipo de enumeração no arquivo ou na matriz de enumeração da mensagem.
const FileDescriptor *
file() const
O arquivo .proto em que o tipo de enumeração foi definido. Nunca nulo.
int
value_count() const
O número de valores para este EnumDescriptor. mais...
const EnumValueDescriptor *
value(int index) const
Recebe um valor por índice, em que 0 <= índice < value_count(). mais...
const EnumValueDescriptor *
FindValueByName(ConstStringParam name) const
Procura um valor por nome. Retornará nuloptr se esse valor não existir.
const EnumValueDescriptor *
FindValueByNumber(int number) const
Procura um valor por número. mais…
const Descriptor *
containing_type() const
Se esse tipo de enumeração estiver aninhado em um tipo de mensagem, esse será o tipo. mais…
const EnumOptions &
options() const
Receba opções para esse tipo de enumeração. mais…
void
CopyTo(EnumDescriptorProto * proto) const
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
bool
is_placeholder() const
Retorna "true" se este for um marcador para uma enumeração desconhecida. mais…

Campos reservados

int
reserved_range_count() const
O número de intervalos reservados neste tipo de mensagem.
const EnumDescriptor::ReservedRange *
reserved_range(int index) const
Recebe um intervalo reservado por índice, em que 0 <= índice < reserved_range_count(). mais...
bool
IsReservedNumber(int number) const
Retornará "true" se o número estiver em um dos intervalos reservados.
const EnumDescriptor::ReservedRange *
FindReservedRangeContainingNumber(int number) const
Retorna nuloptr, caso nenhum intervalo reservado contenha o número fornecido.
int
reserved_name_count() const
O número de nomes de campos reservados neste tipo de mensagem.
const std::string &
reserved_name(int index) const
Recebe um nome reservado por índice, em que 0 <= índice < reserved_name_count(). mais...
bool
IsReservedName(ConstStringParam name) const
Retornará "true" se o nome do campo estiver reservado.

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta declaração de enumeração. mais…

int EnumDescriptor::value_count() const

O número de valores para este EnumDescriptor.

É garantido que é maior que zero.


const EnumValueDescriptor *
    EnumDescriptor::value(
        int index) const

Recebe um valor por índice, em que 0 <= índice < value_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const EnumValueDescriptor *
    EnumDescriptor::FindValueByNumber(
        int number) const

Procura um valor por número.

Retornará nuloptr se esse valor não existir. Se esse campo tiver vários valores, o primeiro definido será retornado.


const Descriptor *
    EnumDescriptor::containing_type() const

Se esse tipo de enumeração estiver aninhado em um tipo de mensagem, esse será o tipo.

Caso contrário, o valor nulo será usado.


const EnumOptions &
    EnumDescriptor::options() const

Receba opções para esse tipo de enumeração.

Elas são especificadas no arquivo .proto , colocando linhas como "option foo = 1234;" na definição da enumeração. As opções permitidas são definidas por EnumOptions em Descriptor.proto e qualquer extensão disponível dessa mensagem.


bool EnumDescriptor::is_placeholder() const

Retorna "true" se este for um marcador para uma enumeração desconhecida.

Isso só acontecerá se esse descritor vier de um DescriptorPool com allowUnknownDependencies() definido.


const EnumDescriptor::ReservedRange *
    EnumDescriptor::reserved_range(
        int index) const

Recebe um intervalo reservado por índice, em que 0 <= índice < reserved_range_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const std::string &
    EnumDescriptor::reserved_name(
        int index) const

Recebe um nome reservado por índice, em que 0 <= índice < reserved_name_count().

Não é possível usar PROTOBUF_DEFINE_ARRAY_ACCESSOR porque reserve_names_ é uma matriz de ponteiros, em vez da matriz normal de objetos.


bool EnumDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta declaração de enumeração.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.

struct EnumDescriptor::reservedRange

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Um intervalo de números de campo reservados.

Participantes

int
start
inclusivo
int
end
inclusivo

classe EnumValueDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve uma constante de enumeração individual de um tipo específico.

Para receber o EnumValueDescriptor de um determinado valor de enumeração, primeiro acesse o EnumDescriptor do tipo dele e, em seguida, use EnumDescriptor::FindValueByName() ou EnumDescriptor::FindValueByNumber(). Use DescriptorPool para criar seus próprios descritores.

Participantes

typedef
EnumValueDescriptorProto Proto
const std::string &
name() const
Nome dessa constante de enumeração.
int
index() const
Índice dentro do descritor de enumeração.
int
number() const
Valor numérico dessa constante de enumeração.
const std::string &
full_name() const
O "full_name" de um valor de enumeração é um símbolo irmão do tipo "enum". mais…
const FileDescriptor *
file() const
O arquivo .proto em que o valor foi definido. Nunca nulo.
const EnumDescriptor *
type() const
Tipo do valor. Nunca nulo.
const EnumValueOptions &
options() const
Receba opções para esse valor de enumeração. mais…
void
CopyTo(EnumValueDescriptorProto * proto) const
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta declaração de valor de enumeração. mais…

const std::string &
    EnumValueDescriptor::full_name() const

O "full_name" de um valor de enumeração é um símbolo irmão do tipo "enum".

Por exemplo, o nome completo de FieldDescriptorProto::TYPE_INT32 é, na verdade, "google.protobuf.FieldDescriptorProto.TYPE_INT32", NÃO "google.protobuf.FieldDescriptorProto.Type.TYPE_INT32". Isso está em conformidade com as regras de escopo C++ para enumerações.


const EnumValueOptions &
    EnumValueDescriptor::options() const

Receba opções para esse valor de enumeração.

Elas são especificadas no arquivo .proto adicionando um texto como "[[]foo = 1234]" após uma definição de valor de enumeração. As opções permitidas são definidas por EnumValueOptions em Descriptor.proto e qualquer extensão disponível dessa mensagem.


bool EnumValueDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta declaração de valor de enumeração.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.

classe ServiceDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um serviço de RPC.

Use DescriptorPool para construir seus próprios descritores.

Participantes

typedef
ServiceDescriptorProto Proto
const std::string &
name() const
O nome do serviço, sem incluir o escopo que o contém.
const std::string &
full_name() const
O nome totalmente qualificado do serviço, com escopo delimitado por pontos.
int
index() const
Índice desse serviço na matriz de serviços do arquivo.
const FileDescriptor *
file() const
O arquivo .proto em que o serviço foi definido. Nunca nulo.
const ServiceOptions &
options() const
Veja opções para esse tipo de serviço. mais…
int
method_count() const
O número de métodos definidos por este serviço.
const MethodDescriptor *
method(int index) const
Recebe um MethodDescriptor por índice, em que 0 <= index < method_count(). mais...
const MethodDescriptor *
FindMethodByName(ConstStringParam name) const
Pesquise um MethodDescriptor por nome.
void
CopyTo(ServiceDescriptorProto * proto) const
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta declaração de serviço. mais…

const ServiceOptions &
    ServiceDescriptor::options() const

Veja opções para esse tipo de serviço.

Elas são especificadas no arquivo .proto , colocando linhas como "option foo = 1234;" na definição do serviço. As opções permitidas são definidas pelo ServiceOptions em Descriptor.proto e por qualquer extensão disponível dessa mensagem.


const MethodDescriptor *
    ServiceDescriptor::method(
        int index) const

Recebe um MethodDescriptor por índice, em que 0 <= index < method_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


bool ServiceDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta declaração de serviço.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.

classe MethodDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um método de serviço individual.

Para conseguir um MethodDescriptor considerando um serviço, primeiro acesse o ServiceDescriptor e depois chame ServiceDescriptor::FindMethodByName(). Use DescriptorPool para criar seus próprios descritores.

Participantes

typedef
MethodDescriptorProto Proto
const std::string &
name() const
Nome desse método, sem incluir o escopo.
const std::string &
full_name() const
Nome totalmente qualificado do método, com escopo delimitado por pontos.
int
index() const
Índice dentro do descritor do serviço.
const FileDescriptor *
file() const
O arquivo .proto em que o método foi definido. Nunca nulo.
const ServiceDescriptor *
service() const
Recebe o serviço ao qual esse método pertence. Nunca nulo.
const Descriptor *
input_type() const
Recebe o tipo de mensagem de protocolo que esse método aceita como entrada.
const Descriptor *
output_type() const
Recebe o tipo de mensagem de protocolo que esta mensagem produz como saída.
bool
client_streaming() const
Recebe se o cliente faz streaming de várias solicitações.
bool
server_streaming() const
Recebe se o servidor transmite várias respostas.
const MethodOptions &
options() const
Acesse opções para esse método. mais…
void
CopyTo(MethodDescriptorProto * proto) const
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const

Local de origem

bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa desta declaração de método. mais…

const MethodOptions &
    MethodDescriptor::options() const

Acesse opções para esse método.

Elas são especificadas no arquivo .proto posicionando linhas como "option foo = 1234;" entre chaves após uma declaração de método. As opções permitidas são definidas por MethodOptions em Descriptor.proto e qualquer extensão disponível dessa mensagem.


bool MethodDescriptor::GetSourceLocation(
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa desta declaração de método.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis.

classe FileDescriptor

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Descreve um arquivo .proto inteiro.

Para gerar o FileDescriptor de um arquivo compilado, acesse o descritor de algo definido nesse arquivo e chame Descriptor->file(). Use DescriptorPool para construir seus próprios descritores.

Participantes

enum
Syntax
Sintaxe desse arquivo. mais…
typedef
FileDescriptorProto Proto
const std::string &
name() const
Nome do arquivo, relativo à árvore de origem. mais…
const std::string &
package() const
O pacote, por exemplo, "google.protobuf.compiler".
const DescriptorPool *
pool() const
O DescriptorPool em que o FileDescriptor e todo o conteúdo dele foram alocados. mais...
int
dependency_count() const
O número de arquivos importados por este.
const FileDescriptor *
dependency(int index) const
Recebe um arquivo importado por índice, em que 0 <= índice < dependency_count(). mais...
int
public_dependency_count() const
O número de arquivos públicos importados por este. mais…
const FileDescriptor *
public_dependency(int index) const
Recebe um arquivo público importado por índice, em que 0 <= índice < public_dependency_count(). mais...
int
weak_dependency_count() const
Número de arquivos importados para campos fracos. mais…
const FileDescriptor *
weak_dependency(int index) const
Recebe um arquivo importado fraco por índice, em que 0 <= índice < weak_dependency_count(). mais...
int
message_type_count() const
Número de tipos de mensagens de nível superior definidos neste arquivo. mais…
const Descriptor *
message_type(int index) const
Recebe um tipo de mensagem de nível superior, em que 0 <= índice < message_type_count(). mais...
int
enum_type_count() const
Número de tipos de enumeração de nível superior definidos neste arquivo. mais…
const EnumDescriptor *
enum_type(int index) const
Recebe um tipo de enumeração de nível superior, em que 0 <= índice < enum_type_count(). mais...
int
service_count() const
Número de serviços definidos neste arquivo.
const ServiceDescriptor *
service(int index) const
Recebe um serviço, em que 0 <= index < service_count(). mais...
int
extension_count() const
Número de extensões definidas no escopo do arquivo. mais…
const FieldDescriptor *
extension(int index) const
Recebe o descritor de uma extensão, em que 0 <= index < extension_count(). mais...
const FileOptions &
options() const
Obter opções para este arquivo. mais…
Syntax
syntax() const
const Descriptor *
FindMessageTypeByName(ConstStringParam name) const
Encontre um tipo de mensagem de nível superior pelo nome (não nome completo). mais…
const EnumDescriptor *
FindEnumTypeByName(ConstStringParam name) const
Encontrar um tipo de enumeração de nível superior por nome. Retorna nuloptr, se não for encontrado.
const EnumValueDescriptor *
FindEnumValueByName(ConstStringParam name) const
Encontre um valor de enumeração definido em qualquer enumeração de nível superior por nome. mais…
const ServiceDescriptor *
FindServiceByName(ConstStringParam name) const
Encontre uma definição de serviço pelo nome. Retorna nuloptr, se não for encontrado.
const FieldDescriptor *
FindExtensionByName(ConstStringParam name) const
Encontre uma definição de extensão de nível superior por nome. mais…
const FieldDescriptor *
FindExtensionByLowercaseName(ConstStringParam name) const
Semelhante a FindExtensionByName(), mas pesquisa por nome em letras minúsculas. mais...
const FieldDescriptor *
FindExtensionByCamelcaseName(ConstStringParam name) const
Semelhante a FindExtensionByName(), mas pesquisa por camelcased-name. mais...
void
CopyTo(FileDescriptorProto * proto) const
void
CopySourceCodeInfoTo(FileDescriptorProto * proto) const
Grave as informações do código-fonte desse FileDescriptor no FileDescriptorProto fornecido. mais...
void
CopyJsonNameTo(FileDescriptorProto * proto) const
Preencha o campo json_name de FieldDescriptorProto para todos os campos. mais…
std::string
DebugString() const
std::string
DebugStringWithOptions(const DebugStringOptions & options) const
bool
is_placeholder() const
Retorna "true" se este for um marcador de posição para um arquivo desconhecido. mais…
bool
GetSourceLocation(SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem dentro do limite total desta declaração de arquivo (ou seja, no caminho vazio).
bool
GetSourceLocation(const std::vector< int > & path, SourceLocation * out_location) const
Atualiza |*out_location| para o local de origem na extensão completa da declaração ou parte da declaração indicada por |path|. mais...
static const char *
SyntaxName(Syntax syntax)

enum FileDescriptor::Syntax {
  SYNTAX_UNKNOWN = = 0,
  SYNTAX_PROTO2 = = 2,
  SYNTAX_PROTO3 = = 3
}

Sintaxe desse arquivo.

SYNTAX_UNKNOWN
SYNTAX_PROTO2.
SYNTAX_PROTO3.

const std::string &
    FileDescriptor::name() const

Nome do arquivo, relativo à árvore de origem.

Por exemplo, "foo/bar/baz.proto"


const DescriptorPool *
    FileDescriptor::pool() const

O DescriptorPool em que o FileDescriptor e todo o conteúdo dele foram alocados.

Nunca nulo.


const FileDescriptor *
    FileDescriptor::dependency(
        int index) const

Recebe um arquivo importado por índice, em que 0 <= index < dependency_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


int FileDescriptor::public_dependency_count() const

O número de arquivos públicos importados por este.

A lista de dependências públicas é um subconjunto da lista de dependências.


const FileDescriptor *
    FileDescriptor::public_dependency(
        int index) const

Recebe um arquivo público importado por índice, em que 0 <= índice < public_dependency_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


int FileDescriptor::weak_dependency_count() const

Número de arquivos importados para campos fracos.

A lista de dependências fracas é um subconjunto da lista de dependências.


const FileDescriptor *
    FileDescriptor::weak_dependency(
        int index) const

Recebe um arquivo importado fraco por índice, em que 0 <= index < weak_dependency_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


int FileDescriptor::message_type_count() const

Número de tipos de mensagens de nível superior definidos neste arquivo.

Isso não inclui tipos aninhados.


const Descriptor *
    FileDescriptor::message_type(
        int index) const

Recebe um tipo de mensagem de nível superior, em que 0 <= índice < message_type_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


int FileDescriptor::enum_type_count() const

Número de tipos de enumeração de nível superior definidos neste arquivo.

Isso não inclui tipos aninhados.


const EnumDescriptor *
    FileDescriptor::enum_type(
        int index) const

Recebe um tipo de enumeração de nível superior, em que 0 <= índice < enum_type_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const ServiceDescriptor *
    FileDescriptor::service(
        int index) const

Recebe um serviço, em que 0 <= index < service_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


int FileDescriptor::extension_count() const

Número de extensões definidas no escopo do arquivo.

Isso não inclui extensões aninhadas nos tipos de mensagem.


const FieldDescriptor *
    FileDescriptor::extension(
        int index) const

Recebe o descritor de uma extensão, em que 0 <= índice < extension_count().

Elas são retornadas na ordem em que foram definidas no arquivo .proto.


const FileOptions &
    FileDescriptor::options() const

Obter opções para este arquivo.

Elas são especificadas no arquivo .proto colocando linhas como "option foo = 1234;" no nível superior, fora de quaisquer outras definições. As opções permitidas são definidas por FileOptions em Descriptor.proto e qualquer extensão disponível dessa mensagem.


const Descriptor *
    FileDescriptor::FindMessageTypeByName(
        ConstStringParam name) const

Encontre um tipo de mensagem de nível superior pelo nome (não nome completo).

Retorna nuloptr, se não for encontrado.


const EnumValueDescriptor *
    FileDescriptor::FindEnumValueByName(
        ConstStringParam name) const

Encontre um valor de enumeração definido em qualquer enumeração de nível superior por nome.

Retorna nuloptr, se não for encontrado.


const FieldDescriptor *
    FileDescriptor::FindExtensionByName(
        ConstStringParam name) const

Encontre uma definição de extensão de nível superior por nome.

Retorna nuloptr, se não for encontrado.


const FieldDescriptor *
    FileDescriptor::FindExtensionByLowercaseName(
        ConstStringParam name) const

Semelhante a FindExtensionByName(), mas pesquisa por nome em letras minúsculas.

Consulte Descriptor::FindFieldByLowercaseName().


const FieldDescriptor *
    FileDescriptor::FindExtensionByCamelcaseName(
        ConstStringParam name) const

Semelhante a FindExtensionByName(), mas pesquisa por camelcased-name.

Consulte Descriptor::FindFieldByCamelcaseName().


void FileDescriptor::CopyTo(
        FileDescriptorProto * proto) const

Consulte Descriptor::CopyTo().

Observações:

  • Esse método NÃO copia informações de código-fonte, uma vez que elas são relativamente grandes e raramente são necessárias. Consulte CopySourceCodeInfoTo() abaixo.

void FileDescriptor::CopySourceCodeInfoTo(
        FileDescriptorProto * proto) const

Grave as informações do código-fonte desse FileDescriptor no FileDescriptorProto fornecido.

Consulte CopyTo() acima.


void FileDescriptor::CopyJsonNameTo(
        FileDescriptorProto * proto) const

Preencha o campo json_name de FieldDescriptorProto para todos os campos.

Só pode ser chamado após CopyTo().


bool FileDescriptor::is_placeholder() const

Retorna "true" se este for um marcador de posição para um arquivo desconhecido.

Isso só acontecerá se esse descritor vier de um DescriptorPool com allowUnknownDependencies() definido.


bool FileDescriptor::GetSourceLocation(
        const std::vector< int > & path,
        SourceLocation * out_location) const

Atualiza |*out_location| para o local de origem na extensão completa da declaração ou parte da declaração indicada por |path|.

Retorna "false" e deixa |*out_location| inalterado se as informações de local não estiverem disponíveis. Consulte SourceCodeInfo para ver a descrição da codificação de caminho.

classe DescriptorPool

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Usado para construir descritores.

Normalmente, você não vai querer criar seus próprios descritores. As classes Message criadas pelo compilador de protocolo vão fornecê-las para você. No entanto, se você estiver implementando a Mensagem por conta própria ou se estiver programando um programa que possa operar em tipos totalmente arbitrários e precise carregá-los de algum tipo de banco de dados, talvez seja necessário.

Como os descritores são compostos de muitos bits de dados cruzados que seriam difíceis de reunir manualmente, a classe DescriptorPool é fornecida para facilitar o processo. Ele pode usar um FileDescriptorProto (definido em Descriptor.proto), validá-lo e convertê-lo em um conjunto de descritores com links cruzados.

O DescriptorPool também ajuda com o gerenciamento de memória. Os descritores são compostos por muitos objetos que contêm dados estáticos e ponteiros uns aos outros. Na verdade, quando se trata de excluir esses dados, é melhor excluir todos de uma vez. Na verdade, é incomum ter um conjunto inteiro de descritores em vários links que você quer excluir de uma só vez. Essa classe representa esse pool e processa o gerenciamento de memória para você.

Também é possível pesquisar descritores em um DescriptorPool pelo nome e extensões por número.

Participantes

DescriptorPool()
Crie um DescriptorPool vazio e normal.
explicit
DescriptorPool(DescriptorDatabase * fallback_database, ErrorCollector * error_collector = nullptr)
~DescriptorPool()
const FileDescriptor *
FindFileByName(ConstStringParam name) const
Encontre um FileDescriptor no pool por nome de arquivo. mais...
const FileDescriptor *
FindFileContainingSymbol(ConstStringParam symbol_name) const
Encontre o FileDescriptor no pool que define o símbolo especificado. mais...
static const DescriptorPool *
generated_pool()
Receba um ponteiro para o pool gerado. mais…

Como procurar descritores

Eles encontram descritores pelo nome totalmente qualificado. Eles vão encontrar descritores de nível superior e descritores aninhados. Retornam nuloptr se não forem encontrados.
const Descriptor *
FindMessageTypeByName(ConstStringParam name) const
const FieldDescriptor *
FindFieldByName(ConstStringParam name) const
const FieldDescriptor *
FindExtensionByName(ConstStringParam name) const
const OneofDescriptor *
FindOneofByName(ConstStringParam name) const
const EnumDescriptor *
FindEnumTypeByName(ConstStringParam name) const
const EnumValueDescriptor *
FindEnumValueByName(ConstStringParam name) const
const ServiceDescriptor *
FindServiceByName(ConstStringParam name) const
const MethodDescriptor *
FindMethodByName(ConstStringParam name) const
const FieldDescriptor *
FindExtensionByNumber(const Descriptor * extendee, int number) const
Localiza uma extensão do tipo fornecido pelo número. mais…
const FieldDescriptor *
FindExtensionByPrintableName(const Descriptor * extendee, ConstStringParam printable_name) const
Encontra uma extensão do tipo fornecido pelo nome para impressão. mais…
void
FindAllExtensions(const Descriptor * extendee, std::vector< const FieldDescriptor * > * out) const
Encontra extensões. mais…

Descritores de construção

const FileDescriptor *
BuildFile(const FileDescriptorProto & proto)
Converta FileDescriptorProto em descritores reais e coloque-os neste DescriptorPool. mais...
const FileDescriptor *
BuildFileCollectingErrors(const FileDescriptorProto & proto, ErrorCollector * error_collector)
O mesmo que BuildFile(), exceto que os erros são enviados para o ErrorColetaror fornecido.
void
AllowUnknownDependencies()
Por padrão, é um erro quando um FileDescriptorProto contém referências a tipos ou outros arquivos não encontrados no DescriptorPool (ou no DescriptorDatabase dele, se houver). mais...
void
EnforceWeakDependencies(bool enforce)
Por padrão, as importações fracas podem estar ausentes. Nesse caso, usaremos um marcador para a dependência e converteremos o campo em um campo de mensagem vazio. mais…

Itens internos

Esses métodos NÃO PODEM ser chamados de fora da biblioteca proto2.

Esses métodos podem conter armadilhas ocultas e podem ser removidos em uma versão futura da biblioteca.

explicit
DescriptorPool(const DescriptorPool * underlay)
Crie um DescriptorPool que seja sobreposto a algum outro pool. mais...
void
DisallowEnforceUtf8()
Não permitir [[]enforce_utf8 = false] em arquivos .proto.
void
InternalDontEnforceDependencies()
Somente para uso interno: muda o comportamento de BuildFile() para permitir que o arquivo faça referência a tipos de mensagem declarados em outros arquivos que não foram declarados oficialmente como dependências.
void
InternalSetLazilyBuildDependencies()
Somente para uso interno: permite a criação lenta de dependências de um arquivo. mais…
void
internal_set_underlay(const DescriptorPool * underlay)
Apenas para uso interno.
bool
InternalIsFileLoaded(ConstStringParam filename) const
Somente para uso interno (teste de unidade): retorna verdadeiro se um FileDescriptor tiver sido criado para o arquivo especificado. Caso contrário, será falso. mais...
void
AddUnusedImportTrackFile(ConstStringParam file_name, bool is_error = false)
Adicione um arquivo a unused_import_track_files_. mais…
void
ClearUnusedImportTrackFiles()
static void
InternalAddGeneratedFile(const void * encoded_file_descriptor, int size)
Chamado por classes geradas no momento de inicialização para adicionar os descritores ao generate_pool. mais…
static DescriptorPool *
internal_generated_pool()
Somente para uso interno: recebe um ponteiro não constante para o pool gerado. mais…
static DescriptorDatabase *
internal_generated_database()
Somente para uso interno: recebe um ponteiro não constante para o banco de dados do descritor gerado. mais…

const FileDescriptor *
    DescriptorPool::FindFileByName(
        ConstStringParam name) const

Encontre um FileDescriptor no pool por nome de arquivo.

Retorna nuloptr, se não for encontrado.


const FileDescriptor *
    DescriptorPool::FindFileContainingSymbol(
        ConstStringParam symbol_name) const

Encontre o FileDescriptor no pool que define o símbolo especificado.

Se algum dos métodos Find*ByName() abaixo for bem-sucedido, ele equivale a chamar esse método e ao método file() do resultado. Caso contrário, retorna nuloptr.


static const DescriptorPool *
    DescriptorPool::generated_pool()

Receba um ponteiro para o pool gerado.

As classes de mensagem de protocolo geradas que são compiladas no binário alocam os descritores neste pool. Não adicione seus próprios descritores a este pool.


const FieldDescriptor *
    DescriptorPool::FindExtensionByNumber(
        const Descriptor * extendee,
        int number) const

Localiza uma extensão do tipo fornecido pelo número.

O beneficiário precisa ser um membro deste DescriptorPool ou um dos sublaços.


const FieldDescriptor *
    DescriptorPool::FindExtensionByPrintableName(
        const Descriptor * extendee,
        ConstStringParam printable_name) const

Encontra uma extensão do tipo fornecido pelo nome para impressão.

Consulte os comentários acima de PrintableNameForExtension() para ver a definição de "nome para impressão". O beneficiário precisa ser um membro deste DescriptorPool ou um dos sublaços. Retorna nuloptr, se não houver uma extensão de mensagem conhecida com o nome para impressão fornecido.


void DescriptorPool::FindAllExtensions(
        const Descriptor * extendee,
        std::vector< const FieldDescriptor * > * out) const

Encontra extensões.

As extensões vão ser anexadas em uma ordem indefinida. Somente as extensões definidas diretamente neste DescriptorPool ou em um dos subjacentes dele podem ser encontradas: extensões definidas no banco de dados substituto podem não ser encontradas, dependendo da implementação do banco de dados.


const FileDescriptor *
    DescriptorPool::BuildFile(
        const FileDescriptorProto & proto)

Converta FileDescriptorProto em descritores reais e coloque-os neste DescriptorPool.

Todas as dependências do arquivo já precisam estar no pool. Retorna o FileDescriptor resultante, ou nulo, se houver problemas com a entrada (por exemplo, a mensagem era inválida ou faltavam dependências). Os detalhes sobre os erros são gravados em GOOGLE_LOG(ERROR).


void DescriptorPool::AllowUnknownDependencies()

Por padrão, é um erro quando um FileDescriptorProto contém referências a tipos ou outros arquivos não encontrados no DescriptorPool (ou no DescriptorDatabase dele, se houver).

Se você chamar AllowUnknownDependencies(), os tipos e os arquivos desconhecidos serão substituídos por descritores de marcador (que podem ser identificados pelo método is_placeholder()). Isso permite que você execute algumas operações úteis com um arquivo .proto, mesmo que não tenha acesso a outros arquivos .proto dos quais ele depende. No entanto, algumas heurísticas precisam ser usadas para preencher as lacunas nas informações, que podem levar a descritores imprecisos. Por exemplo, o DescriptorPool pode ser forçado a adivinhar se um tipo desconhecido é uma mensagem ou enumeração, bem como em qual pacote reside. Além disso, os tipos de marcador de posição não serão detectáveis pelo FindMessageTypeByName() e por métodos semelhantes, o que pode confundir alguns algoritmos baseados em descritor. Geralmente, os resultados dessa opção devem ser processados com muito cuidado.


void DescriptorPool::EnforceWeakDependencies(
        bool enforce)

Por padrão, as importações fracas podem estar ausentes. Nesse caso, usaremos um marcador para a dependência e converteremos o campo em um campo de mensagem vazio.

No entanto, se você chamar EnforcementWeakDependencies(true), o DescriptorPool informará um erro de importação não encontrado.


explicit DescriptorPool::DescriptorPool(
        const DescriptorPool * underlay)

Crie um DescriptorPool que seja sobreposto a algum outro pool.

Se você pesquisar um descritor na sobreposição, e ele não for encontrado, o resultado será pesquisado como backup. Se o material subjacente tiver seu próprio material, ele será pesquisado em seguida e assim por diante. Isso também significa que os arquivos criados na sobreposição terão links cruzados com os descritores da sobreposição, se necessário. O objeto subjacente permanece como propriedade do autor da chamada e precisa permanecer válido durante o ciclo de vida do pool recém-construído.

Exemplo: você quer analisar um arquivo .proto no momento da execução para usar o tipo dele com uma DynamicMessage. Digamos que este arquivo .proto tenha dependências, mas você sabe que todas as dependências serão compiladas no binário. Para facilitar o uso, convém carregar os tipos diretamente de Generated_pool(), em vez de analisar cópias redundantes de todos esses arquivos .protos e do ambiente de execução. No entanto, você não quer adicionar os tipos analisados diretamente em generate_pool(): isso não é permitido e seria um design de qualquer maneira. Em vez disso, é possível usar Generated_pool() como subjacente para um novo DescriptorPool em que apenas o novo arquivo será adicionado.

AVISO: o uso de underlays pode levar a muitas pegadinhas sutis. Em vez disso, tente formular o que você quer fazer em termos de DescriptorDatabases.


void DescriptorPool::InternalSetLazilyBuildDependencies()

Somente para uso interno: permite a criação lenta de dependências de um arquivo.

Atrasar a criação de dependências de um descritor de arquivos até ser absolutamente necessário, como quando message_type() for chamado em um campo definido no arquivo da dependência. Isso causará problemas funcionais se um proto ou uma das dependências dele tiver erros. Só deve ser ativado para o generate_pool_ (porque nenhum erro de build do descritor é garantido pelo processo de geração da compilação), testando ou se a falta de erros de build do descritor puder ser garantida para um pool.


bool DescriptorPool::InternalIsFileLoaded(
        ConstStringParam filename) const

Somente para uso interno (teste de unidade): retorna verdadeiro se um FileDescriptor tiver sido criado para o arquivo especificado. Caso contrário, será falso.

Útil para testar o comportamento de inicialização do descritor lento.


void DescriptorPool::AddUnusedImportTrackFile(
        ConstStringParam file_name,
        bool is_error = false)

Adicione um arquivo a unused_import_track_files_.

O DescriptorBuilder vai registrar avisos ou erros para esses arquivos se houver uma importação não utilizada.


static void DescriptorPool::InternalAddGeneratedFile(
        const void * encoded_file_descriptor,
        int size)

Chamado por classes geradas no momento de inicialização para adicionar os descritores ao generate_pool.

NÃO chame isso em seu próprio código! O nome do arquivo deve ser uma string permanente (por exemplo, um literal de string).


static DescriptorPool * DescriptorPool::internal_generated_pool()

Somente para uso interno: recebe um ponteiro não constante para o pool gerado.

Isso é chamado apenas no momento da inicialização estática. Portanto, a segurança da linha de execução não é uma preocupação. Se houver um banco de dados subjacente e um banco de dados substituto, eles terão precedência.


static DescriptorDatabase *
    DescriptorPool::internal_generated_database()

Somente para uso interno: recebe um ponteiro não constante para o banco de dados do descritor gerado.

Usado apenas para testes.

classe DescriptorPool::Errorcollector

#include <google/protobuf/descriptor.h>
namespace google::protobuf

Ao converter um FileDescriptorProto em um FileDescriptor, vários erros podem ser detectados na entrada.

O autor da chamada pode processá-las de forma programática implementando um ErrorColetaror.

Participantes

enum
ErrorLocation
Essas constantes especificam qual parte exata da construção está corrompida. mais…
ErrorCollector()
virtual
~ErrorCollector()
virtual void
AddError(const std::string & filename, const std::string & element_name, const Message * descriptor, ErrorLocation location, const std::string & message) = 0
Informa um erro no FileDescriptorProto. mais…
virtual void
AddWarning(const std::string & , const std::string & , const Message * , ErrorLocation , const std::string & )
Informa um aviso no FileDescriptorProto. mais…

enum ErrorCollector::ErrorLocation {
  NAME,
  NUMBER,
  TYPE,
  EXTENDEE,
  DEFAULT_VALUE,
  INPUT_TYPE,
  OUTPUT_TYPE,
  OPTION_NAME,
  OPTION_VALUE,
  IMPORT,
  OTHER
}

Essas constantes especificam qual parte exata da construção está corrompida.

Isso é útil, por exemplo, para mapear o erro de volta para um local exato em um arquivo .proto.

NOMEo nome do símbolo ou o nome do pacote para os arquivos
NUMBERcampo ou número do intervalo da extensão
TIPOtipo de campo
EXTENDERcampo estendido
DEFAULT_VALUEvalor padrão do campo
TIPO DE ENTRADAtipo de entrada do método
TIPO DE SAÍDAtipo de saída do método
OPTION_NAMEnome na atividade
OPTION_VALUEvalor na atribuição de opções
IMPORTARerro de importação
OUTROSalgum outro problema

virtual void ErrorCollector::AddError(
        const std::string & filename,
        const std::string & element_name,
        const Message * descriptor,
        ErrorLocation location,
        const std::string & message) = 0

Informa um erro no FileDescriptorProto.

Use essa função se o problema ocorrer ao interromper a criação do FileDescriptorProto.


virtual void ErrorCollector::AddWarning(
        const std::string & ,
        const std::string & ,
        const Message * ,
        ErrorLocation ,
        const std::string & )

Informa um aviso no FileDescriptorProto.

Use essa função se o problema NÃO ocorrer durante a criação do FileDescriptorProto.