#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__
}
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_TIPO | Não é um tipo conhecido. |
BOTÃO DIFERENTE DE WELLKNOWNTYPE_DOUBLE | Tipos de wrapper. google.protobuf.DoubleValue |
WELLKNOWNTYPE_FLOATVALUE | google.protobuf.FloatValue |
BELEZATYPE_INT64VALUE | Valor de google.protobuf.Int64 |
WELLKNOWNTYPE_UINT64VALUE | Valor de google.protobuf.UInt64 |
BELEZATIPO_INT322 | Valor de google.protobuf.Int32 |
BELEZATIPO_UINT322 | Valor de google.protobuf.UInt32 |
WELLKNOWNTYPE_STRINGVALUE | google.protobuf.StringValue |
VALOR DE WELLKNOWNTYPE_BYTES | Valor de protobuf.google.protobuf |
WELLKNOWNTYPE_BOOLVALUE | google.protobuf.BoolValue. |
BOA INFORMAÇÃO | Outros tipos conhecidos. protobuf.google. |
TEMPO DE APRESENTAÇÃO INTELIGENTE | google.protobuf.FieldMask |
TEMPO DE CONHECIMENTO | google.protobuf.Duration |
TEMPO DE CONHECIMENTO | Carimbo de data/hora.protobuf.google |
BOTÃO AGOSTO | Valor de google.protobuf. |
WELLKNOWNTYPE_LISTVALUE | google.protobuf.ListValue. |
ESTRUTURA DO WELLKNOWNTYPE_STRUCT | protobuf.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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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 Consulte Descriptor::CopyTo(). |
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:
- Consiga o Descriptor ou FileDescriptor para o escopo dele e chame Descriptor::FindExtensionByName() ou FileDescriptor::FindExtensionByName().
- Considerando um DescriptorPool, chame DescriptorPool::FindExtensionByNumber() ou DescriptorPool::FindExtensionByPrintableName(). Use DescriptorPool para criar seus próprios descritores.
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 |
const std::string & | camelcase_name() const |
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 |
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 Consulte Descriptor::CopyTo(). |
std::string | DebugString() const Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
}
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 DOBRO | o dobro, exatamente oito bytes na transferência. |
TYPE_FLOAT | float, 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_UINT64 | uint64, varint no fio. |
TYPE_INT32 | int32, varint no fio. Os números negativos levam 10 bytes. Use TYPE_SINT32 se houver valores negativos. |
TYPE_FIXED64 | uint64, exatamente oito bytes no fio. |
TYPE_FIXED32. | uint32, exatamente quatro bytes em trânsito. |
TYPE_BOOL | bool, varint no fio. |
TIPO_STRING | Texto UTF-8. |
TIPO DE GRUPO | Mensagem delimitada por tag. Obsoleto. |
TIPO DE MENSAGEM | Mensagem delimitada por comprimento. |
TYPE_BYTES | Matriz de bytes arbitrária. |
TYPE_UINT32 | uint32, varint na TV |
TIPO_ENUM | Enum, varint no fio. |
TIPO_SFIXED32 | int32, exatamente quatro bytes na transmissão; |
TYPE_SFIXED64. | int64, exatamente oito bytes na transferência |
TYPE_SINT32 | int32, varie codificada em ZigZag |
TIPO_SINT64 | int64, varie codificado em ZigZag |
MAX_TYPE | Constante ú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
}
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_UINT32 | TYPE_UINT32 e TYPE_FIXED32. |
CPPTYPE_UINT64. | TYPE_UINT64 e TYPE_FIXED64 |
CPPTYPE_DOUBLE | TYPE_DOUBLE |
CPPTYPE_FLOAT | TYPE_FLOAT |
CPPTYPE_BOOL | TIPO_BOOL. |
CPPTYPE_ENUM | TYPE_ENUM |
CPPTYPE_STRING | TYPE_STRING e TYPE_BYTES. |
CPPTYPE_MESSAGE | TYPE_MESSAGE e TYPE_GROUP. |
MAX_CPPTYPE | Constante útil para definir tabelas de consulta indexadas pelo CppType. |
enum FieldDescriptor::Label {
LABEL_OPTIONAL = = 1,
LABEL_REQUIRED = = 2,
LABEL_REPEATED = = 3,
MAX_LABEL = = 3
}
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_OPTIONAL | opcional |
LABEL_REQUIRED | exigiu |
LABEL_REPEATED | repeated |
MÁX._LABEL | Constante ú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
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
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
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
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
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
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
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
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
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
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
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 Consulte Descriptor::CopyTo(). |
std::string | DebugString() const Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
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
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 Consulte Descriptor::CopyTo(). |
std::string | DebugString() const Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
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
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
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
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
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
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
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 Consulte Descriptor::CopyTo(). |
std::string | DebugString() const Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
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
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
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 |
const MethodDescriptor * | FindMethodByName(ConstStringParam name) const Pesquise um MethodDescriptor por nome. |
void | CopyTo(ServiceDescriptorProto * proto) const Consulte Descriptor::CopyTo(). |
std::string | DebugString() const Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
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
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
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 Consulte Descriptor::CopyTo(). |
std::string | DebugString() const Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
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
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 |
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 Consulte Descriptor::CopyTo(). mais... |
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 Consulte Descriptor::DebugString(). |
std::string | DebugStringWithOptions(const DebugStringOptions & options) const Consulte Descriptor::DebugStringWithOptions(). |
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
}
SYNTAX_UNKNOWN = = 0,
SYNTAX_PROTO2 = = 2,
SYNTAX_PROTO3 = = 3
}
Sintaxe desse arquivo.
SYNTAX_UNKNOWN | |
SYNTAX_PROTO2. | |
SYNTAX_PROTO3. |
const std::string &
FileDescriptor::name() const
FileDescriptor::name() const
Nome do arquivo, relativo à árvore de origem.
Por exemplo, "foo/bar/baz.proto"
const DescriptorPool *
FileDescriptor::pool() const
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
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
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
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
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
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
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
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
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
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
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
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
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
FileDescriptor::FindExtensionByCamelcaseName(
ConstStringParam name) const
Semelhante a FindExtensionByName(), mas pesquisa por camelcased-name.
Consulte Descriptor::FindFieldByCamelcaseName().
void FileDescriptor::CopyTo(
FileDescriptorProto * proto) const
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
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
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
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 descritoresEles 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 internosEsses 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
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
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()
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
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
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
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)
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)
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)
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
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)
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)
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()
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
}
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.
NOME | o nome do símbolo ou o nome do pacote para os arquivos |
NUMBER | campo ou número do intervalo da extensão |
TIPO | tipo de campo |
EXTENDER | campo estendido |
DEFAULT_VALUE | valor padrão do campo |
TIPO DE ENTRADA | tipo de entrada do método |
TIPO DE SAÍDA | tipo de saída do método |
OPTION_NAME | nome na atividade |
OPTION_VALUE | valor na atribuição de opções |
IMPORTAR | erro de importação |
OUTROS | algum 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
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 & )
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.